【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 1231.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 getVAAI(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 安全加固建议
- 完成维护后立即关闭ESXi Shell访问
- 定期检查
/etc/shadow文件权限 - 使用
esxcli network firewall配置防火墙规则 - 启用SSH密钥认证替代密码登录
4.3 性能调优技巧
- 使用
vscsiStats监控存储I/O模式 - 通过
esxtop识别资源瓶颈 - 检查
esxcli system settings advanced list中的非默认参数 - 定期执行
esxcli storage filesystem list查看存储空间使用情况
记得有次客户反映虚拟机响应慢,通过esxtop发现磁盘延迟高达200ms,进一步检查发现是存储阵列的缓存电池故障,更换后性能立即恢复正常。
掌握这些命令后,你会发现ESXi管理效率能提升数倍。刚开始可能需要经常查阅笔记,但经过3-5次实践就会变得得心应手。建议在测试环境多练习,熟悉后再在生产环境使用。