inode是什么

柳河东集2023-01-31  18

inode指的是储存文件元信息的区域,简称“索引节点”,它包括文件的字节数、文件拥有者的User ID、文件的Group ID、文件的读、写、执行权限、文件的时间戳、链接数以及文件数据block的位置。

在Linux中,inode是一个重要的概念,是理解Unix/Linux文件系统和磁盘储存的基础。

理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫作扇区,每个扇区储存512字节,相当于0.5KB。

操作系统读取磁盘的时候,不会一个一个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次读取一个块。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。

文件数据都存储在块中,很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等。这种储存文件元信息的区域就叫作inode,中文译名为索引节点。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

接下来,小编为大家简述一下Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程:

Linux通过inode节点表将文件的逻辑结构和物理结构进行转换。

inode节点是一个64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在inode节点表中最重要的内容是磁盘地址表。在磁盘地址表中有13个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应地块。

Linux文件系统通过把inode节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的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号码简图(可以百度,有更详细的图片)


转载请注明原文地址:https://juke.outofmemory.cn/read/2846369.html

最新回复(0)