DiskPart使用说明

Diskpart 与许多命令行实用工具不同,原因是它不以单行模式操作。相反,当您启动该实用工具后,命令是从标准输入/输出 (I/O) 读取的。您可以将这些命令定向到任何磁盘、分区或卷。

与磁盘管理的比较

Diskpart 启用“磁盘管理”管理单元所支持的操作的超集。“磁盘管理”管理单元禁止您无意中执行可能会导致数据丢失的操作。建议您应谨慎使用 Diskpart 实用工具,因为 Diskpart 支持显式控制分区和卷。

可以使用 Diskpart 将基本磁盘转换为动态磁盘。基本磁盘可以为空,也可以包含主分区或逻辑驱动器。基本磁盘可以是数据磁盘、系统驱动器或启动驱动器。基本磁盘不能包含容错磁盘驱动程序 (FtDisk) 集,如带区或镜像等。要转换包含有 FtDisk 驱动程序集的基本磁盘,请使用 Windows 2000 上的“磁盘管理”,或者在升级到 Windows XP 之前转换磁盘。

可以使用 Diskpart 将动态磁盘转换为基本磁盘。进行转换前,必须删除所有动态卷。除非遇到紧急情况,否则不建议您删除动态磁盘上的分区。建议您删除驱动器上的所有卷,然后再将磁盘转换为基本磁盘。必须删除所有动态数据分区。另外,切勿混淆同一驱动器上的基本主分区和动态分区。否则,计算机可能无法重新启动。

您可以使用 Diskpart 以显式磁盘偏移量创建一个分区。“磁盘管理”管理单元将此分区放在任何占用区域的末端,或放在第一个足够大的区域上。在主启动记录 (MBR) 磁盘上,分区偏移量和大小都经过四舍五入,以保持必要的柱面对齐。偏移量四舍五入为最靠近的有效值,大小则始终四舍五入为下一个有效值。Diskpart 不为最近创建的分区分配驱动器号。使用 assign 命令可分配装入点或驱动器号。

Diskpart 遵循与管理单元同样的策略。只能在固定磁盘上创建动态磁盘。不能将可移动磁盘(如 1394 或通用串行总线 (USB) 驱动器)转换为动态磁盘。

Diskpart 允许执行管理单元禁止的某些分区删除操作。例如,您可以使用 Diskpart 删除 MBR OEM 分区。但是,这些分区中往往含有平台操作所必需的文件。Diskpart 禁止删除当前系统、启动或分页卷和分区。此外,Diskpart 还禁止删除作为动态磁盘基础的分区。

不能使用 Diskpart 在可移动媒体上创建分区。Windows 支持可移动媒体上至多有一个 MBR 分区。如果媒体在出厂时已带有一个 MBR,此 MBR 是不能修改的;但是,即使配置了多个分区或逻辑驱动器,仍然遵循此 MBR。如果媒体在出厂时不带 MBR,此媒体被视为“超级软盘”并且其中未写入分区结构。

可移动驱动器的驱动器号与驱动器关联,但不与媒体关联。您可以使用 Diskpart 更改此驱动器号。

Diskpart 导致产生了磁盘签名、GUID 分区表 (GPT) 磁盘全局唯一标识符 (GUID) 和 GPT 分区 GUID。不能使用 Diskpart 来显式设置这些项。

同管理单元一样,Diskpart 实用工具包括对新 Itanium 磁盘分区方案的支持,该方案称为 GPT。GPT 磁盘不能用于任何基于 x86 的 Windows XP 计算机或 Windows 2000 计算机。Diskpart 仅对空磁盘支持 GPT 分区向 MBR 分区的转换。

您可以使用 Diskpart 删除缺失的动态磁盘。动态磁盘包含共享数据库,一台计算机上的所有动态磁盘都识别此计算机上的所有其他动态磁盘。移动动态磁盘时,原始计算机将这些磁盘视为“缺失的”。

使用 Diskpart 时,驱动器号不能自动分配。要确保给定的分区或卷有驱动器号,必须显式地分配一个驱动器号。您可以分配此驱动器号,也可以允许分配下一个可用驱动器号。

设置焦点

大多数 Diskpart 命令适用于特定目标磁盘、分区或卷。目标对象具有“焦点”。焦点简化了在同一磁盘上创建多个分区的常见配置任务。通过 select 命令为对象设置焦点。除了 listhelpremexithelp 命令之外,其他所有命令都需要有焦点。

使用 select 命令可显式更改焦点。要隐式更改焦点,请使用像 create 这样的命令。管理基本磁盘前,必须设置磁盘焦点。在基本磁盘上,分区焦点和卷焦点相同。如果更改某一项上的焦点,也将更改其他项的焦点。在动态卷上,由于上一级的分区焦点总是丢失,因此只需要卷焦点,而且只有简单卷才需要磁盘焦点。

考虑下面计算机包含两个磁盘的示例:

  • 每个磁盘均包含两个主分区。第一个磁盘包含 C 和 D 分区,第二个磁盘包含 E 和 F 分区。在将分区焦点设置给 C 或 D 分区之前,必须先将磁盘焦点设置给磁盘 1。可以在任何时候将卷焦点设置给 C、D、E 或 F 分区。在本例中,如果将卷焦点设置给 C 或 D 分区,磁盘焦点不变;但是,如果将卷焦点设置给 E 或 F 分区,磁盘焦点就可能转移到其他磁盘。
  • 每个磁盘都是动态的,并且都包含简单卷和空闲空间。第一个磁盘包含 C 分区,第二个磁盘包含 E 分区。向第一个磁盘添加简单卷之前,必须先设置磁盘焦点。要扩展 C 分区,只需设置卷焦点即可。同样,要在 E 分区中添加镜像,只需将卷焦点设置给 E 分区。如果创建简单卷或在同一磁盘上扩展现有卷,不会更改磁盘焦点。如果添加镜像、创建带区集或者将现有卷扩展到不同的磁盘上,就可能会导致磁盘焦点丢失。

脚本撰写

Diskpart 支持使用脚本的操作。要启动 Diskpart 脚本,需使用“diskpart /s script.txt”命令。您可以在 Windows XP、Windows 2000、远程安装服务 (RIS) 无人参与安装环境上,或者在用于 OEM 的 Windows 预安装环境 (PE) 上撰写 Diskpart 脚本。

默认情况下,如果脚本中存在问题,Diskpart 可以退出命令处理并返回错误代码。要在这种情况下继续运行脚本,需在命令中包含 noerr 参数。此参数允许您使用单个脚本删除所有数据驱动器上的所有分区,而与驱动器的总数无关。不过,并非所有命令都支持 noerr 参数。即使使用 noerr 参数,也始终会返回关于命令语法错误的错误。

下面的列表描述了 Diskpart 的错误代码:

  • 0 - 未发生错误。整个脚本正常运行。
  • 1 - 发生致命例外。可能存在严重问题。
  • 2 - Diskpart 命令行上指定的参数不正确。
  • 3 - Diskpart 无法打开指定脚本或输出文件。
  • 4 - Diskpart 使用的服务之一返回错误。
  • 5 - 发生命令语法错误。由于选择对象不当或对象不适用于此命令而导致脚本失败。

运行 Diskpart 后,将显示 Diskpart 版本及当前计算机名称。

命令摘要

设置焦点的命令

select

使用 select 命令可将焦点设置给指定目标。要获取焦点类型列表,请将类型字段保留为空。如果未指定标识 (ID) 号,则显示当前处于焦点的对象。

select disk[=n]

使用 select disk 命令可将焦点设置给具有指定 Windows NT 磁盘号的磁盘。如果未指定磁盘号,该命令将显示当前处于焦点的磁盘。

select partition[=n/l]

使用 select partition 命令可将焦点设置给指定分区。如果未指定分区,则显示当前处于焦点的分区。

在基本磁盘上,您可以按索引、驱动器号或装入点指定分区。在动态磁盘上,只能按索引指定分区。

select volume[=n/l]

使用 select volume 命令可将焦点设置给指定卷。如果未指定卷,该命令将显示当前处于焦点的卷。

您可以按索引、驱动器号或装入点路径指定卷。在基本磁盘上,如果选择了卷,则相应分区也具有焦点。

显示磁盘配置的命令

使用 list 命令可显示摘要。要显示更多信息,请先设置焦点,然后使用 detail 命令。

detail disk

使用 detail disk 命令可获得有关当前处于焦点的磁盘的详细信息,例如:

detail partition

使用 detail partition 命令可获得有关当前处于焦点的分区的详细信息;

detail volume

使用 detail volume 命令可获得有关当前处于焦点的卷的详细信息,例如:

list disk

使用 list disk 命令可获得有关计算机中每个磁盘的摘要信息。带有星号 (*) 的磁盘具有当前焦点。此命令只列出固定磁盘(例如,集成设备电路 [IDE] 或小型计算机系统接口 [SCSI])或者可移动磁盘(例如,1394 或 USB)。不显示可移动驱动器。

list partition

使用 list partition 命令可获得有关处于焦点的磁盘上每个分区的信息,例如:

list volume

使用 list volume 命令可获得有关计算机中每个卷的信息,例如:

管理基本磁盘的命令

本节介绍可用于创建和删除分区,以及分配驱动器号和装入点的命令。本节中的命令仅适用于基本磁盘。有关适用于动态磁盘的命令,以及可用于将基本磁盘转换为动态磁盘的命令,请参考后面几节。

在所有 MBR 磁盘上,sizeoffset 参数都经过四舍五入以保持柱面对齐。在 GPT 磁盘上,sizeoffset 参数也经过四舍五入以保持扇区对齐。如果未指定 offset 参数,则将分区放在第一个足够大的未占用连续磁盘范围内。如果未列出 size 参数,则分区可以扩展至占用确定的磁盘范围,最多可占用整个磁盘大小。

新磁盘首次被发现后,即被假定为 MBR 磁盘。在试图创建 GPT 分区之前,必须显式地将磁盘转换为 GPT。建议您将 MSR 创建为每个数据磁盘上的第一个分区以及任何系统或启动盘上的第二个分区(在 ESP 之后)。从 MBR 转换为 GPT 后,MSR 分区将在磁盘上自动创建。

创建任何新的分区后,最近创建的分区会得到分区焦点。删除任何分区后,分区焦点也会丢失。磁盘焦点在任何情况下都保持不变。

active

使用 active 命令可将当前处于焦点的分区设置为“活动的”。此设置通知固件此分区是有效系统分区。Diskpart 不验证分区内容。

注意:如果使用此命令,可能无法重新启动计算机。

assign [[letter=l]/[mount=path]] [noerr]

使用 assign 命令可为当前处于焦点的分区分配驱动器号或装入点。如果未指定驱动器号,则分配下一个可用驱动器号。如果此驱动器号或装入点已在使用,则除非使用 noerr 参数,否则会产生一个错误。

您可以使用此命令更改与可移动驱动器关联的驱动器号。

禁止为系统、启动或分页卷分配驱动器号。除了 Msdata 分区之外,此命令不能用于向 OEM 分区或任何 GPT 分区分配驱动器号。

create partition primary [size=n] [offset=n] [id=byte/guid] [noerr]

使用 create partition primary 命令可在当前驱动器上以一定长度大小和起始地址偏移量创建一个主分区。

如果在 MBR 磁盘上未指定 ID 字节,此命令将使用类型“0x6”创建分区。可以使用 ID 参数指定分区类型。不对 ID 字节进行有效性校验或其他校验。

如果未在 GPT 磁盘上指定 ID GUID,此命令将创建 Msdata 分区。可以使用 ID 参数指定任何 GUID。不对 GUID 进行有效性、重复性或其他校验。分区示例 GUID 将会被自动生成。

由于创建的是 MBR 和 GPT 分区,因此 Windows 不自动分配驱动器号。您必须显式分配驱动器号。

create partition extended [size=n] [offset=n] [noerr]

使用 create partition extended 命令可在当前驱动器上以一定长度大小和起始地址偏移量创建一个扩展分区。驱动器必须是 MBR 磁盘。

创建分区后,新的扩展分区会得到焦点。只能创建一个扩展分区。只能在创建扩展分区后才能创建逻辑驱动器。

create partition logical [size=n] [offset=n] [noerr]

使用 create partition logical 命令可在当前磁盘的现有扩展分区中以一定长度大小和起始地址偏移量创建一个逻辑驱动器。驱动器必须是 MBR 磁盘。

如果未列出偏移量,则逻辑驱动器将被放在第一个足够大的扩展分区中的未占用连续磁盘范围。如果未列出大小,分区可能扩展至占用整个扩展分区。

创建分区后,逻辑驱动器会得到分区焦点。

create partition msr [size=n] [offset=n] [noerr]

create partition msr 命令相当于使用 MSR GUID E3C9E316-0B5C-4DB8-817D-F92DF00215AE 创建分区。

create partition esp [size=n] [offset=n] [noerr]

create partition esp 命令相当于使用 ESP GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B 创建分区。

delete partition [noerr] [override]

使用 delete partition 命令可删除当前处于焦点的分区。

Diskpart 禁止删除当前系统、启动或分页卷。要删除 ESP、MSR 或已知 OEM 分区,必须指定 override 参数。

extend [size=n][noerr]

使用 extend 命令可导致当前处于焦点的卷扩展到未分配的连续空间。未分配空间必须在处于焦点的分区之后(前者的扇区偏移量必须大于后者)。此命令用来将现有基本数据分区增大到可扩展硬件 RAID 逻辑单元号 (LUN) 上最近创建的空间。

如果以前曾经使用 NTFS 文件系统对分区进行格式化,则文件系统将自动扩展,以占用更大的分区,并且不会发生数据丢失。如果以前曾经使用 NTFS 以外的任何文件系统格式对分区进行格式化,此命令将失败且不会更改分区。

Diskpart 只禁止当前系统或启动分区进行扩展。

remove [[letter=l]/[mount=path]/[all]] [noerr]

使用 remove 命令可删除当前处于焦点的分区的驱动器号或装入点。如果指定 all 参数,则删除所有当前驱动器号和装入点。如果未指定驱动器号或装入点,则删除驱动器号。

使用此命令可更改与可移动驱动器关联的驱动器号。

禁止删除系统、启动或分页卷的驱动器号。不能使用此命令将驱动器号转移到 OEM 分区、任何具有未识别 GUID 的 GPT 分区或者任何特殊的非数据 GPT 分区(如 ESP 分区)。

管理动态磁盘的命令

您可以使用本节中介绍的命令创建和删除卷、修复容错卷以及导入磁盘。

size 参数始终要四舍五入,以保持 MB 对齐。不能指定显式偏移量。此卷始终放在第一个足够大的未占用连续磁盘范围内。如果未列出大小,则创建尽可能大的卷。

创建卷后,卷焦点将置于最近创建的卷上。如果卷跨越多个磁盘,当前磁盘焦点将丢失。如果删除卷,卷焦点将丢失。如果删除卷之前已经存在一个有效的磁盘焦点,此磁盘焦点将保留。

注意:当任何空磁盘转换为动态或 GPT 磁盘时,Diskpart 在转换后的磁盘上强制创建一个 MSR 分区。

active

使用 active 命令可将当前处于焦点的卷设置为“活动的”。此设置通知固件此分区是有效系统分区。Diskpart 只验证此卷是否可以包含操作系统可启动映像,而不验证分区内容。如果使用此命令,计算机可能无法重新启动。

add disk=n [noerr]

使用 add 命令可向指定磁盘上的当前处于焦点的卷添加镜像。仅支持两个镜像丛。当前处于焦点的卷必须是简单卷。

assign [[letter=l]/[mount=path]] [noerr]

使用 assign 命令可为当前处于焦点的卷分配驱动器号或装入点。如果未指定驱动器号,则分配下一个可用驱动器号。如果此驱动器号或装入点已在使用,则除非指定 noerr 参数,否则将产生一个错误。

禁止为系统、启动或分页卷分配驱动器号。

break disk=n [nokeep] [noerr]

使用 break 命令可断开当前处于焦点的镜像。

默认情况下,两个镜像丛的内容都将保留,原因在于这两个丛都变成了简单卷。如果指定 nokeep 参数,则只保留指定丛,另一个丛将被删除并转换为空闲空间。

原始卷保留所有驱动器号或装入点。如果未保留丛,则焦点仍然保留在指定磁盘上保留的简单卷上。否则,焦点将更改到指定磁盘上指定的保留丛上。此丛变成简单卷;但是,不为新卷分配驱动器号。

create volume simple [size=n] [disk=n] [noerr]

使用 create volume simple 命令可在指定磁盘上以一定长度大小创建一个简单卷。

如果未指定大小,新的卷可以占用磁盘上剩余的连续空闲空间。如果未指定磁盘,则使用当前处于焦点的磁盘。

创建了卷之后,磁盘焦点就被设置给目标磁盘。

create volume stripe [size=n] disk=n[,n[,...]][noerr]

使用 create volume stripe 命令可在指定磁盘上创建带区集卷。带区卷的总大小为每一磁盘上的带区卷大小与磁盘数目相乘 (*) 之积。

如果未指定大小,则创建尽可能大的带区卷。具有最小连续可用空闲空间的磁盘是确定的。此空闲空间的大小决定带区卷的大小。每个磁盘上所分配的带区卷的大小均相同。

create volume raid [size=n] disk=n[,n[,...]][noerr]

使用 create volume raid 命令可在指定磁盘上创建 Raid-5 集卷。每一个磁盘上均分配相当于“Raid-5 卷大小”的空间量。

如果未指定大小,则创建尽可能大的 Raid 5 卷。具有最小连续可用空闲空间的磁盘是确定的。此空闲空间的大小决定 Raid 5 卷的大小,并且从每个磁盘分配的 Raid 5 卷的大小均相同。实际使用的卷大小小于每一磁盘上的 Raid-5 卷大小与磁盘数目相乘之积,因为有些空间用于奇偶校验。

delete disk [noerr][override]

使用 delete disk 命令可从磁盘列表中删除缺失的动态磁盘。

如果未指定 override 参数,将删除磁盘上包含的所有简单卷,并删除所有镜像丛。如果磁盘用于 Raid 5 卷,此命令将失败。

delete partition [noerr] [override]

使用 delete partition 命令可删除当前处于焦点的分区。

Diskpart 禁止删除用于包含现有在线动态卷的任何分区。但这些卷必须被删除,且磁盘必须转换为基本磁盘。要删除 ESP、MSR 或已知 OEM 分区,需指定 override 参数。

可以从动态磁盘上删除分区,但是不能创建这些分区。例如,可以删除动态 GPT 磁盘上未识别的 GPT 分区。如果删除分区,空闲空间将不可用。在无法使用 clean 命令的紧急情况下,可以使用此命令回收损坏的离线动态磁盘上的空间。

delete volume [noerr]

使用 delete volume 命令可删除当前处于焦点的卷。使用此命令后,将丢失所有数据。

extend disk=n [size=n] [noerr]

使用 extend 命令可将当前简单卷或扩展卷扩展到指定磁盘上。extend 命令仅适用于 NTFS 卷。

如果未指定大小,此卷可占用指定磁盘上的所有空闲空间。任何现有磁盘焦点都将丢失。

import [noerr]

使用 import 命令可导入外部磁盘组中的所有磁盘。

如果在外部磁盘组中的任何磁盘上都设置了焦点,就可以导入该组中的所有磁盘。运行此命令后,任何现有卷或磁盘焦点都将丢失。

online [noerr]

使用 online 命令可使以前离线的磁盘或卷重新在线。如果使用此命令,焦点不会发生更改。

remove [[letter=l]/[mount=path]/[all]] [noerr]

使用 remove 命令可删除当前处于焦点的卷的驱动器号或装入点。如果使用 all 参数,将删除所有当前驱动器号和装入点。如果未指定驱动器号或装入点,则删除遇到的第一个路径。

禁止删除系统、启动或分页卷的驱动器号。

retain

使用 retain 命令可准备将动态简单卷用作启动或系统卷。

如果在基于 x86 的计算机上使用 retain 命令,将在动态简单卷上创建一个具有焦点的 MBR 分区。要创建一个 MBR 分区,动态简单卷必须始自一个柱面对齐的偏移量处,而且其大小必须是柱面大小的整数倍。

如果在基于 Itanium 的计算机上使用 retain 命令,retain 命令将在动态简单卷上创建具有焦点的 GPT 分区。

转换磁盘的命令

convert mbr [noerr]

使用 convert mbr 命令可将当前磁盘的分区形式设置为 MBR。磁盘可以是基本磁盘或动态磁盘,但是切勿包含任何有效数据分区或卷。

convert gpt [noerr]

使用 convert gpt 命令可将当前磁盘的分区形式设置为 GPT。磁盘可以是基本磁盘或动态磁盘,但是切勿包含任何有效数据分区或卷。此命令只在基于 Itanium 的计算机上才有效,在基于 x-86 的计算机上可能会失败。

convert dynamic [noerr]

使用 convert dynamic 命令可将基本磁盘改为动态磁盘。磁盘可以包含有效数据分区。

convert basic [noerr]

使用 convert basic 命令可将空的动态磁盘转换为基本磁盘。

其他命令s

exit

使用 exit 命令可停止 Diskpart 并将控制权返回给操作系统。

clean [all]

使用 clean 命令可通过将扇区清零,从当前处于焦点的磁盘删除分区或将卷格式化。默认情况下,仅改写 MBR 或 GPT 分区信息及任何有关 MBR 磁盘的隐藏扇区信息。如果指定 all 参数,可将每个扇区都清零,同时可删除驱动器上包含的所有数据。

rem [...]

rem 命令不执行任何操作,但您可以使用此命令注释脚本文件。

rescan

使用 rescan 命令可重新扫描所有 I/O 总线并可因此发现添加到计算机上的任何新磁盘。

帮助命令s

help

使用 help 命令可显示所有命令列表。