You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL2设置稀疏磁盘后如何回收磁盘空间?

WSL2设置稀疏磁盘后如何回收磁盘空间?

嘿,我来帮你捋清楚这个问题!首先得明确一点:开启稀疏模式后,WSL并不会自动把已有的空闲空间还给Windows——它只是保证你后续在WSL里删除文件时,新释放的空间不会再占用Windows的实际磁盘容量。但你现在VHD里那60G左右的“虚占”空间,还是得手动操作才能回收回来。

下面给你一步步说怎么强制回收空间:

  1. 先在WSL里标记空闲块
    打开你的WSL终端,先确保已经删掉了所有不需要的文件(比如缓存、旧安装包、没用的日志这些),然后运行这个命令,告诉ext4文件系统哪些块是空闲的:

    sudo fstrim /
    

    输入密码后等着执行完就行,这个过程可能需要一会儿,耐心等~

  2. 停止WSL发行版
    关掉WSL终端,打开Windows的管理员PowerShell,运行命令停止对应的发行版:

    wsl --terminate <你的发行版名称>
    

    比如你用的是Ubuntu,就换成wsl --terminate Ubuntu;不确定发行版名称的话,用wsl --list就能看到所有已安装的发行版。

  3. 用diskpart压缩VHD文件
    还是在管理员PowerShell里,输入diskpart打开磁盘管理工具,然后依次执行下面的命令(注意替换成你自己的VHD路径):

    # 选中你的WSL磁盘文件,路径要对应实际位置
    select vdisk file="C:\Users\<你的Windows用户名>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"
    # 只读模式挂载磁盘(避免操作时出问题)
    attach vdisk readonly
    # 压缩磁盘,回收空闲空间
    compact vdisk
    # 卸载磁盘
    detach vdisk
    

    要是找不到VHD文件的位置,可以直接在Windows资源管理器里搜索ext4.vhdx,找到后复制路径替换进去就行。

等这些步骤都做完,你再去看那个ext4.vhdx的大小,应该就会降到接近你用du查到的10G左右了。

另外说一下后续的动态回收:之后你在WSL里删除文件后,定期跑一下sudo fstrim /,WSL会逐步把空闲空间归还给Windows,但如果是一次性释放了大量空间,还是建议用上面的手动步骤来快速回收。

备注:内容来源于stack exchange,提问作者name.disp

火山引擎 最新活动