我需要将一组虚拟机从一个 ESX 3.5 群集迁移到另一个。存储需要从一个 iSCSI SAN 迁移到另一个,虚拟机也是如此。
群集 A 上的主机可以访问一个 iSCSI SAN,但不能访问目标。群集 B 上的主机可以访问两个 SAN。
我可以通过关闭虚拟机、使用指定要迁移的存储进行迁移,然后在新集群中启动虚拟机来手动完成此操作。
我知道我可以用多个计划任务来做到这一点,但开机任务无法判断迁移是否已完成。我必须猜测适当的时间。
我如何创建一个计划任务来执行所有这些操作,并且每个步骤都等待前一步完成?
如果有人可以建议我如何重新配置虚拟机网卡使用的网络标签作为计划任务的一部分,那么我将获得加分 - 新的集群具有不同名称的端口组,因此我不确定虚拟机是否会在迁移完成后正确连接到新的端口组(至少手动迁移工具在这里标记了一个潜在的问题)。
答案1
我同意 Jake 的观点。VMware 的 PowerCLI 非常好,可以为您提供所需的控制。
至于“我如何才能重新配置虚拟机网卡使用的网络标签作为计划任务的一部分” - 听起来您需要重命名原始主机上的端口组。
由于这里无法访问 PowerCLI,我认为它是这样的:
$objHost = Get-VMhost -name "<FQDN>"
foreach ($objPortGroup in (Get-VirtualPortGroup -VMhost $objHost)) {
if ( $objPortGroup -eq "old name" ) {
$objPortGroup | Set-VirtualPortGroup -Name "new name" -confirm:$false
}
}
就像我说的,这是未经测试的,我知道它不像某些 PowerCLI 示例那样简洁,但我追求清晰度而不是聪明度。
答案2
使用 Powershell/PowerCLI 脚本relocateVM 方法。
vmware 线程在这里。可以很容易地修改它以添加关机/开机任务,您可以从包含要迁移的服务器名称的 csv 文件中读取它,或者为每个服务器创建一个单独的 Windows 计划任务。