Hardware-Raid

HP SAS 擴展器將所有驅動器映射到插槽 id 0

  • October 24, 2018

我最近買了一個二手的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 驅動程序似乎也有類似的問題。

引用自:https://serverfault.com/questions/895565