MBR分区和GPT分区详解

什么是磁盘分区?

              磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分,盘片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。越多分区,也就有更多不同的地方,可以将文件的性质区分得更细,按照更为细分的性质,存储在不同的地方以管理文件。


硬盘结构及参数

3D参数(Disk Geometry):CHS(Cylinder/Head/Sector) 

   C-Cylinder(柱面):柱面数表示硬盘每面盘片上有几条磁道,最大为1024(用10个二进制位存储);

   H-Head(磁头):磁头数表示硬盘总共有几个磁头,也就是几面盘片,最大为256(用8个二进制位存储);

   S-Sector(扇区):扇区数表示每条磁道上有几个扇区,最大为63(用6个二进制位存储)。

Track(磁道):当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆

          形轨迹就叫做磁道

LBA:逻辑区块地址,是描述电脑存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备

为什么分区?

分区有以下优点:

  • 优化I/O性能

  • 实现磁盘空间配额限制

  • 提高修复速度

  • 隔离系统和程序

  • 安装多个OS

  • 采用不同文件系统

分区方式:

linux中有两种分区方式:MBR和GPT

MBR: (Master Boot Record)主引导记录,是传统的分区机制,应用于绝大多数使用BIOS的PC设备,使用32位表示扇区数。

  • MBR支持32位和64位系统

  • MBR支持分区数量有限

  • MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间(有第三方解决方法)


GPT:GUID(Globals Unique Identifiers)Partition Table 全局唯一标识,是一个较新的分区机制,解决了MBR很多缺点。

  • 使用128位UUID 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位

  • 支持超过2T的磁盘(64位寻址空间),使用64位,支持128个分区,支持8Z(512Byte/block )64Z(4096Byte/block)。fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区使用parted,gdisk分区工具

  • 向后兼容MBR

  • 必须在支持UEFI的硬件上才能使用(Intel提出,用于取代BIOS)

  • 必须使用64位系统

  • Mac、Linux系统都能支持GPT分区格式

  • Windows 7/8 64bit、Windows Server 2008 64bit支持GPT

MBR分区:

分区划分基于磁盘柱面,利用参考柱面号码的方式来处理,从CentOS6开始已经支持采用扇区的方式来划分分区。

其实所谓的“分区”只是针对那个64bytes 的分区表进行设置而已;

硬盘默认的分区表仅能写入四组分区信息;

这四组分区信息我们称为主(Primary)分区或扩展(Extended)分区;

所以,MBR的分区方式为:4个主分区或{3主分区+1扩展(N个逻辑分区)}


wKioL1e--1ThHu59AAB7Kkqk6SQ972.png

MBR引导扇区结构:

0磁道0扇区:第一个扇区512bytes MBR引导扇区

    主引导程序(boot loader):446bytes, 可以安装引导加载程序

     主分区表(partition table):64bytes,记录整块硬盘分区的状态

        16bytes: 标识一个分区

     结束标识:  2 bytes, 55AA ,MBR区域的有效性标识;55AA为有效

 主分区表所在的64个bytes容量中,每16个bytes分为一个项,总共分为四组记录区,每组记录区记录了该区段的起始与结束的柱面号码,等信息。

分区表结构:

wKiom1e_uZDCGFMjAAA235DnFZg999.jpg

BYTE State:分区状态,00=未激活,80=激活(注意此项);

BYTE StartHead:分区起始磁头号;

WORD StartSC:分区起始扇区和柱面号。

BYTE Type:分区类型,如0x0B=FAT32,0x83=Linux等,00表示此项未用;

BYTE EndHead:分区结束磁头号;

WORD EndSC:分区结束扇区和柱面号,定义同前;

DWORD Relative:在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址);

DWORD Sectors:分区大小(总扇区数)。

  由于主分区表中只有四项记录区,所以硬盘最多可以分为四个分区,显然四个分区不能满足工作需要,所以可以使用扩展分区,进而在扩展分区中再分逻辑分区

什么是扩展分区?

   所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘

扩展分区结构:扩展引导记录(EBR)+ 逻辑分区

        注:扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录( Extended Boot Record, EBR)

扩展引导扇区(EBR):类似于MBR的扩展引导记录,扩展引导记录包括一个扩展分区表和该扇区的标签.

   扩展引导记录将记录只包含扩展分区中每个逻辑驱动器的第一个柱面的第一面的信息,但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。

EBR结构:

   逻辑分区前扇区,如扩展分区0号扇区(512bytes)

前446bytes:未使用,全为0;

扩展分区表(64bytes):记录分区状态,每16bytes分为一个项,共四个项。

    第一项:指向它自身的引导扇区;

    第二项:指向下一个逻辑驱动器的EBR

        注:如果不存在进一步的逻辑驱动器,第二项不会使用,且被记录成一系列零。

    第三项:未使用

    第四项:未使用

结束标识(2bytes): 55AA ,有效性标识;55AA为有效

GPT分区:

  GPT:全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体磁盘的分区表的结构布局的标准。它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的一部分,被用于替代BIOS系统中的一32bits来存储逻辑块地址和大小信息的主引导记录(MBR)分区表。

  GPT分配64bits给逻辑块地址,因而使得最大分区大小在2-1个扇区成为了可能。对于每个扇区大小为512字节的磁盘,那意味着可以有9.4ZB(9.4 x 10字节)或8ZiB-512字节 

GPT分区结构:

wKioL1e_4-3BZHOsAAB-zSgLvRA902.jpg

LBA0:保护性MBR,

 在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR叫做保护性MBR(Protective MBR)。其中包含有磁盘签名,MBR分区表,结束标志。这里没有引导代码,分区表中只有一个分区表项,GPT不会用到,这个分区项只是为了让系统认为磁盘是合法的。

LBA1:主要GPT头部:

  主要GPT头部位于1号扇区,会定义分区表的起始位置,结束位置,分区表项个数;

分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。

LBA2-33:分区表项

  分区表位于GPT磁盘的2-33号扇区,一共占用32个扇区,能够容纳128个分区表项。每个分区表项大小为128字节。因为每个分区表项管理一个分区,所以GPT磁盘可以创建128个分区。

  GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。

LBA34:分区区域

   GPT分区区域就是用户使用的分区,也是用户进行数据存储的区域。分区区域的起始地址和结束地址由GPT头定义。

LBA -33~-2:分区表备份

  分区区域结束后就是分区表备份,其地址在GPT头备份扇区中有描述。分区表备份是对分区表32个扇区的完整备份。如果分区表被破坏,系统会自动读取分区表备份,也能够保证正常识别分区

LBA -1:GPT头备份

 GPT头有一个备份,放在GPT磁盘的最后一个扇区,但这个GPT头备份并非完全GPT头备份,某些参数有些不一样。复制的时候根据实际情况更改一下即可。

GPT分区优点:

   与目前普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。它具有如下优点:

1、支持2TB以上的大硬盘。

2、每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)。

3、分区大小几乎没有限制。

4、分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过

  另一份恢复;

5、循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;

6、虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区

  类型,这使分区类型更不容易冲突;

7、每个分区可以有一个名称(不同于卷标)。

原创文章,作者:Groot,如若转载,请注明出处:http://www.178linux.com/41620

(0)
GrootGroot
上一篇 2016-08-28
下一篇 2016-08-29

相关推荐

  • Week 1 Linux Intro

    I.  Linux的各种发行版 All Kinds of Linux     在Linux诞生的20多年里,Linux衍变出了许许多多的版本,每个都有自己的名字,但它们的本质和它们的哲学观还是一样的。下面是从外网上扒下来的一张Linux进化图,跨度一直到了2016年。    &n…

    Linux干货 2016-06-26
  • 命令组合实战

    1 列出/etc/下以。conf结尾的文件 [redsun@jiange root]$ ls  /etc/*.conf | tr 'a-z' 'A-Z'  | sed 's/ETC/etc/' > /tmp/etc.conf [redsun@jiange root]$ mo…

    Linux干货 2016-11-13
  • Python内置数据结构——集合set

    集合 定义 set翻译为集合 collection翻译为集合类型,是一个较大的概念 set是一个可变的、无序的、不重复的元素组成的集合 set的元素要求必须可以hash,目前已学的不可hash的类型只有list、set 元素不可以索引 set可以迭代 set的初始化 set_1 =set() #表示定义一个空集合set_1 set_1 =set(iterab…

    Linux干货 2017-10-03
  • 开机启动流程

    grub and boot Centos5,6的开机启动流程 grub Centos7的开机启动流程 Centos5,6的开机启动流程 initrd / initramfs 一般存储在/boot目录下,以.img为结尾的文件,是一个小型的根目录系统的映像文件,里面存放了各类系统必须的模组,为了解决内核在加载完成之后没有模组无法访问磁盘加载rootfs的问题。…

    Linux干货 2016-04-11
  • Nagios

    一、Nagios简介   Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。 Nagios原名为NetSaint,由Ethan Galstad开发并维护至今…

    2017-12-20
  • CentOS 6开机启动流程理论篇

    CentOS 6开机启动流程理论篇 centos 系统的启动流程 grub 破坏Linux的核心文件再修复体验系统启动流程 概述 任 何系统启动的第一步必然是加电,然后计算机硬件会主动地读取BIOS来加载硬件设备信息并检测,之后系统会主动地读取第一个有引导程序的设备,该引导程序 (grub)可以指定使用哪个内核来启动,并将其加载至内存当中运行,同时内核还要加…

    Linux干货 2016-09-19

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-29 13:43

    文章通过自己查阅资料对MBR和GPT,两种分区分方式进行了详细的讲解,但是这两种分区方式对我们来说进行了解即可,我们更应该把精力放在磁盘分区管理工具使用上,故希望作者能把握重点,有的放矢,切勿捡了芝麻丢了西瓜哦。