硬盘物理结构
以下三张图片都是磁盘的实物图,一个磁盘是由多块堆放的瓷片组成的,所以磁头的结构也是堆叠的,他要对每一块瓷片进行读取,磁头是可以在不同磁道(在瓷片的表现为不同直径的同心圆,磁道间是有间隔的)之间移动的,来完成不同磁道之间的数据读取,同一磁道不同扇区的数据通过马达带动扇区的转动来读取。
磁道 扇区和柱面
磁道(Track):
每个盘面被划分成许多同心圆,这些同心圆轨迹叫做磁道;磁道从外向内从0开始顺序编号。
扇区(Sector):
将一个盘面划分为若干内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区。每个扇区中的数据作为一个单元同时读出或写入。硬盘的第一个扇区,叫做引导扇区。
在老式硬盘中,尽管磁道周长不同,但每个磁道上的扇区数是相等的,越往圆心扇区弧段越短,但其存储密度越高。不过这种方式显然比较浪费空间,因此现代硬盘则改为等密度结构,这意味着外围磁道上的扇区数量要大于内圈的磁道,寻址方式也改为以扇区为单位的线性寻址。为了兼容老式的 3D 寻址方式,现代硬盘控制器中都有一个地址翻译器将 3D 寻址参数翻译为线性参数。
为了对扇区进行查找和管理,需要对扇区进行编号,扇区的编号从0磁道开始,起始扇区为1扇区,其后为2扇区、3扇区……,0磁道的扇区编号结束后,1磁道的起始扇区累计编号,直到最后一个磁道的最后一个扇区(n扇区)。例如,某个硬盘有1024个磁道,每个磁道划分为63个扇区,则0磁道的扇区号为1~63,1磁道的起始扇区号为64最后一个磁道的最后一个扇区号为64512。硬盘在进行扇区编号时与软盘有一些区别,在软盘的一个磁道中,扇区号一次编排,即1、2、3……n扇区。由于硬盘的转速较高,磁头在完成某个扇区数据的读写后,必须将数据传输到微机,这需要一个时间,但是这时硬盘在继续高速旋转,当数据传输完成后,磁头读写第二个扇区时,磁盘已经旋转到了另外一个扇区。因此在早期硬盘中,扇区号是按照某个间隔系数跳跃编排的。
柱面(Cylinder):
所有盘面上的同一磁道构成一个圆柱,称作柱面。数据的读/写按柱面从外向内进行,而不是按盘面进行。定位时,首先确定柱面,再确定盘面,然后确定扇区。之后所有磁头一起定位到指定柱面,再旋转盘面使指定扇区位于磁头之下。写数据时,当前柱面的当前磁道写满后,开始在当前柱面的下一个磁道写入,只有当前柱面全部写满后,才将磁头移动到下一个柱面。在对硬盘分区时,各个分区也是以柱面为单位划分的,即从什么柱面到什么柱面;不存在一个柱面同属于多个分区。
磁道与柱面都是表示不同半径的圆,在许多场合, 磁道和柱面可以互换使用。
主引导扇区
主引导扇区位于硬盘的0磁道0柱面1扇区,共512bytes,由三大部分组成:
硬盘主引导记录MBR(Master Boot Record)占446bytes
分区表DPT(Disk Partition Table)占64bytes
硬盘有效标志(Magic Number)占2bytes。
结束标志
扇区最后两个字节“55AA”是MBR的结束标志。
主分区扩展分区 逻辑分区
硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多 1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。
在linux中第一块硬盘分区为sda分区,主分区编号为sda1-4,逻辑分区从5开始。
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
主分区也可成为“引导分区”,会被操作系统和主板认定为这个硬盘的第一个分区。所以C盘永远都是排在所有磁盘分区的第一的位置上。