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块。
三、可是,文件系统又是怎样找到文件和它的inode呢?
1.在linux 中,一切皆文件,一切都是从 / 开始的,让文件系统记住 / 的inode号; / 的block中存储 / 下子文件的名字和其对应的inode号;然后依次指向下一级。
举例:假如现在要读取 /usr/bin中的内容,顺序是: / —> usr —>bin,顺序如下图所示:
四、文件中内容很多,inode里面的指针不够怎么办?
1.每个inode节点大小一般是256个字节或者128个字节,存储的指针是有限的。上述通过inode节点中直接指向block块的指针叫作直接块指针。
2.可是block块中的空间比inode空间大多了,为什么不让block来存储指针呢? 于是就有了间接块指针。随着文件越来越多,就有了双重间接块指针、三重间接块指针。
五、注意
1.每个文件都占用一个inode节点,即使是空文件。
2.不管文件中内容数据有多小,最少占用一个block块。Block是文件系统中的最小的存储单位
六、对文件进行操作时,inode和block的变化。
1.新建文件。
2.进行cp、rm、mv时inode和block变化