ESXi虚拟机vmdk压缩瘦身

为了节约虚拟机的磁盘占用,VMware提供了精简置备(Thin Provision)方式,使得磁盘占用按需分配。但是,虚拟机内删除文件虽然释放了Guest OS的可用空间,但却不会使得vmdk文件相应地缩小。随着虚拟机的使用,vmdk势必不断增大。对于桌面级VMware Workstaion,可以通过Disk Cleanup功能释放未用空间,而ESXi并没有直接提供这个功能。本文介绍如何通过手动操作,对精简置备的vmdk进行瘦身。

Guest OS准备

首先,我们需要在Guest OS上进行准备工作,对未使用的磁盘进行置零操作。这一步需要用到一个工具——SDelete,这是微软Sysinternals工具中的一款,可以在这里下载:
https://technet.microsoft.com/en-us/sysinternals/bb897443
将SDelete.exe复制到虚拟机中,对每个盘符执行下面的语句(最后的C:依次替换为每个盘符)
SDelete.exe -z C:
等待进度走完(有时候会走到102% -。-),即宣告准备完毕。
要注意的是,清零过程中精简置备的磁盘会膨胀到设置的大小,因此请确保存储空间足够。

压缩VMDK

在vSphere Client中,将虚拟机关机。找到该虚拟机对应的主机,开启主机的SSH登录。随后,登入主机,在/vmfs/volumes下找到虚拟机目录,查看其对应的vmdk文件。注意,这里面可能会有以-flat和-ctk等后缀的vmdk,这不是我们要操作的,只有不带后缀的vmdk需要进行操作。对它们依次执行命令:
vmkfstools -K <vm-name>.vmdk
耐心等待进度走完。完成之后记得把SSH服务关掉。

再次开启虚拟机,你会看到存储使用那里已经是压缩后的大小了。Gook Luck。

发表评论

电子邮件地址不会被公开。 必填项已用*标注