RAID 重建的那幾個小時:URE、雙盤失效與陣列選型

陣列壞一塊盤,插上新碟開始重建。這幾個小時,是整套儲存一年裏最脆弱的時候。

大多數人對重建的理解是「系統在後台慢慢把數據補回去」。實際上重建做的事情要激烈得多:它要把其餘每一塊成員盤從頭到尾完整讀一遍。平時業務只讀熱數據,冷數據區可能幾年沒被碰過;重建期間,那些區域一定會被讀到。

一、重建到一半,第二塊盤掉了

現象:RAID 5 壞一塊盤,換新碟開始重建,重建到百分之六七十的時候另一塊成員盤報錯,整組數據沒了。

機理:這叫不可恢復讀錯誤(Unrecoverable Read Error,URE)。機械硬碟的規格書裏都會寫一個 URE 指標,常見的是每讀取 10^14 或 10^15 位出現一次不可恢復錯誤。平時不會碰到,因為平時不會連續讀那麼多。重建會。

盤容量越大,一次完整讀取的數據量越大;盤齡越長、批次越接近,同時劣化的可能越高。這兩個因素疊加,就是大容量盤做 RAID 5 風險偏高的原因。

怎麼辦

  • RAID 6(雙校驗)能容忍重建期間再失效一塊。大容量盤組陣列,這是基本要求。
  • 在盤劣化之前換掉,而不是等它報故障。見《一塊盤報故障,什麼時候不該換碟》裏 SMART 趨勢那一節。
  • 重建之前先把替換碟準備好。等壞了再現找貨,等待期就是裸奔期。

一個現實:過保機器裏的盤,往往是同一批次、同一天上架的。一塊到壽命,其他幾塊大概率也快了。整組同時進入高風險期這件事,在做規劃時必須算進去。

二、性能突然掉一半,盤卻都是好的

現象:陣列所有成員盤狀態正常,沒有任何告警,但吞吐和響應時間明顯變差。

這類問題在過保設備上最難查,因為沒有任何東西「壞」了。可能的原因有三類:

可能一:有盤進入了內部重試或介質掃描。盤在內部做重映射或掃描時,單次響應會拉長到幾百毫秒,但還沒到控制器的報錯閾值。看單碟延遲分佈能發現——如果某一塊盤的 P99 延遲明顯高於同組其他盤,就是它。

可能二:控制器的緩存策略被降級了。最常見的原因是 RAID 緩存電池失效,控制器自動從回寫(write-back)退到直寫(write-through),寫性能會掉一個數量級。這一類單獨展開在《機器沒壞,只是變慢了:RAID 緩存電池》。

可能三:後台任務在跑。一致性校驗(consistency check)、巡檢(patrol read)、重建,都會佔用大量帶寬。很多平台默認每週或每月自動跑一次一致性校驗,如果沒人調整過時間窗口,它可能正好落在業務高峯。

排查順序:先看控制器狀態和後台任務列表(這一步最快),再看單碟延遲分佈,最後才懷疑硬件。順序反過來,會浪費大量時間。

三、換了控制器,陣列認不出來

更換儲存控制器是儲存維護裏風險最高的動作之一,沒有之一。

現象:換上新控制器後,原有陣列配置丟失,或者識別異常、盤序錯亂。

三個常見原因

  1. 固件版本不兼容。新控制器的固件版本與盤上已有的配置元數據不兼容,讀不出來, 或者讀出來是錯的。
  2. 換之前沒導出配置,或者拆下來的盤沒有按原順序接回去。 多數控制器能從盤上的元數據重建配置,但前提是盤序資訊完整。
  3. 雙控設備上,第一個控制器的同步還沒完成就動了第二個。 這會讓兩邊的配置版本分叉。

規程(不是建議,是規程):

  • 換之前先導出並保存配置
  • 逐個碟位記錄盤序,拍照留檔
  • 按廠商的更換流程一步步做,不要憑經驗跳步
  • 雙控設備,一次只動一個,等同步完成再動下一個

這一步沒有捷徑。現場即興發揮的代價,是整組數據。

四、雙控儲存,用單控跑了半年

現象:一個控制器早就故障了,業務由剩下那個扛着,一直沒換。

這是國內機房裏相當普遍的一種狀態,尤其是過保之後。

風險有三層

  1. 沒有冗餘了。剩下那個一旦出問題,就是全停,不是降級。
  2. 性能只有一半,而且是在全部負載壓到一個控制器上的情況下。
  3. 剩下那個的故障概率在上升。長期滿載運行,本身就是加速老化。

為什麼不換:多數時候不是不想換,是過保之後原廠報價太高,或者直接答覆不再供應。

實際情況:這類控制器在渠道庫存和下架資產裏通常還有貨。關鍵不是能不能買到,是買到的固件版本能不能和現有配置對上——見上一節。

帶病運行的時間越長,最後那次故障的代價越大。這是一條在賬面上看不見、但在停機那天會一次性結清的負債。

陣列選型的幾條經驗

  • 大容量盤(8TB 以上)組陣列,直接上 RAID 6 或更高冗餘,不要 RAID 5
  • 成員盤數量越多,重建時間越長,風險窗口越寬
  • 熱備碟(hot spare)能縮短從故障到開始重建的時間,值得配
  • 定期看一次一致性校驗的調度時間,把它挪到業務低峯
  • 同批次上架的盤,做一次交錯更換,打散它們的壽命曲線

關於零件

重建風險的解法裏有一半是「提前備好件」。

七小服的料號庫收錄 11,894 個料號,4,786 個為倉庫常備實物,國內六城設區域零件庫,海外 35+ 國家和地區有本地倉庫。硬碟、控制器這類重建期間用得上的件,可以按設備清單提前核一次庫存位置——零件料號速查可以直接查,或者把清單發過來人工核。


本文描述的是這類設備的常見故障模式,不是某一台機器的具體案例。

← All technical notes

了解 七小服 Seven Small Services 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读