Chinaunix首页 | 论坛 | 博客
  • 博客访问: 663503
  • 博文数量: 198
  • 博客积分: 4256
  • 博客等级: 上校
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-15 13:12
文章分类

全部博文(198)

文章存档

2012年(12)

2011年(39)

2010年(135)

2009年(12)

我的朋友

分类: 服务器与存储

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), 如下圖:
01.jpg

RAID 1+0 是先 RAID 1(mirror)再 RAID 0(stripe), 如下圖:
10.jpg

這兩種 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但預算限制

阅读(909) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~