如何理解inode

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_27755475/article/details/78290332

linux的磁盘文件系统使用的的EXT2(Linux second extended file system),要想了解文件系统必须从认识EXT2开始.而标准的linux文件系统使用是一种以inode为基础的文件系统。

1.何为inode

首先我们搞明白文件存储的问题
文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512bytes。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。

inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码,记录的文件数据至少有以下几个方面:

  • 文件的访问模式(rwx)

  • 文件的所有者与组(owner/group)

  • 文件的大小

  • 文件创建或状态改变的时间(ctime)

  • 最近一次的读取时间(atime)

  • 最近修改时间

  • 链接数,即有多少文件名指向这个inode

  • 文件数据block的位置

2.查看文件inode信息

 以查看ttw.txt文件为例
stat ttw.txt

这里写图片描述

3.inode的数量和大小

inode的数量和大小在格式时就已经固定了,每个inode的大小为128bytes或256bytes,我们可能会有这样的疑问:inode要记录的数据那么多,但inode的大小又那么小?是怎么做到的呢?(这部分可以看一下鸟哥的私房菜),另外:

查看每个硬盘分区的inode总数和已经使用的数量,用df命令:

df -i

这里写图片描述

查看每个inode节点的大小,可以用如下命令:

sudo dumpe2fs -h /dev/sda10 | grep "Inode size"

这里写图片描述

我的Inode size这里显示是 256 ,另外上述命令中dev/sda10是g根目录磁盘文件名,我们需要事先用 df 命令调出目前挂载的设备,插查看根目录磁盘文件名,也就是下面这张图:

这里写图片描述

4.inode号码

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。系统读取文件时需要找到这个文件名对应的inode号码,分析inode所记录的权限与用户是否符合,若符合再根据inode的信息,找到文件数据所在的block,这样才能实际读取block的内容。

查询文件名对应的inode号码,使用 ls -i命令:

ls -i ttw.txt

这里写图片描述

参考资料:《鸟哥的私房菜》
http://www.ruanyifeng.com/blog/2011/12/inode.html

猜你喜欢

转载自blog.csdn.net/sinat_27755475/article/details/78290332