使用VMware虚拟机一段时间后,常常会发现虚拟机保存在磁盘上的虚拟磁盘文件(vmdk文件,VMware Virtual Disk File)体积增长很快,远远超过了虚拟机磁盘分区所实际存放的数据的大小。特别是如果本来虚拟机所在物理磁盘分区的空余空间就不多的话,就会 更显得捉襟见肘了。以笔者安装了WindowsXP的一个虚拟机为例,虚拟机里C盘系统分区只有3.5G大小左右,可是宿主机中对应的虚拟磁盘文件(还创建了一个虚拟机快照,所以有两个Vmdk文件,Vmdk磁盘文件建立快照的具体原理可以参考VMware的帮助文档。)却共占用了8个GB的空间,不但浪费磁盘空间,也降低了虚拟机的磁盘性能,看来对其压缩减肥是势在必行。

先介绍一下VMware官方给出的压缩虚拟磁盘文件的方法,后一篇是笔者自己使用的比较tricky的方法(点这里)。以下来自VMware的帮助文档:

压缩虚拟磁盘

--------------------------------------------------------------------------------

压缩虚拟磁盘
压缩虚拟磁盘可以回收虚拟磁盘中未使用的空间。如果在磁盘中有可用空间,这一过程可以减少虚拟磁盘在宿主机磁盘驱动器上占用的空间。

注意:ESX Server 3 不支持压缩虚拟磁盘。

压缩磁盘分为两个步骤:准备步骤和实际压缩步骤。在第一个步骤中,VMware Tools 将回收所有未使用的磁盘空间(例如,已删除文件占用的空间),并准备对未使用的空间进行压缩。这样就能实现虚拟磁盘最大限度的压缩。该步骤需要在宾客机操作系统内部执行。
压缩本身是第二个步骤,这个步骤在虚拟机外部执行。VMware 应用程序根据在准备步骤中回收的磁盘空间来减少磁盘容量。

压缩需要:
•  宿主机的可用磁盘空间不小于正在被压缩的虚拟磁盘的大小。

•  VMware Tools 拥有足够的访问权限,以便在分区目录中写入文件。如果没有足够的访问权限,请更改目录访问权限或取消选择相应的分区。

在一些配置中,无法进行虚拟磁盘压缩。如果您的虚拟机使用了这样的配置,“压缩”选项卡将显示相关信息,说明为什么您无法压缩虚拟磁盘。例如,您无法在下列情况下压缩虚拟磁盘
•  您在创建磁盘时已经预先分配了磁盘空间(这是在 GSX Server 和 VMware Server 上运行的虚拟机的默认选项)。

•  虚拟机具有快照。要删除快照,请参见 VMware 软件产品文档。

•  虚拟磁盘不是以持续模式运行的独立磁盘。您可以在开启虚拟机之前更改虚拟磁盘的模式。欲了解独立磁盘的更多信息,请参见 VMware 软件产品文档。

如果 VMware Tools 可以进行虚拟磁盘压缩,它将在选项卡中显示两个分区列表:
•  “支持的分区” – 默认情况下,所有支持的分区都会准备进行压缩。如果您不希望压缩其中一些分区,请取消分区名称左边的复选框。准备压缩的分区越多,压缩步骤的执行效率就越高。

•  “不支持的分区” – VMware Tools 无法对这些虚拟磁盘执行准备压缩操作。这些分区包括只读分区、远程设备上的分区和可移除设备上的分区。

压缩虚拟磁盘具体步骤


当开启一个虚拟机时,您需要从 VMware Tools 控制面板中压缩虚拟磁盘。
要压缩虚拟磁盘
1.  启动 VMware Tools 控制面板,双击任务栏中的“VMware Tools”图标,或者选择“开始”>“设置”>“控制面板”,然后双击“VMware Tools”。

2.  点击“压缩”选项卡。

3.  选择虚拟磁盘和要压缩的分区,然后点击“准备压缩”。

注意:如果您取消选中某些分区,仍然可以对整个磁盘进行压缩。但是,那些未选中的分区不会准备压缩。并且在不选中所有分区的情况下实现的磁盘容量缩减要小于选中所有分区时实现的缩减。
每个分区都会有一个相应的进度条。您可以在任何时候点击“取消”,中止操作。
4.  在 VMware Tools 准备好压缩选中的磁盘分区后,请对开始压缩磁盘的提示作出响应。

如果点击“是”,虚拟机将会进入冻结状态,VMware Tools 将压缩虚拟磁盘。压缩完成之后,虚拟机将继续正常运行。
如果点击“否”,您可以延迟压缩虚拟磁盘。通过使用“压缩”选项卡,您可以在将来某个时间压缩磁盘。
压缩磁盘将消耗大量时间。
注意压缩虚拟磁盘可以回收虚拟磁盘中未使用的空间您也可以整理虚拟磁盘碎片,该操作将重新整理文件、程序以及虚拟磁盘中未使用的空间,从而更快地运行程序和打开文件。欲了解整理虚拟磁盘碎片的更多信息,请参见 VMware 软件产品文档。