起因
由于写上篇博客时在我本地wsl子系统中演示了如何使用modelscope下载模型,将DeepSeek-V3-0324下载到我的本地目录当中,刚下载时正享受进度条带给我咻咻的愉悦感,这下载速度真是美妙~~过了一会儿发现操作系统有点卡顿,顿感不妙,于是查看C盘爆红,赶紧停下正在下载模型的进程,才忽地想起这是大模型~~_~~查看模型详情页面,没有个600G的存储空间是下不来的呀,哈哈
于是赶紧从缓存模型的目录文件里将整个模型文件目录都删了,然鹅~情况并没有好转,C盘还是一样红
原因
WSL2的虚拟磁盘机制 📦
WSL2使用虚拟硬盘(VHD)文件来存储整个Linux文件系统。
这个VHD文件就像一个不断膨胀的气球🎈,很容易变大,但不会自动缩小。
删除≠收缩 ✂️
在WSL2中删除文件时,只是在气球内部腾出了空间。
但对Windows来说,这个"气球"(VHD文件)的大小并没有变化。
处理
1. WSL2内部清理 🧹
首先,我们需要告诉WSL2清理那些未使用的空间:
sudo fstrim /
这个命令就像是在气球内部进行大扫除,把所有不用的"垃圾"都集中到一起。
2. 从Windows角度缩小VHD
接下来,我们需要从Windows的角度来真正缩小这个"气球":
关闭所有WSL实例:
wsl --shutdown
运行diskpart命令(需要管理员权限的PowerShell):
diskpart
select vdisk file="C:\Users\[YourUsername]\AppData\Local\Packages\[WSLDistro]\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
这个过程就像是给气球打气筒,但是反着用,把里面多余的空气抽出来。😮💨
最后恢复正常容量。在执行过程当中可能这个虚拟磁盘的路径 C:\Users\Administrator\AppData\Local\Packages 是不确定的,一个是 Administrator,为当前登录用户账号,还有一个是 CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc ,我起初也是不知道这个目录,在wsl命令中也没有能找到关于这个信息的命令,但是到Packages这个目录下是确定的,而ext4.vhdx也是确定的,于是我用了最笨的方法,直接在Packages目录下搜索 ext4.vhdx,最后搜索出后右键属性得出整个路径