本文适用版本:ESXi 7.0 U3 / 8.0 U2 / 9.0 GA
适用 HBA:Broadcom / QLogic / Marvell(QLE2692 / LPe35002 等)
阅读时长:约 7 分钟
一、为什么写这篇文章?
最近私信里又陆续收到几位网友问同一个问题:新装的 ESXi 主机,FC HBA 卡驱动也装了,但 vCenter 里所有存储路径都显示 "Dead",物理磁盘指示灯也在闪。
有人重启 ESXi 三次没解决;有人怀疑是 FC 交换机问题去换线;还有人准备直接重装 ESXi。最戏剧性的是一位网友,折腾了一周,最后发现是HBA 卡 BIOS 里没开启 IT(Initiator-Target)模式。
今天这篇文章把这个坑彻底讲清楚,你看完 5 分钟就能定位是 BIOS 问题、驱动问题、还是硬件问题。
二、原理:HBA 卡为什么需要 BIOS 模式?
FC HBA 卡出厂有两种工作模式:
┌────────────────────────────────────────────────┐ │ FC 模式(默认出厂) │ │ - 卡自己处理 FC 协议栈 │ │ - 需要 HBA 厂商专用驱动 │ │ - 一般用于传统 FC SAN │ ├────────────────────────────────────────────────┤ │ IT 模式(Initiator-Target) │ │ - 卡降级为纯通道,不处理协议栈 │ │ - 由操作系统层处理 FC 协议 │ │ - 需要操作系统原生 FC 驱动(VMware 内置) │ └────────────────────────────────────────────────┘ESXi 推荐用 IT 模式(又叫 "HBA 模式"),因为:
- VMware 在操作系统层有成熟的 FC 驱动栈,稳定性和性能更好
- 多路径(MPIO)、负载均衡、故障切换都由 ESXi 自己控制
- 不依赖特定 HBA 厂商,通用性强
关键认知:很多 HBA 卡出厂默认是 FC 模式,但 ESXi 8.0 起,VMware 推荐所有新装的 HBA 都改成 IT 模式,否则存储路径识别异常。
三、3 步定位:确认是 BIOS 问题、驱动问题、还是硬件问题
# 第 1 步:看 HBA 卡是否被识别 esxcli storage san fc adapter list # 看 "Adapter" 字段,如果没有输出 = 驱动没装好 # 第 2 步:看 HBA 卡固件版本和工作模式 esxcli storage san fc adapter get -A vmhba1 # 看 "Option ROM Version" 和 "Firmware Version" # 第 3 步:看存储路径状态 esxcli storage core path list # 看 "Path State" 列 # "Dead" = 路径挂了(可能是模式问题) # "Standby" = 正常(备份路径) # "Active" = 正常(主路径)对照表:
| esxcli 输出 | 结论 | 解法 |
|---|---|---|
| adapter list 空 | 驱动没装 | 重装 VIB 驱动 |
| adapter 有,但 path list 全 dead | HBA BIOS 模式错 | 进 HBA BIOS 改 IT 模式 |
| adapter 有,部分 dead | FC 链路 / 交换机问题 | 检查线缆和交换机 zone |
| adapter 提示 "Unsupported firmware" | 固件太新/太旧 | 刷 HBA 官方推荐固件 |
四、解法:3 档修复方案
方案 A:HBA BIOS 改 IT 模式(70% 场景)
重启主机进 HBA 卡 BIOS(启动时按 Ctrl+Q 或 Alt+Q,看屏幕提示):
# 1. 重启主机,启动时按提示键进入 HBA BIOS # 常见按键: # - QLogic: Ctrl+Q # - Broadcom/Emulex: Alt+Q # - Marvell: Ctrl+E # 2. 进入 HBA 配置界面: # Adapter Settings → Adapter Port Configuration # → Connection Options → Connection Type # → 改成 "Initiator-Target" (IT 模式) # → Save & Exit # 3. ESXi 端验证 esxcli storage san fc adapter get -A vmhba1 # 输出应该有 "Adapter Type: FC" → "Adapter Type: IT"踩坑提醒:
- HBA BIOS 修改需要重启,挑维护窗口做
- 某些 Dell 服务器的 HBA 卡 BIOS 在 System Setup → Integrated Devices 里,不单独显示
- 改完模式后必须重新 rescan 存储,VM 不会自动重新挂载
方案 B:重装 HBA 驱动
如果是驱动问题,VIB 包需要重新安装:
# 1. 列出当前 HBA 驱动 esxcli software vib list | grep -i "qlogic\|emulex\|broadcom\|marvell" # 2. 卸载旧驱动 esxcli software vib remove -n qlogic-nx2-pcie-firmware \ --force --no-sig-check # 3. 上传新驱动到 datastore(用 Winscp / scp) # 推荐从 VMware Compatibility Guide 下载官方驱动 # 4. 安装新驱动 esxcli software vib install \ -d /vmfs/volumes/datastore1/drivers/qlogic-fc-driver.zip \ --no-sig-check # 5. 重启 ESXi esxcli system shutdown reboot -r "HBA driver upgrade"驱动来源(官方推荐顺序):
- VMware HCL 官方认证驱动
- HBA 厂商官网下载页
- 服务器 OEM 定制驱动(Dell/HPE/Lenovo 都有定制版)
方案 C:rescan + 重新认领存储
模式改完、驱动装完后,需要让 ESXi 重新发现存储:
# 1. 重扫所有 FC 适配器 esxcli storage san fc rescan --adapter vmhba1 esxcli storage san fc rescan --adapter vmhba2 # 2. 重扫所有 HBA(更彻底) esxcli storage core adapter rescan --all # 3. 重新认领磁盘(可选,如果上面还看不到) esxcli storage core claiming reclaim \ --device naa.600601609430280048fc1dde3b3ce911 # 4. 重挂载 VMFS datastore esxcli storage vmfs datastore mount --all # 5. 验证 esxcli storage core path list # "Path State" 应该全是 "Active" 或 "Standby"五、防患于未然:4 个最佳实践
1. HBA 固件版本统一
同一集群内所有主机的 HBA 固件版本保持一致,避免路径切换时出现兼容性问题。
# 批量查所有主机 HBA 固件版本 Get-VMHost | %{ $esxcli = Get-EsxCli -VMHost $_ $adapters = $esxcli.storage.san.fc.adapter.list.Invoke() | %{ [PSCustomObject]@{ Host = $esxcli.VMHost.Name Adapter = $_.Adapter Firmware = $esxcli.storage.san.fc.adapter.get.Invoke($_.Adapter).FirmwareVersion } } $adapters }2. HBA 卡 BIOS 模式标准化
所有新装 ESXi 主机,HBA 卡 BIOS 模式必须统一为 IT 模式。在服务器上架前的 BIOS 配置清单里明确写出来。
3. 多路径策略配置
即使有 2 条路径,也要确保 MPIO 策略正确:
# 设置路径选择策略(默认 Round Robin 最好) esxcli storage nmp satp set --satp VMW_SATP_ALUA \ --default-psp VMW_PSP_RR # RR = Round Robin,轮流使用两条路径,负载均衡4. 监控路径状态
# zabbix 自定义监控项 UserParameter=esxi.fc.dead.paths,/usr/bin/esxcli storage core path list 2>/dev/null | /usr/bin/grep -c Dead # 输出 > 0 触发告警 # 进阶监控(按 HBA 卡分组) UserParameter=esxi.fc.path[*],/usr/bin/esxcli storage core path list 2>/dev/null | /usr/bin/grep -c "$1"六、速查命令卡(可收藏转发)
# 1. 看 HBA 适配器列表 esxcli storage san fc adapter list # 2. 看某个 HBA 详情 esxcli storage san fc adapter get -A vmhba1 # 3. 重扫 FC 存储 esxcli storage san fc rescan --adapter vmhba1 # 4. 重扫所有 HBA esxcli storage core adapter rescan --all # 5. 重新认领磁盘 esxcli storage core claiming reclaim --device naa.xxx # 6. 看路径状态 esxcli storage core path list # 7. 重装 HBA 驱动 esxcli software vib remove -n 旧驱动名 --force --no-sig-check esxcli software vib install -d /vmfs/volumes/ds/drivers/xxx.zip --no-sig-check # 8. 设置多路径策略 esxcli storage nmp satp set --satp VMW_SATP_ALUA --default-psp VMW_PSP_RR