看板 Storage_Zone 關於我們 聯絡資訊
一、前言 我不是什麼危言聳聽,也不是什麼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 今天,因為單身的聖誕節很無聊, 把兩年前的文章整理出來,當作給大家遲來的聖誕禮物吧。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.179.10 ※ 文章網址: http://www.ptt.cc/bbs/Storage_Zone/M.1419542936.A.B8A.html ※ 編輯: Litfal (220.135.179.10), 12/26/2014 05:30:26 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 05:42:55 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 06:04:24
tn00210585 : 1分之10的14次方? 10分之1的14次方? 都幾? 12/26 06:32
欸,我真的寫反了XD,感謝
tn00210585 : 推分享 12/26 06:34
user1120 : 推。小疑問,如果rebuild的範圍一定是完整的硬碟容 12/26 07:23
user1120 : 量,也不見得每次rebuild的時候,都剛好把整個硬碟 12/26 07:23
user1120 : 用滿,理應成功率會再高一點吧? 12/26 07:23
tn00210585 : 樓上 你要考慮當檔案極其重要時 你要把最差的可能情 12/26 07:28
tn00210585 : 況來做為基礎 12/26 07:29
assemblies : 誰告訴你硬碟一次讀1個位元的 你讀給我看看 12/26 07:58
沒有說硬碟一次只讀一個bit,但機率就是這樣算的,不需要把問題搞複雜
SRNOB : =推 很認真分享也有用的文章 要是我大概打150字 12/26 08:12
wkwtb : 我不用完美重建,只要大部分資料救得回來 12/26 08:16
ruo01332000 : 跟這裡算出來的不一樣? http://ppt.cc/pULH 12/26 08:42
我是覺得他算錯了,他的NxS = 總容量,但RAID 5的有效容量應該是(N-1)xS
grief3 : 只看結果 你應該是算錯了 跟其他論文算出來都不一樣 12/26 09:57
grief3 : 要真像你寫的這樣 RAID5早就淘汰了 12/26 09:57
我是覺得RAID5應該淘汰了,另外能請您提供論文嗎?
KinoniK : 我們公司機房raid5做了超久 都沒事 12/26 10:07
真的衷心的希望能一直持續下去。
ruo01332000 : 是說...重建成功機率這麼低的話 12/26 10:25
ruo01332000 : 那這篇文章 #1ItoI13z 這間公司是傻子? 12/26 10:26
ruo01332000 : 貼錯 這篇才對 #1Iu6j51i 12/26 10:27
發生URE不代表重建會失敗... 仔細看了一下該文網站上的建置文章,他用的是RAID 1, 搭配SIL3124,用RAID 1、很合理。
filiaslayers: 樓上你貼那篇跟RAID5的關系是? 12/26 10:39
howard65 : 高級Raid Controller都有Patrol read/scrubbing機制 12/26 10:56
howard65 : 不會讓你嚴重到已經一顆offline要重建才發現 12/26 10:57
howard65 : 某些bit是壞掉的狀況.... 12/26 10:58
還是會有一些狀況讓整顆硬失效,然後就offline。 這篇就是討論當RAID 5 degraded,rebuild時會遇到URE的機率。 另外管理RAID,定期做check consistency是必須的,不過我不想模糊焦點
zyxyz : 樓上, 那如果不是甚麼高級Raid Card呢... 12/26 11:15
assemblies : 英文後面有per bits read才對 不然亂翻沒人看得懂 12/26 11:16
assemblies : 沒死換一顆新的也是整顆要重建 有差嗎 12/26 11:17
感謝!的確忘了這部分。習慣了URE自以為理所當然大家都能懂...
vincehuang : 鬼扯一通,譁眾取寵 12/26 11:40
感謝指教,如果能指點一下我錯在哪就更讓人高興了。 然後我覺得在這個版喧嘩取眾一點意義也沒有。
howard65 : software-raid也有(manual)consistency checking... 12/26 11:53
ruo01332000 : 網路儲存公司買了2萬顆硬碟沒可能不RAID的吧? 12/26 11:58
ruo01332000 : 如果URE對RAID重建事關重大還會買一堆消費級的用嗎? 12/26 11:59
這篇專指RAID 5,不包含RAID 10、RAID 50、RAID 60。
y3k : 不太可能像你這個這麼低 低於99.9%就已經很嚴重了 12/26 12:11
y3k : 另外連1bit都不能錯的標準也不能運用在消費級上 12/26 12:12
y3k : 只錯1bit或許連謎片的一個frame的一個像素都沒影響 12/26 12:13
y3k : 啊XD 12/26 12:13
int5566 : 閣下算出來的那個機率是讀寫4T發生一個bit都不會讀 12/26 12:27
int5566 : 錯的機率吧...... 12/26 12:27
sai25 : 實務上r5掛掉的狀況真的不少 所以我公司跟家裡都改R 12/26 12:49
sai25 : 6了 12/26 12:49
ArthurDX : 你好像完全算錯了,同int5566講的,你算的應該是 12/26 13:18
ArthurDX : 讀寫4TB而一個bit都不會出錯的機率,但RAID5有校驗 12/26 13:21
ArthurDX : 資訊,會計算還原資料,而你的算式完全沒有考慮進去 12/26 13:22
是阿,所以我強調是 "完全成功重建"。 至於發生URE時,嚴重程度可大可小,請看五 而ArthurDX說的RAID 5計算還原資料, 當降級狀態,又發生read error,是沒有更多的亢餘能算出資料它到底是什麼的。 但RAID 6或其他有兩顆以上的亢餘數據,在一顆丟失時, 仍還保留足夠的亢餘來算出原始數據。
kamichu : 就1bit出錯,看用在何等級的資料囉,記憶體也會... 12/26 13:43
filiaslayers: 所以一間買兩萬顆硬碟的公司只會用RAID5? 12/26 14:20
filiaslayers: 講話沒邏輯不要讓人見笑了 12/26 14:21
※ 編輯: Litfal (220.135.179.10), 12/26/2014 16:02:28 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 16:30:23
ruo01332000 : 只要是RAID 哪種不會被URE影響? 是不是用RAID5重要? 12/26 16:24
ruo01332000 : URE是機率性的 處裡大小越大就用高的機率遇上 12/26 16:25
ruo01332000 : RAID6也只是把這個機率降低而已 12/26 16:26
filiaslayers: 原po也只說不要用raid5,你要無限上綱是你家的事 12/26 16:32
※ 編輯: Litfal (220.135.179.10), 12/26/2014 16:36:10
ruo01332000 : 我的意思只是想說 那種大型數據中心也使用消費級的 12/26 16:33
ruo01332000 : URE<1x10^14的消費級硬碟 而未使用更高的^15或16 12/26 16:34
ruo01332000 : 可見這個問題的嚴重性並沒有這麼大 12/26 16:34
請看我上面的回應,我也有提供表格,算出企業級硬碟在RAID 5下的一些機率數據。 另外我不覺得大型數據中心仍在使用RAID 5,尤其是有可用性保證的數據中心。 甚至不覺得他們仍在使用單純的RAID, 很可能改用Storage Pool的概念來簡化管理與保證可用性了。 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 16:37:01 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 16:44:19
chang0206 : 統計數學什麼的我是不懂啦,但是「成功重建」的定義 12/26 16:41
chang0206 : 應該不是把整個4TB的資料從頭到尾讀過一遍吧? 12/26 16:41
chang0206 : 或許這種算法應該說成clone成功的機率? 12/26 16:43
You got it! 而且是低階clone。 只是在沒有亢餘保護的RAID環境下,發生URE引起的後續效應,可能會比單顆嚴重的多。 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 16:52:14
chang0206 : 因為在實務經驗上,我相信IT人員應該多少都碰過或 12/26 17:01
chang0206 : 聽說過Raid5重建失敗的案例,但是那種案例大部分都 12/26 17:02
chang0206 : 是在rebuild的時候,又發生第二顆硬碟故障的情況 12/26 17:02
chang0206 : 而不是單純的資料復原失敗。 12/26 17:02
※ 編輯: Litfal (220.135.179.10), 12/26/2014 17:18:11 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 17:30:07
Clarkliu : 等一下 raid5不是有1/3的容量用來儲存校驗碼? 12/26 19:06
tn00210585 : 不是1/3... 12/26 19:07
birdy590 : RAID5 的確很危險, 但是這個數據計算方向完全錯誤 12/26 19:40
birdy590 : 實務上最常發生的是相同型號相同批號的硬碟 12/26 19:41
birdy590 : 存在運作一段時間以後有兩顆以上同時壞軌的機率 12/26 19:41
birdy590 : 可以對照 backblaze 的實測結果, 但是一般 RAID box 12/26 19:43
birdy590 : 使用硬碟的方式會更操 折損率也不會只有 2~4% 12/26 19:43
只是關注點不同罷了。 不同原因導致同樣的重建失敗或資料損失的結果,累積機率只會更高而不會更低。 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 19:53:25 ※ 編輯: Litfal (220.135.179.10), 12/26/2014 19:54:17
zh2013 : 硬碟在有重啟次數時就得更換硬碟了 12/26 20:13
GJME : 總覺得原po應該少算什麼 企業運算環境可靠度99.9% 12/26 20:57
GJME : 都算非常嚴重了 12/26 20:57
GJME : RAID 5 在實務上沒那麼慘的說 12/26 20:58
GJME : 不過這裡我講的純粹是結果論啦 況且硬碟本身的糾錯 12/26 21:03
GJME : 搭上RAID冗餘計算 應該算可靠了 再者 硬體故障的機 12/26 21:03
GJME : 率還比較高 12/26 21:03
danny8376 : RAID5會在資料中心用? 別笑了好嗎 12/26 21:22
danny8376 : 對了 上面那個貼計算機的 12/26 21:31
danny8376 : http://www.raidtips.com/raid5-ure.aspx 12/26 21:31
danny8376 : 這是他自己說的 他的算法有爭議性 12/26 21:31
danny8376 : 這是他提供的另一個說法 12/26 21:32
danny8376 : 至於到底是不是真的這麼危險也說不準 12/26 21:34
dabochi : RAID5當然可以用在資料中心 用法是:把一組RAID5當 12/26 21:34
dabochi : 做一個基本單位 然後每兩個基本單位做一組RAID1 12/26 21:35
dabochi : 所以RAID5重建不起來就不是大問題 大不了整個單位拔 12/26 21:37
dabochi : 下來 重做RAID1就是了 12/26 21:37
dabochi : 回主題 RAID5本身就是效率與費用的妥協 米不夠多就 12/26 21:39
danny8376 : 所以你知道這已經不RAID 5了嗎 12/26 21:39
danny8376 : 不然我是不是該說RAID 10/01叫RAID 0了? 12/26 21:40
dabochi : 認命吧 乖乖用RAID5 不然就是認份用排程做冷備份 12/26 21:41
danny8376 : 總之資料真的重要 比起RAID 多複製一分以上才實際 12/26 21:41
dabochi : 這個做法在現有的RAID定義中沒有定義 但是其實很常 12/26 21:46
dabochi : 見 高階一點的Storage都有 如果覺得不應該算RAID5應 12/26 21:48
dabochi : 用 那就叫RAID51吧 12/26 21:49
birdy590 : 現在的顯學是分散式儲存, 某一台整台掛掉都沒有影響 12/26 23:15
birdy590 : 只壞一兩顆硬碟當然更沒影響 12/26 23:15
kamichu : 還是同樣一句話看資料重要性,重要就raid1加異地 12/26 23:51
kamichu : 不重要就raid幾隨便自己爽就好,包括記憶體也會出錯 12/26 23:52
kamichu : 至於資料中心,每個檔案都有兩份三份 12/26 23:54
kamichu : btrfs的raid5有人用過嗎? 12/26 23:55
chang0206 : btrfs 一直都還在「體驗」階段 不敢在重要機器上面 12/27 00:32
chang0206 : 實際拿來應用 12/27 00:33
MrDisgrace : R幾沒差~重要會異地備份 公司只是陽春R5+hotspare 12/27 01:43
※ 編輯: Litfal (220.135.179.10), 12/27/2014 01:46:39
MrDisgrace : 法日美各有一份完整備份 各據點要自己保留15天備份 12/27 01:46
FLJX : 查了一下 國外2007就有人討論 2010 2013繼續延燒 12/27 02:05
FLJX : 加上電腦還有其他層的容錯機制 其實還在可以接受的 12/27 02:07
FLJX : 範圍。反之如果是真的重要一個bit都不能錯 12/27 02:08
FLJX : 那就raid6或raid51吧 12/27 02:08
lsc36 : 推樓上danny8376大的連結 12/27 02:11
felaray : 在現今公有雲的服務中,就算號稱99.95%的可靠性, 12/27 02:17
felaray : 也是包含要做異地備援的部分..所以只能說分散儲存 12/27 02:18
felaray : 也是一個必要的選項.. 12/27 02:18
smarttb1 : danny那個連結的結論明明就是否定那個算法 假設太強 12/27 10:07
smarttb1 : 這篇的標題聳動 有點譁眾取寵 實務上不是這樣 12/27 10:07
smarttb1 : 請原PO提出實驗數據證明你的結果吧 不然沒參考價值 12/27 10:09
smarttb1 : 低於50%的話 rebuild個幾次就會失敗吧 12/27 10:10
smarttb1 : 我們公司16*4TB的RAID5磁碟陣列 怎麼換硬碟沒遇到過 12/27 10:13
azopper : Raid5 容錯,備份另外作 12/27 15:20
cowbaying : TLER是WD的ERC 不要這麼針對WD好嗎? 12/30 20:22
cowbaying : 另外RAID 5有校驗位元 發生URE時除非另外幾顆也掛 12/30 20:25
cowbaying : 不然資料是100% 12/30 20:25
cowbaying : 不要小看陣列的演算法好嗎? 12/30 20:26
cowbaying : 你可以把這篇發給各DATA CENTER 看他們理不理你... 12/30 20:27
corlos : 一定是爆硬碟的悲憤文wwwwwwww 12/31 14:43
danny8376 : DC當然不會理啊 早就沒再用RAID5了 何必管RAID5怎樣 01/02 11:41
avans : 推! 11/15 19:51