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

来源:互联网 发布:php unpack 二进制 编辑:程序博客网 时间:2024/06/08 04:34

一、引言:

 磁头通过运动读取磁盘中的数据时。磁盘越来越大,存储的东西越来越多。 为了磁盘读写速度的提升,一代一代的升级,有各种文件系统,今天我们要介绍的是在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,顺序如下图所示:
/usr/bin

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

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

指针升级
这里写图片描述

五、注意

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

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

1.新建文件。

新建文件时,inode变化

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

文件操作时,inode变化

原创粉丝点击