目前分区表2种格式
1. mbr分区表格式与限制
1.1 主分区和扩展分区
MBR:Mast Boot Record, 主引导记录,位置就是第一个可开机装置(磁盘)的第一个扇区
, 通常大小为512byte
,旧的磁盘一个扇区都是512B, 最新的有4KB,这个扇区有两部分:
- 主引导记录(MBR)
安装开机管理程序的地方,有446个字节; - 分区表,记录整块硬盘分区的状态,有64byte(与mbr总和是510,略小于512),
最多有4组记录区
。
每组记录区记录了该区段的起始与结束的柱面号码。
假设硬盘设备文件名为/dev/sda时,那么四个分区在linux系统中的设备名如下所示,重点在于文件名后面会再接一个数字,这个数字与该分区所在的位置有关:
- P1:/dev/sda1
- P1:/dev/sda2
- P1:/dev/sda3
- P1:/dev/sda3
上图中,假设我们的硬盘只有400个柱面,共划分为4个分区第四个分区所在为第301-400号柱面的范围。当你的操作系统为windows时,第一到第四个分区的代号应该就是CDEF。当你的数据要写入F分区时,你的数据会被写入这块磁盘的301-400号柱面之间的意思。
由于分区表就只有64个字节而已,最多容纳四组分区记录。这四个分区的记录被称为主分区(Primary)或扩展分区(Extended)。
在MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有一个,然后可以再细分为多个逻辑分区。
1.2 逻辑分区
难道一块硬盘只能有四个分区?你也知道,这不是真的,那怎么办,这就引出了逻辑分区的概念,原理是把Extended扩展分区切成若干个逻辑分区。
-
p2扩展分区,划定了101-400柱面区间,内部又划分为5个分区,称为
逻辑分区
。 -
粉色圆圈标记的时扩展分区,占用额外的扇区来记录逻辑分区信息;
-
只有主分区Primary和逻辑分区可以被格式化。扩展分区存储的内容是逻辑分区;如果扩展分区被格式化,那么逻辑分区信息就丢失;因此不能被格式化
如果扩展分区被破坏,逻辑分区将会被删除!
同样,上述的分区在linux系统中的设备文件名分别如下:
P1:/dev/sda1
P1:/dev/sda2 '没有用到/dev/sda3和/dev/sda4'
L1:/dev/sda5
L2:/dev/sda6
L3:/dev/sda7
L4:/dev/sda8
L5:/dev/sda9
为什么没有用到/dev/sda3和/dev/sda4? 因为前面四个号码都是保留给主要分区或扩展分区的,所以逻辑分区的设备名称号码就从5开始
1.3 MBR缺点
但是MBR有一些弊端:
-
1.操作系统无法抓取到2.2T以上的磁盘容量,每组分区表仅有16个字节,记录的柱面范围自然很小,导致划出的分区容量也很小,不超过2.2T。
-
2.MBR只有一块,被破坏了,很难救援
-
3.bootloader最大446byte,无法容更大的开机管理程序
2. GTP(GUID partition table )全局唯一表示分区表
与MBR仅仅使用第一个512bytes来记录不同,GPT使用了34个LBA区块来记录硬盘分割信息,同时整个硬盘的最后33个LBA被用来作为另一个备份。
一个LBA大概就是指一个扇区,也就是说GTP采用34个扇区,是mbr(仅采用第一个扇区)的34倍
-
LBA0(MBR):
-
对于GPT分区表的磁盘,在GPT分区表的最开头,处于
兼容性考虑仍然存储了一份传统的MBR
,用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据,这个MBR也叫做保护MBR。在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码(这也叫bootloader,但是这只是完整bootloader级开机管理程序的一部分)。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。 -
在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区
-
-
LBA1(GPT表头记录):
这个部分记录了分割表本身的位置与大小,同时记录了备份用(硬盘的最后33个LBA)的GPT分割放置的位置,以及校验码(CRC32)。操作系统可以根据校验码判断GPT是否正确,若有错误,则可以取得备份来恢复。 -
LBA2-33(实际记录分割记录信息处):
从LBA2区块开始,每个LBA都可以记录4个分割记录,所以在默认情况下,可以记录4*32=128个记录。每一个记录除了记录所需要的标志码与相关记录意外,还分别提供了64bits来记录开始/结束的区块号码。因此对一单一的分区来说,最大容量限制在「264 × 512bytes = 263 × 1Kbytes = 233 × TB = 8 ZB
参考: