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开始)。
这个文件写道:
重要在以下情况下, 不允许收缩磁盘 :
虚拟机托pipe在ESX / ESXi服务器上。 只有在导出虚拟机时, ESX / ESXi Server才能缩小虚拟磁盘的大小。 然而,ESX / ESXi服务器上的虚拟磁盘占用的空间不会改变。
虚拟机具有Mac来宾操作系统。
您在创build虚拟磁盘时已将所有磁盘空间预分配给该虚拟磁盘。
虚拟机包含快照 。
虚拟机是链接克隆或链接克隆的父代 。
虚拟磁盘是非持久模式下的独立磁盘。
文件系统是日志文件系统 ,如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虚拟机。 就是这样:
清零虚拟机内所有未使用的空间:
dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero
与其他挂载点,交换分区等一样
closures虚拟机。
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。