分类: 服务器与存储
2011-10-08 08:19:58
http://www.hsiaoi.com/blog/?p=44
所謂的「RAID」,是「Redundant Array of Independent Disks 」的縮寫,也就是「獨立磁碟備援陣列」的意思。也有人將它說成「Redundant Array of Inexpensive Drives」﹙低價硬碟備援陣列﹚,當初RAID技術發表時用的是這個全名,不過現在則是前者的說法較多人採用。
其中「Redundant」是「過多、多餘」的意思,要組成一部磁碟機通常只需一顆硬碟,甚至一顆硬碟還能分割成許多磁碟區。但是在組RAID磁碟機時,要用上的硬碟比一顆還要「多」,也就是要用上2顆以上的硬碟。
因此RAID在實體上是多顆硬碟,在系統中被當作一顆硬碟使用,而在作業系統底下,也還是可以將它分割為單一或多個分割區。因此建立好的RAID, 使用起來跟單一硬碟是完全相同的,只是依組成方式的不同,RAID可以提供更大的容量、更高的讀寫效能,或是額外的「安全性」。﹙這裡所說的「安全性」, 是指硬碟損毀之後資料重建、回復的能力,與加密防駭等功能無關﹚
而且RAID的「容量、速度、安全性」加成之後的CP值,能夠遠遠高於相同效能表現的超高階硬碟,這才是許多玩家樂於採用的主因。RAID的組成方式很多,在進入我們的測試之前,先帶大家看看RAID的各種類別。
0+1 跟 1+0 差異?
RAID 0+1 是先 RAID 0(stripe)再 RAID 1(mirror), 如下圖:
RAID 1+0 是先 RAID 1(mirror)再 RAID 0(stripe), 如下圖:
這兩種 RAID 技術主要的差異在於 performance 及 reliability 的差別. 以下分幾種 disk failure 的 case 來討論. 每一[]表示一顆硬碟.
Case 1. 任何一顆硬碟損壞
RAID 0+1 : 另一個 stripe 可繼續運作, 但本身成為 SPOF.
RAID 1+0 : 兩個 segments 均可繼續運作, 所以無 SPOF 的 concern. (勝)
Case 2. 兩個 stripe/segment 各損壞一顆硬碟
RAID 0+1 : 兩個 stripes 都無法繼續運作.
RAID 1+0 : 兩個 segments 均可繼續運作, 所以無 SPOF 的 concern. (勝)
Case 3. 同一個 stripe/segment 損壞兩顆硬碟
RAID 0+1 : 另一個 stripe 可繼續運作, 但本身成為 SPOF.
RAID 1+0 : 若損壞的兩顆,屬於同一 mirror set, 則無法繼續運作(敗);若屬於不同 mirror set, 則兩個 segments 均可繼續運作, 所以無 SPOF 的 concern. (勝)
綜合以上分析, RAID 1+0 不是在所有的情況下, 它的 reliability 都優於 RAID 0+1, 但是在大部分的情況, RAID 1+0 的 reliability 是優於 RAID 0+1 的. 所以 RAID 0+1 適用於對 performance 的需求高於 reliability 的環境;RAID 1+0 則相反.
另外在 recovery 的情況, RAID 0+1 要重新 mirror 整個 stripe; 而 RAID 1+0 只要重新 mirror 一顆硬碟即可.
除了 performance 和 reliability 上的差異, 兩者在 poor scalability 和 high cost 的特性均相同.
JBOD (Just Bunch of Disks)
這種組成方式嚴格來說不算RAID,因為它的功能就跟它的全名一樣,「只是將多顆磁碟湊在一起」, 當作一顆超大硬碟來用。假設是4顆250GB的大硬碟,在JBOD模式下就成了一顆1TB﹙=1000GB﹚的超高容量硬碟,但是除了容量提升之外,它的 速度還是跟單一硬碟相同,也沒有額外的安全性。
RAID 0 (Striped)
這是最簡單也最猛的一種磁碟陣列,它的功能是在資料寫入時,將資料分割成幾個小區塊,分別存到各顆硬碟裡,因此可以提升寫入速度。當需要讀取時,再分別由所有硬碟裡將小區塊抓出來,所以也有較高的讀取速度。
但它的缺點是只要其中一顆硬碟壞掉,或只是小小的出點問題,都可能因為一小部分資料的不完整,就造成整個磁碟陣列無法正常讀取,全部的資料就這樣毀 於一旦,完全沒有安全性可言。儘管如此,RAID 0存取效能隨著組成硬碟數目增加而提升的特性,對於「效能至上」的玩家們還是有不小的吸引力。
RAID 1 (Mirrored)
這種磁碟陣列是將單一磁碟作「鏡射」(Mirror)的動作,也就是資料寫入時將相同的資料同時丟進兩顆硬碟,確保所有的資料都隨時存在另一個備 份。因為對單一硬碟寫入的資料量不變,所以寫入速度跟非RAID磁碟機沒有差別,不過在讀取時能同時由兩顆硬碟抓取資料,所以速度還是有所提升。
RAID 10 / 01 (Striped & Mirrored)
這是將RAID 0與RAID 1的架構作結合用的磁碟陣列,10與01的差別僅是先鏡射再分割資料,或是先分割再將資料鏡射到兩組硬碟,但功能是相同的,而且都需由4顆硬碟組成。這種 組法同時具備效能提升與資料備份的優點,只要不是「同組鏡射」的兩顆硬碟同時毀損,資料都可以救得回來。
RAID 2.3.4
這幾種RAID一直都沒有成為主流,也很少有硬體支援這幾種組法。它們都是由RAID 0改良而來,RAID 2是以位元為單位將資料分割寫入,並加入位元檢查用的錯誤修正碼(ECC),並以「漢明碼」來作資料編碼,單一磁碟毀損時可以藉此將故障硬碟的所有資料還原回來。
RAID 3則是改用的方式作資料編碼,並獨立使用一顆硬碟來存放同位檢查用的資料。而RAID 4同樣是以「同位元檢查」編碼、獨立硬碟存放檢查碼,但是資料的分割改回用資料區塊為單位。這兩種方式都至少需要3顆硬碟。
RAID 5 (Parity RAID)
RAID 5是由RAID 2.3.4改良而來,終於成為比較普及的一種架構。 它先將原始資料與同位檢查位元作組合,再以位元為單位分散存放在所有硬碟中,因此不需多用一部硬碟來存放檢查碼。但RAID 5實際上仍需一顆硬碟的容量來存放同位檢查碼,所以RAID整體的可用容量會等於總容量減去單顆硬碟容量,只是這個浪費的空間是分散在各顆硬碟中。RAID 5因為是分散的存取架構,因此效能提升明顯,而且任何一顆硬碟毀損,都還可以救得回來。 雖有浪費一顆硬碟容量的缺點,但是跟RAID 10 / 01一半的容量浪費相比,RAID 5單顆容量換得的安全性可說是相當划算。
各種RAID架構比較表
RAID方案 | 硬碟數 | 可用容量 | 效能 | 安全性 | 主要應用 |
JBOD | 大於2 | 全部 | 不變 | 幾乎等於0 | 容量至上 |
RAID 0 | 大於2 | 全部 | 最高 | 危險 | 追求效能的狂熱玩家 |
RAID 1 | 2 | 總容量的50% | 稍有提升 | 最高 | 完全不能出錯的資料備份 |
RAID 0+1 | 4以上的偶數 | 總容量的50% | 高 | 極高 | 同時需要備份和效能,且預算無上限 |
RAID 5 | 3以上 | N-1顆 | 讀快寫慢 | 好 | 同RAID 0+1但預算限制 |