QLE2692 lên link quang nhưng Proxmox VE 6.2 không hiện LUN nào: qla2xxx register_localport failed
Đang chuyển một cặp hypervisor sang dùng storage Fibre Channel, và một host nhất quyết không hiện ra dù chỉ một LUN trong khi đúng phần cứng đó lại chạy được khi card được pass qua cho một VM.
- QLogic QLE2692, nền ISP2722, FC 16/32Gb, cả hai port đều đã cắm cáp
- Fujitsu Eternus DX100 S5 ở đầu bên kia
- host Proxmox VE 6.2, qla2xxx in-kernel trên kernel 5.4
- cùng con card đó được pass through cho một VM Windows trên chính host này
Trên host thì port lên và optic có ánh sáng, nhưng không có block device nào xuất hiện. dmesg luôn hiện dòng này mỗi lần driver khởi tạo:
qla2xxx: register_localport failed: ret=ffffffea
WARNING in qla_nvme_register_hba
Những gì đã làm:
- đổi module SFP+ và dây patch giữa hai port, không thay đổi gì cả
- pass toàn bộ card qua cho một VM Windows: LUN của DX100 hiện ra ngay lập tức ở đó, nên cáp, optic và phía array rõ ràng đều ổn
- kiểm tra
lspci -k, qla2xxx đã bind vào cả hai function và không có gì khác tranh giành con card này
Tôi thậm chí không định chạy NVMe over FC ở đây, chỉ muốn có LUN FC bình thường trên host thôi. Có đáng để mổ xẻ thêm phần optic không, hay đây chắc chắn là vấn đề driver phía host?
Comments 5
Trước khi động vào optic thêm lần nữa, hãy đưa hết các chi tiết khô khan lên bàn đã. Đăng cả khối dmesg thay vì chỉ hai dòng đó: mọi thứ driver in ra từ lúc probe trở đi, cho tới và bao gồm cả cái warning. Riêng dòng register không cho ai biết được port có lên xong hay chết giữa chừng lúc init.
Và cho biết array có đang trình ra bất kỳ thứ gì dạng NVMe namespace không, hay chỉ toàn LUN SCSI thường. Cái message bạn dán ra đến từ nửa NVMe của driver, nên nếu không có namespace nào ở đâu trong hệ thống này cả, điều đó đã thu hẹp được cái gì đang lỗi và vì sao phần còn lại của stack cũng bị kéo theo.
Không có namespace nào cả: array chỉ phục vụ LUN SCSI FC thường, không có gì trên fabric này nói NVMe, đó chính xác là lý do cái message này ngay từ đầu đã có vẻ lạ với tôi.
Khối dmesg thì ngắn và khô khan. Driver load lên, cả hai function probe sạch sẽ, port lên, rồi
register_localport failed: ret=ffffffeaxuất hiện kèm ngay sau làWARNING in qla_nvme_register_hba. Không timeout, không reset, không có gì về fabric ở giữa. Nó lặp lại trên cả hai port ở mọi lần boot, và sau đó không một SCSI device nào hiện ra trên host. Cùng con card đó với cùng các module trong VM passthrough thì thấy LUN ngay lập tức.Đừng nhìn vào transceiver nữa, đây là driver phía host. qla2xxx in-kernel trên 5.4 thất bại khi đăng ký NVMe-FC lúc bật adapter lên, đúng là cái
register_localport failed: ret=ffffffeabạn đang thấy, và nó khiến port FC không dùng được cho bất cứ việc gì khác luôn. Đó là lý do LUN SCSI thường của bạn chẳng bao giờ xuất hiện dù bạn chưa từng yêu cầu NVMe-FC ở đâu cả. Passthrough chạy được vì driver Windows chẳng liên quan gì đến đoạn code này.Hướng thực dụng là đổi sang kernel khác. Cùng những con card đó chạy tốt trên Proxmox 6.1 với kernel 5.3, và cũng chạy tốt trở lại trên 5.8, nên chọn cái nào hợp với kế hoạch nâng cấp của bạn, boot vào, kiểm tra xem cái warning đăng ký đã biến mất khỏi dmesg chưa rồi rescan. Một thói quen đáng xây dựng với HBA FC nói chung: grep dmesg tìm lỗi phía driver trước khi nghi ngờ module, vì một driver chết lúc init trông y hệt một link chết khi bạn đang nhìn vào storage array.
Đúng là nó đấy. Boot 5.8 trên host, cái warning đăng ký biến mất khỏi dmesg và LUN của DX100 được liệt kê trên cả hai path mà không cần thêm thay đổi gì, cùng cáp, cùng module, cùng zoning. Để chắc chắn, tôi đưa một node thứ hai về lại 6.1 với kernel 5.3 và nó cũng chạy tốt ở đó, nên lỗi này thực sự chỉ giới hạn ở 5.4 trên phần cứng này. Card và optic giữ nguyên y như cũ, và tôi vẫn giữ được các module dự phòng đã lỡ đặt hàng.
Xác nhận thêm hiện tượng này từ một góc khác: chúng tôi gặp đúng chuyện này trên Proxmox 7.1 dưới kernel 5.13, nên 5.4 không phải bản duy nhất bị ảnh hưởng, và đáng kiểm tra lại sau bất kỳ lần đổi kernel nào.
Nhân tiện, Emulex cũng chẳng khá hơn. Hai port LPe31000/LPe32000 chạy yên ổn không đụng vào suốt nhiều tháng bỗng ngừng thấy LUN nào sau khi kernel lên 5.15.64 rồi 5.15.74, kèm
Enable MI Mailbox x9b (x1/xbf) failed, rc:x10 mi:x2vàCMF is disabledtrong log, sau đó không tìm thấy một target nào. Cáp và optic dĩ nhiên không đụng tới. Lỗi đó nằm trong lpfc và xuất hiện từ các kernel sau 5.15.60. Có hai cách thoát ra từng có hiệu quả với người dùng: giữ nguyên kernel boot ở bản còn chạy được bằngproxmox-boot-tool kernel pin 5.15.60-2-pve, hoặc nhảy sang kernel 5.19 dạng opt-in nếu việc rời khỏi nhánh 5.15 chấp nhận được với bạn. Bản fix lẽ ra sẽ nằm trong 5.15.77, nhưng tôi chưa kịp thử bản đó. Vấn đề là, khi một link FC trông như chết ngay sau bảo trì, hãy xem đã boot vào kernel nào trước khi bắt đầu đặt mua module thay thế.