开启虚拟机FC直通,核心是把光纤通道HBA卡以PCIe直通方式独占分配给虚拟机,让存储I/O完全绕过虚拟化层。 配置链路不算复杂,但硬件确认、内存预留、迁移限制这三关必须提前想清楚,下面按“硬件确认→配置步骤→注意事项”顺序讲透。
虚拟机FC直通配置步骤:先确认硬件支持
很多人在vSphere客户端里找“直通”按钮,却发现设备是灰的,说实话,这个环节最容易翻车,业内专家指出,FC直通配置失败多半发生在硬件支持确认阶段,而不是后面添加设备的时候。
FC直通和虚拟磁盘哪个好?
- 虚拟磁盘方案:宿主机统一管理存储,支持快照、vMotion、DRS,缺点很明显,I/O路径经过虚拟化层,在高并发、低延迟场景下会有额外CPU开销。
- FC直通方案:虚拟机独占物理HBA卡,延迟更低,CPU占用更少,适合数据库、关键业务应用,缺点是一旦直通,虚拟机的迁移和快照能力基本报废。
- 从成本角度看,直通省下了虚拟化层的性能损耗,但需要每台虚拟机配一块HBA卡,硬件投入更高,如果追求运维便捷,用虚拟磁盘;如果存储性能是瓶颈,FC直通更值得。
硬件兼容性检查
- CPU和主板:必须开启Intel VT-d或AMD IOMMU,在服务器BIOS里找“Intel Virtualization Technology for Directed I/O”或“AMD IOMMU”选项,确认状态为“Enabled”,多数服务器主板都支持,但部分老型号或台式机主板会屏蔽该选项。
- FC HBA卡:推荐QLogic或Emulex的独立PCIe HBA卡,板载FC控制器在多数情况下直通有问题,特别是集成的FCoE适配器。
- ESXi版本:需要和HBA驱动匹配,QLogic对应qla2xxx驱动,Emulex对应lpfc驱动,在ESXi主机上执行
esxcli software profile get查看当前版本,再对照驱动兼容列表。 - vSphere Client中的状态:登录vSphere Client,进入主机的“配置”页面,点击“PCI设备”,如果列表中有你的FC HBA且状态显示“支持直通”,说明可以继续。
ESXi虚拟机FC直通配置详细步骤
下面以VMware ESXi 7.0及以上版本为例,给出直通配置的完整操作路径。
第一步:启用PCI直通
- 在vSphere Client中,选择目标主机,进入“配置”>“PCI设备”。
- 找到FC HBA硬件,点击“启用直通”。
- 系统会提示主机需要进入维护模式并重启,确认后等待主机恢复。
- 重启完成后,在“PCI设备”列表中该设备状态变为“直通已启用”。
这里有个小建议:如果主机上有两块HBA,先只启用一块做测试,能降低后续排查难度。
第二步:添加PCI设备到虚拟机
- 关闭虚拟机电源。
- 右键虚拟机,选择“编辑设置”。
- 点击“添加其他设备”,选择“PCI设备”。
- 在“新PCI设备”下拉框中选择已启用直通的FC HBA。
- 必须勾选“保留所有内存(全部锁定)”,这一步直接决定虚拟机能否启动。
第三步:设置虚拟机参数和启动顺序
- 进入“虚拟机选项”>“高级”>“配置参数”,添加参数
pciPassthru.use64bitMMIO,值设为TRUE,如果HBA卡需要64位MMIO空间,这个参数能避免内存映射冲突。 - 如果虚拟机系统安装在FC LUN上,需要调整BIOS启动顺序,确保从光纤存储引导,在虚拟机BIOS中,选择从QLogic或Emulex的Option ROM引导。
第四步:安装驱动并验证链路
- 启动虚拟机,登录操作系统。
- 在Windows中打开设备管理器,确认是否识别到FC HBA,在Linux中执行
lspci | grep -i fibre查看。 - 安装HBA厂商提供的驱动,Windows需要去QLogic或Emulex官网下载,Linux多数发行版已内置驱动。
- 使用系统自带的存储工具扫描FC LUN,Windows下进入磁盘管理,Linux下执行
lsblk。 - 验证多路径是否生效,如果直通了两个HBA,需要配置MPIO或DM-Multipath,否则链路冗余形同虚设。
FC直通注意事项:内存预留与迁移限制
内存预留是硬门槛
行业共识认为,任何PCIe直通设备都需要虚拟机预留全部内存,FC HBA也不例外,如果不预留内存,虚拟机会直接报“内存预留不足”错误,根本无法启动,这意味着宿主机需要给这台虚拟机腾出整块内存,不能开启高内存超配。
迁移和快照别想了
- 使用FC直通的虚拟机无法进行vMotion迁移,原因很简单,物理HBA卡无法跟着虚拟机“漂移”。
- 快照、复制、DRS全部受限,对这台虚拟机做快照会失败,或者快照后直通设备失效。
- 如果主机需要维护,只能先关闭虚拟机,再执行冷迁移到另一台主机,整个过程需要停机。
多路径与链路冗余
- 建议至少直通两块FC HBA给同一台虚拟机,避免单卡故障导致存储中断。
- 多路径配置在虚拟机内部完成,宿主机不参与,Linux下安装multipath-tools,Windows下启用MPIO功能。
- Zoning和LUN Masking配置需要基于物理HBA的WWPN,因为直通后虚拟机直接使用物理卡身份。
常见坑和排查方法
- 虚拟机启动后HBA卡告警:检查HBA固件版本,部分旧固件不兼容直通模式。
- 看不到FC LUN:先确认虚拟机内驱动是否加载,再用
fcinfo或存储管理工具查看是否建立了会话。 - 性能异常波动:尝试调整虚拟机的CPU亲和性,让处理中断的物理CPU与虚拟CPU绑定,能降低延迟。
其他平台配置对比:KVM和Hyper-V的FC直通
VMware之外,KVM平台也可以通过VFIO实现FC HBA直通,核心步骤是解绑HBA原驱动,绑定到vfio-pci驱动,然后在虚拟机XML中添加<hostdev>设备节点,KVM的内存预留策略比VMware灵活,但同样需要开启IOMMU。
Hyper-V则走DDA(Discrete Device Assignment)路径,在PowerShell中用Dismount-VmHostDevice和Add-VMAssignableDevice命令完成,不过Hyper-V对FC HBA的兼容性要求更严格,部分老卡无法通过DDA验证。
Q&A:虚拟机FC直通常见问题
问题1:FC直通和NPIV虚拟端口到底选哪个?
FC直通是物理HBA独占给一台虚拟机,性能最接近物理机,但一台卡只能服务一台虚拟机,NPIV是在一个物理HBA上划分多个虚拟端口,每台虚拟机拿到一个虚拟WWPN,共享同一块物理卡,NPIV支持更多虚拟机,但性能隔离弱于直通,且要求存储和交换机支持NPIV。
问题2:直通FC HBA后虚拟机无法启动,卡在“正在启动”阶段怎么办?
最常见原因是内存预留没有生效,回到虚拟机编辑设置,将内存调整为“全部保留”并重新启动,如果仍然失败,确认主机BIOS中的VT-d/AMD IOMMU是否开启,以及HBA卡是否处于“直通已启用”状态,在ESXi的“系统日志”中搜索pcipassthru相关关键字,能快速定位失败原因。
问题3:在直通FC HBA的虚拟机内如何配置多路径?
在Linux中安装multipath-tools,编辑/etc/multipath.conf启用multipathd,然后执行multipath -ll检查路径是否聚合,在Windows中,打开“MPIO”属性,添加“添加对FC设备的支持”,重启后进入磁盘管理确认多路径显示为“活动/已优化”,配置完成后,在存储侧把两个HBA的WWPN加入同一Zoning,确保两端都能正确识别。
FC直通能榨干FC存储的每一分性能,但代价是失去虚拟化的灵活特性。 部署前先确认硬件和内存预算,再动手配置。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/773396.html


