ESXi主机维护模式受阻:从“孤立VM”到“文件锁定”的深度排障指南

张开发
2026/4/18 22:38:49 15 分钟阅读

分享文章

ESXi主机维护模式受阻:从“孤立VM”到“文件锁定”的深度排障指南
1. 当ESXi主机拒绝进入维护模式时我们该从哪里入手第一次遇到ESXi主机死活不进维护模式时我盯着那个红色警告弹窗足足发了五分钟呆。作为运维老手这种情况就像你拿着钥匙却打不开自家大门——明明是最基础的操作偏偏在最关键的时刻掉链子。维护模式受阻的背后往往藏着三类拦路虎孤立虚拟机像幽灵般残留在清单里、无效虚拟机因各种原因无法访问、以及最棘手的VM配置文件锁定或损坏问题。上周处理的一个真实案例就很典型某金融客户在关闭DRS自动迁移功能后手动转移虚拟机时突然遭遇存储连接闪断导致三台关键业务VM状态变成不可访问。运维团队尝试将主机切入维护模式进行修复时系统却持续报错。通过vSphere Client查看发现清单里竟然同时存在孤立VM和无效VM——前者是迁移中断产生的数字残影后者则是存储连接异常导致的配置失联。要理解这些概念的区别很简单孤立VMvCenter数据库里有记录但ESXi主机上实际已不存在好比通讯录里保存着已注销的号码无效VM物理文件存在但无法访问就像能看见文件却提示格式损坏锁定VM配置文件被异常占用类似Word文档显示正在被其他用户编辑这时候千万别急着重启主机我见过有人直接硬重启导致VMFS卷损坏的惨案。正确的第一步永远是——打开SSH连接执行以下命令快速获取战场态势# 列出所有注册的虚拟机 vim-cmd vmsvc/getallvms # 检查运行中的VM进程 esxcli vm process list2. 歼灭战第一步清理孤立虚拟机孤立虚拟机就像战场上的地雷表面看不见但随时可能引爆。去年某次数据中心迁移项目中我们发现有台主机始终无法进入维护模式最终发现是前任管理员手动删除VM时只删除了存储文件却忘了清理vCenter记录。这些僵尸VM会导致vSphere认为还有任务未完成从而阻止维护模式激活。精准识别孤立VM的实操流程在vSphere Web Client导航到主机和集群右键问题主机选择所有vCenter操作→从清单中移除重新添加主机时勾选仅添加主机不迁移虚拟机对比新旧清单差异未自动重新注册的VM即为孤立对象更专业的做法是通过PowerCLI脚本批量处理Get-Cluster 生产集群 | Get-VM | Where {$_.ExtensionData.Runtime.ConnectionState -eq orphaned} | Remove-VM -Confirm:$false遇到过最顽固的情况是vCenter数据库出现逻辑错误即使图形界面显示已删除底层仍然残留记录。这时候需要祭出终极武器——直接查询vCenter数据库操作前务必备份-- 查询孤立虚拟机记录 SELECT id, name FROM vpx_vm WHERE is_templatefalse AND host_id IS NULL;3. 攻坚战突破无效虚拟机的防线无效虚拟机通常伴随着存储连接问题出现。有次凌晨三点处理故障发现某台VM状态异常检查发现是SAN交换机固件bug导致LUN临时脱机。这种场景下VM配置文件虽然物理存在但ESXi主机无法正常读取。分步诊断手册首先确认存储连通性# 列出所有存储设备 esxcli storage core device list # 检查VMFS卷状态 vmkfstools -P /vmfs/volumes/数据存储名称如果存储正常检查VM配置文件状态# 进入VM存储目录 cd /vmfs/volumes/数据存储名称/VM名称 # 检查.vmx文件锁状态 vmfsfilelockinfo VM名称.vmx常见修复方案对比故障现象诊断命令修复方法风险等级文件锁定vmfsfilelockinfo重启hostd服务★★☆☆☆配置损坏tail -n50 /var/log/hostd.log手动编辑.vmx文件★★★★☆权限丢失ls -la VM名称.vmxchmod 755 VM名称.vmx★☆☆☆☆最惊险的一次经历是某台MySQL服务器的.vmx文件被误写入UTF-8 BOM头导致ESXi无法解析。解决方法是用vi的二进制模式编辑vi -b VM名称.vmx :set nobomb :wq4. 特种作战破解文件锁定难题配置文件锁定是最狡猾的敌人。有次客户反映维护模式失败日志却只显示模糊的Another task is in progress。花了两个小时排查最终发现是备份软件异常退出后没释放文件锁。这种隐形锁定在GUI里根本看不出来必须用命令行深挖。全方位锁定检测方案首先检查VM进程锁# 列出所有VM进程锁 vim-cmd vmsvc/getallvms | awk {print $1} | xargs -I {} vim-cmd vmsvc/get.tasklist {}然后检查存储层锁# 显示VMFS文件锁 vmkfstools -D VM名称.vmdk # 检查SCSI预留冲突 esxcli storage core device vaai status get遇到顽固锁定的终极解决方案# 强制释放所有锁危险操作 /etc/init.d/hostd restart /etc/init.d/vpxa restart记得某次处理NetApp存储上的锁定问题时发现ESXi和存储阵列的锁不同步。最终解决方案是在存储端取消预留# 在存储阵列执行示例为NetApp命令 lun reservation clear -p /vol/vol_name/lun_name5. 战术手册命令行下的维护模式实战当GUI操作失败时命令行就是你的瑞士军刀。但要注意不同ESXi版本的最佳实践可能有差异ESXi 7.0推荐操作流程首先尝试优雅进入维护模式esxcli system maintenanceMode set --enable true --timeout 300这个--timeout参数很关键给VM留出安全关闭时间。监控任务进度tail -f /var/log/vmkernel.log | grep -i maintenance遇到卡死时的应急方案# 列出阻止维护模式的任务 esxcli system maintenanceMode tasks list # 强制终止任务谨慎使用 esxcli system maintenanceMode task cancel -id 任务ID有次在ESXi 6.5环境发现个诡异现象明明所有VM都已迁移维护模式仍报错。最终发现是vSAN健康服务在后台运行全扫描。解决方案是临时调整服务策略# 查看服务状态 esxcli system maintenanceMode service list # 允许特定服务在维护模式下运行 esxcli system maintenanceMode service set -s vsanhealth -e false6. 战后重建维护完成后的必要检查成功进入维护模式只是开始真正的老手会在退出前做好这些检查验证存储一致性# 检查VMFS元数据 vmkfstools -v /vmfs/volumes/数据存储名称重建虚拟机清单缓存解决90%的幽灵问题/etc/init.d/hostd restart /etc/init.d/vpxa restart关键日志归档便于后续分析tar -czf /tmp/hostd_logs_$(date %Y%m%d).tar.gz /var/log/hostd.log*最近帮某电商客户处理问题时发现他们每次维护后都会出现零星VM性能下降。最终定位到是QoS策略未正确恢复。现在我的检查清单里一定会加上这条# 验证存储策略一致性 esxcli storage nmp device list | grep -i Policy维护模式就像飞机的检修模式看似简单的开关背后是整套vSphere资源管理机制在运作。每次遇到阻碍其实都是系统在提醒你这里有问题需要先处理。掌握这些排查技巧后你会发现自己对虚拟化架构的理解又深了一层——毕竟最好的学习机会永远来自生产环境的故障排查。

更多文章