WSL的ubuntu默认安装在C盘,数据文件位于:C:\Users\hzgdi\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx, 使用一段时间后,尤其时使用大量的docker image 和容器后,占用空间较大, 我的ext4.vhdx竟然达到了300多个G,下面介绍迁移ext4.vhdx到其它磁盘的方法, 有两种方法:
1. export/import
以管理员权限打开power shell
wsl -l -v
//查询目前wsl状态
// NAME STATE VERSION
// * Ubuntu Running 2
wsl --shutdown Ubuntu
//如果是running, 则关闭Ubuntu
wsl --export Ubuntu D:\WSL\Ubuntu2204\export.tar
//导出Ubuntu 为export.tar,这可能需要几分钟时间
wsl --unregister Ubuntu
//去注册
wsl --import Ubuntu D:\WSL\Ubuntu2204\ D:\WSL\Ubuntu2204\export.tar --version 2
//导入export.tar, 数据保存至D:\WSL\Ubuntu2204\
Ubuntu config --default-user ricky
//设置默认用户
2. mklink 建立链接
以管理员权限打开power shell,
2.1 关闭运行的wsl
wsl -l -v
//查询目前wsl状态
// NAME STATE VERSION
// * Ubuntu Running 2
wsl --shutdown Ubuntu
//如果是running, 则关闭Ubuntu
2.2 拷贝C:\Users\hzgdi\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx 至路径 G:\WSL\Ubuntu\, 删除C:\Users\hzgdi\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx
2.3 将ext4.vhdx建立软连接,运行如下命令
cmd /c mklink "C:\Users\hzgdi\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx" "G:\WSL\Ubuntu\ext4.vhdx"
个人更喜欢第二种,mklink的比export/import 速度更快。