HP SAS 擴展器將所有驅動器映射到插槽 id 0
我最近買了一個二手的6Gbps 24埠HP SAS擴展器(468406-B21/487738-001),因為它便宜,想必有高度的兼容性。不幸的是,我無法讓它與多個磁碟一起工作,因為它顯然將所有磁碟映射到插槽 0,從而混淆了 RAID 控制器和 HBA。
該卡帶有韌體 2.08,升級到最新版本(2.10)並沒有改變任何東西。
當我將它連接到 PERC H700、H310 或 LSI 9260 時,所有磁碟都映射到插槽 0,因此無法區分它們。它還混淆了 RAID 控制器——如果我移除一個磁碟,它可能會失去兩個磁碟等等,甚至可能無法啟動。
例如,連接了兩個 SATA 磁碟:
------------------------------------------------------------------------- EID:Slt DID State DG Size Intf Med SED PI SeSz Model Sp ------------------------------------------------------------------------- 2:0 3 UGood - 111.25 GB SATA HDD N N 512B ST9120822AS U 2:0 5 UGood - 185.75 GB SATA HDD N N 512B TOSHIBA MK2035GSS U -------------------------------------------------------------------------
此處,兩個磁碟都映射到機櫃 2 的 0 槽位,在後續命令中無法區分。在將擴展器連接到“啞”HBA(例如基於 LSI-9211 的控制器)時,我遇到了類似的問題。
有大量報告稱人們使用此擴展器的韌體版本與我完全相同,沒有任何問題,並且所有控制器都可以與我嘗試過的其他背板(基於 Supermicro LSI 的背板)一起正常工作,所以我想知道是我做錯了什麼還是卡壞了。
連接兩個磁碟時顯示 H700 的 termlog輸出的範例如下所示:
02/04/18 3:09:34: iopiEvent: EVENT_SAS_DISCOVERY 02/04/18 3:09:34: DM_HandleDiscEvent: Discovery started on Port 0 02/04/18 3:09:34: iopiEvent: MPI2_EVENT_SAS_TOPOLOGY_CHANGE_LIST 02/04/18 3:09:34: DM_HandleTopologyChgEvnt: PhysicalPort=0 NumberOfPhys=x25 NumEntries=x0c StartPhy=xc 02/04/18 3:09:34: ExpStatus=x03 PhysicalPort=0 EnclosureHandle=x0002 Expander devHandle=x0009 - Exp RESPONDING 02/04/18 3:09:34: Phy changed - phy 0c devHandle 0000 linkRate 00 curLinkRate 0 02/04/18 3:09:34: Phy changed - phy 0f devHandle 0000 linkRate 00 curLinkRate 0 02/04/18 3:09:34: Device ADDED - phy x14 devHandle x000c parentDevHdl x0009 phyNum x14 slot x37 deviceInfo=x00000081 sasAddr=5001438022c783d4 02/04/18 3:09:34: Device ADDED - phy x17 devHandle x000d parentDevHdl x0009 phyNum x17 slot x34 deviceInfo=x00000081 sasAddr=5001438022c783d7 02/04/18 3:09:34: DM_DevMgrIsChipInit 0 State 400 02/04/18 3:09:35: iopiDiscoveryComplete SubSystem 2 Count 9 InitState 1 02/04/18 3:09:35: iopiEvent: EVENT_SAS_DISCOVERY 02/04/18 3:09:35: DM_HandleDiscEvent: Discovery Completed on Port 0 02/04/18 3:09:36: DM_DevSSUCallback: DevId x0006 errCount 0 Retry 0 Status 2 02/04/18 3:09:36: DM_DevSSUCallback: SENSE Len 12 ResponseCode 70 senseKey 6 asc 29 ascq 0 02/04/18 3:09:36: DM_DevMgrIsChipInit 0 State 400 02/04/18 3:09:38: DM_DevSSUCallback: DevId x0007 errCount 0 Retry 0 Status 2 02/04/18 3:09:38: DM_DevSSUCallback: SENSE Len 12 ResponseCode 70 senseKey 6 asc 29 ascq 0 02/04/18 3:09:38: devId 6 isn't directly attached 02/04/18 3:09:38: devId 6 - slot num - 6 02/04/18 3:09:38: devId 7 isn't directly attached 02/04/18 3:09:38: devId 7 - slot num - 7 02/04/18 3:09:38: DM_DevNotifyRAID: Notify Done. Check for Removal 02/04/18 3:09:38: gDevInfo=842360a0, size=160 02/04/18 3:09:38: Total Device = 3 02/04/18 3:09:38: PD Flags State Type Size S N Vendor Product Rev P C ID SAS Addr Port Phy DevH BFw BRev 02/04/18 3:09:38: --- -------- ----- ---- -------- - - -------- ---------------- ---- - - -- ---------------- ---- --- ---- ---- ---- 02/04/18 3:09:38: 2 01400005 00020 0d 0 0 0 0 HP HP SAS EXP Card 2.10 0 0 0a 5001438022c783e5 00 24 0a NA NA 02/04/18 3:09:38: 6 f1400005 00020 00 1749f1af 1 1 0 ATA TOSHIBA MK2035GS 1D 0 0 0c 5001438022c783d4 00 14 0c NA NA 02/04/18 3:09:38: 7 f1400005 00020 00 df94baf 1 1 0 ATA ST9120822AS D 0 0 0d 5001438022c783d7 00 17 0d NA NA 02/04/18 3:09:38: 100 00400005 00020 03 0 0 0 0 LSI SMP/SGPIO/SEP 4651 0 0 ffff 0 00 ff 00 NA NA 02/04/18 3:09:38: PhyId 4 Sas 5001438022c783e6 Type 2 IsSata 0, Smp 1:1 02/04/18 3:09:38: PhyId 5 Sas 5001438022c783e6 Type 2 IsSata 0, Smp 1:1 02/04/18 3:09:38: PhyId 6 Sas 5001438022c783e6 Type 2 IsSata 0, Smp 1:1 02/04/18 3:09:38: PhyId 7 Sas 5001438022c783e6 Type 2 IsSata 0, Smp 1:1 02/04/18 3:09:38: PhyId 0 Sas 0 Type 0 IsSata 0, Smp 0:0 02/04/18 3:09:38: PhyId 0 Sas 0 Type 0 IsSata 0, Smp 0:0 02/04/18 3:09:38: PhyId 0 Sas 0 Type 0 IsSata 0, Smp 0:0 02/04/18 3:09:38: PhyId 0 Sas 0 Type 0 IsSata 0, Smp 0:0 02/04/18 3:09:38: Load Balance Statistics Path0PDs 3 Path1PDs 0 02/04/18 3:09:38: EVT#07666-02/04/18 3:09:38: 91=Inserted: PD 06(e0x02/s0) 02/04/18 3:09:38: EVT#07667-02/04/18 3:09:38: 247=Inserted: PD 06(e0x02/s0) Info: enclPd=02, scsiType=0, portMap=00, sasAddr=5001438022c783d4,0000000000000000 02/04/18 3:09:38: EVT#07668-02/04/18 3:09:38: 91=Inserted: PD 07(e0x02/s0) 02/04/18 3:09:38: EVT#07669-02/04/18 3:09:38: 247=Inserted: PD 07(e0x02/s0) Info: enclPd=02, scsiType=0, portMap=00, sasAddr=5001438022c783d7,0000000000000000
更新:
如果我向擴展器詢問其附加元素檢測頁面,它會為所有插槽列出一個“設備插槽編號:0” - 其他擴展器在這裡列出增加的數字,我懷疑這是我的問題的間接原因。我還在較新的 H740P 控制器上嘗試了此擴展器,它將驅動器列為直接連接的驅動器(而不是在機箱中),並帶有組成的插槽 ID - 這是一個改進,但它存在其他問題,例如列出西方數字機箱(即,它將連接的驅動器之一列為機箱)。
我還購買了另一個這些擴展器,並且行為相同,因此擴展器不太可能損壞 - 似乎 H700 需要插槽 ID,而 HP SAS 擴展器根本不支持它們 - 或者有沒有辦法以某種方式重新分配 aes 頁面中的設備插槽號?
經過相當多的研究,似乎基於 PMC-Sierra 的 SAS 擴展器將所有設備插槽編號列為 0,這是 SAS 規範允許的,因為其他診斷頁面和 smp 發現協議並未聲稱該設備有效插槽號。
所以問題是由 LSI SAS 控制器中的一個相當錯誤的 SAS 實現引起的,它強制使用插槽號,即使它們不存在,而不是使用唯一的磁碟 ID 或其他機制(例如 sas 地址)。
我不知道這是否僅僅是工具(例如 storcli)中的使用者界面缺陷還是更深層次的。至少 Perc H700 中的發現問題是由於 SAS 拓撲發現的錯誤實現,這是由 SAS 標準指定的並且不使用插槽號。LSI 的 HBA 驅動程序似乎也有類似的問題。