首页 > 其他分享 >解决删除文件后 WSL2 磁盘空间不释放的问题

解决删除文件后 WSL2 磁盘空间不释放的问题

时间:2024-05-30 23:43:54浏览次数:40  
标签:文件 ext4 删除 wsl 磁盘空间 vhdx 磁盘 WSL2

Tags: #wsl #wsl2 #windows

今天突然发现 C 盘快满了,想起来之前把 Docker 容器的数据持久化到了 WSL2 的某个目录下,于是就想着把不需要的文件清理了。但清理完毕之后我发现 C 盘的剩余空间并没有变大,非常的奇怪。后来我在网上搜索了很久,终于找到了原因和解决方法。

1 分析原因

不同于 WSL1WSL2 本质上是虚拟机,所以 Windows 会自动创建 vhdx 后缀的虚拟磁盘文件作为存储。这个 vhdx 后缀的虚拟磁盘文件特点是可以自动扩容,但是一般不会自动缩容。一旦有很多文件把它“撑大”,即使把这些文件删除它也不会自动“缩小”。所以删除文件后还需要我们手动进行压缩才能释放磁盘空间。

2 如何操作

2.1 找到并确定要压缩的虚拟磁盘文件

首先,我们搜索并找到 ext4.vhdx 文件。

我的 WSL2 有如下的 Linux distributions:

➜  wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

我搜索到的 ext4.vhdx 文件路径如下:

  • C:\Users\richa\AppData\Local\Docker\wsl\data\ext4.vhdx
  • C:\Users\richa\AppData\Local\Docker\wsl\distro\ext4.vhdx
  • C:\Users\richa\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

由于我这里 C 盘空间不足主要是 Ubuntu-20.04 删除文件后 ext4.vhd 没有缩容引起的,所以只压缩了它的 ext4.vhdx

如果出现删除 Docker 镜像、删除 Docker 容器后磁盘占用没有缩小,应该也可以类比操作。

2.2 备份虚拟磁盘文件所属的 Linux distribution(可选)

在 PowerShell 中执行:

# 关闭 WSL2 中的 linux distributions
wsl --shutdown
# 备份指定的 Linux distribution 到指定的位置
wsl --export Ubuntu-20.04 D:\Ubuntu-20.04.tar

如果后续步骤出现错误,可以从备份的文件中恢复。本人后续步骤并没有出现错误,所以并没有实践恢复的操作。

有需要的读者可以参考:wsl2-backup-and-restore-images-using-import-and-export

2.3 压缩虚拟磁盘文件

在 PowerShell 中执行:

# 关闭 WSL2 中的 linux distributions
wsl --shutdown
# 运行管理计算机的驱动器的 DiskPart 命令
diskpart

在新打开的 DiskPart 命令窗口中执行:

# 选择虚拟磁盘文件
select vdisk file="C:\Users\richa\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"
# 压缩文件
compact vdisk
# 压缩完毕后卸载磁盘
detach vdisk

上述操作执行完毕,WSL2 删除文件后空出来的磁盘空间就被释放了。

 

参考:

[解决删除文件后 WSL2 磁盘空间不释放的问题 - 知乎](https://zhuanlan.zhihu.com/p/521747491)

标签:文件,ext4,删除,wsl,磁盘空间,vhdx,磁盘,WSL2
From: https://www.cnblogs.com/ministep/p/18223491

相关文章

  • 模型节点操作学习笔记(Appendix)实验1 -- Tflite int8 删除最后的Round节点 (持续更新)
    背景如下:我要删除Round节点,同时看了一下,Dequantize和Quantize也是没有必要的。所以最好一起删除。原始项目地址:PINTO0309/hand-gesture-recognition-using-onnx:ThisisahandgesturerecognitionprogramthatreplacestheentireMediaPipeprocesswithONNX.Simultane......
  • 苹果手机数据不慎删除?这4个方法果粉必看!
    苹果手机该怎么恢复丢失的数据呢?有时候会因为使用不当或者是被他人误删等原因,导致重要的数据丢失,这时我们需要找回丢失手机数据,小编给大家分享4种恢复苹果手机数据的技巧,大家赶紧来学一学吧!一、icloud云备份数据恢复iCloud可以实现苹果手机数据的实时同步和备份,当遇到手机......
  • 代码随想录算法训练营Day55 | 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总
    本文目录583.两个字符串的删除操作做题看文章72.编辑距离做题看文章编辑距离总结篇以往忽略的知识点小结个人体会583.两个字符串的删除操作代码随想录:583.两个字符串的删除操作Leetcode:583.两个字符串的删除操作做题找出最长公共子序列,然后用两个字符串的......
  • 基于SSH远程访问WSL2(非长期稳定版本)
    to2024/05/31目标使笔记本可以在同一局域网下访问主机的WSL2。部署环境HOST-OS:Windows10,WSL2(Ubuntu20.04)REMOTE-OS:Windows10VSCode-EXTENSION:WSL,Remote-SSH部署过程(主要参考[1,2])WSL2所在主机需要进行的操作:WSL2-bash更新openssh-server:sudoa......
  • vm exsi 扩展windows虚拟机磁盘空间
    最近接到个需求,需要搭建图片服务器给后端程序读取目录和操作图片这个需求分为几个步骤:1.扩展windwos虚拟机磁盘空间考虑到图片操作的便利性,这里选用windows系统做图片服务器,但是由于图片比较大,原有windows主机磁盘不够,所以第一步就是扩展windows虚拟机磁盘空间2.在windows服务......
  • SVN如何还原修改和删除编译衍生文件
    说明代码里编译后会有很多衍生文件,还有很多修改点,如果要还原回去可以进行如下操作还原修改选择Revert还原选项查看修改过的文件,选择还原删除未同步的文件还原是针对已经同步到服务器的文件,以下多余的衍生文件可以通过如下方法删除......
  • MySQL约束条件,非空空约束(not nullnull),主键约束PK(primary key),外键约束FK(foreign key
    ⅠMySQL约束条件【一】什么是约束条件约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败!约束条件在创建表时可以使用,也可以修改表的时候添加约束条件【二】约束条件概览null和notnull为空和不为空限制整数类型必须大......
  • excel表格里怎样不删除0,又不显示0呢?
    在单元格里不显示0,大体上有这么几种方法:1.设置单元格自定义格式选中数据区域,鼠标右键,点一下设置单元格格式,选中数字,自定义,在右侧的类型栏,设置格式:[=0]"";G/通用格式这样设置,如果单元格内数据在不是0的情况下需要改成其它格式,则要重新按上述步骤设置。2.修改excel设置......
  • 代码随想录算法训练营第第22天 | 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中
    二叉搜索树的最近公共祖先相对于二叉树的最近公共祖先本题就简单一些了,因为可以利用二叉搜索树的特性。题目链接/文章讲解:https://programmercarl.com/0235.二叉搜索树的最近公共祖先.html视频讲解:https://www.bilibili.com/video/BV1Zt4y1F7ww/***@param{TreeNode}......
  • linux定时删除历史日志
    在Linux系统中,日志文件是记录系统、应用程序或服务的运行信息、错误消息和警告的重要工具。然而,随着时间的推移,这些日志文件会不断积累,占用大量的磁盘空间。如果不及时清理,可能会导致磁盘空间不足,从而影响系统的正常运行。因此,定时删除历史日志成为了Linux系统管理中不可或缺的......