磁盤陣列原理祥解

磁盤陣列技術

由磁盤陣列角度來看
磁盤陣列的規格最重要就在速度,也就是CPU的種類。我們知道SCSI的演變是由SCSI 2 (Narrow, 8 bits, 10MB/s), SCSI 3 (Wide, 16bits, 20MB/s), Ultra Wide (16bits, 40MB/s), Ultra 2 (Ultra Ultra Wide, 80MB/s), Ultra 3 (Ultra Ultra Ultra Wide, 160MB/s),在由SCSI到Serial I/O,也就是所謂的 Fibre Channel (FC-AL, Fibre Channel - Arbitration Loop, 100 – 200MB/s), SSA (Serial Storage Architecture, 80 – 160 MB/s), 在過去使用 Ultra Wide SCSI, 40MB/s 的磁盤陣列時,對CPU的要求不須太快,因爲SCSI本身也不是很快,但是當SCSI演變到Ultra 2, 80MB/s時,對CPU的要求就非常關鍵。一般的CPU, (如 586)就必須改爲高速的RISC CPU, (如 Intel RISC CPU, i960RD 32bits, i960RN 64 bits),不但是RISC CPU, 甚至於還分 32bits, 64 bits RISC CPU 的差異。586 與 RISC CPU 的差異可想而知 ! 這是由磁盤陣列的觀點出發來看的。
由服務器的角度來看
服務器的結構已由傳統的 I/O 結構改爲 I2O ( Intelligent I/O, 簡稱 I2O ) 的結構,其目的就是爲了減少服務器CPU的負擔,纔會將系統的 I/O 與服務器CPU負載分開。Intel 因此提出 I2O 的架構,I2O 也是由一顆 RISC CPU ( i960RD 或I960RN ) 來負責 I/O 的工作。試想想若服務器內都已是由 RISC i960 CPU 來負責 I/O,結果磁盤陣列上卻仍是用 586 CPU, 速度會快嗎 ?

由操作系統的角度來看
                                SCO OpenServer 5.0                     32 bits
                                MicroSoft Windows NT                32 bits
SCO Unixware 7.x                        64 bits
                                MicroSoft Windows NT 2000        32 bit 64 bits
                                SUN Solaris                                64 bits ……..其他操作系統

在操作系統都已由 32 bits 轉到 64 bits,磁盤陣列上的CPU 必須是 Intel i960 RISC CPU才能滿足速度的要求。586 CPU 是無法滿足的 !

磁盤陣列的功能
使用磁盤陣列的好處,在於數據的安全、存取的速度及超大的存儲容量。如何確保數據的安全,則取決於磁盤陣列的設計與品質。其中幾個功能是必須考慮的:是否有環境監控器針對溫度、電壓、電源、散熱風扇、硬盤狀態等進行監控。磁盤陣列內的硬盤連接方式是用SCA-II整體後背板還是隻是用SCSI線連的?在SCA-II整體後背板上是否有隔絕芯片以防硬盤在熱插拔時所產生的高/低電壓,使系統電壓回流,造成系統的不穩定,產生數據丟失的情形。我們一定要重視這個問題,因爲在磁盤陣列內很多硬盤都是共用這同一SCSI總線!一個硬盤熱插拔,可不能引響其它的硬盤!甚幺是熱插拔或帶電插拔?硬盤有分熱插拔硬盤,80針的硬盤是熱插拔硬盤,68針的不是熱插拔硬盤,有沒有熱插拔,在電路上的設計差異就在於有沒有保護線路的設計,同樣的硬盤拖架也是一樣有分真的熱插拔及假的熱插拔的區別。
磁盤陣列內的硬盤是否有順序的要求?也就是說硬盤可否不按次序地插回陣列中,數據仍能正常的存取?很多人認爲不是很重要,不太會發生,但是可能會發生的,我們就要防止它發生。假如您用六個硬盤做陣列,在最出初始化時,此六個硬盤是有順序放置在磁盤陣列內,分爲第一、第二…到第六個硬盤,是有順序的,如果您買的磁盤陣列是有順序的要求,則您要注意了:有一天您將硬盤取出,做清潔時一定要以原來的擺放順序插回磁盤陣列中,否則您的數據可能因硬盤順序與原來的不苻,磁盤陣列上的控制器不認而數據丟失!因爲您的硬盤的SCSI ID號亂掉所致。現在的磁盤陣列產品都已有這種不要求硬盤有順序的功能,爲了防止上述的事件發生,都是不要求硬盤有順序的。

A.1 我們爲什幺需要磁盤陣列
目前人們逐漸認識了磁盤陣列技術。磁盤陣列技術可以詳細地劃分爲若干個級別0-5 RAID技術,並且又發展了所謂的 RAID Level 10, 30, 50的新的級別,本章節都會一一介紹。RAID是廉價冗餘磁盤陣列(Redundant Array of Inexpensive Disk)的簡稱。用RAID的好處簡單的說就是:
安全性高,速度快,數據容量超大
某些級別的RAID技術可以把速度提高到單個硬盤驅動器的400%。磁盤陣列把多個硬盤驅動器連接在一起協同工作,大大提高了速度,同時把硬盤系統的可靠性提高到接近無錯的境界。這些“容錯”系統速度極快,同時可靠性極高。
本節將討論這些新技術,以及不同級別RAID的優缺點。我們並不想涉及那些關鍵性的技術細節問題,而是將磁盤陣列和RAID技術介紹給對它們尚不熟悉的人們。相信這將幫助你選用合適的RAID技術。

A.2 RAID級別的定義
下表提供了6級RAID的簡單定義,本書其後部分將對各級RAID進行更詳盡的描述。

RAID級別        描述        速度*        容錯性能
RAID 0        硬盤分段        硬盤並行輸入/出        無
RAID 1        硬盤鏡像        沒有提高        有(允許單個硬盤錯)
RAID 2        硬盤分段加漢明碼糾錯        沒有提高        有(允許單個硬盤錯)
RAID 3        硬盤分段加專用
奇偶校驗盤        硬盤並行輸入/出        有(允許單個硬盤錯)
RAID 4        硬盤分段加專用
奇偶校驗盤需異步硬盤        硬盤並行輸入/出        有(允許單個硬盤錯)
RAID 5        硬盤分段加奇偶校驗
分佈在各硬盤        硬盤並行輸入/出比
RAID0稍慢        有(允許單個硬盤錯)

*對於單一容量昂貴硬盤(SLED)的性能提高

A.3 硬盤數據跨盤(Spanning) 數據跨盤技術使多個硬盤像一個硬盤那樣工作,這使用戶通過組合已有的資源或增加一些資源來廉價地突破現有的硬盤空間限制。    圖2所示爲4個300兆字節的硬盤驅動器連結在一起,構成一個SCSI系統。用戶只看到一個有1200兆字節的C盤,而不是看到C, D, E, F, 4個300兆字節的硬盤。在這樣的環境中,系統管理員不必擔心某個硬盤上會發生硬盤安全檢空間不夠的情況。因爲現在1200兆字節的容量全在一個卷(Volume)上(例如硬盤C上)。系統管理員可以安全地建立所需要的任何層次的文件系統,而不需要在多個單獨硬盤環境的限制下,計劃他的文件系統。
硬盤數據跨盤本身並不是RAID,它不能改善硬盤的可靠性和速度。但是它有這樣的好處,即多個小型廉價硬盤可以根據需要增加到硬盤子系統上。


圖2硬盤數據跨盤


A.4 硬盤分段(Disk Striping, RAID 0)
硬盤分段的方法把數據寫到多個硬盤,而不是只寫到一個盤上,這也叫作RAID O,在磁盤陣列子系統中,數據按系統規定的“段”(Segment)爲單位依次寫入多個硬盤,例如數據段1寫入硬盤0,段2寫入硬盤1,段3寫入硬盤2等等。當數據寫完最後一個硬盤時,它就重新從盤0的下一可用段開始寫入,寫數據的全過程按此重複直至數據寫完。
段由塊組成,而塊又由字節組成。因此,當段的大小爲4個塊,而塊又由256個字節組成時,依字節大小計算,段的大小等於1024個字節。第1~1024字節寫入盤0,第1025~2048字節寫盤1等。假如我們的硬盤子系統有5個硬盤,我們要寫20,000個字節,則數據將如圖3那樣存儲。
圖3硬盤分段

總之,由於硬盤分段的方法,是把數據立即寫入(讀出)多個硬盤,因此它的速度比較快。實際上,數據的傳輸是順序的,但多個讀(或寫)操作則可以相互重迭進行。這就是說,正當段1在寫入驅動器0時,段2寫入驅動器1的操作也開始了;而當段2尚在寫盤驅動器1時,段3數據已送驅動器2;如此類推,在同一時刻有幾個盤(即使不是所有的盤)在同時寫數據。因爲數據送入盤驅動器的速度要遠大於寫入物理盤的速度。因此只要根據這個特點編制出控制軟件,就能實現上述數據同時寫盤的操作。
遺憾的是RAID 0不是提供冗餘的數據,這是非常危險的。因爲必須保證整個硬盤子系統都正常工作,計算器才能正常工作,例如,假使一個文件的段1(在驅動器0),段2(在驅動器1),段3(在驅動器2),則只要驅動器0, 1, 2中有一個產生故障,就會引起問題;如果驅動器1故障,則我們只能從驅動器物理地取得段1和段3的數據。幸運的是可以找到一個解決辦法,這就是硬盤分段和數據冗餘。下面一小節將討論這個問題。

A.5 硬盤鏡像(RAID 1)
硬盤鏡像(RAID 1)是容錯磁盤陣列技術最傳統的一種形式,在工業界中相對地最被瞭解,它最重要的優點是百分之百的數據冗餘。RAID 0通過簡單地將一個盤上的所有數據拷貝到第二個盤上(或等價的存儲設備上)來實現數據冗餘,這種方法雖然簡單且實現起來相對較容易,但它的缺點是要比單個無冗餘硬盤貴一倍,因爲必須購買另一個硬盤用作第一個硬盤的鏡像。

圖4硬盤鏡像

硬盤鏡像最簡單的形式,是通過把二個硬盤連結在一個控制器上來實現的。圖4說明了硬盤鏡像。數據寫在某一硬盤上時,它同時被寫在相應的鏡像盤上。當一個盤驅動器發生故障,計算器系統仍能正常工作,因爲它可以在剩下的那塊好盤上操作數據。
因爲二個盤互爲鏡像,哪個盤出故障都無關緊要,二是盤在任何時間都包含相同的數據,任何一個都可以當作工作盤。在硬盤鏡像這個簡單的RAID方式中,仍能採用一些優化速度的方法,例如平衡讀請求負荷。當多個用戶同時請求得到數據時,可以將讀數據的請示分散到二個硬盤中去,使讀負荷平均地分佈在二個硬盤上。這種方法可觀地提高了讀數據的性能,因爲二個硬盤在同一時刻讀取不同的數據片。但是硬盤鏡像不能改善寫數據的性能。被“鏡像”的硬盤也可被鏡像到其它存儲設備上,例如可擦寫光盤驅動器,雖然以光盤作鏡像盤沒有用硬盤的速度快,但這種方法比沒有使用鏡像盤畢竟減少了丟失數據的危險性。
總之,鏡像系統容錯性能非常好,並可以提高讀數據的速度;它的缺點是需要雙份硬盤,因此價格較高。


A.6 硬盤分段和數據冗餘(RAID2~5)

硬盤分段改善了硬盤子系統的性能,因爲向硬盤讀寫數據的速度與硬盤子系統中硬盤數目成正比地增加,但它的缺點是硬盤子系統中任一硬盤的故障都會導致整個計算器系統失敗。整個分段的硬盤子系統部能作鏡像,如果已經用了4個硬盤進行分段,我們可以再增加4個分段的硬盤作爲原來4個硬盤的鏡像。很明顯這是昂貴的(雖然可能比鏡像一個昂貴的大硬盤來得便宜)。可以不用鏡像而用其它數據冗餘的方法來提供高容錯性能。可以選擇一神奇偶碼模式來實現上述方法,可以外加一個專作奇偶校驗用的硬盤(如在RAID 3中),或者可把奇偶校驗數據分散分佈在磁盤陣列的全部硬盤中。分佈式奇偶校驗數據(RAID 5)的例子示於圖5中。




圖5 RAID 5的硬盤分段
不管用何種級別的RAID,磁盤陣列總是用異或(XOR)操作來產生奇偶數據,當子系統中有一個硬盤發生故障時,也是用異或操作重建數據。下列簡單分析了XOR是怎樣工作的。

硬盤 A B C 奇偶盤 (A, B, C 異或的結果)
數據 1 0 1 0

首先記住在XOR操作中,2個數異或的結果是真(即“1”)時,這二個數中有且一個數爲1(另一個爲0)。我們假設A, B, C中B盤故障,此時可將A, C和奇偶數據XOR起來,得到B盤失去的數據0;同樣如C盤故障,我們可將A, B盤和奇偶盤的數據XOR,得到C盤原先的數據1。

如果推廣到7個盤的硬盤子系統:

硬盤 A B C D E F 奇偶位
數據 0 0 0 1 0 1 0

如果丟失B盤數據,我們可以XOR A, C, D, E, F和奇偶位來得到失去的B盤數據0。而XOR A, B, C, D, E, F和奇偶位可恢復D盤的數據1。
採用專用的奇偶校驗盤(如上所述,即RAID 3),當同時產生多個寫操作時,每次操作都要對奇偶盤進行寫入。這將產生I/O瓶頸效應。 RAID 5把奇偶位信息分散分佈在硬盤子系統的所有硬盤上(而不是使用專用的校驗盤0,這就改善了上述RAID 3中的奇偶盤瓶頸效應。圖5說明了RAID 5的一種配置,圖中奇偶信息散佈在子系統的每個硬盤上。利用每個硬盤的一部分來組成校驗盤,寫入硬盤的奇偶位信息將較均勻地分佈在所有硬盤上。所以某個用戶可能把它的一個數據段寫在硬盤A,而將奇偶信息寫在硬盤B,第二個用戶可能把數據寫在硬盤C,而奇偶信息寫在硬盤D。從這裏也可看出RAID 5的性能會得到提高。
這種方法將提高硬盤子系統的事務處理速度。所謂事務處理,是指處理從許多不同用戶來的多個硬盤I/O操作,由於可能同時有很多用戶與硬盤打交道,迅速向硬盤寫入數據,有時幾乎是同時進行的,這種情況下,用分佈式奇偶盤的方式比起用專用奇偶盤,瓶頸效應發生的可能性要小。
對硬盤操作來說,RAID 5的寫性能比不上直接硬盤分段(指沒有校驗信息的RAID 0)。因爲產生或存儲奇偶碼需要一些額外操作。例如,在修改一個硬盤上的數據時,其它盤上對應段的數據(即使是無關的數據)也要讀入主機,以便產生必要的奇偶信息。奇偶段產生後(這要花一些時間),我們要將更新的數據段和奇偶段寫入硬盤,這通常稱爲讀-修改-寫策略。因此,雖然RAID 5比RAID 0優越,但就寫性能來說,RAID 5不如RAID 0。
鏡像技術(RAID 1)和數據奇偶位分段(RAID 5)用於上述的硬盤子系統中時,都產生冗餘信息。但在RAID 1中,所有數據都被複制到第二個相同的硬盤上。在RAID 5,數據的XOR碼而不是數據本身被複制,因此可以用數據的非常緊湊的表現方式,來恢復由於某一硬盤故障而丟失的數據。
採用RAID 5時,對於5個硬盤的數組,有大約20%的硬盤空間用於存放奇偶碼,而十個硬盤的數組只有約10%的空間存放奇偶碼。在可用空間總的格式化空間的意義上來說,硬盤系統中的硬盤越多該系統就越省錢。
總之,RAID 5把硬盤分段和奇偶冗餘技術的優點結合在一起,這樣的硬盤子系統特別適合於事務處理環境,例如民航售票處,汽車出租站,銷售系統的終端,等等。在某些場合,可優先考慮RAID 1(在那些寫數據比讀數據更頻繁的情況)。但許多情況,RAID 5提供了將高性能,低價格和數據安全性綜合在一起的解決辦法。
A.7 RAID Level 10
 
 

A.8 RAID Level 30



A.9 RAID Level 50



A.10硬盤故障恢復
鏡像和RAID提供了從硬盤故障中恢復數據的新方法。因爲數據的所有部分都是有冗餘的,數據有效性很高(即使在硬盤發生故障時)。另一重要優點是,恢復數據的工作不用立即進行,因爲系統可以在一個硬盤有故障的情況下正常工作,當然在這種情況下,剩下的系統就不再有容錯性能。要避免丟失數據就必須在第二個硬盤故障前恢復數據。更換故障硬盤後,要進行數據恢復。在鏡像系統中“鏡像” 盤上有一個數據備份,因此故障硬盤(主硬盤或鏡像硬盤)通過簡單的硬盤到硬盤的拷貝操作就能重建數據,如圖6所示。這個拷貝操作比從磁帶上恢復數據要快得多。

圖6從鏡像盤恢復數據

RAID 5硬盤子系統中,故障硬盤通過無故障硬盤上存放的糾錯(奇偶)碼信息來重建數據。正常盤上的數據(包括奇偶信息部分)被讀出,並計算出故障盤丟失的那些數據,然後寫入新替換的盤。這個過程示於圖7,它比從磁帶上恢復數據要快不少。
設計靈活的磁盤陣列可以重新配置,替換盤的地址不一定和故障盤的地址相同,見圖8。這種靈活性使安裝過程變得更爲簡單。備用盤甚至可以在硬盤故障前預先連在系統上。在那種情況下,它就成了隨時可用的備份盤。這種盤通常稱爲“熱備份”。

圖7目標地址相同的替換盤


圖8目標地址不同的替換盤
A.11 可靠性和可用性
這二個名詞雖然相互關連,事實上卻代表了硬盤故障的二個不同的方面,可靠性指的是硬盤在給定條件下發生故障的概率。可用性指的是硬盤在某種用途中可能用的時間。利用這二個名詞,我們可以看到磁盤陣列是怎樣把我們的硬盤系統可靠性提高到接近百分之百的程度的。
磁盤陣列可以改善硬盤系統的可靠性。因爲某一硬盤中的數據可以從其它硬盤的數據中重新產生出來(例如RAID 5),所以很少會有機會使整個硬盤系統失效。硬盤子系統的可靠性因而大大改善了。
圖表9是RAID硬盤子系統與單個硬盤子系統的可靠性比較:
硬盤子系統        硬盤數時間        平均故障時間*        平均丟失數據時間
單個硬盤        1        30,000 小時        30,0000小時
RAID 0 (分段)        5        30,000 小時        6,0000小時
RAID 1 (鏡像)        2        30,000 小時        49,9百萬小時
RAID 5(分段加奇偶碼)        5        30,000 小時        46,2百萬小時

圖表9 硬盤子系統可靠性比較
   我們還必須考慮系統的可用性。單一硬盤系統的可用性比沒有數據冗餘的磁盤陣列要好,而冗餘磁盤陣列的可用性比單個硬盤的好得多。這是因爲冗餘磁盤陣列允許單個硬盤出錯,而繼續正常工作。此外,一個硬盤故障後的系統恢復時間也大大縮短(與從磁帶恢復數據相比)。最後,因爲發生故障時,硬盤上的數據是故障當時的數據,替後的硬盤也將包含故障時的數據(舉例說,前天晚上的備份數據)。要得到完全的容錯性能,計算器硬盤子系統的其它部件也必須有冗餘例如提供二個電源,或者配備雙份硬盤控制器。沒有其它部件的冗餘,即使有非常可靠的硬盤子系統,還是不能完全防止計算機系統的失效。
A.12 最佳化的容錯系統

如先前所述,直接分段的子系統(RAID 0)可以大大提高讀寫速度(相對單個硬盤),因爲數據分散在多個硬盤,硬盤操作可以同時進行。
把二個直接分段的硬盤子系統組成鏡像,可以有效地構成全冗餘的快速硬盤子系統。這樣的子系統,其硬盤操作甚至比直接分段的硬盤子系統還快,因爲該系統能同時執行二個讀操作(每個硬盤一個讀操作),而寫操作的速度則與非鏡像直接分段子系統幾乎一樣,因爲把數據同時寫入二個硬盤只需花費很少的額外開銷。
通過我們前面所述的概念,例如雙工:(雙控制器,雙電源等),可以進一步改善有關冗餘方面的問題。雙控制器還使我們得到更高的數據傳輸速度,因爲控制器成爲子系統性能瓶頸的可能性更小了。
A.13 磁盤陣列技術術語
硬盤鏡像(Disk Mirroring):硬盤鏡像最簡單的形式是,一個主機控制器帶二個互爲鏡像的硬盤。數據同時寫入二個硬盤,二個硬盤上的數據完全相同,因此一個硬盤故障時,另一個硬盤可提供數據。
硬盤數據跨盤(Disk Spanning):利用這種技術,幾個硬盤看上去像是一個大硬盤;這個虛擬盤可以把數據跨盤存儲在不同的物理盤上,用戶不需關心哪個盤上存有他需要的數據。
硬盤數據分段(Disk Striping):數據分散存儲在幾個盤上。數據的第一段放在盤0,第2段放在盤1,……直至達到硬盤鏈中的最後一個盤,然後下一個邏輯段將放在硬盤0,再下一個邏輯段放在盤1,如此循環直至完成寫操作。
雙控(Duplexing):這裏指的是用二個控制器來驅動一個硬盤子系統。一個控制器發生故障,另一個控制器馬上控制硬盤操作。此外,如果編寫恰當的控制器軟件,可實現不同的硬盤驅動器同時工作。
容錯(Fault Tolerant):具有容錯功能的機器有抗故障的能力。例如RAID 1鏡像系統是容錯的,鏡像盤中的一個出故障,硬盤子系統仍能正常工作。
主機控制器(Host Adapter):這裏指的是使主機和外設進行數據交換的控制部件(如SCSI控制器)。
熱修復(Hot Fix):指用一個硬盤熱備份來替換髮生的故障的硬盤。要注意故障盤並不是真正地被物理替換了。用作熱備份的盤被加載上故障盤原來的數據,然後系統恢復工作。
熱補(Hot Patch):具有硬盤熱備份,可隨時替換故障盤的系統。

熱備份(Hot Spare):與CPU系統電連接的硬盤,它能替換下系統中的故障盤。與冷備份的區別是,冷備份盤平時與機器不相連接,硬盤故障時才換下故障盤。
平均數據丟失時間(MTBDL-Mean Time Between Data Loss):發生數據丟失的事件間的平均時間。 平均無故障工作時間(MTBF-Mean Time Between Failure或MTIF):設備平均無故障運行時間。
廉價冗餘磁盤陣列(RAID-Redundant Array of Inexpensive Drives):一種將多個廉價硬盤組合成快速,有容錯功能的硬盤子系統的技術。
系統重建(Reconstruction or Rebuild):一個硬盤發生故障後,從其它正確的硬盤數據和奇偶信息恢復故障盤數據的過程。
恢復時間(Reconstruction Time):爲故障盤重建數據所需要的時間。
單個大容量硬盤(SLED-Singe Expensive Drive)。
傳輸速率(Transfer Rate):指在不同條件下存取數據的速度。
虛擬盤(Virtual Disk):與虛擬存儲器類似,虛擬盤是一個概念盤,用戶不必關心他的數據寫在哪個物理盤上。虛擬盤一般跨越幾個物理盤,但用戶看到的只是一個盤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章