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 13:55
下一篇 2016-08-30 13:55

相关推荐

  • N25 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [jizo@jizo ~]$ who | cut -d" " -f1 | uniq jizo  2、取出最后登录到当前系统的用户的相关信息。 [root@jizo ~]# who | tail -l jizo     …

    Linux干货 2016-12-18
  • corosync + pacemaker + iscsi实现高可用mysql (下)

    上一篇讲的安装配置iscsi,本章介绍mariadb安装以及高可用的mysql具体实现 一、安装配置mariadb [root@SQL1 ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz  -C /usr/local \\解压软件包 [r…

    Linux干货 2015-07-09
  • 帮助和文件管理信息

    history命令: -c 清空命令历史 -d offset 删除历史中指定的第offset个命令 n 显示最近的n条历史 -a 追加本次会话新执行的命令历史列表至历史文件 -n 读历史文件中未读过的行到历史列表 -r 读历史文件附加到历史列表 -w 保存历史列表到指定的历史文件 -p 展开历史参数成多行,但不存在历史列表中 -s 展开历史参数马一行。附加在…

    Linux干货 2017-04-11
  • linux 入门基础

    Linux概念部分: 1.CPU是Central Processing Unit的缩写,即中央处理器。由控制器和运算器组成,是计算机系统种最要组成部分。2.内存是介于CPU和外部存储之间,是CPU对外部存储中成粗与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它飞物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路。3.内存是CPU能直接…

    Linux干货 2017-09-03
  • sed大法好

    sed sed概念 (1)基本概念:sed是流编辑器(stream editor),A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).作用就是对输入的流(文件或者从一个管道输入的流…

    Linux干货 2016-12-02
  • VSFTPD+PAM+[基于文件虚拟用户认证 | 基于MYSQL虚拟用户认证]

    VSFTPD+PAM+[基于文件虚拟用户认证 | 基于MYSQL虚拟用户认证] VSFTPD+PAM+[基于文件虚拟用户认证 | 基于MYSQL虚拟用户认证] 一、实验环境 二、实验步骤 1、通过mysql数据库方式虚拟用户认证 1.1数据库配置 1.2FTP配置 1.3测试 2、通过文件方式进行虚拟用户认证 一、实验环境 CentOS 6.7+vsftpd…

    Linux干货 2016-04-18