当前位置: 首页 > news >正文

Windows WSL2 占用磁盘空间清理释放

目前工作中时常用到WSL2(Ubuntu20.04),在使用一段时间后会发现WSL2所占用磁盘空间越来越多,体现在WSL2之上安装Linux分发对应的vhdx虚拟磁盘文件体积越来越大,会占用Windows自身空间,即使手动清理了Linux分发内文件释放空间,此虚拟磁盘文件体积也不会自动缩小,所以在有需要的时候需要手动缩减虚拟磁盘空间大小来释放更多空间给到Windows自身使用。 这里推荐一个软件WinDirStat,主要用于查找Windows系统内的大体积文件的,通常来说vhdx文件都是在系统中可以排进前十的大文件,所以用WinDirStat比较容易定位大文件和进行清理,例如下方截图,在我的系统中虚拟磁盘文件存放路径为(此路径用于后续进行磁盘缩减):C:\Users\rong\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgs\LocalState\ext4.vhdx

清理操作说明

以下方式在Windows10 或Windows11 专业版及以上测试通过

步骤一:进入WSL2的Linux分发手动删除Linux分发内无用文件

步骤二(可选):如果系统安装使用了Docker Desktop,一般还需要执行此步骤,否则很多空间会被占用无法释放,导致后续缩减磁盘时效果不理想。

进入Linux分发并执行如下命令,清理docker相关缓存,无用容器等占用空间。

docker system prune

    注意:执行以上命令会清理以下内容,

  • 所有已经停止运行的容器(运行中的不会被清理)
  • 所有未被任何容器引用的volume
  • 所有未被任何容器引用的network
  • 所有未被任何镜像应用的layer,如果执行 docker system prune -a,则会一并删除未被任何运行中容器使用的镜像,需要小心使用。
  • 构建镜像的缓存信息

步骤三:关闭所有WSL2已运行的分发,并关闭WSL2,方法为:
1. 如果有安装Docker Desktop 先关闭退出
2. 打开cmd窗口并执行如下命令关闭所有WSL分发

wsl --shutdown

步骤四: 以管理员身份打开一个cmd窗口,

1. 输入 diskpart 并回车,进入DISKPART命令行,如下图:

2. 在DISKPART>命令提示符下输入以下命令,每行以回车结尾,其中执行compact vdisk时会根据虚拟磁盘文件大小占用过一些时间。(虚拟磁盘文件一般位于:C:\Users\<your_username>\AppData\Local\Packages\<distro_package_name>\LocalState\ext4.vhdx)

select vdisk file="这里替换为上方通过WinDirStat获取的vhdx虚拟磁盘文件路径"
attach vdisk readonly
compact vdisk
detach vdisk

3. 执行 exit 并回车来退出DiskPart。

其他参考

以上方式是前两年找到的资料,一直在使用并沿用至今。 随着使用人更多,目前也出现了其他方式,例如在专业版及以上版本也可以通过powershell,进入存放vhdx文件目录,并执行Optimize-VHD -Path .\ext4.vhdx -Mode full命令进行磁盘大小缩减(未测试过)。

官方也在2023年9月声明新增了自动缩减虚拟磁盘文件大小的特性,但是也未测试过, 参考:

Windows Subsystem for Linux September 2023 update - Windows Command Line

http://www.lryc.cn/news/285271.html

相关文章:

  • 2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析
  • 2.C语言——控制语句
  • Linux网络之PXE高效批量装机、Kickstart全自动化安装
  • react umi/max 页签(react-activation)
  • 计算机网络编程
  • 【计算机网络实训】期末考题-路由重分发+三层交换机VLAN间路由
  • git 常规操作及设置
  • element中表格组件的row-class-name和class-name属性的使用以及无效处理
  • 【AI理论知识】EM算法
  • 03 OSPF
  • node.js(express.js)+mysql实现注册功能
  • AI绘画Stable Diffusion进阶使用
  • C 练习实例33 - 质数(素数)判断
  • docker环境下mongo副本集的部署及异常修复
  • 【Java】Maven的安装与配置
  • 向量和向量如何相乘?
  • 计算机组成原理 指令流水线
  • macOS - md5 | md5sum
  • Tomcat快速入门
  • 如何结合antd design pro 5 结合express 上传多个文件
  • Django随笔
  • 线程和进程的区别(从JVM角度出发)
  • 手把手教你如何快速定位bug,如何编写测试用例,快来观摩......
  • 计算矩阵边缘元素之和(c++)
  • java使用jsch处理软链接判断是否文件夹
  • 【2023】java使用WebClient实现chatGPT调用建立web socket连接
  • 力扣【四数之和】
  • IMX6LL|linux设备驱动模型
  • 2023年的技术总结和工作反思
  • Stable Diffusion中的Embeddings