1
qihu3721 2019-03-17 15:12:51 +08:00 2
要不试试 vmware-toolbox-cmd disk shrinkonly,前提是安装了 vmware tools
|
2
vocaloid 2019-03-17 15:34:56 +08:00
这已经是多年来一直以来的 bug 了...一年前我寻遍了解决方法什么事都没有
|
3
ipwx 2019-03-17 15:47:12 +08:00
|
4
wd 2019-03-17 16:22:34 +08:00 via iPhone
搜一下 shrink 就好了 可能就是 1 楼那个命令
|
5
catalina OP @qihu3721 好像没用,虚拟磁盘文件还是那么大。这其实就是 VMware 里面的压缩磁盘对吗?我试过的。。。
|
6
4679kun 2019-03-17 18:56:47 +08:00
![Snipaste_2019-03-17_18-55-08.png]( https://i.loli.net/2019/03/17/5c8e27988410f.png)
|
7
4679kun 2019-03-17 18:57:57 +08:00
第一步可以采用 zerofree 这个程序,可能需要在 livecd 里操作
|
8
catalina OP @qihu3721 抱歉,这是一次误判。主要原因是:当时不知道我是怎么想的,竟然不是在 console 界面、而是在 ssh 里执行了这个命令,结果执行过程中 ssh 断了。。。😂
谢谢你的命令,它很管用😄 |
10
catalina OP @4679kun 找到了,网上也有写到这个,不过它说是可以直接用 grub 里安装好的 recovery mode 执行。
https://www.maketecheasier.com/shrink-your-virtualbox-vm 虽然说的是 vbox 的,不过应该 wipe 的方法都是通用的 |
11
ysc3839 2019-03-17 20:55:38 +08:00
VMWare 硬盘设置那里就有个压缩的选项,用这个无效吗?
|
12
Osk 2019-03-17 21:14:06 +08:00
吃瓜群众关注下, 反正 Hyper-V 使用的 VHDX 是可以 compact 的, 但是如果是 Linux 使用的文件系统的话就不清楚了, 据说可以在 Linux 里面执行 fstrim 标记哪些 block 无效, 然后关闭虚拟机执行 compact. 不知道有没有大佬试过.
|
13
catalina OP |
15
catalina OP @ysc3839 嗯。。。不,它其实是可以知道的,但是如同 fat 和 ntfs 一样,ext4 好像也不会直接删除文件内容,而是把文件从文件表中移除,结果就搞得虚拟磁盘越来越大。。。这个过程其实有点像 xp 上手动 trim ssd 的过程,强行释放被已经删除的文件捆绑住的簇,从而恢复 ssd 的速度,而虚拟机则是直接把释放的簇占用的空间还给了主机硬盘。
|
16
4679kun 2019-03-17 22:34:14 +08:00
|
17
Cu635 2019-03-17 22:35:38 +08:00
“‘一段时间后’虚拟硬盘文件变大”,那么在这“一段时间” lz 是怎么用的 linux ?有没有随时 apt upgrade 的习惯?
|
18
catalina OP |
19
flynaj 2019-03-17 23:58:52 +08:00 via Android
VirtualBox 的话可以先填充 0,在收缩一下。文件删除只是标记删除,实际文件数据并没有清空。
|
21
Cu635 2019-03-18 15:56:36 +08:00
@catalina
“总得来说往硬盘里写了一堆文件、又删了一堆文件”,这是关键啊。 刚开始里面的 linux 只有 3.2G ,硬盘上的 vmdk 文件也就只有 3.2G 上下,你往里面写个 5G 的数据,vmdk 自然要跟着长大啊。但是你删除了这 5G 之后,vmdk 文件不会缩小,结果这是这样了。 另外,vmware 好像是有工具在这种情况下缩小 vmdk 文件的,不需要提前填充 0。我之前是在虚拟机关机的情况下在软件界面找的。 @flynaj 跟“文件删除只是标记删除,实际文件数据并没有清空。”只是具有相关性不具有因果性,这个功能就是看虚拟机软件有没有做了,vmware 是可以不提前填充 0 就缩小 vmdk 文件的,vbox 才是需要提前填充 0 的。 |