欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux——文件系统中inode的工作

程序员文章站 2022-05-11 14:45:25
...

一、引言:

 磁头通过运动读取磁盘中的数据时。磁盘越来越大,存储的东西越来越多。
 为了磁盘读写速度的提升,一代一代的升级,有各种文件系统,今天我们要介绍的是在Linux操作系统上的文件系统是怎样进行存储读取的。

二、文件是怎样存储的?

1.磁盘上的分区想要被使用必须要被挂载,即将文件系统和磁盘的存储空间建立关联。
2.文件系统把磁盘上的空间分成两部分,是inode table和block area;
3.(1)Inode table 为inode都编了号,并记录inode的使用情况,哪那些inode是空闲的,文件系统通常将磁盘空间中大约百分之一空间分配给了 inode table。
  (2)inode table中有多的inode,inode 中包含有关文件的所有信息(除了文件的实际名称以及实际数据内容之外)和指针。
4.(1)磁盘空间中的剩余部分基本都分配给了block area,block area里面有很多大小相等的很小的block(数据块)。
  (2)block用来存储文件中内容的实际数据,可以指定其大小,最常见是4KB。
5 .最主要的是Inode中的指针记录了存储文件内容的block位置,文件通过inode中的指针来找到block读写实际数据。每个指针指向一个block块。

Linux——文件系统中inode的工作

三、可是,文件系统又是怎样找到文件和它的inode呢?

 1.在linux 中,一切皆文件,一切都是从 /  开始的,让文件系统记住 / 的inode号; /  的block中存储  /  下子文件的名字和其对应的inode号;然后依次指向下一级。

举例:假如现在要读取 /usr/bin中的内容,顺序是: / —> usr —>bin,顺序如下图所示:
Linux——文件系统中inode的工作

四、文件中内容很多,inode里面的指针不够怎么办?

1.每个inode节点大小一般是256个字节或者128个字节,存储的指针是有限的。上述通过inode节点中直接指向block块的指针叫作直接块指针。
2.可是block块中的空间比inode空间大多了,为什么不让block来存储指针呢?  于是就有了间接块指针。随着文件越来越多,就有了双重间接块指针、三重间接块指针。

Linux——文件系统中inode的工作
Linux——文件系统中inode的工作

五、注意

1.每个文件都占用一个inode节点,即使是空文件。
2.不管文件中内容数据有多小,最少占用一个block块。Block是文件系统中的最小的存储单位

六、对文件进行操作时,inode和block的变化。

1.新建文件。

Linux——文件系统中inode的工作

2.进行cp、rm、mv时inode和block变化

Linux——文件系统中inode的工作