2008/06/05

RAID 這個碗糕......

不太好懂的東西 XD


為了做個適當的備份磁碟
花了點時間去把 RAID 搞懂
前陣子小鵝非常懶
懶到連看技術文章都會喘

花了點時間把整個 RAID 的概念建立起來
至少把想了好幾年要弄懂的東西
一鼓作氣地塞進腦袋裡
( 雖然早就萎縮到沒剩多少容量了 :P )

簡單整理一下
順便當作自己的技術參考資料好了



RAID
原始的開發名稱叫 Redundant Array of Inexpensive Drives
後期廣為業界接受的正式名稱為 Redundant Array of Independent Disks
其實
前一個名字比較接近發展的概念
而後一個名字只是聽起來比較高科技罷了

Redundant Array of Independent Disks
中文叫做『獨立磁碟備援陣列』或簡稱『磁碟陣列』
基本上
硬碟的價格是
相同技術下單顆容量越大價格就越高
也就是說
以價格面來考量同樣是 1TB 總容量的話
(250GB) x4 < (500GB) x2 < (1TB) x1

因此
經由一個控制晶片
『把一堆便宜的硬碟搞在一起當成一個很大的硬碟來用』
就是 RAID 的基本概念
小鵝之前提到
RAID 主流型式分為 JBOD、RAID 0、RAID 1、RAID 5、RAID 6 這幾種
簡單解釋如下:


【JBOD (Just a Bunch Of Disks)】

字面上說得很明顯
就是把一狗票硬碟靠晶片組合併當成一個大硬碟來用
資料存放的時候
是從序列第一個開始放
放滿了再依序存下去
所以整體容量就是全部硬碟的總和
讀取速度就是單顆硬碟的效能
在資料備份安全性上等於是零
就是其中哪一顆硬碟掛了
上面的資料就直接升天


【RAID 0】

概念接近 JBOD
不過資料存放的時候
是把單一檔案均分給各個硬碟
讀取的時候也是從各硬碟去讀出來
因此
整體容量也是全部硬碟的總和
讀取速度理論值就是所有硬碟效能總和
是 RAID 架構中最高速的存取方式
在資料備份安全性上比零還要爛
因為只要裡頭任何一顆掛掉
整個 RAID 0 的所有所有資料當場直接說再見!


【RAID 1】

這個架構用的是 mirror 鏡像原理
也就是
整個硬碟串彼此之間的內容是長得一模一樣的
對 RAID 1 寫入一筆資料時
是同時對每一顆硬碟都寫入相同的資料
因此
總容量其實就是單顆硬碟的大小而已
完全沒有變大
存取效能單然也是一顆的能耐
但是基本上是個極為安全的資料備份方式
因為
整個硬碟串裡
只要還有任一顆硬碟活著
那麼所有的資料就都可以救回來
嚴格來說
就是賭硬碟一起攜手自殺的機率


【RAID 5】

簡單來說
就是 RAID 0 跟 RAID 1 的整合方案
整個 RAID 5 架構至少要有 3 顆硬碟以上才能工作
因為
他必須犧牲一顆硬碟的空間
來儲存所謂的『奇偶檢查碼』
( 那是蝦洨?別問我...... )
而把所有的資料根據 RAID 0 的方式打散儲存在剩下的各顆硬碟裡
因此
總容量不會像 RAID 1 只有單顆的大小
而是總硬碟數量減去一顆之後的的剩下大小
當這些資料儲存硬碟裡有『某一顆』掛了
( 沒錯!只能有一顆!)
可以根據奇偶檢查碼與其他硬碟的剩餘資料比對
來重建整個檔案架構
因此
比起 RAID 0 來說安全了些


【RAID 6】
其實
這就是 RAID 5 的進階版
比 RAID 5 可以多容許一顆硬碟掛掉
也就是至少要有三顆資料儲存碟
掛了兩顆
還可以有一顆跟另一顆奇偶檢查碼去比對重建死掉的兩顆



所以
總括上面的概念
JBOD 在效率與資料安全性上都沒啥營養
RAID 0 快到不像話但是也危險到不像話
RAID 1 非常安全但是容量就是有單顆硬碟而已
RAID 5 與 RAID 6 兼具執行效率與某個程度上的資料安全性

因此
從資料安全性的角度來看
RAID 1、RAID 5、RAID 6 會是最恰當的方法
但是
RAID 5 跟 6 需要很大的硬碟量
整體成本也會相對提高
而 RAID 1 最少只需要 2 顆硬碟就可以運作
在基本小容量的架構下
其實是比較划算的



大概是這樣吧?

寫到這裡都已經頭暈了~ 噗疵~

15 則留言:

  1. 哇! 認真的小鵝最鵝氣
    RAID...唔, 停在應用階段.
    奇偶檢查碼-回到電腦資料的基礎01比對, 應用簡單的表格清單, 校正資料內容.

    回覆刪除
  2. 老大......您太強了!!
    小的對您..五體投地..

    回覆刪除
  3. 真是簡單明瞭的看圖說故事,一聽就懂。
    順便也研究一下這玩意如何?
    http://www.drobo.com
    尤其是網站上那個示範影片一定要看,神乎其技的呢!
    但是非常可惜的,小弟去函問了半天,台灣就是買不到,其他國家的網站也大多不送至台灣,否則以它的價格與神奇的表現來說,實在比現存的任一種RAID都還吸引人。
    (很可惜只有USB2.0連接,如果有FireWire800,一定不惜代價弄來...)

    回覆刪除
  4. 太強了!說文解字還附圖!
    以後看不懂的全部都麻煩小鵝了~

    回覆刪除
  5. 路過幫小鵝兄補充一下,
    Raid 5的「奇偶檢查碼」(ParityBit)
    其實是分佈在各顆硬碟上的,
    有別於沒人在用的 Raid3、Raid4

    奇偶檢查碼簡單來說,是用XOR得出
    1 xor 1 → 0、0 xor 0 → 0
    1 xor 0 → 1、0 xor 1 → 1
    所以我們可以用剩下的算出不見的那顆硬碟資料

    獻醜了 :D

    回覆刪除
  6. 那,萬一掛的是奇偶檢查碼的硬碟
    眾硬碟們裡的資料會一起升天嗎?@@

    回覆刪除
  7. To: [ appleseed ]
    家屬答禮~~~


    To: [ meiching ]
    賣啊哩共~ 賣啊哩共~


    To: [ ky ]
    包括課本嗎?小鵝最不愛唸書了!


    To: [ jinsuke ]
    做給 Mac 的產品居然只用 USB 介面,
    這廠商的思維有點這個那個......


    To: [ 沃夫崗 ]
    小鵝的概念是:
    RAID 5 最多掛一顆,
    所以如果掛到檢查碼那顆,
    就變成 RAID 0 的感覺,
    然後再靠資料碟的部份去弄出奇偶檢查碼。
    但是如果是這樣的話,
    那 RAID 6 的掛兩顆概念就有缺失,
    要是兩顆裡頭有一顆是奇偶檢查碼的,
    那就死定。
    因此,
    備份最好是要兩組以上,
    包括異地備援!

    回覆刪除
  8. To: [ 糖姊 ]
    地瓜吃太多的時候,確實會有些鵝氣......
    受教了!感謝!


    To: [ 小蔡 ]
    >> Raid 5的「奇偶檢查碼」(ParityBit)
    >> 其實是分佈在各顆硬碟上的,
    >
    再請教:
    那麼 RAID 5 跟 RAID 6 所用掉的那一顆硬碟,
    裡頭存放的究竟是?

    回覆刪除
  9. 有兩筆資料 A 跟 B,
    假設我們寫在 Raid 5 的 Array 上,
    那麼資料會以以下的方式存放:
    Disk0 Disk1 Disk2 Disk3
    A1 A2 A3 Ap
    B1 Bp B2 B3
    其中的 Ap、Bp 表示資料 A 跟 B 的奇偶檢查碼
    這個檢查碼,並不一定會存放在哪顆硬碟上
    (有別於 Raid3 的差異就在這,因為 R3 是固定一顆硬碟存放 檢查碼)

    如果說,今天我們的 Disk1 故障了,
    當我們存取 DataA 時,他會利用剩餘的 A1 xor A3 xor Ap 得出 A2,以還原 DataA
    DataB 因為只喪失檢查元,所以不用運算
    因此,要說 R5 Degrade 之後會變成 R0,其實有點不太對
    因為 R0 不用再經過運算這層,但是 R5 需要,所以效能會差一點。

    至於 Raid6,小弟我碰到的不多,所以就不敢亂講
    目前外面企業級較常用的還是以 R5 為主
    一些儲存大廠,像 EMC 之類的也是最近才加入 R6 功能
    實踐 R6 的方法不少,通常都以 Array 中可以 Fail 兩顆硬碟為目標在實做
    R5 的最低硬碟要求數是三顆,而 R6 是四顆

    另外有一點是,
    R1 在實做上,都是以雙倍數在做
    像是兩顆、四顆、六顆
    而四顆以上的就是歸屬於 Raid01
    大致上是這樣,拉理拉雜的講了一堆..orz

    回覆刪除
  10. To: [ 小蔡老師 ]

    非常感謝您的說明!

    因此,
    所謂的 RAID 5 會用掉一個硬碟的空間,
    其實指的不是實體硬碟,
    而是『總共一個硬碟單位大小的資料量』?
    如此一來,
    確實 RAID 5 degrade 之後是與 RAID 0 不同的。

    另外請教,
    您提到 RAID 1 架構的問題。
    然而就技術層面來說,
    能否以單數數量的硬碟架 RAID 1?
    還是廠商提供的 RAID 控制卡,
    都已經限制必須強制以雙數架設?

    謝謝 :)

    回覆刪除
  11. 路人甲經過~
    RAID 5所使用掉的是一顆硬碟的容量
    這點是沒有問題的,像有些採用R5商用的磁碟櫃,可能是一排12顆HD的位置,其中安裝11顆硬碟,第12顆做為備用。
    當11顆中某顆掛掉時,自動在第12顆上重建資料。

    另外R1的問題,應該這麼說
    R1是一個Mirror的機制,所以至少需要"乘以2"的硬碟數
    那乘以3,4,5,6.....可不可以呢?
    技術上當然沒問題,但卻不符合實際效益
    因為乘以2,你實際可使用的硬碟容量只有總硬碟容量的50%
    乘以3的話,就只剩33.3%,依此類推。
    當你乘以越多倍,但是卻浪費大量空間,而只能得到與乘以2一樣的Mirror效益
    因此目前R1都是採用乘以2的方式或者與R0共同運作的方式

    回覆刪除
  12. To: [ YJKO ]

    謝謝您的解說 :)

    小鵝越來越有基本概念囉~

    回覆刪除
  13. 很詳細明瞭的解說
    謝謝!
    有個小typo...
    以價格面來考量同樣是"1GB"總容量的話(<= 1TB)
    (250GB) x4 < (500GB) x2 < (1TB) x1

    回覆刪除
  14. To: [ 匿名 ]

    超感謝您的提醒,
    已更正 :D

    回覆刪除