首先有必要先介紹一下有關RAID卡的使用,有關Cache問題也有個人理解:生產系統上的物理機磁盤配置大多都是RAID5,之前會經常性的遇到磁盤IO在某個時間極度的跟不上節奏,稍微寫入量,磁盤utils就能夠飆到80%多;最后發現是RAID卡的模式改變導致的性能影響;一般RAID卡的電池都會進行充放電的操作來進行電池的保護,一般時間在90天進行一次充放電,放電時間不一(沒有驗證過這個,感覺有1-2小時)。RAID卡電池放電時有默認策略會關閉RAID模式“Write Back”使用“Write through”
Write Back:在系統與磁盤的數據交互中啟用RAID的Cache,在寫入數據開啟時,其性能能夠提高是一個數量級的(一般RAID卡都配備有512M、1G緩存)
Write Throug:不啟用RAIDcache,直接有磁盤進行數據交互;但是在讀取性能上較好;電池放電啟用此功能 是為了防止在 write back下並且無RAID卡電池的情況中,系統斷電導致數據丟失
最終,考慮IDC機房情況我們都開啟了電池放電狀態下也強制開啟緩存的策略,以解決短時間性上在寫入性能的過分差距
查看是否是目前模式,如下是Write Throug

強制開啟步驟 強制修改RAID卡由writethrough到writeback 方法 # /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL Set Write Cache OK if bad BBU on Adapter 0, VD 0 (target id: 0) success 若是放電關閉緩存 強制設置電池放電依然開啟緩存方法 # /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aALL Set Write Policy to WriteBack on Adapter 0, VD 0 (target id: 0) success 查看是否成功 # /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -L0 -a0 Adapter 0-VD 0(target id: 0): Cache Policy:WriteBack, ReadAheadNone, Direct, Write Cache OK if bad BBU
開啟后

強制修改RAID卡為WB:
cd /opt/lsi/MegaCLI/
/opt/lsi/MegaCLI/MegaCli -LDSetProp CachedBadBBU -Lall -aALL
/opt/lsi/MegaCLI/MegaCli -LDSetProp WB -Lall -aALL
/opt/lsi/MegaCLI/MegaCli -LDGetProp -Cache -L0 -a0