linux系统中怎么查目录的inode号?

linux系统中怎么查目录的inode号?,第1张

可以使用ls命令,加上-i选项。对于目录和普通文件,查询inode号并没有区别。

ls命令将每个由文件名参数指定的名称写到标准输出,友禅以及您所要求的和标志一起的其它信息。如果不指定文件名参数,配告耐

ls命令显示当前目录的内容

加上-i选项就可以输出培春文件的inode索引信息。

用法示例:

每一个文件名前的数字就是文件的inode号。

用来记录文件系统对象的一些元信息数据。一个文件占用一个inode , inode数量大小时固定的(ext4与xfs可以设置为256B)。

inode中大致有如下信息:

文件属主与属组

文件读写属性(基本rwx权限等)

文件大小(字节数)

文件时间戳(ctime、atime、mtime)

记录文件内容的指向block(文件内容数据的存储位置指针,)

文件特亮州性表示(flag,如SetUID)

连接数(有多少硬链接指向这个inode)

一个文件占用一个inode ,且inode是固定的,小文件过多就可能造成磁盘空间剩余挺多,但是inode耗尽的情况。

ext文件系统可以查询inode总数

查看当前系统inode使用情况

一个大文件,文件内容占用大量存储空间的话,明显一个inode 就不能完全记录这个文件存储位置指针。为此记录区块的区域定义为12个直接、一个间接、一个双间接、一个三间接记录区。这些“间接”就是拿一个区块来作为记录区来使用的“记录区”,这些就是延伸出来的“记录区”

当一个inode 中的12个直接记录区直接指向真实内容block号码。

间接记录区指向block1,block1记录了真实内容的block号码

双间接记录区指向block1,这个block1指向一个block2,block2记录了真实内容的block号码

三间接记录区敬键蔽指向block1,这个block1指向一个block2,亮仔block2指向block3,block3记录了真实内容的block号码

inode指向真实block号码简图(可以百度,有更详细的图片)

1. 根据ls -i 查看文件的inode号

2. 使用debugfs命令查看文件所在磁盘分区的超中雹级块信息

#debugfs /dev/sda2

debugfs: stats

...

Inode count: 5152768

Block count: 20590080

Block size: 4096

Inode size: 256

Inodes per group: 8192

...

Group 11: block bitmap at 360448, inode bitmap at 360449, inode table at 360450

11878 free blocks, 7687 free inodes, 0 used directories

...

3. 计算特定inode号的inode数据偏移

例如:以90612为例

90612 = 11*8192 + 500 ---> 位于11 block group(从0开始编虚差码)

500 = (4096 / 256 ) * 31 + 4----> block group内差培皮的31block的第3个(4-1)inode项

inode数据位置:(360450 + 31 = 360481) 块,偏移为(4-1)*256 = 768

4. 打印inode数据

dd if=/dev/sda2 bs=4096 skip=360481 count=1 2>/dev/null | awk 'BEGIN { LINE=0 } { if (LINE>=(768/16)) printLINE=LINE+1 }' | xxd

注意:

debugfs的logdump -i <90612>也是用来计算本数据的,但是貌似它默认是按照inode size为128计算的,而本例中inode size为256,所以logdump得出的数据是错误的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8202936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存