Skip to Content
其它WSL2 VHDX 虚拟磁盘

使用 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 exit
Note
  • 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/sdc
Tip

使用 -L mydata 可以给磁盘添加卷标,方便后续识别和挂载。

文件系统选择:ext4 vs ext3

在 WSL2 环境下,强烈推荐使用 ext4,而不是 ext3。

核心结论

无脑选择 ext4,除非你有极其特殊的需求(例如必须把这个 VHDX 挂载到 10 年前的 Linux 内核上)。

ext4 是 ext3 的继任者,在性能、可靠性和功能上都全面超越 ext3,且 WSL2 对 ext4 的支持非常成熟(WSL2 默认的根文件系统就是 ext4)。

特性对比

特性ext3ext4对 WSL2 的影响
性能一般优秀ext4 支持多块分配延迟分配盘区(Extent),在处理大文件(如 Docker 镜像、数据库)或大量小文件时,读写速度比 ext3 快很多。
文件系统大小限制最大 32TB最大 1EBext4 在管理大容量分区时效率更高。
日志功能更高效ext4 的日志机制更优化,且支持”无日志”模式(No Journaling),追求极致性能可选。
碎片整理容易产生碎片天然抗碎片ext4 使用盘区(Extent)存储大文件,碎片更少,VHDX 在 Windows 宿主上的性能更稳定。

备选方案:安装 Hyper-V

如果你需要用到 Hyper-V 的其他功能(如虚拟机管理),可以选择安装 Hyper-V:

  1. 以管理员身份打开 PowerShell,运行:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
  2. 重启电脑

  3. 重启后,再次以管理员身份打开 PowerShell,即可使用 New-VHD 命令

Note

对于单纯创建 VHDX 的需求,仍然推荐 DiskPart 方案,因为无需安装额外功能,更加轻量。

Last updated on