尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

ESXi维护模式失败排查:虚拟机迁移与存储空间管理实战

ESXi维护模式失败排查:虚拟机迁移与存储空间管理实战 1. 项目概述当ESXi宿主机“罢工”时虚拟机为何原地不动在虚拟化运维的日常里把一台ESXi宿主机置入维护模式就像给一台正在运转的机器做计划性停机检修。标准流程下vSphere会通过vMotion自动将这台主机上的虚拟机VM迁移到集群内的其他健康主机上实现业务零中断。但很多运维兄弟都踩过同一个坑点击“进入维护模式”后进度条卡住系统提示无法迁移虚拟机或者虚拟机干脆纹丝不动导致维护窗口无法开启。这不仅仅是界面上的一个红色警告它背后往往指向了存储配置、资源预留或集群策略的深层次问题。如果强行关机就意味着业务中断这在生产环境是绝对要避免的。更棘手的是有时为了给宿主机本地或共享存储腾出空间我们需要清理文件却发现根本分不清哪个数据存储Datastore对应物理上的哪块盘或哪个LUN也不敢贸然删除。本次分享我就结合多次实战踩坑和填坑的经验系统梳理一下当ESXi宿主机进入维护模式失败时如何一步步排查并解决问题同时教会你如何清晰辨别宿主机本地存储和共享存储池以及安全清理存储空间的方法。这些操作不是孤立的它们环环相扣是保障vSphere集群高可用性和可维护性的基本功。2. 核心问题根因分析与排查思路当宿主机无法进入维护模式虚拟机迁移失败时我们不能只盯着那个错误提示看。必须像侦探一样从vSphere架构的几个关键层面进行系统性排查。根本原因通常逃不出下面这几个范畴。2.1 存储关联性锁定虚拟机被“钉”在了原地这是最常见的原因之一。虚拟机的配置文件.vmx和虚拟磁盘文件.vmdk都存放在数据存储中。如果整个集群里只有你试图进入维护模式的这台宿主机连接了虚拟机所在的那个特定的数据存储那么vMotion就无能为力了。为什么无法迁移vMotion无论是计算资源的vMotion还是存储vMotion都需要源主机和目标主机都能访问到虚拟机的存储文件。如果目标主机根本看不到这个存储迁移自然无从谈起。这常见于以下几种情况使用了宿主机本地存储在安装ESXi时如果顺手把虚拟机存在了本地硬盘上例如在快速测试或小型环境中那么这个数据存储就只有这一台主机能访问。共享存储配置错误或单点故障虽然使用了SAN如iSCSI、FCP或NAS如NFS作为共享存储但可能由于网络分区、HBA卡驱动问题、存储阵列的多路径配置错误导致集群中其他主机暂时或永久地丢失了对该LUN或NFS共享的访问权限。此时从vCenter视角看只有当前主机能看到这个存储。存储DRSSDRS未启用或配置不当如果存储池配置了SDRS但处于手动模式或空间严重不均衡也可能影响自动化迁移决策。如何排查在vSphere Client中浏览到有问题的虚拟机查看其“摘要”选项卡确认“存储”一栏显示的数据存储名称。右键点击该数据存储选择“所有vCenter操作” - “浏览文件”确认虚拟机文件确实位于此。在vCenter的“存储”视图中找到这个数据存储查看“主机”选项卡。这里会列出所有挂载了该数据存储的ESXi主机。如果列表里只有你操作的那一台主机那么存储关联性问题就坐实了。2.2 资源不足目标主机“接不住”即使存储是共享的迁移也可能因为目标主机资源不足而失败。vSphere HA/DRS集群并不是无限资源的魔法盒。计算资源CPU/内存不足目标主机可能没有足够的空闲CPU周期或物理内存来容纳迁入的虚拟机。特别是当虚拟机配置了较大的内存预留Memory Reservation时目标主机必须有对应的、未分配的物理内存来满足这个预留否则迁移会被阻止。网络资源瓶颈vMotion需要专用的千兆甚至万兆网络。如果vMotion网络带宽不足、配置错误如MTU不一致导致巨型帧问题、或者发生拥塞迁移过程可能会超时失败。许可证限制某些高级vMotion功能如跨vCenter vMotion、长距离vMotion需要企业版Plus许可证。如果许可证不支持相应的迁移操作会被禁止。如何排查检查目标主机的“性能”选项卡观察CPU和内存的使用率。确保有足够的余量。检查虚拟机的内存设置。如果设置了100%的内存预留迁移时对目标主机的空闲内存要求会非常苛刻。在集群设置中检查DRS的自动化级别和迁移阈值。过于保守的设置可能不会触发自动迁移。使用ESXi命令行SSH或DCUI在源和目标主机上执行esxtop查看网络接口按n键的吞吐量排查vMotion网络是否健康。2.3 虚拟机自身状态与配置枷锁虚拟机本身的某些特性和状态也会阻止迁移。连接的设备虚拟机如果连接了仅存在于源主机上的设备如CD/DVD驱动器映射了宿主机的本地ISO文件、连接了物理USB设备、或者配置了PCI直通Passthrough设备那么它就无法迁移。因为这些设备无法被目标主机识别和接管。快照与后台任务虚拟机正在创建、合并或删除快照时其磁盘文件处于锁定状态此时无法迁移。同样进行存储复制、备份等后台操作时也可能导致锁定。虚拟机兼容性问题虚拟机的硬件版本可能过高超过了目标主机ESXi版本的支持范围。如何排查检查虚拟机的“设置”重点关注CD/DVD驱动器、软驱、USB控制器等是否连接了主机设备。查看虚拟机的“任务与事件”确认是否有正在进行的快照或备份任务。比较源主机和目标主机的ESXi版本以及虚拟机的硬件版本。注意排查时应遵循从易到难、从外到内的原则。首先通过vSphere Client的UI界面检查明显的告警和配置然后逐步深入到命令行和日志分析。每次操作前尤其是在生产环境务必在变更窗口进行并做好备份和回退方案。3. 实战解决方案一步步让宿主机进入维护模式定位到问题根因后我们就可以“对症下药”了。下面是一套从标准操作到强制手段的递进式解决方案。3.1 标准迁移流程与手动干预首先尝试最规范的方式。确保前提条件确认vSphere HA和DRS功能已在集群中启用并正确配置。共享存储可被集群内所有主机访问。vMotion网络互通且带宽充足。发起进入维护模式在vSphere Client中右键点击目标宿主机选择“进入维护模式”。此时vCenter会尝试自动迁移所有虚拟机。处理迁移错误如果迁移某个虚拟机失败vCenter会弹出具体错误信息。根据错误信息如“目标资源不足”、“存储不可访问”参照上一章的排查方法定位问题。如果是存储关联性问题对于存放在本地存储的虚拟机唯一的办法是使用“冷迁移”或“存储vMotion”将其先迁移到共享存储上。右键点击虚拟机 - 迁移 - 选择“更改存储”将其移动到集群共享的数据存储中。完成后再对宿主机进行操作。如果是资源不足可以尝试手动将部分其他虚拟机迁移到其他主机为目标主机腾出资源或者临时调整虚拟机的资源预留特别是内存预留降低迁移门槛。如果是设备冲突断开虚拟机连接的宿主CD/DVD驱动器、USB设备等。对于PCI直通设备通常需要关闭虚拟机移除直通配置迁移后再重新添加。3.2 应对“顽固”虚拟机的强制措施当标准流程走不通或者时间紧迫时可以考虑以下强制措施。这些操作具有中断业务的风险务必谨慎评估。关闭虚拟机电源如果虚拟机承载的业务允许短暂中断这是最直接的方法。右键点击虚拟机 - 电源 - 关闭客户机需安装VMware Tools或直接关闭电源。虚拟机电源关闭后它就不再占用计算资源宿主机通常可以顺利进入维护模式。维护完成后再在其他主机上启动虚拟机。使用“强制进入维护模式”在右键点击宿主机的菜单中存在一个“进入维护模式…”的选项点击后弹出的对话框底部有一个“将关闭电源的虚拟机移动到其他主机如果可能”的复选框。不要勾选这个。然后下方会出现一个“强制进入维护模式”的按钮或复选框。作用这个选项会忽略所有迁移错误直接让宿主机进入维护模式。但所有运行中的虚拟机将被强制关闭电源就像拔掉电源一样Hard Shutdown。这是最后的手段。风险未保存的数据会丢失可能对操作系统和应用程序造成损害。绝对不要对运行数据库、交易系统等关键业务的虚拟机使用此方法除非已做好完全备份和业务中断准备。通过命令行操作对于无法通过UI连接的情况如vCenter Server故障可以通过SSH连接到ESXi主机执行命令。查看主机当前模式vim-cmd /hostsvc/hostsummary | grep inMaintenanceMode强制进入维护模式vim-cmd /hostsvc/maintenance_mode_enter退出维护模式vim-cmd /hostsvc/maintenance_mode_exit使用命令行同样需要面对虚拟机迁移问题其本质与UI操作一致。3.3 事后补救与集群配置优化问题解决后更重要的是复盘和优化避免下次再踩坑。存储策略标准化制定并强制执行虚拟机存储策略所有生产虚拟机必须放置在共享存储SAN/NFS上杜绝使用本地存储。可以利用vSphere的存储策略Storage Policy来自动化执行此规则。合理配置资源预留评估虚拟机的真实内存需求避免设置过高的内存预留如100%。除非有极端性能要求否则通常可以设置为0让ESXi的内存管理技术如透明页共享、气球驱动、内存压缩更高效地工作。规范设备连接建立操作规范要求运维人员在非必要时断开虚拟机的宿主设备连接。对于必须使用USB或CD-ROM的场景考虑使用虚拟化方案如将ISO上传至数据存储替代物理连接。启用并调优DRS确保集群DRS已启用并设置为“全自动”或根据业务敏感度调整迁移阈值。定期检查集群的资源均衡情况。4. 存储空间管理辨别、查看与安全清理存储空间不足是另一个导致运维动作失败的常见原因无论是vMotion需要临时空间还是虚拟机快照增长。管理存储的第一步是清楚地知道“你在操作的是什么”。4.1 清晰辨别宿主机本地存储与共享存储池在vSphere Client中所有存储都以“数据存储”的形式呈现。如何区分它们通过vSphere Client界面辨别导航到“存储”视图。查看数据存储的“类型”列。通常显示为“VMFS”一种块存储文件系统或“NFS”网络文件系统。本地存储通常是VMFS类型并且在“路径”或“设备”信息中可以看见类似t10.ATA_____...本地SATA/SAS磁盘或naa.600508b1001c...本地RAID卡虚拟磁盘的标识。关键点是在数据存储的“主机”选项卡下只有一台ESXi主机挂载了它。共享存储池可能是VMFS连接在SAN上或NFS。在“设备”信息中对于SAN存储你会看到存储阵列提供的LUN标识如naa.600a098038303...。对于NFS则显示服务器IP和共享路径。在“主机”选项卡下会有多台ESXi主机同时挂载此数据存储。通过ESXi Shell命令行精确查看 SSH登录到ESXi主机使用以下命令可以获得更底层的信息。列出所有存储设备esxcli storage core device list这个命令会输出一长串设备列表包括本地磁盘和SAN LUN。关注Is Local: true/false这一行true代表是本地设备。列出所有数据存储及其详细信息esxcli storage filesystem list这里可以看到每个数据存储对应的设备Mounted on列下面显示了挂载点但更准确的信息需要结合上一个命令。最实用的方法结合使用。先esxcli storage core device list | grep -A5 -B5 “Is Local:”筛选出本地设备记下其设备标识如naa.xxx。然后esxcli storage filesystem list查看每个数据存储对应的底层设备DevNode列对比一下就能知道哪个数据存储建在哪个物理设备上了。4.2 安全清理ESXi存储空间的步骤与禁忌清理空间是为了释放容量但绝不能误删正在使用的虚拟机文件。以下是安全操作指南。空间分析找到“元凶”在vSphere Client中浏览数据存储按“大小”排序一眼就能看到占用空间最大的虚拟机文件夹。进入虚拟机文件夹最大的文件通常是虚拟磁盘.vmdk和快照增量磁盘-delta.vmdk或-sesparse.vmdk。快照文件是空间增长的常见原因。使用ESXi Shell的du -h命令可以深入分析文件夹大小。例如cd /vmfs/volumes/your_datastore_name/ du -h –max-depth2 | sort -hr可以快速找出占用空间最大的顶层目录。安全清理操作删除过期快照这是最安全、最有效的释放空间方式。在vSphere Client中右键点击虚拟机 - 快照 - 快照管理器。永远不要直接在数据存储浏览器中删除快照文件-delta.vmdk这会导致虚拟机损坏。必须通过快照管理器进行“删除”或“全部整合”操作。整合操作可能会在后台进行需要时间。清理孤儿文件有时虚拟机被删除后可能会残留一些磁盘文件。在确认这些文件确实不再被任何虚拟机引用后可以通过在数据中心级别搜索文件名来确认可以在数据存储浏览器中安全删除。操作前务必做好备份或确认。使用vmkfstools清理稀疏磁盘对于精简配置Thin Provisioned的磁盘删除文件后ESXi不会自动回收物理空间。可以使用命令手动尝试回收vmkfstools -K /vmfs/volumes/datastore/vm_folder/disk.vmdk。但请注意此操作需要虚拟机电源已关闭且底层存储支持如某些高级SAN功能。卸载并重新挂载数据存储对于某些因元数据缓存导致空间显示不准确的问题可以尝试将数据存储从所有主机卸载确保没有虚拟机在运行再重新挂载。此操作风险极高需在严格规划的中断窗口进行。绝对禁忌禁止直接删除正在运行的虚拟机的.vmdk、.vmx、.vmsd、.nvram等核心文件。禁止在虚拟机运行时手动删除或移动快照文件-delta.vmdk。禁止在未明确文件归属和用途的情况下删除数据存储根目录或lostfound文件夹下的不明文件。清理共享存储前务必通过vCenter在集群层面确认所有主机都已正确识别存储的最新状态避免在存储阵列层面直接操作导致的数据不一致。5. 高级场景与深度故障排查当常规手段都失效或者遇到更复杂的情况时我们需要更深入的排查工具和方法。5.1 深入日志分析定位迁移失败根源vSphere的日志是宝藏。当迁移失败时不要只看UI的错误提示要去挖日志。关键日志文件vCenter Server 日志位于vCenter Server Appliance的/var/log/vmware/vpxd目录下。vpxd.log记录了vCenter的所有操作搜索虚拟机和主机的名称以及错误代码。ESXi 主机日志通过SSH连接到ESXi主机日志位于/var/log。vmkernel.log核心日志记录vMotion、存储操作等核心事件。搜索 “vMotion”、“DRS”、“Migrate” 等关键词。hostd.log主机管理服务日志记录与vCenter的通信及任务执行情况。日志分析技巧使用grep、tail -f等命令。例如在ESXi上实时跟踪vMotion相关日志tail -f /var/log/vmkernel.log | grep -i vMotion。查找错误代码如FAILED: xxx并复制到VMware官方知识库KB搜索通常能找到具体的解决方案。5.2 网络与存储多路径配置核查迁移尤其是存储vMotion极度依赖网络和存储路径的稳定性。vMotion网络物理检查确认源和目标主机的vMotion网卡指示灯正常网线连接正确。网络配置在每台主机的“配置”-“网络”中检查vMotion使用的VMkernel端口组。确保IP地址在同一子网且网关、MTU如果使用了巨型帧设置一致。使用vmkping命令测试主机间vMotion网络的连通性和大包传输vmkping -d -s 8972 目标主机vMotion IP-s 8972 测试9000字节MTU。存储多路径在ESXi主机的“配置”-“存储”-“设备”中选择对应的存储设备查看“路径”选项卡。健康的SAN环境应该显示多条“活动”Active或“未使用”Unused的路径。如果所有路径都是“禁用”Dead或“不活动”Inactive说明存储网络有问题。使用命令esxcli storage nmp device list查看设备的多路径策略。常用的策略有MRU最近使用和RR轮询。配置不当可能导致路径切换失败。5.3 资源池、DRS规则与亲和性/反亲和性规则冲突vSphere集群的高级功能如果配置不当会成为隐形的“路障”。资源池Resource Pool如果虚拟机被放置在某个资源池中而该资源池的“资源分配”设置了严格的CPU或内存限制可能会限制迁移的灵活性。检查虚拟机所在资源池的配置。DRS规则虚拟机-主机亲和性规则例如“虚拟机A必须在主机组X上运行”。如果你试图将主机组X中的一台主机进入维护模式而规则禁止虚拟机A离开该组迁移就会失败。虚拟机-虚拟机反亲和性规则例如“虚拟机B和虚拟机C不能在同一台主机上运行”。如果目标主机上已经运行了虚拟机C那么虚拟机B就无法迁入。排查方法在集群的“配置”-“VM/Host规则”中仔细检查所有已启用的规则。临时禁用有冲突的规则在变更窗口进行完成维护后再启用。5.4 第三方备份或安全软件干扰企业环境中常部署有第三方备份代理如Veeam、Commvault的传输器或安全防护软件。这些软件可能会在虚拟机内部或外部锁定磁盘文件以防止数据在备份或扫描期间被更改这同样会阻止vMotion。排查检查迁移失败的时间点是否与备份任务窗口重合。查看备份软件的作业日志。解决调整备份策略避免在计划维护时段进行备份。或与备份管理员协调在维护前暂停相关备份作业。处理ESXi维护模式迁移失败的问题是一个综合性的排错过程它考验的是对vSphere整体架构的理解。从存储、网络、计算资源到集群策略任何一个环节的疏漏都可能导致操作失败。养成规范的操作习惯如使用共享存储、合理设置资源、建立清晰的资源台账知道每份存储在哪里、以及掌握日志分析和命令行工具是成为一名成熟的虚拟化运维工程师的必经之路。每次解决一个这样的问题都是对系统理解的一次深化。最后记住在生产环境操作前如果条件允许在测试环境复现和验证你的解决方案永远是成本最低、最保险的选择。
返回列表