默认情况下,位于 VMWare ESXi(免费管理程序)或 VMWare Workstation 上的虚拟机不会在主机启动时自动启动。这意味着在 ESXi/Workstation 主机重新启动(计划重新启动或崩溃)后,管理员必须手动启动所有虚拟机。本指南将展示如何在 ESXi 和 VMWare Workstation 主机上配置自动启动虚拟机,而无需管理员干预。
如何在VMware ESXi上配置虚拟机自动启动?首先,打开浏览器,进入VMware Web Client的登录页面。然后登录。在 Web 客户端控制台中,选择要配置虚拟机自动启动的 ESXi 主机。然后转到以下选项卡“管理”>“系统”>“自动启动”。
提示:如果您的 ESXi 主机由 vCenter Server 管理并且是 vSphere HA 集群的一部分,则无法以这种方式配置虚拟机自动启动和关闭设置。发生这种情况是因为 HA 集群响应虚拟机的可用性。
在 VMware ESXi 中查看自动启动虚拟机正如您所看到的,在给定 ESXi 上部署的所有虚拟机均未配置为自动启动(自动启动顺序 = 未设置)。这意味着主机重新启动后您必须手动启动它们。
为 ESXi 主机虚拟机配置自动启动要自动启动,您需要启用虚拟机的自动启动功能。
选择要自动启动的虚拟机,然后单击“启用”。
Autostart order 字段应显示值 1。这意味着该虚拟机将在 ESXi 主机启动后首先启动。使用“稍后启动”和“较早启动”按钮,您可以管理虚拟机的启动顺序。
配置自动启动的启动顺序配置虚拟机自动启动时,ESXi 主机管理员必须正确配置引导顺序。例如,应首先启动域控制器,然后启动 Exchange 服务器,或者仅在启动 MSSQL VM 后启动应用程序服务器等。
您可以通过单击“配置”按钮来配置虚拟机自动启动的其他参数。在“配置自动启动”窗口中,可以使用以下选项来微调虚拟机自动启动。
启动和关闭选项启动和关闭行为有常见的选项:
启动延迟 — 虚拟机在启动前等待的秒数(默认为 120 秒)。 ESXi 主机启动第一个虚拟机后,主机会等待指定的延迟时间,然后启动下一个虚拟机。这种延迟允许您等待自定义服务的启动和脚本的执行;
关闭延迟 — 指定每个虚拟机关闭之前的时间延迟(默认为 120 秒)。如果虚拟机在指定的延迟时间内没有关闭,则向虚拟机发送硬关闭命令;
停止操作 — 对于每个虚拟机,有 4 种可用的关闭操作:系统默认、关闭、挂起或关闭电源。利用需要在来宾操作系统中预安装的 VMware Tools 的机会。默认情况下使用的操作是关闭。
等待检测信号 — 如果启用,则在虚拟机收到第一个检测信号后,启动顺序将继续。为此,必须在虚拟机的来宾操作系统中安装 VMWare 工具。 ESXi 虚拟机启动后,一旦虚拟机工具发送心跳以指示其启动,就立即转到下一个虚拟机(而不是等待启动延迟间隔)。
可以使用以下停止操作:
系统默认值 — 全局停止操作设置应用于 VM(从主机 > 管理 > 自动启动);
关闭电源 — 强制关闭虚拟机。这相当于您从物理计算机上拔下电源线。此操作会立即终止虚拟机,而不会正常停止服务、保存文件或缓存;
挂起 — 正在运行的虚拟机的状态(包括内存、交换、CPU 指令)保存到数据存储上的文件中。 VM 可以在稍后的同一时间点从睡眠状态恢复;
关闭 — 执行虚拟机的正常关闭。要使此功能发挥作用,来宾操作系统必须安装 VMTools,它会发送命令以正确关闭操作系统。
单击“确定”保存更改并关闭对话框。
您可以配置自动启动设置,这些设置将应用于 ESXi 主机上的所有新虚拟机。为此,请单击“自动启动”对话框顶部的“编辑设置”按钮。
要为所有虚拟机启用自动启动,请将已启用更改为是。并选择启动/停止延迟和停止动作。
使用 PowerCLI 配置 VM 自动启动此外,您还可以使用 PowerCLI 配置 VM 的自动启动设置。显示主机上所有虚拟机的自动启动操作列表:
Get-VM –VMname * | Select-Object VMname, AutomaticStartAction
要为名称以 lon- 开头的所有虚拟机启用自动启动,请运行以下命令:
Get-VM –VMname lon-* | Set-VM –AutomaticStartAction Start
就是这样!您已成功为 VMWare ESXi 或 vSphere Center 上的虚拟机配置自动启动。
VMware ESXi 自动启动错误解决方法在VMWare ESXi 6.0中,有一个奇怪的错误。尽管配置了虚拟机的自动启动优先级,但主机服务器重新启动后,只有第一个虚拟机自动启动。第二个虚拟机顽固地拒绝启动。
为了解决此问题,您需要在ESXi上启用SSH访问,并使用任何SSH客户端(例如Putty)连接到主机。
获取虚拟机 ID 列表:
vim-cmd vmsvc/getallvms
启用强制自动启动功能:
vim-cmd hostsvc/autostartmanager/enable_autostart true
现在检查 VM 启动设置:
vim-cmd hostsvc/autostartmanager/get_autostartseq (vim.host.AutoStartManager.AutoPowerInfo) { key = ‘vim.VirtualMachine:1’, startOrder = 1, startDelay = -1, waitForHeartbeat = «systemDefault», startAction = «powerOn», stopDelay = -1, stopAction = «systemDefault» }, (vim.host.AutoStartManager.AutoPowerInfo) { key = ‘vim.VirtualMachine:2’, startOrder = 2, startDelay = -1, waitForHeartbeat = «systemDefault», startAction = «none», stopDelay = -1, stopAction = «systemDefault» }
如您所见,在本例中,第一个 ID 为 1 的虚拟机设置为自动启动 (startAction = “powerOn”),而第二个虚拟机则没有设置为自动启动 (startAction = “none”)。
在这种情况下,使用以下命令在主机上重新注册有问题的虚拟机就足够了:
vim-cmd /vmsvc/unregister 2 vim-cmd solo/registervm /vmfs/volumes/VMFS1/Lon-VM1/Lon-VM1.vmx
再次检查启动参数:
vim-cmd hostsvc/autostartmanager/get_autostartseq
确保新虚拟机的startAction值已更改为powerOn。
引导时自动启动 VMware Workstation 虚拟机桌面虚拟化软件VMware Workstation也不提供在Windows启动时自动启动虚拟机的功能。要从命令提示符启动 VM,可以使用实用程序 vmrun.exe。它位于已安装工作站的文件夹中。
您可以通过创建以下批处理文件 AutoStartVM.bat 来运行任何虚拟机。
start “C:Program Files (x86)VMwareVMware Workstationvmrun.exe” “D:VMTestVm1TestVm1.vmx” ping 127.0.0.1 -n 40 > nul start “C:Program Files (x86)VMwareVMware Workstationvmrun.exe” “D:VMfreebsd2freebsd2.vmx”
第二个代码行用于在启动第二个虚拟机之前创建 40 秒的延迟。该bat文件可以放在桌面上(并通过双击手动启动),添加到Windows启动项,或由任务计划程序作业运行。
您还可以将虚拟机转换为共享虚拟机(虚拟机 > 管理 > 共享)。
在主窗口中选择“共享虚拟机”>“管理自动启动虚拟机”。
在打开的配置自动启动窗口中,您可以选择哪些虚拟机将随主机启动。您还可以更改每个虚拟机启动之间的延迟(以秒为单位)。