【Linux硬盘】硬盘的MBR分区表和GPT分区表

硬着头皮来更新weblog了。。硬盘的MBR和GPT分区表首当其冲。

 

O. 硬盘分区

在以前的博客中,我也稍微提到过硬盘的分区,不过不是特别详细,这里特别拿出来讲一讲,为什么我们的硬盘需要分区。

(1). 提高了数据的安全性

因为每个分区中的数据都是独立的,所以如果我要格式化某一个分区,就可以把原先的内容存放到另外一个分区中。

(2).提高了系统的性能

由于数据集中,将有助于我们数据读取的速度和性能。

(3).方便管理

正如我们想在同一个目录之下创建两个子目录一样,我们对磁盘进行进一步地划分,其实也是对数据的一种整理。

(P.S. 把一块硬盘划分成多个区域,叫做分区;他的反义词,把多个硬盘,合为一个整体,这叫做RAID

 

一. MBR分区表

刚刚提到了分区,那么硬盘中肯定要有对应的一个区域用来存储分区信息,这个信息叫做分区表

分区表还有两种不同的格式,广为人知(历史悠久)的一种就是MBR分区表格式。

·MBR分区格式组成:

  1. 这种分区表的把硬盘的第一个sector当做MBR(以旧的磁盘为例,是512B),其中448B用于安装Boot loader,剩余64B记录4个分区的起始区块和终末区块。
  2. 这四组划分信息又可分为Primary和Extended分区;注意Extended分区得继续划分为logical分区才能使用,不然不能格式化。
  3. Extended分区只能有一个。

这张图生动形象地解释了三种分区之间的关系(注意主要分区和扩展分区数之和不能超过4,但是逻辑分区理论上可以有多个

【Linux硬盘】硬盘的MBR分区表和GPT分区表

·关于MBR分区的其他概念和操作

  1. 由于主分区+扩展分区的个数不能超过4个,所以如果有逻辑分区,其文件末尾的编号都是从5开始。比如:/dev/sd[a-d]5
  2. 扩展分区会在每个分区的最前面几个扇区中记录分区信息,所以MBR分区表格式的硬盘可以有超过5个分区
  3. 合并分区或删除分区:这个得看我Linux硬盘系列的博客了。总之,一个属于主分区,另一个属于扩展分区,二者是无法合并的(当然了,除非你重新格式化)

·MBR分区的缺点

  1. 操作系统无法使用2TB以上的磁盘容量
  2. MBR仅有一个区块,没有备份——一旦被破坏,很难恢复。(又一个精妙的设计——备份)
  3. MBR本身的空间也比较小,无法存储较多的程序代码。

 

二. GPT分区表

GPT(GUID parition table,GUID为全局统一标识符)分区表的出现显然就是为了解决MBR分区表的缺点的。

之前在MBR分区表中我们提到,这是很久以前的分区格式了,对应的硬盘的sector的容量也是512B,但是现在的硬盘,一个sector都有差不多4K,这个怎么办呢?

GPT引入了一个LBA(logical block address)的概念,虽然使用的4K的sector,但是我仍然将其当做8个512B的LBA。

·GPT分区表的组成

开头34个LBA:

  1. LBA0:MBR兼容模块,还放有一个特殊的标识符来表示他是GPT格式的分区表。
  2. LBA1:  有点类似于meta data,存放着整个GPT表的各种属性。
  3. LBA2-33:实际分区信息处。每个LBA都可以记录4组分区记录,你可以想想有多大。

中间:

       各种partition;

末尾34个LBA:

       即是对开头34个LBA的备份

样子见下图:

【Linux硬盘】硬盘的MBR分区表和GPT分区表

 

三. 其他相关知识点

(1).到底什么是MBR?

MBR,  即Master Boot Record, 内含启动引导代码。是检查分区表是否正确并且在系统硬件完成自检以后将控制权交给硬盘上的引导程序(如GNU GRUB)

顺便也介绍一下引导程序(Boot loader)——一个可以读取内核文件的软件

你要知道操作系统也是软件,也要被加载才能启动。

(2).启动流程与操作系统

有了(1)中的解释就方便多了:

  1. 按下开机键以后,BIOS先启动,认识第一个可启动的设备。
  2. MBR中的启动引导代码检查无误后,将控制权转交给boot loader.
  3. boot loader读取内核文件,开启操作系统。

(3).关于多重引导

多重引导的可行性来源于启动引导程序可以安装在每个分区的启动扇区上。而boot loader也可以把启动管理功能转交给其他启动引导程序负责。(见《鸟哥的Linux私房菜》P77 图2.2.8)

(P.S. 安装多重引导建议先装Windows再装Linux,不然Windows的启动引导程序就会覆盖Linux的)

 

附一张非常好的关于硬盘,文件系统的图片,一目了然

【Linux硬盘】硬盘的MBR分区表和GPT分区表