硬盘的分区方式
1.硬盘的物理结构
首先我们先看下磁盘的物理结构。
磁道(track):盘片上每一个同心圆成为一个磁道,0磁道在最外层,越往里编号越大。
扇区(sector):每个磁道被划分为多段,每段称为一个扇区,扇区是磁盘读写的最小单位。通常每个扇区的大小为512B。在硬盘上扇区一般是等长的,所以外侧磁道上的扇区数会多些,扇区编号从1开始。
磁头(head):通常磁盘会有多个盘片,每个可以读写的面上都会有一个磁头,磁头数就表明了可读写面的数量,磁头编号从0开始。
柱面(cylinder):多个盘面上半径相同的磁道构成了一个面叫做柱面。
有了这些概念我们就可以用柱面、磁头、扇区三个量来表示磁盘上的位置了,称为chs表示。如表示0柱面,0号磁头,1扇区为(0,0,1)。
2.MBR方案
为了对磁盘的物理空间进行管理,人们使用磁盘上的第一个扇区sector1(0,0,1)作为开机后硬盘上首先被读取的区域,这个区域有主引导记录MBR、硬盘分区表dpt和2个字节的结束符号组成,其中MBR占了大部分空间,共446B,所以这种磁盘管理的方案就叫做MBR方案。硬盘分区表共64B,记录分区开始和结束的柱面。
sector1的结构如下图:其中P1、P2、P3、P4代表硬盘最多可以有4个分区,4个分区中最多有一个扩展分区,扩展分区可以在逻辑上分出更多的分区。分区表项结构描述了硬盘分区表项如何描述分区。
有了分区表,我们终于可以看看MBR方案是怎么为硬盘分区的。由于硬盘是个立体结构,为了方便描述,我们首先把硬盘按柱面顺序展开,得到如下示意图。
假设硬盘有701个柱面,分区表位于第一个柱面的开始处,即第一个逻辑扇区处。分区表将硬盘分为四个分区P1,P2,P3,P4,其中P4位扩展分区,分为L1,L2,L3,L4四个逻辑分区,逻辑分区中分区信息位于每个逻辑分区开始处。逻辑分区的具体数量与操作系统有关。
明白了MBR方案的分区方式,我们看下分区表项的一些细节。在分区表项中,磁头号,扇区号,柱面号共3个字节,即使全部用于表示逻辑扇区,最大扇区号也只能是224,忽略寻址等方面的因素的情况下,按每扇区512B算,最大为512B*224/220=8GB的空间。这样的空间显然是不够用的,于是用分区表项中的9到12位表示分区的开始扇区,13到16位表示分区所用的扇区数,这样假设最后一个分区开始的扇区号是232,本分区总扇区数也是232那么,最大的空间似乎达到了512B*232*2/230=4T,(实际由于BIOS寻址空间的限制,最大容量为2T),但在硬盘越来越大的今天,也不够用了。
3.GPT方案
为了满足更大硬盘的需求intel提出了GPT方案。
GPT(GUID Partition Table)中使用LBA寻址的模式。下面是GPT中LBA的结构,为了描述方便我们使用(LBA-34)表示倒数第34个LBA
LBA0:保存一个MBR区块,用来兼容MBR模式。
LBA1:是GPT表头,用来用来描述分区表的位置,大小,备份分区表的位置,CRC32校验等信息。
LBA2-LBA33:分区表,每个逻辑块描述4个分区,每个分区信息占128B,最大可以划分为4*32,,18个分区。
LBA34-LBA(-34):分区占用的空间。
LBA(-33)-LBA(-2):分区表的备份。
LBA(-1):LBA1的备份。
LBA1也叫EFI信息区(GPT方案是作为EFI的一部分提出的),具体结构如下