Dell服務器Raid卡電池策略調整


DELL服務器的Riad卡都有可充電池的特性,這塊可充電電池,在不使用時,也會有微弱的放電現象,當它的電量放電到低到一定程度時,Raid卡控制器就會對電池進行一次“放電”,將剩余的電量放掉,然后再進行一次“充電”。
 
這其實是一種對“電池”保護機制,以及對Raid陣列卡可用性提供保障的機制。
 
但是問題就出在這個放電、充電的過程上:
 
  默認情況下,當RAID卡的電池的電量低於某閾值時,RAID卡固化程序認為此時的電池是不可用的,為了保證數據的安全,會禁用RAID的“緩存”,這種默認的機制本來是合情合理的,沒有什么可“質疑”的。問題是,當RAID的緩存被禁用之后,RAID的I/O能力會大幅度下降。而據DELL工程師將,這個充放電的時間需要維持7個小時左右(據我觀察服務器的TTY日志,好像每次持續1-2小時)。 對於高I/O的應用來說,這種下降,有可能是致命的,可能會導致系統I/O阻塞,構架不良的系統,有可能會被這個“故障點”(正在充放電的設備上的應用)拖死,簡直太要命了!!!
 
有兩種方法解決這個問題:
 
1、檢查電池的狀態,對電池的充放電進行撐握,也可有計划地安排手動充放電。
 
一般DELL服務器的電池充放電周期為90天,然后在快接近下次充電的時候,選擇在晚上或者服務器空閑時間手動強制充放電(需要先安裝MegaCli,見第2);從而避免充放電在未知的時間里自動進行充放電,影響服務器正常運行。
 
查看電池充放電周期:

[root@localhost MegaCli]# echo "`./MegaCli64 -AdpBbuCmd -getBbuProperties -aALL | grep Period | cut -d " " -f4`/3600/24" | bc
90
[root@localhost MegaCli]# 

手動強制充放電:

[root@localhost MegaCli]# ./MegaCli64 -AdpBbuCmd -BbuLearn –a0

2、改變RAID卡策略,使其在充放電時,不禁用Raid卡緩存。
 
這樣做電池在自動充放電的時候,就不會關閉寫緩存,些時I/O的性能不會下降;但是,假如在此時服務器斷電,Raid卡緩存中的數據會來不及寫進磁盤,從而造成數據的丟失(沒有這么巧,剛好在Raid電池充放電時斷電吧?)。
 
DELL服務器大多是LSI的MegaRAID卡,用lsmod命令查看服務器是否用的MegaRAID卡,出現結果就說明是:

[root@localhost delltool]# lsmod | grep megaraid 
megaraid_sas           77643  7 

改變MegaRaid卡的策略就要用到官方提供的工具MegaCli來進行控制。
 
MegaCli的當前版本下載地址:點擊下載
 
下載解壓后,有Lib_Utils-1.00-09.noarch.rpm和MegaCli-8.02.21-1.noarch.rpm兩個rpm包,一起上傳到服務器上,用rpm -ivh命令依次安裝Lib_Utils和MegaCli(Lib_Utils是MegaCli的依賴包,必須先安裝),安裝完成后就可以用MegaCli命令來進行控制了;
 
首先進入MegaCli的安裝目錄(以下都以64位系統為例,所有命令都是進入MegaCli安裝目錄執行):

[root@localhost /]# cd /opt/MegaRAID/MegaCli/

查看Raid卡當前的緩存策略:

[root@localhost MegaCli]# ./MegaCli64 -LDGetProp -Cache -LAll -aAll
                                     
Adapter 0-VD 0(target id: 0): Cache Policy:WriteBack, ReadAdaptive, Direct, No Write Cache if Bad BBU
Adapter 0-VD 1(target id: 1): Cache Policy:WriteBack, ReadAdaptive, Direct, No Write Cache if Bad BBU
Adapter 0-VD 2(target id: 2): Cache Policy:WriteBack, ReadAdaptive, Direct, No Write Cache if Bad BBU
 
Exit Code: 0x00
[root@localhost MegaCli]# 

注:因為我有當時創建了3個虛擬磁盤,所以會顯示三行,可以看到緩存策略是No Write Cache if Bad BBU,即在電池充放電時關閉緩存。
 
調整緩存策略,在充放電時不關閉寫緩存:

[root@localhost MegaCli]# ./MegaCli64 -LDSetProp CachedBadBBU -lall -a0

調整完后,再次查看Raid卡當前的緩存策略:

[root@localhost MegaCli]# ./MegaCli64 -LDGetProp -Cache -LAll -aAll
                                      
Adapter 0-VD 0(target id: 0): Cache Policy:WriteBack, ReadAdaptive, Direct, Write Cache OK if bad BBU
Adapter 0-VD 1(target id: 1): Cache Policy:WriteBack, ReadAdaptive, Direct, Write Cache OK if bad BBU
Adapter 0-VD 2(target id: 2): Cache Policy:WriteBack, ReadAdaptive, Direct, Write Cache OK if bad BBU
 
Exit Code: 0x00
[root@localhost MegaCli]# 

注:緩存策略已經變為Write Cache OK if bad BBU,即在電池充放電時不關閉緩存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM