【Linux 学习】 文件系统

Linux文件系统

1、磁盘


 左图中的椭圆代表磁盘的一个盘片,右图为盘片的放大图,盘面上面的一道同心圆表示一个磁柱,磁柱是有许多扇区组成的,扇区是最小的物理存储单元。多个磁柱构成一个分割槽即分区。一个磁盘的第一个扇区是非常重要的,一般记录了整个磁盘的分割方式即分区表。该分区表一般为64bytes,仅能够记录4个分区(分为主分区和扩展分区),其中扩展分区可以继续分割出逻辑分区,而逻辑分区的个数依据系统而来。

2、文件系统

将磁盘分好区后,并不能直接利用磁盘的空间,而是需要将磁盘对应的分区或分割槽格式化为文件系统后,才能够被操作系统利用。一般的,一个分区对应一个文件系统。

Linux系统中,文件系统将文件的属性和数据分开放,文件的属性存放在iNode里面,具体的文件内容则存放到block里面。对于目录而言,iNode存放目录的属性,而目录下面的文件或者子目录存放到对应的block里面。另外,Linux系统为了管理这些iNodedata block增加了一个super block区块。每一个文件都会对应一个iNode,一个或者多个data block

磁盘被格式化后,iNodedata block就已经被确定下了。往往一个100G左右的文件系统格式化后得到的iNodedata block的数量非常惊人,因此Linux将这些iNodedatablock进行分组管理。每一个组内具有superblockiNodedata block,而且在文件系统的最前面预留一个扇区用来安装引导程序。

2.1 iNode

iNode主要用来存放文件的属性和权限等。每一个iNode大小固定为128bytes,每一个文件都会占用一个iNode。而iNode在记录block位置是需要消耗掉4byte,因此最多一个iNode可以存放128/4=32block的位置。但这是在不存储文件的饿属性的权限的情况下计算而来的。实际文件的大小往往比较大,如果iNode直接记录block并且block直接用来存放数据时,这时文件系统能够存储的文件大小将会非常受限。因此Linux采用12个直接block1个间接、1个双间接、一个三间接。间接表示iNode存放的block不用来存放数据而是下一级block的位置。


另外,一个文件系统中需要管理的iNode节点数目非常庞大,为了能够更加有效地管理,Linux系统将其进行分组block group,每一个都相当于一个小的文件系统:同时具有superblockiNodedatablock以及文件系统描述等信息。

2.2 data block

Data block是用来存放数据的,其有1k2k4k的区别。一个Data block只能存放一个文件的数据,因此较大的data block容易造成data block填充不满从而导致磁盘利用率不高。而较小的data block又难以管理,因此需要结合实际Linux主机的用途设置data block大小。

2.3 superblock

Suoperblock主要用来记录整个文件系统的iNodedatablock的使用情况。

2.4 Filesystem Description

文件系统描述说明,用来规定每组block group的划分情况。

扫描二维码关注公众号,回复: 162161 查看本文章

2.5 blcok bitmap

区块bitmap,该结构主要用来表述哪些data block是已经被使用了的,哪些是可以后期继续使用的。

2.6 inode bitmap

类似block bitmap

3 目录树

与一般文件相比较,目录主要记录目录下面的文件名,而文件才实际存放数据内容。因此对于目录而言,分配至少一个datablock用来存放文件名。

3.1 目录树读取

每一个目录对应有自己的block,并且目录下的文件名存放到该block中,因此我们要读取目录下的文件时,需要先找到该目录的iNodeblock,然后再block中找到对应的文件名,然后找到对应文件名的iNode节点,然后找到数据datablock,最后从中将数据读取出来。

 

猜你喜欢

转载自blog.csdn.net/bible_reader/article/details/77434725