【VMware虚拟化】ESXi运维实战:从Shell到esxcli的日常管理命令精要

📅 2026/7/16 16:37:34 👁️ 阅读次数 📝 编程学习
【VMware虚拟化】ESXi运维实战:从Shell到esxcli的日常管理命令精要

1. ESXi Shell基础操作入门

刚接触VMware虚拟化的运维工程师,最先要掌握的就是ESXi Shell的基础操作。这就像学开车要先熟悉方向盘和油门一样,是后续所有高级操作的基础。我刚开始接触ESXi时,最常用的就是services.sh这个命令,它相当于ESXi服务的"总开关"。

1.1 服务管理三板斧

services.sh命令支持三个核心参数:

  • start:启动所有ESXi服务
  • stop:停止所有ESXi服务
  • restart:重启所有服务

实际运维中最常用的就是重启操作。当遇到vCenter连接异常或者主机管理界面卡顿时,执行services.sh restart往往能解决大部分问题。不过要注意,这会重启所有服务,相当于给ESXi主机做了一次"软重启"。

如果只想重启特定服务,可以到/etc/init.d目录下操作。比如vCenter Agent(vpxa服务)异常时,执行/etc/init.d/vpxa restart就能单独重启这个服务,不会影响其他服务运行。这个技巧在维护生产环境时特别有用,能最大限度减少影响范围。

查看服务状态也很重要,cat /etc/chkconfig.db命令会列出所有ESXi服务的运行状态。我习惯在执行维护操作前后都检查一次,确保关键服务都处于正常状态。

1.2 网络诊断利器

网络问题是虚拟化环境中最常见的故障之一。ESXi提供了两个强大的网络诊断工具:

vmkping:比普通ping更强大,可以通过指定VMkernel接口发送ICMP请求。比如:

vmkping -I vmk1 10.10.10.1

这条命令会通过vmk1接口(可能是vMotion专用网络)测试到10.10.10.1的连通性。当管理网络不通但vMotion网络正常时,这个命令就能派上大用场。

nc(netcat):用来测试特定TCP/UDP端口的连通性。比如检查iSCSI存储连接时:

nc -z 10.10.10.10 3260

如果端口开放会显示"succeeded",否则就是连接失败。对于UDP端口(如NTP服务),需要加-u参数:

nc -uz 10.128.16.9 123

1.3 存储管理实战

vmkfstools是管理VMFS数据卷和虚拟磁盘的瑞士军刀。我常用它来做这些操作:

  • 克隆虚拟磁盘:vmkfstools -i test.vmdk testclone.vmdk
  • 扩展虚拟磁盘大小
  • 检查文件系统一致性

有一次客户需要快速部署50台相同配置的虚拟机,我就是用vmkfstools批量克隆磁盘,节省了大量时间。

esxtop则是性能分析的利器。它类似于Linux的top命令,但提供了更多VMware特有的指标:

  • 中断统计
  • 内存 ballooning状态
  • 网络吞吐量
  • 磁盘队列深度

按不同字母键可以切换监控视图,比如按"n"切到网络视图,"d"切到磁盘视图。发现性能瓶颈时,esxtop总是我的第一选择。

2. esxcli高级管理技巧

esxcli是ESXi的"超级工具箱",通过不同的命名空间管理几乎所有主机组件。刚开始可能会被它的复杂性吓到,但掌握后就会发现它比图形界面更高效。

2.1 硬件信息一手掌握

排查硬件问题时,这些命令特别有用:

esxcli hardware cpu list # 查看CPU详细信息 esxcli hardware memory get # 查看内存配置 esxcli hardware clock get # 查看主机时间

曾经有台主机频繁宕机,我就是通过esxcli hardware cpu list发现某个CPU核心的缓存错误计数异常增长,最终定位到是主板故障。

2.2 网络配置不求人

网络命名空间可能是最常用的功能之一。几个实用场景:

查看网卡信息

esxcli network nic list

这会列出所有物理网卡的型号、速度、MAC地址等信息。有次客户反映网络速度慢,就是这个命令发现网卡协商速率只有100Mbps,最后更换网线解决了问题。

管理虚拟交换机

esxcli network vswitch standard list # 查看标准交换机 esxcli network vswitch dvs vmware list # 查看分布式交换机

检查IP配置

esxcli network ip interface ipv4 get # 查看IPv4地址 esxcli network ip route ipv4 list # 查看路由表

2.3 存储管理实战

存储问题是另一个常见故障点。这些命令能帮你快速定位问题:

列出存储设备

esxcli storage core device list

这会显示所有存储设备的型号、容量、多路径状态等信息。我曾经用这个命令发现某台存储的LUN未被正确识别,原因是HBA卡驱动版本过旧。

检查VAAI状态

esxcli storage core device vaai status get

VAAI(vStorage APIs for Array Integration)能大幅提升存储性能。如果显示"unsupported",说明存储阵列不支持硬件加速,可能需要升级存储固件。

2.4 系统维护必备技能

维护模式

esxcli system maintenanceMode set --enable yes # 进入维护模式 esxcli system maintenanceMode set --enable no # 退出维护模式

在升级主机或更换硬件前,必须先进入维护模式。我见过不少新手直接关机导致虚拟机异常关闭,这个习惯一定要养成。

主机开关机

esxcli system shutdown reboot # 重启主机 esxcli system shutdown poweroff # 关闭主机

注意:这些命令只在维护模式下有效,这是VMware的安全机制。

查看系统信息

esxcli system version get # 查看ESXi版本 esxcli system hostname get # 查看主机名

3. 虚拟机管理实战

3.1 虚拟机生命周期管理

列出所有虚拟机

vim-cmd vmsvc/getallvms

这会显示每台虚拟机的ID、名称和配置文件路径。ID在后续操作中会用到。

查看虚拟机状态

vim-cmd vmsvc/power.getstate <VMID>

开关机操作

vim-cmd vmsvc/power.on <VMID> # 开机 vim-cmd vmsvc/power.shutdown <VMID> # 正常关机 vim-cmd vmsvc/power.off <VMID> # 强制关机

紧急情况下,也可以用esxcli直接终止虚拟机进程:

esxcli vm process kill --type=force --world-id=<WorldID>

3.2 虚拟机配置检查

查看虚拟机详细配置:

vim-cmd vmsvc/get.config <VMID>

这会输出虚拟机的CPU、内存、磁盘、网卡等完整配置。有次客户说虚拟机性能差,就是这个命令发现只分配了1个vCPU,扩容后问题解决。

4. 日常运维最佳实践

4.1 日志收集与分析

遇到疑难杂症时,首先要收集日志:

vm-support # 打包所有日志

这个命令会生成一个tgz压缩包,包含主机配置、系统日志、虚拟机信息等。VMware技术支持通常都会先要这个包。

查看实时日志:

esxcli system syslog mark --message="开始维护" # 打标记 tail -f /var/log/vmkernel.log # 实时查看内核日志

4.2 安全加固建议

  1. 完成维护后立即关闭ESXi Shell访问
  2. 定期检查/etc/shadow文件权限
  3. 使用esxcli network firewall配置防火墙规则
  4. 启用SSH密钥认证替代密码登录

4.3 性能调优技巧

  • 使用vscsiStats监控存储I/O模式
  • 通过esxtop识别资源瓶颈
  • 检查esxcli system settings advanced list中的非默认参数
  • 定期执行esxcli storage filesystem list查看存储空间使用情况

记得有次客户反映虚拟机响应慢,通过esxtop发现磁盘延迟高达200ms,进一步检查发现是存储阵列的缓存电池故障,更换后性能立即恢复正常。

掌握这些命令后,你会发现ESXi管理效率能提升数倍。刚开始可能需要经常查阅笔记,但经过3-5次实践就会变得得心应手。建议在测试环境多练习,熟悉后再在生产环境使用。