組建 NAS 磁碟腦袋不再卡卡,RAID 模式全方位分析

組建 NAS 磁碟腦袋不再卡卡,RAID 模式全方位分析

ADVERTISEMENT

不論是什麼原因而購買了  NAS  這項產品,大部分的使用者都很難逃過「該選哪種  RAID  模式」這一關。心懷「聽說選  RAID 0  比較快可是很危險?」、「為什麼  RAID 1  會讓可用空間減半?」、「相傳  RAID 5 在重建時很容易崩解?」等困惑嗎?讓我們來一解你心中對 RAID 疑惑。……

RAID 為 Redundant Array of Independent Disks(獨立硬碟冗餘陣列、容錯式磁碟陣列)的縮寫,主要就是藉由 1 群實體硬碟的不同組合方式,達到更高的效能或是資料安全性。RAID 在電腦上已經行之有年,翻翻主機板的使用說明書,不難找到晶片組支援 RAID 的資訊,只不過一般使用者很少啟用這項功能,消費性機殼產品設計也不容易讓使用者替換掉損壞的硬碟。

直到近幾年 NAS 這項產品的需求大開,存取效能也逐漸拉到 50~60MB/s 以上,加上傳統機械硬碟逐漸受到 SSD 的夾擊,硬碟廠商需要另外開拓市場,於是乎和 NAS 幾乎形影不離的 RAID,才又得到大家關愛的眼神。

因為 NAS 的主要工作就是儲存資料,而 NAS 中常見的資料儲存媒體即為硬碟,硬碟儲存空間該如何分配又會產生不同的效能和安全性,因此當使用者新建立 1 台 NAS 系統時,一定會遇到設定精靈詢問想用何種 RAID 方式。當然現在廠商設計都很不錯,能夠根據使用者放入的硬碟數量自動選擇 RAID 模式,不過除了下一步、下一步的無腦點選外,身為人還是要有點自我意識,了解何種 RAID 模式才是最適合自己的使用情境。

RAID 0:

  • 優點:使用 n 顆硬碟,即可擁有將近 n 倍的讀寫效能。
  • 缺點:資料安全性較低,同組陣列中任一硬碟發生問題就會造成資料遺失。
  • 硬碟數量:最少 2 個。

RAID 0 講求效能的極大化,使用者設定數顆實體硬碟在磁碟陣列中,欲寫入、讀取此硬碟陣列的資料,就會分成數份同時寫入、讀取。理論上來說,RAID 0 磁碟陣列中有幾顆實體硬碟,讀取、寫入效能就呈現倍數成長。若是磁碟陣列中的硬碟存取效能不一,則以最低效能硬碟的存取能力作為基準估算。

因為將資料拆分寫入硬碟的策略,使得 RAID 0 能夠使用到所有硬碟加總起來的容量。如果是在各個實體硬碟容量不同的情況,則能夠依照最小容量的那顆硬碟為標準建立 RAID 0,其它較大容量硬碟的多餘空間,則依磁碟陣列控制器的不同,而有不同的結果;較低階的控制器可能無法使用這部分的空間,高階的控制器則可做另外的規劃,例如做為單一的儲存空間使用或是組合成其它的 RAID 組態。

此外最近採用 PCIe 為連接介面的消費型 SSD,也經常使用 RAID 0 作為內部儲存空間的組合方式,因為 SSD 內部的快閃記憶體控制器原本就擁有較多層、較複雜的糾錯演算法,加上快閃記憶體和傳統硬碟的每儲存單位售價還是存在著一定距離,採用其它 RAID 模式會讓售價提升不少,以至於產生這樣的結果。

組建 NAS 磁碟腦袋不再卡卡,RAID 模式全方位分析
▲RAID 0。

RAID 1:

  • 優點:安全性依照陣列裡的實體硬碟數量倍數成長。
  • 缺點:空間利用率是所有 RAID 中最沒有效率的。
  • 硬碟數量:最少 2 個。

在 RAID 0 追求效能極端的彼岸,存在著強調資料安全性的 RAID 1,RAID 1 的資料儲存方式恰好與 RAID 0 相反,欲寫入硬碟的資料被複製成與硬碟相同數量的份數,分別寫入陣列中的各顆硬碟。如此一來每個硬碟內都擁有著同份資料的不同拷貝,只要陣列中的其中 1 顆硬碟還可使用,資料就不會遺失,可忍受 n-1 顆硬碟同時損毀(n 為陣列中實體硬碟的個數)。

效能部分則分為寫入和讀取 2 種不同狀況,寫入時因為須將資料複製多份寫入各顆硬碟,寫入效能與單顆硬碟差不多;讀取時則能夠同時從各顆硬碟同時讀取資料的不同部分,所以能夠和 RAID 0 相提並論,約是單顆硬碟讀取效能乘上陣列中的硬碟個數,不過也有以單顆硬碟讀取的設計。

陣列可使用容量是 RAID 1 最大的缺點,由於各實體硬碟中的資料幾乎是以鏡像的方式儲存,因此無論陣列中放入了多少顆硬碟,可用容量都是以最小的那顆硬碟為主;同 RAID 0,如果陣列中有著硬碟容量不一的情形,大硬碟的剩餘容量能否可利用端看控制器的設計,之後的 RAID 模式也是如此,將不再贅述。

組建 NAS 磁碟腦袋不再卡卡,RAID 模式全方位分析
▲RAID 1。

RAID 5:

  • 優點:兼顧空間利用率與安全性。
  • 缺點:需要額外的運算資源,僅能忍受 1 個硬碟損毀。
  • 硬碟數量:至少 3 個。

RAID 5 使用了和 RAID 0、RAID 1 較為不同的策略,相較 RAID 0 將資料拆分以及 RAID 1 的資料複製,RAID 5 則是將資料運算過後的糾錯檢查碼儲存起來,使用奇偶校驗碼、也就是 XOR 運算。詳細實作方式為,將資料分成 n-1 份(n 為磁碟陣列中的實體硬碟個數),分開寫入至各顆硬碟中。剩餘的那個空間,就會將分成 n-1 份的資料進行 XOR 運算後寫入;需注意的是資料與校驗碼是以交錯的方式放在各顆硬碟上,而不是有顆硬碟專門儲存校驗碼。

由於 RAID 5 多了 XOR 運算,所以效能的評估比較複雜,如果運算效能相當充足,存取效能可以接近於採用 n-1 顆硬碟的 RAID 0;如果 XOR 運算效能不足,則存取效能將會無限下探。加強效能的方式,以軟體∕韌體、驅動程式方式搭建的磁碟陣列來說,就是加強處理器的運算效能,如果是硬體獨立運算方式的 RAID 擴充卡∕擴充晶片,就是依照晶片上的 XOR 運算引擎為主。

此外還可開啟「寫入快取」的功能,先將資料寫入快取記憶體(電腦的系統記憶體、陣列卡上的 DRAM 模組等)中,之後再慢慢運算寫入硬碟中,在作業系統端來看就是已經寫入硬碟了。但是資料先行寫入斷電後就會消失的 DRAM,所以開啟寫入快取有著一層風險,萬一資料尚未完整寫入硬碟時斷電,則資料就會損毀。因此在部分硬體式的 RAID 擴充卡,還會有額外的電池模組可安裝,就是為了在意外斷電的情況下還能盡量保留 DRAM 內的資料,或者是直接寫入 RAID 卡上的非揮發性快閃記憶體之中。

還有個原因能夠影響 RAID 5 的存取效能,就是磁碟陣列中的實體硬碟數量,因為硬碟數量越多,每組奇偶校驗碼所對應的資料量就越多,運算過程就更為複雜。

安全性部分則是能夠容許任何 1 顆實體硬碟損毀,無論磁碟陣列中有著多少顆硬碟都是如此。因此 RAID 5 磁碟陣列中要放入多少顆實體硬碟,可以依照偏向安全性、效能、空間利用率來抉擇。假設各顆硬碟故障率都相同,越多顆硬碟,安全性越低(陣列中硬碟出錯機率升高)、效能越低(需要運算量增大)、空間利用率越高(奇偶校驗碼所需容量提攤至更多硬碟上);越少顆硬碟,安全性越高、效能越高、空間利用率越低。

組建 NAS 磁碟腦袋不再卡卡,RAID 模式全方位分析
▲RAID 5,注意校驗資訊是以交錯的方式分散在不同實體硬碟中。

 

(下一頁還有:RAID 6 與骨灰 RAID 模式介紹)

R.F.
作者

誤入叢林的小白兔,每天爬樓梯到七樓的白癡,幻想自己很瘦的豬,一放假就睡死的bed potato。

使用 Facebook 留言
司馬雲
1.  司馬雲 (發表於 2015年2月10日 09:48)
為什麼我怎麼算,raid50跟05最多都能容許4顆硬碟壞掉?
而最少是3顆
raid50是(data1 data2 xor) (data1 data2 xor)
所以在最極端的情況下,可以容許data1、data2跟xor各死一顆,再加上剩下的任意一顆,所以有4顆
raid05則是(data1 data1) (data2 data2) (xor xor)
這也是一樣,data1、data2跟xor各死一顆,再加上剩下的任意一顆
請問這樣的推論有錯嗎?
小明
2.  小明 (發表於 2015年2月10日 10:42)
raid05是(data1 data2) (data3 data4) (xor1 xor2)呦

你寫的看起來應該是raid15
司馬雲
3.  司馬雲 (發表於 2015年2月10日 16:44)
原來是我搞錯raid1了@@
可是我還是想不透為什麼raid05是只能容許一顆硬碟損壞。
raid50為(dataA1 dataB1 xor1) (dataA2 dataB2 xor2)
資料被分為兩組
由於每組可以各壞一顆,所以是多最多兩顆

而raid05為(dataA1 dataB1) (dataA2 dataB2) (xor1 xor2)
資料被分為三組,最多可以壞掉其中一組
所以一樣是最多兩顆啊
小明
4.  小明 (發表於 2015年2月11日 00:48)
我覺得你這邊說的 raid05 沒有錯,是可以容許壞掉其中一組才對~
<( ̄︶ ̄)>

另外 raid50 那邊,應該是可以容許兩組 raid5 各壞一顆才對,寫最多兩顆感覺不是很精準 (因為其中一組 raid5 壞兩顆,raid50 也是整組壞光光)
users
5.  users (發表於 2015年2月16日 21:08)
應該是電腦王的解釋有點問題,當然也可能是目前的技術可以做到也不一定。
就個人所知沒有05、06、15這類模式,所謂01應該也不存在,因為這幾種組合至多是理論或者概念上的成立但是不實際,也就是說沒有0X、2X、3X、4X、X4、X3、X2、X5、X6、X7、X1等模式,只有0、1、5、10、50、60被廠商實作而已。
JBOD不屬於RAID的範疇,應該主要是由第三方磁碟控制晶片廠商們所發展出來的功能罷了。
所以不管是RAID控制器還是NAS附加的RAID功能在設定選擇上目前應該最多就這六種(0、1、5、10、50、60),視產品位階、等級、價格帶和推出的時間會有所不同。
0模式不具RAID意義(強化儲存於磁碟上的資料的存在安全性)只是一種功能,其餘1~6模式才是有意義的,而它們與0模式組合的結果其實是延伸性的應用。
簡單說:
RAID 0至少要兩個磁碟,只要壞任何一個就完蛋。
RAID 1至少要兩個磁碟並且總磁碟數必須為偶數,但能忍受在同一時間壞任何一個。
RAID 5至少要三個磁碟,理論上可以忍受在同一時間壞任何一個。
RAID 6至少要四個磁碟,理論上可以忍受在同一時間壞任何兩個。
RAID 50至少要六個磁碟,理論上可以忍受在同一時間壞任何屬於同一模式5組成中任何一個。
→勉強算可以壞兩個。
RAID 60至少要八個磁碟,理論上可以忍受在同一時間壞任何屬於同一模式6組成中任何兩個。
→勉強算可以壞四個。

大致上就這樣,再解釋下去就沒完沒了了...
囧rz
users
6.  users (發表於 2015年2月16日 22:28)
補充:
模式01、05在純RAID控制器時期(其中高階的獨立控制器產品有具有網路介面的機種可以算是NAS的老祖或前身)有過廠商實作。
並且05很少見因為不實際(比01更不實用),在當時01還算有實用價值。
至於RAID 10其實也不實際,只不過因為NAS的4-bay低檔產品只能以此方案達成儲存安全性以便提升產品價格、位階,稍好一點的產品應當都有模式5可以選用。
RAID 10至少要四個磁碟並且總磁碟數必須為4的倍數,同一時間允許故障的磁碟數不太固定,至少和RAID 1的最基本組合一樣是一個;其實RAID 1的非基本組合(總數兩個磁碟以上)在理論上的同一時間能忍受的磁碟故障數量就已經不太固定了。
簡單講以多數使用者或者實際情況來說若非控制器不提供模式5或者以上(6、50、60)的功能,兩個磁碟以上不會選RAID 1;四個磁碟以上沒人去設定成RAID 10的,因為這兩類組態設定的資料可用容量都最多只有磁碟總數的一半而已。
╮(╯_╰)╭
users
7.  users (發表於 2015年2月16日 22:43)
再補充:
RAID 3在純RAID控制器時期也曾有廠商實作過,因為比0、1、10模式而言有可用容量較大的優點;但在RAID 5被大量實作後就慢慢消失了(可以算是被取代掉)。
(≧▽≦)
發表回應
謹慎發言,尊重彼此。按此展開留言規則