详解Linux索引节点inode

 更新时间:2020年08月24日 14:10:40   作者:Dabelv  
这篇文章主要介绍了Linux索引节点inode的相关资料,帮助大家更好的理解和学习Linux,感兴趣的朋友可以了解下

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文件系统信息。

$ 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)读取文件。

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

alt

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

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

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

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

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

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

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索引节点inode的详细内容,更多关于Linux索引节点inode的资料请关注华域联盟其它相关文章!

相关文章

  • linux mount挂载共享目录详解

    linux mount挂载共享目录详解

    本篇文章主要介绍了linux mount挂载共享目录详解,详细的介绍mount命令的使用,具有一定的参考价值,有兴趣的可以了解一下。

    2017-03-03

  • Linux 相对路径和绝对路径的使用

    Linux 相对路径和绝对路径的使用

    这篇文章主要介绍了Linux 相对路径和绝对路径的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    2020-02-02

  • Linux scp命令用法及实例分享

    Linux scp命令用法及实例分享

    Linux scp命令用于Linux之间复制文件和目录。scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。下面我们来详细看下scp命令的用法以及实例

    2017-03-03

  • Linux利用nc命令监控服务器端口的方法

    Linux利用nc命令监控服务器端口的方法

    这篇文章主要介绍了linux端口down掉需要能够立即告警处理,可以用简单的nc命令来实现,详细步骤看下文

    2013-11-11

  • Ubuntu 系统中文显示乱码的问题解决

    Ubuntu 系统中文显示乱码的问题解决

    最近在工作中发现在Ubuntu 系统中出现中文乱码,通过查找相关的资料发现可能是因为系统没有配置中文字符编码的原因,下面这篇文章就来详细介绍了Ubuntu系统中文显示乱码的问题解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。

    2017-02-02

  • Linux下nginx生成日志自动切割的实现方法

    Linux下nginx生成日志自动切割的实现方法

    这篇文章主要介绍了 Linux下nginx生成日志自动切割的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能看,需要的朋友可以参考下

    2017-10-10

  • linux Apache CGI 安装配置

    linux Apache CGI 安装配置

    Apache 中的提交了一种利用扩展应用程序执行动态网页的机制. 称为Common Gateway Interface (通用网关接口)简称CGI.

    2009-05-05

  • Linux服务器配置ip白名单防止远程登录以及端口暴露的问题

    Linux服务器配置ip白名单防止远程登录以及端口暴露的问题

    今天小编就为大家分享一篇Linux服务器配置ip白名单防止远程登录以及端口暴露的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    2019-07-07

  • Ubuntu 18.04更换apt-get源的方法

    Ubuntu 18.04更换apt-get源的方法

    这篇文章主要介绍了Ubuntu 18.04更换apt-get源的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    2020-04-04

  • 树莓派4安装Ubuntu 19.10的教程详解

    树莓派4安装Ubuntu 19.10的教程详解

    这篇文章主要介绍了树莓派4安装Ubuntu 19.10的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    2020-02-02

最新评论

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。