前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux索引节点inode

Linux索引节点inode

作者头像
恋喵大鲤鱼
发布2019-03-04 16:37:18
7.1K0
发布2019-03-04 16:37:18
举报
文章被收录于专栏:C/C++基础

1.inode简介

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

2.inode包含内容

Linux中目录的数据块中的每一项中都包含了文件名和其对应的inode。inode记录了文件的属性以及该文件实际存储位置,即数据块号(block number),每一个block(常见大小4KB),通过inode可以实现文件的查找定位。inode是Linux中的,Unix中是vnode。基本上,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文件系统信息。

代码语言:javascript
复制
$ 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;

代码语言:javascript
复制
ll -di /
2 dr-xr-xr-x 19 root root 4096 Feb 14 09:32 /

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

代码语言:javascript
复制
ll -di /etc
786433 drwxr-xr-x 98 root root 12288 Feb 13 17:18 /etc

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

代码语言:javascript
复制
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来识别文件。


参考文献

[1]鸟哥.鸟哥的私房菜基础学习篇第三版[M].北京:人民邮电出版社,2010:183-184 [2]图解linux中Inode-分析Linux如何通过Inode读取磁盘

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年02月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.inode简介
  • 2.inode包含内容
  • 3.inode特点
  • 4.操作系统读取磁盘文件的流程
  • 5.inode的诸多优点
  • 参考文献
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档