磁盘管理—MBR分区与GPT分区总结

描述:

1,什么是磁盘分区

  磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分,盘片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。

2,硬盘结构及参数

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

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

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

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

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

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

3,分区方式:

  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个逻辑分区)}

wKiom1fCW3eQSWgQAAB7LMNjdHI030.png

常用分区方式:

wKioL1fCWsDxxA5pAAAWvlfJ4i4846.gif

wKiom1fCWsCR3OvoAAALt0VRUH0715.png

wKiom1fCWsDhHnt9AAATHuj2jyU711.gif

wKioL1fCWsDzrB0KAAAJbN55DFM065.png

MBR引导扇区结构

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

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

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

        16bytes: 标识一个分区,一共只能分4个分区(主+扩展)

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

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

分区结构:

wKioL1fCXCbDX6yxAAA24T_n8bI531.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字节 

wKioL1fCXMSChsIVAAB-zxRPcMc149.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、每个分区可以有一个名称(不同于卷标)。


总结:

1,对于新的磁盘进行分区,最多只能划分4个主分区(三主+1扩展),分区号1-4是留给主分区的,分区号5,6,7…是留给逻辑分区的,若主分区不足4个,逻辑分区的编号也是从5开始

wKiom1fCaoCBMKEsAAAO0Ia5Ylk151.png

wKioL1fCaoHBL9sBAAAVxsc6v0s584.png

wKioL1fCaoHQo7xxAAAjkgTI1-M252.png

2,使用lsblk可以查看当前系统所有的磁盘分区情况

3,在不关机情况下实现添加新磁盘并显示在系统中的步骤:

  a,扫描磁盘,在命令行中输入如下命令

    echo "- – -" > /sys/class/scsi_host/host2/scan 

  b,查看系统磁盘情况

   # lsblk 

  c,查看分区

   # fdisk -l /dev/sd[a-z]

  d,查看mbr

   # hexdump  -C -n 512 /dev/sd[a-z]

  e,备份mbr (以/dev/sda为例,目录已事先存在,if是“in filesystem”,of是“of filesystem”,bs是“block size”,count是总数

   dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512

  f,查看是否备份成功

   hexdump  -C -v /testdir/mbrbak 

  g,恢复mbr (恢复至新添加的磁盘/dev/sdd的主引导分区)

   dd if=/testdir/mbrbak of=/dev/sdd 

  h,查看/dev/sdd的主引导分区

   fdisk /dev/sdd -l

4,破坏boot loader之后的恢复 (先备份在/testdir/mbrbak目录下)

  a,查看磁盘分区标识:

   hexdump  -C -n 512 /dev/sdd

  b,破坏boot loader

   dd if=/dev/zero of=/dev/sdd bs=1 count=446

   hexdump  -C -v -n 512 /dev/sdd

  c,清除分区标识

   dd if=/dev/zero of=/dev/sdd bs=1 count=2 skip=510 seek=510 

   hexdump  -C -v -n 512 /dev/sdd

   fdisk -l /dev/sdd

  d,恢复分区标识

   dd if=/testdir/mbrbak  of=/dev/sdd bs=1 count=2 skip=510 seek=510

  e,恢复分区表

   dd if=/dev/zero  of=/dev/sdd bs=1 count=64 skip=446  seek=446

   hexdump  -C -v -n 512 /dev/sdd

5,查看磁盘分区表

 fdisk -l 

6,查看内核中的分区表

 cat /proc/partitions

 lsblk

 ls /dev/sd*

7,centos6中如何在新增和删除分区后同步显示分区表

  增加分区,同步分区表

   partx -a /dev/sda

  删除分区,同步分区表

   partx -d –nr 6-8 /dev/sda

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

(3)
pingskypingsky
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • php 配置

      php php不能单独使用都是与httpd结合使用 结合的方式主要是两种一种为模块方式服务于httpd,一种为单独服务方式服务httpd 两种方式不能共存 安装软件包也不相同 网上有官方中文手册 http://php.net/download-docs.php php对中文的支持需要安装php-mbstring php对mysql的支持需要安装…

    Linux干货 2016-11-01
  • RAID概述

    1、引言 RAID全称Redundant Arrays of Inexpensive Disks / Redundant Arrays of Independent Disks,即独立冗余磁盘阵列。RAID可以通过相关技术(软件/硬件),将多个较小的磁盘整合成为一个较大的磁盘整体,而且能从某些方面提高数据的读写及数据保护。RAID分为不同…

    Linux干货 2016-12-24
  • 马哥教育网络班22期第一周课程练习1-未闻花名

    一、cpu架构 计算机体系结构: 运算器、控制器(cpu还包含寄存器)、存储器(内存)、输入设备(键盘、硬盘等)、输出设备(显示器、硬盘等) cpu组成: 核心部件:运算器(加法器)、控制器()、寄存器(由于数据总线复用,为cpu保存现场,过程数据记录)。 辅助部件:一、二、三级缓存:弥合CPU和内存速率不匹配。频率控制器? 地址总线:内存寻址。 数据总线:…

    Linux干货 2016-08-15
  • rsyslog+mysql+loganalyzer配置

    rsyslog+mysql+loganalyzer 自定义日志存储的信道(facility)和存储位置,让rsyslog作为服务端记录rsyslog客户端的日志信息 环境介绍 以centos 7.2为系统环境 内部已装有mariadb、 一、准备工作 1、 安装rsyslog连接至mysql server的驱动模块;   # y…

    Linux干货 2016-10-21
  • linux发展史-

    前言: 人类文明的进步伴随着战争,战争留下的产物也是非常伟大的。 最初用于战争的通电钢铁,如今以进入人们生活。 而它的附带产物如今也是变得妙不可言。 本文简要说明操作系统的发展过程,以及该大树下一些分支。         简 述   Linux是诞生与UNIX下的一款操系统,有着安全稳定的文件系统,…

    Linux干货 2016-10-19
  • web服务介绍(三)

    状态码分类:1xx:100-101  额外信息提示2xx:200-206  表示成功类响应3xx:300-305  重定向4xx:400-415  错误类响应码,由于客户端发送错误,如客户端请求一个根本不存在的资源5xx:500-505  错误类信息,服务器端错误,服务器本身一些问题导致请求无法成功 常用状态…

    Linux干货 2017-04-22