在测试SMVI备份的时候发现无法备份基于Windows Server 2008的虚拟机。

SMVI工作原理是通过API对虚拟机进行快照,然后将快照在存储级别进行备份。

出错信息如下:

Cannot create a quiesced snapshot because the create snapshot operation exceeded the time limit for holding off I/O in the frozen virtual machine

 这是由于虚拟机vmx文件中的“Disk.enableUUID”参数被设置为“true”导致。该参数主要用于决定静默快照发生在磁盘级别还是程序级别。对于Windows Server 2008的虚拟机是需要设定为Fales的。

手动修改方法

通过SSH登陆ESX服务器,进入虚拟机所在目录。

用vi命令编辑vmx文件。找到“Disk.enableUUID=True",修改为“Disk.enableUUID=Fales"并保存文件。

对于无法进行vMotion的虚拟机,以下操作前关闭虚拟机,修改完毕后启动虚拟机才可生效。

对于可以vMotion的虚拟机,无需关闭虚拟机,直接vMotion到其他ESX服务器即可生效。

自动修改方法

可能你会遇到要修改大量的虚拟机参数,可以使用以下代码进行修改:

此代码会从集群名为“Farm01"的集群中找到所有Windows Server 2008的虚拟机,然后依次修改该参数。

注意,运行前请确保VMware Tools已经在所有虚拟机安装并运行。

   
   
   
   
  1. $vm = (Get-Cluster -Name "Farm01" | Get-VM * | Where-Object {$_.Guest.OSFullName -like "*Windows Server 2008*"}) 
  2. $x = 0 
  3. #修改高级选项 
  4. $vm | foreach { 
  5. $vmConSpec=New-Object Vmware.Vim.VirtualMachineConfigSpec 
  6. $optValue = New-Object VMware.Vim.OptionValue 
  7. $optValue.Key="disk.enableUUID" 
  8. $optValue.Value="FALSE" 
  9. $vmConSpec.ExtraConfig +=$optValue 
  10. $vmView = Get-View -ViewType VirtualMachine -Filter @{"Name" = $vm[$x].Name
  11. $vmView.ReconfigVM($vmConSpec) 
  12. $x += $x