cxl
Published on 2025-04-09 / 11 Visits
0
0

WSL存储之坑

起因

由于写上篇博客时在我本地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的角度来真正缩小这个"气球":

  1. 关闭所有WSL实例:

  wsl --shutdown
  1. 运行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,最后搜索出后右键属性得出整个路径


Comment