Raid操作與壞盤診斷


Raid相關操作與注意事項

Raid5

SATA盤組成的Raid5,在保護數據的前提下達到高性能:

  1. RAID要有BBU

  2. Current Cache Policy采用WriteBack,No Write Cache if Bad BBU(沒有BBU要改為WriteThrough),write policy分為兩種:

    • WriteBack

      WriteBack有更好的性能,因為數據會寫入controller Cache,不需要等待寫入Hard driver,所以在沒有BBU的情況下很容易引起數據丟失。

    • WriteThrough

      WriteThrough不使用Raid的Cache,性能要比WriteBack低很多

  3. Disk Cache Policy即SATA盤自己的Cache策略,與Raid無關, 最好要設為disable(因為異常掉電可能會很慘)

UPS:不間斷電源,保障計算機系統在停電之后繼續工作一段時間

BBU:在供電出現問題的情況下,為controller Cache提供一段時間的供電,在BBU電量耗盡之前恢復供電,可保證數據完整。

BBU是由鋰離子電池和電子控制電路組成,電池的壽命取決於其老化程度,無論是否充放電已經充放電的多少,鋰離子電池的容量都會減少。為了記錄電池的放電曲線,延長電池的壽命,默認會啟用自動校准模式(AutoLearn Mode),在Learn Cycle 內,Raid卡控制器不會使用BBU,這個過程可能持續12小時,這個過程中會禁用Write back,直到其完成校准。

這個Auto-Learn Mode,一般30天執行一次,我們的BBU 28天之星一次。一般不要關閉,因為這可以有效地延長壽命。 如果不做這個校准,壽命會從2年下降到8個月。

創建Raid

首先通過PDList查看需要組raid的盤Enclosure Device ID與Slot Number:

/opt/MegaRAID/MegaCli/MegaCli64 PDList -A0

然后組建raid

/opt/MegaRAID/MegaCli/MegaCli64 CfgLDAdd -r5 [E:S1,E:S2,E:S3,E:S4] -strpsz128 -A0
# r5 raid5
# E:S Enclosure Device ID:Slot Number
# strpsz128 raid條帶

刪除Raid

首先通過LDInfo看要刪除Virtual Drive值:

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aAll

然后刪除邏輯盤

/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -Ln -A0
# n 要刪除的邏輯磁盤的值

清除Raid下面的foreign key,不過不清除,后面無法建Raid:

/opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Scan -aALL 
/opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Clear -aALL

Disk與BBU相關設置

查看是否存在BBU

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll

設置raid Current Cache Policy

# Write Cache OK if Bad BBU(除非特殊情況,否則丟數據可能性變大)
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL

設置為No Write Cache if Bad BBU,即BBU損壞或learning時變為Write Through:

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -NoCachedBadBBU -Immediate -Lall -aAll

BBU每個月會發起learning,也可以手動發起:

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -BbuLearn -aALL

Disk Cache

上面說了Disk Cache Policy最好關掉:

關閉Disk Cache

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll

打開Disk Cache

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -EnDskCache -Immediate -Lall -aAll

檢查Raid上的磁盤

先找出有明顯錯誤的,看media error和other error:

/opt/MegaRAID/MegaCli/MegaCli64 -pdlist -a0|grep -Ei "media error |other error"

光憑media error和other error是無法確定盤是否高危的,還需要找到Device Id,使用smartctl工具進去看磁盤信息:

smartctl -a -d megaraid, /dev/sdd
# 后面跟megaraid,【Device Id】 /dev/sdd【在當前raid卡上的盤符】

# 以下幾條為高危盤的參考
# 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
# 187 Reported_Uncorrect
# 188 Command_Timeout【這個有時候會特別大 有一個換算 一般沒問題】
# 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
# 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0

如果以上指標一個或多個數值特別大,證明該盤為高危盤。

快速找出危險盤:

/opt/MegaRAID/MegaCli/MegaCli64 -LDPDinfo -A0 |grep "Device Id" |awk '{print $3}' |xargs -I {} smartctl -a -d megaraid,{} /dev/sdd |grep -Ei "Reallocated_Sector_Ct|^187|^188|^197"

關機換Raid卡

先查看BBU和集群信息:

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -A0 #總信息
/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL
/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -A0

狀態應該為Battery State: Optimal是正常

然后更改raid卡策略為WriteThrough:

/opt/MegaRAID/MegaCli/MegaCli64 LDSetProp WT -Lall -Aall(WriteThrough) 
/opt/MegaRAID/MegaCli/MegaCli64 LDSetProp WB -Lall -Aall(WriteBack)

先sync,目的是將操作系統文件系統的緩存刷到硬盤:

sync

再將raid卡緩存上的數據刷到硬盤:

/opt/MegaRAID/MegaCli/MegaCli64 -AdpCacheFlush -Aall

raid卡時間

默認raid卡時間與我們系統時間相差八小時,即:raid卡時間+八小時=系統時間

查看raid卡時間

/opt/MegaRAID/MegaCli/MegaCli64 adpgettime -a0

設置raid卡時間

/opt/MegaRAID/MegaCli/MegaCli64 AdpSetTime 20200510 18:18:00 -a0

其他

換盤后查看盤的rebuild進度

/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -showprog -physDrv [E:S] -a0
/opt/MegaRAID/MegaCli/MegaCli64 -pdrbld -progdsply -physdrv[E:S] -aALL

修改raid盤的rebuild速度,默認為30

/opt/MegaRAID/MegaCli/MegaCli64 -AdpSetProp RebuildRate -30 -a0

獲取raid卡日志

/opt/MegaRAID/MegaCli/MegaCli64 -AdpEventLog -GetEvents -f raid.envent.log -a0

查看邏輯盤信息

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aAll

圖上Disk Cache Policy是Disabled,如果是Disk's Default則默認如下:

  • For virtual disks containing SATA disks , Enabled
  • For virtual disks containing SAS disks , Disabled

指定磁盤燈閃爍與關閉

# 閃爍
/opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -start -physdrv [E:S]  -aALL
# 取消閃爍
/opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -stop -physdrv [E:S]  -aALL

raid卡恢復出廠設置

/opt/MegaRAID/MegaCli/MegaCli64 -AdpFacDefSet -a0


免責聲明!

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



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