Raven's Blog

知识整理-分区表MBR与GPT

本文整理自《鸟哥的Linux私房菜-基础学习篇》及几篇博客。

咱们拿到一个块磁盘是不能马上使用的,需要对磁盘进行分区,再格式化为某个文件系统(如windows上常用的NTFS和Linux下的Ext家族)才能使用。今天咱们的重点就放在磁盘分区上。当然了本文可不是教你怎么用工具或命令去分区,而是分区当中的重要部分--分区表。

1. 传统磁盘结构

常用的分区表有MBR何GPT两种。但是在说这两者之前我们需要了解传统磁盘的物理结构:磁盘的组成主要有盘片、机械手臂、磁头与主轴马达所组成, 而数据的写入其实是在盘片上。所以我们主要关注的也就是这个存储数据的盘片

以下解释来自文章:https://blog.csdn.net/xiaominthere/article/details/19756551

i> tips:每个盘片都有两面,两面都可以存数据。

一般来说,我们要进行分区,其实就是规划柱面的范围,柱面是分区的最小单位(最新的GPT也可用扇区作为最小分区单位)。比如100-200柱面是分区1,200-400柱面是分区2。

2. MBR分区表

MBR这个概念首次出现,是在1983年的IBM PC DOS 2.0操作系统当中,因此也被称为DOS分区结构。实际上,MBR分区结构是一种应用非常广泛的硬盘分区结构,不仅仅是DOS,包括windows系列操作系统、Linux以及基于X86架构的UNIX操作系统等平台均有使用。

MBR的英文全称是Main Boot Record(一说Master Boot Record),翻译过来的中文名称是主引导记录。

它主要有以下几个特点:

1、在我们常见的电脑中,一般是BIOS+MBR、(U)efi+GPT的组合;

2、MBR分区表中单个分区最大仅支持2TB,而整个分区表最大也是仅支持2TB的硬盘;

3、MBR分区表最大只支持四个主分区(可少不可多),如果觉得四个不够用,可以使用三个主分区+一个扩展分区的组合(扩展分区仅能存在一个,但扩展分区下可以分出无数个逻辑分区);

可能有朋友对主分区、扩展分区、逻辑分区的概念有点懵逼,这里再说一下:

i> tips: 假设上面的硬盘设备文件名为/dev/sda:

MBR分区表占用一个扇区,这个扇区中有三种数据:

详细信息可参见下图。

i> 上图也说明了为什么MBR分区格式最大只支持2TB的数据。

借助鸟哥书中的一个例题,我们来加深一下MBR中的分区表的概念及特点:

√> 在Windows操作系统当中,如果你想要将D与E盘整合成为一个新的分区,而如果有两种分区的情况如下图所示, 图中的特殊颜色区块为D与E盘的示意,请问这两种方式是否均可将D与E整合成为一个新的分区?

答:

  1. 上图可以整合:因为上图的D与E同属于延伸分区内的逻辑分区,因此只要将两个分区删除,然后再重新创建一个新的分区, 就能够在不影响其他分区的情况下,将两个分区的容量整合成为一个 。
  2. 下图不可整合:因为D与E分属主分区与逻辑分区,两者不能够整合在一起。除非将延伸分区破坏掉后再重新分区。 但如此一来会影响到所有的逻辑分区,要注意的是:如果延伸分区被破坏,所有逻辑分区将会被删除。 因为逻辑分区的信息都记录在延伸分区里面嘛 。

3. GPT(GUID partition table )

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

说白了就是用LBA来统一不同大小的扇区。

与 MBR 仅使用第一个 512Bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息 ,除了前面 34 个 LBA 之外,整个磁盘的最后 34个 LBA 也拿来作为另一个备份 。详细的结构如下图:

3.1 LBA0(MBR 相容区块)

与 MBR 模式相似的,这个相容区块也分为两个部份,一个就是跟之前 446 Bytes 相似的区块,储存了第一阶段的开机管理程序!而在原本的分区表的纪录区内,这个相容模式仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分区表的磁盘管理程序, 就不会认识这颗磁盘 。从而防止那些不识别GPT的磁盘管理工具破坏整个GPT磁盘的信息。

3.2 LBA1 (GPT 表头纪录)

这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的 GPT 分区 (就是前面谈到的在最后 34个 LBA 区块) 放置的位置, 同时放置了分区表的检验机制码 (CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以通过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运行!

3.3 LBA2-33 (实际纪录分区信息处)

从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,所以在默认的情况下,总共可以有 432 = 128 笔分区纪录喔!因为每个 LBA 有 512Bytes,因此每笔纪录用到 128 Bytes 的空间,除了每笔纪录所需要的识别码与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区来说, 他的最大容量限制就会在“ 264 512Bytes = 263 *1KBytes = 233*TB = 8 ZB ”,要注意 1ZB = 230TB 啦!

参考

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »