前言
Windows默认的WSL是安装在C盘的,往往会占用大量的空间,久而久之影响宿主系统的使用,这时候最好把它迁移到其他的硬盘上使用。另一个场景是换电脑的时候,WSL里面的东西可以整体迁移也是非常方便的。Windows内置的wsl工具已经自带了导入导出的功能,可以实现WSL迁移。
操作步骤
第一步:关闭所有WSL
wsl --shutdown
使用wsl -l -v
查看WSL是否为关闭状态。如下显示则是正确状态。
NAME STATE VERSION
* Ubuntu Stopped 2
第二步:运行导出命令
wsl --export Ubuntu D:\WSL-Export\ubuntu.tar
--export
后面第一个参数是上一步返回的列表里面的NAME字段,第二个参数是导出的位置。
第三步:注销原WSL
wsl --unregister Ubuntu
--unregister
后面第一个参数还是前面列表里面的NAME,此时我们再运行wsl -l -v
就会发现之前的Ubuntu已经不存在了。同时我们查看C盘,也会发现释放了大量的空间。
第四步:导入
wsl --import Ubuntu D:\WSL\ D:\WSL-Export\ubuntu.tar --version 2
--import
第一个参数是导入的名字,第二个参数是导入后的WSL位置,第三个是指定前面导出的包。
可能产生的问题
我迁移完成之后,普通操作与迁移之前的使用基本没什么区别。唯独docker出问题了,docker明明启动了却连接不上服务,或者docker命令都无法正常使用。因为windows上的docker是跟WSL集成的,所以容易出问题。我尝试了把docker相关的WSL也迁移到同一个硬盘,有时可以有时会引发新的问题。最终通过重装Docker Desktop解决了。但是docker中原来那些容器何镜像却丢了,好在没有什么重要的容器。
如果你也遇到问题,建议先备份容器container,镜像image,卷volume,再重装Docker Desktop。
结语
如果在同一电脑,如果只是从C盘移动到其他磁盘,名称没有修改的话,使用方法与体验完全没有区别。导入到不同电脑与系统的情况未做测试。