Switchless 16G FC homelab: RHEL 8 पर qla2xxx qlini_mode=disabled को नज़रअंदाज़ किया जाता है, कोई target LUNs नहीं
घर पर एक switchless Fibre Channel setup जोड़ रहा हूं: एक box storage रखता है और उसे FC target की तरह काम करना है, बाकी दो सादे initiators हैं। बीच में कोई FC switch नहीं, बस HBAs के बीच सीधी cables।
Hardware:
- storage box में QLogic QLE2694, वो जिसे target होना चाहिए
- दोनों initiator boxes में QLogic QLE2690 और QLE2692
- FTLF8529P4BCV-QL 16G SFP+ LC optics, QLogic coded, 850 nm short reach
- ports के बीच 3 m OM3 multimode LC-LC cords
optical side मुझे बिल्कुल कोई परेशानी नहीं देता। ports up होते हैं, cards एक-दूसरे को देखते हैं, जब तक दोनों सिरे initiators रहते हैं सब कुछ ठीक चलता है। समस्या storage box को target mode में flip करने पर है। मैंने module option लगाया, initramfs दोबारा बनाया, reboot किया, और parameter बस लागू ही नहीं होता:
# cat /etc/modprobe.d/qla2xxx.conf
options qla2xxx qlini_mode="disabled"
# after rebuilding the initramfs and rebooting
# cat /sys/module/qla2xxx/parameters/qlini_mode
enabled
targetcli ठीक से start होता है, पर initiator mode अभी भी on रहने से कोई FC fabric ही नहीं जिस पर कोई backstore टांगा जाए, तो कुछ भी export नहीं होता और initiators को एक खाली link दिखता है।
मैंने जो आज़माया:
- option /etc/modprobe.d में और, अलग से, kernel command line पर
- हर बदलाव के बाद initramfs और boot configuration दोबारा बनाना
- storage box में कौन सा card बैठता है वो बदलना, कहीं यह QLE2694 का quirk तो नहीं
क्या यह उस distro पर driver build की कोई बात है जो मैं चला रहा हूं, जो RHEL 8 based है, या मुझसे यह option लागू करने में कोई step छूट रहा है?
Comments 4
तुमसे कोई step नहीं छूट रहा, बात यह है कि जहां तुम इसे चला रहे हो वहां वो option काम कर ही नहीं सकता। RHEL 8 और उसके बाद वाले एक ऐसा qla2xxx build देते हैं जिसमें initiator mode disable करने की क्षमता निकाल दी गई है, तो
qlini_mode="disabled"जहां भी डालो वो नज़रअंदाज़ हो जाता है और card initiator ही बना रहता है। QLE2694, optics या fibre में कुछ भी गलत नहीं है।बाहर निकलने के दो रास्ते: target host को किसी ऐसे distribution पर चलाओ जो qla2xxx में target mode अभी भी रखता हो, या module खुद build करो, जो मैं data रखने वाले किसी box पर नहीं करूंगा। मैं पहले रास्ते पर गया और target को Fedora Server 39 पर रखा।
उसके बाद sequence वही बोरिंग वाला है:
modprobe.d में, फिर initramfs और GRUB configuration दोबारा बनाओ, reboot करो, और ports को इससे check करो
targetcli और sysfsutils install करो, FC ports enable करो, फिर अपने NVMe से LVM volumes को block backstores की तरह map करो, उन्हें port WWNs से bind करो और हर initiator को अपना ACL दो। initiator boxes बिल्कुल जैसे हैं वैसे ही रह सकते हैं, restriction सिर्फ target side पर काटता है।
बाद में यह करने वाले किसी के लिए एक खरीदारी वाली बात: Dell branded QLE2690, QLE2692 और QLE2694 को prefer करो, क्योंकि उनकी documentation target mode को असल में cover करती है, जिससे काफी सारा अंदाज़ा लगाना बच जाता है।
कोई अंदाज़ा लगाए उससे पहले दो चीज़ें पक्की कर लें।
पहली, तुम्हारा qla2xxx असल में आता कहां से है: वो in-box module जो distro kernel के साथ आता है, या कोई out-of-tree build जो तुमने vendor से लेकर खुद compile किया? RHEL 8 base पर ये दोनों यहां बहुत अलग व्यवहार करते हैं, और यह modprobe syntax से कहीं ज्यादा मायने रखता है।
दूसरी, storage box से
systool -c fc_host -vपोस्ट करो। यह हमें बताता है कि ports असल में up होते हैं या नहीं और किस speed पर, ताकि हम driver वाले सवाल को physical वाले से अलग कर सकें।दोनों सिरों पर optics भी confirm करो। FTLF8529P4BCV-QL एक 850 nm short reach part है, तो इसे multimode fibre चाहिए - single mode पर तुम्हें बिल्कुल कुछ नहीं मिलेगा, और target mode की बात करने से पहले मैं इसे rule out करना चाहता हूं।
In-box driver: distro repositories से सीधा stock kernel और stock qla2xxx, vendor से कुछ नहीं लिया, हाथ से कुछ compile नहीं किया।
systool -c fc_host -vQLE2694 पर दोनों ports को 16G पर online दिखाता है, और दोनों सिरों पर 3 m OM3 cords के ऊपर वही FTLF8529P4BCV-QL modules हैं, तो physical layer सच में मुद्दा नहीं है - initiator के तौर पर सब कुछ काम करता है।हर rebuild और reboot के बाद sysfs अब भी qlini_mode को enabled रिपोर्ट करता है, चाहे मैं इसे modprobe.d में set करूं या kernel command line पर। sysfsutils और targetcli installed हैं, targetcli खुद बिना किसी शिकायत के start होता है, बस उसमें configure करने को FC जैसा कुछ है ही नहीं।
target host को किसी दूसरे distro पर ले जाते वक्त साथ रखने लायक एक जुड़ा हुआ trap: पक्का करो कि parameter वहां पहुंचे जहां उस box का boot path उसे असल में पढ़ता है।
इसका classic version एक ऐसा Proxmox host है जो अपने optics accept नहीं कर रहा था। admin ने
ixgbe.allow_unsupported_sfp=1को modprobe.d में डाला, फिर GRUB config में, और किसी से कुछ नहीं हुआ, क्योंकि machine EFI से boot होती है और GRUB को कभी छूती ही नहीं। वहां parameter को/etc/kernel/cmdlineमें जाना था, उसके बादpve-efiboot-tool refresh।तुम्हारे जैसा ही failure signature: config file कुछ कहती है, sysfs कुछ और कहता है, और तुम hardware पर शक करते हुए एक शाम गंवा देते हो। host चाहे जो भी हो, हर reboot के बाद value को
/sys/module/...से वापस पढ़ो और edit की गई file की बजाय उस पर भरोसा करो।