RAID 再次詳解
Pcfans最大的痛苦莫過于硬盤故障,輕則影響PC的正常使用,重則珍貴的文件灰飛煙滅。如果上天給你一次后悔的机會,你一定會說:備份一万遍!
Pcfans最大的煎熬莫過于對數据傳輸的等待,不管是拷貝大型文件,還是壓縮DVD電影。如果上天給你一次机會,你一定會說:速度提高一万倍!
擺在我們面前是兩個問題求求數据穩定和傳輸速度。怎么來解決?人們早已經對解決這兩個問題准備好了對策,那就是RAID!
何謂RAID?
RAID是“Redundant Array of Independent Disk”的縮寫,中文意思是獨立冗余磁盤陣列。冗余磁盤陣列技術誕生于1987年,由美國加州大學伯克利分校提出。最初的研制目的是為了組合小的廉价磁盤來代替大的昂貴磁盤,以降低大批量數据存儲的費用,同時也希望采用冗余信息的方式,使得磁盤失效時不會使對數据的訪問受損失,從而開發出一定水平的數据保護技術,并且能适當的提升數据傳輸速度。
過去RAID一直是高檔服務器才有緣享用,一直作為高檔SCSI硬盤配套技術作應用。近來隨著技術的發展和產品成本的不斷下降,IDE硬盤性能有了很大提升,加之RAID芯片的普及,使得RAID也逐漸在個人電腦上得到應用。
那么為何叫做冗余磁盤陣列呢?冗余的漢語意思即多余,重复。而磁盤陣列說明不僅僅是一個磁盤,而是一組磁盤。這時你應該明白了,它是利用重复的磁盤來處理數据,使得數据的穩定性得到提高。
RAID的工作原理
RAID如何實現數据存儲的高穩定性呢?我們不妨來看一下它的工作原理。RAID按照實現原理的不同分為不同的級別,不同的級別之間工作模式是有區別的。整個的RAID結构是一些磁盤結构,通過對磁盤進行組合達到提高效率,減少錯誤的目的,不要因為這么多名詞而被嚇坏了,它們的原理實際上十分簡單。問了便于說明,下面示意圖中的每個方塊代表一個磁盤,豎的叫塊或磁盤陣列,橫稱之為帶區。
RAID 0:無差錯控制的帶區組
要實現RAID0必須要有兩個以上硬盤驅動器,RAID0實現了帶區組,數据并不是保存在一個硬盤上,而是分成數据塊保存在不同驅動器上。因為將數据分布在不同驅動器上,所以數据吞吐率大大提高,驅動器的負載也比較平衡。如果剛好所需要的數据在不同的驅動器上效率最好。它不需要計算校驗碼,實現容易。它的缺點是它沒有數据差錯控制,如果一個驅動器中的數据發生錯誤,即使其它盤上的數据正确也無濟于事了。不應該將它用于對數据穩定性要求高的場合。如果用戶進行圖象(包括動畫)編輯和其它要求傳輸比較大的場合使用RAID0比較合适。同時,RAID可以提高數据傳輸速率,比如所需讀取的文件分布在兩個硬盤上,這兩個硬盤可以同時讀取。那么原來讀取同樣文件的時間被縮短為1/2。

RAID 1:鏡象結构
對于使用這种RAID1結构的設備來說,RAID控制器必須能夠同時對兩個盤進行讀操作和對兩個鏡象盤進行寫操作。通過下面的結构圖您也可以看到必須有兩個驅動器。因為是鏡象結构在一組盤出現問題時,可以使用鏡象,提高系統的容錯能力。它比較容易設計和實現。每讀一次盤只能讀出一塊數据,也就是說數据塊傳送速率与單獨的盤的讀取速率相同。因為RAID1的校驗十分完備,因此對系統的處理能力有很大的影響,通常的RAID功能由軟件實現,而這樣的實現方法在服務器負載比較重的時候會大大影響服務器效率。當您的系統需要极高的可靠性時,如進行數据統計,那么使用RAID1比較合适。而且RAID1技術支持“熱替換”,即不斷電的情況下對故障磁盤進行更換,更換完畢只要從鏡像盤上恢复數据即可。當主硬盤損坏時,鏡像硬盤就可以代替主硬盤工作。鏡像硬盤相當于一個備份盤,可想而知,這种硬盤模式的安全性是非常高的,但帶來的后果是硬盤容量利用率很低,只有50%,是所有RAID級別中最低的。

RAID2:帶海明碼校驗
從概念上講,RAID 2 同RAID 3類似, 兩者都是將數据條塊化分布于不同的硬盤上, 條塊單位為位或字節。然而RAID 2 使用一定的編碼技術來提供錯誤檢查及恢复。這种編碼技術需要多個磁盤存放檢查及恢复信息,使得RAID 2技術實施更复雜。因此,在商業環境中很少使用。下圖左邊的各個磁盤上是數据的各個位,由一個數据不同的位運算得到的海明校驗碼可以保存另一組磁盤上,具体情況請見下圖。由于海明碼的特點,它可以在數据發生錯誤的情況下將錯誤校正,以保証輸出的正确。它的數据傳送速率相當高,如果希望達到比較理想的速度,那最好提高保存校驗碼ECC碼的硬盤,對于控制器的設計來說,它又比RAID3,4或5要簡單。沒有免費的午餐,這里也一樣,要利用海明碼,必須要付出數据冗余的代价。輸出數据的速率与驅動器組中速度最慢的相等。

RAID3:帶奇偶校驗碼的并行傳送
這种校驗碼与RAID2不同,只能查錯不能糾錯。它訪問數据時一次處理一個帶區,這樣可以提高讀取和寫入速度。校驗碼在寫入數据時產生并保存在另一個磁盤上。需要實現時用戶必須要有三個以上的驅動器,寫入速率与讀出速率都很高,因為校驗位比較少,因此計算時間相對而言比較少。用軟件實現RAID控制將是十分困難的,控制器的實現也不是很容易。它主要用于圖形(包括動畫)等要求吞吐率比較高的場合。不同于RAID 2,RAID 3使用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤及其他數据盤可以重新產生數据。 如果奇偶盤失效,則不影響數据使用。RAID 3對于大量的連續數据可提供很好的傳輸率,但對于隨机數据,奇偶盤會成為寫操作的瓶頸。
RAID4:帶奇偶校驗碼的獨立磁盤結构
RAID4和RAID3很象,不同的是,它對數据的訪問是按數据塊進行的,也就是按磁盤進行的,每次是一個盤。在圖上可以這么看,RAID3是一次一橫條,而RAID4一次一豎條。它的特點的RAID3也挺象,不過在失敗恢复時,它的難度可要比RAID3大得多了,控制器的設計難度也要大許多,而且訪問數据的效率不怎么好。

RAID5:分布式奇偶校驗的獨立磁盤結构
從它的示意圖上可以看到,它的奇偶校驗碼存在于所有磁盤上,其中的p0代表第0帶區的奇偶校驗值,其它的意思也相同。RAID5的讀出效率很高,寫入效率一般,塊式的集体訪問效率不錯。因為奇偶校驗碼在不同的磁盤上,所以提高了可靠性。但是它對數据傳輸的并行性解決不好,而且控制器的設計也相當困難。RAID 3 与RAID 5相比,重要的區別在于RAID 3每進行一次數据傳輸,需涉及到所有的陣列盤。而對于RAID 5來說,大部分數据傳輸只對一塊磁盤操作,可進行并行操作。在RAID 5中有“寫損失”,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的數据及奇偶信息,兩次寫新的數据及奇偶信息。

RAID6:帶有兩种分布存儲的奇偶校驗碼的獨立磁盤結构
名字很長,但是如果看到圖,大家立刻會明白是為什么,請注意p0代表第0帶區的奇偶校驗值,而pA代表數据塊A的奇偶校驗值。它是對RAID5的擴展,主要是用于要求數据絕對不能出錯的場合。當然了,由于引入了第二种奇偶校驗值,所以需要N+2個磁盤,同時對控制器的設計變得十分复雜,寫入速度也不好,用于計算奇偶校驗值和驗証數据正确性所花費的時間比較多,造成了不必須的負載。我想除了軍隊沒有人用得起這种東西。

RAID7:优化的高速數据傳送磁盤結构
RAID7所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的并行性,提高系統訪問數据的速度;每個磁盤都帶有高速緩衝存儲器,實時操作系統可以使用任何實時操作芯片,達到不同實時系統的需要。允許使用SNMP協議進行管理和監視,可以對校驗區指定獨立的傳送信道以提高效率。可以連接多台主机,因為加入高速緩衝存儲器,當多用戶訪問系統時,訪問時間几乎接近于0。由于采用并行結构,因此數据訪問效率大大提高。需要注意的是它引入了一個高速緩衝存儲器,這有利有弊,因為一旦系統斷電,在高速緩衝存儲器內的數据就會全部丟失,因此需要和UPS一起工作。當然了,這么快的東西,价格也非常昂貴。

RAID10:高可靠性与高效磁盤結构
這种結构無非是一個帶區結构加一個鏡象結构,因為兩种結构各有优缺點,因此可以相互補充,達到既高效又高速還可以的目的。大家可以結合兩种結构的优點和缺點來理解這种新結构。這种新結构的价格高,可擴充性不好。主要用于容易不大,但要求速度和差錯控制的數据庫中。
RAID53:高效數据傳送磁盤結构
越到后面的結构就是對前面結构的一种重复和再利用,這种結构就是RAID3和帶區結构的統一,因此它速度比較快,也有容錯功能。但价格十分高,不易于實現。這是因為所有的數据必須經過帶區和按位存儲兩种方法,在考慮到效率的情況下,要求這些磁盤同步真是不容易。

RAID0+1:
把RAID0和RAID1技術結合起來,即RAID0+1。數据除分布在多個盤上外,每個盤都有其物理鏡像盤,提供全冗余能力,允許一個以下磁盤故障,而不影響數据可用性,并具有快速讀/寫能力。要求至少4個硬盤才能作成RAID0+1。
JBOD模式
JBOD通常又稱為Span。它是在邏輯上將几個物理磁盤一個接一個連起來, 組成一個大的邏輯磁盤。JBOD不提供容錯,該陣列的容量等于組成Span的所有磁盤的容量的總和。JBOD嚴格意義上說,不屬于RAID的范圍。不過現在很多IDE RAID控制芯片都帶著种模式,JBOD就是簡單的硬盤容量疊加,但系統處理時并沒有采用并行的方式,寫入數据的時候就是先寫的一塊硬盤,寫滿了再寫第二塊硬盤……
我們能夠用得上的IDE RAID

上面是對RAID原理的敘述,而我們Pcfans最關心的是RAID的應用。我們日常使用IDE硬盤,而且很容易買到IDE RAID卡和集成RAID芯片的主板。所以跟我們最貼近的是IDE RAID。限于應用級別很低,IDE RAID多數只支持RAID 0,RAID 1,RAID 0+1,JBOD模式。
RAID的實現
講了很多RAID原理,但實際應用中RAID如何實現?限于大多數讀者的應用級別,此處僅討論電腦愛好者用得比較多的IDE RAID。
RAID實現有兩种方法,一种是用專門的控制新片來完成,控制芯片可以做成RAID卡的形式,也可以集成在主板上。另一种方法是用軟件的方法來實現,比如WIN2000就含有軟件RAID的功能。
RAID控制芯片目前主要提供商有:HighPoint、Promise、AMI等公司。這些公司生產的芯片在控制卡和主板上都能見到。
2万+

被折叠的 条评论
为什么被折叠?



