QLE2692 optics link up हैं पर Proxmox VE 6.2 कोई LUN present नहीं करता: qla2xxx register_localport failed
एक जोड़ी hypervisors को Fibre Channel storage पर shift कर रहा हूं, और एक host एक भी LUN present करने से मना कर देता है जबकि बिल्कुल वही hardware काम करता है जब card को VM के हवाले कर दिया जाए।
- QLogic QLE2692, ISP2722-based 16/32Gb FC, दोनों ports cabled
- दूसरी तरफ़ Fujitsu Eternus DX100 S5
- Proxmox VE 6.2 host, kernel 5.4 पर in-kernel qla2xxx
- उसी host पर वही card एक Windows VM को passthrough किया हुआ
Host पर ports up हो जाते हैं और optics में light दिखती है, पर कोई block device कभी नहीं दिखता। driver जब भी initialise होता है dmesg में यह आता है:
qla2xxx: register_localport failed: ret=ffffffea
WARNING in qla_nvme_register_hba
अब तक जो कर चुका हूं:
- दोनों ports के बीच SFP+ modules और patch leads बदल कर देखे, कोई फ़र्क़ नहीं पड़ा
- पूरा card एक Windows VM को passthrough किया: DX100 के LUNs वहां तुरंत दिख जाते हैं, यानी cabling, optics और array साइड साफ़ तौर पर ठीक हैं
lspci -kcheck किया, qla2xxx दोनों functions से bind है और card के लिए कोई और चीज़ नहीं लड़ रही
मैं यहां NVMe over FC चलाने की कोशिश भी नहीं कर रहा, बस host पर आम FC LUNs चाहिए। क्या optics को और खोलना फ़ायदेमंद रहेगा, या यह सीधा-सीधा host driver की problem है?
Comments 5
optics को फिर से हाथ लगाने से पहले, बोरिंग details टेबल पर रख दो। उन दो लाइनों की जगह पूरा dmesg block post करो: probe से लेकर warning तक driver जो कुछ भी print करता है, सब। सिर्फ़ registration वाली लाइन से यह पता नहीं चलता कि ports पूरी तरह up हुए या init के बीच में ही मर गए।
और यह भी बताओ कि array कुछ भी NVMe namespaces के तौर पर present कर रहा है या सिर्फ़ plain SCSI LUNs। जो message तुमने paste किया वह driver के NVMe वाले हिस्से से आता है, तो अगर इस पूरे setup में कहीं भी कोई namespace नहीं है, तो इसी से पता चल जाता है कि क्या fail हो रहा है और बाकी stack उसके साथ क्यों जा रहा है।
कहीं भी कोई namespace नहीं है: array सिर्फ़ plain SCSI FC LUNs serve करता है, इस fabric पर कुछ भी NVMe नहीं बोलता, यही वजह है कि वह message मुझे शुरू से ही अजीब लगा था।
dmesg block छोटा और boring है। driver load होता है, दोनों functions साफ़-सुथरे probe होते हैं, ports up हो जाते हैं, और फिर
register_localport failed: ret=ffffffeaआता है और ठीक पीछेWARNING in qla_nvme_register_hba। बीच में न कोई timeout, न कोई reset, न fabric के बारे में कुछ। यह हर single boot पर दोनों ports के लिए दोहराता है, और इसके बाद host पर एक भी SCSI device नहीं दिखता। वही card वही modules के साथ passthrough VM में LUNs फ़ौरन दिख जाते हैं।transceivers को देखना बंद करो, यह host driver की बात है। 5.4 पर in-kernel qla2xxx adapter को up लाते वक़्त NVMe-FC registration में fail होता है, जो ठीक वही
register_localport failed: ret=ffffffeaहै जो तुम्हें दिख रहा है, और इससे FC ports बाकी हर चीज़ के लिए भी बेकार हो जाते हैं। यही वजह है कि तुम्हारे plain SCSI LUNs कभी नहीं दिखते जबकि तुमने कहीं NVMe-FC मांगा ही नहीं। Passthrough इसलिए काम करता है क्योंकि Windows driver का इस code से कोई लेना-देना नहीं।practical रास्ता है अलग kernel। यही cards Proxmox 6.1 पर kernel 5.3 के साथ ठीक चलते हैं, और 5.8 पर भी ठीक चलते हैं, तो अपनी upgrade plans के हिसाब से जो भी फ़िट बैठे उसे चुनो, उसे boot करो, चेक करो कि dmesg से registration warning गायब है और फिर rescan करो। FC HBAs के साथ सामान्य तौर पर यह आदत बना लेने लायक है: module पर शक करने से पहले driver-side errors के लिए dmesg grep करो, क्योंकि init में मरने वाला driver बिल्कुल dead link जैसा ही दिखता है जब तुम storage array को घूर रहे हो।
यही वजह थी। host पर 5.8 boot किया, dmesg से registration warning गायब हो गई और DX100 के LUNs दोनों paths पर enumerate हो गए, बिना किसी और बदलाव के - वही cables, वही modules, वही zoning। पूरी तरह पक्का करने के लिए दूसरे node को वापस 6.1 पर kernel 5.3 के साथ डाला और वहां भी काम कर गया, यानी यह टूट-फूट सच में इस hardware पर सिर्फ़ 5.4 तक सीमित है। Card और optics बिल्कुल जैसे थे वैसे ही रहते हैं, और जो spare modules पहले से order कर रखे थे वे भी मेरे पास रह जाते हैं।
अलग angle से इसी pattern की पुष्टि: हमें ठीक यही Proxmox 7.1 पर kernel 5.13 के तहत मिला, तो असर सिर्फ़ 5.4 तक सीमित नहीं है और किसी भी kernel move के बाद इसे चेक करना समझदारी है।
वैसे Emulex भी इससे बेहतर नहीं है। दो LPe31000/LPe32000 ports जो महीनों से बिना छेड़े चल रहे थे, kernel 5.15.64 और फिर 5.15.74 पर जाने के बाद कोई LUN देखना बंद कर दिया, log में
Enable MI Mailbox x9b (x1/xbf) failed, rc:x10 mi:x2औरCMF is disabledके साथ, और उसके बाद एक भी target नहीं मिला। Cables और optics को छुआ तक नहीं गया, ज़ाहिर है। यह lpfc में बैठा हुआ मसला है और 5.15.60 के बाद वाले kernels के साथ आया। लोगों के लिए दो रास्ते काम आए: boot kernel को वहीं रोक कर रखो जहां यह अब भी चलता था,proxmox-boot-tool kernel pin 5.15.60-2-pveसे, या अगर 5.15 branch छोड़ना तुम्हें मंज़ूर है तो opt-in 5.19 kernel पर कूद जाओ। fix 5.15.77 में आने वाला था, पर मैंने वह build try करने का मौका कभी नहीं निकाला। बात बस इतनी है कि जब maintenance के ठीक बाद कोई FC link dead लगे, तो replacement modules order करने से पहले यह देख लो कि तुम किस kernel में boot हुए थे।