RAID級別你選誰

kitesky發表於2005-12-30
到底哪一種適合你,不只是成本問題,容錯功能和傳輸效能的考慮以及未來之可擴充性都應該符合應用的需求。[@more@]

RAID 在市場上的的應用,已經不是新鮮的事兒了,很多人都大略瞭解RAID的基本觀念,以及各個不同RAID LEVEL 的區分。但是在實際應用面,我們發現,有很多使用者對於選擇一個合適的RAID LEVEL,仍然無法很確切的掌握,尤其是對於RAID 0+1 (10),RAID 3,RAID 5之間的選擇取捨,更是舉棋不定。

  本文將針對RAID 0+1/10、RAID 3以及RAID 5的工作原理和特性,作一些分析和比較,以列出這些不同RAID階層所適合的應用,希望對各位能有原則性的幫助。

   RAID條切“striped”的存取模式

  在使用資料條切﹝Data Stripping﹞ 的RAID 系統之中,對成員磁碟驅動器的存取方式,可分為兩種:

  並行存取﹝Paralleled Access﹞
  獨立存取﹝Independent Access﹞

  RAID 2和RAID 3 是採取並行存取模式。

  RAID 0、RAID 4、RAID 5及RAID 6則是採用獨立存取模式。

   平行存取模式

  並行存取模式支援裡,是把所有磁碟驅動器的主軸馬達作精密的控制,使每個磁碟的位置都彼此同步,然後對每一個磁碟驅動器作一個很短的I/O資料傳送,如此一來,從主機來的每一個I/O 指令,都平均分佈到每一個磁碟驅動器。

  為了達到並行存取的功能,RAID 中的每一個磁碟驅動器,都必須具備幾乎完全相同的規格:轉速必須一樣;磁頭搜尋速度﹝Access Time﹞必須相同;Buffer 或Cache的容量和存取速度要一致;CPU處理指令的速度要相同;I/O Channel 的速度也要一樣。總而言之,要利用並行存取模式,RAID 中所有的成員磁碟驅動器,應該使用同一廠牌,相同型號的磁碟驅動器。

   

  並行存取的基本工作原理

  假設RAID中共有四部相同規格的磁碟驅動器,分別為磁碟驅動器A、B、C和D,我們在把時間軸略分為T0、T1、T2、T3和T4:

T0: RAID控制器將第一筆資料傳送到A的Buffer,磁碟驅動器B、C和D的Buffer都是空的,在等待中
T1: RAID控制器將第二筆資料傳送到B的Buffer,A開始把Buffer中的資料寫入扇區,磁碟驅動器C和D的Buffer都是空的,在等待中
T2: RAID控制器將第三筆資料傳送到C的Buffer,B開始把Buffer中的資料寫入扇區,A已經完成寫入動作,磁碟驅動器D和A的Buffer都是空的,在等待中
T3: RAID控制器將第四筆資料傳送到D的Buffer,C開始把Buffer中的資料寫入扇區,B已經完成寫入動作,磁碟驅動器A和B的Buffer都是空的,在等待中
T4: RAID控制器將第五筆資料傳送到A的Buffer,D開始把Buffer中的資料寫入扇區,C已經完成寫入動作,磁碟驅動器B和C的Buffer都是空的,在等待中
 
如此一直迴圈,一直到把從主機來的這個I/O 指令處理完畢,RAID控制器才會受處理下一個I/O 指令。重點是在任何一個磁碟驅動器準備好把資料寫入扇區時,該目的扇區必須剛剛好轉到磁頭下。同時RAID控制器每依次傳給一個磁碟驅動器的資料長度,也必須剛剛好,配合磁碟驅動器的轉速,否則一旦發生miss,RAID 效能就大打折扣。

  並行存取RAID的最佳應用

  並行存取RAID之架構,以其精細的馬達控制和分佈之資料傳輸,將陣列中每一個磁碟驅動器的效能發揮到最大,同時充分利用Storage Bus的頻寬,因此特別適合應用在大型、資料連續的檔案存取應用,例如:

  影像、視訊檔案伺服器
  資料倉儲系統
  多媒體資料庫
  電子圖書館
  印前或底片輸出檔案伺服器
  其它大型且連續性檔案伺服器

  由於並行存取RAID架構之特性,RAID 控制器一次只能處理一個I/O要求,無法執行Overlapping 的多工,因此非常不適合應用在I/O次數頻繁、資料隨機存取、每筆資料傳輸量小的環境。同時,因為並行存取無法執行Overlapping 的多工,因此沒有辦法"隱藏"磁碟驅動器搜尋﹝seek﹞的時間,而且在每一個I/O的第一筆資料傳輸,都要等待第一個磁碟驅動器旋轉延遲﹝rotational latency﹞,平均為旋轉半圈的時間,如果使用一萬轉的磁碟驅動器,平均就需要等待50 usec。所以機械延遲時間,是並行存取架構的最大問題。

   獨立存取模式

  相對於並行存取模式,獨立存取模式並不對成員磁碟驅動器作同步轉動控制,其對每個磁碟驅動器的存取,都是獨立且沒有順序和時間間格的限制,同時每筆傳輸的資料量都比較大。因此,獨立存取模式可以儘量地利用overlapping 多工、Tagged Command Queuing等等高階功能,來"隱藏"上述磁碟驅動器的機械時間延遲﹝Seek 和Rotational Latency﹞。

  由於獨立存取模式可以做overlapping 多工,而且可以同時處理來自多個主機不同的I/O Requests,在多主機環境﹝如Clustering﹞,更可發揮最大的效能。

  獨立存取RAID的最佳應用

  由於獨立存取模式可以同時接受多個I/O Requests,因此特別適合應用在資料存取頻繁、每筆資料量較小的系統。例如:

  線上交易系統或電子商務應用
  多使用者資料庫
  ERM及MRP 系統
  小檔案之檔案伺服器

一般常用的RAID階層,分別是RAID 0、RAID1、RAID 3、RAID 4以及RAID 5,再加上二合一型 RAID 0+1﹝或稱RAID 10﹞。我們先把這些RAID級別的優、缺點做個比較:
 

RAID級別 相對優點 相對缺點
RAID 0 存取速度最快 沒有容錯
RAID 1 完全容錯 成本高
RAID 3 寫入效能最好 沒有多工功能
RAID 4 具備多工及容錯功能 Parity 磁碟驅動器造成效能瓶頸
RAID 5 具備多工及容錯功能 寫入時有overhead
RAID 0+1/RAID 10 速度快、完全容錯 成本高


  接下來,我們分別針對RAID 3、RAID 5以及RAID 0+1/RAID 10作深入的討論。

  RAID 3特點與應用

  RAID 3 是將資料先做XOR 運算,產生Parity Data後,在將資料和Parity Data以並行存取模式寫入成員磁碟驅動器中,因此具備並行存取模式的優點和缺點。進一步來說,RAID 3每一筆資料傳輸,都更新整個Stripe﹝即每一個成員磁碟驅動器相對位置的資料都一起更新﹞,因此不會發生需要把部分磁碟驅動器現有的資料讀出來,與新資料作XOR運算,再寫入的情況發生﹝這個情況在RAID 4和RAID 5會發生,一般稱之為Read、Modify、Write Process,我們姑且譯為為讀、改、寫過程﹞。因此,在所有RAID級別中,RAID 3的寫入效能是最好的。

  RAID 3的 Parity Data 一般都是存放在一個專屬的Parity Disk,但是由於每筆資料都更新整個Stripe,因此,RAID 3的 Parity Disk 並不會如RAID 4的 Parity Disk,會造成存取的瓶頸。

  RAID 3的並行存取模式,需要RAID 控制器特別功能的支援,才能達到磁碟驅動器同步控制,而且上述寫入效能的優點,以目前的Caching 技術,都可以將之取代,因此一般認為RAID 3的應用,將逐漸淡出市場。

  RAID 3 以其優越的寫入效能,特別適合用在大型、連續性檔案寫入為主的應用,例如繪圖、影像、視訊編輯、多媒體、資料倉儲、高速資料擷取等等。

  RAID 4特點與應用

  RAID 4 是採取獨立存取模式,同時以單一專屬的Parity Disk 來存放Parity Data。RAID 4的每一筆傳輸﹝Strip﹞資料較長,而且可以執行Overlapped I/O,因此其讀取的效能很好。

  但是由於使用單一專屬的Parity Disk 來存放Parity Data,因此在寫入時,就會造成很大的瓶頸。因此,RAID 4並沒有被廣泛地應用。

  RAID 5特點與應用

  RAID 5也是採取獨立存取模式,但是其Parity Data 則是分散寫入到各個成員磁碟驅動器,因此,除了具備Overlapped I/O 多工效能之外,同時也脫離如RAID 4單一專屬Parity Disk的寫入瓶頸。但是,RAI?D 5在座資料寫入時,仍然稍微受到"讀、改、寫過程"的拖累。

  由於RAID 5 可以執行Overlapped I/O 多工,因此當RAID 5的成員磁碟驅動器數目越多,其效能也就越高,因為一個磁碟驅動器再一個時間只能執行一個 Thread,所以磁碟驅動器越多,可以Overlapped 的Thread 就越多,當然效能就越高。但是反過來說,磁碟驅動器越多,陣列中可能有磁碟驅動器故障的機率就越高,整個陣列的可靠度,或MTDL (Mean Time to Data Loss) 就會降低。

  由於RAID 5將Parity Data 分散存在各個磁碟驅動器,因此很符合XOR技術的特性。例如,當同時有好幾個寫入要求發生時,這些要寫入的資料以及Parity Data 可能都分散在不同的成員磁碟驅動器,因此RAID 控制器可以充分利用Overlapped I/O,同時讓好幾個磁碟驅動器分別作存取工作,如此,陣列的整體效能就會提高很多。

  基本上來說,多人多工的環境,存取頻繁,資料量不是很大的應用,都適合選用RAID 5 架構,例如企業檔案伺服器、WEB 伺服器、線上交易系統、電子商務等應用,都是資料量小,存取頻繁的應用。

  RAID 0+1﹝RAID 10﹞

  RAID 0+1/RAID 10,綜合了RAID 0 和 RAID 1的優點,適合用在速度需求高,又要完全容錯,當然經費也很多的應用。RAID 0和RAID 1的原理很簡單,合起來之後還是很簡單,我們不打算詳細介紹,倒是要談談,RAID 0+1到底應該是RAID 0 over RAID 1,還是RAID 1 over RAID 0,也就是說,是把多個RAID 1 做成RAID 0,還是把多個RAID 0 做成RAID 1?

RAID 0 over RAID 1

  假設我們有四臺磁碟驅動器,每兩臺磁碟驅動器先做成RAID 1,再把兩個RAID 1做成RAID 0,這就是RAID 0 over RAID 1:

  (RAID 1) A = Drive A1 + Drive A2 (Mirrored)
  (RAID 1) B = Drive B1 + Drive B2 (Mirrored)
  RAID 0 = (RAID 1) A + (RAID 1) B (Striped)

  RAID 1 over RAID 0

  假設我們有六臺磁碟驅動器,每兩臺磁碟驅動器先做成RAID 0,再把兩個RAID 0做成RAID 1,這就是RAID 0 over RAID 1:

  (RAID 0) A = Drive A1 + Drive A2 (Striped)
  (RAID 0) B = Drive B1 + Drive B2 (Striped)
  RAID 1 = (RAID 1) A + (RAID 1) B (Mirrored)

  在這種架構之下,如果 (RAID 0) A有一臺磁碟驅動器故障,(RAID 0) A就算毀了,當然RAID 1仍然可以正常工作;如果這時 (RAID 0) B也有一臺磁碟驅動器故障,(RAID 0) B也就算毀了,此時RAID 1的兩磁碟驅動器都算故障,整個RAID 1資料就毀了。

  因此,RAID 0 OVER RAID 1應該比RAID 1 OVER RAID 0具備比較高的可靠度。所以我們建議,當採用RAID 0+1/RAID 10架構時,要先作RAID 1,再把數個RAID 1做成RAID 0。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-812502/,如需轉載,請註明出處,否則將追究法律責任。

相關文章