文件系统中的磁盘块

引言:扇面是磁盘中最小的物理存储单位,而块是操作系统最小的逻辑存储单位。

1、 磁盘块的概念

  物理层面,一个磁盘按层次分为:磁盘组合 -> 单个磁盘 -> 某一盘面 -> 某一磁道 -> 某一扇区 。回顾之前内容,每个磁盘有多条同心圆似的磁道,磁道被分割成多个部分。每部分的弧长加上到圆心的两个半径,恰好形成一个扇形,所以叫做扇区。扇区是磁盘中最小的物理存储单位。

  由于扇区数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作,即块是操作系统中最小的逻辑存储单元。这样可以使操作系统忽略底层物理存储结构的设计。磁盘块是操作系统自己“杜撰”的,是一个虚拟的概念。其大小由操作系统决定,通常一个块 = 单个扇区大小 * 2的n次方,其中n是可修改的。 

2、 磁盘块地址

  操作系统在对磁盘进行管理时,通常以磁盘块作为最小单位。而定位一个磁盘块则通过磁盘块地址进行。磁盘块地址类似于访问内存时需要提供的内存地址,操作系统访问磁盘块的时候需要提供磁盘块地址。不过磁盘块地址比内存地址更加复杂,其包含多个部分,具体细节因操作系统的差异而不同。

  典型的操作系统都会标明磁道(磁柱)、盘面(磁头)、扇面三个参数,以这种方式给出的地址称为逻辑块地址(Logical Block Address, LBA),这里之所以用“逻辑”是因为LBA不一定与磁盘上面的块存储区域的真实物理地址对应;磁盘控制器将负责进行从LBA到物理地址的映射。下图给出就是一种LBA地址。

 LBA用于将磁盘读写请求传送给磁盘控制器。在磁盘读取请求数据里,所要读取信息的起始地址由磁道号(磁柱)、扇面号和盘面号(柱头)组成,而扇面计数则给出了该次磁盘访问将要读取的扇面数量。磁盘控制器将这些参数转换为一系列的底层磁盘操作。再对磁盘进行读取时,操作系统负责将该数值写入到磁盘驱动器界面里制定的I/O端口。另外5个额外的、宽度为一个字节的寄存器则用来驱动读写命令和状态信息。

3、读取磁盘上一个扇面的过程:

1、操作系统将要读取的LBA传送给磁盘驱动器并启动读取命令。 
2、磁盘驱动器将磁头移动到正确的位置,并启动处于制定盘面上的磁头来搜索指定的磁道。在磁头的移动过程中,读取磁头不断检查下面的扇面号直到所要求的扇面找到为止。 
3、磁盘控制器将扇面数据和ECC(Error Checking and Correcting,错误检查和纠正)信息传送到一个处于磁盘界面的缓冲区。这里ECC信息是数据流动动态过程中,进行计算得到的。 
4、磁盘驱动器向操作系统发出“数据就绪”信号。 
5、操作系统从磁盘界面的缓冲区读取数据,既可以按照一个字节一个字节的方式读取,也可以启动DMA命令读取。

4、一些小点

4.1、块、操作系统最小单元 
  磁盘的原理、物理实现,磁盘控制器是按照扇区这个单位完成数据读取操作的,故磁盘读写基本单位是扇区。扇区数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作,即块是操作系统中最小的逻辑存储单元。文件系统就是操作系统的一部分,所以文件系统的最小单位也是块。 
4.2、为什么磁盘块大小必须是扇区大小的整数倍呢? 
  磁盘读取数据的基本单位就是单个扇区,通常一个块 = 单个扇区大小 * 2的n次方。n是整数,磁盘的IO速度更快,会更合理的利用资源。否则会对扇区进行分割。 
4.3、4K对齐的概念 
  随着时代发展,硬盘容量不断扩展,使得之前定义的每个扇区512字节不再是那么的合理,于是改为每个扇区4096 个字节,也就是现在常说的“4K扇区”。随着NTFS成为了标准的硬盘文件系统,其文件系统的默认分配单元大小(块)也是4096字节,为了使块与扇区相对应,即使物理硬盘分区与计算机使用的逻辑分区对齐,保证硬盘读写效率,所以就有了“4K对齐”的概念。 
  新标准的”4K扇区”的硬盘厂商为了保证与操作系统兼容,也将扇区模拟成512B,会默认定义为4096字节大小为一个块,但因为其引导区占用了一个磁道共63个扇区,真正的文件系统在63号扇区之后。 

参考资料:
1、《操作系统之哲学原理》 邹恒明著
2、电脑中常用的“扇区”、“簇”、“块”、“页”等概念
3、扇区和磁盘块的区别是什么
 

本文作者:Leborn_db 

https://blog.csdn.net/XD_hebuters/article/details/79042231

    原文作者:SweeNeil
    原文地址: https://blog.csdn.net/SweeNeil/article/details/88743164
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞