磁盘收缩不适用于ESXi来宾

EHLO大家好! 我在StackOverflownetworking上的第一篇文章:)

我们正在运行一些ESXi 5.0 / vCenter基础架构,主要托pipe带有ext3分区的Debian 6 / amd64来宾系统,以及根据源自debian bug 471784编译的open-vm-tools

有一个问题被看到在互联网上被提出,但没有任何结论性的答案在任何地方。

当试图以独立持久模式缩小精简configuration磁盘时,无论是否有快照,父母,无论如何,我总是得到以下错误:

 root@linux64:~# vmware-toolbox-cmd disk list Shrink disk is disabled for this virtual machine. Shrinking is disabled for linked clones, parents of linked clones, pre-allocated disks, snapshots, or due to other factors. See the User's manual for more information. 

(顺便说一下,“其他因素”是什么,大量的白皮书和技术手册用户手册?:)

我知道我可以用零填充分区(实际上,在删除大文件时我使用了shred -fuzn0 ),然后closuresguest虚拟机,并使用各种方法(如vmkfstools ,克隆或vMotioning磁盘在精简configuration模式中)但是所有这些都会招致客户的宕机时间损失,或导致数据存储和/或主机之间的数据无端移动。


答案是: 在ESX / ESXi下不缩小(从版本5开始)。

这个文件写道:

重要在以下情况下, 不允许收缩磁盘

  1. 虚拟机托pipe在ESX / ESXi服务器上。 只有在导出虚拟机时, ESX / ESXi Server才能缩小虚拟磁盘的大小。 然而,ESX / ESXi服务器上的虚拟磁盘占用的空间不会改变。

  2. 虚拟机具有Mac来宾操作系统。

  3. 您在创build虚拟磁盘时已将所有磁盘空间预分配给该虚拟磁盘。

  4. 虚拟机包含快照

  5. 虚拟机是链接克隆或链接克隆父代

  6. 虚拟磁盘是非持久模式下的独立磁盘。

  7. 文件系统是日志文件系统 ,如ext4,xfs或jfs文件系统。

难怪在VMware Workstation中有一个缩小的选项,而在连接到ESXi或vCenter实例的vSphere客户端上却没有这个选项。

http://www.vmware.com/pdf/vmware-tools-cli.pdf第13页:

在下列情况下不允许收缩磁盘:

虚拟机托pipe在ESX / ESXi服务器上。 只有在导出虚拟机时,ESX / ESXi Server才能缩小虚拟磁盘的大小。 然而,ESX / ESXi服务器上的虚拟磁盘占用的空间不会改变。

实际上,有一种方法可以在ESXi上缩小虚拟机,但需要closures虚拟机。 就是这样:

  1. 清零虚拟机内所有未使用的空间:

    dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero

  2. 与其他挂载点,交换分区等一样

  3. closures虚拟机。

  4. SSH到ESXi,然后发出以下命令:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

这将需要一些时间… vmkfstools在您的VMDK内部“打洞”,例如释放所有被零填充的块,有效地缩小VMDK。

缩小vSphere ESXi中的VMDK的唯一方法是导出或将Storage vMotion迁移到其他数据存储。 我可以使用可以处理迁移的活动服务器(而不是SQL或Exchange)来处理这个问题。 以前的服务器pipe理员使用厚置备磁盘构build了所有虚拟机。 我将VM从一个数据存储迁移到另一个数据存储,并将VMDK更改为精简置备。

如果服务器处于脱机状态,您也可以执行vmkfstools。