浅议磁盘分区——从MBR到GPT

diskpart这个命令,用了很多年了。

作为曾经SCCM的老手,至今还记得在System Center Configuration Manager的OSD(操作系统部署)中,为了实现单一镜像单一序列部署到不同的计算机硬件,去编写提供不同的磁盘分区的脚本。

这是由于不同厂商OEM提供Windows时,往往在磁盘上划分了保留分区以存放恢复镜像。如果企业或机构中存在非在线恢复系统的需求,那么可以把OSD产生的镜像WIM保存到保留的恢复分区,以供需要时进行系统的回复。

另外,对于一个生产环境,用户往往希望保留自己的数据分区而只恢复系统分区。在这个情况下,规范分区并且在OSD的任务序列中进行识别和处理就显得非常的重要了。

在以前很长的一段时间里,对磁盘分区的了解满足主分区、扩展分区、活动分区和MBR(主引导记录)就能大致满足日常需求了。在PC/AT时代,BIOS会去寻找磁盘上的激活的引导分区,然后根据之上的引导扇区的信息,加载SYS或者bootmgr之类的引导控制程序,引导进入操作系统。

还记得用16进制磁盘编辑器查看分区表,能够看到活动分区的0x80标记么?还记得查看引导扇区,最后两个双字节为0x55 0xAA么?这里有几篇文章可以帮助回忆:

Why 55 AA is used as the boot signature on IBM PCs?

http://stackoverflow.com/questions/11075003/why-55-aa-is-used-as-the-boot-signature-on-ibm-pcs

The PC/AT boot process

http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/pcat-boot-process.html#Active

可是技术不会停留,为了适应新的需求,例如为了超越2TB磁盘的限制,GPT磁盘分区出现了。相应的,磁盘类型ID也从以前的一个双字节变成了GUID。

之所以想起来了解这个问题,是因为我干掉了机器出场自带的恢复分区。所以顺便了解下GPT分区。

如何创建、删除分区,一搜一堆,不在这篇的讨论范围内。主要想看看分区类型。在删除恢复分区的时候,通过diskpart detail partition命令,能看到我的SSD上有这些类型的分区。

除了熟悉的分区/卷的信息,主要有两个信息是我想了解的,一个是分区类型,因为使用GPT磁盘,都显示为GUID了;一个是属性。

使用diskpart setid命令可以修改分区类型,当然也可以查看。


DISKPART> help setid

为带焦点的分区更改分区类型字段。

语法:  SET ID={<BYTE> | <GUID>} [OVERRIDE] [NOERR]

ID={<BYTE> | <GUID>}

指定新分区类型。

对于主启动记录(MBR)磁盘,可以采用十六进制形式
                为分区指定分区类型字节。可以使用此参数指定任何
                分区类型字节,类型 0x42 (LDM 分区)除外。请注意,
                指定十六进制分区类型时,会忽略前导的 "0x"。

对于 GUID 分区表(GPT)磁盘,可以为分区指定
                分区类型 GUID。已识别的 GUID 包括:

EFI 系统分区:
                        c12a7328-f81f-11d2-ba4b-00a0c93ec93b

基本数据分区:
                        ebd0a0a2-b9e5-4433-87c0-68b6b72699c7

可以使用此参数指定任何分区类型 GUID,
                以下几种类型除外:

Microsoft 保留分区:
                        e3c9e316-0b5c-4db8-817d-f92df00215ae

动态磁盘上的 LDM 元数据分区:
                        5808c8aa-7e8f-42e0-85d2-e1e90434cfb3

动态磁盘上的 LDM 数据分区:
                        af9b60a0-1431-4f62-bc68-3311714a69ad

群集元数据分区:
                        db97dba9-0840-4bae-97f0-ffb9a327c7e1

除提及的限制之外,DiskPart 不会检查
                分区类型是否有效,只是确保该分区类型
                是十六进制形式的字节或 GUID。

OVERRIDE    启用 DiskPart 能够强制首先卸载卷上的文件系统,
                然后再更改分区类型。更改分区类型时,DiskPart
                将尝试锁定和卸载卷上的文件系统。如果未指定
                此参数,并且锁定文件系统的调用失败(因为某些
                其他应用程序具有卷的打开句柄),则整个操作将
                失败。指定此参数时,将强制执行卸载,
                即使锁定文件系统的调用失败也是如此。卸载文件系统后,
                卷的所有打开句柄都将无效。

NOERR       仅用于脚本。遇到错误时,DiskPart 会继续
                处理命令,如同没有出现错误一样。如果
                不使用 NOERR 参数,错误会导致 DiskPart
                退出,并返回错误代码。

仅供原始设备制造商(OEM)使用。

必须选择一个分区才能成功执行此操作。

警告:

使用此参数更改分区类型字段可能会导致计算机发生故障
        或无法启动。除非你是 OEM 或熟悉 GPT 磁盘的
        IT 专业人员,否则不要使用此参数更改 GPT 磁盘上
        的分区类型字段。不过,始终可以在 GPT 磁盘上使用
        CREATE PARTITION EFI 命令创建 EFI 系统分区,使用
        CREATE PARTITION MSR 命令创建 Microsoft 保留分区
        以及使用不带 ID 参数的 CREATE PARTITION PRIMARY
        命令在 GPT 磁盘上创建主分区。

此命令在动态磁盘或 Microsoft 保留分区上无法使用。

示例:

SET ID=07 OVERRIDE
    SET ID=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7

这里有一篇比较完整的介绍:https://technet.microsoft.com/en-us/library/cc771243.aspx

我注意到帮助没有说明我的OEM分区,于是搜索。

原来这是个用于实现Intel Rapid Start Technology的分区,文档参见:http://download.intel.com/support/motherboards/desktop/sb/rapid_start_technology_user_guide_for_uefi1.pdf

那么,分区属性又是怎么回事呢?使用diskpart gpt命令可以获得分区属性。


DISKPART> help gpt

在基本 GUID 分区表(GPT)磁盘上,将 GPT 属性分配给带焦点的分区。

语法:  GPT ATTRIBUTES=<N>

ATTRIBUTES=<N>

表示可应用于带焦点的分区的属性的十六进制值。GPT 属性字段
                是一个 64 位字段,该字段包含两个子字段。高位字段只有在特
                定分区类型 GUID 的环境中才进行解释,而低位字段则是所有分
                区类型公用的字段。

可以在所有分区上设置以下属性:

0x0000000000000001 将该分区标记为必需分区。这向所有的磁
                盘管理实用工具表明该分区不应被删除。EFI 系统分区仅包含
                启动操作系统所需的二进制数据。这样可以轻松地将原始设备制造
                商(OEM)或操作系统特定的二进制数据放置在其他分区中。

对于基本数据分区,定义了以下属性:

0x8000000000000000
                GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER
                防止为分区自动分配驱动器号。默认情况下,会为每个分区分配
                一个新驱动器号和卷 GUID 路径名。驱动器号和卷 GUID 路径名
                都可用于打开使用 Win32 API 的卷。设置此属性可确保在将磁盘
                移动到新计算机上时,系统不会自动生成新的驱动器号。而用户可
                以手动分配驱动器号。

0x4000000000000000
                GPT_BASIC_DATA_ATTRIBUTE_HIDDEN
                将分区的卷定义为隐藏。
                设置此属性可指定不会为卷分配驱动器号或卷 GUID 路径名。
                驱动器号和卷 GUID 路径名都可用于打开使用 Win32 API 的卷。
                Win32 API 不会报告隐藏分区的卷,例如 FindFirstVolume 和
                FindNextVolume。

0x2000000000000000
                GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY
                将分区定义为卷快照服务卷影副本卷。文件系统筛选器使用此标志
                阻止筛选器附加到卷中。

x1000000000000000
                GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY
                阻止写入卷。

Microsoft 可能会随时添加其他属性。

GPT 分区属性提供有关该分区使用情况的附加信息。

必须选择一个基本 GPT 分区才能继续执行此操作。

警告:

更改 GPT 属性可能会导致无法为基本数据卷分配驱动器号,或阻止装载文件
        系统。除非你是原始设备制造商(OEM)或熟悉 GPT 磁盘的 IT 专业人士,否则
        请勿更改 GPT 属性。

示例:

GPT ATTRIBUTES=0x8000000000000000
    GPT ATTRIBUTES=0xF000000000000001

对照detail partition命令获得的分区属性,能够发现有这么几种:

0x0000000000000000;0X8000000000000000;0X8000000000000001

这样一来,磁盘管理器中分区不能操作就很好理解了。

0x0000000000000000是标准的数据分区,系统会自动分配盘符,也能够正常的通过磁盘管理器进行操作管理;

0X8000000000000000系统不会分配盘符,这样磁盘挂载到其他操作系统时不会出现不需要的盘符。但在需要的时候可以进行操作;

0X8000000000000001除了以上属性之外,还叠加了防止删除分区的属性。

对于GPT磁盘以及相应的GUID等介绍,不论TechNet还是MSDN都有专门的文章。

Frequently asked questions about the GUID Partitioning Table disk architecture

https://support.microsoft.com/en-us/kb/302873

Windows and GPT FAQ

https://msdn.microsoft.com/en-us/library/windows/hardware/dn640535(v=vs.85).aspx

还记得安装Windows的时候,自动多出来的两个分区吗?一个叫引导分区,一个叫保留分区,都是干啥用的呢?

查一下前面的GUID,引导分区其实就是一个EFI分区,也可以简称ESP。这个分区通常保存引导需要的文件,例如bootmgr等。单独做出来一个分区的好处是系统运行时,病毒和恶意代码一般无法影响这个分区。

而保留分区,全称是Microsoft Reserved partition。安装Windows的GPT分区磁盘一定会有这个分区。这个分区有什么作用呢?例如,基本磁盘转化成动态磁盘,这个分区的数据就可以转为LDM动态卷的数据库。

为了验证系统EFI分区,上图显示了我使用提升的System账户查看了挂载的这个分区的内容。

关于分区还有一篇极好的介绍文章:

https://technet.microsoft.com/en-us/library/dd799232%28v=ws.10%29.aspx

传统MBR分区的模式如下:

GPT分区的模式如下:

时间: 2024-11-25 12:38:02

浅议磁盘分区——从MBR到GPT的相关文章

Linux 入门记录:六、Linux 硬件相关概念(硬盘、磁盘、磁道、柱面、磁头、扇区、分区、MBR、GPT)

一.硬盘 硬盘的功能相当简单但很重要,它负责记录系统所需要的各种数据.硬盘记录数据有两个方面,一个是硬件方面的存储原理和结构,另外一方面则是软件方面的数据和文件系统.硬盘的主要行为就是数据的存放和取出. 构成硬盘的基本元件,主要可以分为实际存储数据用的磁盘(Plat Platter).读取数据用的磁头(Head).帮助磁头搜寻读取位置的马达等等,这些元件构成一个能够在不同磁盘上的任意位置读取数据的结构体. 二.磁盘(Plat Platter) 磁盘是硬盘中真正用来存储信息的部分,外观上如同圆盘一

磁盘分区中MBR的模拟损坏及修复

目前对于硬盘的分区方式有两种:MBR和GPT.本文只是为了介绍分区中的MBR的备份和恢复,所以不对GPT分区做过多的介绍. 我们先来对MBR的分区方式进行一个简单的介绍: 上图说明: 采用MBR分区的硬盘中一共有四个分区:扩展分区最多有一个,如果不需要再分逻辑分区,可以没有扩展分区. 我们都知道磁盘上有一个个的磁道,每个磁道上有很多的扇区,从磁盘的外围向内,从0开始逐渐增加磁道编号,每次磁道中的扇区也是从0开始进行编号,而MBR这个数据块就位于0磁道0扇区.每个扇区的大小为512字节,所以磁盘上

MBR与GPT分区的区别及磁盘分区相关命令

一.MBR分区结构 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是目前比较流行的一种分区结构.磁盘的0磁道0扇区称为MBR,它的大小是512字节,这个区域被分为三个部分: 第一部分为boot loader(主引导程序),占446字节: 第二部分为Partition table(分区表),即DPT,占64字节,每个分区项占用16个字节,这16个字节中存有活动状态标志.文件系统标识.起止柱面号.磁头号.扇区号.隐含扇区数目(4个字节).分区总扇区数目(4个字节

关于硬盘分区管理mbr gpt

硬盘管理 一:硬盘基础概念 硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等.每个盘片有两面,都可记录信息.盘片被分成许多扇形的区 域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息 盘片表 面上以盘片中心为圆心,不同半径的同心圆称为磁道.硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面.磁道与柱面都是表示不同半径的圆,在许多场合, 磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区

Linux系统下磁盘分区与管理

磁盘分区与管理 1.Linux系统设备文件 crw-rw----. 1 root root    253,  0 Apr 18 15:31 rtc0   #字符文件 lrwxrwxrwx. 1 root root           3 Apr 18 15:31 scd0 -> sr0 brw-rw----. 1 root disk      8,  0 Apr 18 15:31 sda    #设备文件 brw-rw----. 1 root disk      8,  1 Apr 18 15:

MBR、GPT的结构和区别

本章学习内容         --------介绍MBR.GPT         --------不同的启动流程         --------分区结构         --------分区差异   一.介绍MBR.GPT MBR(Master Boot Record)主引导记录和GUID(GUID Partition Table,简写为GPT)全局唯一标识分区列表是磁盘的俩种的分区方式,它们各自占据了从磁盘的0磁道0扇区开始的不同的字节数大小,这俩种不同分区方式也决定了磁盘的各种特性,是计算

RHEL7.X系列及周边Linux发行版中,关于MBR与GPT的选择一些思考与建议

一.引言 存储的选型.规划与管理等工作一直以来都是日常系统运维工作中的重点.MBR与GPT两种类型的分区表的选择与使用则是在磁盘管理中需要根据应用场景来注或考虑的要点.结合笔者多年的运维工作经验,引发了对这些问题的一些思考,借此文进行一些分享. 二.相关知识点 2.1 MBR 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1).在深入讨论主引导扇区内部结构的

Linux系统磁盘分区及挂载 - fdisk

Linux系统磁盘分区及挂载 - fdisk 文本关键字:文件系统,磁盘分区,格式化,挂载 一.文件系统 1. 文件系统的作用 当我们拿到一块新的硬盘时,他所能够支持的最大空间只是代表硬件上的一个参数,我们要想让他能够正常的工作起来,必须要有相应的文件系统.文件系统决定了文件存储和管理时的方式和数据结构,也就是如何管理磁盘上的文件和文件夹.不同的文件系统拥有不同的特点,这也就是为什么我们在进行格式化操作必须要选定一种文件系统的原因.当在一个操作系统(Windows.Linux.MacOS)中使用

linux 磁盘 分区 MBR GPT

磁盘:由许多盘片,机械手臂,磁头和主轴马达所构成的,实际的数据都是写入盘片上面,而读写主要是通过机械手臂可伸展让磁头在盘片(在主轴马达的转动左右下,盘片跟着转动)上面进行读写操作.由于单一盘片写入数据量有限,所以存在多个盘片. 磁盘的转速: 5400转/s 7200转/s 转速越快,单位时间内磁头划过的距离越长,写入的数据更多,同样,发热量更高. 扇区.磁道.柱面 head 在盘片上划过痕迹就是磁道,多个盘片垂直方向上的磁道构成了柱面. 磁盘的最小单位是扇区,每个扇区大小为512bytes.