查看: 20066|回复: 12
收起左侧

[已解决] 【解决】Vmware 删除文件/格盘/分区 磁盘体积不减小(通病)

[复制链接]
kissdjmax
发表于 2015-5-24 04:43:58 | 显示全部楼层 |阅读模式
本帖最后由 kissdjmax 于 2015-5-25 18:17 编辑

我WIN7 64,装了Vmware10/11 都有这问题,写入文件后,不管是删除文件/格盘/重新分区,虚拟盘里体积还是只增不减。
愁死了,度娘了很多偏方都不管用。请问哪位朋友遇到过这类情况啊?怎么解决?亲身经历过的,复制粘贴党别来,谢谢!


相信95%的用户都有这情况只是你们没在意到、这应该是程序设计构架问题吧?
imcw
发表于 2015-5-24 05:18:49 | 显示全部楼层
我的回复纯属个人看法。不知道对错。没有任何参考文献和官方文档。
虚拟盘里体积还是只增不减

  1. 这个是指虚拟盘的分区的大小没变还是说虚拟硬盘占用物理磁盘空间不变啊?
  2. 其实,无需纠结这个问题。要知道,物理磁盘里面你删除东西了的话只是磁盘标记。而虚拟磁盘是存在于你的物理磁盘里面的物理磁盘,它需要记录的东西比跟物理磁盘是一样的。
  3. 就像我们平时用物理磁盘,你看到的空间大小只是你看到的能用的没有被标记删除的部分的的占用的空间,而在虚拟磁盘相对于你的物理磁盘,他的删除标记这些是需要记录下来,占用的物理磁盘他多的就是这部分了。
  4. 这个是正常的。没有bug。再正常不过了。
复制代码

kissdjmax
 楼主| 发表于 2015-5-24 05:45:23 | 显示全部楼层
imcw 发表于 2015-5-24 05:18
我的回复纯属个人看法。不知道对错。没有任何参考文献和官方文档。

懂你说的,
刚才试着用了下v10的清理磁盘功能,从21G清理到了5.5G(等了大概20分钟,估计跟我硬盘读写速度有关),但虚拟盘里早就重新分区了,没有任何资料。结合你说的理论知识,这种方案在Vmware根本不能生存啊(清理磁盘21G到5.5G这5.5G占用得太冤枉了),物理磁盘空间不能彻底回收啊,越来越大。谁受得了?!!!
shippou
发表于 2015-5-24 08:03:34 | 显示全部楼层
反正我没遇到,不管虚拟机还是主机磁盘占用都正常,没有一天比一天大的情况,磁盘清理也没那么多垃圾文件
xuxin
发表于 2015-5-24 08:08:19 | 显示全部楼层
遇到这个问题,即使把虚拟机里面的磁盘格式化了也不减少虚拟机的磁盘体积,无奈只有恢复快照解决。
韭菜
发表于 2015-5-24 11:19:41 | 显示全部楼层
从没遇到过,95%不要信口开河了。此外,我一直预分配虚拟磁盘。
kissdjmax
 楼主| 发表于 2015-5-24 14:37:53 | 显示全部楼层
韭菜 发表于 2015-5-24 11:19
从没遇到过,95%不要信口开河了。此外,我一直预分配虚拟磁盘。

估计你没严格试过。
你新建一个虚拟机,并分配好磁盘,再往磁盘你放文件,断开磁盘,再次打开映射磁盘把文件删掉。
再次断开磁盘映射。关掉虚拟机,此时体积应该除了虚拟机配置大小的百来兆除外,还有之前的文件大小也依然没减小。如果有减小 可否分享下亲的建机步骤,谢谢。
kissdjmax
 楼主| 发表于 2015-5-24 14:40:14 | 显示全部楼层
shippou 发表于 2015-5-24 08:03
反正我没遇到,不管虚拟机还是主机磁盘占用都正常,没有一天比一天大的情况,磁盘清理也没那么多垃圾文件

不是一天比一天大,而是如放进去1G文件,再断开映射(正常关闭保存后),再次把文件删掉,这1G空间没有被回收,整体体积依然有这1G。
韭菜
发表于 2015-5-24 17:50:49 | 显示全部楼层
kissdjmax 发表于 2015-5-24 14:37
估计你没严格试过。
你新建一个虚拟机,并分配好磁盘,再往磁盘你放文件,断开磁盘,再次打开映射磁盘把 ...

又看看其他回复,之前我可能理解错了。你应该是指实机中对应的那个 .vmdk 文件“只会变大,不会变小,用了Vmware的磁盘清理功能才会变小”。其实2L已经说了,在虚拟系统里删除文件后, VMware workstation不会自动帮你回收.vmdk文件 对应的那部分空间。要是每次关闭虚拟机后,都会进行自动回收,那不是很烦吗?这个回收操作是像打开txt修改文字那么轻松吗?这个需求对大多数人都很频繁?

为何有个手动“清理磁盘”的功能,就是给动态分配虚拟磁盘的使用者,按需清理使用的。如果你想严格限制 .vmdk 文件大小,除了使用快照,还可以自己写脚本调用这个功能,达到自动清理、定期清理的效果。我没发现VM有自带自动清理。或者你可以向VM反馈,请求添加。

我一直用预分配创建虚拟磁盘了,即一开始就根据用途固定了 .vmdk文件 的大小。如果很偶尔要用到预想之外的大文件,则创建一个新的虚拟磁盘来使用,用完再去掉这个磁盘并删掉对应的 .vmdk 文件即可。

个人认为你这会烦恼在于大过于在意文件占用空间,除非硬盘真的很紧张,否则何必介怀,正常使用即可
killer3k
发表于 2015-5-24 19:52:38 | 显示全部楼层
楼主,我明白你的意思,你的意思是虚拟磁盘中做了删除操作,但是物理磁盘中并没有自动回收这部分空间。

VMware为什么不自动回收这部分空间?说说个人看法。
我认为在技术上可能存在一定问题,如果采用自动回收的话,那么可能会带来更大的麻烦。

在什么情况下自动回收?这又分两种情况。
第一种方式,实时自动回收。只要虚拟磁盘发生了大小变化,就自动进行清理,对虚拟硬盘进行整理。
这样做肯定不现实,即使在技术上实现了,在实际应用中肯定会给用户带来极大的困扰。因为只要系统在运行,就会有读写操作,磁盘大小就会发生变化,这也就意味着只要一开机,VMware就需要不停地进行磁盘清理。这样一来,虚拟系统根本就处于完全停顿无法运行的状态。因此,实时自动回收显然是不现实的。

第二种方式,在系统关机后自动清理磁盘,回收未使用空间。
这种方式要实现起来倒是不难,但是会带来另外的问题。
做过磁盘清理的同学都知道,一次磁盘清理需要花费数秒到数分钟,甚至数十分钟的时间。如果每次关闭虚拟系统都要等待这么一段时间才能进行其它操作,我相信大多数用户都会表示很不开心,宁愿选择在需要的时候采用手动操作的方式来进行磁盘清理。所以,采用这种方式来进行磁盘清理也没有多大必要,也缺乏现实意义——毕竟,不是每次关机都需要做磁盘清理的。

给楼主一个建议:
1、善用快照功能。
(1)安装完虚拟系统后,安装vmtools,按照自己的习惯做好所有的设置,清理无用的垃圾文件,然后关机,进行磁盘清理。清理完毕后建立一个快照。
这是第一个快照,只有一个纯净的系统。
(2)打开虚拟系统,安装常用的应用软件,清理无用的垃圾文件,然后关机。再次进行磁盘清理,清理完毕后再建立一个快照。当然,也可以根据对虚拟机的不用应用目的,再建立一些不同的快照(建议在关机状态下建立快照,这样体积会小很多)。
关机的时候直接恢复快照就行了,这样虚拟磁盘在物理磁盘上的空间占用总是保持在初始大小。

2、如果楼主使用虚拟机的目的导致不能采用经常恢复系统至初始状态的方法的话,那么就定期时行磁盘清理好了。
如果VMware真的每次关闭虚拟系统都进行一次磁盘清理的话,楼主可能会发现这样做的结果是更烦恼了。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-22 14:21 , Processed in 0.131933 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表