ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ESXi创建VMFS报错无法更改主机配置的排查与修复指南

ESXi创建VMFS报错无法更改主机配置的排查与修复指南 刚把新硬盘插进服务器准备在 ESXi 里新建 VMFS 数据存储时界面直接弹出一句“无法创建 VMFS 数据存储 - 无法更改主机配置”相信不少运维同行看到这条提示时心里都会咯噔一下。我最初也以为是不是硬盘没插好、阵列卡没识别折腾半天之后才发现这玩意儿十次里有八次根本不是你硬盘的问题。这篇文章我就把这个报错从表象到根因、从排查到修复、再从修复到防坑完整拆开来讲一遍希望能帮你少走几个小时的弯路。这个报错的核心关键词是ESXi、VMFS、数据存储和主机配置。表面上看是存储创建失败实际上它是 vCenter 或 ESXi 主机在配置层面拒绝执行任务。作为一个在虚拟化环境里踩过无数坑的老运维我可以负责任地说这个报错的本质往往不在存储而在 ESXi 主机的配置状态和连接通道上。下面直接进入正题。1. 报错背后的两种典型环境与一个误导性提示1.1 独立主机直连也会报先说环境。这个报错最常见出现在两种场景里一种是你直接打开 ESXi 主机的 Web Client 界面操作另一种是你通过 vCenter 管理多台 ESXi 主机然后下发“新建数据存储”的任务。我遇到过的实际情况里两种场景都会报这个错但背后的原因侧重不太一样。直连 Web Client 时报这个错误大概率是主机本身的状态出问题了。比如 ESXi 主机进入了维护模式但某些服务卡住了、hostd 服务没有正常响应、或者主机的配置管理器处于异常锁定状态。为什么会这样因为 ESXi 的 Web Client 在创建 VMFS 数据存储时并不是简单地执行一条“格式化”命令而是要通过主机配置管理栈去向 vmkernel 下发一系列配置变更。这个链路包括 witness、hostd 服务、配置存储层configStore和 LVM逻辑卷管理器。任何一个环节响应超时或者校验失败最终都会汇总成一个笼统的“无法更改主机配置”提示。通过 vCenter 操作时报这个错则要优先怀疑 vCenter 与 ESXi 主机之间的通信信任状态。vCenter 下发任务不是靠“蛮力”执行的它和每台被管主机之间有一个基于证书指纹的 SSL 安全通道。如果 vCenter 里保存的主机证书指纹和主机当前实际指纹不一致vCenter 就会拒绝把任务下发给主机并返回一个形如“无法更改主机配置”的通用错误。很多管理员碰到这种情况会误以为是权限不够或者以为是 VMware 的 licensing 问题其实都不是。1.2 为什么报错文案这么有误导性这个报错文案非常让困惑因为“无法更改主机配置”听上去像是一个权限校验失败或者像是主机配置被锁住了。但实际上当底层服务异常、证书不匹配、甚至主机时间偏差超出安全阈值时ESXi 都会把多种底层异常统一封装为这个通用错误。这是 VMware 设计上的一种“保守策略”它不想把内部完整的异常链路暴露给前端用户于是你在 Web Client 上看到的永远是一个模糊的、看似和存储无关的提示。碰巧如果你在这个报错出现的同时去查看任务的“详细信息”有些版本还会给出“vim.fault.HostConfigFault”这样的英文内部错误码。这个 fault 是 ESXi 配置层的通用异常类型它确实涵盖了存储配置任务但也同样涵盖了网络配置、安全配置、时间配置等任务。所以你在搜索引擎里搜“无法创建 VMFS 数据存储”时会发现有人说是硬盘坏了、有人说是阵列卡驱动问题、也有人说是证书问题原因就是大家都在同一个大杂烩错误里各自猜测。作为运维我们需要做的不是盯着报错文案猜测而是顺着日志和链路去定位真正的根因。2. 完整排查链路从硬盘到存储栈再到 vCenter 信任链遇到这种报错我会建议按一条明确的链路去排查顺序一定不要乱先确认硬件可见性再确认分区状态接着确认主机配置服务最后才是 vCenter 信任链。如果不按这个顺序你很有可能在错误的方向上浪费大量时间比如反复拔插硬盘、更换盘位、甚至重刷阵列卡固件结果发现根本不是硬件问题。2.1 硬盘有没有被识别——底层存储可见性检查第一步登录 ESXi 主机的 SSH 或 Web Client 界面检查新硬盘是否已经被系统识别。在 Web Client 的“存储”-“设备”页面你能看到主机能够识别的所有存储设备包括本地 SATA/SAS 盘、SSD、NVMe、以及通过 HBA 或 RAID 卡映射出来的逻辑盘。如果你的新硬盘压根不在这里出现那说明问题在硬件层——要么是盘没插好、要么是背板/线缆问题、要么是阵列卡没有正确识别新盘。在 SSH 命令行下可以用esxcli storage core device list命令查看所有存储设备。这个命令的输出里每个设备会有一个naa.开头的 Device UID还会显示设备型号、大小、传输协议和是否 SSD 等信息。这块盘的 Device UID 在后面创建 VMFS 分区时非常关键因为 ESXi 的 partedUtil 和 vmkfstools 工具都是以这个 UID 而不是设备名来操作设备的。如果你发现设备存在但队列深度异常或 IO 错误频繁那才需要考虑驱动或固件层面。确认设备可见后还要检查一个问题这块盘上是否已经有残留的分区表或第三方文件系统。ESXi 在新建 VMFS 数据存储时如果检测到盘上有无法识别的分区比如 Windows 的 NTFS、Linux 的 ext4或者之前被其他阵列初始化过的结构向导界面可能不会让你直接选这块盘或者选了之后在最后一步报错。这时候需要在 SSH 下用partedUtil get /dev/disks/naa.xxx查看分区表。如果分区表比较混乱最好先把盘清成空白盘再去做数据存储。2.2 VMFS 创建的三个前提LUN 可见、分区表可用、主机配置可写搞清楚硬件识别问题之后再来说说在 ESXi 里成功创建一个 VMFS 数据存储到底需要满足哪些条件。只有理解了这些前提我们才能在出问题时逐个对照排查。第一个前提是 LUN 可见性。这个“可见”不仅仅是设备列表里能看到还要求 vmkernel 能正确识别这块设备的大小、扇区大小以及设备类型。在用 RAID 卡的情况下尤其是 Dell、HP、Lenovo 这些品牌服务器你可能需要先在阵列卡的 BIOS/UEFI 配置界面里把新物理盘加入 RAID 阵列组并初始化成逻辑盘ESXi 才能看到它。直通模式HBA 卡则一般不需要额外配置盘插上去就能识别。如果你拿不准当前主机用的是直通还是阵列模式看设备列表里盘型号是否带厂商 RAID 卷名就能判断。第二个前提是分区表可用。ESXi 创建 VMFS 数据存储不是直接对整块裸设备格式化而是先要在设备上建立 GPT 分区表再在分区内创建 VMFS 文件系统。这块设备上如果已经有无法识别的 GPT 分区头、MBR 残留或者分区表的 guid 冲突LVM 层就会报错表现到前端也是类似“无法更改主机配置”的通用错误。所以排查时一定要用 partedUtil 看清楚分区表状态。第三个前提也是最多人忽略的主机配置必须处于可写状态。ESXi 有一个 configStore配置存储机制它类似于一个小型数据库记录着主机网络、存储、认证等所有配置。如果 configStore 所在的存储区域损坏、磁盘剩余空间不足、或者主机处于某种配置锁定的状态那任何配置变更任务包括建数据存储都会失败。检查 configStore 健康状况可以通过查看/var/log/hostd.log里的关键错误来实现。长期跑了很多年的老 ESXi 主机偶尔还会因为日志文件过大导致根文件系统/的空间不足这也会直接引发配置写入失败。2.3 真正的坑vCenter 与主机之间的证书指纹不一致如果底层的设备、分区表、configStore 都没问题但还是报“无法更改主机配置”那就非常大概率是 vCenter 与 ESXi 主机之间的证书指纹不一致了。什么是证书指纹不一致理解起来很简单。ESXi 在安装或开机时会自动生成一个 SSL 证书用于主机之间的安全通信。vCenter 在将一台 ESXi 主机加入管理时会保存这台主机的证书指纹后续每次通信都会校验。如果 ESXi 主机的证书在之后发生了变化比如主机时间严重漂移导致证书过期、主机从备份中恢复、或者有人重新安装了 ESXi 但 vCenter 里还保留着旧主机的条目vCenter 里的旧指纹就和主机当前的不一致了。这种情况下vCenter 执行任何需要修改主机配置的任务时都会因为 TLS 层面握手失败或证书校验失败而返回通用错误你在界面上看到的正是“无法更改主机配置”。如何确认是不是这个问题有几种判断方法。第一种在 vCenter 的“主机和集群”界面里看这台主机是否显示为“已连接”但不正常甚至在“证书状态”栏里提示证书无效。第二种直接在浏览器里直连 ESXi 主机的 IP 或主机名用 Web Client 登录后尝试重新添加数据存储。如果直连操作正常而通过 vCenter 操作失败那几乎可以锁定是 vCenter 和主机之间的信任关系出问题了。第三种去 vCenter 的日志或 ESXi 主机的vpxa.log里搜索 “ssl”、“certificate” 相关关键字通常能看到明确的证书报错信息。3. 修复方案从最小干预到完整重置既然根因可能分布在多个层面修复策略也应该是递进的。我的习惯是先从最小干预开始不行再逐步扩大处置范围。这样每一层修复其实也是一次确认能帮你越来越清晰地定位问题到底在哪。3.1 方案一时间校准 重启管理代理第一个要试的也是最便宜的修复动作是校准 ESXi 主机时间并重启管理代理。很多虚拟机管理员的直觉里时间偏差只会影响日志时间戳但从我实际处理的案例来看时间漂移对 vCenter 与主机的证书校验、对 hostd 服务的正常运行都有直接影响。ESXi 主机默认使用 UTC 时间如果长时间没有配置 NTP或者 CNOS 电池没电导致 BIOS 时间重置主机时间可能会偏差几个小时甚至几年。证书校验环节对时间差非常敏感哪怕偏差超过证书的有效缓冲期也会直接判定证书无效。操作上先 SSH 登录 ESXi 主机执行date看当前时间再用esxcli system ntp get查看 NTP 配置。如果没配置时间同步可以这样设置esxcli system ntp set --serverntp.aliyun.com esxcli system ntp set --enabledtrue /etc/init.d/ntpd restart时间校准后接着重启两个核心管理代理hostd和vpxa。hostd 是 ESXi 主机的本地管理服务vpxa 是主机与 vCenter 通信的代理服务。重启它们的命令是/etc/init.d/hostd restart /etc/init.d/vpxa restart注意重启这两个服务会短暂中断主机的管理连接正在运行的虚拟机不受影响但你在 Web Client 或 vCenter 里会看到主机短暂失联。执行完这个操作再回到 Web Client 重新尝试创建 VMFS。如果这一步做完问题解决说明之前确实是管理代理状态卡死或者时间偏差导致校验失败。3.2 方案二重新刷新证书和 vCenter 通道如果时间校准和代理重启无效下一步就该定位到证书问题了。较新版本的 ESXi6.5 之后支持通过命令行重新生成证书。在 SSH 里执行/sbin/auto-backup.sh /sbin/generate-cert.sh执行完生成证书脚本后重启管理代理让新证书生效。注意重新生成证书会导致之前保存在 vCenter 里的指纹失效所以接下来你需要去 vCenter 里手动“重新连接”这台主机让 vCenter 接受新指纹。操作路径是vCenter 界面 - 选择主机 - 右击 - “连接”或“重新连接”。vCenter 会提示证书指纹变化此时选择“信任”并继续即可。之后你再尝试创建 VMFS 数据存储就会发现配置变更请求可以正常下发了。补充一点如果主机是通过 vCenter 加域的或者开启了 Enhanced vMotion CompatibilityEVC重新生成证书后建议同时检查一下 vCenter 对该主机的“证书验证状态”。在 vCenter 的“主机”页面的“摘要”标签里可以看到证书的验证状态是否为“有效”。如果显示“已隔离”或“无效”右击主机选择“证书”-“重新验证”即可。3.3 方案三重新连接主机到 vCenter有一种比较特殊的情况vCenter 里保存的旧主机条目和实际主机的 UUID 或证书指纹已经乱掉了即使重新生成证书也不能让 vCenter 正常识别。这时候最干脆的办法是把主机从 vCenter 中移除再重新添加。操作顺序要注意先从 vCenter 中移除主机之前一定要确认主机上没有正在运行的虚拟机或者先把虚拟机迁移到其他主机上。移除操作不会删除主机上的虚拟机文件和数据存储只移除管理关系。具体步骤是在 vCenter 中右键主机 - “移除”然后在“主机和集群”根节点右键 - “添加主机”重新输入 ESXi 主机的 IP 或主机名、管理员账号和密码。添加过程中 vCenter 会显示主机的证书指纹确认并完成添加。添加完成后主机恢复到受管状态你再尝试创建 VMFS 数据存储这个报错一般就消失了。这个方法在主机重装过系统、或者 vCenter 数据库出现异常时尤其有效。我见过一例ESXi 主机硬件故障返修回来后发现原来的系统盘数据损坏我重新安装了 ESXi 但使用了同名主机结果 vCenter 里旧条目里的旧证书指纹、旧 UUID 全对不上最后就是靠移除重加解决的。3.4 方案四CLI 强制创建数据存储绕过图形界面如果以上所有方案都试过问题依旧这种情况比较罕见但确实存在那最后的手段就是绕过图形界面直接在 ESXi 命令行里手动创建 VMFS 数据存储。这个方法等于绕开了 Web Client 那层的配置校验直接通过底层命令让 vmkernel 执行真正的操作。它不会改变证书或 vCenter 的问题但能在存储层面把数据存储建出来保证业务先跑起来。不过我要先强调一句CLI 强制创建仅建议在确认硬件识别正常、且已经通过其他方式解决或暂时容忍配置通道问题的情况下使用。如果证书问题不解决即使数据存储建好了后续在 vCenter 里对该主机执行其他配置变更操作比如添加网络、挂载 ISO可能仍然会失败。CLI 创建的步骤是先用 partedUtil 建立 GPT 分区再用 vmkfstools 创建 VMFS 文件系统。查看设备名用esxcli storage core device list拿到naa.xxx设备 ID。然后清除分区表慎重操作确认设备没选错这步会清掉盘上所有数据partedUtil setpt /dev/disks/naa.xxx gpt 1 2048 100%上面的命令会在设备上建立 GPT 分区表并创建一个从扇区 2048 开始、一直扩展到设备末尾的分区。ESXi 要求数据存储分区一般从 2048 扇区开始这是为了对齐物理块。创建好分区后再用 vmkfstools 创建 VMFSvmkfstools -C vmfs6 /dev/disks/naa.xxx:1这里的vmfs6表示创建 VMFS 6 文件系统适用于 ESXi 6.5 及以上版本。如果你是在 ESXi 6.0 或更老的版本上操作需要改成vmfs5。创建完成后在 Web Client 里刷新存储页面就能看到新数据存储出现了并且通常会自动挂载到主机上。4. 类似报错与高频关联场景懂得都是泪排查完这个报错本身还想借这个机会把几类和它高频关联的场景一并聊清楚。这几个场景在社区里每天都有同行在问原因各不相同但很容易和“无法创建 VMFS 数据存储”混淆。4.1 新盘根本不出现在数据存储向导的可选列表里你在“新建数据存储”向导里看不到刚插入的硬盘是比报错更隐蔽的“准失败”。出现这种情况优先检查磁盘是否被硬件层屏蔽。如果是服务器自带 RAID 卡检查新盘是否处于“未配置的好盘”状态并需要先配置为 RAID 0 或加入现有阵列组如果是 HBA/HCI 直通卡检查 ESXi 的存储适配器页面里是否能扫描到。另外一个容易忽略的原因盘被标记为“远程”或“本地”的问题。ESXi 对本地盘和远程盘的处理路径不完全一致部分版本在创建数据存储时如果新盘没有被正确标记为本地 SSD 或本地 HDD而是被识别为“未知”或“远程非 SAS”向导里可能就会隐藏它。用下面这个命令可以把设备强制标记为本地 SSDesxcli storage nmp satp rule add --device naa.xxx --satp VMW_SATP_LOCAL --optionenable_ssd esxcli storage core device set --device naa.xxx --ssd 1执行后刷新存储页面设备通常就能正常出现在向导里了。4.2 只能建 VMFS5 不能建 VMFS6分区表格式的坑有经验的运维可能碰到过这样一种怪事一块新盘在 Web Client 向导里只能选 VMFS5VMFS6 的选项是灰的。这其实是分区表现有格式导致的限制。VMFS6 要求设备必须使用 GPT 分区表如果盘之前被初始化成 MBR 分区表或者分区类型设置错误ESXi 就不允许在它上面创建 VMFS6。解决的办法还是在 CLI 层用 partedUtil 重建分区表命令和我上文提的一样把分区表格式强制指定为gpt然后再创建 VMFS6。顺手提醒一句如果你计划在 ESXi 之间迁移数据存储或者要用到 vSANVMFS6 和 GPT 基本是标配最好在初始化时就一步到位避免后面再折腾一次迁移倒腾。4.3 数据存储扩容时也报“无法更改主机配置”同样一个报错不只出现在新建数据存储时在给已有数据存储扩容时也会出现。如果你是在 vCenter 里对 LUN 扩容后尝试“增加数据存储容量”结果遇到“无法更改主机配置”大概率还是证书或 configStore 的问题参考上面三个修复方案排查即可。但还有一种特殊情形底层 LUN 大小已经变更但 ESXi 主机仍然识别为旧大小。此时需要先执行一次存储扫描让主机重新识别 LUN 容量。在 Web Client 中右键点击主机 - “存储”- “重新扫描存储适配器”。如果你用命令行可以是esxcli storage core adapter rescan --all扫描之后LUN 的大小会更新为实际容量这时再去做扩容就不会报错了。5. 几个必须养成的维护习惯处理“无法创建 VMFS 数据存储 - 无法更改主机配置”这类报错最重要的是“不要慌”和“按顺序查”。我在实际工作里踩过几次坑之后逐渐养成了几个维护习惯分享出来给大家参考。第一个习惯ESXi 主机必须要配置可靠的 NTP 时间同步。很多莫名其妙的证书校验失败、任务下发失败追根溯源都是时间偏差在作怪。我见过不止一次服务器 BIOS 时间被重置到了几年前的某个默认时间导致 ESXi 主机与 vCenter 的 SSL 会话无法建立界面上的报错五花八门。第二个习惯每次对 ESXi 主机做较大变更升级、重装、证书操作前先手动导出主机的配置备份。在 Web Client 的“主机”-“操作”-“导出系统日志”里可以导出完整的日志包而用命令行可以备份配置vim-cmd hostsvc/firmware/backup_config这个命令会生成一个下载链接下载下来的 tgz 包里包含主机配置的完整备份包括证书。万一后面证书出问题可以直接用这个备份恢复。第三个习惯当数据存储创建的问题涉及 vCenter 和主机信任关系时不要犹豫太久直接移除重加主机往往是效率最高的办法。相比之下反复在证书验证状态里点“重新验证”或者等它自动恢复反而浪费时间。移除重加的操作对业务的影响极小只要主机上没有存活的虚拟机通常几分钟就能恢复。回到开头的场景。如果是我现在再遇到“无法创建 VMFS 数据存储 - 无法更改主机配置”我会先 SSH 上去看一眼时间顺手把 NTP 配上并重启 hostd 和 vpxa如果不行就重新生成证书并重新连接 vCenter还不行直接把主机从 vCenter 里移除重加。三次操作下来百分之九十九的问题都能解决。剩下的百分之一才需要去考虑存储硬件和驱动层面的问题。记住这个顺序你能省下大量反复拔插硬盘、重启服务器的时间。
返回列表