尝试理解MBR分区和GPT分区

笔记由VioletTec原创整理,若有错误,欢迎指出

QQ:595585575

1. MBR(Master Boot Record)主引导记录

1.1 MBR的结构

image-20201211215544826
  • Bootloader:引导程序
  • Partition Table:分区表
  • Magic Number:主引导记录签名

主引导记录(master boot record,MBR)位于硬盘的第一物理扇区。由于历史原因,硬盘的一个扇区大小是512字节,包含最多446字节的启动代码、4个硬盘分区表项(每个表项16字节,共64字节)、2个签名字节(0x55,0xAA)。

image-20201211215723170
img

MBR分区的编号[1,4]是保留给Primary或Extended分区使用的,如果是逻辑分区,则第一个逻辑分区的编号一定是5

image-20201211215907505

1.2 MBR分区的劣势

  • 操作系统无法抓取到 2.2T 以上的磁盘容量!
  • MBR 仅有一个区块,若被破坏后,经常无法或很难救援。
  • MBR 内的存放开机管理程序的区块仅 446Bytes,无法容纳较多的程序码。

1.3 为什么MBR的一个分区最大只支持2.2T

image-20201211220127939
img

因为分区表总共可以记录4个分区,一个分区记录的大小为16Byte。在这16Byte中,最后两个,即第13Byte~第16Byte记录的是该主分区的扇区总数,又由于每个扇区大小为512B,则最大支持

(2^32) x 512 = 2TB


2. GPT(GUID Partition Table)全局唯一标识分区表

2.1 GPT分区表结构

img

因为过去一个扇区大小就是 512Bytes 而已,不过目前已经有 4K 的扇区设计出现!为了相容于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块位址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(默认为 512Bytes 喔!) 来规划, 而第一个 LBA 称为 LBA0 (从 0 开始编号)。

与 MBR 仅使用第一个 512Bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息!同时与过去 MBR 仅有一的区块,被 干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!这样或许会比较安全些吧!

  • LBA0 (MBR 相容区块) 与 MBR 模式相似的,这个相容区块也分为两个部份,一个就是跟之前 446 Bytes 相似的区块,储存了第一阶段的开机管理程序! 而在原本的分区表的纪录区内,这个相容模式仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分区表的磁 盘管理程序, 就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管理软件不能修改此分区信息,进一步保护了此磁盘 喔!
  • LBA1 (GPT 表头纪录) 这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的 GPT 分区 (就是前面谈到的在最后 34 个 LBA 区块) 放置的位 置, 同时放置了分区表的检验机制码 (CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以通过这个纪 录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运行!
  • LBA2-33 (实际纪录分区信息处) LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,所以在默认的情况下,总共可以有 4*32 = 128 笔分区纪录喔!因为每 个 LBA 有 512Bytes,因此每笔纪录用到 128 Bytes 的空间,除了每笔纪录所需要的识别码与相关的纪录之外,GPT 在每笔纪录中分别 提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对於单一分区来说, 他的最大容量限制就会在“ 2^64 * 512Bytes = 2^63 * 1KBytes = 2^33*TB = 8 ZB ”,要注意 1ZB = 2^30TB 啦! 你说有没有够大了?

2.2 GPT主要头部(LBA1)包含的内容

image-20201211223204916

参考来源:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code