磁盘构造
硬盘中一般会有多个盘片(platter)组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头(head)。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片的两个盘面分别编号为0面和1面,再上一个盘片的两个盘面就分别编号为2面和3面。
下图显示的是一个盘面,盘面中一圈圈灰色同心圆为一条条磁道(track),从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(sector)。在下图中,绿色部分为其中的一个扇区。
扇区是磁盘中最小的物理存储单位。通常情况下每个扇区的大小是512字节(由于磁盘的大小不断提高,因此部分容量较大的新硬盘的扇区的大小被设置为4096字节,比如 4T 大小的移动硬盘)。
硬盘通常由重叠的一组盘片(platter)构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面(cylinder)。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。 如下图:
扇区(Sector)和磁盘块(Block)
扇区(Sector)
物理层面:一个磁盘由大到小按层次分为磁盘组合 -> 单个磁盘 -> 某一盘面(platter)/磁头(head) -> 某一磁道(track) -> 某一扇区(Sector)。
前面已经提到了,扇区(Sector),顾名思义,每个磁盘有多条同心圆似的磁道(track),磁道被分割成多个部分。每部分的弧长加上到圆心的两个半径,恰好形成一个扇形,所以叫做扇区。
磁盘块(Block)
逻辑层面: 磁盘块,或者直接称为块(Block),块是虚拟出来的,是操作系统中最小的逻辑存储单位。操作系统与磁盘打交道的最小单位是磁盘块。
- 在Windows下,如NTFS等文件系统中叫做簇(cluster),每个簇或者块可以包括2、4、8、16、32、64…2的n次方个扇区。
- 在Linux下如Ext4等文件系统中叫做块(block)。
其实,簇和块是同样的概念。
为什么存在磁盘块?
读取方便:由于扇区的数量比较小,数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
分离对底层的依赖:操作系统忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。
磁盘块与扇区的大小
既然磁盘块是一个虚拟概念。是操作系统自己"杜撰"的软件的概念,不是真实的。所以,磁盘块的大小由操作系统决定,操作系统可以配置一个块多大。
一个块大小=一个扇区大小*2的n次方。
n是可以修改的。
块与页的关系
操作系统经常与内存和硬盘这两种存储设备进行通信,类似于“块”的概念,都需要一种虚拟的基本单位。所以,与内存操作,是虚拟一个页的概念来作为最小单位。与硬盘打交道,就是以块为最小单位。
Reference
- Wikipedia Disk sector - https://en.wikipedia.org/wiki/Disk_sector
- 硬盘基本知识(磁头、磁道、扇区、柱面) - https://www.jianshu.com/p/9aa66f634ed6