【Linux】MBR磁盘分区表只能有四个分区?

看《鸟哥的Linux私房菜》的时候,说是partition table只能有四个分区,想知道为什么,以下参考自Wiki

1 第一个扇区

磁盘的第一个扇区(也可以叫做MBR,根据语境确定是第一个扇区还是主引导分区)记录了整块磁盘的重要信息,是计算机开机后访问磁盘时所必须要读取的首个扇区。主要有三个部分:

  1. 主引导分区(Master Boot Record,MBR):主要作用是检查分区表是否正确,并且在系统硬件完成自检以后将控制权交给磁盘上的引导程序(如GNU,GRUB);
  2. 分区表(partition table):占据64个字节,可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节;
  3. 结束标志字:0x55AA,最后两个字节,是检验主引导记录是否有效的标志。

标准MBR结构如下:

地址 描述 长度(字节)
0 代码区 440(最大446)
440 选用磁盘标志 4
444 一般为空值; 0x0000 2
446 标准MBR分区表规划(四个16 byte的主分区表入口) 64
511 MBR有效标志:0x55AA 2

MBR总大小:446 + 64 + 2 = 512。


2 分区表

由于每个分区信息需要16个字节,所以对于采用MBR型分区结构的磁盘,最多只能识别4个主(primary)或扩展(extend)分区。扩展分区也是主要分区的一种,但它与主分区的不同在于理论上可以划分为无数个逻辑分区。

那为什么每个分区信息是16个字节呢?这16个字节又代表什么呢?

因为这16个字节中的每个字节都表示了一种定义,具体每个字节的定义可以参见磁盘分区结构信息。

偏移 长度(字节) 意义
00H 1 分区状态:00–>非活动分区;80–>活动分区;其它数值没有意义
01H 1 分区起始磁头号(HEAD),用到全部8位
02H 2 分区起始扇区号(SECTOR),占据02H的位0-5;该分区的起始磁柱号(CYLINDER),占据02H的位6-7和03H的全部8位
04H 1 文件系统标志位
05H 1 分区结束磁头号(HEAD),用到全部8位
06H 2 分区结束扇区号(SECTOR),占据06H的位0-5;该分区的结束磁柱号(CYLINDER),占据06H的位6-7和07H的全部8位
08H 4 分区起始相对扇区号
0CH 4 分区总的扇区数

下面是一个例子,如果某一分区在磁盘分区表的信息如下:

80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

从中可以看到:

  • 最前面的“80”是一个分区的激活标志,表示系统可引导;
  • “01 01 00”表示分区开始的磁头号为1,开始的扇区号为1,开始的柱面号为0;
  • “0B”表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);
  • “FE BF FC”表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;
  • “3F 00 00 00”表示首扇区的相对扇区号为63(小端序);
  • “7E 86 BB 00”表示总扇区数为12289662(小端序)

3 主分区和扩展分区

磁盘中最多可以有4个Primary和Extended的扇区,而Extended只能有一个,如果要把磁盘分区成四个分区,那么只能是:

P+P+P+P
或者
P+P+P+E

上面的情况中, 3P+E只有三个主分区可用,因为Extended不能被格式化作为数据访问的分区,还需要进一步分区成逻辑分区。如果要四个都可用,就需要分区成4P。

扩展分区中逻辑驱动器的引导记录是链式的。每一个逻辑分区都有一个和MBR结构类似的扩展引导记录(EBR),其分区表的第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的EBR,分区表第三、第四项没有用到。

需要注意的问题:

  1. 主分区和扩展分区最多只有四个
  2. 扩展分区最多只能有一个
  3. 逻辑分区是由扩展分区持续切割出来的分区
  4. 只有主分区和逻辑分区才能被格式化作为数据访问的分区
  5. Linux系统默认将前4个序号作为主分区或扩展分区,而逻辑分区的序号肯定从5开始

下图来自Inside the Linux boot process,较为清晰的画出了MBR中各个部分的结构
【Linux】MBR磁盘分区表只能有四个分区?_第1张图片

你可能感兴趣的:(Linux)