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分区的模式如下:

转载于:https://blog.51cto.com/haohu/1704048

浅议磁盘分区——从MBR到GPT相关推荐

  1. Windows中的磁盘分区、MBR、GPT

    Windows中的磁盘分区: 1.分为主分区,扩展分区.其中拓展分区又包含若干个逻辑分区: 注意:如果拓展分区被删除或者破坏,则所有逻辑分区将会被删除. 2.分区时注意磁盘的连续性,建议将拓展分区放在 ...

  2. Linux 磁盘分区(MBR和GPT,loop详细分区方法介绍)

    磁盘分区和格式化操作是比较接近硬件底层的操作,这两个操作也是至关重要的,决定了磁盘的使用效率和磁盘的数据安全.(相信现在应该没有什么特别的需要,一般都已经抛弃了ext2,ext4文件格式了吧~~~~, ...

  3. 磁盘分区方式——MBR与GPT之学习笔记

    大数据时代,硬盘作为数据存储工具,是生产生活中必不可少的工具.在数据日益繁多的情况下,如何让对数据进行有效管理变得愈发重要.磁盘分区,是对数据进行有效管理的重要手段之一. 磁盘分区,就是使用分区编辑器 ...

  4. 磁盘分区形式mbr和gpt哪个好_济南历下区中考美术集训应该选哪个

    济南历下区中考美术集训应该选哪个 中考美术生除了平时在画室跟随老师学习,也可以利用零碎的时间画一些小画稿进行自我训练."台上一分钟,台下十年功",好成绩和大量的练习分不开.只有平时 ...

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

    一.硬盘 硬盘的功能相当简单但很重要,它负责记录系统所需要的各种数据.硬盘记录数据有两个方面,一个是硬件方面的存储原理和结构,另外一方面则是软件方面的数据和文件系统.硬盘的主要行为就是数据的存放和取出 ...

  6. 磁盘分区格式(MBR分区和GPT分区)和启动引导模式(Legacy和UEFI)的关系

    文章目录 1. 专业名词概览 2. 磁盘分区格式:MBR分区和GPT分区 2.1 简介 2.2 区别 3. 启动引导模式:Legacy BIOS和UEFI BIOS 3.1 Legacy BIOS的启 ...

  7. 两种磁盘分区形式MBR(只支持4个主分区)和GPT

    两种磁盘分区形式MBR(只支持4个主分区)和GPT: MBR: master boot record(主引导记录),存在于驱动器开始部分的特殊启动扇区,是存在于驱动器开始部分的一个特殊启动扇区,包括已 ...

  8. Linux 学习手记(6): 磁盘、分区、MBR与GPT

    1. 磁盘在LINUX中的表示 Linux所有设备都被抽象为一个文件,保存在/dev目录下 设备名称一般为hd[a-z]或者sd[a-z]([a-z]为分区号),如:hda.hdb.sda.sdb I ...

  9. linux mbr 分区表修复,磁盘分区中MBR的模拟损坏及修复

    目前对于硬盘的分区方式有两种:MBR和GPT.本文只是为了介绍分区中的MBR的备份和恢复,所以不对GPT分区做过多的介绍. 我们先来对MBR的分区方式进行一个简单的介绍: 上图说明: 采用MBR分区的 ...

  10. Linux 磁盘管理-分区管理-磁盘分区【gdisk】gpt分区工具使用介绍

    gdisk -l [设备] gdisk又叫GPT fdisk,算是fdisk的延伸吧,主要使用的是GPT分区类型,用来划分容量大于2T的硬盘. 扩展1:分区类型GPT和MBR.GPT最大支持18EB( ...

最新文章

  1. JackJson 使用记录
  2. vsftp锁定用户在家目录
  3. Samba的主配置文件
  4. Android init.rc文件解析过程详解(二)
  5. 解决Eclipse查看源代码出现Source not found的问题
  6. 这 31 条,或给你的数据分析工作一些启发
  7. Jekyll报'Tag was never closed'错误
  8. 电话光端机技术参数配置介绍
  9. 华为交换机S3700-TELNET远程管理交换机配置
  10. Google Wave 的失败给现代实时协作办公的一个重大教训!
  11. python有三个包如何只导入两个包_云计算开发学习笔记:Python3如何从一个包中导入*...
  12. jQuery 学习-样式篇(四):jQuery 设置和删除元素的属性
  13. 私网互联(本质是三层路由)
  14. 【Java教程】Java 适配器模式
  15. 用swaks进行发件人伪造
  16. modelsim与quartus仿真的区别
  17. 开发流程与管理--华为硬件开发
  18. 俞扬 新书_哇,太好了...新书
  19. 计算机软件后缀名,如何显示文件后缀名
  20. n维线性空间上的几何:直线与平面的方程

热门文章

  1. UE中使用正则表达式的一些技巧
  2. 写给对前途迷茫的朋友:五句话定会改变你的人生
  3. iOS/Android React Native 配置教程
  4. BZOJ1001 狼抓兔子(网络流转最短路:对偶图)
  5. 【学习】013 Servlet、Cookie、Session的简述
  6. 进行简单的四则运算(限制:小学水平)
  7. 生活过得很苦 不知道什么时候才能解脱
  8. 了解一个百万级 PHP 网站的架构
  9. MVC(Model/View/Controller,模型/视图/控制)
  10. 包邮送50本数据分析,MySQL,Python相关书籍