CodingBox Q&A Ask question

QLE2692光口链路正常,但Proxmox VE 6.2看不到任何LUN:qla2xxx register_localport failed

Asked Active Viewed 53 AI translation from English
3

正在把一对虚拟化主机迁移到光纤通道存储上,其中一台主机死活不肯呈现任何一个LUN,而同样这块硬件直通给虚拟机之后却能正常工作。

  • QLogic QLE2692,基于ISP2722的16/32Gb FC卡,两个口都接了线
  • 对端是富士通Eternus DX100 S5
  • Proxmox VE 6.2主机,内核自带qla2xxx,内核版本5.4
  • 同一块卡直通给这台主机上的一台Windows虚拟机

在主机上,端口能正常起来,光口也有光,但始终没有出现任何块设备。驱动每次初始化时dmesg里都有这个:

qla2xxx: register_localport failed: ret=ffffffea
WARNING in qla_nvme_register_hba

我已经做过的:

  • 两个端口之间互换了SFP+模块和跳线,完全没变化
  • 把整块卡直通给一台Windows虚拟机:DX100的LUN立刻就出现了,说明布线、光模块和存储阵列那一侧显然都没问题
  • 查过lspci -k,qla2xxx绑定在两个功能上,没有别的驱动在抢这块卡

我这边根本没打算跑NVMe over FC,只是想在主机上看到普通的FC LUN。是应该继续折腾光模块,还是这明显就是主机驱动的问题?

Comments 5

在你再去动光模块之前,先把枯燥但必要的细节摆出来。贴出完整的dmesg段落,而不是那两行:从probe开始驱动打印的所有内容,一直到那条warning为止。仅凭那条register行,谁也说不清端口到底是完全起来了,还是在初始化中途就挂了。

另外说说这个阵列有没有以NVMe命名空间(namespace)的形式呈现任何东西,还是只有普通的SCSI LUN。你贴的那条消息来自驱动的NVMe那一半,如果这套环境里根本没有任何命名空间,那已经能大大缩小故障范围,也能说明为什么后面整条链路都跟着出问题。

2 South KoreanetrunnerKR Show original (English) AI translation

哪儿都没有命名空间:这个阵列只提供普通的SCSI FC LUN,这个光纤网络上没有任何东西说NVMe,这也正是这条消息一开始就让我觉得奇怪的原因。

dmesg那段内容又短又枯燥。驱动加载,两个功能都干净地完成probe,端口起来,然后register_localport failed: ret=ffffffea出现,紧跟着就是WARNING in qla_nvme_register_hba。中间没有超时,没有复位,也没有任何跟fabric相关的信息。每次开机两个端口都会重复出现这个,之后主机上一个SCSI设备都不会出现。同样这块卡装同样这些模块,在直通虚拟机里立刻就能看到LUN。

4 Chinacorebyte73CN Show original (English) AI translation

别再盯着收发模块看了,这是主机驱动的问题。内核5.4自带的qla2xxx在适配器启动过程中NVMe-FC注册失败,这正是你看到的那条register_localport failed: ret=ffffffea,而且它会让FC端口连别的功能也一起用不了。这就是为什么你压根没在任何地方要求NVMe-FC,普通SCSI LUN却始终不出现。直通能work,是因为Windows驱动跟这段代码完全没关系。

实际可行的办法是换一个内核版本。同样这些卡在Proxmox 6.1配内核5.3上表现正常,在5.8上也正常,所以你可以从这两个里挑一个适合你升级计划的,启动它,确认dmesg里那条注册warning消失了,再重新扫描。对FC HBA来说,值得养成一个习惯:怀疑光模块之前先grep一下dmesg里驱动侧的错误,因为一个在初始化阶段就挂掉的驱动,盯着存储阵列看的时候,和一条真正断掉的链路看起来一模一样。

1 Franceedgenode83FR Show original (English) AI translation

就是这个问题。主机启动5.8之后,dmesg里那条注册warning消失了,DX100的LUN在两条路径上都正常枚举出来了,没有再改任何东西——同样的线缆、同样的模块、同样的zoning。为了完整起见,我又把第二个节点放回6.1配内核5.3,那边也能正常工作,所以这个问题在这套硬件上确实就是局限在5.4上。卡和光模块完全没动,我之前已经订的备用模块也留着有用了。

3 Chinacorebyte73CN Show original (English) AI translation

从另一个角度确认一下同样的规律:我们在Proxmox 7.1、内核5.13上遇到了一模一样的问题,所以受影响的不止5.4,任何一次内核变动之后都值得检查一下这个。

顺便说一句,Emulex也好不到哪去。两个已经跑了好几个月没动过的LPe31000/LPe32000端口,内核升级到5.15.64、接着5.15.74之后就再也看不到任何LUN,日志里是Enable MI Mailbox x9b (x1/xbf) failed, rc:x10 mi:x2和CMF is disabled,之后一个目标都找不到。线缆和光模块当然完全没动过。这个问题出在lpfc里,是5.15.60之后的内核带来的。有两种办法对大家都有效:用proxmox-boot-tool kernel pin 5.15.60-2-pve把启动内核锁定在还能正常工作的版本,或者如果你能接受离开5.15分支,就跳到可选的5.19内核。修复本来应该落地在5.15.77,但我一直没顾上去试那个版本。重点是,维护之后如果FC链路看起来断了,先看看你启动的是哪个内核,再去考虑订购替换模块。

1 Spainqsfpwolf31ES Show original (English) AI translation
Log in to comment. Log in