Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决

Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决

Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决

背景

在项目开发中,误下载某文件仓导致内存爆炸,C盘爆满后,wsl进程异常中断(最后也没下载完全)。 于是,需要清理异常内存,并恢复足够空间大小。

通过du等指令,删除cache、docker、不需要的大文件目录后,C盘并未实时减小。原来wsl的虚拟磁盘自动增大后,不会自动减小,需要手动管理。

wsl内部清理完内存后,C盘空间并未增加,如何解决?

分析了下现象原因是WSL 2 使用 动态扩展的 VHDX 文件时:

  • 只增长不缩小:文件会根据需要增长,但删除数据后不会自动缩小
  • VHDX 文件位置:通常在 C:\Users<username>\AppData\Local\Packages\

建议优先尝试方法1自带命令去压缩,不行再尝试方法2用diskapart方式去压缩。

方法1

尝试wsl自带命令去压缩:

bash 复制代码
# 在 Windows PowerShell(管理员)中执行
wsl --shutdown

# 压缩指定发行版的虚拟硬盘
wsl --manage <distro-name> --set-sparse true

# 例如:
wsl --manage Ubuntu --set-sparse true
wsl --manage Ubuntu-20.04 --set-sparse true

我的场景中,尝试运行指令后:wsl --manage Ubuntu-24.04 --set-sparse true,报错显示:

由于潜在的数据损坏,目前已禁用稀疏 VHD 支持。

若要强制分发使用稀疏 vhd,请运行:

wsl.exe --manage --set-sparse --allow-unsafe

错误代码: Wsl/Service/E_INVALIDARG

方法2

于是改用方法2,通过传统diskapart方式去压缩。

bash 复制代码
# 查找 子系统Ubuntu-24.04 的 VHDX 文件位置,通常名为:ext4.vhdx

wsl --shutdown


Step 2:关闭 WSL
wsl --shutdown

Step 3:使用 diskpart 压缩
# 以管理员权限打开 CMD
diskpart

# 替换为实际的 VHDX 文件路径,注意替换为你自己的用户目录
select vdisk file="C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_<hash>\LocalState\ext4.vhdx"

# 以只读模式附加
attach vdisk readonly

# 执行压缩
compact vdisk

# 分离虚拟磁盘
detach vdisk

# 退出
exit

以上操作完成后,可见C盘明显减小,搞定。 以上流程多在跟大模型GPT5交互过程中完成,较搜索博客寻找解决方案而言,效率提升明显。唯一的问题是,尝试指令和方案时,要擦亮眼睛注意判别,高风险操作要谨慎。

相关推荐
wdfk_prog10 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
七夜zippoe11 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥11 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿11 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘11 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy64812 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满12 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠12 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio12 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice12 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习