天天看點

SES2 LED控制

SES2 LED控制

1、磁盤LED控制的背景及需求

磁盤陣列中每個磁盤都對應多個LED燈,常用來訓示磁盤的狀态和行為。 比如當磁盤出現故障需要定位、磁盤缺失、正常線上或者正在讀寫等情況下,可以通過SAS Enclosre Service來控制enclosure上每個drive對應的LED燈 。初次接觸SES2的同學可能覺得它比較抽象,可以把它和BMC類比,整個enclosure也是由嵌入式CPU(比如ARM)及外圍電路組成的一個獨立系統,可以完成對每個drive LED、内部風扇、電源的設定、溫度的監測等功能。

2、磁盤LED控制的原理和過程

為了統一SAS expander和enclosure的設計,業内提出了統一的控制接口标準,包括GPIO和I2C兩種。當主機需要讀取或者控制enclosure内部器件的狀态時,host CPU把指令發送到作為initiator的SAS expander,然後SAS expander通過統一的接口規範向作為target的enclosure内部的控制器傳送控制指令,enclosure執行最終的硬體操作。

上面是從資料鍊路層看到的資料流,對上層的應用層而言,其下所有的協定和約定都是透明的,使用者隻需要了解具體SAS expander支援的LED類型和數量、硬體實作的LED用途和數量,在linux系統下就可以直接調用sg_ses指令即可。

下面以我最近做的針對某款伺服器上drive bay上的LED控制的需求進行舉例說明。實際工作中我需要控制任意drive的綠燈, 這裡涉及到磁盤定位和 LED控制兩個問題:

(1)如何實作磁盤定位

在 類似ipmitool的sg_ses指令中加—index參數,可以指定控制某個特定的盤。比如—index=2,就是控制從 編号為 0開始的 index=2的盤,客戶自己可以通過上面的選項對應點亮的drive的位置來确定index和磁盤槽位的對應關系,進而實作磁盤定位。

(2)如何實作控制 LED正确報警

根據 筆者使用的LSI SASxx40 系列 expander手冊、SFF-8485等規範以及硬體手冊,可以看到實際使用的drive bay上有兩個LED,紅色的一個是用作狀态(status)的,綠色的一個是用來訓示活動(activity)。其中activity LED預設的工作模式是隻要線上就是綠色常亮,隻要有讀寫就是綠色閃爍。我們可以遵循目前對activity LED的控制,隻控制status LED。通過sg_ses指令幫助文檔可以看到,它支援ident、locate、fault、devoff、insert、remove等操作。需要注意的是上面不同的操作可能共享相同的對LED的控制方式,比如在筆者的這款機器上,ident/locate都會讓紅色的status LED閃爍,而falt/missing參數隻會讓等點紅。為此,使用者可能需要逐一嘗試所有的操作,歸納總結出所有可能的status LED狀态,然後結合上層業務需要選用合适的控制方式。比如筆者的這套系統,就可按如下方案 使用 Drive bays 上的 LED燈:

LED Type

Status – meanning Pairs

Need to be controlled ?

Green LED (Activity LED)

Blink - read/write ongoing

No Green – no read/write ongoing

No

Red LED (Status LED)

Blink – locate/ident

Red - missing

Red - Fault

Blink at other frequency - TBD

Yes

下面是相關的參考指令:

lsscsi -g #确定哪個sg是expander

sg_ses -ee

sg_ses --index=2 --set=ident /dev/sg17

sg_ses --index=2 --clear=active /dev/sg17

sg_ses --index=2 --set=2:1 /dev/sg17

sg_ses --index=2 --clear=2:1 /dev/sg17

sg_ses --index=0 --clear=2:1 /dev/sg17

sg_ses --index=9 --clear=active /dev/sg17

sg_ses --index=9 --set=fault /dev/sg17

sg_ses --index=8 --set=locate /dev/sg17

sg_ses --index=9 --set=missing /dev/sg17

sg_ses --index=7 --set=fault /dev/sg17

sg_ses --index=7 --set=active /dev/sg17

sg_ses --index=6 --set=devoff /dev/sg17

sg_ses --index=9 --set=insert /dev/sg17

sg_ses --index=5 --set=remove /dev/sg17

sg_ses --index=4 --set=dnr /dev/sg17

sg_ses --index=3 --set=ident /dev/sg17

總而言之,對SES2的調用,需要結合具體sas expander的規格、闆卡硬體設計、SFF-8485等規範和業務所有可能的user case,利用現有的sg_ses/lsscsi等工具,進行系統全面的考量和設計,才能簡單有效地滿足客戶和業務需求。

3、參考文檔和連結

https://en.wikipedia.org/wiki/SES-2_Enclosure_Management

https://en.wikipedia.org/wiki/SGPIO

http://www.docin.com/p-81485148.html

http://sg.danny.cz/sg/sg_ses.html

http://www.alldatasheet.com/datasheet-pdf/pdf/303320/DDK/SAS-RA29-S1AA-FG.html

本文轉自存儲之廚51CTO部落格,原文連結:http://blog.51cto.com/xiamachao/1839036 ,如需轉載請自行聯系原作者

繼續閱讀