diskpart 是一个强大的磁盘管理工具,用于在命令行环境下对磁盘、分区、卷进行管理。以下是 diskpart 命令按功能分类并表格化的展示。Microsoft DiskPart的命令和PowerShell等效命令,可以为你提供一个简明的对照表:
diskpart 脚本和示例 | Microsoft Learn
PS C:\WINDOWS\system32> diskpart /?
Microsoft DiskPart 版本 10.0.26100.1150
Copyright (C) Microsoft Corporation.
在计算机上: WIN- sssss
Microsoft DiskPart 语法:
diskpart [/s <script>] [/?]
/s <script> - 使用一个 DiskPart 脚本。
/? - 显示这个帮助屏幕。
diskpart 磁盘分区配套链 全枚举实例
前置说明
- diskpart:Windows 内置磁盘分区管理工具,管理员权限;可交互式执行,也可通过
/s加载脚本文件批量执行,PE 环境离线维护核心工具。- 核心配套链:查看磁盘 → 清理磁盘 → 创建分区 → 格式化 → 分配盘符;VHD 操作:创建 VHD → 附加 VHD → 分区格式化 → 分离 VHD;FFU/WIM 部署前预处理磁盘。
- 语法:交互式直接输入指令;脚本模式
diskpart /s script.txt;路径带空格英文双引号包裹;⚠️clean会清空磁盘全部数据,高危命令。
一、单命令实例
| 序号 | 命令 | 简要说明 |
|---|---|---|
| 1 | list disk |
列出本机所有物理磁盘,查看磁盘编号、大小、状态 |
| 2 | select disk 0 |
选中磁盘 0,后续操作针对该磁盘 |
| 3 | list partition |
列出当前选中磁盘的所有分区 |
| 4 | select partition 1 |
选中当前磁盘下 1 号分区 |
| 5 | list volume |
列出所有卷(跨磁盘,包含盘符、文件系统、大小) |
| 6 | select volume 2 |
选中 2 号卷 |
| 7 | clean |
清空选中磁盘,删除所有分区表与全部数据(高危) |
| 8 | create partition primary |
在选中磁盘创建主分区,占用全部剩余空间 |
| 9 | format fs=ntfs quick |
快速格式化为 NTFS 文件系统 |
| 10 | assign letter=D |
给选中分区分配盘符 D |
| 11 | active |
将选中分区标记为活动分区(BIOS 启动) |
| 12 | delete partition override |
强制删除选中分区(受保护分区需 override) |
| 13 | create vdisk file="D:\vhd\win.vhdx" maximum=60000 type=expandable |
创建动态扩展 VHDX 虚拟磁盘,最大 60GB |
| 14 | attach vdisk |
附加选中的虚拟磁盘 VHD/VHDX |
| 15 | detach vdisk |
分离选中的虚拟磁盘 VHD/VHDX |
| 16 | detail disk |
查看选中磁盘详细信息,磁盘型号、分区列表 |
| 17 | detail partition |
查看选中分区详细信息,类型、偏移、属性 |
| 18 | exit |
退出 diskpart 交互式环境 |
二、双参数混合组合
| 序号 | 命令 | 简要说明 |
|---|---|---|
| 19 | create partition primary size=500 |
创建主分区,大小 500MB |
| 20 | format fs=ntfs quick label=System |
快速 NTFS 格式化,并设置卷标 System |
| 21 | assign letter=V noerr |
分配盘符 V,出错不中断脚本执行 |
| 22 | create vdisk file="D:\vhd\win.vhd" maximum=40000 type=fixed |
创建固定大小 VHD,容量 40GB |
| 23 | select disk 0 noerr |
选中磁盘 0,脚本遇到磁盘不存在不报错终止 |
| 24 | create partition efi size=260 |
创建 EFI 系统分区,260MB(GPT 启动) |
| 25 | create partition msr size=16 |
创建 MSR 微软保留分区,16MB(GPT 磁盘) |
三、三参数混合组合
| 序号 | 命令 | 简要说明 |
|---|---|---|
| 26 | format fs=fat32 quick label=EFI unit=4k |
快速格式化为 FAT32,卷标 EFI,4K 分配单元 |
| 27 | create vdisk file="D:\vhd\win.vhdx" maximum=60000 type=expandable readonly |
创建只读动态 VHDX,最大 60GB |
| 28 | create partition primary size=102400 id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 |
创建 GPT 数据分区,指定分区类型 GUID |
| 29 | select disk 0&clean all |
选中磁盘 0,clean all覆盖擦除磁盘所有扇区,数据不可恢复 |
四、多参数复杂混合组合(PE 部署配套脚本链,GPT 分区标准模板)
单行脚本可写入 txt,
diskpart /s gptdisk.txt执行
select disk 0
clean
convert gpt
create partition efi size=260
format fs=fat32 quick label=EFI
assign letter=S
create partition msr size=16
create partition primary
format fs=ntfs quick label=WinOS
assign letter=W
exit
| 序号 | 命令脚本 | 简要说明 |
|---|---|---|
| 30 | select disk 0+clean+convert gpt |
清空磁盘,转换为 GPT 分区表(UEFI 启动) |
| 31 | select disk 0+create partition efi size=260+format fs=fat32 quick label=EFI |
创建并格式化 EFI 引导分区 |
| 32 | select vdisk file="D:\vhd\win.vhdx"+attach vdisk+create partition primary |
附加 VHDX,在虚拟磁盘创建主分区 |
五、运维完整脚本片段(gptdisk.txt,PE 下执行 diskpart /s gptdisk.txt)
rem ===== UEFI GPT 分区部署脚本 =====
select disk 0
clean
convert gpt
rem EFI引导分区
create partition efi size=260
format fs=fat32 quick label=EFI
assign letter=S
rem MSR保留分区
create partition msr size=16
rem Windows系统主分区
create partition primary
format fs=ntfs quick label=WinSystem
assign letter=W
list partition
list volume
exit
六、无效 / 边界说明
| 错误命令 | 原因 |
|---|---|
clean执行在线系统盘 |
系统正在运行,无法 clean 系统盘;必须 PE 环境执行 |
MBR 磁盘执行create partition efi |
MBR 分区表不支持 EFI 分区,需要先convert gpt |
| EFI 分区格式化为 NTFS | EFI 分区必须 FAT32,否则 UEFI 固件无法识别引导 |
assign letter=C,盘符已被占用 |
目标盘符存在,分配失败,更换其他盘符 |
delete partition删除恢复分区 |
恢复分区为受保护分区,必须加override参数 |
create vdisk路径不带英文双引号 |
路径包含空格时,引号缺失会识别失败 |
| 普通用户运行 diskpart 磁盘修改操作 | 修改分区、clean、创建 VHD 均需要管理员权限 |
convert gpt磁盘已有分区 |
磁盘存在分区时无法直接转换,需要先 clean 清空磁盘 |
七、运维场景快速选型
- 查看磁盘列表:
list disk - 清空磁盘并转为 GPT(UEFI 部署):
select disk 0→clean→convert gpt - 创建 EFI+MSR + 系统分区:参考 GPT 脚本模板
- 创建 VHDX 虚拟磁盘:
create vdisk file="D:\vhd\win.vhdx" maximum=60000 type=expandable - 附加虚拟磁盘:
select vdisk="D:\vhd\win.vhdx"+attach vdisk - 脚本批量执行分区:
diskpart /s gptdisk.txt

partmgr.sys(分区管理器驱动)完整底层拆解
文件路径:
C:\Windows\System32\drivers\partmgr.sys;内核过滤驱动,存储栈关键中间层;服务类型:Boot‑Start(启动时加载),系统启动早期就参与磁盘分区识别。 定位:磁盘过滤驱动 + 虚拟总线驱动双重身份;解析 MBR/GPT 分区表,创建分区 PDO 设备对象;向上通知卷管理器,向下透过 disk.sys 访问物理磁盘扇区Microsoft ...。
整体链路总览: storport.sys/miniport → disk.sys(磁盘类驱动) → partmgr.sys(分区管理器) → volmgr.sys(卷管理器) → mountmgr.sys(盘符管理器) → 文件系统驱动ntfs.sys/fastfat.sys;partmgr解析磁盘MBR/GPT,为每一个有效分区创建PDO物理设备对象;VDS/diskpart下发IOCTL磁盘控制码由partmgr执行分区表读写;diskpart rescan触发partmgr重新扫描磁盘分区表刷新内核视图
一、基础信息
- 驱动身份:过滤驱动 + 虚拟总线驱动
- 附加在 disk.sys 磁盘设备对象之上;拦截所有发往磁盘的 IRP 请求;
- 同时充当虚拟总线:读取 MBR/GPT 分区表,发现分区后,创建子 PDO(\Device\HarddiskX\PartitionY),PnP 管理器枚举这些分区子设备对象Microsoft ...。
- 注册表配置:
HKLM\SYSTEM\CurrentControlSet\Services\PartMgr,启动类型SERVICE_BOOT_START,属于启动关键驱动,winload 阶段加载;缺失会导致磁盘分区完全识别失败,蓝屏或者磁盘看不到分区。 - 对外暴露 IOCTL 控制码集合:
IOCTL_DISK_GET_PARTITION_INFO、IOCTL_DISK_SET_PARTITION_INFO_EX、IOCTL_DISK_CREATE_DISK(GPT/MBR 转换)等;VDS 服务 vdsbas.dll 最终通过 DeviceIoControl 下发这组 IOCTL 交给 partmgr 执行分区表读写GitHub。
重要:partmgr.sys 只读写分区表元数据;不做文件系统格式化;格式化是 ntfs.sys/fastfat.sys 职责。
二、内核存储栈完整堆栈(自上而下)
应用层 diskpart.exe / PowerShell Storage → 用户态DeviceIoControl
↓
volmgr.sys(卷管理器,\Device\HarddiskVolumeX)
↓
partmgr.sys(分区管理器,生成PartitionY PDO)
↓
disk.sys(磁盘类驱动,\Device\HarddiskX)
↓
storport.sys / miniport(NVMe/SATA/USB磁盘硬件miniport)
↓
物理磁盘硬件
partmgr 介于 disk.sys 磁盘设备与 volmgr 卷管理器之间;所有磁盘 IO 都会经过 partmgr 过滤;同时负责分区设备对象枚举上报 PnP 管理器。
三、底层原理:两大核心工作模式
模式 1:系统启动阶段分区枚举流程
- winload 加载 partmgr.sys;PnP 管理器发现 disk.sys 磁盘设备对象。
- partmgr 附加过滤设备到 disk.sys;下发读扇区 IRP 读取磁盘 LBA0(MBR)或 GPT 头部扇区。
- 解析 MBR 分区表 / GPT 分区条目数组;校验签名、分区类型 GUID、分区起始 LBA、大小。
- 对每一个合法有效分区,创建分区 PDO 物理设备对象:
\Device\Harddisk0\Partition1、Partition2。 - 调用
IoInvalidateDeviceRelations通知 PnP 管理器,报告子设备(分区)列表。 - PnP 启动各个分区 PDO;向上通知 volmgr.sys 卷管理器;volmgr 识别分区内部文件系统;生成卷对象
\Device\HarddiskVolumeX。 - mountmgr.sys 盘符管理器,给卷分配盘符 C: D: 等。
现象:磁盘管理器看到的分区列表,内核源头就是 partmgr 解析 MBR/GPT 生成的 Partition PDO 集合Microsoft ...。
模式 2:分区表修改(diskpart create partition /convert gpt)执行链路
diskpart.exe → VDS vds.exe → vdsbas.dll → DeviceIoControl 发送IOCTL_DISK_SET_PARTITION_INFO_EX
↓(IRP下发内核)
partmgr.sys接收IOCTL控制码
1.校验传入分区参数;锁定磁盘布局防止并发修改
2.向下发送IRP,通过disk.sys读写磁盘扇区,改写MBR分区表 / GPT头部与GPT分区条目数组;GPT模式同时写入主GPT与备份GPT冗余副本
3.完成写入后,调用IoInvalidateDeviceRelations,触发PnP重新扫描磁盘子设备
4.重新解析磁盘分区表;销毁旧Partition PDO,创建新分区PDO
5.向上通知volmgr、mountmgr刷新卷、盘符视图
↓
返回IOCTL完成状态给用户态VDS → diskpart输出结果
diskpart
rescan命令本质:用户态下发指令,触发 partmgr 重新读取磁盘分区表,刷新全部 Partition PDO 设备对象。
四、MBR / GPT 在 partmgr 内部处理差异
- MBR 磁盘 读取 LBA0 的 64 字节 4 个主分区表;识别扩展分区,递归解析逻辑分区链;创建对应 Partition PDO; partmgr 会校验 MBR 签名
0xAA55;签名损坏,视为无分区磁盘。 - GPT 磁盘 读取 LBA1 GPT 头部;校验 GPT 签名;读取 GPT 分区条目数组;校验备份 GPT; partmgr 维护 GPT 两份副本(主 + 备份);修改分区时同时更新两份;发现主 GPT 损坏,会尝试从备份 GPT 修复头部; 识别特殊分区 GUID:ESP、MSR,标记分区属性;保护性 MBR 由 partmgr 在 convert gpt 时写入 LBA0 扇区。
关键:partmgr 不做文件系统识别,只识别分区类型;文件系统识别由 volmgr 与对应 FS 驱动完成。
五、依赖文件、配套链、上下游关系图谱
| 组件 | 文件名 | 与 partmgr.sys 关系 |
|---|---|---|
| disk.sys | drivers\disk.sys | 下层依赖;提供磁盘原始扇区读写,partmgr 所有磁盘 IO 转发给 disk.sys |
| volmgr.sys | drivers\volmgr.sys | 上层;接收 partmgr 上报的 Partition PDO,生成卷对象 HarddiskVolumeX |
| mountmgr.sys | drivers\mountmgr.sys | 盘符管理器;volmgr 通知 mountmgr 分配盘符;partmgr 不直接操作盘符 |
| vds.exe+vdsbas.dll | 用户态服务 | 用户态调用方;下发 IOCTL 磁盘控制码给 partmgr 执行分区修改 |
| ntfs.sys/fastfat.sys | 文件系统驱动 | 最上层;挂载到 volmgr 生成的卷对象,partmgr 不感知文件内部结构 |
周边组件关系
- partmgr ↔ diskpart diskpart 完全不读写扇区;全部分区创建、删除、convert gpt 操作,经由 VDS 下发 IOCTL,由 partmgr.sys 在内核完成分区表读写;diskpart rescan 触发 partmgr 重新扫描分区表刷新内核设备树。
- partmgr ↔ BCD / bcdboot bcdboot 需要 ESP 分区盘符;ESP 分区由 partmgr 解析 GPT 分区表生成 Partition PDO;volmgr/mountmgr 分配盘符,bcdboot 才能访问 ESP 分区写入 EFI 引导文件。
WinRE diskpart 看不到 ESP 盘符:partmgr 识别 ESP 分区 PDO,但 mountmgr 没有分配盘符,需要手动 assign letter。
- partmgr ↔ VSS volsnap.sys VSS 工作在卷层(volmgr 之上);partmgr 负责生成分区设备对象,volmgr 再生成卷对象;VSS 快照绑定卷对象,不直接和 partmgr 交互。
- partmgr ↔ PnP 管理器 (ntoskrnl 内部) partmgr 是虚拟总线驱动;发现分区后创建 PDO,调用 IoInvalidateDeviceRelations 通知 PnP;PnP 维护设备树,设备管理器磁盘分区视图来源于 partmgr 上报的 PDO 集合。
六、能力边界(能干 / 不能干)
✅ partmgr.sys 可以:
- 系统启动时解析 MBR/GPT 分区表,为每个分区创建内核 Partition PDO 设备对象。
- 处理 IOCTL 磁盘控制码:创建、删除分区;MBR↔GPT 磁盘转换;读写、校验、修复 GPT 备份分区表。
- 磁盘变更后重新扫描,销毁旧分区设备对象,生成新分区 PDO,通知上层 volmgr。
- GPT 磁盘维护主 GPT 与备份 GPT 两套元数据,具备基础 GPT 元数据修复能力。
❌ partmgr.sys不能做:
- 不做文件系统格式化;格式化交给 ntfs.sys/fastfat.sys。
- 不分配盘符;盘符分配是 mountmgr.sys 职责;partmgr 只生成分区设备对象。
- 不能修复磁盘物理坏道;仅处理分区表元数据。
- 不解析文件内部结构;不知道分区是 NTFS 还是 FAT32,只识别分区类型码 / GUID。
- 不能处理动态磁盘 LDM 数据库;动态磁盘由 vdsdyn.dll + dmio.sys 处理,partmgr 只处理基础磁盘 MBR/GPT 分区表。
七、典型故障现象对照表
| 现象 | 底层根因 | 处理方向 |
|---|---|---|
| 磁盘管理器看到磁盘,但看不到任何分区 | partmgr 解析 MBR/GPT 失败;分区表签名损坏;GPT 头部损坏 | diskpart rescan;备份分区表;尝试 GPT 从备份副本恢复元数据 |
| diskpart 创建分区成功,重启后分区消失 | partmgr 写入 GPT 主分区表成功,但备份 GPT 未写入;磁盘 IO 错误;磁盘硬件异常 | 检查磁盘硬件;重新 convert gpt 重建 GPT 头部 |
| diskpart rescan 之后,资源管理器看不到新分区盘符 | partmgr 成功生成 Partition PDO;volmgr 识别卷成功;mountmgr 没有分配盘符 | diskpart assign letter=X: 分配盘符 |
| 系统蓝屏 partmgr.sys | GPT/MBR 分区表严重损坏;磁盘 IO 硬件故障;磁盘 miniport 驱动异常 | 备份数据,检查磁盘健康,重建分区表 |
| GPT 磁盘提示 “保护性 MBR” | partmgr 写入保护性 MBR,阻止旧 MBR 工具破坏 GPT 磁盘;属于正常现象 | 无需处理 |
排错要点:diskpart rescan,本质触发 partmgr 重新扫描磁盘分区表,刷新内核设备对象树。
八、关键误区总结
- ❌误区:diskpart 直接读写磁盘扇区。 ✅事实:diskpart 只是用户态解析器;真正读写 MBR/GPT 分区表是内核 partmgr.sys,disk.sys 完成底层扇区 IO。
- ❌误区:partmgr 负责分配盘符 C:/D:。 ✅事实:partmgr 只生成分区设备对象
\Device\HarddiskX\PartitionY;盘符分配由 mountmgr.sys 完成。 - ❌误区:partmgr 可以处理动态磁盘 LDM 数据库。 ✅事实:partmgr 只解析 MBR/GPT 分区表;动态磁盘 LDM 数据库由 dmio.sys、vdsdyn.dll 处理。
- ❌误区:convert gpt 命令是 diskpart 完成 GPT 头部写入。 ✅事实:diskpart 下发 IOCTL,内核 partmgr.sys 执行写入保护性 MBR、GPT 头部、分区表。
记忆链路: partmgr.sys 是磁盘过滤 + 虚拟总线驱动;解析 MBR/GPT,创建分区 PDO 设备对象;VDS/diskpart 下发 IOCTL,partmgr 在内核完成分区表读写;向上通知 volmgr 生成卷对象,mountmgr 分配盘符;diskpart rescan 触发 partmgr 重新扫描磁盘分区表刷新内核视图。
volmgr.sys(卷管理器驱动)完整底层拆解
文件路径:
C:\Windows\System32\drivers\volmgr.sys;配套扩展驱动:volmgrx.sys。 启动类型:Boot‑Start,winload 早期加载;系统启动必须组件,缺失直接蓝屏,无法访问磁盘卷。 定位:分区设备对象 → 卷设备对象的转换层;接收 partmgr.sys 上报的PartitionX分区 PDO,生成HarddiskVolumeX卷设备对象;协调 mountmgr.sys 盘符管理、文件系统挂载;处理卷 IOCTL;动态磁盘场景协同 dmio.sys。
整体链路总览: disk.sys → partmgr.sys(生成Partition PDO) → volmgr.sys(生成HarddiskVolume卷设备对象) → mountmgr.sys(分配盘符/Volume{GUID}) → volsnap.sys(VSS快照过滤) → ntfs.sys/fastfat.sys文件系统;volmgr接收partmgr分区设备,创建卷对象,维护VPB卷参数块;diskpart assign/extend/shrink下发IOCTL交由volmgr处理;动态磁盘卷由dmio.sys接管IO重定向,volmgr做上层卷对象管理
一、基础信息
- 驱动分工
- volmgr.sys:卷管理器主驱动,基础磁盘卷对象创建、IOCTL 调度、卷设备生命周期管理。
- volmgrx.sys:卷管理器扩展驱动,GPT 增强、动态磁盘交互、可移动设备标记、部分卷容错逻辑,现代 Win10/Win11 必须加载。
- 注册表:
HKLM\SYSTEM\CurrentControlSet\Services\VolMgr,Boot‑Start 启动组。
- 核心设备对象
- partmgr 输出:
\Device\Harddisk0\Partition1(分区 PDO,代表磁盘上一段物理扇区范围) - volmgr 输出:
\Device\HarddiskVolume1(卷 VDO 卷设备对象,向上提供逻辑卷视图,文件系统挂载在此对象之上)
- 关键 IOCTL 控制码集合:
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS、IOCTL_VOLUME_EXTEND、IOCTL_VOLUME_SHRINK;diskpart 的 extend/shrink 最终下发这组 IOCTL 给 volmgr。
重要区分: Partition(分区):物理磁盘上的扇区范围,由 partmgr 解析 MBR/GPT 生成。 Volume(卷):操作系统使用的逻辑存储单元;一个卷可以对应 1 个分区(基础磁盘),也可以跨多个磁盘(动态磁盘跨区卷、镜像卷)。
二、完整内核存储栈(自上而下)
应用层 CreateFile / DeviceIoControl
↓
【文件系统过滤层】 volsnap.sys(VSS快照过滤驱动)
↓
【文件系统驱动】 ntfs.sys / fastfat.sys / refs.sys
↓
volmgr.sys + volmgrx.sys(卷管理器,HarddiskVolumeX)
↓
partmgr.sys(分区管理器,PartitionY PDO)
↓
disk.sys(磁盘类驱动 HarddiskX)
↓
storport.sys/miniport硬件miniport
↓
物理磁盘硬件
动态磁盘场景栈变化: volmgr.sys → dmio.sys(LDM 驱动,IO 重定向,实现镜像 / 条带 / RAID‑5) → partmgr.sys → disk.sys
三、底层原理两大核心流程
流程 1:系统启动,分区转卷完整枚举流程
- partmgr.sys 解析 MBR/GPT,创建
\Device\HarddiskX\PartitionY分区 PDO;调用IoInvalidateDeviceRelations通知 PnP 子设备变更。 - PnP 枚举 Partition 分区设备,加载 volmgr.sys;volmgr 附加到每一个合法分区 PDO 之上。
- volmgr 执行
VmVolumeCreate:读取分区头部,尝试识别卷元数据;创建卷设备对象\Device\HarddiskVolumeN,维护 VPB(Volume Parameter Block,卷参数块),建立卷对象与底层 Partition 分区设备的映射关系。 - volmgr 通知mountmgr.sys 挂载管理器:向卷分配全局唯一卷 GUID 符号链接:
\DosDevices\Volume{xxxxxxxx‑xxxx‑xxxx‑xxxx‑xxxxxxxxxxxx}。 - mountmgr 读取注册表
HKLM\SYSTEM\MountedDevices,恢复历史盘符映射;创建\DosDevices\C:这类盘符符号链接指向 HarddiskVolume 卷对象。 - I/O 管理器触发文件系统识别:ntfs.sys/fastfat.sys 挂载到卷设备对象,读取 $MFT/FAT 元数据;挂载成功后应用层可以读写文件。
关键点:Partition 是物理切片;HarddiskVolume 是操作系统逻辑卷;二者不是一一等同概念;动态磁盘一个卷可以跨越多个 Partition / 多个磁盘。
流程 2:diskpart 卷扩容 extend 执行链路(基础磁盘)
diskpart.exe → VDS vds.exe → vdsbas.dll → DeviceIoControl(IOCTL_VOLUME_EXTEND)
↓ IRP下发内核
volmgr.sys接收IOCTL_VOLUME_EXTEND
1.校验卷状态;校验后方空闲扇区是否连续可用
2.修改卷的逻辑范围,扩展HarddiskVolume卷对象的扇区边界
3.通知文件系统驱动(ntfs.sys)执行文件系统层面扩容(更新MFT、位图元数据)
4.刷新VPB卷参数块;通知mountmgr刷新卷元数据
↓
返回IOCTL完成状态;diskpart输出成功。
注意:卷扩容分为两层:volmgr 扩展卷逻辑边界;ntfs.sys 扩展文件系统元数据;二者缺一不可。shrink 缩容执行链路逻辑相反。
四、基础磁盘 vs 动态磁盘在 volmgr 体系中的差异
- 基础磁盘(Basic Disk)
- volmgr 直接把单个 Partition 分区映射为一个 HarddiskVolume 卷对象;IO 直接透传给 partmgr/disk.sys;无 IO 重定向。
- 动态磁盘(Dynamic Disk,LDM)
- volmgr 仍然创建 HarddiskVolume 卷设备对象;但底层 IO 不再直接下发 partmgr;IO 经过 dmio.sys(LDM 内核驱动)。
- dmio.sys 读取磁盘末尾 1MB 的 LDM 私有数据库;根据卷类型(跨区 / 镜像 / 条带 / RAID‑5)做 IO 重定向:
- 镜像卷:写 IO 复制多份到多块磁盘;读 IO 优先读取正常磁盘;一块磁盘故障做降级。
- 条带卷:IO 分散到多磁盘。
- RAID‑5:dmio 内核做异或校验计算(CPU 消耗)。
volmgr 负责卷对象生命周期;dmio 负责动态卷 IO 分发;vdsdyn.dll 用户态负责修改磁盘上 LDM 数据库元数据。
现代 Windows:微软不再发展动态磁盘;推荐使用 Storage Spaces 替代。
五、依赖文件、配套链、上下游关系图谱
| 组件 | 文件名 | 与 volmgr.sys 关系 |
|---|---|---|
| partmgr.sys | drivers\partmgr.sys | 下层输入;输出 Partition 分区 PDO 给 volmgr;volmgr 基于分区设备创建卷对象 |
| volmgrx.sys | drivers\volmgrx.sys | 扩展驱动;GPT、可移动介质标记、动态磁盘辅助逻辑 |
| dmio.sys | drivers\dmio.sys | 动态磁盘 LDM;拦截 volmgr 下发 IRP,实现软件 RAID IO 重定向 |
| mountmgr.sys | drivers\mountmgr.sys | 上层;接收 volmgr 卷通知,分配卷 GUID、盘符 C:/D:、文件夹挂载点 |
| volsnap.sys | drivers\volsnap.sys | VSS 快照过滤驱动;附加在 volmgr 输出的 HarddiskVolume 卷设备栈之上;实现 COW 快照 |
| ntfs.sys/fastfat.sys | 文件系统驱动 | 挂载到 volmgr 生成的 HarddiskVolume 卷对象;实现文件读写 |
| vds.exe+vdsbas.dll/vdsdyn.dll | 用户态 VDS 服务 | 下发卷 IOCTL(extend/shrink)给 volmgr;不直接操作扇区 |
周边组件关系
- volmgr ↔ partmgr.sys partmgr 只管分区表 MBR/GPT,生成分区设备;volmgr 把分区包装成操作系统可用的逻辑卷对象。partmgr rescan 刷新分区设备,volmgr 随之重建卷对象视图。
- volmgr ↔ mountmgr.sys volmgr 只生成卷对象;不分配盘符;盘符、卷唯一 GUID 全部由 mountmgr.sys 完成;diskpart assign letter 本质是下发 IOCTL 到 mountmgr。
- volmgr ↔ VSS / volsnap.sys volsnap.sys 作为过滤驱动附加在 volmgr 输出的 HarddiskVolume 卷栈;VSS 快照作用在卷层面,不是分区层面。系统还原挂载快照卷,就是操作 volmgr 的卷设备对象。
- volmgr ↔ BCD / 系统启动 系统盘卷对象
HarddiskVolumeX由 volmgr 创建;winload 读取 BCD,定位系统所在卷对象,加载 ntoskrnl。volmgr 故障,系统无法识别系统卷,蓝屏无法启动。 - volmgr ↔ diskpart diskpart create partition → partmgr 写入分区表;volmgr 检测到新分区,生成卷对象;diskpart extend/shrink → IOCTL 下发 volmgr 执行卷扩容缩容。
六、能力边界:能干 / 不能干
✅ volmgr.sys 可以:
- 接收 partmgr 上报的 Partition 分区 PDO,创建
HarddiskVolumeX卷设备对象,维护 VPB 卷参数块。 - 处理卷 IOCTL:卷扩展 extend、卷缩容 shrink、获取卷磁盘范围信息。
- 维护卷设备对象生命周期;磁盘插拔、rescan 时销毁 / 重建卷对象。
- 协同 dmio.sys,支持动态磁盘(跨区、镜像、条带、RAID‑5)卷的逻辑视图。
- 向上通知 mountmgr,完成卷注册,为后续分配盘符、卷 GUID 做准备。
❌ volmgr.sys不能做:
- 不读写 MBR/GPT 分区表;分区表读写是 partmgr.sys 职责。
- 不分配盘符;盘符、文件夹挂载点完全由 mountmgr.sys 完成。
- 不做文件系统格式化;格式化是 ntfs.sys/fastfat.sys;volmgr 只提供卷设备对象。
- 基础磁盘模式下,volmgr 不做 IO 重定向;IO 直接透传给下层 partmgr/disk.sys。
- volmgr 不维护 LDM 数据库;LDM 数据库读写由 vdsdyn.dll(用户态)+ dmio.sys(内核)完成。
七、典型故障现象对照表
| 现象 | 底层根因 | 处理方向 |
|---|---|---|
| 磁盘管理器看到分区,但是没有卷,无法格式化 | partmgr 生成 Partition PDO 成功;volmgr 无法创建 HarddiskVolume 卷对象;卷元数据损坏 | diskpart rescan;检查 volmgr/volmgrx 驱动状态;检查磁盘元数据 |
| diskpart extend 成功,但文件系统大小不变 | volmgr 成功扩展卷逻辑边界;ntfs.sys 文件系统层没有扩容 | 执行extend filesystem,或者 diskpart 里执行 extend 后再文件系统层面扩展 |
| 卷盘符丢失,diskpart list volume 可以看到卷 | volmgr 卷对象正常;mountmgr 盘符映射丢失 | diskpart assign letter 分配盘符;检查 MountedDevices 注册表 |
蓝屏 VOLMGR_INTERNAL_ERROR |
volmgr 内部异常;dmio 动态磁盘元数据损坏;磁盘 IO 硬件故障;第三方存储驱动冲突 | 检查磁盘健康;修复 LDM 数据库;回滚第三方存储驱动 |
| 动态磁盘镜像卷失效 | dmio.sys 读取 LDM 数据库异常;磁盘离线;数据库元数据损坏 | diskpart rescan;修复动态磁盘元数据;备份数据转换回基础磁盘 |
排错常用命令
rescan
list volume
detail volume
八、关键误区总结
- ❌误区:Partition 分区对象就是卷对象。 ✅事实:
Partition是 partmgr 输出的物理分区设备;HarddiskVolume是 volmgr 输出逻辑卷对象;动态磁盘一个卷可以跨多个 Partition。 - ❌误区:volmgr 负责分配盘符 C:/D:。 ✅事实:volmgr 只创建卷对象;盘符分配属于 mountmgr.sys 职责。
- ❌误区:diskpart extend 只需要 volmgr 完成就结束。 ✅事实:extend 分为两层:volmgr 扩展卷扇区范围,ntfs.sys 扩展文件系统元数据;两层都要成功。
- ❌误区:volmgr 直接实现动态磁盘 RAID 镜像。 ✅事实:volmgr 提供卷对象;IO 重定向、镜像同步、RAID‑5 异或计算由 dmio.sys 完成;volmgr 做上层管理。
记忆链路: partmgr 生成 Partition 分区 PDO;volmgr/volmgrx 基于分区创建 HarddiskVolume 卷设备对象;通知 mountmgr 分配盘符与卷 GUID;extend/shrink IOCTL 交由 volmgr 处理;动态磁盘场景 IO 经过 dmio.sys 重定向;卷栈之上附加 volsnap.sys (VSS 快照),再挂载 ntfs/fat 文件系统驱动。
mountmgr.sys(挂载点管理器驱动)完整底层拆解
文件路径:
C:\Windows\System32\drivers\mountmgr.sys驱动类型:内核 PnP 过滤驱动;启动类型:Boot‑Start,内核早期加载;设备对象名称:\Device\MountPointManagerMicrosoft ...。 定位:盘符、卷挂载点的内核管理者;接收 volmgr.sys 上报的HarddiskVolumeX卷设备;维护MountedDevices注册表;创建\DosDevices符号链接;实现盘符分配、卷 GUID 唯一路径、NTFS 文件夹挂载点;diskpart /mountvol/ 磁盘管理修改盘符全部最终调用 mountmgr.sys IOCTL 控制码。
整体链路总览: partmgr.sys → volmgr.sys生成HarddiskVolume卷设备 → volmgr注册MOUNTDEV_MOUNTED_DEVICE_GUID设备接口通知mountmgr.sys;mountmgr读取HKLM\SYSTEM\MountedDevices注册表;创建\DosDevices\X:盘符符号链接、\DosDevices\Volume{GUID}唯一卷符号链接;处理IOCTL_MOUNTMGR_*控制码,实现盘符分配/删除、NTFS目录挂载点;smss.exe开机阶段协助重建符号链接;用户态diskpart、mountvol、Storage WMI下发IOCTL交由mountmgr完成挂载变更Microsoft ...
一、基础信息
- 注册表持久存储:
HKLM\SYSTEM\MountedDevices
- 二进制键值,不使用字符串;两类核心条目:
\DosDevices\C::盘符映射;二进制数据 = 磁盘签名 + 分区偏移,用来匹配物理卷。\??\Volume{xxxxxxxx‑xxxx‑xxxx‑xxxx‑xxxxxxxxxxxx}:卷唯一 GUID 路径,卷格式化时生成,与盘符无关,永久跟随卷。
同一个卷,盘符可以变,但 Volume {GUID} 不变;可以绕过盘符直接通过该 GUID 访问卷。
- 关键 IOCTL 控制码集合(mountmgr.h)Microsoft ...
IOCTL_MOUNTMGR_CREATE_POINT:创建盘符 / 文件夹挂载点IOCTL_MOUNTMGR_DELETE_POINT:删除挂载点IOCTL_MOUNTMGR_QUERY_POINTS:查询卷全部挂载路径IOCTL_MOUNTDEV_QUERY_UNIQUE_ID:获取卷唯一 IDIOCTL_MOUNTDEV_QUERY_DEVICE_NAME:获取底层卷设备对象名\Device\HarddiskVolumeN
- 用户态上层调用工具
diskpart.exe assign letter、mountvol.exe- 磁盘管理 diskmgmt.msc
- PowerShell Storage 模块(Add‑PartitionAccessPath) 全部不直接操作注册表;下发 DeviceIoControl,交由 mountmgr 内核完成,再由 mountmgr 同步更新 MountedDevices 注册表持久化。
二、内核完整存储栈(自上而下)
应用层:diskpart / mountvol / 资源管理器
↓ Win32 API → DeviceIoControl
mountmgr.sys(挂载管理器,\Device\MountPointManager)
↑↓
volmgr.sys + volmgrx.sys(输出HarddiskVolumeX卷设备对象,注册MOUNTDEV设备接口通知mountmgr)
↓
partmgr.sys(分区PDO)
↓
disk.sys → storport/miniport → 物理磁盘
NTFS 文件夹挂载点额外栈: ntfs.sys 识别重解析点
IO_REPARSE_TAG_MOUNT_POINT,指向 mountmgr 维护的目标卷 GUID 路径。
三、两大核心底层流程
流程 1:系统启动,卷枚举、盘符分配完整时序
- partmgr 解析 MBR/GPT 生成分区 Partition PDO;volmgr.sys 基于分区创建
\Device\HarddiskVolumeX卷设备对象。 - volmgr 调用
IoRegisterDeviceInterface注册MOUNTDEV_MOUNTED_DEVICE_GUID设备接口,向 PnP 通告:新卷就绪,通知 mountmgr.sysMicrosoft ...。 - mountmgr 收到 PnP 设备接口通知;向下向卷设备发送 3 条关键 IOCTL:
IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:获取卷内核设备名HarddiskVolumeXIOCTL_MOUNTDEV_QUERY_UNIQUE_ID:获取卷唯一 Volume {GUID}IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME:获取建议符号链接名
- mountmgr 读取注册表
HKLM\SYSTEM\MountedDevices,用磁盘签名 + 分区偏移二进制 ID匹配当前卷:- 匹配成功:使用注册表记录的盘符,在内核
\DosDevices命名空间创建符号链接:\DosDevices\C:→ 指向\Device\HarddiskVolumeX。同时创建\DosDevices\Volume{GUID}永久唯一符号链接。 - 无匹配记录(新磁盘、新分区):mountmgr 自动从 A‑Z 顺序挑选第一个空闲字母分配盘符。
- 匹配成功:使用注册表记录的盘符,在内核
- smss.exe 会话管理器启动,协同 mountmgr 完成 DosDevices 符号链接对用户态会话可见;资源管理器读取
\DosDevices列表渲染 “此电脑” 磁盘列表。
关键点:Volume {GUID} 一定存在;盘符是可变更别名;一个卷可以没有盘符,但一定有 Volume {GUID} 路径。
流程 2:diskpart assign letter=X: 手动分配盘符执行链路
diskpart.exe → VDS vds.exe → vdsbas.dll → DeviceIoControl(IOCTL_MOUNTMGR_CREATE_POINT)
↓ IRP下发内核 mountmgr.sys
1. 内核校验:盘符字母合法性、盘符是否已被其它卷占用;校验卷设备状态。
2. 在内核对象管理器 \DosDevices 命名空间创建符号链接 \DosDevices\X:,指向底层HarddiskVolume卷设备。
3. 更新内核内存挂载点数据库。
4. **持久化写入注册表 HKLM\SYSTEM\MountedDevices**,写入`\DosDevices\X:`二进制映射条目。
5. PnP广播设备变更事件,通知上层资源管理器、各类存储组件刷新视图。
↓
IOCTL返回成功;diskpart输出“分配驱动器号成功”。
流程 3:NTFS 文件夹挂载点(把卷挂载到 D:\mnt 目录,不占用 A‑Z 盘符)
- 用户态:
mountvol D:\mnt \\?\Volume{GUID}\ - mountmgr 校验:目标目录必须是空 NTFS 目录;禁止循环挂载;校验卷状态。
- 通知 ntfs.sys:在目标目录写入重解析点 Reparse Point,标签
IO_REPARSE_TAG_MOUNT_POINT,存储目标卷 GUID。 - mountmgr 更新内存挂载数据库;写入 MountedDevices 注册表持久化该文件夹挂载点。
- 访问
D:\mnt时 ntfs.sys 识别重解析点,跳转至目标卷设备对象;不占用 26 个盘符字母槽位。
文件夹挂载点分为两层:
- mountmgr 负责元数据、注册表、符号链接;
- ntfs.sys 负责目录上的重解析点,实现路径跳转。
四、三类卷访问标识对比
| 标识 | 示例 | 持久性 | 是否可修改 | 说明 |
|---|---|---|---|---|
| 盘符 DriveLetter | C:、E: |
注册表持久 | 可修改 | A‑Z 共 26 个,别名,卷格式化不会固定盘符 |
| 卷唯一 GUID 路径 | \\?\Volume{7ad0241e‑da75‑412d‑848c‑8c61b4fe5a15}\ |
跟随卷本身,格式化生成 | 不可修改 | 卷固有标识,不受盘符变动影响 |
| 内核设备路径 | \Device\HarddiskVolume3 |
会话有效,重启会变 | 系统自动分配 | 内核内部路径,重启磁盘顺序变化会改变编号 |
生产运维建议:脚本尽量使用
\\?\Volume{GUID}\访问卷,避免盘符漂移问题。
五、依赖文件、配套链、上下游关系图谱
| 组件 | 文件名 | 与 mountmgr.sys 关系 |
|---|---|---|
| volmgr.sys / volmgrx.sys | drivers\volmgr*.sys | 下层;生成 HarddiskVolume 卷设备;注册 MOUNTDEV 设备接口通知 mountmgr |
| ntfs.sys / fastfat.sys | 文件系统驱动 | 文件夹挂载点场景:ntfs 负责重解析点读写;mountmgr 负责挂载元数据与注册表 |
| diskpart.exe / mountvol.exe | 用户态工具 | 客户端;下发 IOCTL 调用 mountmgr,不直接写 MountedDevices 注册表 |
| vds.exe(vdsbas.dll) | VDS 服务 | diskpart 后端,封装 IOCTL,转发给 mountmgr |
| smss.exe | 会话管理器 | 开机阶段协助把内核\DosDevices符号链接暴露给用户态会话 |
周边组件关系
- mountmgr ↔ volmgr.sys volmgr 只生产卷设备对象
HarddiskVolumeX;盘符分配完全由 mountmgr 完成;volmgr 不操作盘符、不读写 MountedDevices 注册表。 - mountmgr ↔ diskpart diskpart assign/remove letter,不直接写注册表;全部 IOCTL 下发 mountmgr;mountmgr 内核内部更新 MountedDevices 注册表。
现象:WinPE 环境 diskpart 分配盘符,本质是 mountmgr 工作;WinPE 同样加载 mountmgr.sys 驱动。
- mountmgr ↔ VSS volsnap.sys VSS 快照卷挂载同样经过 mountmgr;快照卷也会分配 Volume {GUID};可以给快照卷分配盘符。
- mountmgr ↔ BCD / 系统启动 系统卷 C 盘盘符由 mountmgr 在开机阶段完成映射;BCD 只记录卷设备位置,不记录盘符。
六、能力边界:能干 / 不能干
✅ mountmgr.sys 可以:
- 接收 volmgr 上报的卷设备,维护卷‑盘符‑Volume {GUID} 映射关系。
- 创建 / 删除
\DosDevices命名空间符号链接(盘符、卷唯一 GUID 路径)。 - 读写维护
HKLM\SYSTEM\MountedDevices注册表持久化挂载配置。 - 处理 NTFS 文件夹挂载点,校验挂载循环冲突,协同 ntfs 设置重解析点。
- 磁盘插拔、卷上线离线时动态更新挂载视图,通知上层应用。
❌ mountmgr.sys不能做:
- 不能生成分区、不能读写 MBR/GPT 分区表;分区表属于 partmgr.sys 职责。
- 不能做文件系统格式化;格式化由 ntfs.sys/fastfat.sys 完成。
- 不实现文件读写;只做路径映射符号链接管理。
- 文件夹挂载点依赖 NTFS 重解析点;FAT32 不支持目录挂载点。
- mountmgr 只管理卷的访问路径;不处理卷内部文件系统损坏。
七、典型故障现象对照表
| 现象 | 底层根因 | 处理方向 |
|---|---|---|
| 磁盘管理器看到卷,但是没有盘符;diskpart list volume 可见卷 | volmgr 卷对象正常;mountmgr 没有分配盘符;MountedDevices 注册表丢失条目 | diskpart assign letter=X:;修复 MountedDevices 注册表 |
| 移动硬盘每次重启盘符发生变化 | MountedDevices 无该卷持久盘符记录;mountmgr 开机按空闲字母自动分配 | 磁盘管理手动指定盘符,写入 MountedDevices 持久化 |
| mountvol 创建文件夹挂载点报错,“目录必须为空 NTFS 目录” | 目标目录非空,或者不是 NTFS 文件系统 | 新建空 NTFS 目录作为挂载点 |
| MountedDevices 注册表损坏,全部盘符错乱 | 注册表二进制条目损坏;磁盘签名变动导致匹配失败 | 删除 MountedDevices 注册表项,重启系统重建映射;注意:C 盘盘符会自动重建,其它盘重新分配盘符 |
| WinPE 中 ESP 分区识别成功,但没有盘符 | mountmgr 识别卷,但是没有分配盘符;ESP 默认不自动分配盘符 | diskpart select partition;assign letter=S: |
常用排错命令
mountvol /L # 列出所有卷、Volume{GUID}、挂载路径
diskpart
list volume
detail volume
八、关键误区总结
- ❌误区:diskpart 直接修改 MountedDevices 注册表。 ✅事实:diskpart 下发 IOCTL,mountmgr 内核驱动完成注册表写入,用户态不直接操作该项。
- ❌误区:volmgr.sys 负责分配 C:/D: 盘符。 ✅事实:volmgr 只生成 HarddiskVolume 卷设备;盘符、符号链接、MountedDevices 注册表全部由 mountmgr.sys 管理。
- ❌误区:Volume {GUID} 就是盘符。 ✅事实:Volume {GUID} 是卷固有唯一标识;盘符只是别名;卷可以无盘符,但一定有 Volume {GUID} 路径。
- ❌误区:文件夹挂载点是 mountmgr 直接写入目录文件。 ✅事实:mountmgr 做挂载元数据;真正目录跳转由 ntfs.sys 的重解析点 Reparse Point 实现。
记忆链路: volmgr 生成 HarddiskVolume 卷设备,通知 mountmgr.sys;mountmgr 读取 MountedDevices 注册表,创建
\DosDevices\X:盘符符号链接与Volume{GUID}唯一卷符号链接;diskpart/mountvol 下发 IOCTL 交由 mountmgr 完成挂载变更;NTFS 目录挂载点协同 ntfs 重解析点实现;卷设备对象重启会变,Volume {GUID} 跟随卷本身。
ntfs.sys(NTFS 文件系统驱动)完整底层拆解
文件路径:
C:\Windows\System32\drivers\ntfs.sys启动类型:Boot‑Start,winload 早期加载;内核模式文件系统驱动;PnP 设备对象:\Device\Ntfs定位:Windows 原生 NTFS 文件系统内核驱动;挂载在 volmgr.sys 输出的HarddiskVolumeX卷设备之上;实现 NTFS 元数据解析、MFT、日志、权限、压缩、稀疏文件、重解析点、事务 NTFS (TxF);处理 IRP 文件读写、创建删除、ACL 安全、USN 日志。
整体链路总览: 应用层API(CreateFile/ReadFile) → I/O管理器 → ntfs.sys挂载在HarddiskVolume卷设备栈;ntfs解析MFT主文件表、$LogFile事务日志;将文件逻辑偏移转换为磁盘簇LBA;IRP下发下层volmgr→partmgr→disk.sys;实现ACL、压缩、稀疏、重解析点;chkdsk调用ntfs内部元数据校验;TxF事务NTFS现代Windows已废弃
一、基础信息
- NTFS 卷核心元数据文件(系统隐藏元文件,MFT 内记录)
元文件 作用 $MFT主文件表,卷上所有文件 / 目录的元数据记录集合,每一条 MFT Record 描述一个对象 $MFTMirrMFT 前 4 条记录的镜像备份,防止 MFT 头部损坏 $LogFileNTFS 事务日志,元数据修改先写日志,实现崩溃恢复(只记录元数据,不记录用户文件内容) $Volume卷元数据:卷名、NTFS 版本、卷 GUID $AttrDef属性定义表(标准信息、数据、文件名、安全描述符等) $Bitmap簇位图,标记哪些簇已占用、哪些空闲 $Boot卷引导扇区,存放 NTFS 卷参数块 VBR $Secure安全描述符存储,ACL 权限集中存储,多个文件可以复用同一份安全描述符 $UsnJrnlUSN 变更日志,记录文件增删改元数据变更,用于索引、备份、同步软件 $Reparse重解析点数据库,符号链接、文件夹挂载点、 junction 元数据
NTFS 最小分配单元:簇 (Cluster),格式化时确定簇大小;扇区是磁盘硬件单位;ntfs.sys 以簇为单位做空间分配。
- ntfs.sys 关键内部机制
- MFT Record:固定大小 1024 字节;小文件属性直接驻留 MFT 记录内(resident),不需要额外磁盘簇;大文件属性非驻留 (non‑resident),存放在外部簇,MFT 记录存放运行列表 (run‑list) 描述簇链。
- $LogFile:Write‑Ahead‑Logging 预写日志;系统断电崩溃重启,ntfs.sys 自动重放 / 回滚元数据事务,保证元数据一致性;用户业务数据不做日志保护。
- TxF(Transactional NTFS):Win7 引入,Win10 1709 开始废弃,不再推荐,新系统不再支持创建 TxF 事务。
- 用户态关联工具
- format.exe:格式化 NTFS 卷,最终下发 IOCTL 交由 ntfs.sys 完成元数据初始化。
- chkdsk.exe:调用 ntfs.sys 内部校验逻辑,扫描修复 MFT、索引、位图等元数据。
- fsutil.exe:操作 USN 日志、稀疏文件、重解析点、NTFS 元信息。
二、完整内核存储栈
应用层:CreateFile / ReadFile / WriteFile / DeleteFile
↓ Win32 API → I/O管理器,生成IRP
ntfs.sys 【NTFS文件系统驱动】
↑↓
volsnap.sys(VSS快照过滤驱动,可选附加栈)
↑↓
volmgr.sys(卷管理器 HarddiskVolumeX)
↓
partmgr.sys(分区管理器 Partition PDO)
↓
disk.sys → storport/miniport → 物理磁盘硬件
重解析点场景:ntfs.sys 识别
IO_REPARSE_TAG_*标签,完成跳转;挂载点重解析点会回调 mountmgr.sys。
三、两大核心底层流程
流程 1:NTFS 卷挂载流程(系统启动时)
- volmgr.sys 生成
\Device\HarddiskVolumeX卷设备对象。 - I/O 管理器执行文件系统识别;尝试加载 ntfs.sys,读取卷头部
$Boot引导扇区(VBR 卷引导记录)。 - ntfs 校验 NTFS 签名;读取卷参数块 VBP,获取簇大小、MFT 起始簇、MFTMirr 位置。
- 读取
$MFT主文件表;读取$LogFile事务日志:- 如果检测到上次非正常关机:执行日志重放,完成未提交元数据事务,或者回滚未完成事务,保证元数据一致。
- 加载核心元文件:\(Bitmap、\)AttrDef、$Secure 等。
- 卷挂载完成;向 mountmgr.sys 通告卷就绪;用户态可以执行文件读写。
故障现象:蓝屏 NTFS_FILE_SYSTEM,大多是 MFT 损坏、磁盘 IO 错误、$LogFile 损坏。
流程 2:写入文件(新建 + 写数据)完整执行链路
- 应用层 CreateFile 创建文件,I/O 管理器生成 IRP_MJ_CREATE 下发 ntfs.sys。
- ntfs 分配一条空闲 MFT Record;填充标准信息属性、文件名属性。
- 如果文件数据小:数据属性驻留 MFT 记录内部;大文件:分配空闲簇,生成 run‑list 运行列表。
- 元数据修改首先写入 $LogFile 预写日志(元数据事务提交)。
- IRP_MJ_WRITE 写用户数据:用户数据直接写入磁盘簇,用户数据不写入 LogFile。
- 更新 $Bitmap 簇位图标记簇已占用;更新目录索引。
- 更新 $UsnJrnl 写入一条 USN 变更记录。
- 定期执行检查点 Checkpoint,把 MFT 元数据刷入磁盘;日志中旧事务可以被回收。
关键点:崩溃之后,元数据保证完整;正在写入的用户文件内容可能半截损坏。$LogFile 只保护元数据,不保护业务数据。
流程 3:NTFS 扩展卷(diskpart extend)分层执行
- volmgr.sys 先执行 IOCTL_VOLUME_EXTEND,扩大卷的逻辑扇区边界(底层卷层面扩容)。
- volmgr 完成后,下发 FSCTL_EXTEND_VOLUME 文件系统控制码给 ntfs.sys。
- ntfs.sys 更新 $Bitmap 簇位图,把新增空闲簇纳入管理;更新 MFT 相关元数据。
diskpart extend 命令,必须两层都成功,卷扩容才算完整。
四、NTFS 关键特性底层实现
- 文件压缩 ntfs.sys 内核实时 LZ77 压缩;属性标记为压缩;读写时内核自动压缩 / 解压;只对非驻留数据属性生效;CPU 开销。
- 稀疏文件 (Sparse File) fsutil 设置稀疏属性;大量全零簇不在磁盘分配实际空间;$Bitmap 标记簇为空闲;读返回零;用于虚拟磁盘、快照、数据库。
- 重解析点 Reparse Point MFT 记录内存储重解析标签 + 自定义数据:
- Junction 目录联结(仅本地目录)
- NTFS 符号链接(支持本地 / UNC 网络路径)
- 文件夹挂载点(mountmgr 协同,标签
IO_REPARSE_TAG_MOUNT_POINT)
ntfs 负责存储重解析点;解析跳转逻辑由对应组件完成。
- USN Change Journal $UsnJrnl 记录卷上文件元数据变更序号;不保存文件内容;备份软件、Windows 搜索索引依靠 USN,不需要全盘扫描文件。可以启用 / 禁用、截断日志。
- ** 安全描述符 ACL \(Secure** NTFS把安全描述符集中存储在\)Secure;多个文件 / 目录复用同一个 SID 安全描述符,节省 MFT 存储空间。
五、依赖文件、配套链、上下游关系图谱
| 组件 | 文件名 | 与 ntfs.sys 关系 |
|---|---|---|
| volmgr.sys | 卷管理器 | ntfs 挂载在 volmgr 输出 HarddiskVolume 卷设备之上;ntfs 依赖卷设备 IO 通路 |
| mountmgr.sys | 挂载管理器 | ntfs 存储重解析点;mountmgr 处理挂载点逻辑;盘符由 mountmgr 管理 |
| volsnap.sys | VSS 快照过滤驱动 | 附加在 ntfs 栈上层;快照 COW 写时复制;ntfs 对快照卷提供只读访问 |
| chkdsk.exe | 用户态工具 | 下发 FSCTL 控制码,调用 ntfs 内部元数据校验修复逻辑 |
| format.exe | 格式化工具 | 下发 FSCTL,由 ntfs.sys 初始化全套 NTFS 元文件 (\(MFT/\)LogFile 等) |
| fsutil.exe | 用户态工具 | 操作 NTFS 内部特性:稀疏、USN、重解析点 |
周边组件关系
- ntfs.sys ↔ diskpart extend diskpart → volmgr 扩展卷底层扇区范围;然后通知 ntfs.sys 扩展文件系统位图元数据;两层缺一不可。
- ntfs.sys ↔ VSS volsnap.sys volsnap 作为过滤驱动在 ntfs 上层;VSS 快照不修改 ntfs 本身 MFT;快照依靠 volsnap 的 COW 复制变更块。
- ntfs.sys ↔ chkdsk chkdsk 分两种模式:
- 联机模式:只做轻量扫描,不能修复占用中的 MFT;
- 离线模式:卷卸载,ntfs.sys 完整扫描 MFT、索引、位图,修复元数据损坏。
- ntfs.sys ↔ \(LogFile断电恢复** 非正常关机重启,ntfs挂载卷阶段自动重放\)LogFile,修复元数据;用户文件内容不被日志保护 **。
六、能力边界:能干 / 不能干
✅ ntfs.sys 可以:
- 解析 NTFS 全套元数据 MFT、\(LogFile、\)Bitmap,实现文件、目录存储管理。
- 预写日志保证元数据崩溃一致性;断电自动恢复元数据。
- 实现 ACL 安全权限、文件压缩、稀疏文件、重解析点、USN 变更日志。
- 处理 IRP 文件读写、创建删除、改名;接收 FSCTL 文件系统控制码,支持格式化、卷扩展。
- 提供元数据校验接口供 chkdsk 调用。
❌ ntfs.sys不能做:
- 不操作 MBR/GPT 分区表;分区表属于 partmgr.sys 职责。
- $LogFile 只保护元数据;用户文件数据没有事务保护,断电会出现文件半截损坏。
- TxF 事务 NTFS 已经废弃,新版本不支持新建事务。
- ntfs 不做物理坏道修复;坏道是 disk.sys/miniport 硬件驱动处理。
- 不分配盘符;盘符挂载完全由 mountmgr.sys 完成。
七、典型故障现象对照表
| 现象 | 底层根因 | 处理方向 |
|---|---|---|
蓝屏 NTFS_FILE_SYSTEM |
MFT 损坏、$LogFile 损坏;磁盘 IO 硬件错误;内存损坏 | chkdsk 离线修复;检查磁盘健康;备份数据 |
| diskpart extend 成功,但磁盘管理器看不到容量变大 | volmgr 卷扩容成功;ntfs 文件系统层没有执行扩展 | 执行fsutil volume extend或者 chkdsk,完成 ntfs 位图扩容 |
| 文件丢失,chkdsk 发现大量文件碎片 / 孤儿 MFT 记录 | MFT 元数据损坏;非正常关机导致元数据不一致 | 离线 chkdsk /f 修复;提前备份数据 |
| 访问 junction 挂载目录报错 | 重解析点损坏;目标对象被删除 | 删除重建 junction / 符号链接 |
| USN 日志异常,搜索索引失效 | $UsnJrnl 损坏 | fsutil usn deletejournal /D 重建 USN 日志 |
常用排错命令
fsutil fsinfo ntfsinfo C: # 查看NTFS卷参数 MFT、簇大小
chkdsk C: /f # 修复NTFS元数据
fsutil usn queryjournal C: # 查询USN日志状态
八、关键误区总结
- ❌误区:\(LogFile日志可以保护用户文件内容,断电文件不会损坏。 ✅事实:\)LogFile 只记录元数据事务;用户数据写入不进入日志;断电正在写入的用户文件依然会损坏。
- ❌误区:diskpart extend 做完,文件系统自动扩容。 ✅事实:extend 分为 volmgr 卷层 + ntfs 文件系统层两层;必须文件系统同步扩展。
- ❌误区:MFT 全部保存在磁盘固定位置。 ✅事实:MFT 本身也是一个文件,可以动态增长;MFTMirr 只备份前 4 条 MFT 记录。
- ❌误区:chkdsk 可以修复用户文件内容损坏。 ✅事实:chkdsk 只修复 NTFS 元数据(MFT、索引、位图);不能修复文件业务内容损坏。
记忆链路: ntfs.sys 挂载在 volmgr 输出 HarddiskVolume 卷设备;以 MFT 为主文件表管理全部文件元数据;$LogFile 预写日志保证元数据崩溃一致性;用户数据不做日志保护;卷扩容分为 volmgr 底层卷扩展 + ntfs 文件系统位图扩展两层;chkdsk 调用 ntfs 内部元数据校验修复接口。

Diskpart 是 Windows 操作系统中的一款命令行磁盘分区工具,用于管理磁盘、分区、卷和虚拟硬盘。它提供了对磁盘的全面控制,包括创建、删除、格式化和调整分区等操作。以下是 Diskpart 命令在 Windows 中的发展时间线:
1. Windows 95(1995年)
- 首次引入:Diskpart 作为 Disk Administrator 工具的一部分首次出现在 Windows 95 中。然而,那个时期的 Diskpart 并不具有现在这样的命令行功能。
- 主要功能:
- 最早是一个图形用户界面工具,用于管理磁盘和分区,但它仍为后续版本的 Diskpart 命令行工具奠定了基础。
2. Windows 2000(2000年)
- 命令行工具首次引入:虽然 Disk Administrator 仍然存在,但 Diskpart 作为一个命令行工具开始在 Windows 2000 中被引入,并开始提供更细粒度的磁盘管理功能。
- 功能增强:
- 引入了命令行界面,允许用户通过 Diskpart 命令直接操作磁盘、分区、卷等。
- 基本的磁盘管理功能开始通过命令行提供,如查看磁盘、创建、删除和格式化分区。
3. Windows XP(2001年)
- 进一步增强命令行支持:Windows XP 继续加强了 Diskpart 的功能,特别是在磁盘管理方面的命令行操作。
- 新增功能:
- 增强了 Diskpart 命令的稳定性和兼容性,使其能够支持更多磁盘和文件系统格式。
- 允许更多复杂的操作,如调整分区大小、设置启动分区等。
4. Windows Vista(2007年)
- 功能升级:Windows Vista 中 Diskpart 的命令得到了增强,支持更多的操作,尤其是在磁盘、分区、卷和虚拟磁盘的管理上。
- 新增功能:
- 增加了对 GPT(GUID Partition Table)磁盘的支持,使得 Diskpart 可以处理更大容量的硬盘。
- 提供了更多的磁盘、分区和卷管理功能,包括对动态磁盘和虚拟磁盘的更好支持。
5. Windows 7(2009年)
- 稳定性和性能提升:Windows 7 中,Diskpart 继续稳定,并增强了许多新的磁盘管理功能,特别是与存储设备、磁盘分区和卷管理相关的操作。
- 新增功能:
- 磁盘清理(Clean)功能:通过 clean 命令,用户可以更安全地清除磁盘上的所有数据,使磁盘恢复到初始状态。
- 对 Windows 7 中新的存储管理功能进行了集成,比如支持 TRIM 命令(对于固态硬盘 SSD 的支持)。
6. Windows 8(2012年)
- 增强支持:Windows 8 增强了对 Diskpart 的支持,特别是在触摸界面和硬件兼容性方面。
- 新增功能:
- 改进了对 UEFI(统一可扩展固件接口)系统的支持,使得 Diskpart 可以在新的启动方式下正常工作。
- 强化了磁盘和分区的动态管理支持,可以创建更多类型的卷,包括具有更复杂设置的卷。
7. Windows 10(2015年)
- 全面优化:Windows 10 中,Diskpart 命令继续得到优化,提供了更强的磁盘管理功能,特别是在针对 SSD 和大容量硬盘的支持方面。
- 新增功能:
- 引入了对 Windows 10 新增存储功能的支持,特别是与混合存储、虚拟磁盘和硬盘重建等相关的功能。
- 强化了对 Resilient File System (ReFS) 文件系统的支持,可以更好地管理新版本的文件系统和磁盘结构。
- 提供了 清除磁盘的更多选项,使得用户可以在多个磁盘间进行分区、格式化以及恢复操作。
8. Windows Server 2016(2016年)
- 企业级支持:在 Windows Server 2016 中,Diskpart 工具为企业级磁盘管理和大规模存储部署提供了更强的支持。
- 新增功能:
- 增强了虚拟硬盘(VHD)的支持,包括 VHD 和 VHDX 文件的管理。
- 继续增强了对现代存储设备的支持,包括更好地与 Storage Spaces(存储空间)和其他存储虚拟化技术集成。
9. Windows 10 版本 1809(2018年)
- 进一步优化功能:Windows 10 版本 1809 继续增强了 Diskpart 的支持,使其能够更好地与系统管理工具和存储设备进行配合。
- 新增功能:
- 改进了对 Windows 10 更新期间磁盘分区管理的支持。
- 强化了对 ReFS 文件系统的支持,可以使用 Diskpart 管理和格式化 ReFS 格式的磁盘。
10. Windows 10 版本 1903(2019年)
- 修复和稳定性增强:版本 1903 增强了 Diskpart 工具的稳定性,并修复了一些已知问题。
- 新增功能:
- 优化了磁盘命令和分区管理操作的响应速度,尤其在较大的磁盘和多个卷管理方面。
- 增强了对 Windows 10 动态存储设备和虚拟硬盘的支持。
11. Windows 11(2021年)
- 现代化优化:Windows 11 中,Diskpart 进一步增强了对新硬件和现代存储设备的支持,尤其是在虚拟化存储和混合存储管理方面。
- 新增功能:
- 提供对新型存储格式和硬件的兼容性,支持更高效的磁盘和分区管理。
- 强化了对 Windows 11 特有存储功能的支持,确保与新版本操作系统的兼容性。
Diskpart 工具自 Windows 2000 引入以来,一直在不断发展,从最初的基础磁盘管理工具逐渐演变为一个强大而灵活的命令行工具,支持更复杂的分区、格式化、卷管理和存储设备操作。随着每个新版本的 Windows 发布,Diskpart 不断增强了对现代硬件、虚拟磁盘和存储管理功能的支持,成为了系统管理员和高级用户管理磁盘和存储设备的重要工具。

DiskPart 图片完整解读 + 全维度配套资料
一、图片基础信息提取
- 程序:
diskpart.exe(Windows 内置磁盘分区底层管理工具) - 版本:10.0.26100.1150(Win11 26100 开发版对应内核磁盘工具)
- 运行环境:PowerShell,路径
C:\WINDOWS\system32\diskpart.exe - 外部启动参数语法(仅 2 个顶层入参)
plaintext
diskpart [/s <script文件路径>] [/?] /s <script> :批量执行diskpart脚本文本 /? :打印顶层帮助(仅展示启动参数,不展示内部子命令)
关键误区:diskpart /?不会列出 select/clean/format 等内部交互子命令,仅展示程序启动参数;需先输入diskpart进入交互控制台,再执行help查看全部分区操作指令。
二、两大启动参数实操示例(对应图中语法)
1. /? 查看顶层帮助(即截图执行命令)
diskpart /?
/s与/?,无分区操作命令清单。2. /s 批量执行脚本(自动化磁盘运维核心)
示例 1:新建脚本 disk_init.txt
select disk 1
clean all
convert gpt
create partition primary size=102400
format fs=ntfs quick label=DATA
assign letter=D
执行脚本
diskpart /s C:\scripts\disk_init.txt
三、diskpart 交互模式完整逻辑(和 vssadmin 对比区分)
1. 进入交互控制台
diskpart
DISKPART>,输入 help 查看上百条内部子命令(磁盘 / 分区 / 卷 / 虚拟磁盘 / 修复)。2. 核心交互指令分类(对标 vssadmin 分层逻辑)
| 操作层级 | 典型命令 | 对应磁盘能力 |
|---|---|---|
| 磁盘层 | select disk / clean / convert mbr/gpt |
整盘清空、分区表转换、磁盘脱机 |
| 分区层 | create partition / delete partition |
创建 ESP/MSR/ 主分区、删除分区 |
| 卷层 | format / assign / shrink / extend |
格式化、分配盘符、扩容缩容分区 |
| VSS / 快照联动 | add shadowstorage / delete shadowstorage |
底层修改卷影存储绑定(vssadmin 等价底层实现) |
| 虚拟磁盘 | create vdisk / attach vdisk |
创建挂载 VHD/VHDX 虚拟硬盘 |
3. 与 vssadmin 功能重叠点(底层互通)
diskpart 内置原生 VSS 卷影存储管理子命令,无需调用 vssadmin 即可修改 ShadowStorage:# diskpart交互内执行,等价 vssadmin add shadowstorage
select volume C
shadowstorage set maxsize=60gb on=F:
四、diskpart VS vssadmin 核心差异对照表
| 维度 | diskpart.exe | vssadmin 1.1 |
|---|---|---|
| 定位 | 全栈磁盘底层工具(分区、格式化、VHD、VSS) | 仅 VSS 卷影副本专用管理工具 |
| 启动模式 | 两种:1. 外部/s脚本;2. 交互式控制台 |
单条命令直接执行,无交互会话 |
| VSS 能力 | 仅支持 ShadowStorage 配额 / 绑定,无法创建 / 删除快照 | 完整覆盖快照创建、删除、回滚、Writer 枚举 |
| 系统限制 | Windows 桌面 / 服务器全功能开放,无 SKU 拦截 | 桌面版屏蔽 Create/Revert 高级快照命令 |
| 输出形式 | 交互控制台,支持批量脚本 | 单次执行纯文本输出,依赖 PowerShell 解析 |
五、特殊 / 另类实操示例(冷门边界场景)
1. 离线硬盘批量擦除脚本(/s 高危脚本)
# wipe_disk.txt
select disk 2
online disk noerr
attributes disk clear readonly
clean all
convert gpt
diskpart /s wipe_disk.txtclean all完整覆盖磁盘所有数据,不可恢复,用于涉密设备销毁。
2. 交互内一键扩容 C 盘(无图形界面方案)
list volume
select volume C
extend size=20480
3. 底层修改快照存储(替代 vssadmin 跨盘绑定)
select volume C
shadowstorage delete
shadowstorage set on=F: maxsize=80GB
4. 批量挂载 VHD 虚拟磁盘脚本
# mount_vhd.txt
create vdisk file=D:\data.vhdx maximum=10240 type=expandable
attach vdisk
select vdisk file=D:\data.vhdx
create partition primary
format fs=ntfs quick
assign letter=Z
六、PowerShell 原生等价命令(diskpart 对应 PS Cmdlet)
Storage 模块原生命令,无需调用 diskpart 脚本:- 列出磁盘:
Get-Disk↔list disk - 清空磁盘:
Clear-Disk↔clean - 创建分区:
New-Partition↔create partition primary - 格式化卷:
Format-Volume↔format fs=ntfs quick - VHD 管理:
New-VHD/Mount-VHD↔create/attach vdisk - VSS 存储配额:
Set-VssShadowStorage↔shadowstorage set maxsize
示例:PowerShell 等价 diskpart 扩容 C 盘
Get-Volume -DriveLetter C | Resize-Volume -Size (Get-Volume C).SizeRemaining + 20GB
七、关键风险提示 ⚠️
diskpart /s脚本无二次确认,clean/delete partition执行后数据直接丢失;- 桌面版 diskpart 无 VSS 功能拦截,可自由修改 ShadowStorage,但无法创建快照(仍依赖 vssadmin/diskshadow);
diskpart /?仅展示启动参数,查看分区操作命令必须进入交互控制台输入 help;- 脚本路径含空格时,需加双引号包裹:
diskpart /s "C:\disk script\init.txt"。

DiskPart help 全命令解析(截图版本 10.0.26100)
一、工具基础说明
- 运行环境:交互式控制台
DISKPART>,区别于外部启动参数diskpart /?(仅展示脚本参数); - 层级逻辑:必须先 SELECT 选中磁盘 / 分区 / 卷 / VHD 对象,才能执行修改、格式化、属性操作;
- 能力覆盖:MBR/GPT 分区管理、RAID 镜像卷、VHD 虚拟磁盘、SAN 存储、VSS 卷影存储、磁盘扩容缩容、分区类型修改、磁盘离线 / 联机、批量脚本注释。
二、命令按功能模块分类(附作用、特殊 / 另类实操示例)
模块 1:对象选中与枚举(基础前置命令)
| 命令 | 核心作用 | 实操示例 |
|---|---|---|
| LIST | 列出磁盘 / 分区 / 卷 / VHD,子参数 list disk / list partition / list volume / list vdisk |
list volume 查看所有盘符、文件系统、VSS 占用 |
| SELECT | 聚焦操作对象,锁定当前操作目标 | select disk 0 / select volume C / select vdisk file="D:\test.vhdx" |
| DETAIL | 输出选中对象完整底层信息(分区 GUID、偏移、VSS、RAID 状态) | detail volume C 查看卷影副本存储绑定(替代 vssadmin 查询) |
模块 2:分区 / 卷创建、删除、转换、扩容缩容
| 命令 | 核心作用 | 特殊冷门场景示例 |
|---|---|---|
| CREATE | 创建分区、简单卷、镜像 RAID 卷、VHD 虚拟磁盘 | create partition efi size=100 新建 ESP 引导分区;create vdisk file=D:\data.vhdx maximum=51200 type=expandable |
| DELETE | 删除分区 / 卷(数据不可逆丢失) | delete partition override 强制删除受保护恢复分区 |
| CONVERT | MBR↔GPT 磁盘转换、动态磁盘互转 | convert gpt 空盘无损转 GPT;convert dynamic 创建软 RAID |
| EXTEND | 卷扩容(占用磁盘后方未分配空间) | extend size=20480 C 盘扩容 20GB |
| SHRINK | 卷缩容,释放未使用空间 | shrink desired=30720 minimum=10240 压缩分区腾出 30GB 空间 |
| ASSIGN | 分配盘符 / 文件夹挂载点 | assign mount=C:\data_mount 无盘符卷挂载至 NTFS 空目录 |
| REMOVE | 移除盘符 / 挂载点 | remove letter=Z 隐藏业务分区盘符 |
模块 3:格式化、文件系统、分区标记
| 命令 | 核心作用 | 实操示例 |
|---|---|---|
| FORMAT | 格式化分区 / 卷,支持快速格式化、标签、文件系统 | format fs=ntfs quick label=DATA compression enable 开启 NTFS 压缩 |
| FILESYSTEMS | 查看当前卷支持的全部文件系统 | 用于判断老旧磁盘能否格式化为 ReFS |
| ACTIVE / INACTIVE | MBR 磁盘标记引导分区;GPT 无需 ACTIVE(ESP 分区自带引导属性) | MBR 修复引导:select partition 1 → active |
| SETID | 修改分区类型 GUID(ESP/MSR/ 恢复分区专用) | set id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b 改为 EFI 分区 |
| GPT | 给 GPT 分区附加特殊属性(隐藏、只读、恢复分区) | gpt attributes=0x8000000000000001 隐藏恢复分区 |
模块 4:磁盘状态管理(离线 / 联机、清理、属性、扫描)
| 命令 | 核心作用 | 运维场景 |
|---|---|---|
| ONLINE / OFFLINE | 磁盘 / 卷联机 / 脱机,SAN 存储故障隔离 | offline disk 隔离故障阵列盘;online disk readonly 只读挂载损坏磁盘取证 |
| ATTRIBUTES | 修改磁盘 / 卷只读、隐藏、脱机属性 | attributes disk clear readonly 解锁写保护 U 盘;attributes volume hidden 隐藏分区 |
| CLEAN | 清空磁盘分区表、所有数据 | clean all 全盘零覆盖擦除涉密硬盘;clean 仅清除分区表 |
| RESCAN | 重新扫描整机磁盘、U 盘、阵列、VHD | 热插拔硬盘后刷新识别,无需重启 |
| UNIQUEID | 查看 / 修改磁盘 GPT GUID、MBR 签名 | 克隆磁盘后修改唯一 ID 避免盘符冲突 |
| AUTOMOUNT | 全局开关新磁盘自动分配盘符 | automount disable 服务器禁止陌生 U 盘自动挂载 |
模块 5:软 RAID / 镜像卷管理(Windows 动态磁盘专属)
| 命令 | 作用 | 示例 |
|---|---|---|
| ADD | 给简单卷添加镜像,创建 RAID1 | add disk 1 为当前卷新增镜像盘 |
| BREAK | 拆分镜像卷,拆分为两块独立简单卷 | break disk 1 nokeep 拆分并删除镜像副本 |
| RECOVER | 修复 RAID5 / 镜像卷,同步奇偶校验数据 | 阵列单盘故障更换后重建镜像 |
| REPAIR | 修复失效 RAID-5 成员盘 | repair disk 2 替换故障磁盘重建校验 |
| IMPORT | 导入跨机动态磁盘组(异地阵列挂载) | 服务器更换主板后导入原有软 RAID |
| MERGE | 合并父子差分 VHD 磁盘 | 差分磁盘合并至母盘,释放差分文件 |
模块 6:VHD 虚拟磁盘全套操作
| 命令 | 作用 | 示例 |
|---|---|---|
| ATTACH | 挂载 VHD/VHDX 文件至系统 | attach vdisk readonly 只读挂载虚拟磁盘取证 |
| DETACH | 卸载分离虚拟磁盘 | detach vdisk 安全弹出 VHD |
| COMPACT | 压缩精简动态 VHD,回收空白占用空间 | compact vdisk 清理虚拟机闲置空白块 |
| EXPAND | 扩容动态 VHD 最大容量 | expand vdisk maximum=102400 VHD 扩容至 100GB |
模块 7:VSS 卷影副本专属交互命令(diskpart 原生,替代 vssadmin)
select volume C
shadowstorage # 子命令:set / delete / query
shadowstorage set maxsize=60gb on=F:
shadowstorage delete
shadowstorage query
vssadmin.exe,磁盘脚本一体化管理快照存储配额。模块 8:脚本、辅助、退出类命令
| 命令 | 作用 | 场景 |
|---|---|---|
| REM | 脚本注释,无执行逻辑 | 写自动化磁盘脚本备注说明 |
| EXIT | 退出 DISKPART 交互控制台 | 脚本执行完毕自动退出 |
| SAN | 配置整机 SAN 存储策略(共享存储多主机) | san policy=onlineall 全部磁盘自动联机;san policy=offlineshared 共享磁盘默认脱机防冲突 |
| RETAIN | 动态卷放置保留分区(兼容旧版引导工具) | 动态磁盘部署双系统引导专用 |
三、DiskPart 与 vssadmin 核心能力区分
- DiskPart:底层磁盘全栈工具,仅可管理ShadowStorage 快照存储配额 / 绑定,不能创建、删除、回滚快照;内置交互会话,支持磁盘分区、RAID、VHD 全操作;桌面 / 服务器系统无功能拦截。
- vssadmin 1.1:VSS 专用工具,完整管控快照生命周期(创建 / 删除 / 回滚)、枚举 VSS Writer/Provider;Windows 桌面版屏蔽快照创建、回滚等高风险指令。
四、特殊高危脚本示例(全命令组合自动化模板)
示例 1:全新硬盘 GPT 分区 + ESP 引导 + 快照跨盘配置
REM 全新磁盘初始化
select disk 1
clean
convert gpt
REM 创建ESP+MSR分区
create partition efi size=100
format fs=fat32 quick label=ESP
assign letter=S
create partition msr size=16
REM 创建数据主分区
create partition primary
format fs=ntfs quick label=DATA
assign letter=D
REM 配置D盘快照存储至F盘(替代vssadmin)
select volume D
shadowstorage delete
shadowstorage set on=F: maxsize=100gb
示例 2:涉密磁盘全盘擦除脚本
select disk 2
offline disk
clean all
convert gpt
示例 3:C 盘扩容一体化操作
list disk
select disk 0
list partition
select partition 3
extend
list volume
select volume C
detail volume
五、PowerShell 原生对应 Cmdlet 速记
| DiskPart 命令 | PowerShell 等效命令 |
|---|---|
| list disk / select disk | Get-Disk / Set-Disk |
| create partition / format | New-Partition / Format-Volume |
| extend / shrink | Resize-Volume |
| attach/detach vdisk | Mount-VHD / Dismount-VHD |
| shadowstorage set | Set-VssShadowStorage |
| clean all | Clear-Disk -RemoveData -RemoveOEM |
⚠️ 关键风险提示
clean/delete partition执行后数据永久丢失,无回收站恢复;convert gpt仅空盘无损转换,已有数据磁盘转换会清空分区;- 生产服务器执行
offline disk会瞬间断开该磁盘所有业务读写; - VSS
shadowstorage delete仅解绑存储池,不会删除已存在快照。
diskpart.exe 完整底层原理(分层架构、调用链路、内核交互、脚本机制、与 VSS / 存储驱动联动)
一、整体分层架构(自上而下执行链路)
PowerShell/CMD → diskpart.exe(用户态交互外壳)
↓
Windows Storage Management API (win32disk.dll / diskmgmt.dll)
↓
WMI 存储提供程序 / VSS COM 组件(卷影存储专用分支)
↓
内核层:disk.sys 磁盘驱动、volsnap.sys(VSS过滤驱动)、partmgr.sys 分区管理器
↓
硬件:磁盘控制器、SATA/NVMe/RAID阵列、VHD虚拟磁盘文件
核心结论
diskpart.exe 不实现任何磁盘底层操作逻辑,仅作为交互式命令解析器 + 脚本解释器,所有硬件 / 分区 / 卷修改均通过系统内置存储 API 下发至内核驱动完成。二、diskpart.exe 用户态程序本体底层特性
- 程序载体
路径:
C:\Windows\System32\diskpart.exe,原生 32/64 位双二进制,无独立安装包,随 Windows 系统内置。 - 运行两种工作模式
- 单次脚本模式(
diskpart /s script.txt)一次性加载脚本文件,逐行解析命令、调用存储 API,执行完成直接退出,无交互会话缓存。 - 交互式控制台模式(直接输入
diskpart进入DISKPART>)常驻内存会话,缓存选中对象上下文(焦点磁盘 / 分区 / 卷 / VHD),所有子命令复用当前选中句柄,退出时销毁会话缓存。
- 单次脚本模式(
- 权限底层约束
所有修改类操作(
clean/format/create partition/shadowstorage set)依赖特权权限:SeDiskOperatorPrivilege磁盘操作特权SeRestorePrivilege卷 / 分区修改特权未 UAC 提升时,API 调用直接返回ERROR_PRIVILEGE_NOT_HELD拒绝执行。
- 依赖核心系统库
win32disk.dll:磁盘分区、MBR/GPT、卷扩容缩容核心 APIvssapi.dll:对接 VSS COM,实现shadowstorage系列子命令virtdisk.dll:VHD/VHDX 虚拟磁盘全套 API(attach/detach/compact/expand)diskmgmt.dll:与磁盘管理图形界面共享同一套底层存储接口
三、核心通信链路:diskpart → 用户态 API → 内核驱动
1. 普通磁盘分区操作链路(以create partition primary为例)
- diskpart 解析
create partition primary size=10240,读取当前select disk X缓存的磁盘句柄; - 调用
win32disk.dll导出存储 APICreatePartition(); - API 通过 IOCTL 控制码下发指令至内核
partmgr.sys分区管理器; partmgr.sys下发 IOCTL 至disk.sys磁盘驱动,修改磁盘 LBA 分区表(MBR/GPT 头部元数据);- 内核刷新磁盘分区缓存,通知资源管理器刷新盘符列表;
- 执行结果沿原路回传给 diskpart,打印成功 / 失败文本。
2. VSS 卷影存储专属链路(shadowstorage set maxsize,和 vssadmin 同源)
- diskpart 解析
shadowstorage set on=F: maxsize=80GB; - 加载
vssapi.dll,调用 VSS COM 接口IVssSnapshotMgmt(和vssadmin.exe调用完全一致); - DCOM 本地通信连接
VSSVC.exe卷影复制服务; - VSSVC 修改注册表
HKLM\SYSTEM\CurrentControlSet\Services\VSS\DiffArea存储绑定元数据; - VSSVC 下发 IOCTL 至
volsnap.sys快照过滤驱动,更新差异存储稀疏文件配额; - 结果返回 diskpart 控制台。
3. VHD 虚拟磁盘操作链路(attach vdisk)
- diskpart 调用
virtdisk.dll的OpenVirtualDisk()API; - 内核
vdisk.sys虚拟磁盘驱动挂载 VHDX 文件,生成虚拟磁盘设备\Device\HarddiskVolumeX; partmgr.sys扫描虚拟磁盘内分区,自动枚举卷;- 系统分配盘符(开启
automount时)。
4. 格式化操作链路(format fs=ntfs quick)
- diskpart 校验选中卷句柄,调用
FormatVolume()存储 API; - 内核
ntfs.sys文件系统驱动执行快速格式化:仅重写分区引导扇区、清空 MFT 主文件表,不覆盖全磁盘数据; - 若不加
quick,驱动逐 LBA 覆盖全分区清零。
四、关键内核驱动分工(diskpart 指令最终执行者)
| 内核驱动 | 对应 diskpart 命令功能 | 底层职责 |
|---|---|---|
disk.sys |
list disk / clean / offline / online | 物理磁盘硬件读写、磁盘状态管理、全盘擦除 |
partmgr.sys |
create/delete partition / convert gpt/mbr | 分区表(MBR/GPT)读写、分区类型管理、分区枚举 |
volmgr.sys |
assign / remove / extend / shrink | 卷管理器、盘符分配、卷扩容缩容、动态磁盘软 RAID |
volsnap.sys |
shadowstorage 全系列子命令 | VSS 快照差异存储管理,COW 拷贝过滤驱动 |
vdisk.sys |
attach/detach/compact/expand vdisk | VHD/VHDX 虚拟磁盘虚拟化层 |
ntfs.sys/refs.sys |
format / filesystem | 文件系统格式化、压缩、标签管理 |
五、交互式会话上下文底层原理(diskpart 独有机制,vssadmin 无)
- 执行
select disk 0→ 内存存储磁盘内核设备句柄、磁盘唯一 ID; - 后续
create partition/clean自动复用该磁盘句柄; - 执行
select volume C→ 切换焦点至卷句柄,shadowstorage/format作用于 C 盘; - 执行
exit→ 释放所有内核句柄、清空内存缓存、销毁会话;
对比:vssadmin 无会话缓存,每条命令必须完整传入/for=C:参数,无上下文记忆。
六、脚本解释器底层机制(diskpart /s)
- 读取外部文本文件,按换行符切割为指令数组;
- 逐行预解析语法,提前校验关键字(create/list/select)合法性;
- 顺序执行每条指令,共享同一份全局焦点上下文,支持跨行连续操作;
- 内置
REM注释解析器:识别行首REM直接跳过,不调用任何 API; - 执行错误默认中断脚本,无 try-catch 容错(需搭配
noerr参数容错,如online disk noerr)。
七、MBR/GPT 分区表底层修改原理(convert /create partition)
- MBR 磁盘
分区表存储在磁盘 0 号扇区(512 字节主引导记录),diskpart 通过
disk.sys直接写入 4 个主分区条目;创建逻辑分区时修改扩展分区表链。 - GPT 磁盘
分区元数据存储在磁盘头部 GPT 表头 + 分区条目数组,自带备份 GPT 表;
convert gpt会在磁盘末尾生成备份分区表,防止元数据损坏;gpt attributes修改分区条目中 64 位属性标记(隐藏、恢复分区)。 - 唯一 ID 管理(
uniqueid命令)MBR 修改主引导签名,GPT 修改磁盘 GUID,写入磁盘头部元数据,用于系统区分多块同型号磁盘。
八、动态磁盘 / 软 RAID 底层原理(ADD/BREAK/RECOVER)
volmgr.sys卷管理器,diskpart 仅下发 RAID 组合指令:convert dynamic:在磁盘末尾创建 LDM(逻辑磁盘管理器)数据库分区,存储跨盘卷镜像 / RAID5 元数据;add disk:向 LDM 数据库写入镜像关联信息,volmgr.sys拦截写入 IO,同步复制数据至两块磁盘实现 RAID1;recover:读取 LDM 数据库校验奇偶数据,重建故障 RAID5 卷。
九、diskpart vs vssadmin 底层核心差异
| 底层维度 | diskpart.exe | vssadmin 1.1 |
|---|---|---|
| 核心依赖库 | win32disk.dll、virtdisk.dll、vssapi.dll | 仅 vssapi.dll(纯 VSS COM 封装) |
| 会话机制 | 交互式焦点上下文缓存 | 无会话,单次执行无状态 |
| 内核覆盖范围 | disk.sys/partmgr/volmgr/vdisk/volsnap 全驱动 | 仅 volsnap.sys、VSSVC 服务 |
| VSS 能力边界 | 仅管理 ShadowStorage 存储配额 / 绑定,无法创建 / 删除快照 | 完整管控快照生命周期、VSS Writer 枚举 |
| 系统 SKU 限制 | 桌面 / 服务器全功能无拦截 | 桌面系统 COM 接口拦截 Create/Revert 快照指令 |
| 脚本支持 | 原生s参数批量脚本,支持磁盘全套操作 |
无原生脚本参数,依赖 PowerShell 循环封装 |
十、典型命令完整底层执行链路示例
示例:select volume C → shadowstorage set on=F: maxsize=60gb
- diskpart 解析
select volume C,调用win32disk.dll获取 C 盘卷 GUID、内核句柄存入会话缓存; - 解析 shadowstorage 子命令,加载
vssapi.dll; - CoCreateInstance 创建
IVssSnapshotMgmtCOM 对象,本地 DCOM 连接 VSSVC.exe; - VSSVC 校验源卷 C、存储卷 F 合法性,计算 60GB 字节配额;
- 修改注册表 DiffArea 绑定配置,下发 IOCTL 至 volsnap.sys 更新差异区稀疏文件上限;
- volsnap 刷新 COW 拷贝规则,返回执行状态;
- diskpart 打印操作完成,会话缓存保留 C 盘焦点。
示例:clean all
select disk 1缓存磁盘句柄;- 调用
win32disk.dll CleanDisk()API,下发 IOCTL 至 disk.sys; - disk.sys 遍历磁盘全部 LBA 扇区,逐扇区写入 0 覆盖;
- 擦除 MBR/GPT 分区表、LDM 数据库、VHD 元数据;
- 内核通知系统移除该磁盘所有卷盘符。
十一、底层故障 / 报错溯源逻辑
访问被拒绝:缺失 SeDiskOperatorPrivilege 特权,未管理员运行;该卷正在使用:文件系统存在占用句柄(页面文件、打开文件),内核 IO 锁定;不支持该卷影存储操作:桌面系统 VSS COM 接口 SKU 校验拦截,仅服务器完整开放;磁盘受写保护:disk.sys 读取磁盘硬件只读标记,或attributes disk readonly软件锁定。
整套 diskpart 脚本:底层原理、完整配套链、分步逻辑链路拆解
一、全局前置配套依赖链(整套脚本运行必须满足的软硬件条件)
1. 用户态依赖链
diskpart.exe加载win32disk.dll(磁盘分区 API)、vssapi.dll(VSS 快照 API)- 权限前置:必须管理员 UAC 提升,持有特权
SeDiskOperatorPrivilege:磁盘清理、分区表改写SeFormatVolumePrivilege:格式化分区SeBackupPrivilege/SeRestorePrivilege:修改 VSS ShadowStorage 绑定
- 服务依赖(缺一不可,否则 shadowstorage 指令报错)
VSSVC.exe(Volume Shadow Copy Service 卷影复制服务)Volume磁盘卷管理器服务
2. 内核驱动配套链(指令最终执行载体)
disk.sys → partmgr.sys → volmgr.sys → ntfs.sys/fat32.sys → volsnap.sys
- disk.sys:物理磁盘硬件读写、全盘 clean 擦除 LBA 扇区
- partmgr.sys:MBR/GPT 分区表头写入、ESP/MSR 特殊分区类型标记
- volmgr.sys:盘符分配、卷句柄管理、卷对象注册
- fat32.sys/ntfs.sys:文件系统快速格式化、MFT/FAT 表重建
- volsnap.sys:VSS 差异存储 COW 过滤驱动,接收 VSSVC 下发的配额 / 绑定规则
3. 磁盘硬件前置条件
disk 1无任何数据、无分区锁、无硬件写保护- 目标存储盘
F:已完成分区格式化,为 NTFS 卷(VSS 仅支持 NTFS 存放差异区) - 磁盘控制器无 RAID 锁、无 SAN 离线策略拦截写入
二、分块逐段:执行逻辑链 + 底层原理
第一块:全新磁盘清空、转换 GPT 分区表
REM 全新磁盘初始化
select disk 1
clean
convert gpt
1. 分步执行逻辑链
select disk 1- diskpart 解析参数,调用
win32disk.dll枚举系统所有物理磁盘,匹配磁盘序号 1; - 将该磁盘内核设备句柄、磁盘唯一硬件 ID存入 diskpart 交互式会话全局焦点缓存;
- 后续
clean/convert全部复用该缓存句柄,无需重复指定磁盘。
- diskpart 解析参数,调用
clean- API 调用
CleanDisk(),下发 IOCTL 控制码至内核disk.sys; - 仅擦除磁盘头部 MBR/GPT 分区表元数据,不覆盖全盘扇区;
- 内核 partmgr.sys 销毁原有所有分区条目,系统临时移除该磁盘所有盘符。
- API 调用
convert gpt- 校验磁盘为空(clean 后无分区,无损转换);
- partmgr.sys 写入磁盘头部 GPT 分区表头、分区条目数组,磁盘尾部写入GPT 备份分区表(防元数据损坏);
- 改写磁盘硬件标识,标记磁盘类型为 GPT,废弃原有 MBR 主引导记录。
底层核心原理
第二块:创建 UEFI 引导专用 ESP + MSR 分区
REM 创建ESP+MSR分区
create partition efi size=100
format fs=fat32 quick label=ESP
assign letter=S
create partition msr size=16
1. 分步执行逻辑链
create partition efi size=100- partmgr.sys 在磁盘未分配空间头部,创建 GPT 专用 ESP 分区;
- 自动写入 ESP 标准分区 GUID:
c12a7328-f81f-11d2-ba4b-00a0c93ec93b,标记为 EFI 系统分区; - 分配固定 100MB LBA 扇区空间。
format fs=fat32 quick label=ESP- 调用文件系统 API,加载
fastfat.sys驱动; quick模式:仅重写分区 FAT 文件分配表、引导扇区,不擦除分区内所有数据块;- 写入卷标签
ESP,注册卷对象至 volmgr.sys。
- 调用文件系统 API,加载
assign letter=S- volmgr.sys 修改系统盘符映射表,将 ESP 卷绑定驱动器号 S:;
- 通知资源管理器刷新盘符列表,系统可见 S 盘。
create partition msr size=16- 创建微软保留分区,写入 MSR 专用 GPT GUID;
- 16MB 固定空间,无格式化、无盘符,仅用于 Windows 动态磁盘、LDM 数据库预留。
底层配套逻辑
第三块:数据主分区创建、格式化、分配 D 盘符
REM 创建数据主分区
create partition primary
format fs=ntfs quick label=DATA
assign letter=D
执行逻辑链
create partition primary- partmgr.sys 占用磁盘剩余全部未分配空间,创建 GPT 主数据分区;
format fs=ntfs quick label=DATA- 调用
ntfs.sys驱动,快速重建 MFT 主文件表、分区引导扇区; - 写入 NTFS 卷标签
DATA,开启 NTFS 基础元数据日志;
- 调用
assign letter=D- volmgr.sys 绑定盘符 D:,系统挂载数据分区,上层程序可读写 D 盘。
第四块:VSS 卷影存储跨盘绑定核心段(shadowstorage 整套指令,等价 vssadmin)
REM 配置D盘快照存储至F盘(替代vssadmin)
select volume D
shadowstorage delete
shadowstorage set on=F: maxsize=100gb
重点完整拆解:VSS 配套链路、底层 COM 通信、内核交互
1. 前置上下文逻辑
select volume D- diskpart 读取会话缓存磁盘句柄,调用
win32disk.dll按盘符 D 匹配卷内核对象; - 将D 盘卷 GUID、卷设备路径
\Device\HarddiskVolumeX存入会话焦点缓存; - 后续所有
shadowstorage指令默认作用于 D 卷,无需重复指定源卷。
2. shadowstorage delete 底层完整链路
通信配套链
IVssSnapshotMgmt → DCOM 本地通信 → VSSVC.exe → volsnap.sys 内核驱动分步底层执行
- vssapi.dll 创建 VSS COM 对象,向 VSSVC 传递源卷 D 的 GUID;
- VSSVC 读取注册表路径
HKLM\SYSTEM\CurrentControlSet\Services\VSS\DiffArea,查找 D 盘原有快照存储绑定记录; - 删除注册表内 D 盘源卷对应的 DiffArea 关联条目;
- VSSVC 下发 IOCTL 指令至内核
volsnap.sys; - volsnap.sys 解除 D 盘 COW 差异存储与旧存储分区的挂载关联;
- 不删除已存在的卷影副本快照,仅切断新快照写入旧差异区;原有快照仍可正常读取、删除。
3. shadowstorage set on=F: maxsize=100gb 底层链路(跨盘快照核心)
完整逻辑链
- 参数解析:源卷 = D:,存储卷 = F:,配额上限 = 100GB(自动换算为字节数值存入注册表);
- COM 鉴权:VSSVC 校验 D、F 均为 NTFS 固定本地卷,排除 U 盘、FAT32、ESP 分区;
- 写入持久化元数据:在
HKLM\SYSTEM\CurrentControlSet\Services\VSS\DiffArea新增一条绑定记录:- SourceVolume = D 盘卷 GUID
- DiffVolume = F 盘卷 GUID
- MaxSpace = 100GB 对应字节数值
- 下发 IOCTL 至 volsnap.sys 过滤驱动:
- 建立 D 盘(源数据卷)与 F 盘(差异存储卷)的 COW 映射关系;
- 设置差异区稀疏文件最大占用上限 100GB;
- 所有 D 盘文件写入操作触发 Copy-On-Write 时,旧数据块自动写入 F 盘
System Volume Information内的 diffarea 稀疏文件;
- 执行结果回传给 diskpart,打印操作完成。
4. 与 vssadmin add shadowstorage 底层同源证明
- diskpart
shadowstorage set与vssadmin add shadowstorage调用完全同一套 VSS COM 接口 IVssSnapshotMgmt; - 写入完全相同的注册表 DiffArea 配置项;
- 最终均由 volsnap.sys 内核驱动执行 COW 绑定;
唯一区别:
- vssadmin 为独立单条命令工具,无会话缓存,必须手动传入
/for=D: /on=F:; - diskpart 依托交互式会话
select volume D缓存卷句柄,简化参数输入。
5. 内核 COW 存储底层物理逻辑
- D 盘用户写入新文件 → volsnap.sys 过滤驱动拦截 IO;
- 未修改原始旧数据块复制至 F 盘隐藏目录
System Volume Information内稀疏差异文件; - 读取 D 盘快照时,驱动自动拼接「原始未修改块 + F 盘差异旧块」,对外展示快照冻结时点完整数据;
- maxsize=100gb 限制稀疏文件最大占用,超出上限系统自动删除最旧快照释放空间。
三、整套脚本全局闭环配套总链路图
PowerShell/CMD 执行diskpart脚本
↓
diskpart.exe 解析逐行指令,维护磁盘/卷会话焦点缓存
↓
分支1(分区/格式化)→ win32disk.dll → partmgr.sys / ntfs.sys / disk.sys → 磁盘硬件LBA扇区写入
分支2(shadowstorage快照绑定)→ vssapi.dll → VSSVC.exe(COM/DCOM)→ volsnap.sys → F盘System Volume Information差异文件
↓
内核驱动统一刷新磁盘/卷缓存,更新注册表分区、VSS DiffArea持久化配置
↓
Windows资源管理器刷新盘符、快照存储挂载关系
四、关键约束底层说明(脚本执行失败常见底层原因)
shadowstorage delete/set报错:VSSVC 服务未启动、F 盘非 NTFS、无管理员 SeRestorePrivilege 权限;convert gpt报错:磁盘存在未删除分区,未执行 clean 清空;create partition efi报错:磁盘为 MBR 格式,GPT 分区表不存在;- 跨盘快照存储限制:源卷与存储卷必须为本地固定 NTFS 卷,不支持移动 U 盘、ReFS、ESP 分区存放差异区。
| DiskPart 命令 | PowerShell 等效命令 | 描述 |
|---|---|---|
| ACTIVE | Set-Partition -PartitionNumber <number> -IsActive $true |
标记分区为活动分区,用于启动系统分区。 |
| ADD | New-Volume -DiskNumber <disk_number> -Size <size> -FileSystem NTFS |
在磁盘上创建新的卷。 |
| ASSIGN | Assign-DriveLetter -Volume <volume> -DriveLetter <letter> |
分配驱动器字母给指定卷。 |
| ATTRIBUTES | Get-Volume <volume> Set-Volume -Attributes <attributes> | |
| ATTACH | Mount-VHD -Path <path_to_vhd> |
挂载虚拟硬盘(VHD)。 |
| AUTOMOUNT | Set-Volume -EnableAutoMount $true |
启用或禁用自动挂载卷。 |
| BREAK | Stop-VirtualDisk -DiskNumber <disk_number> |
中断虚拟磁盘。 |
| CLEAN | Clear-Disk -Number <disk_number> -RemoveData |
清除磁盘上的所有数据,类似于格式化。 |
| COMPACT | Optimize-Volume -DriveLetter <letter> -ReTrim |
对卷进行压缩和优化。 |
| CONVERT | Convert-VHD -Path <path_to_vhd> -VhdType <type> |
转换虚拟硬盘格式(如VHD到VHDX)。 |
| CREATE | New-Partition -DiskNumber <number> -Size <size> -AssignDriveLetter |
创建新的分区并分配驱动器字母。 |
| DELETE | Remove-Partition -DiskNumber <number> -PartitionNumber <number> |
删除指定的分区。 |
| DETAIL | Get-Volume -DiskNumber <disk_number> |
查看磁盘或分区的详细信息。 |
| DETACH | Dismount-VHD -Path <path_to_vhd> |
卸载虚拟硬盘。 |
| EXIT | Exit |
退出 DiskPart 或 PowerShell 会话。 |
| EXTEND | Resize-Partition -DiskNumber <number> -PartitionNumber <number> -Size <new_size> |
扩展分区的大小。 |
| EXPAND | Resize-VHD -Path <path_to_vhd> -SizeBytes <new_size> |
扩展虚拟硬盘的大小。 |
| FILESYSTEMS | Get-Volume |
显示磁盘卷的文件系统信息。 |
| FORMAT | Format-Volume -DriveLetter <letter> |
格式化卷。 |
| GPT | Set-GptPartition -DiskNumber <disk_number> -PartitionNumber <partition_number> -SetId <type_id> |
设置GPT分区类型。 |
| HELP | Get-Help |
获取帮助信息。 |
| IMPORT | Import-Disk -Path <disk_path> |
导入磁盘。 |
| INACTIVE | Set-Partition -PartitionNumber <number> -IsActive $false |
将分区标记为非活动状态。 |
| LIST | Get-Disk |
列出所有磁盘信息。 |
| MERGE | Merge-VHD |
PowerShell 中没有直接合并分区的命令,但可以使用合并虚拟硬盘功能。 |
| ONLINE | Set-Disk -Number <disk_number> -IsOffline $false |
将磁盘设置为联机状态。 |
| OFFLINE | Set-Disk -Number <disk_number> -IsOffline $true |
将磁盘设置为脱机状态。 |
| RECOVER | Repair-Disk -Number <disk_number> |
修复磁盘故障。 |
| REM | # Comment line (PowerShell 中的注释行) |
在脚本中添加注释。 |
| REMOVE | Remove-Partition -DriveLetter <letter> |
移除指定驱动器字母的分区。 |
| REPAIR | Repair-Volume -DriveLetter <letter> |
修复卷上的错误。 |
| RESCAN | Update-Disk |
重新扫描磁盘,检测新的磁盘或分区。 |
| RETAIN | Set-Partition -PartitionNumber <number> -Retain |
保留分区的设置。 |
| SAN | Get-SanPolicy |
显示或设置 SAN 策略。 |
| SELECT | Set-Partition -DiskNumber <number> |
选择一个磁盘或分区。 |
| SETID | Set-GptPartition -DiskNumber <number> -PartitionNumber <number> -SetId <new_id> |
更改分区的 ID。 |
| SHRINK | Shrink-Volume -DriveLetter <letter> -Size <size> |
缩小卷的大小。 |
| UNIQUEID | Get-Partition -DiskNumber <disk_number> Select-Object -Property UniqueId | Select-Object -Property UniqueId |
这个对照表结合了常用命令及其等效 PowerShell 命令,并且每个命令都有简要的说明,帮助你理解如何在不同的环境下进行磁盘和分区管理。
对于磁盘管理,DiskPart 和 PowerShell 提供了强大的功能。你可以使用它们来处理磁盘、分区和虚拟硬盘等。为了便于比较,以下是一个更详细的对照和分析:
对比分析:
-
命令形式差异:
- DiskPart:命令行工具,专门用于磁盘管理,适用于较低级别的操作。它的命令通常是简短且直接的。
- PowerShell:作为一个更通用的脚本语言,PowerShell 提供了更强大的自动化能力和脚本功能。PowerShell 的命令通常是长命令,但允许更多的自定义和复杂操作。
-
功能实现差异:
- DiskPart:提供了原生的磁盘管理命令,直接对磁盘和分区进行操作。对于大部分基础操作,它是快速和高效的。
- PowerShell:通过其模块化功能,你可以使用 PowerShell 管理磁盘、分区、虚拟硬盘等。它不仅能执行磁盘管理,还能进行更复杂的脚本编程和自动化任务。对于批量操作和复杂任务,PowerShell 提供了更好的灵活性和控制。
-
自动化与脚本支持:
- DiskPart:操作通常是一条命令一次执行,不具备太多自动化功能。适合快速、单次的操作。
- PowerShell:支持更强的自动化功能,可以编写脚本来执行批量任务,适合需要频繁执行的操作。
-
错误处理和日志记录:
- DiskPart:操作过程中的错误反馈相对简洁,较难进行详细的错误处理和日志记录。
- PowerShell:提供了详细的错误消息和日志记录功能,使得复杂操作中的错误排查更加方便。
具体命令对比分析:
| DiskPart 命令 | PowerShell 等效命令 | 分析 |
|---|---|---|
| ACTIVE | Set-Partition -PartitionNumber <number> -IsActive $true |
PowerShell 提供了更细粒度的控制,你可以指定分区的详细参数,适合复杂的磁盘管理任务。 |
| ADD | New-Volume -DiskNumber <disk_number> -Size <size> -FileSystem NTFS |
PowerShell 可以创建新卷并指定文件系统,而 DiskPart 仅支持基本操作。 |
| ASSIGN | Assign-DriveLetter -Volume <volume> -DriveLetter <letter> |
PowerShell 允许更细致的控制,如指定特定卷的驱动器字母,而 DiskPart 操作较为简单。 |
| CLEAN | Clear-Disk -Number <disk_number> -RemoveData |
两者都能清除数据,但 PowerShell 在操作前会要求确认,适合避免误操作。 |
| FORMAT | Format-Volume -DriveLetter <letter> |
PowerShell 的格式化命令提供更多选项,如选择文件系统和是否快速格式化。 |
| DELETE | Remove-Partition -DiskNumber <number> -PartitionNumber <number> |
DiskPart 和 PowerShell 都能删除分区,PowerShell 更加灵活,可以指定详细参数。 |
| RESCAN | Update-Disk |
PowerShell 提供了 Update-Disk 来重新扫描磁盘,DiskPart 则需要重新启动或手动触发。 |
- DiskPart:适用于简单、快速的磁盘管理任务,特别是在没有 PowerShell 环境时,或者仅需要进行单次、基础操作时。
- PowerShell:更适合复杂的磁盘管理任务,支持自动化脚本、错误处理、批量操作等,适合需要高度自定义和自动化的环境。
经常进行磁盘管理操作,PowerShell 的扩展性和自动化能力使其成为更强大的工具。
Microsoft DiskPart的命令和PowerShell等效命令,可以为你提供一个简明的对照表:
| DiskPart 命令 | PowerShell 等效命令 |
|---|---|
| ACTIVE | Set-Partition -PartitionNumber <number> -IsActive $true |
| ADD | New-Volume -DiskNumber <disk_number> -Size <size> -FileSystem NTFS |
| ASSIGN | Assign-DriveLetter -Volume <volume> -DriveLetter <letter> |
| ATTRIBUTES | Get-Volume <volume> |
| ATTACH | Mount-VHD -Path <path_to_vhd> |
| AUTOMOUNT | Set-Volume -EnableAutoMount $true |
| BREAK | Stop-VirtualDisk -DiskNumber <disk_number> |
| CLEAN | Clear-Disk -Number <disk_number> -RemoveData |
| COMPACT | Optimize-Volume -DriveLetter <letter> -ReTrim |
| CONVERT | Convert-VHD -Path <path_to_vhd> -VhdType <type> |
| CREATE | New-Partition -DiskNumber <number> -Size <size> -AssignDriveLetter |
| DELETE | Remove-Partition -DiskNumber <number> -PartitionNumber <number> |
| DETAIL | Get-Volume -DiskNumber <disk_number> |
| DETACH | Dismount-VHD -Path <path_to_vhd> |
| EXIT | Exit |
| EXTEND | Resize-Partition -DiskNumber <number> -PartitionNumber <number> -Size <new_size> |
| EXPAND | Resize-VHD -Path <path_to_vhd> -SizeBytes <new_size> |
| FILESYSTEMS | Get-Volume |
| FORMAT | Format-Volume -DriveLetter <letter> |
| GPT | Set-GptPartition -DiskNumber <disk_number> -PartitionNumber <partition_number> -SetId <type_id> |
| HELP | Get-Help |
| IMPORT | Import-Disk -Path <disk_path> |
| INACTIVE | Set-Partition -PartitionNumber <number> -IsActive $false |
| LIST | Get-Disk |
| MERGE | Merge-VHD (PowerShell doesn't have direct merge functionality for partitioning) |
| ONLINE | Set-Disk -Number <disk_number> -IsOffline $false |
| OFFLINE | Set-Disk -Number <disk_number> -IsOffline $true |
| RECOVER | Repair-Disk -Number <disk_number> |
| REM | # Comment line (No direct PowerShell equivalent for non-executing commands) |
| REMOVE | Remove-Partition -DriveLetter <letter> |
| REPAIR | Repair-Volume -DriveLetter <letter> |
| RESCAN | Update-Disk |
| RETAIN | Set-Partition -PartitionNumber <number> -Retain |
| SAN | Get-SanPolicy |
| SELECT | Set-Partition -DiskNumber <number> |
| SETID | Set-GptPartition -DiskNumber <number> -PartitionNumber <number> -SetId <new_id> |
| SHRINK | Shrink-Volume -DriveLetter <letter> -Size <size> |
| UNIQUEID | `Get-Partition -DiskNumber <disk_number> |
Microsoft DiskPart 版本 10.0.26100.1150
ACTIVE - 将选中的分区标记为活动的分区。
ADD - 将镜像添加到一个简单卷。
ASSIGN - 给所选卷分配一个驱动器号或装载点。
ATTRIBUTES - 操纵卷或磁盘属性。
ATTACH - 连接虚拟磁盘文件。
AUTOMOUNT - 启用和禁用基本卷的自动装载。
BREAK - 中断镜像集。
CLEAN - 从磁盘清除配置信息或所有信息。
COMPACT - 尝试减少文件的物理大小。
CONVERT - 在不同的磁盘格式之间转换。
CREATE - 创建卷、分区或虚拟磁盘。
DELETE - 删除对象。
DETAIL - 提供对象详细信息。
DETACH - 分离虚拟磁盘文件。
EXIT - 退出 DiskPart。
EXTEND - 扩展卷。
EXPAND - 扩展虚拟磁盘上可用的最大大小。
FILESYSTEMS - 显示卷上当前和支持的文件系统
FORMAT - 格式化卷或分区
GPT - 给选择的 GPT 分区分配属性。
HELP - 显示命令列表。
IMPORT - 导入磁盘组。
INACTIVE - 将所选分区标为不活动。
LIST - 显示对象列表。
MERGE - 将子磁盘与其父磁盘合并。
ONLINE - 使当前标为脱机的对象联机。
OFFLINE - 使当前标记为联机的对象脱机。
RECOVER - 刷新所选包中所有磁盘的状态。尝试恢复无效包中的磁盘,并重新同步具有过时丛或奇偶校验数据的镜像卷和 RAID5 卷。
REM - 不起任何作用。用来注释脚本。
REMOVE - 删除驱动器号或装载点分配。
REPAIR - 用失败的成员修复一个 RAID-5 卷。
RESCAN - 重新扫描计算机,查找磁盘和卷。
RETAIN - 在一个简单卷下放置一个保留分区。
SAN - 显示或设置当前启动的操作系统的 SAN 策略。
SELECT - 将焦点移动到对象。
SETID - 更改分区类型。
SHRINK - 减小选定卷。
UNIQUEID - 显示或设置磁盘的 GUID 分区表(GPT)标识符或主启动记录(MBR)签名。
| 命令 | 描述 | 示例 |
|---|---|---|
| ACTIVE | 将选中的分区标记为活动的分区。 | ACTIVE |
| ADD | 将镜像添加到一个简单卷。 | ADD DISK=<disk number> |
| ASSIGN | 给所选卷分配一个驱动器号或装载点。 | ASSIGN LETTER=D |
| ATTRIBUTES | 操纵卷或磁盘属性。 | ATTRIBUTES DISK SET READONLY |
| ATTACH | 连接虚拟磁盘文件。 | ATTACH VIRTUALDISK=<path> |
| AUTOMOUNT | 启用和禁用基本卷的自动装载。 | AUTOMOUNT ENABLE |
| BREAK | 中断镜像集。 | BREAK |
| CLEAN | 从磁盘清除配置信息或所有信息。 | CLEAN |
| COMPACT | 尝试减少文件的物理大小。 | COMPACT VIRTUALDISK |
| CONVERT | 在不同的磁盘格式之间转换。 | CONVERT GPT |
| CREATE | 创建卷、分区或虚拟磁盘。 | CREATE PARTITION PRIMARY SIZE=10000 |
| DELETE | 删除对象。 | DELETE PARTITION |
| DETAIL | 提供对象详细信息。 | DETAIL DISK |
| DETACH | 分离虚拟磁盘文件。 | DETACH VIRTUALDISK |
| EXIT | 退出 DiskPart。 | EXIT |
| EXTEND | 扩展卷。 | EXTEND SIZE=5000 |
| EXPAND | 扩展虚拟磁盘上可用的最大大小。 | EXPAND VIRTUALDISK |
| FILESYSTEMS | 显示卷上当前和支持的文件系统。 | FILESYSTEMS |
| FORMAT | 格式化卷或分区。 | FORMAT FS=NTFS QUICK |
| GPT | 给选择的 GPT 分区分配属性。 | GPT ATTRIBUTES=0x0000000000000000 |
| HELP | 显示命令列表。 | HELP |
| IMPORT | 导入磁盘组。 | IMPORT |
| INACTIVE | 将所选分区标为不活动。 | INACTIVE |
| LIST | 显示对象列表。 | LIST DISK |
| MERGE | 将子磁盘与其父磁盘合并。 | MERGE |
| ONLINE | 使当前标为脱机的对象联机。 | ONLINE DISK |
| OFFLINE | 使当前标记为联机的对象脱机。 | OFFLINE DISK |
| RECOVER | 刷新所选包中所有磁盘的状态。尝试恢复无效包中的磁盘。 | RECOVER |
| REM | 不起任何作用。用来注释脚本。 | REM This is a comment |
| REMOVE | 删除驱动器号或装载点分配。 | REMOVE LETTER=D |
| REPAIR | 用失败的成员修复一个 RAID-5 卷。 | REPAIR |
| RESCAN | 重新扫描计算机,查找磁盘和卷。 | RESCAN |
| RETAIN | 在一个简单卷下放置一个保留分区。 | RETAIN |
| SAN | 显示或设置当前启动的操作系统的 SAN 策略。 | SAN SHOW |
| SELECT | 将焦点移动到对象。 | SELECT DISK=1 |
| SETID | 更改分区类型。 | SETID=07 |
| SHRINK | 减小选定卷。 | SHRINK QUERYMIN |
| UNIQUEID | 显示或设置磁盘的 GUID 分区表(GPT)标识符或主启动记录(MBR)签名。 | UNIQUEID DISK |
Microsoft DiskPart 版本 10.0.26100.1150
LIST DISK - 显示磁盘列表。例如,LIST DISK。
LIST PARTITION - 显示所选磁盘上的分区列表。例如,LIST PARTITION。
LIST VOLUME - 显示卷列表。例如,LIST VOLUME。
LIST VDISK - 显示虚拟磁盘列表。
DISKPART> list disk
磁盘 ### 状态 大小 可用 Dyn Gpt
DISKPART> LIST VOLUME
卷 ### LTR 标签 FS 类型 大小 状态 信息
DISKPART> LIST VDISK
没有要显示的虚拟磁盘。
| 命令 | 说明 | 应用场景 |
|---|---|---|
| ACTIVE | 将选中的分区标记为活动的分区。 | 用于启动操作系统的分区。通过将一个分区标记为活动,可以让系统从该分区引导。 |
| ADD | 将镜像添加到一个简单卷。 | 当你需要将一个镜像文件扩展到新的磁盘或者分区时使用。 |
| ASSIGN | 给所选卷分配一个驱动器号或装载点。 | 用于给新创建的卷分配驱动器号,使它能够被系统识别和访问。例如,创建一个新分区后需要分配驱动器号。 |
| ATTRIBUTES | 操纵卷或磁盘属性。 | 修改磁盘的可写属性或隐藏属性等。可以使卷只读或者禁用某些特性。 |
| ATTACH | 连接虚拟磁盘文件。 | 用于将一个虚拟磁盘文件(.vhd)连接到系统,以便访问其中的数据。 |
| AUTOMOUNT | 启用和禁用基本卷的自动装载。 | 自动装载在插入新的磁盘时,自动分配驱动器号和挂载新卷。可以通过禁用此功能防止系统自动挂载新设备。 |
| BREAK | 中断镜像集。 | 用于分离一个镜像集合中的成员,通常用于RAID阵列中分离镜像。 |
| CLEAN | 从磁盘清除配置信息或所有信息。 | 当需要彻底清除磁盘上的所有数据和分区表时使用。例如,准备对磁盘进行全新格式化。 |
| COMPACT | 尝试减少文件的物理大小。 | 在虚拟磁盘中减少空间占用,用于优化存储利用。 |
| CONVERT | 在不同的磁盘格式之间转换。 | 用于将磁盘从MBR(主引导记录)格式转换为GPT(GUID分区表)格式,或者相反。常用于更大容量磁盘的支持。 |
| CREATE | 创建卷、分区或虚拟磁盘。 | 创建新的磁盘分区或虚拟磁盘。常用于安装操作系统前创建分区,或者添加新的磁盘用于存储。 |
| DELETE | 删除对象。 | 删除现有的分区或卷。例如,删除不再需要的分区或虚拟磁盘。 |
| DETAIL | 提供对象详细信息。 | 获取有关选定磁盘、卷或分区的详细信息,例如大小、文件系统类型、状态等。 |
| DETACH | 分离虚拟磁盘文件。 | 用于断开一个已连接的虚拟磁盘文件,解除与操作系统的连接。 |
| EXIT | 退出 DiskPart。 | 退出 DiskPart 工具并返回命令行或其他应用。 |
| EXTEND | 扩展卷。 | 用于将卷扩展到未分配的磁盘空间,通常在增加硬盘容量后使用。 |
| EXPAND | 扩展虚拟磁盘上可用的最大大小。 | 扩展虚拟磁盘文件的容量,常用于动态磁盘中增加存储空间。 |
| FILESYSTEMS | 显示卷上当前和支持的文件系统。 | 查看当前卷支持的文件系统格式,检查是否支持NTFS、FAT32等文件系统。 |
| FORMAT | 格式化卷或分区。 | 用于清空一个分区并重新格式化为指定的文件系统(例如NTFS或FAT32)。常用于磁盘初次使用时。 |
| GPT | 给选择的 GPT 分区分配属性。 | 设置GPT磁盘分区表的属性,例如设置启动分区或系统分区。 |
| HELP | 显示命令列表。 | 在不确定命令的用法时,输入此命令查看所有可用命令的帮助信息。 |
| IMPORT | 导入磁盘组。 | 在使用Windows Server时,将之前导出的磁盘组重新导入。 |
| INACTIVE | 将所选分区标为不活动。 | 用于将活动分区标记为不活动,通常在调整启动分区或改变引导设置时使用。 |
| LIST | 显示对象列表。 | 显示所有磁盘、分区、卷等对象的列表。常用于检查磁盘和分区的状态。 |
| MERGE | 将子磁盘与其父磁盘合并。 | 用于虚拟磁盘或RAID阵列中将不同成员的磁盘合并。 |
| ONLINE | 使当前标为脱机的对象联机。 | 将脱机的磁盘或卷重新联机,恢复其可用性。常用于修复掉线的磁盘。 |
| OFFLINE | 使当前标记为联机的对象脱机。 | 将在线的磁盘或卷标记为脱机,通常用于维护或防止系统访问某些磁盘。 |
| RECOVER | 刷新所选包中所有磁盘的状态。尝试恢复无效包中的磁盘,并重新同步具有过时丛或奇偶校验数据的镜像卷和 RAID5 卷。 | 恢复受损或无法访问的RAID5卷的成员磁盘,确保数据一致性。 |
| REM | 不起任何作用。用来注释脚本。 | 用于脚本文件中添加注释,帮助解释命令的目的。 |
| REMOVE | 删除驱动器号或装载点分配。 | 移除给磁盘分配的驱动器号或挂载点,常用于整理磁盘驱动器的映射。 |
| REPAIR | 用失败的成员修复一个 RAID-5 卷。 | 在RAID5阵列中修复一个损坏的成员磁盘,保持数据的完整性。 |
| RESCAN | 重新扫描计算机,查找磁盘和卷。 | 重新扫描硬件,检测新连接的磁盘或已更改的磁盘状态。 |
| RETAIN | 在一个简单卷下放置一个保留分区。 | 用于管理磁盘空间,保留一个分区用于系统或其他特殊用途。 |
| SAN | 显示或设置当前启动的操作系统的 SAN 策略。 | 用于配置或查看存储区域网络(SAN)的设置。 |
| SELECT | 将焦点移动到对象。 | 选择特定的磁盘、分区或卷,以便进一步操作。 |
| SETID | 更改分区类型。 | 更改磁盘分区的ID,通常用于更改操作系统启动分区的类型。 |
| SHRINK | 减小选定卷。 | 用于缩小卷的大小,释放出未分配的磁盘空间。 |
| UNIQUEID | 显示或设置磁盘的 GUID 分区表(GPT)标识符或主启动记录(MBR)签名。 | 用于显示或修改磁盘的唯一标识符,通常用于磁盘管理和跟踪。 |
每个命令的应用场景可以帮助你理解在实际操作中的具体用法,以及如何根据不同需求使用这些命令。
进一步优化 diskpart 命令,使其更具实用性与易用性,我们可以考虑以下几个方向:
- 加入命令的详细参数:为每个命令列出常见的参数选项,让用户可以更清楚地了解如何使用命令的不同功能。
- 命令执行时的输出解释:对命令执行后的输出结果进行说明,帮助用户理解返回信息。
- 提高可读性:通过视觉化的方式,使用户能更直观地查找所需的信息,例如使用更多的层次结构或对比色彩。
- 添加命令的最佳实践与使用提示:针对每个命令,给出最佳使用实践或常见的误区,帮助用户避免常见的操作错误。
以下是改进后的 diskpart 命令,加入了更多详细信息,优化了结构,并增加了常见问题的解决方案。
进一步优化的 diskpart 命令
| 类别 | 命令 | 简要描述 | 示例 | 参数选项 | 常见问题及解决方法 | 其他说明 |
|---|---|---|---|---|---|---|
| 磁盘操作 | CLEAN |
清除磁盘上的所有分区和数据。 | clean |
无 | - 问题:无法清除磁盘。解决:确保磁盘未被其他程序占用,且没有活动分区。 | 警告:该命令会彻底清除磁盘上的所有数据。使用前请确保已备份重要数据。 |
LIST DISK |
列出所有已连接磁盘及其状态信息。 | list disk |
无 | - 问题:无法列出磁盘。解决:确保磁盘已正确连接并被操作系统识别。 | 显示磁盘编号、大小、状态等信息。 | |
SELECT DISK |
选择一个磁盘进行后续操作。 | select disk 1 |
无 | - 问题:无法选择磁盘。解决:确认磁盘编号正确,且磁盘未被其他进程占用。 | 一次只能选择一个磁盘进行操作。 | |
ATTACH VHD |
附加虚拟硬盘文件(VHD/VHDX)。 | attach vdisk file="C:\path\to\disk.vhd" |
file=<path> |
- 问题:无法附加VHD文件。解决:检查路径是否正确,确保VHD文件未损坏。 | 支持VHD和VHDX格式文件。 | |
DETACH VHD |
分离已附加的虚拟硬盘文件(VHD/VHDX)。 | detach vdisk |
无 | - 问题:无法分离VHD。解决:确保没有程序正在访问虚拟磁盘。 | 必须确保该VHD文件不在使用中。 | |
| 分区操作 | CREATE PARTITION |
创建一个新的分区。 | create partition primary size=50000 |
primary, extended, logical, size=<size>, offset=<offset> |
- 问题:无法创建分区。解决:确保磁盘上有足够的未分配空间。 | 可以指定分区的大小、偏移量及类型。 |
DELETE PARTITION |
删除所选分区。 | delete partition |
无 | - 问题:无法删除分区。解决:确认分区未被操作系统使用,或将其标记为非活动分区后再删除。 | 删除分区后,数据将丢失,请谨慎操作。 | |
SET |
设置分区的属性,如是否为活动分区。 | set id=07 override |
id=<partition id>, override |
- 问题:无法设置属性。解决:确认分区ID正确,且磁盘格式为MBR。 | 适用于MBR格式磁盘,GPT磁盘不支持活动分区。 | |
| 卷操作 | LIST VOLUME |
列出所有已连接的卷。 | list volume |
无 | - 问题:无法列出卷。解决:确认磁盘和分区配置正确。 | 显示卷的驱动器号、文件系统类型、大小等信息。 |
ASSIGN |
为卷分配驱动器号或挂载点。 | assign letter=E |
letter=<drive letter>, mount=<mount point> |
- 问题:无法分配驱动器号。解决:确保没有其他卷使用该字母,并且卷没有问题。 | 分配驱动器号后,卷将被挂载到指定位置。 | |
FORMAT |
格式化分区或卷。 | format fs=ntfs quick |
fs=<file system>, quick |
- 问题:格式化失败。解决:确认分区没有损坏,且格式化过程中没有错误。 | 格式化时可以选择文件系统类型,如 NTFS、FAT32、exFAT 等。 | |
REMOVE |
移除卷上的驱动器号。 | remove letter=E |
无 | - 问题:无法移除驱动器号。解决:确认该卷没有被任何进程占用。 | 仅移除驱动器号,数据不受影响。 | |
| 磁盘管理 | CONVERT |
转换磁盘格式,如从MBR转为GPT。 | convert gpt |
无 | - 问题:转换失败。解决:确保磁盘上没有分区,或先清除所有分区。 | 转换格式会删除磁盘上的所有数据,务必备份数据。 |
RESCAN |
重新扫描所有磁盘,识别新连接的磁盘。 | rescan |
无 | - 问题:扫描失败。解决:检查磁盘连接,或确保操作系统识别到新磁盘。 | 可用于识别新插入的磁盘或修复磁盘识别问题。 | |
| 存储策略 | AUTOMOUNT |
启用或禁用自动挂载卷的功能。 | automount enable |
enable, disable |
- 问题:无法启用自动挂载。解决:确认操作系统设置支持自动挂载。 | 控制系统是否自动挂载新连接的磁盘。 |
SAN |
设置和显示存储区域网络(SAN)策略。 | san policy=onlineall |
policy=<policy type> |
- 问题:设置失败。解决:检查SAN配置是否正确,确保网络环境正常。 | 适用于使用SAN磁盘的配置。 | |
| 其他操作 | HELP |
显示所有可用命令及其帮助信息。 | help |
无 | 无 | 用于获取命令的详细帮助信息。 |
EXIT |
退出 diskpart 命令行工具。 |
exit |
无 | 无 | 完成操作后退出命令行工具。 |
进一步的改进要点:
- 详细参数选项:每个命令下列出了常用的参数和选项,帮助用户精确控制命令行为,避免误操作。
- 命令输出解释:针对某些命令,增加了对输出结果的解释,帮助用户理解返回信息。比如,
LIST DISK会显示磁盘状态、大小、类型等,用户可以根据这些信息做出进一步操作。 - 操作注意事项:增加了每个命令的适用环境说明和相关限制,比如
SET命令仅适用于MBR磁盘等,避免用户使用时产生误解。 - 优化结构与可读性:采用结构,使得信息一目了然,且通过加入颜色或背景色等方式进一步增强视觉层次,便于用户快速找到所需命令。
- 增加常见问题与解决方法:对于常见的错误和操作问题提供了解决方法,减少用户遇到问题时的困扰,提升命令的操作成功率。
通过这些改进,用户能够更高效、更安全地使用 diskpart 命令完成磁盘管理任务,同时避免误操作和数据丢失的风险。
为进一步改进 完整的 diskpart 命令,我们可以添加更多细节,确保每个命令的描述、使用场景和注意事项都涵盖到,进一步提升其实用性和易用性。以下是优化后的版本:
优化后的 diskpart 命令
| 类别 | 命令 | 简要描述 | 示例 | 常见问题及解决方法 | 其他说明 |
|---|---|---|---|---|---|
| 磁盘操作 | CLEAN |
清除磁盘上的所有分区和数据。 | clean |
- 问题:无法清除磁盘。解决:确保磁盘未被其他程序占用。确保磁盘没有正在使用的分区。 | 警告:此命令会删除磁盘上所有的数据,使用前请确认备份。 |
LIST DISK |
列出所有已连接磁盘及其状态信息。 | list disk |
- 问题:无法列出磁盘。解决:确认磁盘是否已正确连接并且操作系统已识别。 | 显示磁盘编号、大小、状态等信息。 | |
SELECT DISK |
选择一个磁盘进行后续操作。 | select disk 1 |
- 问题:无法选择磁盘。解决:确认磁盘编号正确,并且磁盘未被其他进程占用。 | 一次只能选择一个磁盘进行操作。 | |
ATTACH VHD |
附加虚拟硬盘文件(VHD/VHDX)。 | attach vdisk file="C:\path\to\disk.vhd" |
- 问题:无法附加VHD文件。解决:检查路径是否正确,确保VHD文件没有损坏。 | VHD文件可以是VHD或VHDX格式。 | |
DETACH VHD |
分离已附加的虚拟硬盘文件(VHD/VHDX)。 | detach vdisk |
- 问题:无法分离VHD。解决:确保没有程序正在访问虚拟磁盘。 | 分离VHD后,需要重新附加才能再次访问该虚拟磁盘。 | |
| 分区操作 | CREATE PARTITION |
创建一个新的分区。 | create partition primary size=50000 |
- 问题:无法创建分区。解决:确保磁盘上有足够的未分配空间。 | 创建分区时可指定分区类型(primary、extended、logical等)。 |
DELETE PARTITION |
删除所选分区。 | delete partition |
- 问题:无法删除分区。解决:确保目标分区没有被操作系统使用,或先将其标记为非活动。 | 删除分区后,数据将丢失,谨慎操作。 | |
SET |
设置分区的属性,如是否为活动分区。 | set id=07 override |
- 问题:无法设置属性。解决:确认分区ID是否正确,且磁盘格式为MBR。 | 适用于MBR格式磁盘,GPT磁盘不支持活动分区。 | |
| 卷操作 | LIST VOLUME |
列出所有已连接的卷。 | list volume |
- 问题:无法列出卷。解决:确认磁盘和分区已正确配置并且没有错误。 | 显示卷的驱动器号、文件系统类型、大小等信息。 |
ASSIGN |
为卷分配驱动器号或挂载点。 | assign letter=E |
- 问题:无法分配驱动器号。解决:检查是否已有其他卷使用该驱动器号。 | 分配驱动器号后,卷将被挂载到指定位置。 | |
FORMAT |
格式化分区或卷。 | format fs=ntfs quick |
- 问题:格式化失败。解决:确保分区没有损坏,可以尝试先运行 chkdsk 修复卷。 |
格式化会清除所有数据,使用时需小心。 | |
REMOVE |
移除卷上的驱动器号。 | remove letter=E |
- 问题:无法移除驱动器号。解决:确保卷没有在使用中,或该卷没有打开文件。 | 仅移除驱动器号,数据不会被删除。 | |
| 磁盘管理 | CONVERT |
转换磁盘格式,如从MBR转为GPT。 | convert gpt |
- 问题:转换失败。解决:确保磁盘没有分区,或已清除所有分区。 | 转换会删除磁盘上的所有数据,确保数据备份。 |
RESCAN |
重新扫描所有磁盘,识别新连接的磁盘。 | rescan |
- 问题:扫描失败。解决:检查硬件连接,确保操作系统识别到新磁盘。 | 可用于识别新插入的磁盘或修复磁盘识别问题。 | |
| 系统操作 | ACTIVE |
将选定分区设置为活动分区。 | active |
- 问题:无法设置活动分区。解决:确保磁盘格式为MBR,并且所选分区为空闲分区。 | 仅适用于MBR磁盘,GPT磁盘不支持该命令。 |
REPAIR |
修复RAID-5卷的损坏。 | repair |
- 问题:修复失败。解决:确保RAID磁盘的状态正常,检查RAID配置。 | 此命令仅适用于RAID卷,且需要多个磁盘。 | |
| 存储策略 | AUTOMOUNT |
启用或禁用自动挂载卷的功能。 | automount enable |
- 问题:自动挂载失败。解决:检查操作系统设置,确保磁盘正确配置。 | 控制是否自动挂载磁盘或卷。 |
SAN |
设置和显示存储区域网络(SAN)策略。 | san policy=onlineall |
- 问题:设置失败。解决:检查SAN配置是否正确,确保网络环境正常。 | 适用于使用SAN磁盘的配置。 | |
| 其他操作 | HELP |
显示所有可用命令及其帮助信息。 | help |
无问题。 | 用于获取命令的详细帮助信息。 |
EXIT |
退出 diskpart 命令行工具。 |
exit |
无问题。 | 完成操作后退出命令行工具。 |
改进要点:
- 增加命令适用的具体场景:对于每个命令,详细描述了其在实际工作中可能遇到的具体应用场景,如磁盘格式转换、分区删除等。
- 补充了更多命令示例:为每个命令提供了常见的实际应用示例,帮助用户理解如何在不同情况下使用命令。
- 常见问题及解决方法:针对每个命令列出了常见的错误或问题,并提供了解决方案,以便用户在使用过程中能够快速定位并解决问题。
- 详细的使用警告:对于可能导致数据丢失或系统改变的命令(如
clean、delete partition等),在中清晰标出警告,提醒用户操作前备份数据。 - 增加了系统兼容性和限制说明:针对部分命令(如
ACTIVE仅适用于MBR磁盘)进行了兼容性和限制说明,避免用户因操作错误而引发问题。
通过这种更为细致和全面的方式,用户可以更轻松地理解 diskpart 命令的使用方法,提高执行操作的成功率和安全性。
进一步改进并增加更多实用信息,包括 类别、命令、简要描述、示例、常见问题及解决方法 和 其他说明,可以使其更加全面且有助于实际使用。以下是根据这些要求更新后的结构:
完整的 diskpart 命令:
| 类别 | 命令 | 简要描述 | 示例 | 常见问题及解决方法 | 其他说明 |
|---|---|---|---|---|---|
| 磁盘操作 | CLEAN |
从磁盘清除所有分区和卷。 | clean |
问题:无法清除磁盘。解决:确保磁盘没有正在使用的分区或卷。 | 警告:此命令会删除所有数据,操作前请确保数据备份。 |
LIST DISK |
列出所有磁盘。 | list disk |
问题:无法列出磁盘。解决:确保磁盘已连接并被操作系统识别。 | 显示磁盘的编号、状态、大小等信息。 | |
SELECT DISK |
选择要操作的磁盘。 | select disk 0 |
问题:选择磁盘失败。解决:确认目标磁盘编号正确。 | 只能选择一个磁盘进行操作。 | |
| 卷操作 | ASSIGN |
为卷分配驱动器号或装载点。 | assign letter=E |
问题:驱动器号分配失败。解决:检查是否已有其他卷使用该驱动器号。 | 如果没有指定字母,DiskPart会自动分配一个可用字母。 |
FORMAT |
格式化卷或分区。 | format fs=ntfs quick |
问题:格式化失败。解决:确认分区没有损坏,使用 chkdsk 修复卷。 |
格式化过程可能会清除所有数据。 | |
CREATE PARTITION |
创建新的分区。 | create partition primary size=10000 |
问题:分区无法创建。解决:确保磁盘有足够空间且未满。 | 创建分区时请注意选择正确的磁盘。 | |
| 分区操作 | DELETE PARTITION |
删除所选分区。 | delete partition |
问题:无法删除分区。解决:确保分区没有被使用,或先将其标记为非活动分区。 | 删除分区后,数据将丢失。 |
SET |
设置分区属性,如活动分区等。 | set id=07 override |
问题:设置分区属性失败。解决:检查分区ID是否正确。 | 可以用于将分区标记为活动分区。 | |
| 虚拟磁盘操作 | ATTACH VHD |
附加虚拟磁盘文件(VHD)。 | attach vdisk file="C:\path\to\disk.vhd" |
问题:无法附加VHD文件。解决:确保VHD文件路径正确且文件存在。 | 支持多种虚拟磁盘格式(如 VHD、VHDX)。 |
DETACH VHD |
分离虚拟磁盘文件(VHD)。 | detach vdisk |
问题:无法分离VHD。解决:确保没有程序正在使用虚拟磁盘。 | VHD文件分离后,必须重新附加才能访问。 | |
| 系统操作 | ACTIVE |
将所选分区标记为活动分区。 | active |
问题:无法标记为活动分区。解决:确认分区没有损坏,且磁盘是MBR格式。 | 仅限MBR磁盘,GPT磁盘不支持此操作。 |
REPAIR |
修复RAID-5卷中的坏块。 | repair |
问题:修复失败。解决:检查RAID磁盘状态和连接是否正常。 | 需要多个磁盘组成的RAID卷才能使用此命令。 | |
| 磁盘管理 | CONVERT |
转换磁盘格式(如从MBR转换为GPT)。 | convert gpt |
问题:转换失败。解决:确认磁盘没有被分区或分区已清除。 | 该命令会清除磁盘上的所有数据,执行前请备份。 |
RESCAN |
重新扫描所有磁盘,查找新添加的磁盘或卷。 | rescan |
问题:扫描失败。解决:检查磁盘连接,确保硬件正常。 | 用于识别新连接的磁盘或修复磁盘状态。 | |
| 存储策略 | AUTOMOUNT |
启用或禁用自动挂载功能。 | automount enable |
问题:自动挂载失败。解决:检查操作系统设置,确保磁盘配置正确。 | 可以启用或禁用卷的自动挂载功能。 |
SAN |
设置和显示存储区域网络(SAN)策略。 | san policy=onlineall |
问题:SAN策略设置失败。解决:检查存储区域网络配置及网络连接。 | 适用于在SAN环境下管理磁盘。 | |
| 其他操作 | HELP |
显示所有命令的帮助信息。 | help |
无问题。 | 用于获取命令的详细帮助和用法。 |
EXIT |
退出DiskPart命令行工具。 | exit |
无问题。 | 完成所有操作后,可以退出DiskPart。 |
改进要点:
- 类别分类:通过添加类别字段,帮助用户理解命令属于哪个操作领域(如磁盘操作、卷操作、虚拟磁盘操作等),使查找命令时更加方便。
- 简要描述:每个命令的功能简洁说明,帮助用户快速了解命令的作用。
- 示例:为每个命令提供实际示例,让用户能直观理解如何使用该命令。
- 常见问题及解决方法:列出每个命令常见的问题,并给出解决方法,这样用户在遇到问题时可以迅速查找并解决。
- 其他说明:补充命令的特殊注意事项或使用条件,以确保用户在使用时不会遇到意外问题。
通过这种结构,用户可以在操作过程中快速获取所需的命令、用法及可能遇到的问题,从而提高工作效率。
进一步改进化 diskpart 中的命令列表,我们可以将每个命令按照功能、用途、操作对象进行分类,使其更加易于理解和查找。以下是一个分类后的结构建议,其中包含命令、功能描述以及相关操作对象。
化 diskpart 命令列表:
| 命令 | 功能描述 | 操作对象 |
|---|---|---|
| ACTIVE | 将选中的分区标记为活动的分区。 | 分区 |
| ADD | 将镜像添加到一个简单卷。 | 简单卷 |
| ASSIGN | 给所选卷分配一个驱动器号或装载点。 | 卷 |
| ATTRIBUTES | 操纵卷或磁盘属性。 | 卷、磁盘 |
| ATTACH | 连接虚拟磁盘文件。 | 虚拟磁盘文件 |
| AUTOMOUNT | 启用和禁用基本卷的自动装载。 | 基本卷 |
| BREAK | 中断镜像集。 | 镜像集 |
| CLEAN | 从磁盘清除配置信息或所有信息。 | 磁盘 |
| COMPACT | 尝试减少文件的物理大小。 | 文件 |
| CONVERT | 在不同的磁盘格式之间转换。 | 磁盘 |
| CREATE | 创建卷、分区或虚拟磁盘。 | 卷、分区、虚拟磁盘 |
| DELETE | 删除对象。 | 卷、分区、虚拟磁盘 |
| DETAIL | 提供对象详细信息。 | 卷、分区、磁盘、虚拟磁盘 |
| DETACH | 分离虚拟磁盘文件。 | 虚拟磁盘文件 |
| EXIT | 退出 DiskPart。 | 无 |
| EXTEND | 扩展卷。 | 卷 |
| EXPAND | 扩展虚拟磁盘上可用的最大大小。 | 虚拟磁盘 |
| FILESYSTEMS | 显示卷上当前和支持的文件系统。 | 卷 |
| FORMAT | 格式化卷或分区。 | 卷、分区 |
| GPT | 给选择的 GPT 分区分配属性。 | GPT 分区 |
| HELP | 显示命令列表。 | 无 |
| IMPORT | 导入磁盘组。 | 磁盘组 |
| INACTIVE | 将所选分区标为不活动。 | 分区 |
| LIST | 显示对象列表。 | 卷、分区、磁盘、虚拟磁盘 |
| MERGE | 将子磁盘与其父磁盘合并。 | 子磁盘、父磁盘 |
| ONLINE | 使当前标为脱机的对象联机。 | 磁盘、卷、分区、虚拟磁盘 |
| OFFLINE | 使当前标记为联机的对象脱机。 | 磁盘、卷、分区、虚拟磁盘 |
| RECOVER | 刷新所选包中所有磁盘的状态,恢复无效包中的磁盘,并重新同步镜像卷和 RAID5 卷。 | 镜像卷、RAID5 卷、磁盘包 |
| REM | 不起任何作用。用来注释脚本。 | 脚本 |
| REMOVE | 删除驱动器号或装载点分配。 | 驱动器号、装载点 |
| REPAIR | 用失败的成员修复一个 RAID-5 卷。 | RAID-5 卷 |
| RESCAN | 重新扫描计算机,查找磁盘和卷。 | 磁盘、卷 |
| RETAIN | 在一个简单卷下放置一个保留分区。 | 简单卷、保留分区 |
| SAN | 显示或设置当前启动的操作系统的 SAN 策略。 | 操作系统 |
| SELECT | 将焦点移动到对象。 | 卷、分区、磁盘、虚拟磁盘 |
| SETID | 更改分区类型。 | 分区 |
| SHRINK | 减小选定卷。 | 卷 |
| UNIQUEID | 显示或设置磁盘的 GUID 分区表(GPT)标识符或主启动记录(MBR)签名。 | 磁盘 |
改进建议:
- 命令按功能分类:将命令按照其作用对象和功能进行分类(例如:卷操作、磁盘操作、虚拟磁盘操作等),让用户能更快速找到相关命令。
- 添加快捷描述:在功能描述中简明扼要地指出命令的用途,可以让用户快速理解每个命令的作用。
- 对象清晰化:每个命令的“操作对象”列清晰地指出可以应用该命令的对象类型(如卷、分区、磁盘等),帮助用户知道该命令作用的目标。
这种结构能够让用户更容易理解命令的使用场景和功能,便于在实际操作中快速参考和应用。
经过改进和扩展的命令,加入了类别、简要描述、示例、常见问题及解决方法、兼容操作系统及其他说明等内容:
| 类别 | 命令 | 简要描述 | 示例 | 常见问题及解决方法 | 兼容操作系统 | 其他说明 |
|---|---|---|---|---|---|---|
| 磁盘管理 | ACTIVE | 将选中的分区标记为活动分区。 | ACTIVE |
无法找到活动分区时,确保该分区为启动分区。 | Windows Server, Windows 10+ | 仅对主分区有效 |
| 磁盘管理 | ADD | 将镜像添加到一个简单卷。 | ADD DISK |
镜像文件格式不兼容时,检查磁盘类型和文件系统。 | Windows Server, Windows 10+ | 支持多个格式 |
| 磁盘管理 | ASSIGN | 给所选卷分配一个驱动器号或装载点。 | ASSIGN LETTER=E |
驱动器号已分配时,选择其他未占用的驱动器号。 | Windows Server, Windows 10+ | 可用于隐藏分区 |
| 磁盘管理 | ATTRIBUTES | 操控磁盘或分区的属性。 | ATTRIBUTES DISK CLEAR READONLY |
如果权限问题,检查管理员权限。 | Windows Server, Windows 10+ | 支持设置只读 |
| 磁盘管理 | ATTACH | 连接虚拟磁盘文件。 | ATTACH VDISK FILE="D:\disk.vhd" |
文件路径错误时,确认路径正确并存在。 | Windows Server, Windows 10+ | 支持VHD、VHDX格式 |
| 磁盘管理 | AUTOMOUNT | 启用和禁用基本卷的自动装载。 | AUTOMOUNT ENABLE |
如果禁用自动装载,手动装载时需重新配置。 | Windows Server, Windows 10+ | 默认启用 |
| 磁盘管理 | BREAK | 中断镜像集。 | BREAK |
如果分区不可解除,检查磁盘健康状态。 | Windows Server, Windows 10+ | 常用于RAID阵列 |
| 磁盘管理 | CLEAN | 从磁盘清除配置信息或所有信息。 | CLEAN |
清除数据不可恢复,务必备份数据。 | Windows Server, Windows 10+ | 完全清除磁盘内容 |
| 磁盘管理 | COMPACT | 尝试减少文件的物理大小。 | COMPACT |
无法压缩文件时,确认磁盘文件系统是否支持。 | Windows Server, Windows 10+ | 适用于虚拟磁盘文件 |
| 磁盘管理 | CONVERT | 在不同的磁盘格式之间转换。 | CONVERT MBR TO GPT |
转换时数据丢失,务必先备份数据。 | Windows Server, Windows 10+ | 必须在磁盘为空时进行 |
| 磁盘管理 | CREATE | 创建新卷、分区或虚拟磁盘。 | CREATE PARTITION PRIMARY SIZE=50000 |
创建分区失败时,检查磁盘空间是否足够。 | Windows Server, Windows 10+ | 需要足够的未分配空间 |
| 磁盘管理 | DELETE | 删除卷、分区或虚拟磁盘。 | DELETE PARTITION |
删除分区后数据不可恢复,谨慎操作。 | Windows Server, Windows 10+ | 删除后无法恢复数据 |
| 磁盘管理 | DETAIL | 显示所选对象的详细信息。 | DETAIL DISK |
无法显示详细信息时,检查设备是否被识别。 | Windows Server, Windows 10+ | 支持所有磁盘类型 |
| 磁盘管理 | DETACH | 分离虚拟磁盘文件。 | DETACH VDISK |
如果磁盘已被使用,无法分离,关闭相关应用后再试。 | Windows Server, Windows 10+ | 支持VHD、VHDX格式 |
| 磁盘管理 | EXIT | 退出 DiskPart。 | EXIT |
无法退出时,确认是否有未完成的操作。 | Windows Server, Windows 10+ | 无需额外配置 |
| 磁盘管理 | EXTEND | 扩展已选卷的容量。 | EXTEND SIZE=10000 |
扩展失败时,确认是否有足够的连续未分配空间。 | Windows Server, Windows 10+ | 仅支持动态卷 |
| 磁盘管理 | EXPAND | 扩展虚拟磁盘的最大可用空间。 | EXPAND VDISK MAXIMUM |
如果扩展失败,检查磁盘是否已到最大限制。 | Windows Server, Windows 10+ | 适用于虚拟磁盘 |
| 磁盘管理 | FILESYSTEMS | 显示卷上当前和支持的文件系统。 | FILESYSTEMS |
文件系统不支持时,需格式化为支持的格式。 | Windows Server, Windows 10+ | 支持FAT32、NTFS等格式 |
| 磁盘管理 | FORMAT | 格式化卷或分区。 | FORMAT FS=NTFS QUICK |
格式化时会清除所有数据,确保数据已备份。 | Windows Server, Windows 10+ | 支持快速格式化 |
| 磁盘管理 | GPT | 配置分区的GPT格式。 | GPT |
在转换为GPT时,请确保系统支持UEFI启动。 | Windows Server, Windows 10+ | 用于64位系统 |
| 磁盘管理 | HELP | 显示命令列表和帮助信息。 | HELP |
通过 HELP <command> 可以查看单个命令帮助。 |
Windows Server, Windows 10+ | 可帮助新手理解命令 |
| 磁盘管理 | IMPORT | 导入磁盘组配置。 | IMPORT DISK |
如果磁盘无法导入,确保磁盘没有损坏且磁盘组已正确创建。 | Windows Server | 用于群集配置 |
| 磁盘管理 | INACTIVE | 将所选分区标记为非活动。 | INACTIVE |
非活动分区无法启动系统,谨慎操作。 | Windows Server, Windows 10+ | 主要用于MBR磁盘 |
| 磁盘管理 | LIST | 显示磁盘、分区、卷等的列表。 | LIST DISK |
列表为空时,检查设备是否连接或磁盘状态。 | Windows Server, Windows 10+ | 支持显示各种对象 |
| 磁盘管理 | MERGE | 合并子磁盘与父磁盘。 | MERGE |
需要父磁盘和子磁盘的正确配置才能合并。 | Windows Server | 用于RAID配置 |
| 磁盘管理 | ONLINE | 将磁盘标记为在线状态。 | ONLINE DISK |
如果磁盘未正确联机,尝试重新插拔或重启系统。 | Windows Server, Windows 10+ | 适用于物理磁盘 |
| 磁盘管理 | OFFLINE | 将磁盘标记为离线状态。 | OFFLINE DISK |
离线后无法使用该磁盘,谨慎操作。 | Windows Server, Windows 10+ | 适用于物理磁盘 |
| 磁盘管理 | RECOVER | 恢复磁盘的状态,尝试修复故障。 | RECOVER |
无法恢复时,检查磁盘是否有硬件故障。 | Windows Server, Windows 10+ | 用于磁盘修复 |
| 磁盘管理 | REM | 用于添加注释,忽略此行。 | REM This is a comment |
没有实际操作,仅作为脚本注释使用。 | Windows Server, Windows 10+ | 用于批处理脚本 |
| 磁盘管理 | REMOVE | 删除驱动器号或装载点分配。 | REMOVE |
如果驱动器号不可删除,确保没有进程正在使用该驱动器号。 | Windows Server, Windows 10+ | 支持删除非系统分区 |
| 磁盘管理 | REPAIR | 修复RAID5卷中的失败成员。 | REPAIR |
修复失败时,检查硬件和RAID设置是否正确。 | Windows Server | 用于RAID配置 |
| 磁盘管理 | RESCAN | 重新扫描所有磁盘和卷。 | RESCAN |
重新扫描后无法识别设备时,检查连接和电源。 | Windows Server, Windows 10+ | 适用于检测新硬件 |
| 磁盘管理 | RETAIN | 保留分区。 | RETAIN PARTITION |
需要足够的空间用于放置保留分区。 | Windows Server | 通常用于恢复分区 |
| 磁盘管理 | SAN | 显示或设置启动操作系统的SAN策略。 | SAN POLICY=OnlineAll |
配置失败时,确保驱动器已连接并识别。 | Windows Server | 适用于服务器环境 |
| 磁盘管理 | SELECT | 选择磁盘、分区或卷作为活动对象。 | SELECT DISK 0 |
选择不正确时,使用 LIST 命令查看所有可选项。 |
Windows Server, Windows 10+ | 必须选择对象才能操作 |
| 磁盘管理 | SETID | 设置分区ID。 | SETID PARTITION 7 |
更改ID时,务必确认新的ID类型。 | Windows Server, Windows 10+ | 仅适用于GPT分区 |
| 磁盘管理 | SHRINK | 缩小卷的大小。 | SHRINK |
缩小失败时,确认是否有足够的空间可以释放。 | Windows Server, Windows 10+ | 支持动态卷 |
| 磁盘管理 | UNIQUEID | 显示或设置磁盘的唯一标识符。 | UNIQUEID DISK |
如果ID设置失败,检查磁盘是否为系统盘或活动磁盘。 | Windows Server, Windows 10+ | 适用于磁盘识别 |
这个包含了命令的类别、简要描述、示例、常见问题及解决方法、兼容操作系统以及其他说明。希望这些信息可以帮助您更好地理解和应用这些命令。
| 类别 | 命令 | 功能 | 命令示例 |
|---|---|---|---|
| 磁盘管理 | Clean | 从磁盘清除配置信息或所有信息。 | Clean |
| Convert | 在不同的磁盘格式之间转换。 | Convert GPT |
|
| Detail | 提供磁盘或分区的详细信息。 | Detail |
|
| List | 显示磁盘、分区、卷、虚拟磁盘等对象的列表。 | List Disk |
|
| Rescan | 重新扫描计算机,查找磁盘。 | Rescan |
|
| 分区管理 | Active | 将选中的分区标记为活动的分区。 | Active |
| Delete | 删除分区或卷。 | Delete Partition |
|
| Extend | 扩展分区或卷的大小。 | Extend |
|
| Format | 格式化分区或卷。 | Format FS=NTFS |
|
| Gpt | 为选定的分区分配 GPT(GUID 分区表)属性。 | Gpt |
|
| Setid | 更改分区类型。 | Setid 07 |
|
| Shrink | 缩小选定的分区或卷。 | Shrink |
|
| 卷管理 | Assign | 给所选卷分配一个驱动器号或装载点。 | Assign Letter=E |
| Create | 创建新的卷或分区。 | Create Partition Primary |
|
| Delete | 删除卷或分区。 | Delete Volume |
|
| Extend | 扩展卷。 | Extend Size=5000 |
|
| Format | 格式化卷。 | Format FS=NTFS Quick |
|
| Remove | 删除卷的驱动器号或装载点分配。 | Remove Letter=E |
|
| Setid | 更改卷的分区类型。 | Setid 07 |
|
| 虚拟磁盘管理 | Attach | 连接虚拟磁盘文件。 | Attach vdisk file="C:\disk.vhd" |
| Detach | 分离虚拟磁盘文件。 | Detach vdisk |
|
| Expand | 扩展虚拟磁盘的可用最大空间。 | Expand vdisk maximum=50000 |
|
| Merge | 将子磁盘与其父磁盘合并。 | Merge vdisk |
|
| 系统操作 | Automount | 启用或禁用基本卷的自动装载功能。 | Automount enable |
| Exit | 退出 DiskPart。 | Exit |
|
| Offline | 使当前联机的磁盘脱机。 | Offline Disk 1 |
|
| Online | 使当前脱机的磁盘联机。 | Online Disk 1 |
|
| Repair | 修复故障的 RAID-5 卷成员。 | Repair Volume 1 |
|
| 信息查询与帮助 | Detail | 显示对象的详细信息(磁盘、分区、卷等)。 | Detail Disk |
| Help | 显示 DiskPart 可用命令的帮助信息。 | Help |
|
| 其他操作 | Attributes | 操纵磁盘、卷的属性。 | Attributes Disk Clear ReadOnly |
| Break | 中断镜像集。 | Break |
|
| Clean | 从磁盘清除所有配置或信息。 | Clean |
|
| Filesystems | 显示卷上的文件系统类型及支持情况。 | Filesystems |
|
| Import | 导入磁盘组。 | Import |
|
| Inactive | 将选中的分区标记为不活动。 | Inactive |
|
| Retain | 在简单卷下创建保留分区。 | Retain |
|
| San | 显示或设置当前启动操作系统的 SAN 策略。 | San |
|
| Select | 选择磁盘、分区、卷或虚拟磁盘作为当前操作对象。 | Select Disk 1 |
|
| Uniqueid | 显示或设置磁盘的 GUID 分区标识符或 MBR 签名。 | Uniqueid |
| 功能/命令 | 英文术语 | 中文命令 | 中文术语解释 | Windows 7 | Windows 8 | Windows 10 | Windows 11 |
|---|---|---|---|---|---|---|---|
| List Disk | List Disk | 列出磁盘 | 显示系统中所有磁盘的列表。 | 可用 | 可用 | 可用 | 可用 |
| Clean | Clean | 清除磁盘 | 清除磁盘上的所有分区和数据。 | 可用 | 可用 | 可用 | 可用 |
| Clean All | Clean All | 清除全部 | 完全清除磁盘,删除所有分区和数据,彻底清空。 | 可用 | 可用 | 可用 | 可用 |
| Convert | Convert | 转换格式 | 将磁盘转换为其他文件系统格式,如转换为GPT格式。 | 可用 | 可用 | 可用 | 可用 |
| Detail Disk | Detail Disk | 详细磁盘信息 | 显示指定磁盘的详细信息。 | 可用 | 可用 | 可用 | 可用 |
| Detail Volume | Detail Volume | 详细卷信息 | 显示指定卷的详细信息。 | 可用 | 可用 | 可用 | 可用 |
| Offline Disk | Offline Disk | 离线磁盘 | 将磁盘设置为离线状态,防止系统访问。 | 可用 | 可用 | 可用 | 可用 |
| Online Disk | Online Disk | 在线磁盘 | 将磁盘设置为在线状态,允许系统访问。 | 可用 | 可用 | 可用 | 可用 |
| Extend | Extend | 扩展卷 | 扩展现有卷的大小。 | 可用 | 可用 | 可用 | 可用 |
| Shrink | Shrink | 收缩卷 | 收缩现有卷的大小。 | 可用 | 可用 | 可用 | 可用 |
| Set | Set | 设置属性 | 设置分区或卷的属性,如是否启动。 | 可用 | 可用 | 可用 | 可用 |
| Assign | Assign | 分配盘符 | 给磁盘分配驱动器号(盘符)。 | 可用 | 可用 | 可用 | 可用 |
| Remove | Remove | 移除盘符 | 移除磁盘的驱动器号。 | 可用 | 可用 | 可用 | 可用 |
| Automount | Automount | 自动挂载 | 设置是否自动挂载新磁盘。 | 可用 | 可用 | 可用 | 可用 |
| Vhd (Virtual Disk) | Vhd | 虚拟磁盘 | 管理虚拟硬盘文件(VHD),如创建、挂载、分离等操作。 | 不可用 | 可用 | 可用 | 可用 |
| Get | Get | 获取信息 | 获取磁盘、分区、卷等的信息。 | 不可用 | 可用 | 可用 | 可用 |
| Expand | Expand | 扩展虚拟磁盘 | 扩展虚拟磁盘文件的大小。 | 不可用 | 可用 | 可用 | 可用 |
| Repair | Repair | 修复 | 修复RAID卷或其他损坏的磁盘配置。 | 不可用 | 可用 | 可用 | 可用 |
| Merge | Merge | 合并虚拟磁盘 | 合并两个或多个虚拟磁盘文件。 | 不可用 | 不可用 | 可用 | 可用 |
| Select | Select | 选择 | 选择磁盘、分区或卷以进行后续操作。 | 可用 | 可用 | 可用 | 可用 |
| San | San | 存储区域网络 | 处理存储区域网络(SAN)的命令。 | 不可用 | 不可用 | 不可用 | 可用 |
| Uniqueid | Uniqueid | 唯一标识符 | 显示或设置磁盘的唯一标识符。 | 可用 | 可用 | 可用 | 可用 |
| Create Partition Primary | Create Partition Primary | 创建主分区 | 创建一个主分区。 | 可用 | 可用 | 可用 | 可用 |
| Delete Partition | Delete Partition | 删除分区 | 删除现有的磁盘分区。 | 可用 | 可用 | 可用 | 可用 |
| List Volume | List Volume | 列出卷 | 显示系统中所有卷的列表。 | 可用 | 可用 | 可用 | 可用 |
术语解释:
- List Disk(列出磁盘):显示系统中所有磁盘的信息,可以帮助用户选择目标磁盘进行操作。
- Clean(清除磁盘):删除磁盘上的所有分区和数据,恢复磁盘的原始状态。
- Convert(转换格式):将磁盘从一个格式(如MBR)转换为另一个格式(如GPT),用于支持更大的磁盘或不同的分区方案。
- Vhd(虚拟磁盘):虚拟硬盘文件用于创建虚拟机或其他虚拟化技术的存储介质。DiskPart命令提供了对VHD文件的管理能力,如挂载、分离和扩展等。
- San(存储区域网络):与存储区域网络(SAN)相关的命令,主要用于企业级存储管理。
- Repair(修复):修复RAID磁盘阵列或其他虚拟磁盘配置中的错误,确保数据的完整性。
这个改进版本包括了每个命令和功能的中文名称与简要解释,以便更清楚地理解它们在不同Windows版本中的用途。
DiskPart命令的版本差异可以在不同版本的Windows中有所不同。为了帮助你更好地理解各个版本中DiskPart的差异,以下是基于常见的Windows版本(如Windows 7、Windows 8、Windows 10和Windows 11)对DiskPart命令进行的差异整理。内容包括新命令、删除的命令以及某些命令在不同版本中的可用性。
| 功能/命令 | Windows 7 | Windows 8 | Windows 10 | Windows 11 |
|---|---|---|---|---|
| List Disk | 可用 | 可用 | 可用 | 可用 |
| Clean | 可用 | 可用 | 可用 | 可用 |
| Clean All | 可用 | 可用 | 可用 | 可用 |
| Convert | 可用 | 可用 | 可用 | 可用 |
| Detail Disk | 可用 | 可用 | 可用 | 可用 |
| Detail Volume | 可用 | 可用 | 可用 | 可用 |
| Offline Disk | 可用 | 可用 | 可用 | 可用 |
| Online Disk | 可用 | 可用 | 可用 | 可用 |
| Extend | 可用 | 可用 | 可用 | 可用 |
| Shrink | 可用 | 可用 | 可用 | 可用 |
| Set | 可用 | 可用 | 可用 | 可用 |
| Assign | 可用 | 可用 | 可用 | 可用 |
| Remove | 可用 | 可用 | 可用 | 可用 |
| Automount | 可用 | 可用 | 可用 | 可用 |
| Vhd (Virtual Disk) | 可用 | 可用 | 可用 | |
| Get | 可用 | 可用 | 可用 | |
| Expand | 可用 | 可用 | 可用 | |
| Repair | 可用 | 可用 | 可用 | |
| Merge | 可用 | 可用 | ||
| Select | 可用 | 可用 | 可用 | 可用 |
| San | 可用 | |||
| Uniqueid | 可用 | 可用 | 可用 | 可用 |
| Create Partition Primary | 可用 | 可用 | 可用 | 可用 |
| Delete Partition | 可用 | 可用 | 可用 | 可用 |
| List Volume | 可用 | 可用 | 可用 | 可用 |
说明:
- Vhd (Virtual Disk):在Windows 8及之后的版本中,DiskPart命令增加了对虚拟硬盘(VHD)文件的管理功能,提供了诸如创建、挂载、分离VHD等操作。
- Get:这是一个较新的命令,适用于Windows 8及之后的版本,允许用户获取磁盘、分区或卷的详细信息。
- San:这是与存储区域网络(SAN)相关的命令,Windows 11中新增了该命令。
- Merge:Windows 10及之后版本新增了该命令,主要用于合并虚拟磁盘。
- Repair:Windows 8及之后版本中添加了此命令,适用于修复某些卷类型(如RAID)的问题。
总的来说,Windows 7中DiskPart功能相对基础,而随着Windows版本的更新,增加了对虚拟磁盘、RAID修复、存储区域网络等先进功能的支持。
| 类别 | 命令 | 功能 |
|---|---|---|
| 磁盘管理 | Clean | 从磁盘清除配置信息或所有信息。 |
| Convert | 在不同的磁盘格式之间转换。 | |
| Detail | 提供磁盘或分区的详细信息。 | |
| List | 显示磁盘、分区、卷、虚拟磁盘等对象的列表。 | |
| Rescan | 重新扫描计算机,查找磁盘。 | |
| 分区管理 | Active | 将选中的分区标记为活动的分区。 |
| Delete | 删除分区或卷。 | |
| Extend | 扩展分区或卷的大小。 | |
| Format | 格式化分区或卷。 | |
| Gpt | 为选定的分区分配 GPT(GUID 分区表)属性。 | |
| Setid | 更改分区类型。 | |
| Shrink | 缩小选定的分区或卷。 | |
| 卷管理 | Assign | 给所选卷分配一个驱动器号或装载点。 |
| Create | 创建新的卷或分区。 | |
| Delete | 删除卷或分区。 | |
| Extend | 扩展卷。 | |
| Format | 格式化卷。 | |
| Remove | 删除卷的驱动器号或装载点分配。 | |
| Setid | 更改卷的分区类型。 | |
| 虚拟磁盘管理 | Attach | 连接虚拟磁盘文件。 |
| Detach | 分离虚拟磁盘文件。 | |
| Expand | 扩展虚拟磁盘的可用最大空间。 | |
| Merge | 将子磁盘与其父磁盘合并。 | |
| 系统操作 | Automount | 启用或禁用基本卷的自动装载功能。 |
| Exit | 退出 DiskPart。 | |
| Offline | 使当前联机的磁盘脱机。 | |
| Online | 使当前脱机的磁盘联机。 | |
| Repair | 修复故障的 RAID-5 卷成员。 | |
| 信息查询与帮助 | Detail | 显示对象的详细信息(磁盘、分区、卷等)。 |
| Help | 显示 DiskPart 可用命令的帮助信息。 | |
| 其他操作 | Attributes | 操纵磁盘、卷的属性。 |
| Break | 中断镜像集。 | |
| Clean | 从磁盘清除所有配置或信息。 | |
| Filsystems | 显示卷上的文件系统类型及支持情况。 | |
| Import | 导入磁盘组。 | |
| Inactive | 将选中的分区标记为不活动。 | |
| Retain | 在简单卷下创建保留分区。 | |
| San | 显示或设置当前启动操作系统的 SAN 策略。 | |
| Select | 选择磁盘、分区、卷或虚拟磁盘作为当前操作对象。 | |
| Uniqueid | 显示或设置磁盘的 GUID 分区标识符或 MBR 签名。 |
分类说明:
- 磁盘管理:涉及磁盘的操作,如清除、转换格式、详细信息等。
- 分区管理:涉及对分区的管理,包括创建、删除、扩展、格式化等。
- 卷管理:与卷相关的操作,如分配、扩展、格式化等。
- 虚拟磁盘管理:主要用于虚拟磁盘的连接、分离和扩展等。
- 系统操作:与系统的操作及配置有关的命令。
- 信息查询与帮助:提供信息查询和帮助支持的命令。
- 其他操作:一些特定的操作,如属性设置、镜像中断等。
进一步改进和优化 DISKPART 命令的分类、参数、子参数以及示例说明,我们可以对每个命令进行详细的参数拆解和子参数扩展,同时提供更清晰的操作示例,使用户能够更直观地理解如何操作。以下是针对每个命令的优化和示例:
优化后的分类与命令结构:
| 分类 | 命令 | 描述 | 常用参数 | 子参数 | 示例说明 |
|---|---|---|---|---|---|
| 磁盘管理 | CREATE | 创建磁盘、分区或虚拟磁盘。 | PARTITION, VHD, VHDX, PRIMARY, GPT, MBR |
SIZE, LABEL, TYPE |
CREATE PARTITION PRIMARY SIZE=50000(创建一个50000MB大小的主分区) |
| DELETE | 删除磁盘、分区或虚拟磁盘。 | PARTITION, VOLUME, DISK, ALL |
无 | DELETE PARTITION(删除当前分区) |
|
| CLEAN | 清空磁盘,删除所有分区及其数据。 | ALL, F |
无 | CLEAN ALL(彻底清空磁盘,删除所有分区) |
|
| CONVERT | 转换磁盘格式。 | GPT, MBR |
无 | CONVERT GPT(将磁盘转换为GPT格式) |
|
| RESCAN | 重新扫描磁盘,检测新增或更改的硬件。 | 无 | 无 | RESCAN(重新扫描磁盘) |
|
| LIST | 显示磁盘、分区、卷的列表。 | DISK, PARTITION, VOLUME |
无 | LIST DISK(列出所有磁盘) |
|
| ONLINE | 使磁盘联机。 | 无 | 无 | ONLINE DISK 1(将磁盘1设为联机) |
|
| OFFLINE | 使磁盘脱机。 | 无 | 无 | OFFLINE DISK 1(将磁盘1设为脱机) |
|
| RECOVER | 修复或恢复故障磁盘(如RAID修复)。 | 无 | 无 | RECOVER DISK 1(恢复磁盘1) |
|
| 分区管理 | EXTEND | 扩展分区或卷的空间。 | SIZE, MAX |
MBR, GPT |
EXTEND SIZE=10000(将分区扩展10000MB) |
| SHRINK | 缩小分区或卷的空间。 | SIZE, QUERY |
无 | SHRINK SIZE=5000(将分区缩小5000MB) |
|
| ACTIVE | 设置当前分区为活动分区(启动分区)。 | 无 | 无 | ACTIVE(将当前分区设为活动分区) |
|
| INACTIVE | 将当前分区设置为非活动分区。 | 无 | 无 | INACTIVE(将当前分区设置为非活动) |
|
| SETID | 设置分区类型标识符(ID)。 | ID, GUID |
无 | SETID 07(将当前分区类型设为07——NTFS分区) |
|
| UNIQUEID | 显示或设置分区的唯一标识符。 | GUID, VOLUME |
无 | UNIQUEID DISK 1(显示磁盘1的唯一ID) |
|
| GPT | 配置和管理GPT分区表。 | CREATE, DELETE, LIST |
PARTITION |
GPT CREATE(创建GPT分区表) |
|
| 卷管理 | ASSIGN | 给卷分配驱动器号或挂载点。 | LETTER, MOUNT |
无 | ASSIGN LETTER=E(给卷分配驱动器号E) |
| REMOVE | 移除卷的驱动器号或挂载点。 | LETTER, MOUNT |
无 | REMOVE LETTER=E(移除卷的驱动器号E) |
|
| FORMAT | 格式化卷或分区。 | FS=NTFS, LABEL=Data, QUICK |
OVERWRITE, UNIT, BLOCKSIZE |
FORMAT FS=NTFS LABEL=Data QUICK(快速格式化为NTFS格式并命名为Data) |
|
| EXTEND | 扩展卷的大小。 | SIZE, MAX |
无 | EXTEND SIZE=10000(扩展卷至10000MB) |
|
| FILESYSTEMS | 显示支持的文件系统类型。 | 无 | 无 | FILESYSTEMS(显示支持的文件系统类型) |
|
| 虚拟磁盘管理 | ATTACH | 挂载虚拟磁盘(VHD/VHDX)。 | VHD, VHDX |
READWRITE, NOACCESS |
ATTACH VHD=E:\VirtualDisk.vhdx(挂载虚拟磁盘文件) |
| DETACH | 卸载虚拟磁盘(VHD/VHDX)。 | 无 | 无 | DETACH VHD=E:\VirtualDisk.vhdx(卸载虚拟磁盘) |
|
| COMPACT | 压缩虚拟磁盘文件。 | 无 | 无 | COMPACT VHD=E:\VirtualDisk.vhdx(压缩虚拟磁盘) |
|
| EXPAND | 扩展虚拟磁盘的空间。 | SIZE |
无 | EXPAND VHD=E:\VirtualDisk.vhdx SIZE=10000(扩展虚拟磁盘) |
|
| 磁盘分区恢复 | SAN | 配置和管理存储区域网络(SAN)策略。 | 无 | 无 | SAN(配置SAN策略) |
| 脚本与命令控制 | REM | 脚本注释,用于说明脚本中的代码,程序不会执行。 | 无 | 无 | REM This is a comment(此行为注释,不会执行) |
| EXIT | 退出 DISKPART。 |
无 | 无 | EXIT(退出DISKPART命令行) |
|
| 帮助与查询 | HELP | 显示命令帮助信息。 | COMMAND |
无 | HELP LIST DISK(查看 LIST DISK 命令的帮助) |
| BREAK | 中断当前正在执行的命令。 | 无 | 无 | BREAK(中断当前命令) |
详细优化和说明
1. 磁盘管理
- CREATE:
PARTITION: 创建一个分区。VHD,VHDX: 创建虚拟硬盘(VHD/VHDX格式)。- 示例:
CREATE PARTITION PRIMARY SIZE=50000(创建一个50000MB大小的主分区)
- DELETE:
PARTITION: 删除指定分区。VOLUME: 删除指定卷。- 示例:
DELETE PARTITION(删除当前分区)
2. 分区管理
- EXTEND:
SIZE: 扩展分区或卷的大小。MAX: 扩展到可用的最大空间。- 示例:
EXTEND SIZE=10000(将当前分区扩展10000MB)
3. 虚拟磁盘管理
- ATTACH:
VHD,VHDX: 挂载虚拟磁盘文件。READWRITE: 设置挂载为可读写。- 示例:
ATTACH VHD=E:\VirtualDisk.vhdx(挂载虚拟磁盘文件)
4. 格式化与分区扩展
- FORMAT:
FS: 设置文件系统类型(如NTFS、FAT32)。LABEL: 设置卷标。QUICK: 快速格式化,不进行完整检查。- 示例:
FORMAT FS=NTFS LABEL=Data QUICK(快速格式化为NTFS格式并命名为Data)
通过对每个命令、参数及其子参数的详细拆解,我们提供了更具实用性的操作示例。这些示例能够帮助用户更轻松地执行常见的磁盘操作,同时更好地理解每个命令的选项和使用场景。
进一步优化 DISKPART 命令的分类,并增加详细的参数和示例说明,我们可以将每个命令与常用的参数和示例操作一起展示,帮助用户更清晰地理解如何使用每个命令。以下是基于优化分类和命令说明的完整。
进一步优化后的分类和命令示例:
| 分类 | 命令 | 描述 | 常用参数 | 示例说明 |
|---|---|---|---|---|
| 磁盘管理 | CREATE | 创建磁盘、分区或虚拟磁盘。 | VHD, VHDX, PARTITION, PRIMARY, GPT |
CREATE PARTITION PRIMARY SIZE=50000(创建一个50000MB的主分区) |
| DELETE | 删除磁盘、分区或虚拟磁盘。 | VOLUME, PARTITION, DISK, ALL |
DELETE PARTITION(删除当前分区) |
|
| CLEAN | 清空磁盘,删除所有分区及其数据。 | ALL, F |
CLEAN ALL(彻底清空磁盘) |
|
| CONVERT | 转换磁盘格式(如从MBR转为GPT)。 | GPT, MBR |
CONVERT GPT(将磁盘转换为GPT格式) |
|
| RESCAN | 重新扫描磁盘,检测新增或更改的硬件。 | 无 | RESCAN(重新扫描磁盘) |
|
| LIST | 显示磁盘、分区、卷的列表。 | DISK, PARTITION, VOLUME |
LIST DISK(列出所有磁盘) |
|
| ONLINE | 使磁盘联机。 | 无 | ONLINE DISK 1(将磁盘1设为联机) |
|
| OFFLINE | 使磁盘脱机。 | 无 | OFFLINE DISK 1(将磁盘1设为脱机) |
|
| RECOVER | 修复或恢复故障磁盘(如RAID修复)。 | 无 | RECOVER DISK 1(恢复磁盘1) |
|
| 分区管理 | EXTEND | 扩展分区或卷的空间。 | SIZE, MAX |
EXTEND SIZE=10000(将分区扩展10000MB) |
| SHRINK | 缩小分区或卷的空间。 | SIZE, QUERY |
SHRINK SIZE=5000(将分区缩小5000MB) |
|
| ACTIVE | 设置当前分区为活动分区(启动分区)。 | 无 | ACTIVE(将当前分区设为活动分区) |
|
| INACTIVE | 将当前分区设置为非活动分区。 | 无 | INACTIVE(将当前分区设置为非活动) |
|
| SETID | 设置分区类型标识符(ID)。 | ID, GUID |
SETID 07(将当前分区类型设为07——NTFS分区) |
|
| UNIQUEID | 显示或设置分区的唯一标识符。 | GUID, VOLUME |
UNIQUEID DISK 1(显示磁盘1的唯一ID) |
|
| GPT | 配置和管理GPT分区表。 | CREATE, DELETE, LIST |
GPT CREATE(创建GPT分区表) |
|
| 卷管理 | ASSIGN | 给卷分配驱动器号或挂载点。 | LETTER, MOUNT |
ASSIGN LETTER=E(给卷分配驱动器号E) |
| REMOVE | 移除卷的驱动器号或挂载点。 | LETTER, MOUNT |
REMOVE LETTER=E(移除卷的驱动器号E) |
|
| FORMAT | 格式化卷或分区。 | FS=NTFS, LABEL=Data, QUICK |
FORMAT FS=NTFS LABEL=Data QUICK(快速格式化卷) |
|
| EXTEND | 扩展卷的大小。 | SIZE, MAX |
EXTEND SIZE=10000(扩展卷至10000MB) |
|
| FILESYSTEMS | 显示支持的文件系统类型。 | 无 | FILESYSTEMS(显示支持的文件系统类型) |
|
| 虚拟磁盘管理 | ATTACH | 挂载虚拟磁盘(VHD/VHDX)。 | VHD, VHDX |
ATTACH VHD=E:\VirtualDisk.vhdx(挂载虚拟磁盘) |
| DETACH | 卸载虚拟磁盘(VHD/VHDX)。 | 无 | DETACH VHD=E:\VirtualDisk.vhdx(卸载虚拟磁盘) |
|
| COMPACT | 压缩虚拟磁盘文件。 | 无 | COMPACT VHD=E:\VirtualDisk.vhdx(压缩虚拟磁盘) |
|
| EXPAND | 扩展虚拟磁盘的空间。 | SIZE |
EXPAND VHD=E:\VirtualDisk.vhdx SIZE=10000(扩展虚拟磁盘) |
|
| 磁盘分区恢复 | SAN | 配置和管理存储区域网络(SAN)策略。 | 无 | SAN(配置SAN策略) |
| 脚本与命令控制 | REM | 脚本注释,用于说明脚本中的代码,程序不会执行。 | 无 | REM This is a comment(此行为注释,不会执行) |
| EXIT | 退出 DISKPART。 |
无 | EXIT(退出DISKPART命令行) |
|
| 帮助与查询 | HELP | 显示命令帮助信息。 | COMMAND |
HELP LIST DISK(查看 LIST DISK 命令的帮助) |
| BREAK | 中断当前正在执行的命令。 | 无 | BREAK(中断当前命令) |
详细说明与示例:
1. 磁盘管理
- CREATE: 用于创建新磁盘、分区或虚拟磁盘。
- 示例:
CREATE PARTITION PRIMARY SIZE=50000(创建一个50000MB大小的主分区)
- 示例:
- DELETE: 删除分区、卷或整个磁盘。
- 示例:
DELETE PARTITION(删除当前选中的分区)
- 示例:
- CLEAN: 清空磁盘,包括删除所有分区数据。
- 示例:
CLEAN ALL(彻底清空磁盘,删除所有分区)
- 示例:
2. 分区管理
- EXTEND: 扩展现有分区的大小。
- 示例:
EXTEND SIZE=10000(将当前分区扩展10000MB)
- 示例:
- SHRINK: 缩小现有分区的大小。
- 示例:
SHRINK SIZE=5000(将当前分区缩小5000MB)
- 示例:
3. 卷管理
- ASSIGN: 给分区分配驱动器号或挂载点。
- 示例:
ASSIGN LETTER=E(将当前卷分配驱动器号E)
- 示例:
- FORMAT: 格式化分区或卷。
- 示例:
FORMAT FS=NTFS LABEL=Data QUICK(快速格式化为NTFS格式并命名为Data)
- 示例:
4. 虚拟磁盘管理
- ATTACH: 挂载虚拟磁盘(如VHD/VHDX文件)。
- 示例:
ATTACH VHD=E:\VirtualDisk.vhdx(挂载虚拟磁盘文件)
- 示例:
5. 帮助与查询
- HELP: 获取命令的帮助信息。
- 示例:
HELP LIST DISK(查看LIST DISK命令的帮助)
- 示例:
这个包括了更详细的命令描述、常用参数和实际操作示例,帮助用户不仅了解每个命令的基本功能,还能看到如何在实际环境中使用它们。通过这种方式,命令的使用更加直观,用户能够快速上手并完成日常磁盘管理任务。
进一步改进和优化 DISKPART 命令的分类,可以结合命令的功能、应用场景和操作粒度,形成更加清晰、层次化的分类体系。我们可以将命令按功能模块、操作对象以及目标明确划分,使得每个类别更加简洁和易于使用。下面是进一步优化后的分类建议:
优化后的分类:
| 分类 | 命令 | 描述 |
|---|---|---|
| 磁盘管理 | CREATE | 创建磁盘、分区或虚拟磁盘。 |
| DELETE | 删除磁盘、分区或虚拟磁盘。 | |
| CLEAN | 清空磁盘,删除所有分区及其数据。 | |
| CONVERT | 转换磁盘格式(如从MBR转为GPT)。 | |
| RESCAN | 重新扫描磁盘,检测新增或更改的硬件。 | |
| LIST | 显示磁盘、分区、卷的列表。 | |
| ONLINE | 使磁盘联机。 | |
| OFFLINE | 使磁盘脱机。 | |
| RECOVER | 修复或恢复故障磁盘(如RAID修复)。 | |
| 分区管理 | EXTEND | 扩展分区或卷的空间。 |
| SHRINK | 缩小分区或卷的空间。 | |
| ACTIVE | 设置当前分区为活动分区(启动分区)。 | |
| INACTIVE | 将当前分区设置为非活动分区。 | |
| SETID | 设置分区类型标识符(ID)。 | |
| UNIQUEID | 显示或设置分区的唯一标识符。 | |
| GPT | 配置和管理GPT分区表。 | |
| 卷管理 | ASSIGN | 给卷分配驱动器号或挂载点。 |
| REMOVE | 移除卷的驱动器号或挂载点。 | |
| FORMAT | 格式化卷或分区。 | |
| EXTEND | 扩展卷的大小。 | |
| FILESYSTEMS | 显示支持的文件系统类型。 | |
| 虚拟磁盘管理 | ATTACH | 挂载虚拟磁盘(VHD/VHDX)。 |
| DETACH | 卸载虚拟磁盘(VHD/VHDX)。 | |
| COMPACT | 压缩虚拟磁盘文件。 | |
| EXPAND | 扩展虚拟磁盘的空间。 | |
| 磁盘分区恢复 | SAN | 配置和管理存储区域网络(SAN)策略。 |
| 脚本与命令控制 | REM | 脚本注释,用于说明脚本中的代码,程序不会执行。 |
| EXIT | 退出 DISKPART。 |
|
| 帮助与查询 | HELP | 显示命令帮助信息。 |
| BREAK | 中断当前正在执行的命令。 |
进一步的优化思路:
1. 磁盘管理:
- 集中所有与磁盘级操作相关的命令,包括磁盘创建、删除、清理、格式转换、磁盘扫描、联机脱机等。简洁明了,专注于磁盘的基础管理。
2. 分区管理:
- 将所有与分区直接相关的命令放在此类,包括创建、删除、扩展、缩小分区、设置活动分区、设置分区ID等。这部分命令主要操作的是物理或逻辑分区。
3. 卷管理:
- 包含与卷管理相关的命令,如分配驱动器号、格式化、扩展卷等,专注于文件系统和存储空间的管理。
4. 虚拟磁盘管理:
- 专门针对虚拟磁盘的操作,包括挂载、卸载、扩展、压缩等。虚拟磁盘管理成为一个独立模块,便于管理虚拟化存储资源。
5. 磁盘分区恢复:
- 包含RAID恢复、磁盘故障恢复等操作,针对高级用户或系统管理员,帮助他们在磁盘损坏或数据丢失时进行恢复。
6. 脚本与命令控制:
- 用于批处理脚本的控制命令,主要包括注释(
REM)和退出命令(EXIT)。这些命令帮助用户在脚本中加入说明和控制流。
7. 帮助与查询:
- 为了便于用户查询,所有帮助命令和查询功能放在此类。这有助于快速获取命令帮助和手册。
优化后的分类将命令分为七大类,并进一步细化了每个类的功能。这种分类方式增强了命令的逻辑结构,使得用户可以快速找到所需的命令,并且每个模块的功能职责更加明确。同时,这也帮助用户更清晰地理解和管理硬盘、分区、卷、虚拟磁盘等各种存储资源的操作。
DISKPART 命令的分类,并让它们的功能区分更加清晰,可以将命令根据它们的使用场景、操作对象及功能进一步细化。以下是优化后的分类:
| 分类 | 命令 | 描述 |
|---|---|---|
| 磁盘与分区管理 | CREATE | 创建卷、分区或虚拟磁盘。 |
| DELETE | 删除卷、分区或虚拟磁盘。 | |
| CLEAN | 从磁盘清除所有分区和配置,返回为未分配状态。 | |
| EXTEND | 扩展卷或分区的大小。 | |
| SHRINK | 减小卷或分区的大小。 | |
| GPT | 配置和管理GPT分区表的相关设置。 | |
| SETID | 设置分区类型ID。 | |
| UNIQUEID | 显示或设置磁盘的 GUID 或 MBR 标识符。 | |
| 磁盘操作 | LIST | 显示磁盘、分区、卷的列表信息。 |
| RESCAN | 重新扫描系统,识别新增或更改的磁盘。 | |
| CONVERT | 在不同格式间转换磁盘(如转换为 GPT 或 MBR)。 | |
| ONLINE | 使磁盘联机,恢复已脱机的磁盘。 | |
| OFFLINE | 使磁盘脱机,断开与系统的连接。 | |
| 分区与卷属性管理 | ACTIVE | 将选定分区标记为活动分区,常用于启动分区。 |
| INACTIVE | 将选定分区标记为非活动状态。 | |
| ATTRIBUTES | 显示或更改分区或卷的属性(如只读、隐藏等)。 | |
| 卷操作 | ASSIGN | 给卷分配驱动器号或装载点。 |
| REMOVE | 删除卷的驱动器号或装载点分配。 | |
| FORMAT | 格式化选定卷或分区。 | |
| FILESYSTEMS | 显示当前卷支持的文件系统类型。 | |
| EXTEND | 扩展现有卷的空间。 | |
| 虚拟磁盘操作 | ATTACH | 连接虚拟磁盘文件(VHD/VHDX)。 |
| DETACH | 分离虚拟磁盘文件(VHD/VHDX)。 | |
| COMPACT | 尝试压缩虚拟磁盘文件,减小文件大小。 | |
| EXPAND | 扩展虚拟磁盘的大小,增加可用空间。 | |
| 磁盘分区恢复与故障修复 | RECOVER | 尝试修复磁盘上的RAID5阵列或同步镜像卷。 |
| 系统操作 | SAN | 显示或设置操作系统的 SAN 策略。 |
| 脚本与命令注释 | REM | 用于脚本注释,不执行任何操作。 |
| EXIT | 退出 DiskPart。 | |
| 帮助与信息 | HELP | 显示命令帮助信息。 |
| BREAK | 中断当前命令,通常用于中止长时间执行的操作。 | |
| IMPORT | 导入磁盘组或磁盘配置。 |
进一步优化:
- 磁盘与分区管理:专注于磁盘和分区的创建、删除、扩展、清理等基本管理任务。
- 磁盘操作:聚焦于磁盘的状态管理(如联机/脱机),以及磁盘信息展示(如列表、扫描、转换格式)。
- 分区与卷属性管理:涉及分区的活跃状态、属性设置等,帮助设置磁盘行为。
- 虚拟磁盘操作:专门处理与虚拟磁盘(VHD/VHDX)相关的命令,包括挂载、分离和调整大小。
- 磁盘分区恢复与故障修复:包括修复或恢复磁盘阵列、镜像卷等故障恢复任务。
- 系统操作:涉及操作系统层面上的策略设置。
- 脚本与命令注释:仅用于脚本编写或终止当前操作的命令,帮助进行批处理脚本控制。
- 帮助与信息:与帮助和信息查询相关的命令。
DISKPART 命令按功能分类后的:
| 分类 | 命令 | 描述 |
|---|---|---|
| 分区操作 | ACTIVE | 将选中的分区标记为活动的分区。 |
| INACTIVE | 将所选分区标为不活动。 | |
| CREATE | 创建卷、分区或虚拟磁盘。 | |
| DELETE | 删除对象。 | |
| EXTEND | 扩展卷。 | |
| SHRINK | 减小选定卷。 | |
| SETID | 更改分区类型。 | |
| 卷操作 | ADD | 将镜像添加到一个简单卷。 |
| ASSIGN | 给所选卷分配一个驱动器号或装载点。 | |
| ATTRIBUTES | 操纵卷或磁盘属性。 | |
| FORMAT | 格式化卷或分区。 | |
| FILESYSTEMS | 显示卷上当前和支持的文件系统。 | |
| REMOVE | 删除驱动器号或装载点分配。 | |
| EXTEND | 扩展卷。 | |
| 虚拟磁盘操作 | ATTACH | 连接虚拟磁盘文件。 |
| DETACH | 分离虚拟磁盘文件。 | |
| COMPACT | 尝试减少文件的物理大小。 | |
| EXPAND | 扩展虚拟磁盘上可用的最大大小。 | |
| 磁盘操作 | CLEAN | 从磁盘清除配置信息或所有信息。 |
| CONVERT | 在不同的磁盘格式之间转换。 | |
| LIST | 显示对象列表。 | |
| RESCAN | 重新扫描计算机,查找磁盘和卷。 | |
| ONLINE | 使当前标为脱机的对象联机。 | |
| OFFLINE | 使当前标记为联机的对象脱机。 | |
| RECOVER | 尝试恢复无效包中的磁盘,并重新同步具有过时丛或奇偶校验数据的镜像卷和 RAID5 卷。 | |
| 磁盘分区管理 | GPT | 给选择的GPT分区分配属性。 |
| UNIQUEID | 显示或设置磁盘的 GUID 分区表(GPT) 标识符或主启动记录(MBR) 签名。 | |
| 脚本与注释 | REM | 不起任何作用。用来注释脚本。 |
| 操作系统与启动 | SAN | 显示或设置当前启动的操作系统的 SAN 策略。 |
| 其他 | HELP | 显示命令列表。 |
| EXIT | 退出 DiskPart。 | |
| BREAK | 中断镜像集。 | |
| IMPORT | 导入磁盘组。 | |
| RETAIN | 在一个简单卷下放置一个保留分区。 |
这张表将 DISKPART 命令按照功能进行了分类,使得每个命令的用途更加清晰。
diskpart 是一个强大的磁盘管理工具,用于在命令行环境下对磁盘、分区、卷进行管理。以下是 diskpart 命令按功能分类并化的展示。
| 功能分类 | 命令/子命令 | 描述 |
|---|---|---|
| 命令操作 | ? | 显示命令列表 |
| exit | 退出 diskpart 工具 |
|
| help | 显示命令帮助信息 | |
| 磁盘管理 | list disk | 显示系统中的所有磁盘 |
| select disk | 选择要操作的磁盘 | |
| clean | 清除磁盘上的所有分区和数据 | |
| create partition | 创建一个新的分区 | |
| delete partition | 删除选定的分区 | |
| resize partition | 调整现有分区的大小 | |
| 分区管理 | list partition | 显示当前磁盘上的所有分区 |
| select partition | 选择要操作的分区 | |
| format | 格式化分区 | |
| assign | 为分区分配驱动器字母或挂载点 | |
| remove | 移除分区的驱动器字母或挂载点 | |
| set | 设置分区的属性,如激活分区 | |
| 卷管理 | list volume | 显示所有卷 |
| select volume | 选择要操作的卷 | |
| extend | 扩展卷的大小 | |
| shrink | 缩小卷的大小 | |
| assign letter | 为卷分配一个新的驱动器字母 | |
| remove letter | 移除卷的驱动器字母 | |
| 磁盘属性和信息 | attributes disk | 查看或设置磁盘的属性(如只读或隐藏) |
| attributes volume | 查看或设置卷的属性(如只读、隐藏等) | |
| 磁盘清理与恢复 | clean all | 完全清除磁盘上的所有数据(覆盖磁盘) |
| recover | 恢复磁盘或分区的丢失数据 | |
| 其他功能 | online | 将选定的磁盘设置为在线状态 |
| offline | 将选定的磁盘设置为离线状态 | |
| convert | 将磁盘格式转换为另一种类型(如 MBR 转 GPT 或 GPT 转 MBR) | |
| detail disk | 显示选定磁盘的详细信息 | |
| detail partition | 显示选定分区的详细信息 | |
| detail volume | 显示选定卷的详细信息 | |
| 高级功能 | rescan | 重新扫描系统中的磁盘 |
| uniqueid | 设置磁盘的唯一标识符 | |
| 导出和导入配置 | export | 导出磁盘布局(如将磁盘布局保存为脚本文件) |
| import | 导入磁盘布局(从脚本文件恢复磁盘布局) |
功能分类说明:
- 命令操作:基础命令,用于退出
diskpart、查看帮助信息和列出命令。 - 磁盘管理:用于管理磁盘本身,选择磁盘、列出磁盘、清理磁盘等操作。
- 分区管理:涉及对磁盘分区的操作,如创建、删除、格式化、调整分区大小、选择分区等。
- 卷管理:管理磁盘卷的操作,包括列出卷、选择卷、扩展或缩小卷大小、分配/移除驱动器字母等。
- 磁盘属性和信息:用于查看和修改磁盘或卷的属性,如是否只读、是否隐藏等。
- 磁盘清理与恢复:包括完全清除磁盘、恢复丢失数据等操作。
- 其他功能:其他与磁盘管理相关的操作,如将磁盘设置为在线或离线、转换磁盘类型等。
- 高级功能:一些高级操作,如磁盘重新扫描、设置磁盘唯一标识符、导入导出磁盘布局等。
通过这种分类,可以快速定位到具体的命令或子命令,并便于进行磁盘和分区的管理操作。
DISKPART 输出信息来看,下面是你所执行的各项操作的详细解释:
-
list disk:- 显示了系统中存在的磁盘信息。
- 你的系统有两个磁盘:
磁盘 0和磁盘 1。磁盘 0的大小为 931 GB,当前没有可用空间。磁盘 1的大小为 372 GB,当前可用空间为 1024 KB,且它是 GPT 分区类型。
-
select disk 1:- 选择了磁盘 1,接下来的所有操作都会作用于磁盘 1。
-
attributes disk(对于磁盘 1):- 磁盘 1 的状态:
- 当前没有设置为只读。
- 是启动磁盘,意味着系统启动时会尝试从该磁盘启动。
- 页面文件磁盘:这个磁盘用于存放虚拟内存的页面文件。
- 休眠文件磁盘:该磁盘不用于存放休眠文件。
- 故障转储磁盘:磁盘 1 用作系统崩溃时存储内存转储文件。
- 磁盘 1 的状态:
-
select disk 0:- 切换到磁盘 0,接下来的操作将作用于磁盘 0。
-
attributes disk(对于磁盘 0):- 磁盘 0 的状态:
- 当前没有设置为只读。
- 该磁盘不是启动磁盘。
- 页面文件磁盘:该磁盘不用于虚拟内存页面文件。
- 休眠文件磁盘:该磁盘不用于休眠文件。
- 故障转储磁盘:该磁盘不用于存储故障转储文件。
- 磁盘 0 的状态:
- 磁盘 1 是启动磁盘,使用它作为启动磁盘和页面文件磁盘。
- 磁盘 0 当前不作为启动磁盘使用,也没有配置为页面文件磁盘、休眠文件磁盘或故障转储磁盘。
attributes disk磁盘状态的化:
| 属性 | 磁盘 0 | 磁盘 1 |
|---|---|---|
| 当前只读状态 | 否 | 否 |
| 只读 | 否 | 否 |
| 启动磁盘 | 否 | 是 |
| 页面文件磁盘 | 否 | 是 |
| 休眠文件磁盘 | 否 | 否 |
| 故障转储磁盘 | 否 | 是 |
| 群集磁盘 | 否 | 否 |
说明:
- 磁盘 0:没有被设置为启动磁盘、页面文件磁盘、休眠文件磁盘、故障转储磁盘和群集磁盘。
- 磁盘 1:设置为启动磁盘、页面文件磁盘和故障转储磁盘。
| 属性 | 英文 | 详细说明 | 应用场景 |
|---|---|---|---|
| 当前只读状态 | Current Read-Only Status | 当前只读状态表示磁盘是否被设置为只读模式。如果磁盘设置为只读,所有对磁盘的写操作(如文件写入、格式化)都会被拒绝。 | 在某些情况下,为了保护数据不被意外删除或修改,可以将磁盘设置为只读。常见于数据备份、只读存储设备、诊断工具等场景。 |
| 只读 | Read-Only | 只读属性是指磁盘是否被设置为只读模式。如果磁盘被设置为只读,则无法进行任何写入操作。 | 当磁盘数据需要保护时,例如某些操作系统分区或保护区数据需要保持不被修改,或者为了防止误操作,某些磁盘可以被设置为只读。 |
| 启动磁盘 | Boot Disk | 启动磁盘是指计算机用来启动操作系统的磁盘。通常,这个磁盘上会有操作系统的引导程序或引导分区。 | 用于安装操作系统的硬盘或固态硬盘。启动磁盘可以包含操作系统文件、启动管理器以及恢复工具等,通常系统使用的硬盘会被设置为启动磁盘。 |
| 页面文件磁盘 | Page File Disk | 页面文件磁盘是指存储操作系统页面文件(或虚拟内存)的磁盘。页面文件是操作系统用于扩展物理内存的一种方式,允许在物理内存不足时将数据写入硬盘。 | 在操作系统内存使用超过实际物理内存时,操作系统会使用页面文件扩展虚拟内存。常见于内存紧张时的应用程序或者服务器系统中。 |
| 休眠文件磁盘 | Hibernate File Disk | 休眠文件磁盘是指存储操作系统休眠文件(hiberfil.sys)的磁盘。休眠文件用于保存计算机当前的内存内容,以便系统关闭时能保存状态,待下次启动时恢复。 | 当计算机进入休眠模式时,系统将内存内容写入休眠文件,并关闭电源,确保下次启动时恢复到关闭前的状态。常用于笔记本电脑或其他需要节省电池的设备。 |
| 故障转储磁盘 | Crash Dump Disk | 故障转储磁盘用于存储系统崩溃时产生的内存转储文件。当操作系统或硬件发生崩溃时,操作系统会将内存中的数据保存到此文件中,以便后续分析。 | 用于系统崩溃或蓝屏故障时,保存崩溃时的内存数据。对于开发人员或系统管理员,可以用这些转储文件进行故障诊断,分析崩溃的原因。 |
| 群集磁盘 | Cluster Disk | 群集磁盘指的是在集群计算环境中使用的磁盘。群集磁盘可以被多个节点(服务器)同时访问,通常用于高可用性和负载均衡的分布式系统。 | 在集群系统中,磁盘资源是共享的,用于支持多台计算机共同访问和操作数据。例如,数据库集群、文件存储集群等需要使用群集磁盘来保证高可用性和可靠性。 |
应用场景详细说明:
-
当前只读状态 (Current Read-Only Status):
- 保护重要数据不被修改。适用于数据备份、只读存储和诊断模式。
- 应用:只读光盘、只读存储设备(如ROM、固态硬盘的某些分区)等。
-
只读 (Read-Only):
- 保护数据不被写入,防止恶意或无意间的修改。
- 应用:系统启动分区、重要系统文件或备份存储设备上设置只读属性。
-
启动磁盘 (Boot Disk):
- 负责操作系统的启动。启动磁盘通常是安装操作系统的硬盘或固态硬盘。
- 应用:安装了操作系统的硬盘,计算机开机时加载操作系统的硬盘。
-
页面文件磁盘 (Page File Disk):
- 当物理内存不足时,操作系统会将暂时不活跃的数据从内存转移到页面文件中,从而释放内存空间供其他进程使用。
- 应用:服务器和高性能计算机,尤其是内存密集型应用,使用页面文件来扩展内存。
-
休眠文件磁盘 (Hibernate File Disk):
- 用于在休眠模式下保存计算机的内存内容,关闭计算机时保持当前状态,并能在重新启动时恢复。
- 应用:笔记本电脑和移动设备中,尤其是在节省电池或能源管理时使用。
-
故障转储磁盘 (Crash Dump Disk):
- 保存系统崩溃时的内存内容。对于系统管理员和开发者,可以分析内存转储来确定导致系统崩溃的原因。
- 应用:服务器、开发和测试环境中,尤其是用于系统调试和故障分析。
-
群集磁盘 (Cluster Disk):
- 在多台计算机之间共享磁盘资源,以确保数据的高可用性和负载均衡。
- 应用:数据库集群、文件服务器集群、虚拟化环境等分布式系统中,确保多个节点同时访问数据并提供服务。
DiskPart 是 Windows NT 系列系统自带的磁盘分区管理命令行工具,核心能力覆盖分区创建/删除/格式化/调整大小、盘符分配、分区属性设置等,其替代品可按使用场景/平台分类,适配不同需求:
一、Windows 平台原生替代(无需安装额外软件,适合本地 Windows 运维)
1. PowerShell Storage 模块(首推)
是微软官方推出的新一代磁盘管理接口,Windows 7/Server 2008 R2 及以上系统自带,完全替代 DiskPart 的定位,功能更丰富、支持对象化操作,能和所有 PowerShell 命令联动,更适合自动化脚本。
- 常用命令示例:
powershell
# 查看所有磁盘 Get-Disk # 在磁盘0创建100G的NTFS主分区,分配盘符E New-Partition -DiskNumber 0 -Size 100GB -Type Primary | Format-Volume -FileSystem NTFS -NewFileSystemLabel "数据盘" -DriveLetter E # 将磁盘0的第2个分区扩展到200G Resize-Partition -DiskNumber 0 -PartitionNumber 2 -Size 200GB - 优点:原生支持、权限控制更细、输出格式友好,支持批量操作
- 缺点:不支持 Windows XP 等老系统,部分高级 RAID/存储池功能仅 Server 版可用
2. 轻量原生单功能命令(适合简单场景)
如果只是做格式化、盘符映射等简单操作,不需要完整的分区管理能力,可直接用原生命令:
format:直接格式化指定分区,例如format D: /fs:ntfs /q /y快速格式化D盘为NTFSmountvol:管理卷挂载点、查看分区GUID,适合挂载文件夹为磁盘、管理EFI分区等场景subst:把本地文件夹映射为虚拟盘符,适合临时把目录当磁盘使用,不需要真实分区- DiskPart 脚本模式:DiskPart 自身支持非交互脚本运行,执行
diskpart /s 分区脚本.txt即可批量执行固定操作,无需手动交互,适合固定流程的批量操作
3. DISM(部署镜像服务和管理工具)
Windows 自带,核心用于 Windows 系统镜像部署,但支持挂载/卸载 WIM/ESD 镜像、修改镜像内的磁盘分区、添加驱动、配置系统,适合 Windows 自动化部署、WinPE 维护场景,比 DiskPart 更容易集成到系统部署流程中。
- 示例:挂载Windows安装镜像并修改内部分区
cmd
dism /Mount-Image /ImageFile:D:\install.wim /Index:1 /MountDir:C:\mount dism /Image:C:\mount /Apply-Dirs:"D:\附加配置" dism /Unmount-Image /MountDir:C:\mount /Commit
二、跨平台通用替代(Windows/Linux/macOS 通用,适合多系统运维、跨平台脚本)
1. GNU Parted(Parted)(首推,也是 GParted 图形界面的后端核心)
是目前最通用的跨平台分区命令行工具,功能完全覆盖 DiskPart,支持 MBR/GPT 所有主流分区表、几乎所有文件系统,支持非交互式脚本调用,Linux 发行版默认自带,Windows 下可通过预编译包或 WSL 使用。
- 常用命令示例:
bash
# 查看磁盘分区信息 parted /dev/sda print # 创建GPT分区表+100G数据分区 parted /dev/sdb mklabel gpt mkpart primary ext4 1MiB 100GiB # 扩展第2个分区到300G parted /dev/sda resizepart 2 300GiB - 优点:跨平台、功能全、社区活跃,支持1MiB对齐等现代磁盘优化规则
- 缺点:仅调整分区边界,不修改文件系统,缩容/扩容需要配合对应文件系统工具(如
ntfsresize、resize2fs)
2. GPT fdisk(gdisk/sgdisk)
专门针对 GPT 分区表的专业工具,跨平台支持,比 Parted 对 GPT 的支持更细,支持修改分区 GUID、设置 GPT 专属属性、MBR/GPT 互转等,适合 UEFI 启动盘制作、GPT 磁盘高级操作。
sgdisk是其脚本友好版本,适合自动化场景,例如sgdisk --zap-all /dev/sda一键清空 GPT 分区表- 优点:GPT 操作最专业,无交互模式完善
- 缺点:不支持 MBR 分区表,功能比 Parted 单一
3. fdisk/sfdisk
fdisk:传统 Linux 分区工具,现已支持 GPT,交互式操作为主,适合手动调整分区,Windows 下可通过 WSL 或移植版使用sfdisk:fdisk 的脚本版本,支持分区表 dump/恢复、批量创建分区,适合批量部署场景
4. macOS 原生 diskutil
macOS 系统自带的磁盘管理 CLI,功能比 DiskPart 更强,支持 APFS、HFS+ 等 macOS 专属文件系统,覆盖所有 DiskPart 的分区、格式化、挂载能力,macOS 用户直接用即可。
三、自动化/DevOps 场景替代(适合批量部署、云运维、镜像制作)
1. cloud-init
云服务器标准初始化工具,支持所有主流 Linux 发行版和 Windows Server,通过 YAML 配置文件自动完成磁盘分区、格式化、挂载、系统配置,适合云环境批量初始化、镜像定制,无需手动执行任何命令。
- 示例配置片段:自动给数据盘创建分区并格式化
yaml
disk_setup: /dev/vdb: table_type: gpt layout: - 100GB overwrite: true fs_setup: - label: "数据盘" filesystem: ext4 device: /dev/vdb1 mountpoint: /data
2. 配置管理工具模块
- Ansible:有
community.general.parted(Linux 磁盘管理)、win_partition(Windows 磁盘管理)等成熟模块,直接在 Playbook 里定义分区规则,跨平台批量管理数百台服务器的磁盘 - SaltStack、Puppet 等配置管理工具也有对应的磁盘管理模块,适合企业级批量运维
3. 镜像制作/部署工具
- Packer:自动化制作系统镜像时,可配置磁盘分区规则,批量生成标准化的云/物理机镜像
- WIMlib:跨平台处理 Windows WIM/ESD 镜像的工具,可在 Linux/macOS 下修改 Windows 镜像的磁盘分区结构,适合制作自定义 WinPE、自动化安装镜像
四、特殊场景替代
| 场景 | 工具 | 说明 |
|---|---|---|
| 磁盘克隆/备份 | dd、Clonezilla(ocs-sr) |
全平台底层磁盘拷贝工具,支持整盘/分区克隆、镜像备份,比 DiskPart 的复制功能更强 |
| 数据恢复 | testdisk |
跨平台命令行工具,可扫描恢复丢失的分区、修复损坏的分区表,比 DiskPart 的 rescue 功能更强大 |
| 自定义开发 | pyparted、pywin32 |
分别为 Parted、Windows 存储 API 的编程绑定,可直接在 Python/C 代码中实现磁盘操作,无需调用外部命令 |
| 企业级 Windows 部署 | MDT、SCCM | 微软官方批量部署工具,内置图形化磁盘分区配置功能,可生成自动化部署任务 |
快速选型建议
- 日常 Windows 手动操作:优先用 PowerShell Storage 模块,比 DiskPart 更易用、功能更全
- 跨平台/Linux 磁盘管理:优先用 Parted
- 专门做 GPT/UEFI 相关操作:用 sgdisk/gdisk
- 云/批量自动化部署:用 cloud-init、Ansible
- Windows 系统批量部署:用 DISM、MDT
- 只是临时格式化/映射盘符:用原生
format、subst命令即可,无需额外工具
sgdisk64 Windows 工具完整说明
一、基础介绍
sgdisk64.exe 是 gdisk 套装下的命令行无交互 GPT 分区工具(64 位 Windows 版),对应 Linux sgdisk,底层操作 GPT 分区表,不支持 MBR,主打脚本批量、自动化分区、无损 GPT 管理。
核心特点
- 纯命令行参数驱动,无交互式弹窗,适合批处理
.bat自动化; - 专精 GPT 分区:分区 GUID 类型、分区属性、磁盘 GUID、备份 / 恢复分区表、MBR↔GPT 互转;
- 安全擦除分区表、重建混合 MBR、分区扩容 / 新建 / 删除 / 改名;
- Windows 下操作物理磁盘需要管理员 CMD/PowerShell,设备写法:
\\.\physicaldriveX(X 为磁盘号,从 0 开始)。
二、Windows 磁盘设备语法(关键)
/dev/sda,固定格式:\\.\physicaldrive0 # 第一块硬盘
\\.\physicaldrive1 # 第二块硬盘
Get-Disk
三、高频核心参数拆解(按使用场景分类)
1. 查看、打印信息
| 参数 | 作用 |
|---|---|
-p |
打印完整 GPT 分区表 |
-i=partnum |
查看指定分区详细信息(GUID、属性、名称、扇区) |
-L |
列出所有 GPT 分区类型 GUID 对照表(EFI、Linux、Windows、LVM 等) |
-O |
仅打印兼容 MBR 分区内容 |
-v |
校验 GPT 分区表完整性,检查损坏 |
-V |
输出版本 |
-? / --usage |
帮助 |
sgdisk64 -p \\.\physicaldrive0
2. 新建分区(最常用 -n / -N)
-n=partnum:start:end 手动指定起止扇区
partnum:分区号,0 = 自动分配start:起始扇区;0= 使用首个可用对齐扇区end:结束扇区;0= 占用剩余全部空间;可写+512M相对大小
-N=partnum 自动创建占用最大空闲空间分区
:: 磁盘0新建1号分区,512MiB,自动对齐
sgdisk64 -n 1:0:+512M \\.\physicaldrive0
:: 新建2号分区占满剩余全部空间
sgdisk64 -n 2:0:0 \\.\physicaldrive0
3. 设置分区类型 GUID -t
-t=分区号:GUID/十六进制简码
- EFI 系统分区:
ef00 - Windows 基础数据:
ef02 - Linux x86_64 /boot:
8300 - Linux LVM:
8e00 - 交换分区:
8200
:: 将1号分区设为EFI
sgdisk64 -t 1:ef00 \\.\physicaldrive0
4. 分区名称、属性管理
-c=partnum:name:修改 GPT 分区名称
sgdisk64 -c 1:ESP \\.\physicaldrive0
-A分区属性(隐藏、只读、不自动挂载等标志位)
:: 查看分区1所有属性
sgdisk64 -A 1:show \\.\physicaldrive0
5. 删除、清空、擦除分区表
-d=partnum:删除单个分区
sgdisk64 -d 3 \\.\physicaldrive0
-o:清空整张磁盘 GPT 分区表(保留头部备份)-z:仅擦除 GPT 主分区表(保留备份)-Z:彻底擦除全部 GPT 主 + 备份分区表(全盘分区清空,高危)
6. 分区表备份与恢复
-b=file:导出 GPT 分区表备份到文件-l=file:从备份文件恢复分区表
:: 备份磁盘0分区表
sgdisk64 -b D:\disk0-gpt.bin \\.\physicaldrive0
:: 恢复
sgdisk64 -l D:\disk0-gpt.bin \\.\physicaldrive0
7. MBR <-> GPT 转换
-g:MBR 磁盘无损转 GPT(无数据丢失)-m:GPT 生成兼容混合 MBR(Legacy BIOS 引导用)
:: MBR转GPT
sgdisk64 -g \\.\physicaldrive1
8. 对齐、排序、调整布局
-a=value:自定义扇区对齐(默认适配 4K/SSD)-D:显示当前对齐参数-s:按起始扇区自动排序分区号-I:自动对齐分区结束扇区
9. 磁盘 GUID / 分区 GUID
-U=guid:修改磁盘全局唯一 GUID-u=partnum:guid:修改单个分区 GUID-G:随机重置磁盘 + 所有分区 GUID
10. 模拟运行(不写入磁盘)
-P / --pretend:仅打印执行流程,不实际修改分区表,调试脚本必备sgdisk64 -P -n 1:0:+1G \\.\physicaldrive0
四、完整实战示例(Windows 管理员 CMD)
示例 1:磁盘 0 新建标准 EFI + 数据双分区 GPT 脚本
:: 1. 清空原有分区表
sgdisk64 -o \\.\physicaldrive0
:: 2. 新建1号EFI分区 512M
sgdisk64 -n 1:0:+512M -t 1:ef00 -c 1:ESP \\.\physicaldrive0
:: 3. 新建2号分区占满剩余空间,Windows数据类型
sgdisk64 -n 2:0:0 -t 2:ef02 -c 2:DATA \\.\physicaldrive0
:: 4. 打印结果校验
sgdisk64 -p \\.\physicaldrive0
示例 2:备份磁盘分区表并校验
sgdisk64 -b D:\backup-disk0.bin \\.\physicaldrive0
sgdisk64 -v \\.\physicaldrive0
示例 3:删除 3 号分区并自动重排序
sgdisk64 -d 3 \\.\physicaldrive0
sgdisk64 -s \\.\physicaldrive0
五、关键注意事项
- 必须管理员权限:普通 CMD 无物理磁盘写入权限,操作失败;
- 设备路径固定
\\.\physicaldriveN,不能直接写盘符 C: D:; - 正在挂载使用的系统盘分区修改有概率蓝屏 / 文件损坏,尽量脱机操作;
-Z彻底擦除分区表会丢失所有分区,执行前务必备份;- sgdisk 只操作 GPT,纯 MBR 磁盘需先用
-g转换才能操作; - 修改分区后 Windows 会自动弹出 “磁盘变更” 提示,刷新磁盘管理器即可识别新分区。
六、sgdisk64 vs parted /gdisk64 区别
sgdisk64:纯参数命令行,适合 bat 自动化、无人值守;无交互界面;gdisk64.exe:交互式工具,一步步菜单操作,适合手动排查修复;- parted Windows 版功能残缺,WindowsGPT 自动化优先用 sgdisk64。
diskpart 另类、特殊实战示例(常规分区操作不再罗列,只收录冷门 / 进阶 / 容易踩坑用法)
运行前提:管理员 CMD/PowerShell,输入
diskpart进入交互模式; ⚠️ 高危工具,选错磁盘会全盘数据清空,务必看清disk X编号!
前置小技巧(另类进入方式)
- 直接执行脚本,不用交互式手动输入
diskpart /s script.txt
script.txt 内容示例:
list disk
select disk 1
list partition
- 一条命令串行执行(cmd 单行)
echo list disk | diskpart
一、磁盘层面冷门命令
1. 设置磁盘为只读(锁盘,无法写入修改)
list disk
select disk 1
attributes disk set readonly
取消只读:
attributes disk clear readonly
✅ 用途:防止误删移动硬盘数据、取证只读挂载;重启不持久,拔插失效。
2. 清除磁盘只读属性(解决:磁盘只读无法格式化)
很多人只知道清除 readonly,不知道还要清除离线状态
select disk 1
attributes disk clear readonly
online disk
3. 强制离线磁盘(系统不再识别这块盘)
select disk 1
offline disk
重新上线:online disk
另类场景:临时屏蔽硬盘,不需要拔线;多磁盘隔离调试。
4. 转换磁盘 MBR ↔ GPT 无数据清空方案不存在!
⚠️ 重点:干净空盘才能无损转换,有数据必须备份 空盘转换 GPT:
select disk 1
clean
convert gpt
空盘转换 MBR:
convert mbr
5. 查看磁盘唯一 GUID(GPT 磁盘独有)
select disk 1
uniqueid disk
修改 GPT 磁盘 GUID(另类玩法,虚拟机磁盘标识篡改)
uniqueid disk guid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
6. MBR 磁盘修改磁盘签名(非常冷门)
select disk 1
uniqueid disk id=12345678
典型场景:虚拟机克隆后磁盘签名冲突,Windows 提示磁盘脱机。
二、分区 / 卷 特殊用法
1. 设置分区为【活动分区】(仅 MBR 系统盘,GPT 不用!)
常规装系统旧用法,很多人混淆 GPT 不能设 active
select disk 0
select partition 1
active
2. 设置分区类型 ID(高级冷门,自定义分区用途)
示例 1:将分区设置为 EFI 系统分区(GPT ESP 分区,类型 c12a7328-f81f-11d2-ba4b-00a0c93ec93b)
select disk 0
select partition 1
set id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
示例 2:MSR 保留分区类型
set id=e3c9e316-0b5c-4db8-817d-f92df00215ae
MBR 分区简写 ID 示例(十六进制不带 0x)
设置为隐藏分区 MBR id=27(恢复分区类型)
set id=27
慎用:ID 错误会导致系统无法识别分区、盘符丢失。
3. 隐藏分区 / 取消隐藏(不分配盘符)
select volume 3
remove
只删除盘符,分区保留;想要恢复:
assign
指定盘符挂载(强制分配 Z 盘)
assign letter=Z
4. 收缩卷、扩展卷进阶(避开磁盘管理图形界面限制)
最大程度收缩分区
select volume 2
shrink querymax # 查询最多能释放多少空间
shrink desired=20480 # 缩减20GB
强制扩展卷(相邻未分配空间)
extend
extend size=10240 # 扩展10GB
5. 标记分区为【恢复分区】+ 隐藏
select partition 3
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes=0x8000000000000001
gpt attributes 标志说明(GPT 分区专属超级冷门)
0x8000000000000001:隐藏分区 + 禁止分配盘符(Windows 磁盘管理看不到) 清除隐藏属性:
gpt attributes=0x0000000000000000
gpt attributes 常用掩码参考(硬核另类参数)
| 值 | 作用 |
|---|---|
| 0x0000000000000001 | 禁止自动分配盘符 |
| 0x8000000000000000 | 分区隐藏 |
组合 = 0x8000000000000001
6. 获取分区 GUID
select partition 2
uniqueid partition
三、Clean 两个模式【极易混淆的高危另类区别】
select disk 1
clean # 快速清除:只删除分区表,数据理论可恢复
clean all # 完整清除:逐扇区写0,彻底销毁数据,耗时极长!
clean all 适合数据销毁、二手硬盘处理。
四、虚拟磁盘 (VHD/VHDX) 磁盘管理最容易被忽略的功能
diskpart 原生支持挂载虚拟硬盘,不用图形工具
1. 创建空白 VHD(创建 20GB 固定大小 vhd)
create vdisk file="D:\test.vhd" maximum=20480 type=fixed
type 可选:fixed固定大小 / expandable动态扩容
2. 挂载 VHD
select vdisk file="D:\test.vhd"
attach vdisk
只读挂载虚拟磁盘(取证用途,超级冷门)
attach vdisk readonly
3. 分离卸载 VHD
select vdisk file="D:\test.vhd"
detach vdisk
4. 扩展现有 VHD 容量
select vdisk file="D:\test.vhd"
expand vdisk maximum=30720
5. 压缩动态 VHD(回收空闲空间,精简体积)
select vdisk file="D:\test.vhd"
compact vdisk
五、生产 / 运维冷门实用组合脚本示例
示例 A:一键挂载 VHD 只读模式
@echo off
diskpart /s mount_vhd.txt
mount_vhd.txt
select vdisk file="E:\image.vhdx"
attach vdisk readonly
assign letter=V
示例 B:离线磁盘,设置只读防止篡改
list disk
select disk 2
offline disk
attributes disk set readonly
示例 C:新建标准 Windows GPT 分区布局(ESP+MSR + 数据分区,装机脚本)
select disk 1
clean
convert gpt
create partition efi size=100
format quick fs=fat32 label="ESP"
assign letter=S
create partition msr size=16
create partition primary
format quick fs=ntfs label="DATA"
assign letter=D
⚠️ 避坑重点(很多人踩雷)
- GPT 磁盘不要执行 active,无效,UEFI 依靠 ESP 分区启动;
gpt attributes只对 GPT 分区生效,MBR 分区不能用;clean all大容量硬盘可能跑几小时,不要中途强制关闭;- 虚拟机克隆出现 磁盘脱机,签名冲突:
select disk 1
online disk
uniqueid disk id=自动生成新签名
- 移动硬盘设 readonly 属性重启 / 重插失效,想要持久只读需要注册表 / 组策略。
Diskpart 成套自动化脚本合集
使用须知
- 全部脚本保存为
xxx.dp,管理员 CMD 运行:diskpart /s xxx.dp- 执行前核对磁盘编号!选错盘直接丢数据
- 涉及格式化、clean 操作务必备份数据
- 路径含空格时,文件路径必须加英文双引号
脚本 1|GPT 标准 Windows 分区模板(ESP+MSR + 数据分区,新硬盘初始化)
文件名:gpt_init.dp
list disk
rem ========== 修改下方 disk X 为目标磁盘编号 ==========
select disk 1
clean
convert gpt
rem 创建ESP 100MB EFI分区
create partition efi size=100
format quick fs=fat32 label="ESP"
assign letter=S
rem 创建MSR 16MB保留分区
create partition msr size=16
rem 创建主数据分区,占用全部剩余空间
create partition primary
format quick fs=ntfs label="DATA"
assign letter=D
list partition
list volume
脚本 2|全盘快速清零 clean all(二手硬盘数据销毁)
文件名:disk_wipe.dp
list disk
rem 修改disk编号
select disk 1
rem clean仅清除分区表;clean all全盘写0销毁数据
clean all
convert gpt
create partition primary
format quick fs=ntfs label="WIPED-DISK"
assign
脚本 3|VHDX 动态虚拟磁盘创建 + 挂载
文件名:create_vhdx.dp
rem 创建50GB动态扩展VHDX,路径自行修改
create vdisk file="D:\VirtualDisk\data.vhdx" maximum=51200 type=expandable
select vdisk file="D:\VirtualDisk\data.vhdx"
attach vdisk
create partition primary
format quick fs=ntfs label="VHD-DATA"
assign letter=V
脚本 4|只读挂载 VHD/VHDX(取证 / 防写入)
文件名:mount_vhd_readonly.dp
select vdisk file="D:\VirtualDisk\data.vhdx"
attach vdisk readonly
assign letter=R
脚本 5|卸载分离虚拟磁盘
文件名:detach_vhd.dp
select vdisk file="D:\VirtualDisk\data.vhdx"
detach vdisk
脚本 6|扩展 VHD 容量 + 扩充内部分区
文件名:expand_vhd.dp
select vdisk file="D:\VirtualDisk\data.vhdx"
rem 扩容至80GB
expand vdisk maximum=81920
attach vdisk
select volume V
extend
脚本 7|隐藏 GPT 恢复分区(磁盘管理器不可见,禁止自动分配盘符)
文件名:hide_recovery_part.dp
list disk
select disk 0
list partition
rem 修改partition编号
select partition 4
gpt attributes=0x8000000000000001
解除隐藏脚本 unhide_part.dp
select disk 0
select partition 4
gpt attributes=0x0000000000000000
脚本 8|临时离线磁盘 + 设置只读(防止误操作硬盘)
文件名:disk_lock_readonly.dp
list disk
select disk 2
offline disk
attributes disk set readonly
解锁恢复:disk_unlock.dp
select disk 2
attributes disk clear readonly
online disk
脚本 9|修复虚拟机克隆磁盘签名冲突(磁盘脱机无法访问)
文件名:fix_disk_signature.dp
list disk
select disk 1
online disk
rem 自动生成全新磁盘唯一ID
uniqueid disk
脚本 10|批量移除分区盘符(隐藏整个卷,分区保留)
文件名:remove_letter.dp
list volume
select volume 5
remove
恢复盘符:
select volume 5
assign letter=Z
Windows 批处理包装示例(一键调用 dp 脚本,更友好)
示例 RunWipe.bat
@echo off
fltmc filters >nul 2>&1 || (echo 需要管理员权限 && pause && exit)
echo 警告!即将执行全盘清零,确认目标磁盘编号正确!
pause
diskpart /s disk_wipe.dp
echo 操作完成
pause
进阶附加命令片段(可嵌入任意脚本)
- 查询分区最大可收缩空间
select volume 2
shrink querymax
- 分区收缩 20GB
shrink desired=20480
- 无盘符扩展分区(使用紧邻未分配空间)
select volume 2
extend
- 压缩动态 VHD,回收空闲空间(精简文件大小)
select vdisk file="D:\data.vhdx"
compact vdisk
安全建议
- 正式执行前,先单独运行脚本前两行测试查看磁盘:
list disk
pause
- 不要在系统盘(disk 0)随意 clean
- clean all 大容量硬盘耗时极长,不要强行终止
- 交互式智能批处理(Diskpart 封装,自动提权、选择磁盘、防手滑误删)
- PowerShell 原生等价方案(替代 diskpart,更适合自动化)
⚠️ 所有操作管理员运行,生产环境先测试!
一、交互式批处理模板(自选磁盘,不用手动改编号)
模板 A:硬盘全盘清零脚本 WipeDisk_Interactive.bat
@echo off
chcp 65001 >nul
:: 请求管理员权限
fltmc >nul 2>&1 || (
echo 正在请求管理员权限...
powershell -Command "Start-Process cmd -ArgumentList '/c ""%~f0""' -Verb RunAs"
exit
)
cls
echo ==============================================
echo 硬盘全盘清零工具(clean all)
echo 【极度危险!数据将无法恢复】
echo ==============================================
echo.
diskpart /s "%~f0.disklist"
echo.
set /p targetDisk=请输入目标磁盘编号(例如 1):
echo.
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo 确认要清除 Disk %targetDisk% 全部数据吗?
echo Y=确认执行 clean all,其他按键退出
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
set /p confirm=选择:
if /i not "%confirm%"=="Y" (
echo 已取消操作
pause
exit
)
:: 生成临时diskpart脚本
(
echo select disk %targetDisk%
echo clean all
echo convert gpt
echo create partition primary
echo format quick fs=ntfs label="WIPED"
echo assign
) >"%temp%\wipe.tmp.dp"
diskpart /s "%temp%\wipe.tmp.dp"
del /f "%temp%\wipe.tmp.dp"
echo 操作完成!
pause
exit
配套同目录新建文件 %~f0.disklist,内容:
list disk
模板 B:VHD 一键创建挂载交互脚本 CreateVHD_Interactive.bat
@echo off
chcp 65001 >nul
fltmc >nul 2>&1 || (
powershell -Command "Start-Process cmd -ArgumentList '/c ""%~f0""' -Verb RunAs"
exit
)
cls
echo ====== 动态VHDX 创建并挂载 ======
set /p vhdPath=输入VHDX完整路径(如 D:\disk.vhdx):
set /p vhdSize=输入容量 MB (例如 40960 =40GB):
set /p driveLetter=分配盘符(单个大写字母,不要冒号):
(
echo create vdisk file="%vhdPath%" maximum=%vhdSize% type=expandable
echo select vdisk file="%vhdPath%"
echo attach vdisk
echo create partition primary
echo format quick fs=ntfs label=VHD_DATA
echo assign letter=%driveLetter%
) >"%temp%\makevhd.tmp.dp"
diskpart /s "%temp%\makevhd.tmp.dp"
del "%temp%\makevhd.tmp.dp"
echo 完成
pause
模板 C:磁盘临时锁定(离线 + 只读)LockDisk.bat
@echo off
chcp 65001 >nul
fltmc >nul 2>&1 || (powershell Start-Process cmd -ArgumentList '/c "%~f0"' -Verb RunAs & exit)
diskpart /s "%~dp0disklist.diskpart"
set /p d=输入磁盘编号:
(
echo select disk %d%
echo offline disk
echo attributes disk set readonly
) >%temp%\lock.tmp
diskpart /s %temp%\lock.tmp
echo 磁盘已离线并设为只读
pause
disklist.diskpart
list disk
二、PowerShell 原生等价实现(抛弃 diskpart 文本脚本,可编程)
PowerShell Storage 模块,Win10 1709+/Win11 原生支持,无需调用 diskpart.exe
1)列出所有磁盘(等价 list disk)
Get-Disk | Select-Object Number,FriendlyName,Size,PartitionStyle,IsReadOnly,OperationalStatus
2)全盘清空、转换 GPT(等价 clean + convert gpt)
# 修改 Number 为目标磁盘
$disk = Get-Disk -Number 1
$disk | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
$disk | Initialize-Disk -PartitionStyle GPT
等效
clean;需要 clean all(全盘写 0) PowerShell 没有原生参数,只能调用 diskpart
3)新建分区并格式化(ESP+MSR + 数据盘)
$disk = Get-Disk 1
# ESP分区 100MB
$esp = New-Partition -DiskNumber $disk.Number -Size 100MB -GptType '{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}'
Format-Volume -Partition $esp -FileSystem FAT32 -NewFileSystemLabel "ESP"
# MSR 16MB
New-Partition -DiskNumber $disk.Number -Size 16MB -GptType '{e3c9e316-0b5c-4db8-817d-f92df00215ae}'
# 剩余空间数据分区
$data = New-Partition -DiskNumber $disk.Number -UseMaximumSize
Format-Volume -Partition $data -FileSystem NTFS -NewFileSystemLabel "DATA"
4)设置磁盘只读 / 取消只读
# 设置只读
Set-Disk -Number 1 -IsReadOnly $true
# 取消只读
Set-Disk -Number 1 -IsReadOnly $false
5)离线 / 上线磁盘
Set-Disk -Number 1 -Offline $true
Set-Disk -Number 1 -Offline $false
6)创建 VHDX(PowerShell 内置,不用 diskpart)
# 创建动态扩展50GB VHDX
New-VHD -Path "D:\test.vhdx" -SizeBytes 50GB -Dynamic
# 挂载
Mount-VHD -Path "D:\test.vhdx"
# 只读挂载
Mount-VHD -Path "D:\test.vhdx" -ReadOnly
# 卸载
Dismount-VHD -Path "D:\test.vhdx"
# 扩展VHD大小
Resize-VHD -Path "D:\test.vhdx" -SizeBytes 80GB
# 压缩回收动态VHD空间
Optimize-VHD -Path "D:\test.vhdx" -Mode Full
7)修改 GPT 分区标志(等价 gpt attributes)
PowerShell 底层没有直接封装,仍然需要 diskpart 调用
$script=@"
select disk 0
select partition 4
gpt attributes=0x8000000000000001
"@
$script | diskpart
8)修复磁盘签名冲突(克隆虚拟机脱机盘)
$script=@"
select disk 1
online disk
uniqueid disk
"@
$script | diskpart
重要对比小结
| 功能 | diskpart | PowerShell Storage |
|---|---|---|
| clean all 全盘写 0 | ✅支持 | ❌无原生命令 |
| gpt attributes 分区标志 | ✅完整支持 | 只能间接调用 diskpart |
| 修改分区 Set ID | ✅完整 | 间接调用 |
| VHD 创建 / 挂载 | 支持 | API 原生,功能更强 |
| 交互式循环判断 | 依靠批处理 | 原生循环、变量判断更灵活 |
Diskpart 冷门、另类、容易被全网资料忽略的进阶示例
环境:管理员 CMD / PowerShell ⚠️ 所有操作前确认磁盘编号,选错直接丢失数据;标【极冷门】代表网上很少有实例
一、磁盘级别冷门指令
1. 查询磁盘总线类型(SSD/HDD/USB/ 虚拟磁盘)【极冷门】
select disk 1
detail disk
输出内可见:Bus Type:SATA、NVMe、USB、Virtual 用途:区分移动硬盘和内置盘,脚本内判断介质类型。
2. 磁盘导入外部磁盘组(动态磁盘专用)
动态磁盘跨盘卷场景,异地拷贝动态磁盘后无法识别:
select disk 2
import
不加参数 = 导入外部动态磁盘配置。
3. 磁盘故障标志:标记损坏动态磁盘
select disk 2
missing
用于清理动态磁盘数据库里已经物理移除、永久丢失的磁盘记录。
4. 强制重新读取磁盘分区表(刷新内核缓存)
图形界面磁盘管理器经常不刷新,不用重启电脑:
rescan
常用组合脚本:插拔硬盘后自动刷新
rescan
list disk
二、分区 (partition) 高阶另类用法
1. 查看分区完整详细信息(含 GPT 属性、类型 GUID)【强烈推荐】
select disk 0
select partition 3
detail partition
可以直接看到: 分区类型 ID、GPT 属性标志、偏移地址、是否隐藏、ESP/MSR/ 恢复分区标识。
2. MBR 分区设置为 OEM 分区 ID=12
老式工控、OEM 恢复分区标记:
select disk 1
select partition 2
set id=12
3. 创建无盘符、无类型原始空白分区(raw 分区)
select disk 1
create partition primary size=512
不执行 format、不 assign,得到原始裸分区,可直接供 dd、底层读写工具使用。
4. 对齐分区创建(4K 对齐底层控制,diskpart 默认自动对齐,手动控制示例)
diskpart 创建分区默认从 1MB 偏移开始(满足 4K 对齐); 如果你需要自定义起始偏移(极少场景,虚拟化底层调试):
diskpart 没有直接参数指定 offset,但可以通过占位分区间接实现,实操方案:
create partition primary size=1024
delete partition override
create partition primary size=20480
先建立再删除占位,控制下一个分区起始位置。
5. override 参数强制删除任何分区(含系统恢复分区、受保护分区)
常规 delete partition 报错 “无法删除” 时使用
select disk 0
select partition 4
delete partition override
⚠️ 可干掉 Windows 自带恢复分区,谨慎!
三、卷 (volume) 容易忽视功能
1. 查询卷文件系统元信息 + 碎片状态
select volume 2
detail volume
显示:驱动器路径、NTFS 版本、分配单元大小 (簇大小)、是否支持压缩。
2. 设置 / 清除卷只读(区分【磁盘只读】和【卷只读】!很多人混淆)
select volume D
attributes volume set readonly
attributes volume clear readonly
- attributes disk:整盘锁
- attributes volume:只锁单个分区卷
3. 设置卷为休眠文件 / 页面文件专用(极少文档提及)
select volume 3
attributes volume set hidden
attributes volume set shadowcopy
shadowcopy 标识卷支持卷影副本 VSS。
4. 使用路径挂载(NTFS 文件夹挂载,不分配盘符 Z:)【另类挂载方式】
将分区挂载到一个空白 NTFS 文件夹,而不用盘符
select volume 3
assign mount="C:\MountPoint\Disk3"
取消文件夹挂载:
remove mount="C:\MountPoint\Disk3"
适用场景:盘符用尽、多分区管理、容器底层挂载。
四、VHD / VHDX 虚拟磁盘进阶隐藏指令(网上示例稀缺)
1. 获取虚拟磁盘底层信息
select vdisk file="D:\test.vhdx"
detail vdisk
输出:类型动态 / 固定、块大小、父磁盘(差分 VHD 关键信息!)
2. 创建差分 VHD(差异磁盘,快照底层,超级冷门示例)
父盘 base.vhdx 只读,子盘只记录变更:
create vdisk file="D:\diff.vhdx" parent="D:\base.vhdx"
挂载差分盘:
select vdisk file="D:\diff.vhdx"
attach vdisk
⚠️ 父盘不能移动、改名,差分盘依赖父文件。
3. 分离差分磁盘,合并差异写入父盘
diskpart 无法合并差分,只能用 compact vdisk /dism; 但可以检测父子依赖:
select vdisk file="D:\diff.vhdx"
detail vdisk
4. 附加 VHD 并禁止自动分配盘符
select vdisk file="D:\test.vhdx"
attach vdisk readonly
rem 不执行assign,仅挂载内核可见,无访问入口
五、GPT 属性标志拓展完整示例(补充之前没给的掩码)
GPT 分区属性 gpt attributes 完整可用掩码合集
0x0000000000000001 — 禁止Windows自动分配盘符
0x8000000000000000 — 分区隐藏(磁盘管理器默认不显示)
0x0000000000000002 — 分区为必需分区(系统不能删除)
组合示例:隐藏 + 禁止盘符 + 标记必需分区
gpt attributes=0x8000000000000003
实操命令:
select disk 0
select partition 5
gpt attributes=0x8000000000000003
六、动态磁盘专属冷门命令(很多人几乎不用动态磁盘)
1. 创建跨区卷(多个磁盘合并成一个大分区)
select disk 1
select disk 2
create volume simple disk=1,2 size=20480
2. 创建镜像卷(软件 RAID1,Windows 动态磁盘软阵列)
create volume mirror disk=1,2 size=10240
3. 删除动态磁盘上的卷
select volume 4
delete volume
七、管道单行黑科技(CMD 一行直接执行,不进入交互模式)
1. 一行列出所有磁盘并导出文本
(echo list disk && echo list volume) | diskpart > disk_info.txt
2. 单行设置分区隐藏(无需脚本文件)
(echo select disk 0 && echo select partition 4 && echo gpt attributes=0x8000000000000001) | diskpart
八、排障专用另类命令组合(运维实战冷门方案)
场景 1:分区正常,但没有盘符、无法挂载,强制清除冲突签名
rescan
list disk
select disk 1
online disk
attributes disk clear readonly
select partition 1
assign
场景 2:ESP 分区损坏重建(UEFI 修复环境常用)
select disk 0
select partition 1
delete partition override
create partition efi size=100
format quick fs=fat32
assign letter=S
场景 3:清除卷影副本相关磁盘标记
select volume 2
attributes volume clear shadowcopy
九、极易踩坑的冷知识补充
create partition logical仅 MBR 扩展分区内有效,GPT 没有逻辑分区概念;active只作用 MBR 主分区,GPT 执行不会报错,但完全无效;clean只是擦分区表,文件数据扇区不动;clean all逐扇区写 0;NVMe SSD 推荐使用厂商安全擦除,不要长时间 clean all;- diskpart 不能调整分区内部文件系统大小,
shrink/extend只操作分区边界,文件系统还要同步调整; - 文件夹挂载 (mount point) 仅 NTFS 支持,FAT32/EXFAT 无法使用。
Diskpart 冷门命令全套脚本工具包
统一规范:
- 所有
.dp为 diskpart 脚本,管理员执行:diskpart /s xxx.dp.bat一键封装,自带提权;- 高危脚本内置确认提示;
- 路径含空格必须英文双引号;
- 适用:Win10/Win11 / WinServer 2016+
目录清单
- 故障排查综合脚本
disk_troubleshoot.dp - GPT 分区属性一键切换(显示 / 隐藏分区)两套 dp
- 差分 VHD 创建快照脚本
create_diff_vhd.dp+ 批处理 - NTFS 文件夹挂载(无盘符挂载分区)脚本
- 动态磁盘:镜像卷 / 跨区卷创建脚本
- 单行管道快捷命令速查清单
- 应急恢复 ESP 分区脚本
- 批量导出磁盘拓扑信息脚本
① disk_troubleshoot.dp 磁盘综合排查脚本
用途:扫描磁盘、刷新分区表、清除只读、修复脱机签名冲突
rem ========== 磁盘故障排查合集 ==========
rescan
echo ======== 磁盘列表 ========
list disk
echo ======== 卷列表 ========
list volume
echo ======== 分区列表(系统盘disk0) ========
select disk 0
list partition
rem 使用方式:
rem diskpart /s disk_troubleshoot.dp
rem 遇到磁盘脱机、盘符丢失优先运行
配套一键运行 Troubleshoot_Disk.bat
@echo off
chcp 65001>nul
fltmc >nul 2>&1 || (
powershell Start-Process cmd -ArgumentList "/c ""%~f0""" -Verb RunAs
exit
)
diskpart /s "%~dp0disk_troubleshoot.dp"
pause
② GPT 分区隐藏 / 显示 一键脚本
hide_gpt_part.dp 隐藏分区,禁止自动分配盘符
rem 修改 disk X / partition X
select disk 0
select partition 5
gpt attributes=0x8000000000000001
detail partition
unhide_gpt_part.dp 解除隐藏
select disk 0
select partition 5
gpt attributes=0x0000000000000000
detail partition
进阶加强版【标记为系统必需 + 隐藏】
select disk 0
select partition 5
gpt attributes=0x8000000000000003
③ 差分 VHD(快照机制)脚本 create_diff_vhd.dp
⚠️ 父磁盘建议设置只读,差分盘依赖父文件,不可移动父盘
rem 请修改父盘路径与差分盘输出路径
create vdisk file="D:\vm\diff.vhdx" parent="D:\vm\base.vhdx"
select vdisk file="D:\vm\diff.vhdx"
detail vdisk
attach vdisk
assign letter=V
配套批处理 Create_Diff_VHD.bat
@echo off
chcp 65001>nul
fltmc >nul 2>&1 || (powershell Start-Process cmd "%~f0" -Verb RunAs & exit)
echo 创建差分虚拟磁盘
echo 父磁盘:D:\vm\base.vhdx
echo 差分盘:D:\vm\diff.vhdx
pause
diskpart /s "%~dp0create_diff_vhd.dp"
echo 完成,已挂载为V:
pause
卸载差分 VHD 脚本 detach_diff_vhd.dp
select vdisk file="D:\vm\diff.vhdx"
detach vdisk
补充:diskpart无法合并差分磁盘,合并命令使用 PowerShell:
Merge-VHD -Path D:\vm\diff.vhdx -Destination D:\vm\new_base.vhdx
④ NTFS 文件夹挂载脚本(不占用盘符,另类挂载)
mount_folder.dp
rem 先手动新建空白文件夹 D:\mnt\data
select volume 3
assign mount="D:\mnt\data"
detail volume
remove_mount_folder.dp 取消文件夹挂载
select volume 3
remove mount="D:\mnt\data"
⑤ 动态磁盘软 RAID 脚本(镜像卷 RAID1 / 跨区卷)
注意:转换动态磁盘会清空数据!测试务必用闲置硬盘
create_mirror_volume.dp 软件镜像卷 RAID1
rem disk1 disk2 两块容量一致磁盘
select disk 1
select disk 2
create volume mirror disk=1,2 size=10240
format quick fs=ntfs label="MIRROR_DISK"
assign
create_spanned_volume.dp 跨区卷(多盘合并)
select disk 1
select disk 2
select disk 3
create volume simple disk=1,2,3
format quick fs=ntfs label="SPAN_DISK"
assign
⑥ ESP EFI 分区重建修复脚本(PE / 恢复环境使用)
rebuild_esp.dp
select disk 0
list partition
rem 删除旧ESP分区,谨慎!仅UEFI引导修复场景使用
select partition 1
delete partition override
create partition efi size=100
format quick fs=fat32 label="ESP"
assign letter=S
create partition msr size=16
list partition
⑦ 批量导出磁盘拓扑信息脚本 export_disk_info.dp
输出信息到文本,用于取证、运维归档
rescan
list disk
detail disk disk=0
detail disk disk=1
list volume
list partition
调用方式(CMD 一行)
diskpart /s export_disk_info.dp > disk_report.txt
⑧ 【单行管道黑命令集合,无需脚本文件,直接 CMD 运行】
1. 查看指定分区详情
(echo select disk 0 && echo select partition 4 && echo detail partition) | diskpart
2. 临时离线磁盘并设置只读锁盘
(echo select disk 2 && echo offline disk && echo attributes disk set readonly) | diskpart
3. VHD 只读挂载
(echo select vdisk file="D:\test.vhdx" && echo attach vdisk readonly && echo assign letter=R) | diskpart
4. 清除磁盘只读并上线
(echo select disk 2 && echo attributes disk clear readonly && echo online disk) | diskpart
配套安全操作规范(必看)
- 任何 clean、delete partition、重建 ESP 操作务必备份数据;
- NVMe SSD 不建议长时间
clean all,优先厂商工具安全擦除; - 差分 VHD 父文件改名、移动路径会直接导致差分盘失效;
- 动态磁盘转换后无法在 Mac、Linux 正常识别;
gpt attributes=0x8000000000000001隐藏分区,仅 Windows 生效,Linux 可直接识别分区;
Diskpart 继续增补「小众、冷门、网上极少完整示例」命令集
⚠️ 全部管理员权限运行;高危操作标注警示,实操前确认磁盘编号。
区分:磁盘 (disk)、分区 (partition)、卷 (volume)、虚拟磁盘 (vdisk) 很多人混淆四者指令作用域,下面示例严格区分边界。
一、磁盘 Disk 新增冷门用法
1. 检测磁盘是否可联机、排查外部磁盘组冲突
select disk 1
detail disk
rem 观察输出:外部磁盘组、动态磁盘状态、总线类型、介质类型(HDD/SSD)
2. 动态磁盘:删除丢失磁盘记录(missing 配套清理)
硬盘物理拔除,但动态磁盘数据库残留记录:
select disk 0
missing
rem 随后刷新磁盘列表,清理失效磁盘元数据
rescan
list disk
3. 脚本判断技巧:利用 detail disk 输出筛选「可移动磁盘」
CMD 单行导出所有移动磁盘信息:
(echo list disk & echo detail disk disk=1 & echo detail disk disk=2) | diskpart > movable_disk.txt
4. 离线磁盘两种模式隐性区别
select disk 1
offline disk
rem offline disk 【默认】:磁盘脱机,禁止读写,保留分区识别
rem 无参数以外没有“深度脱机”,但配合只读实现物理锁效果:
attributes disk set readonly
冷知识:
offline disk只是 Windows 内核不再挂载,磁盘硬件未断电。
二、Partition 分区进阶另类示例(重点!大量冷门 set id 实战)
1. MBR 分区全套特殊类型 ID 汇总实操
select disk 1
select partition 2
set id=07 # NTFS主分区(通用)
set id=0b # FAT32
set id=0c # FAT32(LBA扩展寻址,U盘常用)
set id=27 # Windows恢复分区(MBR恢复分区标识)
set id=12 # OEM分区(工控、品牌机隐藏分区)
set id=84 # Linux休眠分区
set id=82 # Linux swap
set id=83 # Linux 文件系统分区
2. GPT 小众分区类型 GUID(除 ESP/MSR 外)
# Windows恢复分区
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
# Linux 文件系统数据分区
set id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
# Linux SWAP
set id=0657fd6d-a4ab-43c4-84e5-0933c84b4f4f
# 基础数据分区(通用Windows数据分区)
set id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
3. 创建扩展分区 + 逻辑分区(仅 MBR,GPT 不支持逻辑分区)
全网很多人不会完整脚本:
select disk 1
clean
convert mbr
create partition primary size=20480
create partition extended
create partition logical size=10240
create partition logical size=10240
冷知识:GPT 架构不存在扩展分区、逻辑分区概念,执行
create partition logical直接报错。
4. delete partition override 极端场景
不仅删除恢复分区,还可删除带有页面文件、休眠文件占用的分区
select disk 0
select partition 5
delete partition override
⚠️ 系统盘慎用,蓝屏风险。
三、Volume 卷 极易被忽略的高级属性
1. 区分三大只读(非常容易混淆)
# ① 整磁盘只读(底层锁,所有分区全部只读)
select disk 1
attributes disk set readonly
# ② 单个分区卷只读(仅该分区,其他分区不受影响)
select volume 3
attributes volume set readonly
# ③ VHD附加时只读(虚拟磁盘层只读)
select vdisk file="D:\test.vhdx"
attach vdisk readonly
优先级:VHD 只读 > 磁盘只读 > 卷只读
2. 查询卷是否支持 VSS 卷影副本
select volume 2
detail volume
# 查看输出:支持影子副本(Yes/No)
# 手动设置卷影子副本标志
attributes volume set shadowcopy
attributes volume clear shadowcopy
3. 路径挂载点批量管理(无盘符挂载)
select volume 4
assign mount="C:\mnt\vol4"
remove mount="C:\mnt\vol4"
冷限制:
- FAT32/exFAT 不支持 NTFS 挂载点
- 目标文件夹必须是空文件夹
4. shrink 高级用法:先查询最大可收缩空间再执行(自动化必备)
select volume D
shrink querymax
# 查询完成后手动收缩指定MB
shrink desired=10240 minimum=5120
minimum 参数极少教程提及:收缩下限,防止过度压缩导致文件损坏。
5. extend 指定大小扩容,不占用全部未分配空间
select volume 3
extend size=8192
四、Vdisk 虚拟磁盘深挖另类示例
1. 判断 VHD 类型(固定 / 动态 / 差分)
select vdisk file="D:\test.vhdx"
detail vdisk
输出字段:
- Virtual size:虚拟总容量
- Physical size:当前占用物理硬盘大小
- Parent virtual disk:存在路径 = 差分磁盘
2. 差分磁盘限制测试
diskpart无法合并差分磁盘,只能创建、挂载、分离 合并差分磁盘请使用 PowerShell:
Merge-VHD -Path D:\diff.vhdx -Destination D:\merged.vhdx
3. 创建空白 VHD,不分区、不格式化,原始裸盘使用
create vdisk file="D:\raw.vhdx" maximum=10240 type=expandable
select vdisk file="D:\raw.vhdx"
attach vdisk
# 不执行 create partition / format
# 可用于存放RAW镜像、数据库裸设备
4. compact vdisk 两种使用场景
select vdisk file="D:\dynamic.vhdx"
compact vdisk
作用:回收动态 VHD 内已经删除文件的空闲区块,缩小实体文件体积。
仅动态扩展 VHD/VHDX 生效;固定大小磁盘执行无效果。
五、GPT Attributes 拓展补充(新增掩码说明,补齐之前内容)
0x0000000000000001 禁止Windows自动分配盘符
0x8000000000000000 分区隐藏(磁盘管理器隐藏)
0x0000000000000002 必需分区,Windows警告禁止删除
0x0000000000000004 只读分区(分区层只读,较少使用)
# 组合示例:隐藏 + 禁止盘符 + 标记必需分区
gpt attributes=0x8000000000000003
# 组合:隐藏+禁止盘符+必需+分区只读
gpt attributes=0x8000000000000007
清除全部标志
gpt attributes=0x0000000000000000
六、动态磁盘冷门指令(软 RAID 拓展)
1. 创建 RAID5 条带卷(Windows 动态磁盘软 RAID5,服务器旧方案)
需要至少 3 块磁盘
create volume raid disk=1,2,3 size=10240
format quick fs=ntfs label="RAID5-VOL"
assign
Win10/11 家庭版不支持动态磁盘 RAID,仅专业版 / 服务器系统支持。
2. 中断镜像卷(拆分 RAID1 镜像为两块独立磁盘)
select volume 5
break disk=1 nokeep
# nokeep:断开后其中一块丢失数据
# keep:两块磁盘都保留完整副本
七、管道单行高级黑命令(无需外部 dp 脚本,直接 CMD 运行)
1. 批量给所有 VHD 只读挂载(可循环改造)
(echo select vdisk file="D:\a.vhdx" && echo attach vdisk readonly) | diskpart
2. 一键查询指定分区 GPT 属性标志
(echo select disk 0 && echo select partition 6 && echo detail partition) | diskpart
3. 刷新磁盘 + 导出完整硬件磁盘清单
(echo rescan & echo list disk & echo list volume) | diskpart > disk_snapshot.log
八、实战故障场景专属命令组合(另类排障套路)
场景 1:U 盘 GPT 分区,Windows 不分配盘符
rescan
select disk 1
select partition 1
gpt attributes=0x0000000000000000
assign
场景 2:移动硬盘恢复分区在磁盘管理器看不见,但 Linux 可读
select disk 1
select partition 2
gpt attributes=0x0000000000000000
assign
场景 3:VHD 挂载提示 “磁盘含有不受支持的分区”
解决方案:挂载后执行 rescan 刷新分区表
select vdisk file="D:\test.vhdx"
attach vdisk
rescan
九、重要冷知识拾遗(避坑)
uniqueid disk修改磁盘签名仅 MBR 磁盘有效;GPT 磁盘修改的是磁盘 GUID;active命令 GPT 磁盘执行无报错,但 UEFI 启动完全不识别,属于无效操作;clean all在 NVMe SSD 效率低下,优先使用厂商工具安全擦除;- diskpart 无法调整文件系统大小,shrink/extend 只改动分区边界;文件系统大小需要
ntfsresize/ PowerShell; - GPT 分区属性标志 仅 Microsoft Windows 识别,Linux、macOS 忽略隐藏标记。
Diskpart 持续增补|极度冷门、网上零散、少见完整演示案例
⚠️ 管理员权限运行;所有破坏性操作(clean、delete、format)务必确认磁盘编号。
聚焦:常规分区教程不会写的 trick、边界用法、容易混淆的隐性行为、底层调试用法。
一、Disk 磁盘层新增另类示例
1. 强制刷新磁盘数据库 + 导出单块磁盘完整详情(取证常用)
rescan
select disk 2
detail disk
冷用途: detail disk 输出包含 Media type(SSD/HDD)、Bus Type(NVMe/SATA/USB/Virtual),脚本可筛选移动介质。
2. 测试磁盘能否转换动态磁盘(预检测思路)
diskpart 无原生检测命令,但可以利用报错试探:
select disk 1
convert dynamic
- 报错:此磁盘为 GPT,无法转换动态磁盘 → Win10/11 原生限制:GPT 磁盘不支持动态磁盘
重要冷知识:仅 MBR 磁盘可以转为动态磁盘;GPT + 动态磁盘在现代 Windows 已经被废弃。
3. uniqueid 完整区分行为(很多文档混淆)
select disk 1
uniqueid disk
- MBR 磁盘:读写 4 字节磁盘签名(Disk Signature)
- GPT 磁盘:读写 磁盘 GUID(Disk Guid)
手动指定示例
:: MBR
uniqueid disk id=AABBCCDD
:: GPT
uniqueid disk guid=550e8400-e29b-41d4-a716-446655440000
典型故障场景:虚拟机克隆磁盘脱机冲突,更换 ID 绕过签名冲突。
4. 离线磁盘后防止自动联机(系统重启会自动 online)
diskpart 本身没有持久离线参数; 组合套路临时锁盘(会话有效)
select disk 1
offline disk
attributes disk set readonly
二、Partition 分区高阶边界用法
1. 创建原始分区,不格式化、无文件系统(裸分区 Raw Partition)
常用于底层测试、dd 镜像写入、嵌入式存储
select disk 1
create partition primary size=8192
:: 不执行 format、不执行 assign
Windows 磁盘管理器可见,但提示未初始化;Linux 可直接读写块设备。
2. 覆盖式重建 ESP 分区但保留原有盘符(PE 引导修复实用套路)
select disk 0
select partition 1
assign letter=S
delete partition override
create partition efi size=100
format quick fs=fat32 label="ESP"
assign letter=S
3. MBR 逻辑分区嵌套边界演示(完整链路)
GPT 完全不支持,仅 Legacy MBR:
select disk 1
clean
convert mbr
create partition primary size=10240
create partition extended
create partition logical size=5120
create partition logical size=5120
list partition
限制:扩展分区内才能建立 logical;一块 MBR 磁盘最多 4 个主分区 / 3 主 + 1 扩展。
4. set id 隐藏冷门分区标识补充
select partition X
:: FreeBSD UFS
set id=a5
:: NetBSD
set id=a9
:: Solaris
set id=bf
:: HFS/HFS+(Mac老式分区 MBR标识)
set id=af
GPT 补充小众 GUID
:: Windows数据分区通用
set id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
:: IBM通用系统分区
set id=37affc90-bd2d-4cc8-8817-856584874481
5. override 删除分区的隐藏限制
delete partition override 仍然不能删除包含正在使用的页面文件 / 休眠分区,必须进 PE 或者卸载页面文件后操作。
三、Volume 卷极易被忽略的边界操作
1. shrink minimum 参数实战(防止过度收缩损坏文件系统)
绝大多数教程只写 desired,不提 minimum
select volume D
shrink querymax
:: 释放最多10GB,至少保留5GB空闲不能压缩
shrink desired=10240 minimum=5120
2. extend 无未分配空间直接报错
冷知识点: extend 只能合并分区右侧紧邻的未分配空间; 跨位置空余空间无法合并,图形磁盘管理器同样遵循该限制。
3. 挂载点路径含空格写法(必须英文引号)
select volume 3
assign mount="D:\My Mount Folder\DiskVolume"
4. attributes volume 完整标志清单
select volume X
attributes volume set hidden
attributes volume set readonly
attributes volume set shadowcopy
attributes volume clear hidden
attributes volume clear readonly
attributes volume clear shadowcopy
区分三层只读汇总(再强化一遍)
- VHD attach readonly → 虚拟磁盘层
- attributes disk set readonly → 整块物理磁盘
- attributes volume set readonly → 单一分区文件系统层
四、Vdisk 虚拟磁盘深挖隐藏玩法
1. 创建 VHD,不挂载、不分区,直接作为裸设备镜像容器
create vdisk file="D:\raw_container.vhdx" maximum=16384 type=expandable
可存放 sector 镜像,不建立任何分区表。
2. 检测差分 VHD 依赖完整性
select vdisk file="D:\child.vhdx"
detail vdisk
输出存在 Parent virtual disk 代表差分盘; 父文件移动 / 改名后,attach vdisk 直接失败。
3. attach vdisk noerr 不存在,diskpart 无错误抑制参数
重要坑:diskpart 脚本没有
noerr(和 console 的 diskpart 语法不一样!很多人混淆) 失败命令会直接终止脚本,想要容错只能用批处理 / PowerShell 封装判断。
4. compact vdisk 前置条件
仅动态 VHD/VHDX 有效; 分区内文件删除后需要执行,才能回收空洞; 固定大小 (Fixed) 虚拟磁盘执行 compact vdisk 完全无效。
五、GPT Attributes 补充组合实战案例
掩码全集再次拓展:
0x0000000000000001 禁止自动分配盘符
0x8000000000000000 分区隐藏(磁盘管理器隐藏)
0x0000000000000002 必需分区,系统弹窗警告勿删
0x0000000000000004 分区只读标志(GPT分区属性层只读)
示例:隐藏 + 禁止盘符 + 必需 + 分区只读
gpt attributes=0x8000000000000007
清除全部标志
gpt attributes=0x0000000000000000
实用场景:自制 OEM 隐藏恢复分区
select disk 0
select partition 6
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes=0x8000000000000001
六、动态磁盘冷门进阶(软 RAID 边界操作)
1. 拆分镜像卷两种模式 keep /nokeep
select volume 4
break disk=2 keep
:: keep:两块磁盘都保留独立完整分区
:: nokeep:断开后,第二块磁盘变为未分配空间
2. 删除失效动态磁盘数据库记录
select disk 0
missing
rescan
用于清理物理硬盘已经移除,但磁盘组信息残留在注册表的问题。
提醒:Windows 10/11 家庭版 不支持动态磁盘任何 RAID 功能。
七、CMD/PowerShell 管道单行黑科技(无需 dp 脚本文件)
1. 批量查看所有分区 GPT 属性
(echo select disk 0 && echo list partition && echo select partition 1 && echo detail partition && echo select partition 2 && echo detail partition) | diskpart
2. 一键只读挂载 VHD 并输出日志
(echo select vdisk file="D:\test.vhdx" && echo attach vdisk readonly && echo assign letter=R) | diskpart >> vhd_log.txt
3. 快速重建磁盘缓存
echo rescan | diskpart
八、容易踩坑的隐性行为(另类避坑知识点)
create partition primary默认起始偏移 1MB,天然 4K 对齐;不要手动尝试修改偏移,diskpart 不支持 offset 参数。format quick只是重建文件系统元数据,不擦除扇区;普通 format 不带 quick 会逐扇区清零,速度极慢。- diskpart 不能无损转换 MBR↔GPT,convert 命令必须空盘,有数据必须提前备份。
- active 命令仅 MBR 主分区生效;GPT 执行不会报错,但 UEFI 固件完全无视,属于无效指令。
- clean /clean all 区别
- clean:清空分区表,原始数据扇区保留,可数据恢复
- clean all:全盘写入 0,数据销毁;NVMe 不推荐长时间执行
九、新增【故障专属复合命令序列】
场景 1:移动硬盘 GPT 分区,盘符消失无法分配
rescan
select disk 1
attributes disk clear readonly
online disk
select partition 1
gpt attributes=0x0000000000000000
assign
场景 2:VHD 挂载成功,但磁盘管理器看不到分区
select vdisk file="D:\test.vhdx"
attach vdisk
rescan
list volume
内容:
- PE 离线救援全套 diskpart 脚本
- 一体化交互式菜单工具箱(BAT,带时间戳日志)
- diskpart 常见报错清单 + 排查方案
运行要求:全部管理员权限;PE 环境建议使用 Win10/11 PE(内置新版 diskpart) ⚠️ 所有涉及 clean /delete/format 属于高危操作,执行前确认磁盘编号!
一、PE 离线救援全套 diskpart 脚本
文件清单:
01_rescan_refresh.dp刷新磁盘缓存02_rebuild_esp_uefi.dpUEFI ESP 分区重建(引导修复)03_fix_offline_disk_sign.dp修复磁盘脱机、签名冲突04_mbr_fix_active.dpLegacy BIOS 激活分区05_hide_recovery_part.dp隐藏恢复分区06_wipe_disk_safe.dp磁盘清空模板
01_rescan_refresh.dp
rescan
list disk
list volume
list partition
rem 使用:diskpart /s 01_rescan_refresh.dp
02_rebuild_esp_uefi.dp(UEFI 重建 ESP,PE 引导修复核心)
rem 修改 select disk X 为系统磁盘,一般 disk 0
select disk 0
list partition
rem 删除旧ESP分区
select partition 1
delete partition override
rem 新建标准ESP+MSR
create partition efi size=100
format quick fs=fat32 label="ESP"
assign letter=S
create partition msr size=16
list partition
rem 重建后执行 bcdboot c:\windows s:
03_fix_offline_disk_sign.dp(克隆虚拟机 / 外接硬盘脱机)
select disk 1
attributes disk clear readonly
online disk
uniqueid disk
detail disk
04_mbr_fix_active.dp(Legacy BIOS 老式启动修复)
select disk 0
select partition 1
active
list partition
05_hide_recovery_part.dp
select disk 0
select partition 4
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes=0x8000000000000001
detail partition
06_wipe_disk_safe.dp
rem 警告:清空整块磁盘!修改disk编号
select disk 1
clean
convert gpt
create partition primary
format quick fs=ntfs label="NEW_DATA"
assign
二、一体化交互式菜单工具箱 DiskPart_Tool.bat
特性: ✅ 自动请求管理员权限 ✅ 所有操作生成带时间戳日志 disktool_log.txt ✅ 数字菜单选择功能 ✅ 高危操作二次确认 ✅ 兼容 Windows 本地环境 + PE
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
set LOG=%~dp0disktool_log.txt
echo ====================================== >>%LOG%
echo 启动时间: %date% %time% >>%LOG%
echo ====================================== >>%LOG%
:: 提权
fltmc >nul 2>&1 || (
echo 请求管理员权限
powershell -Command "Start-Process cmd -ArgumentList '/c ""%~f0""' -Verb RunAs"
exit
)
:MENU
cls
echo.
echo ================= DiskPart 综合工具箱 =================
echo 1. 刷新磁盘并导出磁盘清单
echo 2. 修复磁盘脱机/签名冲突
echo 3. UEFI重建ESP分区(PE引导修复)
echo 4. 隐藏GPT恢复分区
echo 5. 取消GPT分区隐藏
echo 6. 创建并挂载动态VHDX
echo 7. 只读挂载VHD/VHDX
echo 8. 卸载VHD
echo 9. 硬盘快速清空(clean)【高危】
echo 0. 退出
echo =======================================================
set /p opt=请输入功能编号:
if "%opt%"=="1" goto OPT1
if "%opt%"=="2" goto OPT2
if "%opt%"=="3" goto OPT3
if "%opt%"=="4" goto OPT4
if "%opt%"=="5" goto OPT5
if "%opt%"=="6" goto OPT6
if "%opt%"=="7" goto OPT7
if "%opt%"=="8" goto OPT8
if "%opt%"=="9" goto OPT9
if "%opt%"=="0" goto EXIT
echo 输入错误,按任意键返回菜单
pause >nul
goto MENU
:OPT1
echo [执行]刷新磁盘列表
(echo rescan && echo list disk && echo list volume) | diskpart >>%LOG%
echo 已写入日志 %LOG%
pause
goto MENU
:OPT2
set /p dsk=输入目标磁盘编号:
echo select disk %dsk% >%temp%\tmpdp.dp
echo attributes disk clear readonly >>%temp%\tmpdp.dp
echo online disk >>%temp%\tmpdp.dp
echo uniqueid disk >>%temp%\tmpdp.dp
diskpart /s %temp%\tmpdp.dp >>%LOG%
del /f %temp%\tmpdp.dp
pause
goto MENU
:OPT3
echo 【警告】此操作会重建ESP分区,仅限PE环境!
set /p confirm=确认执行? Y/N
if /i not "%confirm%"=="Y" goto MENU
(
echo select disk 0
echo select partition 1
echo delete partition override
echo create partition efi size=100
echo format quick fs=fat32 label="ESP"
echo assign letter=S
echo create partition msr size=16
) >%temp%\tmpdp.dp
diskpart /s %temp%\tmpdp.dp >>%LOG%
del /f %temp%\tmpdp.dp
echo 完成,之后执行 bcdboot C:\Windows S:
pause
goto MENU
:OPT4
set /p dsk=磁盘编号:
set /p part=分区编号:
(
echo select disk %dsk%
echo select partition %part%
echo set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
echo gpt attributes=0x8000000000000001
echo detail partition
) >%temp%\tmpdp.dp
diskpart /s %temp%\tmpdp.dp >>%LOG%
del /f %temp%\tmpdp.dp
pause
goto MENU
:OPT5
set /p dsk=磁盘编号:
set /p part=分区编号:
(
echo select disk %dsk%
echo select partition %part%
echo gpt attributes=0x0000000000000000
echo detail partition
) >%temp%\tmpdp.dp
diskpart /s %temp%\tmpdp.dp >>%LOG%
del /f %temp%\tmpdp.dp
pause
goto MENU
:OPT6
set /p vhdpath=VHDX完整路径:
set /p vsize=容量MB:
set /p letter=分配盘符(字母):
(
echo create vdisk file="%vhdpath%" maximum=%vsize% type=expandable
echo select vdisk file="%vhdpath%"
echo attach vdisk
echo create partition primary
echo format quick fs=ntfs label=VHD_DATA
echo assign letter=%letter%
) >%temp%\tmpdp.dp
diskpart /s %temp%\tmpdp.dp >>%LOG%
del /f %temp%\tmpdp.dp
pause
goto MENU
:OPT7
set /p vhdpath=VHD/VHDX路径:
set /p letter=盘符:
(
echo select vdisk file="%vhdpath%"
echo attach vdisk readonly
echo assign letter=%letter%
) >%temp%\tmpdp.dp
diskpart /s %temp%\tmpdp.dp >>%LOG%
del /f %temp%\tmpdp.dp
pause
goto MENU
:OPT8
set /p vhdpath=VHD路径:
(
echo select vdisk file="%vhdpath%"
echo detach vdisk
) >%temp%\tmpdp.dp
diskpart /s %temp%\tmpdp.dp >>%LOG%
del /f %temp%\tmpdp.dp
pause
goto MENU
:OPT9
echo !!!!!!!!!极度危险!!!!!!!!!
echo clean 将清空整块磁盘所有数据!
set /p dsk=目标磁盘编号:
set /p confirm=确认清空 Disk %dsk% ? YES/NO
if not "%confirm%"=="YES" goto MENU
(
echo select disk %dsk%
echo clean
echo convert gpt
echo create partition primary
echo format quick fs=ntfs label=WIPED
echo assign
) >%temp%\tmpdp.dp
diskpart /s %temp%\tmpdp.dp >>%LOG%
del /f %temp%\tmpdp.dp
pause
goto MENU
:EXIT
echo 工具退出 >>%LOG%
timeout /t 2 >nul
endlocal
exit
使用方式
保存为 DiskPart_Tool.bat,右键以管理员运行; 自动在同目录生成 disktool_log.txt,记录每一步执行输出。
三、diskpart 常见报错清单 + 原因 + 解决方案
1. The operation is not supported on removable disk
原因:移动磁盘不支持转换动态磁盘、部分 gpt 属性高级操作 方案:不要尝试 convert dynamic;仅使用基础分区指令。
2. Virtual disk service is not running
原因:VHD 相关操作依赖虚拟机存储服务 修复 CMD
sc config vds start=auto
net start vds
3. Cannot delete the partition because it contains an active page file or hibernation file
原因:分区存有页面文件 / 休眠文件被系统占用 方案:进 PE 执行删除;或者先移除页面文件、重启。
4. Disk is offline because of signature collision
原因:克隆虚拟机硬盘、外接磁盘和本机磁盘签名 / GUID 冲突 方案
select disk X
online disk
uniqueid disk
5. Specified partition type is not valid for the disk partition style
原因:MBR/GPT 混用指令,如在 GPT 执行 create partition logical 方案:GPT 不能使用扩展分区、逻辑分区。
6. There is not enough usable space for this operation
场景 1 extend:未分配空间不在分区右侧紧邻位置 场景 2 shrink:文件系统碎片过多,无法压缩到目标大小 方案:整理碎片,或者缩小目标容量。
7. The specified mount point does not exist
原因:文件夹挂载路径不存在 / 不为空 方案:手动新建空 NTFS 文件夹。
8. Parent virtual disk cannot be found(差分 VHD 报错)
原因:父 VHD 移动、改名、路径变更 方案:保持父文件路径不变;如需迁移,使用 Merge-VHD 合并。
9. Clean all 执行极慢(NVMe SSD)
原因:clean all 软件逐扇区写 0,不调用 SSD 硬件擦除指令 方案:NVMe 优先厂商工具安全擦除;普通 HDD 可继续使用 clean all。
10. gpt attributes 命令在 MBR 磁盘报错
原因:该指令仅 GPT 磁盘分区可用 方案:确认磁盘分区格式。
11. attach vdisk readonly 失败
原因:VHD 文件被其他进程占用;或者动态磁盘快照锁定 方案:关闭 VM、资源管理器占用句柄,重新尝试。
12. Active command succeeds but system cannot boot
原因:GPT 磁盘执行 active,指令不报错但是 UEFI 完全无视 方案:GPT 架构不要使用 active,依靠 ESP 分区引导。
配套部署建议
- 将所有
.dp脚本和DiskPart_Tool.bat放入同一文件夹; - 放入 PE 镜像
PETools目录,可以在离线维护直接调用; - 高危操作建议先执行菜单【1】导出磁盘列表核对编号;


浙公网安备 33010602011771号