ccb3350
这次没有正文改动。
这是 virtual/ESXi 常见故障处理.md 的改动记录。后台每次保存都会留一份快照,
这里显示的是快照之间的差异,不会混入其他文章的改动。
还没有后台修改记录。
下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。
ccb3350
这次没有正文改动。
c3e3513
@@ -0,0 +1,329 @@ +--- +tags: [ESXi, VMware, 虚拟化, 故障处理] +order: 20 +--- + +# ESXi 常见故障处理 + +## 场景 + +ESXi 主机上出故障了,虚拟机起不来、连不上、卡死、磁盘满了、虚机莫名重启。 +这篇按「现象 → 定位 → 处理」整理,都是实际会遇到的。 + +## 前置条件 + +- 能登上 ESXi 的网页控制台(管理网络出问题时用 DCUI) +- 有 SSH 权限:网页 → 主机 → 管理 → 安全 → 访问策略 → 启用 SSH +- 记下这台主机的 IP 和管理口(vmk0) +- 重要操作前先看一遍「虚拟机 → 操作 → 备份」有没有在做 + +## 配置 + +### 1. 虚拟机无法开机 + +先看事件,ESXi 的报错基本都在里面: + +```text +虚拟机 → 选中 → 监控 → 事件 +``` + +常见几种: + +```text +"msg.vpx.vm.powerOn.timeout" 启动超时,宿主机负载高或磁盘慢 +"msg.vmx.powerOn.failed" 配置文件或磁盘有问题 +"msg.disk.filter.pd.sesparse.outOfSpace" 空间不足 +"msg.hostPort.vmmi网卡不存在" 网卡被删了 +``` + +按顺序查: + +```bash +# 1. 宿主机有没有进入维护模式或重启了 +esxcli system stats uptime get + +# 2. 存储是否可访问(最常见原因) +esxcli storage filesystem list +esxcli storage core path list +esxcli storage vmfs extent list + +# 3. 磁盘文件在不在 +ls -lh /vmfs/volumes/datastore1/虚拟机目录/ + +# 4. CPU/内存有没有被占满 +esxcli system stats cpu load get +esxcli hardware memory get + +# 5. 虚拟机的 .vmx 有没有语法错误 +vi /vmfs/volumes/datastore1/虚拟机目录/虚拟机.vmx +``` + +`.vmx` 里常见的问题: + +```ini +# 网卡类型在当前版本不存在(换过硬件版本) +ethernet0.virtualDev = "vmxnet3" ← 改成 vmxnet2 或 e1000e +# 残留的网卡配置指向已删除的端口 +ethernet0.present = "TRUE" +# 磁盘路径写错 +scsi0:0.fileName = "[datastore1] 目录/磁盘.vmdk" +``` + +改完 `.vmx` 后**必须重新注册**才生效: + +```text +虚拟机 → 操作 → 取消注册 +然后 文件 → 打开或浏览数据存储 → 找到 .vmx → 登记为虚拟机 +``` + +### 2. 虚拟机连不上 / 网卡不通 + +```bash +# 物理口链路是否 up +esxcli network interface list + +# vmk0 管理网络配置 +esxcli network ip interface list +esxcli network ip route list + +# 虚拟交换机和上行口 +esxcli network vswitch standard list +esxcli network vswitch standard portgroup list + +# ARP 和邻居 +esxcli network arp table list + +# 防火墙(ESXi 默认拦很多) +esxcli network firewall ruleset list +``` + +分层排查,按这个顺序排除: + +| 步骤 | 检查 | 正常结果 | +| --- | --- | --- | +| 1 | 物理口 up 吗 | `Link Status: up` | +| 2 | vSwitch 有上行口吗 | 上行口数量对得上 | +| 3 | 端口组 VLAN 对吗 | 和物理交换机配置一致 | +| 4 | 虚机网卡连上端口组了吗 | `适配器 1` 勾了端口组 | +| 5 | 虚机里看到 IP 吗 | 有 IP 才谈通不通 | +| 6 | ESXi 防火墙挡了吗 | 临时关掉测试 | + +快速判断是不是 ESXi 防火墙: + +```text +主机 → 管理 → 安全与配置 → 防火墙 → 关闭全部(临时) +``` + +关掉虚拟机能通就说明是防火墙挡的,接着在防火墙里放行具体端口,别长期全关。 + +虚拟机里的虚拟网卡没连上端口组,是最容易漏的一步: + +```text +虚拟机 → 硬件 → 虚拟网卡 → 勾上端口组(原来可能是「不连接」) +``` + +### 3. 宿主机紫屏 / 卡死 + +ESXi 紫屏(Purple Screen)通常是硬件或驱动问题。 + +```bash +# 崩溃转储(重启后还在) +ls -lh /var/core/ +/usr/lib/vmware/vmware-core-dump /var/core/vmware-core-*.dump | less +``` + +常见原因: + +| 现象 | 大概率原因 | +| --- | --- | +| 蓝屏 `PFN corruption` | 内存条坏了或双通道没插满 | +| 紫屏 `NMI watchdog` | 固件或 CPU 稳定性 | +| 紫屏 `LINT1` / `PCIE` | 插槽、PCIe 卡、供电 | +| 紫屏 `I/O error` | 阵列卡、磁盘、RAID 卡固件 | +| 紫屏 `TSL` / `e1000e` | 网卡驱动,换成 `e1000` 或更新网卡固件 | + +处理顺序: + +```bash +# 1. 看硬件健康 +esxcli hardware cpu global get +esxcli hardware memory get + +# 2. 阵列卡状态(LSI/Broadcom 用这个) +/opt/lsi/MegaRAID/merlincli "/c0 show all" | grep -E "State|Firmware" +# 或 storcli +/opt/storcli/storcli64 /c0 show all + +# 3. 日志里有没有硬件报错 +grep -iE "hardware|error|fail" /var/run/log/hostd.log | tail -50 + …… 改动较长,只显示前一部分