MBR&GPT分区基本原理

1、磁盘系统为什么要分区?

    •     优化I/O性能

    •     实现磁盘空间配额限制

          •     提高修复速度

          •     隔离系统和程序

   •     安装多个OS


2、目前计算机磁盘流行的两种分区方式:MBRGPT


3、MBR分区原理

   MBR: Master Boot Record, 1982年, 使用32位表示扇区数, 分区不超过2T

如何分区:按柱面
     0磁道0扇区: 512bytes
                446bytes: boot loader主引导分区,可以安装引导加载程序的地方
                64bytes:分区表,记录整块硬盘分区状态
        其中16bytes: 标识一个分区
                2bytes: 55AA

1.png

2.png

由于分区表只有64字节,因此最多容纳4个分区,这四个分区我们称为主或扩展分区。根据上面的图示和说明,我们知道:

a、主分区和扩展分区最多只能有四个(硬盘的限制)

b、扩展分区最多只能有一个

c、逻辑分区是由扩展分区持续切割出来的分区

d、能够被格式化后做数据访问的分区是主分区与逻辑分区,扩展分区是无法格式化的



4、GPT分区原理

GPT:GUID patition table 支持128个分区,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block)
 使用128位UUID 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
 UEFI (统一扩展固件接口)硬件支持GPT

3.png


    EFI部分又可以分为4个区域: EFI信息区(GPT头)、分区表、 GPT分区、备份区域

    在MBR硬盘中,分区信息直接存储主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。

跟现代的MBR一样,GPT也使用逻辑区块地址(LBA)取代了早期的CHS寻址方式。传统MBR信息存储于LBA 0,GPT头存储于LBA 1,接下来才是分区表本身。64位Windows操作系统使用16,384字节(或32扇区)作为GPT分区表,接下来的LBA 34是硬盘上第一个分区的开始。

    为了减少分区表损坏的风险,GPT在硬盘最后保存了一份分区表的副本。总的来说,GPT都将修复 MBR 的许多限制:

  • (1)GPT只使用LBA,因此,CHS问题就不复存在。

  • (2)磁盘指针的大小为64位,假设512字节扇区,这意味着GPT可以处理的磁盘大小最高达512 x 264字节(8zebibytes,即86亿TiB)。

  • (3)GPT数据结构在磁盘上存储两次:开始和结束各一次。在因事故或坏扇区导致损坏的情况下,这种重复提高了成功恢复的几率。

  • (4)循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率。

  • (5)GPT将所有分区存储在单个分区表中(带有备份),因此扩展分区或逻辑分区没有存在的必要。GPT默认支持128个分区,当然您也可以更改分区表的大小,如果您的分区软件支持这种更改的话。

  • (6)虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型。这使分区类型更不容易冲突。

  • (7)GPT支持存储人类可读的分区名称。您可以使用这个字段来命名您的Linux /home、/usr、/var和其他分区,以便它们在分区软件中更容易识别。


LBA 0

    在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR也叫做保护性MBR。

    保护性MBR保护GPT磁盘不受以前发布的MBR磁盘工具(比如FDISK或WindowsNT磁盘管理器)的危害。这些工具不能感知GPT,也无法正确地访问GPT磁盘。不能识别GPT的旧软件在访问GPT磁盘时只解释保护性MBR。这些工具通过解释保护性MBR,将GPT磁盘看成一个封装的(可能无法识别)分区,而不是错误地当成一个未分区的磁盘,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。例如,当在32位的Windows XP系统中挂载GPT磁盘时,会将其识别为“GPT 保护分区(GPT Protective Partition)”,并且用户无法对这个分区进行任何操作(除非使用命令行工具),这是因为32位的Windows XP并不支持GPT,它仅仅只是知道挂载的是一个GPT磁盘而已。

    在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。

LBA 1

    分区表头(LBA 1)定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)

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

LBA 2–33

    LBA 2–33的位置存放的是分区表项。GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。

 

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

(2)
AndyIvanXueAndyIvanXue
上一篇 2016-08-30
下一篇 2016-08-30

相关推荐

  • php-fpm

    1.安装 mariadb 服务 修改配置文件 2.musql 安全加强 3.安装 php-fpm php-mysql php-mbstring php-mcrypt 服务 修改配置文件 4.安装httpd服务 加虚拟主机配置文件 5.测试php网页 6.安装myadmin包及测试

    2017-06-07
  • 谷歌三大核心技术(一)The Google File System中文版

    摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。 虽然GFS的设计目标与许多传统的分布式文件系统有很多相同之处,但是,我们的设计还是以我们对自己的应用的负载情况和技术环境的分析为基础的,不管现在还是…

    Linux干货 2015-04-13
  • linux中的vim

    什么是vim:     Linux 在命令行下的文本编辑器,很多个别软件的编辑接口都会主动调用vim,所以在 Linux 的系统中使用文字编辑器来编辑你的Linux参数配置文件,在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设置.所有的Unix L…

    Linux干货 2016-08-11
  • linux高级文件系统管理

    磁盘配额:         (1)如果存放的文件空间不足,虽然分区后不能直接扩容,但是可以迁移,下面以/home目录示例: 1、新建分区,同步分区表 /dev/sda62、mkfs.ext4 /dev/sda6             &n…

    Linux干货 2017-03-14
  • 简述计算机网络数据链路层

    数据链路层    数据链路层是什么?      数据链路层工作在七层网络模型的第二层,它定义了在单个链路上如何传输数据。 数据链路层:是为了提供功能上和规程上的方法,以便建立、维护和释放网络实体间的数据链路 。 物理链路(物理线路):是由传输介质与设备组成的。原始的物理传输线路是指没有采用高层差错控…

    Linux干货 2017-05-15
  • linux 学习笔记

    第一周

    Linux干货 2018-03-16