警告!不要再用Raid 5了! - 儲存設備

Table of Contents

一、前言

我不是什麼危言聳聽,也不是什麼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重建中),則會通常控制器跳過這個位元。

六、RAID 5 完美重建機率

容量
URE 4TB 6TB 8TB 10TB 12TB 14TB 16TB
1E-14 72.63% 61.90% 52.76% 44.96% 38.32% 32.66% 27.83%
1E-15 96.85% 95.32% 93.81% 92.32% 90.85% 89.41% 87.99%
1E-16 99.65% 99.47% 99.29% 99.12% 98.94% 98.76% 98.59%

七、後記

這篇的原稿我是在2013/1/16完成的,
當時我用的是消費級2TBx8,猶豫要上RAID 5還是RAID 6,
於是就查規格、動手算,果斷RAID 6。
有空再分享RAID 6的計算部分。

現在呢?
那些2TB都賣光了XD

今天,因為單身的聖誕節很無聊,
把兩年前的文章整理出來,當作給大家遲來的聖誕禮物吧。

--

All Comments

Valerie avatarValerie2014-12-28
1分之10的14次方? 10分之1的14次方? 都幾?
Margaret avatarMargaret2014-12-31
推分享
Hazel avatarHazel2015-01-04
推。小疑問,如果rebuild的範圍一定是完整的硬碟容
量,也不見得每次rebuild的時候,都剛好把整個硬碟
用滿,理應成功率會再高一點吧?
Rae avatarRae2015-01-09
樓上 你要考慮當檔案極其重要時 你要把最差的可能情
Tristan Cohan avatarTristan Cohan2015-01-09
況來做為基礎
Bethany avatarBethany2015-01-13
誰告訴你硬碟一次讀1個位元的 你讀給我看看
Hedy avatarHedy2015-01-13
=推 很認真分享也有用的文章 要是我大概打150字
Ethan avatarEthan2015-01-18
我不用完美重建,只要大部分資料救得回來
Puput avatarPuput2015-01-20
跟這裡算出來的不一樣? http://ppt.cc/pULH
Andy avatarAndy2015-01-24
只看結果 你應該是算錯了 跟其他論文算出來都不一樣
要真像你寫的這樣 RAID5早就淘汰了
Sierra Rose avatarSierra Rose2015-01-26
我們公司機房raid5做了超久 都沒事
Dora avatarDora2015-01-30
是說...重建成功機率這麼低的話
Genevieve avatarGenevieve2015-02-03
那這篇文章 #1ItoI13z 這間公司是傻子?
Elvira avatarElvira2015-02-05
貼錯 這篇才對 #1Iu6j51i
Victoria avatarVictoria2015-02-07
樓上你貼那篇跟RAID5的關系是?
Skylar Davis avatarSkylar Davis2015-02-12
高級Raid Controller都有Patrol read/scrubbing機制
Ina avatarIna2015-02-13
不會讓你嚴重到已經一顆offline要重建才發現
Zanna avatarZanna2015-02-18
某些bit是壞掉的狀況....
Mary avatarMary2015-02-21
樓上, 那如果不是甚麼高級Raid Card呢...
Wallis avatarWallis2015-02-24
英文後面有per bits read才對 不然亂翻沒人看得懂
Skylar Davis avatarSkylar Davis2015-02-27
沒死換一顆新的也是整顆要重建 有差嗎
Kyle avatarKyle2015-03-04
鬼扯一通,譁眾取寵
Kyle avatarKyle2015-03-05
software-raid也有(manual)consistency checking...
Dorothy avatarDorothy2015-03-08
網路儲存公司買了2萬顆硬碟沒可能不RAID的吧?
Tracy avatarTracy2015-03-09
如果URE對RAID重建事關重大還會買一堆消費級的用嗎?
Catherine avatarCatherine2015-03-11
不太可能像你這個這麼低 低於99.9%就已經很嚴重了
Poppy avatarPoppy2015-03-12
另外連1bit都不能錯的標準也不能運用在消費級上
Christine avatarChristine2015-03-16
只錯1bit或許連謎片的一個frame的一個像素都沒影響
啊XD
Connor avatarConnor2015-03-20
閣下算出來的那個機率是讀寫4T發生一個bit都不會讀
錯的機率吧......
Connor avatarConnor2015-03-22
實務上r5掛掉的狀況真的不少 所以我公司跟家裡都改R
6了
Ethan avatarEthan2015-03-23
你好像完全算錯了,同int5566講的,你算的應該是
Agnes avatarAgnes2015-03-27
讀寫4TB而一個bit都不會出錯的機率,但RAID5有校驗
Olga avatarOlga2015-03-31
資訊,會計算還原資料,而你的算式完全沒有考慮進去
Agnes avatarAgnes2015-04-03
就1bit出錯,看用在何等級的資料囉,記憶體也會...
Queena avatarQueena2015-04-05
所以一間買兩萬顆硬碟的公司只會用RAID5?
Rachel avatarRachel2015-04-08
講話沒邏輯不要讓人見笑了
Olive avatarOlive2015-04-12
只要是RAID 哪種不會被URE影響? 是不是用RAID5重要?
William avatarWilliam2015-04-13
URE是機率性的 處裡大小越大就用高的機率遇上
Hedy avatarHedy2015-04-15
RAID6也只是把這個機率降低而已
Heather avatarHeather2015-04-15
原po也只說不要用raid5,你要無限上綱是你家的事
David avatarDavid2015-04-16
我的意思只是想說 那種大型數據中心也使用消費級的
Lauren avatarLauren2015-04-19
URE<1x10^14的消費級硬碟 而未使用更高的^15或16
可見這個問題的嚴重性並沒有這麼大
Noah avatarNoah2015-04-19
統計數學什麼的我是不懂啦,但是「成功重建」的定義
應該不是把整個4TB的資料從頭到尾讀過一遍吧?
George avatarGeorge2015-04-24
或許這種算法應該說成clone成功的機率?
Regina avatarRegina2015-04-26
因為在實務經驗上,我相信IT人員應該多少都碰過或
Freda avatarFreda2015-05-01
聽說過Raid5重建失敗的案例,但是那種案例大部分都
是在rebuild的時候,又發生第二顆硬碟故障的情況
而不是單純的資料復原失敗。
Eden avatarEden2015-05-04
等一下 raid5不是有1/3的容量用來儲存校驗碼?
Dinah avatarDinah2015-05-08
不是1/3...
Callum avatarCallum2015-05-08
RAID5 的確很危險, 但是這個數據計算方向完全錯誤
Sandy avatarSandy2015-05-10
實務上最常發生的是相同型號相同批號的硬碟
存在運作一段時間以後有兩顆以上同時壞軌的機率
Ivy avatarIvy2015-05-11
可以對照 backblaze 的實測結果, 但是一般 RAID box
使用硬碟的方式會更操 折損率也不會只有 2~4%
Lily avatarLily2015-05-11
硬碟在有重啟次數時就得更換硬碟了
Yedda avatarYedda2015-05-14
總覺得原po應該少算什麼 企業運算環境可靠度99.9%
都算非常嚴重了
Candice avatarCandice2015-05-16
RAID 5 在實務上沒那麼慘的說
Mia avatarMia2015-05-19
不過這裡我講的純粹是結果論啦 況且硬碟本身的糾錯
搭上RAID冗餘計算 應該算可靠了 再者 硬體故障的機
率還比較高
Ursula avatarUrsula2015-05-23
RAID5會在資料中心用? 別笑了好嗎
Quanna avatarQuanna2015-05-26
對了 上面那個貼計算機的
http://www.raidtips.com/raid5-ure.aspx
這是他自己說的 他的算法有爭議性
William avatarWilliam2015-05-30
這是他提供的另一個說法
Linda avatarLinda2015-06-04
至於到底是不是真的這麼危險也說不準
Rachel avatarRachel2015-06-06
RAID5當然可以用在資料中心 用法是:把一組RAID5當
Damian avatarDamian2015-06-07
做一個基本單位 然後每兩個基本單位做一組RAID1
Mary avatarMary2015-06-12
所以RAID5重建不起來就不是大問題 大不了整個單位拔
下來 重做RAID1就是了
Bennie avatarBennie2015-06-14
回主題 RAID5本身就是效率與費用的妥協 米不夠多就
Agatha avatarAgatha2015-06-17
所以你知道這已經不RAID 5了嗎
Anonymous avatarAnonymous2015-06-21
不然我是不是該說RAID 10/01叫RAID 0了?
Bennie avatarBennie2015-06-22
認命吧 乖乖用RAID5 不然就是認份用排程做冷備份
Victoria avatarVictoria2015-06-25
總之資料真的重要 比起RAID 多複製一分以上才實際
Rachel avatarRachel2015-06-30
這個做法在現有的RAID定義中沒有定義 但是其實很常
Faithe avatarFaithe2015-07-03
見 高階一點的Storage都有 如果覺得不應該算RAID5應
Tom avatarTom2015-07-05
用 那就叫RAID51吧
Anthony avatarAnthony2015-07-06
現在的顯學是分散式儲存, 某一台整台掛掉都沒有影響
只壞一兩顆硬碟當然更沒影響
Gilbert avatarGilbert2015-07-06
還是同樣一句話看資料重要性,重要就raid1加異地
Eartha avatarEartha2015-07-09
不重要就raid幾隨便自己爽就好,包括記憶體也會出錯
Zenobia avatarZenobia2015-07-10
至於資料中心,每個檔案都有兩份三份
Queena avatarQueena2015-07-14
btrfs的raid5有人用過嗎?
Callum avatarCallum2015-07-18
btrfs 一直都還在「體驗」階段 不敢在重要機器上面
Franklin avatarFranklin2015-07-18
實際拿來應用
Oliver avatarOliver2015-07-21
R幾沒差~重要會異地備份 公司只是陽春R5+hotspare
Ursula avatarUrsula2015-07-24
法日美各有一份完整備份 各據點要自己保留15天備份
Elvira avatarElvira2015-07-28
查了一下 國外2007就有人討論 2010 2013繼續延燒
http://www.pizzaandcode.com/posts/780
Skylar Davis avatarSkylar Davis2015-07-30
加上電腦還有其他層的容錯機制 其實還在可以接受的
Damian avatarDamian2015-08-04
範圍。反之如果是真的重要一個bit都不能錯
那就raid6或raid51吧
Margaret avatarMargaret2015-08-08
推樓上danny8376大的連結
Margaret avatarMargaret2015-08-09
在現今公有雲的服務中,就算號稱99.95%的可靠性,
Ina avatarIna2015-08-10
也是包含要做異地備援的部分..所以只能說分散儲存
也是一個必要的選項..
Ula avatarUla2015-08-11
danny那個連結的結論明明就是否定那個算法 假設太強
這篇的標題聳動 有點譁眾取寵 實務上不是這樣
Anonymous avatarAnonymous2015-08-16
請原PO提出實驗數據證明你的結果吧 不然沒參考價值
Leila avatarLeila2015-08-19
低於50%的話 rebuild個幾次就會失敗吧
Agatha avatarAgatha2015-08-23
我們公司16*4TB的RAID5磁碟陣列 怎麼換硬碟沒遇到過
Zora avatarZora2015-08-27
Raid5 容錯,備份另外作
Poppy avatarPoppy2015-08-31
TLER是WD的ERC 不要這麼針對WD好嗎?
James avatarJames2015-09-03
另外RAID 5有校驗位元 發生URE時除非另外幾顆也掛
不然資料是100%
Olga avatarOlga2015-09-06
不要小看陣列的演算法好嗎?
Isabella avatarIsabella2015-09-07
你可以把這篇發給各DATA CENTER 看他們理不理你...
Regina avatarRegina2015-09-07
一定是爆硬碟的悲憤文wwwwwwww
Oscar avatarOscar2015-09-09
DC當然不會理啊 早就沒再用RAID5了 何必管RAID5怎樣
Ingrid avatarIngrid2015-09-11
推!