來源文章引用 批踢踢實業坊 › 看板 Storage_Zone我覺得作者寫的不錯,因為網路上太多RAID 5 資料全毀的案例。
一、前言
我不是什麼危言聳聽,也不是什麼RAID排斥,也不是我爆了RAID5的悲憤警世文 完完全全只是數學問題。 有心有空看數學流程的,請繼續看下去。沒空的也請相信我。 不管你用的是主機板的RAID、還是用NAS的、抑或是高階陣列卡, 是Software-based RAID、Hardware-based RAID、抑或是Driver-based, 只要你用的是消費級的硬碟,且容量上TB等級, 不要再用RAID 5了 不要再用RAID 5了 不要再用RAID 5了 現在還再用RAID5的請趕快升級成RAID6。 就算你有10顆Hot Spare也一樣。 因為 當你遇到問題時 你完全成功重建的機率 比你想像中的 低 接下來開始解釋為什麼,會有硬碟規格和數學, 有心有空看數學流程的,請繼續看下去。沒空或看到數學就頭痛的, 也請聽進我一席話。
二、URE 硬碟有個參數,叫 uncorrectable read error, 更詳細一點的說叫 Non-recoverable read errors per bits read 簡稱ure,其中文為每位元讀取發生無法復原的讀取錯誤 一般消費級硬碟(包括消費級NAS碟),這個參數官方通常是給 1/10E14 (讀做10分之1的14次方,或10的負14次方,或零點零零零零零零零零零零零零零一) 是個看起來很小的值。 什麼意思呢? 平均每讀取100,000,000,000,000位元,就會讀到1位元壞掉、且無法修復的資料。 或是 平均每讀取12.5TB,就會讀到1位元壞掉、且無法修復的資料。 挖靠!這樣看起來更小了。 這個數值大家就先記在心裡。 企業級的硬碟,ure通常是1/10E15甚至1/10E16。
三、RAID 5 再來提提RAID 5。 RAID 5是啥,我就不細說了,不知道的你也不應該組RAID 5... RAID 5成員其中之一離線後,狀態會變為降級(degraded), 此時,若有備援、或是手動換一顆加入,則會進入重建狀態(rebuild), 重建時,會讀取所有資料,算出離線成員的資料,並寫入備援碟。 所有資料 = RAID 5可用容量,若你拿2TBx3組,就是4TB。 重建是否成功、能否保全資料,就看能否正確的讀取所有資料了。 PS. 一般RAID與檔案系統無關,控制器不會知道你的硬碟哪裡有、放了多少資料。 所以,重建時是對整組RAID、所有磁區去做。 例外是一些軟體層的RAID,本身即是檔案系統、或位於檔案系統之下, 在檔案系統的層級加入RAID概念,是可能只針對有資料的部分做重建的。 如ZFS、ReFS。
四、完美重建成功機率 接下來,就是高中數學了, 我們有 單次事件發生機率 ure 事件次數 = 可用容量 那,我們就能算多次事件下,發生(或不發生)的機率了: 完全不發生ure(不出錯)的機率(完全成功重建) = (1 - 單次機率) ^ (次數) = (1 - ure) ^ (容量) 帶入 ure = 1/10E14 可用容量 = 4TB(32x10E12位元) 完全不發生ure的重建機率 = (1-1/10E14)^(32x10E12) 喔數字都好大,怎麼算? 你可以用高級計算機、Excel或是取Log搭配一般計算機。 反正我直接告訴你答案: 使用消費級硬碟組成4TB可用容量的RAID 5,一個位元都不壞的成功重建機率 = 72.6% 順便再多給幾個資料點 4TB = 72.6% 6TB = 61.9% 8TB = 52.8% 我不知道你對這個機率是否滿意。 我個人是很不滿意啦。 若考慮容錯的真義,4TB的狀況對我來說尚可接受。 但在現在單顆4TB性價比如此高,誰會組個4TB的RAID5阿! 當然你可以用企業級、URE較低的硬碟,那是可以把機率提升到90%以上。 但也沒十分高,下面會附上表格。
五、發生read error時 重要:read error和上述的URE不盡相同,但這邊提一下讓大家參考 發生Read error時,根據硬碟與陣列控制卡的行為與設定,會有幾種狀況, 實際的情況比較複雜,我簡單列幾個出來:
1. 硬碟根本沒發現read error!但是讀出來的資料是錯的。 結果:你的資料壞了1bit(通常不止),而且不會主動發現! 嚴重性:看你的資料價值。
2. 硬碟發現Read error,可能是Checksum failed,並開始硬碟內的ERC。
2.a. 修復成功,嚴格說來這樣就不算URE。
2.b. 花過多時間修復,被RAID踢掉。 結果:這顆就離線了,如果你正在重建,恭喜你!RAID Failed! 如果你的RAID無法手動調整RAID組態...那狀況是有點嚴重。 2.c. 因TLER設定而及時放棄修復: 結果:RAID控制器收到錯誤訊息並記錄; 如果有容錯,則會嘗試用其他顆硬碟資料,重建這個位元。 如果容錯失效(如RAID5重建中),則會通常控制器跳過這個位元。
16TB,等於4TB 硬碟 5顆 組 RAID 5.
留言列表