将 WSL 中的 Ubuntu 迁移到其他磁盘可有效释放 C 盘空间并优化系统性能。以下是详细步骤及注意事项:
📍 迁移步骤
备份 WSL 数据(防止意外丢失)
以管理员身份打开 PowerShell 或命令提示符。
导出 Ubuntu 实例为压缩包(替换
<目标路径>
为备份位置,如D:\backup\ubuntu.tar
):wsl --export Ubuntu <目标路径>.tar
示例:
wsl --export Ubuntu D:\backup\ubuntu.tar
注销原 Ubuntu 实例
关闭所有 WSL 进程:
wsl --shutdown
注销 Ubuntu(此操作将删除 C 盘的原数据):
wsl --unregister Ubuntu
在新磁盘创建安装目录
在目标磁盘(如 D 盘)新建文件夹(如
D:\WSL\Ubuntu
)。New-Item -ItemType Directory -Path "D:\WSL\Ubuntu" -Force
导入 Ubuntu 到新位置
使用备份文件导入到新目录(指定 WSL 版本为 2):
wsl --import Ubuntu "D:\WSL\Ubuntu" "D:\backup\ubuntu.tar" --version 2
⚠️ 确保路径无空格或特殊字符,避免导入失败。
设置默认用户(可选)
若迁移后默认登录用户变为
root
,需恢复原用户:ubuntu.exe config --default-user <原用户名> # 如 "ubuntu2004.exe" 需替换为实际发行版名称
示例:
ubuntu2004.exe config --default-user jason
验证迁移结果
启动 Ubuntu 并检查磁盘挂载点:
wsl -d Ubuntu df -h # 查看根目录是否为 `/`,且容量匹配新磁盘空间
在 Windows 中检查新目录(如
D:\WSL\Ubuntu
)是否生成ext4.vhdx
虚拟磁盘文件。
⚠️ 关键注意事项
权限与路径要求
管理员权限:所有命令需在管理员权限的终端执行。
目标磁盘格式:必须是 NTFS 或 ReFS,支持大文件存储。
路径规范:避免使用中文或空格(如
D:\开发环境
可能导致异常)。
迁移后清理
确认迁移成功后,可删除备份文件(如
D:\backup\ubuntu.tar
)释放空间。若原 C 盘残留数据(路径:
%LOCALAPPDATA%\Packages\CanonicalGroupLimited*
),可手动删除。
多发行版处理
若系统存在多个 WSL 发行版,迁移前通过
wsl -l -v
确认名称,避免误操作。
🔧 故障排除
导入失败:检查备份文件完整性(如通过 SHA256 校验),或重新导出导入。
用户配置丢失:若未执行步骤 5,手动创建用户并迁移数据:
sudo adduser <新用户名> sudo usermod -aG sudo <新用户名> # 赋予sudo权限 sudo cp -r /home/<原用户>/* /home/<新用户>/ sudo chown -R <新用户>:<新用户> /home/<新用户>
WSL 无法启动:尝试重置默认版本:
wsl --set-default-version 2
💎 总结
通过导出-注销-导入流程,可安全迁移 Ubuntu 至新磁盘。迁移后需验证文件系统挂载点及用户配置,确保环境完整。若需进一步优化存储,可结合 Docker 数据路径迁移(参考 )全面释放 C 盘压力。