可以使用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得出的数据是错误的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)