扇区 块 页 簇的概念
1、什么是扇区和(磁盘)块?
物理层面:一个磁盘按层次分为 :
磁盘组合 -> 单个磁盘 -> 某一盘面 (platter)-> 某一磁道 (track)-> 某一扇区(sector)。
磁头(head):读写头,
柱面(cylinder):柱面是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为柱面 ,即各盘面上面相同位置磁道的集合。磁盘读写数据是按柱面进行的,磁头读写数据时首先在同一柱面内从 0 磁头开始进行操作,依次向下在同一柱面的不同盘面(即磁头上)进行操作,只有在同一柱面所有的磁头全部读写完毕后磁头才转移到下一柱面。
硬盘容量 = 柱面数(每个盘面的磁道数)×盘面数 × 扇区数 × 512字节
通常情况下每个扇区的大小是512字节。(由于不断提高磁盘的大小,部分厂商设定每个扇区的大小是4096字节)。
逻辑层面: 磁盘块(虚拟出来的)。操作系统与磁盘之间交流的最小单位就是磁盘块,它是一个虚拟的概念。是对于操作系统(软件)来说有意义的概念。如:文件的物理存储都是以磁盘块为单位的。
![](https://i-blog.csdnimg.cn/blog_migrate/b18ab516c6e536d1995266a044f401ef.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e0bb8300d1e84d3af311cec0a72f80ce.png)
2、什么是簇?和块什么区别?
通俗的来讲,在Windows下如NTFS等文件系统中叫做簇;在Linux下如Ext4等文件系统中叫做块(block)。每个簇或者块可以包括2、4、8、16、32、64…2的n次方个扇区。
3、为什么存在磁盘块?
读取方便:由于扇区的数量比较小,数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
分离对底层的依赖:操作系统忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。
4、怎么映射磁盘块?
磁盘控制器,其作用除了读取数据、控制磁头等作用外,还有的功能就是映射扇区和磁盘块的关系。
5、磁盘的读写基本单位是什么?
答案:读写基本单位是扇区。磁盘的原理,物理实现,磁盘控制器是按照扇区这个单位读取等操作数据的。操作系统是通过块簇来做为单位读取等操作数据的。此题问磁盘的读写,和操作系统没有关系,千万不要联系到操作系统层面去了。
文件系统就是操作系统的一部分,所以文件系统操作文件的最小单位是块。
6、磁盘块与扇区的大小
既然磁盘块是一个虚拟概念。是操作系统自己"杜撰"的。软件的概念,不是真实的。所以大小由操作系统决定,操作系统可以配置一个块多大。
一个块大小=一个扇区大小*2的n次方。
N是可以修改的。
7、为什么磁盘块大小必须是扇区大小的整数倍呢?
磁盘读取数据的基本单位就是一个扇区的大小,一个块的大小对于磁盘来说就是一次获取数据读取的扇区数*扇区大小,如果是整数倍的扇区数对于磁盘的IO更好,速度更快,也会更合理的利用资源。否则会对扇区进行分割。
一个扇区是512字节。有些硬盘厂商会提供4k大小扇区。这是物理结构。磁盘定下来的结构就是没法修改的。所以必须要将块设置为磁盘的大小。
8、4k对齐:
随着时代发展,硬盘容量不断扩展,使得之前定义的每个扇区512字节不再是那么的合理,于是将每个扇区512字节改为每个扇区4096 个字节,也就是现在常说的“4K扇区”。随着NTFS成为了标准的硬盘文件系统,其文件系统的默认分配单元大小(簇)也是4096字节,为了使簇与扇区相对应,即使物理硬盘分区与计算机使用的逻辑分区对齐,保证硬盘读写效率,所以就有了“4K对齐”的概念。
新标准的”4K扇区”的硬盘在厂商为了保证与操作系统兼容的前提下,也将扇区模拟成512B,会默认定义为4096字节大小为一个簇,但因为其引导区占用了一个磁道共63个扇区,真正的文件系统在63号扇区之后。
我们通过计算得出前63个扇区大小为:512Bx63=32256B。
并按照默认簇大小得出63扇区为:32256B÷4096B=7.875簇。
即从第63个扇区结束,往后的每一个簇都会跨越两个物理单元,占据前一个单元的一小部分和后一个单元的一大部分。
而“4K对齐”主要是将硬盘的模拟扇区(512B)对齐到8的整数倍个“实际”4K扇区,即4096B*8=32768B,其正好跨过了63扇区的特性,从第64个扇区对齐。
9、块与页的关系:
操作系统经常与内存和硬盘这两种存储设备进行通信,类似于“块”的概念,都需要一种虚拟的基本单位。所以,与内存操作,是虚拟一个页的概念来作为最小单位。与硬盘打交道,就是以块为最小单位。