WSL 挂载虚拟磁盘(VHDX)完整教程(含 DiskPart 格式化方案)
一、适用场景
适用于:
- 给 WSL 挂载独立数据盘(模型、数据集、工程目录)
- 使用 Windows 11 + WSL2
- 希望把大文件放在非系统盘(如 G 盘)
二、完整操作流程(方式一:在 DiskPart 中直接格式化 ext4)
1️⃣ 创建虚拟磁盘并分区(Windows)
管理员权限打开 PowerShell 或 CMD:
diskpart
create vdisk file="G:\WSL\data.vhdx" maximum=512000 type=expandable select vdisk file="G:\WSL\data.vhdx" attach vdisk create partition primary select partition 1 format fs=ext4 quick label="WSLData" detach vdisk exit
✅ 这一步非常关键:
如果缺少
select partition 1 format fs=ext4 quick label="WSLData"
那么虚拟磁盘只是“分了区”,没有 Linux 文件系统,WSL 一定挂载失败。
2️⃣ 使用 WSL 挂载虚拟磁盘
wsl --mount G:\WSL\data.vhdx --vhd --name dataDisk
3️⃣ 在 WSL 内验证
进入 WSL:
df -h
挂载点:
/mnt/wsl/dataDisk
测试:
touch /mnt/wsl/dataDisk/test.txt
三、完整操作流程(方式二:在 WSL 内部格式化)
如果你已经创建了 VHDX + 分区,但忘了格式化 ext4,也可以用这种补救方式:
1️⃣ 先挂载虚拟磁盘
wsl --mount G:\WSL\data.vhdx --vhd --name dataDisk
2️⃣ 在 WSL 内格式化
lsblk
找到新磁盘(如
/dev/sdb1
):
sudo mkfs.ext4 /dev/sdb1 sudo mkdir -p /mnt/wsl/dataDisk sudo mount /dev/sdb1 /mnt/wsl/dataDisk
四、以后如何使用(免重复格式化)
以后每次重启电脑,只需:
wsl --mount G:\WSL\data.vhdx --vhd --name dataDisk
WSL 会自动识别 ext4 文件系统并挂载。
五、错误根因总结(防踩坑)
| 现象 | 根因 |
|---|---|
| No such device | 分区存在,但没有 ext4 文件系统 |
| 挂载失败 | 忘了
--vhd
|
| WSL 能看到磁盘但 mount 失败 | 裸分区,没格式化 |
| DiskPart 看得到盘但 WSL 识别不了 | Windows 默认不创建 Linux 文件系统 |
六、一句话核心结论
WSL 挂载虚拟磁盘的本质要求:分区 + ext4 文件系统 缺一不可。