使用 DiskPart 创建 VHDX 并挂载到 WSL2
本文介绍如何使用 Windows 原生的 DiskPart 工具创建 VHDX 虚拟磁盘,并将其挂载到 WSL2 中使用。
为什么选择 DiskPart?
如果你尝试使用 PowerShell 的 New-VHD 命令时遇到以下错误:
New-VHD : 无法将"New-VHD"项识别为 cmdlet、函数、脚本文件或可运行程序的名称...这是因为 New-VHD 是 Hyper-V 模块的命令,需要安装 Hyper-V 功能才能使用。
推荐使用 DiskPart 方案,原因如下:
- ✅ 无需安装任何软件 - Windows 原生自带
- ✅ 效果完全一样 - 创建的 VHDX 功能相同
- ✅ 操作简单快捷 - 几分钟即可完成
Tip
如果你确实需要用到 Hyper-V 的其他功能,可以安装 Hyper-V(见文末备选方案)。但对于单纯创建 VHDX,DiskPart 是更轻量的选择。
创建 VHDX(DiskPart 方案)
步骤 1:打开 DiskPart
以管理员身份打开 PowerShell 或 CMD,输入:
diskpart步骤 2:创建 VHDX
在 DiskPart 交互模式中,依次执行以下命令:
# 创建动态扩展的 VHDX,最大 100GB
# 请将路径替换为你实际想要存放的位置
create vdisk file="d:\gt\var\lib\vhdx\gt-x.vhdx" maximum=102400 type=expandable
# 选择刚才创建的虚拟磁盘
select vdisk file="d:\gt\var\lib\vhdx\gt-x.vhdx"
# 挂载虚拟磁盘(确认文件创建成功)
attach vdisk
# 分离虚拟磁盘(准备交给 WSL2 处理)
detach vdisk
# 退出 DiskPart
exitNote
maximum=102400表示最大 100GB(单位:MB)type=expandable表示动态扩展,实际占用空间随数据增长- 路径请使用你实际想要存放的位置
挂载到 WSL2
创建完成后,以管理员身份打开 PowerShell,运行:
# 以裸设备模式挂载进 WSL2
wsl --mount --vhd d:\gt\var\lib\vhdx\gt-x.vhdx --bare格式化磁盘
在 WSL2 中格式化磁盘:
# 1. 查看设备名(假设是 /dev/sdc)
lsblk
# 2. 格式化为 ext4(推荐添加 -L 参数加个卷标,方便识别)
sudo mkfs.ext4 -L mydata /dev/sdcTip
使用 -L mydata 可以给磁盘添加卷标,方便后续识别和挂载。
文件系统选择:ext4 vs ext3
在 WSL2 环境下,强烈推荐使用 ext4,而不是 ext3。
核心结论
无脑选择 ext4,除非你有极其特殊的需求(例如必须把这个 VHDX 挂载到 10 年前的 Linux 内核上)。
ext4 是 ext3 的继任者,在性能、可靠性和功能上都全面超越 ext3,且 WSL2 对 ext4 的支持非常成熟(WSL2 默认的根文件系统就是 ext4)。
特性对比
| 特性 | ext3 | ext4 | 对 WSL2 的影响 |
|---|---|---|---|
| 性能 | 一般 | 优秀 | ext4 支持多块分配、延迟分配和盘区(Extent),在处理大文件(如 Docker 镜像、数据库)或大量小文件时,读写速度比 ext3 快很多。 |
| 文件系统大小限制 | 最大 32TB | 最大 1EB | ext4 在管理大容量分区时效率更高。 |
| 日志功能 | 有 | 更高效 | ext4 的日志机制更优化,且支持”无日志”模式(No Journaling),追求极致性能可选。 |
| 碎片整理 | 容易产生碎片 | 天然抗碎片 | ext4 使用盘区(Extent)存储大文件,碎片更少,VHDX 在 Windows 宿主上的性能更稳定。 |
备选方案:安装 Hyper-V
如果你需要用到 Hyper-V 的其他功能(如虚拟机管理),可以选择安装 Hyper-V:
-
以管理员身份打开 PowerShell,运行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -
重启电脑
-
重启后,再次以管理员身份打开 PowerShell,即可使用
New-VHD命令
Note
对于单纯创建 VHDX 的需求,仍然推荐 DiskPart 方案,因为无需安装额外功能,更加轻量。
Last updated on