我用 wls2 开发有一段时间了,但是发现它占用磁盘好快,我都没怎么写代码,但是存放 wls2 的两个 vhdx 文件,一个 40 多 G 一个 30 多 G 。但是进 linux 系统 df 看了一下更目录使用率才 15%。现在不知道怎么拯救我的磁盘。 我试过下面的压缩方式,但是没啥变化,还是那么大。不知道咋整了,难受,有大佬懂得可以给点解决思路吗?
diskpart select vdisk file = "D:\Ubuntu\ext4.vhdx" compact vdisk
首先感谢大家的回复,这个问题我尝试了很多办法。下面的命令只在某个写特定条件下有用,但是对我而言它没有效果,我确定自己命令执行没问题,而且跑完了100%进度。于是我在github上找了一个工具我看有几十个star,而且比较新,我在没备份的情况下(主要是整个磁盘满了不够备份所需)就执行了命令。虽然确实是压缩掉了一点体积,但是这个工具导致我的实例启动以后没有任何用户,连root都没有,也加不了用户。由于我不是很懂linux的操作,去StackOverflow上搜了相关的内容发现无解,于是放弃了。幸好我写的代码都在root目录下面,平时也都有上传到自己的git上。资料基本没丢失,只是新弄个实例需要装一堆新环境,配置变量之类的,这就很麻烦,还有一些ssh配置也要重新配置。
这个事情给我的教训就是,买个移动硬盘还是挺有必要的,准备买个硬盘盒子,用旧的笔记本盘配个移动硬盘救急用。
还有,貌似直接导出实列然后再导入实例也可以实现压缩wsl体积,但是我已经没法尝试了,等下次wsl空间大了我再试试网友们提到的方法。
再次感谢大家。💋
diskpart
select vdisk file="xxxx.vhdx"
compact vdisk
detach vdisk
1
yinbingren 2023-11-29 13:50:15 +08:00
两种方式:
1. 升级 WSL2 到最新预览版,支持内存和磁盘的自动 shrink https://devblogs.microsoft.com/commandline/windows-subsystem-for-linux-september-2023-update/#:~:text=Automatic%20disk%20space%20clean%20up%20(Set%20sparse%20VHD)&text=WSL%20virtual%20hard%20disks%20(VHDs,can%20automatically%20reduce%20their%20size. 2. 用第三方工具来清理 vhd 中未占用的空间 https://www.hanselman.com/blog/shrink-your-wsl2-virtual-disks-and-docker-images-and-reclaim-disk-space |
2
ShadowPower 2023-11-29 13:52:57 +08:00
wsl --manage Ubuntu --set-sparse true
|
3
ShadowPower 2023-11-29 13:53:57 +08:00
@yinbingren 其实现在已经是正式版了
|
4
moexx 2023-11-29 15:04:26 +08:00
@ShadowPower #3 2.0.9 是正式版了?
|
5
ShadowPower 2023-11-29 15:35:25 +08:00
@moexx 是
|
6
cccer 2023-11-29 15:58:09 +08:00
这个命令肯定是可以的,你是不是执行错了,需要一行行的输入。
``` diskpart select vdisk file="xxxx.vhdx" compact vdisk detach vdisk ``` |
7
haierspi 2023-11-29 17:39:28 +08:00
直接 修改 WSL 的安装目录就好了.. 默认是安装在 C 盘的.. 改成其他盘... 别折腾 那个 给 WSL 增加磁盘的玩意..纯粹浪费生命啊,
|
8
v2minustore 2023-11-29 17:41:19 +08:00
@cccer 支持 6l 我试过是可以的
|
10
Richex 2023-11-29 20:17:09 +08:00
我也遇到过 diskpart 没用的情况,可以试试使用 Optimize-VHD ,记得先停掉 WSL2 。
Optimize-VHD -Path c:\test\dynamic.vhdx -Mode Full 注意 Optimize-VHD 命令只能在 PowerShell 中使用并且确保 Windows 打开了 Hyper-V 功能。 |
11
cc666 2023-11-29 21:13:00 +08:00
简单,一个是使用 diskpart 压缩
如果是专业版系统,打开 hyper-v 管理器,点击磁盘编辑,选中 VHD 文件,选择操作为压缩即可 二者都亲测可以 |
12
Cyshall 2023-11-29 21:35:22 +08:00
升级最新的 23H2 ,然后编辑 windows 系统加目录下的.wslconfig 文件,内容如下:
[experimental] autoMemoryReclaim=gradual networkingMode=mirrored sparseVhd=true autoProxy=true dnsTunneling=true 其中 sparseVhd=true 就是自动释放硬盘空间。 |
13
cndenis 2023-11-30 09:00:06 +08:00
现在 1T 的 SSD 才几百块钱, 几十 G 的占用也没啥吧, 充值完美解决问题
|
14
nulIptr 2023-11-30 10:13:09 +08:00
这年头还有人在意磁盘空间啊。。。
想起前几年的时候用 tauri 搞了个客户端项目,啥都没写,光启动个空项目就占了 10g 硬盘空间。 |