【Linux】磁盘基础知识
扇区与块/簇
如图所示,描述介绍了扇区、磁道等概念:
A:Track 磁盘磁道(粉红色部分)
B:Geometrical sector 几何学中的扇形(紫色部分)
C:Track sector 磁盘扇区(玫红色部分)
D:Cluster 块/簇(绿色部分)
说完扇区,就不得不提一些其他相关概念,因为它们相辅相成,不能孤立开来,这里也简单介绍一下,不详细展开.
盘片(platter)
硬盘中一般会有多个盘片组成,这个如果拆解过磁盘的人都会知道,银白色的盘片像镜子一样,曾有同事将其当镜子用。大多数盘片的材质是铝合金,上面覆盖一些磁性涂层。IBM曾经生产过玻璃材质的盘片,不过早已退出了历史舞台。每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。
柱面(cylinder)
硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。
所有盘面上的同一磁道构成一个圆柱,称作柱面。数据的读/写按柱面从外向内进行,而不是按盘面进行。定位时,首先确定柱面,再确定盘面,然后确定扇区。之后所有磁头一起定位到指定柱面,再旋转盘面使指定扇区位于磁头之下。写数据时,当前柱面的当前磁道写满后,开始在当前柱面的下一个磁道写入,只有当前柱面全部写满后,才将磁头移动到下一个柱面。在对硬盘分区时,各个分区也是以柱面为单位划分的,即从什么柱面到什么柱面;不存在一个柱面同属于多个分区
了解完上面概念,你再看一下下面两张图【来自维基百科】,基本上就能有个形象的认知了。
关于扇区的一些疑问
回过头来,我们仔细捋一捋图(1)这张图片,基本上就能把扇区的概念理解得七七八八了,那么还有几个问题,这个是我学习过程的一些疑问和自我解答(这里仅仅指传统硬盘,不涉及SSD磁盘):
1:扇区的大小是固定的吗? 同一块磁盘上的扇区大小是否可以不一致。
扇区(Sector)大小是固定的,默认情况下,每个扇区(Sector)为512字节,2009年后,硬盘厂商开始发布4KB字节扇区的硬盘了,4KB扇区硬盘已经在消费级市场广泛应用。但是同一块硬盘上的扇区大小一定是一致的。不可能存在多种不同大小的扇区。
至于为什么之前的扇区大小为512字节呢?这是1956年由industry trade organization, International Disk Drive Equipment和Materials Association三家机构确定的行业标准。有时代和技术的限制,因为磁盘技术发展初期,存储容量非常小。512字节的扇区也够用,但是随着时代的发展,512字节大小的扇区(Sector)明显太小了,由于每个扇区(Sector)还要存放很多其他信息,因此增大sector size可以降低扇区(Sector)的数量,从而提高实际存储量,同时降低了差错校验等很多CPU计算量。但遗憾的是由于这个标准太根深蒂固,要想改变一些底层代码或架构势必非常困难,所以现在4KB扇区硬盘暂时还没有全部普及。