一、文件系统
理解文件系统前首先我们要来先了解一下磁盘结构。
接下来我们看看以水平、垂直角度来看看磁盘结构,并将其区域进行划分。
磁盘的垂直分布 (此图最上面的一面和最下面的一面无磁头,则不存储数据):
- 磁头数:磁头就是在盘片上进行读/写的设备,有几个磁头就表示该磁盘有几个记录面用于存储数据。
- 柱面数:因为磁盘是垂直叠加盘片的,磁盘上的磁道可以看作垂直的圆柱,磁道即半径逐渐缩小的圆,柱面数表示该磁盘一个盘片上有几圈磁道。
- 扇区数:扇区则是将一个盘片进行等比例切分成扇形区域,表示每一条磁道上的扇区数。
所以当我们想读取到一块扇区中的数据,我们的步骤是
- 先寻找在哪个面上(对应是哪一个磁头)
- 在该面哪一圈磁道上
- 位于该磁道的哪一块扇区中
- 然后进行寻道、旋转、读取(传输)
以上是我们在磁盘上进行物理寻址的过程,但是对于操作系统而已,其内部还要进行逻辑寻址的过程。
操作系统将磁盘抽象为数组的形式:
此时系统对数据管理方式就会从物理管理方式转变为逻辑管理方式
- 将数据存储到磁盘----> 将数据存储到该数组
- 找到磁盘特定扇区的位置----> 找到数组特定的位置
- 对磁盘的管理----> 对该数组的管理
但是100GB的空间仍然不好管理,此时操作系统再进行划分。如下:
虽然磁盘的基本单位是扇区(512字节),但操作系统(文件系统)和磁盘进行IO的基本单位是:4KB(8*512byte),此4KB被称为block大小,所以磁盘被称为块设备。
为什么不用512字节为单位作为IO的基本单位呢?
1.因为512太小了,有可能会导致多次IO,进而导致效率的降低!
2.硬件与软件的IO访问大小不同,可以将硬件和软件(OS)之间的关系解耦合。比如磁盘的规格后序会不断变化,但是不影响系统的IO访问大小。
Super Block:文件系统的整体的属性信息,整个分区,有多少个快组,哪些快组已经存满,哪些数据块可以被写,inode的使用数量、未使用的数量。
Data blocks:多个4KB大小的集合,保存的都是特定文件的内容。
inode Table:inode 是一个一般大小为128字节的空间,用来保存对应文件的属性。
该快组内,所有文件的inode空间的集合,需要标识唯一性,每一个inode块,都有一个inode编号。
一般而言,一个文件,一个inode,有一个inode编号
Block Bitmap:假设该分组中有1w+个blocks,则有10000+个比特位,
比特位和特定的block是一一对应的,其中比特位为1,代表block被占用,反之表示可用。
Inode Bitmap:假设有1w+个inode节点,则有1w+个比特位,比特位和特定的inode是一一对应的,其后bitmap中比特位为1,代表该inode被占用,反之表示可用。
Group Descriptor Table:快组描述符,用来描述这个快组有多大、使用了多少个inode、使用了多少block
分区中有了这些描述信息,我们能让一个文件的信息可追溯,可管理!
此时将块组分割成为上面的内容,并且写入相关的管理数据,每一个块组都进行这样的操作,此时整个分区就被写入至了文件系统,这种行为就叫做格式化。