--時間:2021年1月25日
--作者:飛翔的小胖豬
前言
文檔約定紅色字體的E表示Enclosure Device ID、紅色字體S表示Slot Number、紅色字體A表示Adapter號、紅色字體L表示Traget id。
說明
磁盤狀態
磁盤組狀態
陣列級別
陣列參數
問題處理思路
1. 確認現有磁盤狀態:
該步驟主要確認磁盤是否完全損壞,已經和原所在磁盤組無任何關聯。
2. 確認故障磁盤原所在RAID組狀態:
首先獲取RAID組等級,磁盤故障后是否可正常讀寫數據。RAID 0只有重新創建新陣列。
確認RAID組構建成員數量和當前實際數量。
如果RAID組構成數量和實際數量一致,則可能是熱備盤已經頂替了原故障磁盤工作。
3. 確認磁盤是否能拔插:
在確認故障磁盤處於unconfigured(bad)狀態及磁盤已經備提出原有RAID組
磁盤處於unconfigared(bad)可進行更換磁盤操作,直接現場找到故障磁盤把出,等待1-2分鍾插上新磁盤到原有槽位,現場觀察5-10分鍾。
4. 系統中再次確認磁盤狀態
磁盤換上過后狀態有rebuild、unconfigure(good)、foreign、failed。
4.1 rebuild狀態:
表示磁盤正在重構,無需手動進行任何操作只需要等待其重構完成300G磁盤在4-6小時左右。
4.2 unconfigure(good)狀態
unconfigure(good)狀態下需要再觀察10-15分鍾,同時查看元所屬RAID整理組構成成員數和當前成員數是否一致,RAID組是否降級。
如果磁盤成員數不一致則需要手動把新換磁盤加入到原有RAID組中。
如果成員數一致同時長時間未自動進行數據重構則原有RAID組已由熱備盤成功頂替同時熱備策略設置為不回遷。需要手動新添加的磁盤設置為熱備盤,無法確認設置為全局還是局部熱備盤時,都設置為全局熱備。
4.3 foreign狀態
如磁盤為foreign狀態,那么需要先清理外部盤信息,然后執行導入外部盤。 或則重構已丟失的磁盤。當導入和重構命令都提示not found時,檢查原RAID組是否已經正常。 可按照第5小步的方式手動把磁盤設置為熱備盤。
RAID說明
raid容錯
- RAID 0:不提供容錯功能。任意一個成員盤出現故障,都會導致數據丟失。通過條帶化方式同時在多個成員盤中寫入數據。RAID 0對於需要高性能但不需要容錯的應用場景非常理想。
- RAID 1:提供100%的數據冗余能力。當一個成員盤故障時,可以使用RAID組中對應的其他磁盤的數據來運行系統,並重構故障盤。因為一個成員盤的內容會完全備份寫入另一個磁盤, 所以如果其中一個成員盤出現故障, 則不會丟失任何數據。成對的成員盤在任何時候都包含相同的數據。RAID 1組是需要最大容錯能力和最小容量要求的應用場景的理想選擇。
- RAID 5:結合了分布式奇偶校驗和磁盤條帶化。奇偶校驗在不需要備份全部磁盤內容的情況下,為1個磁盤提供了冗余特性。當一個成員盤故障時,RAID控制卡使用奇偶校驗數據來重構所有丟失的信息。RAID 5使用較小的系統開銷為系統提供了足夠的容錯能力。
- RAID 6:結合了分布式奇偶校驗和磁盤條帶化。奇偶校驗在不需要備份全部磁盤內容的情況下,為2個磁盤提供了冗余特性。當一個成員盤故障時,RAID控制卡使用奇偶校驗數據來重構所有丟失的信息。RAID 6使用較小的系統開銷為系統提供了足夠的容錯能力。
- RAID 10:使用多個RAID 1提供完整的數據冗余能力。RAID 10對所有需要通過鏡像磁盤組提供100% 冗余能力的場景都適用。
- RAID 50:使用多個RAID 5的分布式奇偶校驗提供數據冗余能力。在保證數據完整性的情況下,每個RAID 5分組允許1個成員盤故障。
- RAID 60:使用多個RAID 6的分布式奇偶校驗提供數據冗余能力。在保證數據完整性的情況下,每個RAID 6分組允許2個成員盤故障。
raid性能
- RAID 0:提供優異的性能。RAID 0將數據分割為較小的數據塊並寫入到不同的磁盤中,由於可以同時對多個磁盤進行讀寫,RAID 0提升了IO性能。
- RAID 1:由於RAID組中的硬盤都是成對出現,寫數據時也必須同時寫入2份,從而占用更多的時間和資源,導致性能降低。
- RAID 5:提供了較高的數據吞吐能力。由於成員盤上同時保留常規數據和校驗數據,每個成員盤都可以獨立讀寫,再加上完善的Cache算法,使得RAID 5在很多應用場景中都有出色的性能表現。
- RAID 6:在需要高可靠性、高響應率、高傳輸率的場景下,RAID 6是較為適合的RAID級別,其提供了高數據吞吐量、數據冗余性和較高的IO性能。由於RAID 6需要為每個成員盤寫入2套校驗數據,導致其在寫操作期間性能降低。
- RAID 10:由RAID 0子組提供高數據傳輸率的同時,RAID 10在數據存儲方面表現優異。IO性能隨着子組數量的增加而提升。
- RAID 50:在需要高可靠性、高響應率、高傳輸率的場景下,RAID 50表現最好。IO性能隨着子組數量的增加而提升。
- RAID 60:使用場景與RAID 50類似,但是由於每個成員盤必須寫入2組奇偶校驗數據,使得在寫操作中性能降低,因此RAID 60不適用於大量寫入任務。
raid容量
- RAID 0:在指定一組磁盤后,同等情況下,RAID 0可以提供個最大的存儲容量,可用容量=成員盤容量之和。
- RAID 1:由於對一個磁盤進行寫入時,必須同時寫入另一個磁盤,導致存儲空間損耗。可用容量=成員盤最小容量。
- RAID 5:校驗數據塊與常規數據塊隔離,因此整體上來說,校驗數據會占用1個成員盤的容量。可用空間=成員盤最小容量x(成員盤個數-1)。
- RAID 6:由於2個獨立的校驗數據塊與常規數據塊隔離,整體上來說,校驗數據會占用2個成員盤的容量。可用空間=成員盤最小容量x(成員盤個數-2)。
注:
- 單個RAID 5磁盤組磁盤構成數量控制在3-8塊,RAID 5最小構成盤位3塊,單組超過8塊磁盤性能會出現下降。7D+1P
- 單個RAID 6磁盤組磁盤構成數量控制在4-15塊,RAID 6最小構成盤位4塊,單組超過15塊磁盤會出現性能下降。13D+2P
常用命令
命令-陣列卡相關
#查看RAID控制器數量
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -adpCount
結果顯示一共有3個陣列卡。
#查看RAID控制器信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -adpallinfo -aALL
結果機器上所有的陣列卡信息,內容一般有點多。
命令-磁盤相關
磁盤查看
#查看所有物理磁盤信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog
#查看所有物理磁盤的實例號和大小及盤位號,磁盤是否加入到raid中 #重點關注:適配器ID(Adapte),籠子ID(Enclosure Device ID),磁盤槽位ID(Slot Number) [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep -E "^Adapter|^Enclosure Device|^Raw|^Slot|^Firmware "
#點亮指定磁盤指示燈 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -start -physdrv[E:S] -aA
#關閉指定磁盤指示燈 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PdLocate -stop -physdrv[E:S] -aA
磁盤修改
#磁盤上線 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDOnline -PhysDrv[E:S] -aA
#磁盤下線 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDOffline -PhysDrv[E:S] -aA
raid陣列組相關
raid查看
#查看機器上所有磁盤陣列等級 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -aAll -NoLog | grep -i primary
如上所示表示一共有4個RAID組,其中有三個raid 6,一個raid 1。
#查看機器上所有磁盤陣列參數
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -aALL
#查看所有磁盤陣列組信息,包括是否設置局部熱備盤。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL
如果有局部熱備盤會在 Is VD Cached: No 后有一行 Number of Dedicated Hot Spares的行。如果沒有該行表示沒有局部熱備盤。
#查看機器上磁盤陣列等級及對應RAID組下磁盤信息。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -aAll -NoLog | grep -iE "^Adapter|^Number of Virtual Disks|^Span:|Primary|^state|^Enclosure Device ID|^Slot|DiskGroup|^Raw" | more
紅圈內表示RAID磁盤組信息。出現一個Adapter表示一個陣列卡。
綠圈內表示紅圈所屬RAID磁盤組所有成員信息。
raid信息說明:
Adapter 適配器號
Number of Virtual Disks RAID磁盤組陣列號
RAID Level RAID磁盤組等級
State RAID組狀態
Span: 0 - Number of PDs RAID磁盤組成員數量
成員信息:
Enclosure Device ID 籠子ID號
Slot Number 磁盤插槽ID號
Raw Size 磁盤大小
raid創建
約定:
E:Enclosure Device ID
S:Slot Number
A:Adapter
L:Traget id
新建raid前需要先去確認Adapter(陣列卡)、Enclosure Device ID(籠子號)、磁盤號Slot Number。
#創建raid0 #單盤raid0,設置屬性為WB 和 Direct [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[E:S] WB Direct -aA #新建雙盤raid0 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[E1:S1,E1:S2] WB Direct -aA #新建四盤raid0 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[E1:S1,E1:S2,E1:S3,E1:S4] WB Direct -aA
#新建radi1 [root@localhost ~]# /opt/MegaRAID/Me gaCli/MegaCli64 -CfgLdAdd -r1[E1:S1,E1:S2] WB Direct -aA
#新建raid5 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r5[E1:S1,E1:S2,E1:S3,E1:S4] WB Direct -aA
#新建radi10 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgSpanAdd -r10 -Array0[E1:S1,E1:S2] -Array1[E1:S3, E1:S4] -WB Direct -aA
#新建raid6 /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r6[E1:S1,E1:S2,E1:S3,E1:S4,E1:S5,E1:S6] WB Direct -aA
raid修改
#磁盤重構進度靜態 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ShowProg -PhysDrv[E:S] -aALL
#磁盤重構進度動態顯示 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ProgDsply -PhysDrv[E:S] -aALL
raid刪除
RAID磁盤組刪除或格式化操作一定要定位清楚,謹慎操作,數據無價!不要瞎操作!
#刪除存在raid,使用Target Id操作,-L后的數字就是Target id #其中-a0表示第幾個適配器。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -LL -aA
新創建的raid組可以進行格式化,不是必選項。謹慎操作!!!!
#初始化指定raid磁盤組,同等與快速格式化,不要瞎操作。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDinit -start -LL -aA
熱備盤相關
查看熱備盤
查看是否有局部熱備盤
#查看所有磁盤陣列組信息,包括是否設置局部熱備盤。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL
如果有局部熱備盤會在 Is VD Cached: No 后有一行 Number of Dedicated Hot Spares的行。如果沒有該行表示沒有局部熱備盤。
#查看熱備盤 [root@localhost ~]#/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep 'Hotspare,'
一行表示一個熱備盤,如果上一步沒有查出來局部熱備盤,那么這些磁盤都為全局熱備盤。
增減熱備盤
#設置熱備盤 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set -PhysDrv[E:S] -aA
#取消熱備盤 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -rmv -PhysDrv[E:S] -aA
案例
案例-新建陣列
創建一個新的磁盤陣列比較簡單,需要先了解到要創建的陣列的磁盤的陣列卡ID、磁盤櫃ID、槽位ID等數據,然后執行創建命令即可,切記不要選錯了磁盤。
數據准備
創建陣列之前需要了解如下幾個問題。
創建操作
創建陣列卡操作流程如下:
- 獲取陣列卡、磁盤框、磁盤槽位號
- 執行創建陣列卡命令
- 初始化陣列卡
1.獲取磁盤信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep -E "^Adapter|^Enclosure Device|^Raw|^Slot|^Firmware "
命令截圖結果表示: 0號陣列卡 磁盤框號為 252 磁盤槽位號為 0 和 1,磁盤狀態為Online,Spun Up表示已正常添加到陣列中。
#重點關注:適配器ID(Adapte),籠子ID(Enclosure Device ID),磁盤槽位ID(Slot Number)。
選擇Unconfigure(good), Spun Up或Unconfigure(good), Spun Down狀態的磁盤。
2. 執行創建陣列卡命令
根據第一步獲取到的 陣列卡ID ,磁盤櫃ID,磁盤槽位號等數據創建陣列。
該步驟只展示raid 1 創建,如需要創建其他等級的陣列組請查考常用命令章中raid創建小節中各種raid 等級創建方式。
#新建radi1 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r1[E1:S1,E1:S2] WB Direct -aA
具體參數解釋:
E1:磁盤櫃ID
S1:第一塊磁盤槽位號
S2:第二塊磁盤槽位號
A:陣列卡ID
WB:寫緩存
Direct:讀操作不緩存到RAID卡緩存
3. 初始化陣列卡
新創建的raid組可以進行格式化,不是必選項。在執行命令初始化磁盤組的時候切記不要選錯了陣列組,謹慎操作!!!!
#查看磁盤組id號。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -aALL
#初始化指定raid磁盤組,同等與快速格式化,不要瞎操作。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDinit -start -LL -aA
具體參數解釋:
L:磁盤組ID
A:陣列卡ID
案例-磁盤存在外部信息
磁盤中存在外部信息的意思就是該磁盤不是一塊全新的磁盤,磁盤內部存在原來的磁盤陣列信息,導致無法和新的磁盤一樣自動加入故障磁盤陣列中。此時需要先清除已存在磁盤陣列信息然后手動添加磁盤到故障整列卡中。
解決思路
- 確認當前磁盤狀態。
- 查看磁盤組狀態信息。
- 物理拔插更換磁盤。
- 掃描是否存在外部盤。
- 清楚指定磁盤外部盤信息。
- 手動導入外部磁盤到磁盤組。
- 再次確認磁盤狀態。
操作步驟
1.查看當前所有磁盤硬件狀態
#查看磁盤狀態信息。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll –Nolog
查看得知 2號 籠子 12號盤狀態為unconfigured(bad)。
已踢出陣列,並且狀態為損壞。
2.查看陣列狀態信息
#獲取磁盤陣列狀態信息,Optimal為正常。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL | grep -iE "^Adapter|^Virtual Drive|^RAID Level|^Size|^State"
3.掃描是否有外部盤
#確認指定的陣列卡上的磁盤是否存在外部信息。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Scan -aA
具體參數解釋:
A:陣列卡ID
4.清除磁盤外部信息
#清除指定陣列卡上存在的磁盤外部信息。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -clear -aA
具體參數解釋:
A:陣列卡ID
5.重構磁盤
一般情況下清除掉了磁盤的外部信息后會在1-2分鍾左右進行rebuild。如果沒有進行重構有如下幾個原因:
.磁盤組狀態正常。熱備盤已經成功頂替了,同時熱備策略設置為不回寫。此時則不用進行重構。
.磁盤組狀態不正常。由於時間過久需要手動執行重構。
恢復手段有如下兩種,任選其一即可。
同步丟失的磁盤
#查看指定陣列卡上丟失的陣列磁盤信息 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PdGetMissing -aA #設置丟失的磁盤開啟重建 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -pdrbld -start -physdrv[E:S] -aA
E:磁盤櫃ID
S:磁盤槽位ID
A:陣列卡ID
導入外部盤
#查看指定陣列卡上丟失的陣列磁盤信息 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PdGetMissing -aA #設置丟失的磁盤開啟重建 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -pdrbld -start -physdrv[E:S] -aA
E:磁盤櫃ID
S:磁盤槽位ID
A:陣列卡ID
案例-熱備盤自動頂替
熱備盤在發生陣列成員磁盤發生故障過后會自動頂替故障磁盤重構故障陣列,多數情況下熱備盤設置為不回寫模式即正常磁盤更換后熱備盤不會從成員盤變成熱備盤,這種情況下需要手動把新更換的磁盤手動設置熱備盤保證整個陣列卡中所有陣列的數據安全。
解決思路
- 確認當前磁盤狀態。
- 如果有外部信息先清除磁盤外部信息,具體步驟參考上文。
- 設置磁盤為全局熱備盤。
操作步驟
1.獲取磁盤信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep -E "^Adapter|^Enclosure Device|^Raw|^Slot|^Firmware "
命令截圖結果表示: 0號陣列卡 磁盤框號為 252 磁盤槽位號為 0 和 1,磁盤狀態為Online,Spun Up表示已正常添加到陣列中。
#重點關注:適配器ID(Adapte),籠子ID(Enclosure Device ID),磁盤槽位ID(Slot Number)。
選擇Unconfigure(good), Spun Up或Unconfigure(good), Spun Down狀態的磁盤。
2.清除磁盤外部信息
參考上文此處不累述。
3.設置全局熱備盤
#設置熱備盤 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set -PhysDrv[E:S] -aA
E:磁盤櫃ID
S:磁盤槽位ID
A:陣列卡ID
4.查看確認熱備盤
#查看熱備盤 [root@localhost ~]#/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep 'Hotspare,'
一行表示一個熱備盤,如果上一步沒有查出來局部熱備盤,那么這些磁盤都為全局熱備盤。
RAID 0 磁盤故障
raid 0 故障時整個陣列數據都會丟掉,此時只有重建一個新的陣列組。
解決思路
- 確認當前磁盤狀態。
- 如果有外部信息先清除磁盤外部信息,具體步驟參考上文。
- 新建raid組。
操作步驟
1.獲取磁盤信息
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll -Nolog | grep -E "^Adapter|^Enclosure Device|^Raw|^Slot|^Firmware "
命令截圖結果表示: 0號陣列卡 磁盤框號為 252 磁盤槽位號為 0 和 1,磁盤狀態為Online,Spun Up表示已正常添加到陣列中。
#重點關注:適配器ID(Adapte),籠子ID(Enclosure Device ID),磁盤槽位ID(Slot Number)。
選擇Unconfigure(good), Spun Up或Unconfigure(good), Spun Down狀態的磁盤。
2. 執行創建陣列卡命令
根據第一步獲取到的 陣列卡ID ,磁盤櫃ID,磁盤槽位號等數據創建陣列。
該步驟只展示raid 1 創建,如需要創建其他等級的陣列組請查考常用命令章中raid創建小節中各種raid 等級創建方式。
#創建raid0 #單盤raid0,設置屬性為WB 和 Direct [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0[E:S] WB Direct -aA
具體參數解釋:
E:磁盤櫃ID
S:磁盤槽位號
A:陣列卡ID
WB:寫緩存
Direct:讀操作不緩存到RAID卡緩存
3. 初始化陣列卡
新創建的raid組可以進行格式化,不是必選項。在執行命令初始化磁盤組的時候切記不要選錯了陣列組,謹慎操作!!!!
#查看磁盤組id號。
[root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -aALL
#初始化指定raid磁盤組,同等與快速格式化,不要瞎操作。 [root@localhost ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDinit -start -LL -aA
具體參數解釋:
L:磁盤組ID
A:陣列卡ID