良许Linux教程网 干货合集 详解Linux索引节点inode

详解Linux索引节点inode

Linux索引节点inode就是储存文件元信息的区域,记录了文件的属性以及该文件实际存储位置,即数据块号(block number),每一个block(常见大小4KB),通过inode可以实现文件的查找定位。

详解Linux索引节点inode

inode包含的信息至少有如下这些:

(1)文件的类型
(2)文件访问权限;
(3)文件的所有者与组;
(4)文件的大小;
(5)链接数,即指向该inode的文件名总数;
(6)文件的状态改变时间(ctime)、最近访问时间(atime)和最近修改时间(mtime);
(7)文件特殊属性,SUID、SGID和SBIT;
(8)文件内容的真正指向(pointer)。

可以用stat命令,查看某个文件的inode信息。

3.inode特点

inode的数量与大小在磁盘格式化的时候就已经固定了,inode的特点有:

(1)每一个inode的大小均固定为128B。可以通过命令dumpe2fs来显示ext2/ext3/ext4文件系统信息。

1
2
3
$ dumpe2fs -h /dev/sda1 | grep "Inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:      128

(2)每个文件都只占用一个inode。因此,文件系统能够建立的文件数量与inode数量有关。系统读取档案时需要先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能够开始实际读取block的内容。

4.操作系统读取磁盘文件的流程

操作系统读取磁盘文件的流程是这样的:

(1)根据给定的文件的所在目录,获取该目录的数据实体,根据数据实体中的数据项,找到对应文件的inode;
(2)根据文件inode,找到inodeTable;
(3)根据inodeTable中的对应关系,找到对应的block;
(4)读取文件。

系统读取磁盘文件流程示意图如下:

举例来说,如果想要读取/etc/passwd文件,读取流程如下:

(1)获取根目录/的inode。透过挂载点的信息找到根目录的inode号为2;

1
2
ll -di /
2 dr-xr-xr-x 19 root root 4096 Feb 14 09:32 /

(2)根据根目录的inode,找到根目录的数据实体block,可以理解为一个文件到inode号的映射表,找到目录etc的inode号;

1
2
ll -di /etc
786433 drwxr-xr-x 98 root root 12288 Feb 13 17:18 /etc

(3)根据目录etc的inode号,读取目录etc的数据实体block,并找到文件passwd的inode号;

1
2
ll -i /etc/passwd
787795 -rw-r--r-- 1 root root 1552 Jan 4 14:56 /etc/passwd

(4)根据/etc/passwd文件的inode号,即可获取/etc/passwd文件的数据实体block,完成文件的读取。

5.inode的诸多优点

(1)对于有些无法删除的文件可以通过删除inode节点来删除;
(2)移动或者重命名文件,只是改变了目录下的文件名到inode的映射,并不需要实际对硬盘操作;
(3)删除文件的时候,只需要删除inode,不需要实际清空那块硬盘,只需要在下次写入的时候覆盖即可(这也是为什么删除了数据可以进行数据恢复的原因之一);
(4)打开一个文件后,只需要通过inode来识别文件。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部