Linux学习—MBR和GPT
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习—MBR和GPT相关的知识,希望对你有一定的参考价值。
MSDOS(MBR)和GPT--早期的Linux系统采用MBR的方式来处理开机引导程序和分区表,这些通常放在磁盘的第一个扇区(512字节)中,但是MBR分区只能抓取2TB的容量等等的限制,新的分区格式GPT因此产生
一、MBR
MBR位于整个磁盘的的第一个扇区,总体分为三部分:
boot loader:主要作用是把内核加载到内存中,引导系统加载
分区表DPT(16字节*4):保存着磁盘的分区信息,由于DPT只有64字节,因此最多只能划分四个分区,说到底对于磁盘的分区不过只是对DPT的分区而已,当然了,系统会预留一个扩展分区(Extended),扩展分区本身并不能创建文件系统格式化,对它继续划分,这样就可以划分出更多的分区(逻辑分区),而且每个逻辑分区中的前几个扇区也会用来记载分区信息。
其中每个16字节包含的内容如下:
第一个字节:80表示活动分区,00表示非活动分区
第二个字节:表示磁头号,占8位
第三个字节:高2位,表示柱面号,低6位,表示扇区号
第四个字节:表示柱面号,占8位
第2 3 4位总共24位,(8位磁头,10位柱面,6位扇区)能表示8G的空间
第五个字节:记录分区类型,0表示分区未使用
创建分区默认是83,更改为8e的效果图:
第六个字节:表示磁头结束号,占8位
第七个字节:高2位,柱面结束号,低6位,扇区结束号
第八个字节:表示柱面结束号,占8位
第九个字节至第十二字节:分区起始LBA地址,隐藏扇区数目
第十三字节至第十六字节:分区结束LBA地址,分区的总扇区数
共4*8=32位,能表示2T的空间
结束标志字 55 AA
一个逻辑分区前有一个EBR(512字节),和MBR的结构一样,只是EBR中的前446字节中没有数据,16字节*4中,第一个16字节指向当前逻辑分区,第二个16字节指向下一个EBR,剩下的两个16字节未使用,总之硬盘使用都会先读取MBR,如果硬盘的MBR坏掉,那么这整个硬盘也就坏了。
二、GPT
随着硬盘的容量越来越大,传统的MBR支持的2TB空间已经无法支持现在大容量的硬盘,于此出现了GPT分区格式,GPT使用LBA来处理,并且第一个LBA为LBA 0(从0开始编号)
支持128个分区
使用128位的UUID表示磁盘分区
仅支持UEFI的启动方式(传统的Bios只能支持MBR,如果想要只从GPT启动只能使用UEFI)
GPT使用34个LBA区块记录分区信息,同时为了防止传统的MBR只有一个分区表带来的限制,GPT用磁盘的最后33个LBA作为另一个备份
结构:
LBA 0:PMBR (512字节)
对于传统的操作系统默认启动是MBR,因此为了保证GPT下能够启动仅支持MBR的操作系统,预留了512字节作为保护MBR,其结构和MBR类似,其中的55AA是必须的,在原来的分区表中现在存放着特殊标志的分区,表示为GPT之意,这样不懂GPT分区的管理程序就不会认识该磁盘,进一步保护了磁盘。
LBA 1:GPT分区头
该LBA区块记录了分区表的位置和大小,GPT备份区的位置,以及校验位(CRC32),操作系统可以根据校验位判断该GPT是否正确,若错误则可以根据最后的备份恢复该GPT。
LBA 2—33:分区表
每个LBA区块可以划分4个分区记录,所以总共可以有4*32=128个分区记录,每个分区记录512/4=128字节,128字节中分出64字节来表示开始和结束扇区号,所以每个分区最大限制容量为2^64*512Bytes=2^33TB=8ZB。
. . . :分区
GPT格式没有扩展分区的概念,因此每个分区都可以格式化
LBA N-32...LBA N:备份区域
小tips:理论上GPT格式可以无限划分分区(128以上),但是如果划分的过多的话,好像128之后的分区就不能够格式化使用了。
以上是关于Linux学习—MBR和GPT的主要内容,如果未能解决你的问题,请参考以下文章