如果你使用 Linux 的时间足够长,你就会知道“inode”这个术语。它偶尔会出现,但不会影响您正在做的事情。下面的文章将解释什么是 inode 以及它是如何工作的。
什么是inode?h2>
在图书馆中,所有书籍都按流派、作者姓名或读者年龄排序。就像图书馆一样,Linux 系统中的所有文件都被组织起来,以便高效地检索和使用。 Inode 是一个在 Linux 系统中支持文件组织的实体。
什么是文件元数据?
假设我们有一个名为 'sample.txt' 的文件,其中包含数据 'hello'。
这个文件有一些数据和相关信息,例如文件大小、权限、组和用户所有权、创建/访问/修改的时间戳、链接数等。所有这些信息统称为文件元数据。
什么是文件系统?
更多详情请参阅文章:Unix/Linux 中的基本文件系统。
将概念组合在一起
inode 是 Ext4 上的一种数据结构,包含文件的所有元数据。
当然文件系统上会有很多文件。你可以猜到,每个文件都有自己的 inode,每个 inode 都有编号。
inode 编号喜欢吗?
文件系统上的inode数量从前1.10个inode开始保留给系统使用。用户文件的元数据存储在 inode 11 中。所有 inode 都整齐地堆叠在一个 inode 表中。
inode 表中的条目容量为 256 字节。对于一个文件,Linux 智能地对这 256 字节范围内的所有元数据进行排序!此外,文件的每个 inode 都将包含有关文件系统中数据位置的信息。请记住,只有文件的元数据存储在 inode 中。
文件系统中的inode总数取决于可用空间和分区上可以存储的文件数。
inode 是如何分配和释放的?
当用户将文件添加到新格式化的文件系统时,从 11 开始的 inode 被分配来保存文件元数据。
还有一个数据结构叫做Inode Bitmap,用来跟踪一个inode的分配状态。它是一组充当地图的位。
考虑inode位图中的8位来表示11到18个inode的分配状态,如下表所示。位图中的 1 值表示已分配 inode 来保存文件的元数据。位图中的 0 值表示当前未使用 inode。在这里,您可以看到正在使用 inode 17。
如果文件inode 17的元数据被删除,其对应的位图状态变为0,表示可以被其他人自由使用文件。
如何查看文件的inode号?
有两种方法可以做到这一点。
第一种是使用ls
命令,开关-i,后跟文件名。输出中的第一个字段是具有 sample.txt 元数据的 inode 编号。
同样的信息可以通过stat
命令后跟文件名获取。
要查看分区可用的 inode 总数,df 命令可以与 -i 开关 一起使用。
'/dev/sda4'分区有404854480个inode可供使用,其中只有359044个inode被使用。
inode,inode表在inode中精心组织所有文件的元数据,以及有关文件数据位置的信息。 请注意,本文讨论的有关 Linux 索引节点的文章只是冰山一角。
0 评论