linux MBR即主引导记录,是磁盘存储结构中位于第一个扇区的关键部分,在linux系统的启动流程和磁盘分区管理中扮演着不可替代的角色。无论是系统安装时的引导配置,还是磁盘分区表的读取,都离不开MBR的参与。

MBR的基本定义与存储位置
MBR全称为Master Boot Record,中文译为主引导记录,它存储在磁盘的第一个扇区,也就是0柱面0磁头1扇区,这个扇区的大小固定为512字节。在linux系统中,无论是机械硬盘还是固态硬盘,只要采用传统的MBR分区方案,都会存在这个结构。
MBR的结构组成
512字节的MBR空间被划分为三个部分,每个部分都有明确的功能:
- 引导程序代码:占前446字节,主要负责在系统启动时加载操作系统的引导加载程序,比如linux常用的GRUB引导程序的第一阶段代码就存放在这里。
- 分区表:占接下来的64字节,每个分区表项占16字节,因此传统的MBR分区方案最多只能支持4个主分区,或者3个主分区加1个扩展分区。
- 结束标志:最后2字节固定为0x55AA,用于标识该扇区是有效的MBR,如果这两个字节不正确,系统会认为磁盘没有可用的引导记录。
linux下MBR的工作流程
当linux系统启动时会按照以下流程使用MBR:
- 计算机通电后,BIOS会读取磁盘的第一个扇区,也就是MBR所在的位置。
- BIOS检查MBR的最后两个字节是否为0x55AA,确认是有效的引导记录后,将执行权交给MBR中的引导程序代码。
- 引导程序代码会加载后续完整的引导加载程序,比如GRUB的核心镜像,再由引导加载程序加载linux内核和初始化镜像。
- 内核启动完成后,系统会读取MBR中的分区表来识别磁盘的分区结构,完成磁盘挂载等操作。
linux下查看和备份MBR的方法
查看MBR内容
在linux中可以使用dd命令读取磁盘的第一个扇区来查看MBR内容,以下是读取/dev/sda磁盘MBR的示例:
# 读取/dev/sda的第一个扇区(512字节)到mbr.bin文件 dd if=/dev/sda of=mbr.bin bs=512 count=1 # 以十六进制形式查看mbr.bin的内容 hexdump -C mbr.bin
备份MBR
为了防止MBR损坏导致系统无法启动,可以提前备份MBR,备份命令如下:
# 备份/dev/sda的MBR到指定文件 dd if=/dev/sda of=/root/mbr_backup.bin bs=512 count=1
恢复MBR
如果MBR损坏,可以使用之前备份的文件进行恢复:
# 从备份文件恢复MBR到/dev/sda dd if=/root/mbr_backup.bin of=/dev/sda bs=512 count=1
MBR的常见限制
虽然MBR在linux系统中应用广泛,但它也存在一些明显的限制:
- 最多只支持4个主分区,需要更多分区时必须使用扩展分区,操作相对繁琐。
- 不支持超过2TB的磁盘,因为分区表中用32位存储扇区数,最大可寻址扇区数为2的32次方,按每扇区512字节计算,最大支持磁盘容量为2TB。
- 分区表没有备份机制,一旦分区表损坏,所有分区信息都可能丢失,恢复难度较大。
MBR与GPT的区别
随着大容量磁盘的普及,GPT分区方案逐渐取代了MBR,两者的核心区别如下:
| 对比项 | MBR | GPT |
|---|---|---|
| 最大磁盘支持 | 2TB | 18EB |
| 主分区数量 | 最多4个 | 最多128个 |
| 分区表备份 | 无 | 有头尾两份备份 |
| 引导方式支持 | 传统BIOS | UEFI |
在linux系统中,如果磁盘容量小于2TB,且使用传统BIOS引导,仍然可以选择MBR分区方案,否则更推荐使用GPT方案。