拯救被WSL占满的C盘
适用场景
1、使用Windows 10做为开发平台,并且C盘空间不是特别富裕。
2、使用Windows自带的Windows Subsystem for Linux(WSL)默认将Liunx子系统安装在了C盘。
3、因为在Linux中下载安装各种软件、Docker Image,运行多个Docker Container 导致C盘空间严重不足。
将WSL从系统盘移到其他盘
这里我们使用 Move WSL 这个工具。
1、首先下载 Move WSL 工具包,并解压。
2、管理员身份运行Windows PowerShell。
3、在PowerShell中运行如下命令,停止正在运行的Linux子系统。
> wsl --shutdown
4、在PowerShell中进入刚刚解压的目录,运行
> cd d:\move-wsl-master
D:\move-wsl-master> .\move-wsl.ps1
此时会出现如下提示,让我们选择要移动的目标
可以选择要移动的目标,比如移动Ubuntu-18.04,则输入 1 并回车,然后会提示让我们输入移动的目标路径
这里输入目标路径如 D:\WSL 然后回车,便会执行移动。根据移动目标的大小,时间可长可短,请耐心等待。
移动过程中,可以看到脚本会先将移动目标导出到一个tar文件,然后再将tar文件导入到 ext4.vhdx 文件中。
移动完成后,脚本会删掉原来C盘中的相应内容,释放C盘空间。下面可以运行命令重新启动Linux子系统
> wsl
回收Docker环境中的空间
Docker用久了会残留很多无用的Image。这些Image文件少则几十上百兆,多则几个G,给本就捉襟见肘的磁盘空间造成巨大浪费, 这时可以删掉不需要的Image文件。但你可能愕然发现,即使删掉了好几个Image,磁盘依然没有苗条下来。
这是因为ext4.vhdx磁盘空间会根据加载的数据自动增长,但是无法自动回收。下面是手动回收的步骤。
1、仍然是现在Windows PowerShell中停止正在运行的Linux子系统。
> wsl --shutdown
2、运行diskpart释放空间
# open window Diskpart
> diskpart
# 选择虚拟机文件执行瘦身
> select vdisk file="D:\WSL\docker-desktop-data\ext4.vhdx"
> attach vdisk readonly
> compact vdisk
> detach vdisk
> exit