菜鸟科技网

ESXi命令行如何启动虚拟机?

在VMware ESXi环境中,除了通过vSphere Client或Web Client图形化管理界面操作虚拟机外,管理员还可以通过命令行直接管理虚拟机的启动过程,这对于自动化运维、批量操作或无图形界面的服务器环境尤为重要,ESXi的命令行操作主要通过ESXi Shell(直接登录主机)或SSH(远程登录)实现,以下将详细介绍使用命令行启动虚拟机的具体方法、相关命令及注意事项。

ESXi命令行如何启动虚拟机?-图1
(图片来源网络,侵删)

准备工作

在通过命令行操作前,需确保以下条件满足:

  1. 启用ESXi Shell或SSH:在ESXi主机的“系统管理”→“服务”中,确保ESXi Shell(直接控制台)和SSH(远程登录)服务处于运行状态。
  2. 获取虚拟机标识符:每个虚拟机在ESXi中都有一个唯一的标识符,通常是虚拟机配置文件(.vmx)的路径或UUID,可通过命令vim-cmd vmsvc/getallvms查看所有虚拟机的列表,输出结果包含虚拟机ID、名称、文件路径等信息。
  3. 权限验证:通过SSH或ESXi Shell登录时,需使用具有管理员权限(如root)的账户,或确保普通账户具有虚拟机操作权限。

命令行启动虚拟机的核心命令

ESXi中与虚拟机管理相关的命令主要通过vim-cmd工具实现,该工具是ESXi内置的命令行接口,用于与VMkernel交互,以下是启动虚拟机的详细步骤:

查看虚拟机列表

执行以下命令获取当前ESXi主机上所有虚拟机的ID和路径:

vim-cmd vmsvc/getallvms

输出示例:

ESXi命令行如何启动虚拟机?-图2
(图片来源网络,侵删)
Vmid Name                       File                               Guest OS       Version   Annotation
10   Ubuntu-20.04               [datastore1] Ubuntu-20.04/Ubuntu-20.04.vmx  ubuntu64Guest  vmx-13    
20   Windows-Server-2019        [datastore2] Windows-Server-2019/Windows-Server-2019.vmx  windows9Server64Guest vmx-15  

Vmid列即为虚拟机的唯一标识符,后续操作需使用此ID。

启动虚拟机

使用vim-cmd vmsvc/power.on <vmid>命令启动指定虚拟机,例如启动ID为10的虚拟机:

vim-cmd vmsvc/power.on 10

执行后,命令行会返回启动状态信息,如Powering on VM,若启动成功,可通过vim-cmd vmsvc/power.getstate <vmid>验证虚拟机状态:

vim-cmd vmsvc/power.getstate 10

正常输出应为Powered on

ESXi命令行如何启动虚拟机?-图3
(图片来源网络,侵删)

批量启动虚拟机(可选)

若需批量启动多个虚拟机,可通过脚本循环执行命令,使用Bash脚本启动ID为10和20的虚拟机:

#!/bin/bash
for vmid in 10 20; do
    vim-cmd vmsvc/power.on $vmid
    echo "Attempting to power on VM with ID: $vmid"
done

将脚本保存为start_vms.sh,赋予执行权限后运行:

chmod +x start_vms.sh
./start_vms.sh

启动虚拟机的其他相关参数

  • 强制启动:若虚拟机因异常状态无法正常启动,可添加-force参数强制启动(谨慎使用,可能导致数据丢失):
    vim-cmd vmsvc/power.on -force 10
  • 启动后自动登录:若需虚拟机启动后自动进入控制台,可通过vim-cmd vmsvc/power.on <vmid>启动后,再执行vim-cmd vmsvc/entermgmtid <vmid>进入虚拟机管理界面(需ESXi主机配置支持)。

命令行启动虚拟机的注意事项

  1. 资源依赖:确保ESXi主机有足够的CPU、内存和存储资源,否则虚拟机启动可能失败或性能下降。
  2. 虚拟机状态:若虚拟机处于“挂起”(Suspended)或“错误”(Error)状态,需先通过vim-cmd vmsvc/power.reset <vmid>重置虚拟机,或检查虚拟机日志(vim-cmd vmsvc/get.info <vmid>)排查问题。
  3. 网络配置:通过命令行启动的虚拟机需确保网络适配器配置正确,否则可能无法访问,可通过vim-cmd vmsvc/device.getinfo <vmid> <deviceid>查看虚拟机设备信息。
  4. 安全性:SSH和ESXi Shell开启后存在安全风险,建议仅在必要时启用,并定期修改默认密码。

命令行启动虚拟机的常见问题排查

  1. 虚拟机启动失败:检查虚拟机磁盘文件是否存在、存储空间是否充足,以及虚拟机硬件版本与ESXi主机兼容性。
  2. 权限不足:若提示“Permission denied”,需确认当前用户是否具有“Virtual Machine -> Power On”操作权限,可通过ESXi的“权限”配置界面调整。

相关问答FAQs

Q1: 如何通过命令行查看虚拟机启动失败的具体原因?
A: 可通过以下步骤排查:

  1. 使用vim-cmd vmsvc/get.info <vmid>查看虚拟机详细信息,检查硬件配置是否正常。
  2. 执行vim-cmd vmsvc/get.log <vmid>获取虚拟机日志,重点查看错误信息(如“Failed to start virtual device”)。
  3. 若涉及存储问题,可通过esxcli storage nmp list -t | grep <vmname>检查存储适配器状态。

Q2: 是否可以通过命令行设置虚拟机启动顺序?
A: ESXi本身不直接支持虚拟机启动顺序配置,但可通过第三方脚本或vSphere API实现,使用PowerShell脚本结合ESXi的SSH功能,按指定顺序执行vim-cmd vmsvc/power.on <vmid>命令,企业级环境中可考虑使用vSphere Auto Deploy或vRealize Automation实现自动化启动编排。

分享:
扫描分享到社交APP
上一篇
下一篇