我在 3ware 9650SE-16ML 卡上有一個糟糕的 RAID 陣列。我無法判斷的是我是否剛剛遭遇了雙磁碟故障(真糟糕!)或者我是否讀錯了。的相關輸出/c0 show all
為:
Port Status Unit Size Blocks Serial
---------------------------------------------------------------
p0 DEGRADED u0 931.51 GB 1953525168 5QJ07MAH
p1 ECC-ERROR u0 931.51 GB 1953525168 5QJ0DCW9
p2 OK u0 931.51 GB 1953525168 5QJ0DW9C
p3 OK u0 931.51 GB 1953525168 5QJ0CKXJ
失敗的是(來自show alarms
):
Ctl Date Severity Alarm Message
------------------------------------------------------------------------------
c0 [Sun Nov 20 07:47:23 2011] INFO Rebuild started: unit=0
c0 [Sun Nov 20 08:20:12 2011] ERROR Drive ECC error reported: port=1, unit=0
c0 [Sun Nov 20 08:20:12 2011] ERROR Source drive error occurred: port=1, unit=0
c0 [Sun Nov 20 08:20:12 2011] ERROR Rebuild failed: unit=0
c0 [Sun Nov 20 08:20:12 2011] INFO Rebuild paused: unit=0
我思考發生的情況是 p0 失敗,然後 p1 出現 ECC 錯誤(又名,我的資料遺失了)。但是……也許不是?它保持在 97% 的重建狀態,但無法克服這個錯誤。
據我所知,前任管理員關閉了定期驗證,這就是讓我們陷入這種狀態的原因。對於 3Ware RAID,大多數人不應該擔心這一點!
更新
經過幾天的努力後,我執行了 IgnoreECC 位元並重建了它,但我的數據已被清除。真糟糕。
答案1
ECC錯誤表示磁碟機上至少有一個不可讀的磁區。但是,如果幸運的話,位於該磁碟區上的檔案系統實際上可能不會使用該磁區,因此您仍然可以在此狀態下從陣列複製資料。
還有一些選項可以在重建期間忽略 ECC 錯誤:
/cx/ux start rebuild disk=p [ignoreECC]
/cx/ux set ignoreECC=on|off
然而,使用這些選項意味著受壞扇區影響的 RAID 條帶將被損壞(不確定卡在這種情況下會做什麼 - 它可能用零甚至隨機資料替換整個條帶),因此“已恢復”陣列實際上可能存在無法偵測到的損壞(如果受影響的條帶位於某些資料檔案的中間)。在嘗試重建之前將資料從陣列複製到其他位置可能會更安全(至少在嘗試讀取壞區時應該會出現錯誤)。
您應該設定陣列的計劃驗證以儘早捕獲不可讀的磁區,以便您可以更換剛開始損壞的磁碟機。
答案2
我從未經歷過實體驅動器 (p0) 進入「降級」狀態,但是您可以透過以下方式刪除它們來恢復 ECC-ERROR 驅動器甚至降級驅動器:
/c0 p1 remove
然後發出重新掃描
/c0 rescan
透過以下方式將它們放回襲擊單位
maint rebuild c0 u0 p1
因 ECC 錯誤而導致我失敗的 SATA 驅動器在再次失敗之前我能夠復活,即使只是幾個小時。
答案3
您的資料很可能已經消失了。 ECC 錯誤表示從此磁碟讀取時出現不可復原的錯誤。
如果您沒有備份,您可以嘗試轉儲陣列的目前狀態。這可能是可能的,因為控制器不知道它是否丟失了資料或只是一個空白區域(它缺乏對檔案系統的任何洞察力)。