美文网首页
inode 2023-02-14

inode 2023-02-14

作者: 9_SooHyun | 来源:发表于2023-02-13 17:23 被阅读0次

inode

是什么

一句话,inode是文件系统上的【索引】节点,存储元数据

inode (index node)是指在许多“类Unix文件系统”中的一种数据结构,用于描述文件系统对象(包括文件、目录、设备文件、socket、管道等),是文件系统的概念。每个inode保存了文件系统对象数据的属性和磁盘块位置(元数据)。文件系统对象属性包含了各种元数据(如:最后修改时间),也包含用户组(owner)和权限数据

实现机制

文件系统创建(格式化)时,就把存储区域分为两大连续的存储区域。

  • 一个用来保存文件系统对象的元信息数据,这是由inode组成的表,每个inode默认是256字节或者128字节。索引区
  • 另一个用来保存“文件系统对象”的内容数据,划分为512字节的扇区,以及由8个扇区组成的4K字节的块。块是读写时的基本单位。数据区

一个文件系统的inode的总数一般情况下是固定的。这限制了该文件系统所能存储的文件系统对象的总数目。典型的实现下,所有inode占用了文件系统1%左右的存储容量

文件系统中每个“文件系统对象”对应一个“inode”数据,并用一个整数值来辨识。这个整数常被称为inode号码(“i-number”或“inode number”)。由于文件系统的inode表的存储位置、总条目数量都是固定的,因此可以用inode号码去索引查找inode表。

Inode存储了文件系统对象的一些元信息,如所有者、访问权限(读、写、执行)、类型(是文件还是目录)、内容修改时间、inode修改时间、上次访问时间、对应的文件系统存储块的地址,等等。知道了1个文件的inode号码,就可以在inode元数据中查出文件内容数据的存储地址

文件名与目录名是“文件系统对象”便于使用的别名。一个文件系统对象可以有多个别名,但只能有一个inode,并用这个inode来索引文件系统对象的存储位置。找到inode,就能找到文件本体;把inode的【引用】归零,数据就被“删了”

补充说明

  • inode不包含文件名或目录名的字符串,只包含文件或目录的“元信息”

  • Unix的文件系统的目录也是一种文件。打开目录,实际上就是读取“目录文件”。目录文件的结构是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件或目录的名字,以及该文件或目录名对应的inode号码。
    文件系统中的一个文件是指存放在其所属目录的“目录文件”中的一个目录项,其所对应的inode的类别为“文件”;
    文件系统中的一个目录是指存放在其“父目录文件”中的一个目录项,其所对应的inode的类别为“目录”。

  • 一个文件或目录在文件系统内部移动时,其inode号码不变。文件系统碎片整理可能会改变一个文件的物理存储位置,但其inode号码不变。非UNIX的FAT及其衍生的文件系统是无法实现inode不变这一特点

inode与硬链接

多个“文件”可以对应同一个inode;多个“目录”可以对应同一个inode。
文件系统中如果两个文件或者两个目录具有相同的inode号码,那么就称它们是“硬链接”关系。实际上都是这个inode的别名

创建一个目录时,实际做了3件事:在其“父目录文件”中增加一个条目;分配一个inode;再分配一个存储块,用来保存当前被创建目录包含的文件与子目录。被创建的“目录文件”中自动生成两个子目录的条目,名称分别是:“.”和“..”。前者与该目录具有相同的inode号码,因此是该目录的一个“硬链接”。后者的inode号码就是该目录的父目录的inode号码。所以,任何一个目录的"硬链接"总数,总是等于它的子目录总数(含隐藏目录)加2。即每个“子目录文件”中的“..”条目,加上它自身的“目录文件”中的“.”条目,再加上“父目录文件”中的对应该目录的条目。

通过文件名打开文件,实际上是分成三步实现:首先,操作系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

删除文件

一个文件被彻底删除,本质上是它对应的inode的引用计数为0,文件系统将回收该inode所指向的存储块,并回收该inode自身。删除一个文件或目录,实际上是把它的inode的链接数减1。这并不影响指向此inode的别的硬链接

软链接指向一个文件路径,而硬链接指向一个inode,这是软硬链接的本质区别

file descriptors and inodes


每个文件描述符会与一个打开的文件相对应
不同的文件描述符也可能指向同一个文件
相同的文件可以被不同的进程打开,也可以在同一个进程被多次打开

相关文章

  • 文件删除

    文件删除的本质是回收文件对应的inode与inode有关的资源有 inode位图 inode_table inod...

  • Socket创建

    相应关系,Socket是Inode 结构u部分,Sock是Socket部分,先创建Inode,从Inode.u结构...

  • 网络编程 - FileDescriptor

    inode 在描述FileDescriptor之前先来看一下inode。inode在我们后面的描述中会出现,所以首...

  • inode

    显示文件的inode号 查找文件 删除乱码文件

  • inode

    有时候系统提示磁盘提示满了,不能写入数据,然后查看时候发现空间还有很多,原因可能是因为磁盘的inode满了。ino...

  • inode

  • inode

    http://www.cnblogs.com/itech/archive/2012/05/15/2502284.h...

  • inode

    为什么inode数字从1开始而不是0? 0用作标记值以指示空或无inode,如果指针在没有标记的情况下可以为NUL...

  • note_8.5_文件删除复制与移动

    文件系统:   目录:文件    元数据:inode, inode table    数据:data blocks...

  • 关于prometheus监控node的inode

    一直在找inode的监控,百度也搜了好久prometheus监控inode的,居然没找到与inode相关的文章,我...

网友评论

      本文标题:inode 2023-02-14

      本文链接:https://www.haomeiwen.com/subject/haqskdtx.html