WSL2 的 Linux 文件系统存储在一个 ext4.vhdx 虚拟硬盘 文件中。这个文件有一个致命特性:
只增不减 —— 你在 WSL 里装软件、下镜像、编译代码,vhdx 会自动扩容;但删文件后,Windows 端的 vhdx 体积不会自动缩小。
这意味着:
0GB 0GB
默认安装路径在 C 盘深处:
C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu...\LocalState\ext4.vhdx
如果你的 C 盘只有 128GB,WSL 吃掉 30-50GB 是家常便饭。
方案一:用 Ubuntu 官方 .wsl 文件直接装到 D 盘 ⭐推荐
Ubuntu 官方提供了 .wsl 后缀 的专用安装镜像,配合 WSL 2.4+ 的 --install --from-file 命令,可以直接指定安装目录。
1. 检查 WSL 版本
wsl --version
需要 WSL ≥ 2.7.1(支持 --location 和 --from-file 参数)。版本过低请更新:
wsl --update
2. 下载 Ubuntu .wsl 文件
Ubuntu 官方镜像站提供 .wsl 格式的专用文件:
Ubuntu 26.04 LTS https://releases.ubuntu.com/26.04/ubuntu-26.04-wsl-amd64.wslhttps://releases.ubuntu.com/24.04/ubuntu-24.04-wsl-amd64.wslhttps://cdimage.ubuntu.com/ubuntu-wsl/daily-live/current/
💡 国内用户可用阿里云镜像加速:
https://mirrors.aliyun.com/ubuntu-cdimage/ubuntu-wsl/
下载命令(PowerShell):
# 创建下载目录
mkdir D:\WSL\images -Force
# 下载 Ubuntu 26.04 LTS .wsl 文件(约400MB)
curl.exe -L -o D:\WSL\images\ubuntu-26.04-wsl-amd64.wsl `
https://releases.ubuntu.com/26.04/ubuntu-26.04-wsl-amd64.wsl3. 一键安装到 D 盘
# 安装到 D 盘指定目录
wsl --install --from-file D:\WSL\images\ubuntu-26.04-wsl-amd64.wsl --location D:\WSL\Ubuntu-26.04安装完成后,vhdx 文件直接生成在 D:\WSL\Ubuntu-26.04\ 下,不占 C 盘 1 字节。
4. 首次配置
# 启动
wsl -d Ubuntu-26.04
# 首次进入会提示创建用户名和密码
# 如果没有提示,手动创建:
adduser myuser
usermod -aG sudo myuser
# 设置为默认用户
cat > /etc/wsl.conf <<'EOF'
[user]
default=myuser
[boot]
systemd=true
EOF
# 退出重启
exit
wsl -t Ubuntu-26.04
wsl -d Ubuntu-26.045. 设置为默认发行版
wsl --set-default Ubuntu-26.04
方案二:在线安装时指定 D 盘
如果你不想手动下载 .wsl 文件,WSL 也支持在线安装时直接指定目录:
# 在线安装 Ubuntu 到 D 盘
wsl --install -d Ubuntu --location D:\WSL\Ubuntu⚠️ 注意:此方式从 Microsoft Store 下载,速度可能较慢,且版本可能不是最新 LTS。
方案三:已装在 C 盘?3步搬家到 D 盘 ⭐重点
如果你已经把 WSL 装在了 C 盘,不用卸载重装,导出→注销→导入 三步即可搬迁。
第1步:导出备份
# 先关闭所有 WSL
wsl --shutdown
# 查看当前发行版名称
wsl -l -v
# 导出为 tar 文件(路径自己改)
wsl --export Ubuntu D:\WSL\ubuntu-backup.tar💡 导出时间取决于你的 WSL 大小,10-30 分钟不等。期间 不要操作 WSL。
第2步:注销 C 盘旧版
# 确认导出文件存在且大小合理后,执行注销
wsl --unregister Ubuntu⚠️ 此操作会删除 C 盘上的 ext4.vhdx,释放 C 盘空间。请确保上一步导出成功!
第3步:导入到 D 盘
# 创建目标目录
mkdir D:\WSL\Ubuntu -Force
# 导入到 D 盘
wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\ubuntu-backup.tar --version 2导入完成后,检查 vhdx 位置:
# 确认 vhdx 在 D 盘
dir D:\WSL\Ubuntu\ext4.vhdx⚠️ 迁移后必须恢复默认用户
导入后 WSL 默认以 root 登录,需要恢复普通用户:
方法一:命令行设置
Ubuntu config --default-user 你的用户名
方法二:修改 wsl.conf
# 进入 WSL
wsl -d Ubuntu
# 编辑配置
sudo nano /etc/wsl.conf
# 添加以下内容
[user]
default=你的用户名方法三:注册表(以上都不生效时)
1. 打开 regedit2. 定位到 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss3. 找到对应发行版的 DefaultUid,改为1000(即第一个普通用户的 UID)
迁移完成后清理
# 删除备份文件(释放空间)
del D:\WSL\ubuntu-backup.tar
# 验证一切正常
wsl -l -v附加技能:vhdx 瘦身,回收已删除文件的空间
即使迁移到 D 盘,vhdx 仍会"只增不减"。定期瘦身可以回收空间:
方法一:diskpart(最通用)
# 关闭 WSL
wsl --shutdown
# 打开 diskpart
diskpart
# 在 diskpart 中执行(路径替换为你的 vhdx 实际路径)
select vdisk file="D:\WSL\Ubuntu\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit💡 瘦身效果:从 30GB 压缩到 12GB 很常见,取决于你在 WSL 中删除了多少文件。
方法二:WSL 内置命令(新版 WSL 支持)
wsl --shutdown
wsl --manage Ubuntu --compact方法三:Hyper-V 管理器(可视化)
1. Win+S搜索 "Hyper-V 管理器"2. 右侧操作面板 → "编辑磁盘" 3. 选择 vhdx 文件 → 选择"压缩"
完整速查卡
新安装到 D 盘(.wsl 文件方式)
# 1. 下载 .wsl 文件
curl.exe -L -o D:\WSL\ubuntu-26.04.wsl https://releases.ubuntu.com/26.04/ubuntu-26.04-wsl-amd64.wsl
# 2. 安装到 D 盘
wsl --install --from-file D:\WSL\ubuntu-26.04.wsl --location D:\WSL\Ubuntu-26.04
# 3. 设为默认
wsl --set-default Ubuntu-26.04C 盘迁移到 D 盘
# 1. 导出
wsl --shutdown
wsl --export Ubuntu D:\WSL\ubuntu-backup.tar
# 2. 注销(释放C盘空间)
wsl --unregister Ubuntu
# 3. 导入到 D 盘
wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\ubuntu-backup.tar --version 2
# 4. 恢复默认用户
Ubuntu config --default-user 你的用户名vhdx 瘦身
wsl --shutdown
diskpart
# select vdisk file="D:\WSL\Ubuntu\ext4.vhdx"
# attach vdisk readonly
# compact vdisk
# detach vdisk
# exit常见问题
Q:迁移后 Docker 还能用吗?
能用。Docker Desktop 的 WSL 集成是独立的发行版(docker-desktop 和 docker-desktop-data),如果你也用了 Docker,建议把这两个也迁到 D 盘:
wsl --export docker-desktop-data D:\WSL\docker-desktop-data-backup.tar
wsl --unregister docker-desktop-data
wsl --import docker-desktop-data D:\WSL\docker-desktop-data D:\WSL\docker-desktop-data-backup.tar --version 2Q:迁移后 Windows Terminal 的配置还在吗?
在。Terminal 的配置存储在 Windows 的 settings.json 中,不受 WSL 迁移影响。如果图标或名称变了,检查 Terminal 配置中的 guid 是否对应。
Q:.wsl 文件和 .appx 有什么区别?
.wslwsl --install --from-file--location推荐 .appxwsl --install -d Ubuntu--location
Q:装到 D 盘会不会变慢?
几乎不会。WSL2 的 IO 性能主要取决于磁盘类型(SSD vs HDD),而不是盘符。只要 D 盘是 SSD,性能与 C 盘无异。如果 D 盘是机械硬盘,IO 性能确实会下降