Linux文件:文件系统究竟是什么?如何管理文件?
前言
文件系统用于管理打开的文件(即加载到内存)和未被打开的文件(即磁盘中)。并且计算机中,绝大部分文件时未被打开,存放在磁盘中的!
一、磁盘结构、存储策略
1.1 磁盘存储结构
磁盘在计算机中被用于存储数据。其中磁盘会被分为多个盘面,每个盘面存在多个同心磁道。而每个磁道会存在很多扇形的扇区。扇区是磁盘的最小存储单元,一般为512Byte。但操作系统一般是每次直接读4Kb。
1.2 磁盘存储策略
如果我们需要像一个扇区中写入数据,如何寻址定位呢?
磁盘采用的是CHS定位法:
- C:
Cylinder
。即数据存储在那个柱面,或者说那个磁道。 - H
Head
,即磁头。磁盘存在多个盘面,每个磁头对应一个盘面。 - S:
Sector
,即扇区。
当我们确定好待写入区域的盘面,磁道,扇区后,即可准确定位。我们可以向一个扇区写入,就可以向多个扇区写入;也可以连续多个连续扇区写入,当然也可以随机写入!!
1.3 磁盘的逻辑存储结构
由于磁盘存在多个盘面,我们可以把每个盘面当作数组元素。而每一个盘面存在多个磁道,我们可以将磁道作为盘面数组的数组元素。而每个磁道又由多个扇区组成,同上。最后可以将磁盘盘面抽象为下图的线性空间!!
我们将磁盘抽象成一块线性空间后,操作系统可以按扇区进行存储。但一个扇区较小,通常操作系统都是基于文件系统,以文件块(一般为4KB)为单位进行存储!!!最后将磁盘抽象以4KB为单位的数组块。
最后将对磁盘的管理,在OS层面上转化为对数组的增删查改!!每个块都存在存在一个下标位置,我们将该下标称为逻辑块地址(Logical block address
)。由于盘面、轨道以及扇区的大小都是固定的,所以当我们得到逻辑块地址后通过转换可以知道数据在那个盘面、那个轨道、那个扇区。即间接通过CSH定位法找到扇区!!
二、如何管理磁盘文件
常识告诉我们仅通过中央政府来管理一个国家非常困难。所以我国设立了很多地方政府,省份,单独管理。同样直接管理一个省依旧困难,所以我国逐渐细分,设立了市、县、乡…
同样,磁盘一般为600G往上,非常大。由操作系统直接管理,不仅困难,而且不利于用户使用。所以我们对磁盘进行分区。但分区后还是太大,所以每个区还会被细分为多个组。
由于所磁盘文件的管理方法是相同的,所以我们仅需管理好一个组后将管理经验迁移。最后将如何管理整个磁盘,转换为如何管理一个组!!
- 假设现在有一块400G的磁盘,假设每一个分区大小为100G。每一分区被分为50组,即每个组的大小为2G。