- 數字資源存儲、倉儲和發布的標準規范建設
- 劉翔等
- 6989字
- 2020-08-14 13:47:00
1.3.4 磁盤陣列
磁盤陣列是一種高級的計算機應用技術,主要應用于服務器領域。其原理是利用數組方式來做磁盤組,配合數據分散排列的設計,提升數據的安全性。RAID也可以看作是一種特殊的數據備份方式,而其數據恢復也有不同于單個硬盤的特色。最早的多盤系統思想出現在1987年美國加州大學伯克利分校的三位研究人員(David A.Patterson, Garth Gibson和Randy H.Katz)發表的學術論文“A Case of Redundant Array of Inexpensive Disks”中,即廉價磁盤冗余陣列方案。這篇論文的主要思想就是將多個容量較小、相對廉價的硬盤驅動器進行有機組合,使其性能超過單價較貴的大容量硬盤。這一設計思想很快受到了重視,并且得到了實際應用。隨著基于上述思想的多盤系統的不斷出現,需要對各種技術進行必要的規范并制定相應的標準,為此工業界通過了一個稱為磁盤冗余陣列(redundant arrays of inexpensive disks, RAID)的標準方案。根據RAID系統對磁盤數據分布以及校驗方式的不同,RAID系統可以分為7個級別(從RAID 0到RAID 6)。其中,RAID 0, RAID 1, RAID 3以及RAID 5是較為常用的級別。
RAID磁盤陣列就是將n臺硬盤通過RAID控制器(RAID controller)結合成虛擬單臺大容量的硬盤使用,其特色是n臺硬盤能加快讀取速率及提供容錯性。因此,某些組成RAID的方案的主要特色就是在數據存取速度提高的同時提供一定的容錯性,有效地解決了冗余的要求。RAID系統使得多個磁盤系統并行工作,這樣增加了數據出錯的概率。為了對這種可靠性下降進行補償,RAID特別增加了奇偶校驗數據存儲,以挽救由于某種噪音形成的數據丟失。
RAID的一個基本概念稱作強調擴充性及容錯機制(extended data availability and protection, EDAP),可在無須停機的情況下自動檢測故障硬盤、重建硬盤壞軌的資料、進行硬盤備份(hot spare)、進行硬盤替換(hot swap)、擴充硬盤容量等。
一旦RAID陣列出現故障,硬件服務商只能給客戶重新初始化或者重建(rebuild),這樣客戶數據就會無法挽回。因此,用戶須掌握RAID 0、RAID 1、RAID 5以及組合型RAID系列磁盤陣列數據恢復的方法,出現故障以后只要不對陣列做初始化操作,就有機會恢復磁盤陣列的數據。
RAID技術主要包含RAID 0~RAID 7等數個規范,它們的側重點各有不同。
1.RAID 0組成原理
RAID 0被稱為“容量之王”,這樣說主要是因為在同等預算的硬件配置中,RAID是所有存儲技術中容量最大的、最早被用來獲得海量的數據存儲。因此,說到海量存儲,肯定就會想到RAID 0。海量存儲就是在RAID 0技術的基礎上推出并實現的概念,從誕生到現在,一直都有很大的市場,是很多中小企業海量數據存儲的首選方案。
因為RAID 0沒有采用任何冗余方式進行存儲,所以嚴格地講RAID 0不能算作RAID系列的成員。但是對于某些應用,例如超級計算機,性能和容量作為其基本的考慮,低成本要比可靠性重要。
在RAID 0系統中,用戶和系統數據分布在磁盤陣列的所有盤面上。與單個大容量磁盤相比,其優點主要是:如果兩個I/O請求同時等待不同的數據塊,那么這些數據塊就有可能分布在不同的磁盤上。這樣就可以并行處理這些請求,減少I/O的排隊時間。
RAID 0以及其他級別的陣列均采用條帶(stripe)的形式在可用磁盤上分布存放數據。用戶數據和系統數據被看成是存儲在一個邏輯磁盤上,磁盤以條帶的形式劃分,每個條帶是一些物理的塊、扇區或者其他基本單位。數據條帶以輪轉方式映射到連續的陣列磁盤中。可以定義每個磁盤映射一個條帶,并將一組邏輯連續的條帶定義為條帶集。在這些條帶上,數據是這樣組織的:在一個有n個磁盤的陣列中,第一組的n個邏輯條帶依次物理存儲在n個磁盤的第1個條帶上,構成第一個條帶;第二組的n個邏輯條帶分布在每個磁盤的第2個條帶上,形成第二個條帶;按照同樣的組織,形成更多的條帶。這樣分布數據的特點就是,如果單個I/O請求由多個邏輯相鄰的條帶組成,則最多可以實現n個條帶的請求并行處理,提高I/O的吞吐率。
在高速數據傳輸的應用場合,由于RAID 0沒有冗余備份,其性能主要取決于主機的請求方式以及數據分布。為了適應高速傳輸要求,首先在主存和各個磁盤間應存在高速的傳輸路徑,即在內部控制總線、主系統I/O總線、I/O適配器和存儲總線上應有高速路徑。其次,磁盤陣列I/O請求方式上如果是大量邏輯相鄰的數據,則單個I/O請求可以實現多個磁盤的并行數據傳輸,系統效率將會大大提高。如果每次I/O請求的數據量不大,但是請求次數頻繁,可以通過平衡多個磁盤中的I/O負載以提高I/O執行速度。當條帶的容量較大時,單個I/O請求就不會出現跨磁盤進行存取的情況,這樣就可以實現多個等待I/O的請求并行處理,從整體上減少每個請求的排隊時間。
2.RAID 1組成原理
RAID 1通過數據鏡像來提升容錯性。一個RAID 1至少由兩塊硬盤構成。如前所述,每個寫操作都同時作用在兩塊磁盤上。對于硬件RAID而言,此操作對主機是完全透明的。發生磁盤故障時,RAID 1的數據恢復代價是所有RAID級別中最小的。RAID 1采用簡單的備份方式實現數據的冗余。與RAID 0一樣,RAID 1也采用數據條帶化分布存儲,但是每個邏輯條帶映射到兩個不同的物理磁盤組中,在磁盤陣列中每個磁盤均有一個包含相同數據的鏡像磁盤。RAID控制器將利用鏡像磁盤中的數據進行數據恢復,并同時繼續對外提供服務。RAID 1適用于那些對高可用性有需求的應用。
RAID 1實現的原理是:它同樣需要兩塊或兩塊以上同廠家、同型號、同容量的硬盤來搭建;不過與RAID 0不同的是,RAID 1需要的硬盤數量必須是雙數,RAID 0無此需要;所組成的磁盤陣列,在RAID 0中是所有硬盤容量之和,而在RAID 1中則是所有硬盤容量的一半。RAID 1的實質是實現單機數據熱備的功能。
雙機熱備就是在兩臺機器上運行相同的系統,以軟件來實現數據的雙機互備,如果一臺機器出現故障,馬上通過管理軟件切換到另外一臺機器,以保障系統的穩定運行。RAID 1的運行過程與雙機熱備原理基本一致,不同的是RAID 1是實現單機熱備,在同一臺機器所組成的磁盤陣列的雙數硬盤上,使用虛擬技術對服務器硬盤進行平均分區,雙區內運行的每一個變化相互實時鏡像存儲,并進行冗余記錄。這樣,當一塊硬盤甚至一整個存儲區域突然出現故障時,另外一個硬盤存儲區域能夠對之前的應用進行無縫切換,從而保證系統運行的完整性。
RAID 1具有如下基本特點:
1)讀請求可由包含請求數據的兩個磁盤中的某一個提供服務,這樣就可以找到最小的尋道時間和旋轉延遲的磁盤,以提高讀速率。
2)寫請求需要更新兩個對應的條帶,這種更新完全同步。因此,寫性能由兩個盤中較慢的寫來確定。RAID 1的寫相對于其他級別的陣列沒有額外的操作,所以無“寫損失”。
3)當一個磁盤的數據被損壞時,可以從另一個磁盤中得到恢復。
4)RAID 1價格較貴,需要支持兩倍于邏輯磁盤的磁盤空間。因此,RAID 1的配置只限于存儲系統軟件、數據和關鍵文件的驅動器中。這種應用情況下,RAID 1可以提供數據的實時備份能力,如果數據有所損失,可以從備份盤中立即恢復。
5)如果有大量的讀數據要求,則RAID 1能實現高速的I/O速率,其性能可以達到RAID 0的兩倍。然而,如果I/O請求中大部分是寫請求,那么其性能將與RAID 0差不多。那么在讀請求的概率高的數據傳送密集型應用中,RAID 1提供了對RAID 0改進的性能。
3.嵌套RAID
許多數據中心對RAID陣列的數據冗余和性能都有需求。RAID 0+1和RAID 1+0集成了RAID 0的性能優勢和RAID 1的冗余特征,將鏡像和分帶的優點組合起來。這類RAID需要由偶數數量的磁盤構建,且至少需要四塊磁盤。
RAID 1+0也被稱為RAID 10或RAID 1/0。類似地,RAID 0+1也被稱為RAID 01或RAID 0/1。RAID 1+0適用于寫密集、隨機訪問、數據量小的I/O負載,具有以下特點:
? 高事務率的聯機事務處理(online transaction processing, OLTP);
? 大型消息服務;
? 需要高I/O吞吐率、隨機訪問和高可用性的數據庫應用。
RAID 1+0通常被稱作“分條的鏡像(striped mirror)”:它的基本構成是鏡像對。也就是說,數據首先被鏡像,然后再將兩個副本分別分條存儲在RAID集的多個硬盤上。當替換故障磁盤時,只需重建鏡像,即陣列控制器利用鏡像組中的幸存磁盤來完成數據恢復,并繼續提供服務。幸存磁盤中的數據將被復制到新替換的磁盤中。
RAID 0+1也被稱作“鏡像的分條(mirrored stripe)”:它的基本構成是條帶。這意味著,數據將首先分條存儲到各個硬盤上,然后再對條帶生成鏡像。當一塊磁盤失效時,整個條帶都將失效。重建操作必須復制整個條帶:從幸存條帶的各磁盤中將數據復制到失效條帶的相應磁盤上。這將給幸存磁盤帶來額外的和不必要的I/O負載,并且引發二次磁盤失效。
4.RAID 2組成原理
RAID 2采用并行存取陣列,所有磁盤成員都進行對I/O請求的執行。驅動器的軸是同步旋轉的,這樣每個磁盤上的每個磁頭都在同一位置。
RAID 2也采用數據條帶的方式進行存取,在RAID 2中,條帶非常小,譬如一個字節或一個字。各個數據盤上相應位經過校驗計算出保護位,將信息位和保護位分別存放在不同的磁盤上。通常有專用的磁盤用存儲保護位,而保護位則采用漢明編碼方式得到。這種編碼方式可以糾正一位錯誤,檢測出兩位錯誤,這也使得RAID 2成為RAID系統中最為復雜的等級之一。
由于漢明碼是以位為基礎進行校驗的,因此在RAID 2中,一個硬盤在一段時間內只存取一位的信息。例如,左邊為數據陣列,陣列中的每個硬盤一次只存儲一個位的數據。同理,右邊的陣列(稱之為校驗陣列)則是存儲相應的漢明碼,也是一位一個硬盤。因此,RAID 2中的硬盤數量取決于所設定的數據存儲寬度。
在寫入時,RAID 2在寫入數據位的同時還要計算出它們的漢明碼并寫入校驗陣列,讀取時也要對數據即時地進行校驗,最后再發向系統。由于漢明碼只能糾正一位的錯誤,所以RAID 2也只能允許一個硬盤出問題,如果兩個或兩個以上的硬盤出問題,RAID 2的數據就將受到破壞。由于數據是以位為單位并行傳輸,所以傳輸率相當快。
雖然RAID 2比RAID 1所用的磁盤少,但是其價格仍然比較高,冗余磁盤的數目與數據磁盤數目的對數成正比。對于單個讀取請求,所有磁盤同時進行讀取操作,請求的數據和相關的保護位讀出后傳送到陣列控制器。如果出現在漢明碼糾錯范圍內的單位錯誤,那么控制器馬上可以識別并糾正。這一過程一般不會影響讀取的速度。對于單個寫操作,數據盤和校驗盤都需要進行相應的寫操作。RAID 2一般應用于多磁盤易出錯環境中,對于單磁盤而言其意義不是很大。
RAID 2是早期為了能進行即時的數據校驗而研制的一種技術(這在當時的RAID 0, RAID 1等級中是無法做到的),從它的設計上看也主要是為了即時校驗以保證數據安全,針對當時對數據即時安全性非常敏感的領域,如服務器、金融服務等。但由于花費太大,目前已基本不再使用,轉而以更高級的即時檢驗RAID所代替,如RAID 3, RAID 5等。
5.RAID 3組成原理
RAID 3同RAID 2類似,都是將數據條塊化分布于不同的硬盤上,其區別在于RAID 3的存儲數據組織結構與RAID 2相類似。但是它與RAID 2不同的是:無論磁盤陣列數目有多少,RAID 3只需要單個冗余校驗盤。在RAID 3中,數據分布在不同的較小的條帶上,并且進行并行方式讀寫操作。RAID 3沒有采用糾錯碼,而采用對所有數據盤上相同位置的數據進行奇偶方式校驗。
如果在RAID 3陣列中某一個磁盤驅動器不能工作時,那么可以通過存取奇偶校驗盤的數據以及其他驅動器的數據來對出錯磁盤進行數據重構。這樣,當更換到不能工作的磁盤后,新的磁盤也能夠恢復原有的數據。數據的再生過程可以簡單描述如下:
假設RAID 3磁盤陣列中共有5個磁盤驅動器,其中前4個作為數據盤使用D0至D3,最后一個D4磁盤作為奇偶校驗使用,那么奇偶校驗的第i位計算公式如下所示:
D4(i)=D3(i)D2(i)D1(i)D0(i)
如果磁盤D1不能正常工作,那么可以通過兩邊同時異或D4(i )D1(i ),得:
D1(i)=D4(i)D3(i)D2(i)D0(i)
由上可見,當陣列中某一個磁盤數據出錯時,都可以從剩余磁盤相應條帶中重新生成相應數據。
由于數據以較小的條帶存儲,RAID 3可以獲得非常高的數據傳輸率。任何數據讀/寫請求都會使數據盤進行并行操作,對傳輸大量數據非常有利。在使用RAID 3時,校驗磁盤很容易成為整個陣列的速度瓶頸,因此RAID 3很少被人們采用。在RAID 3系統中,數據的寫入操作會在多個磁盤上進行,然而不管是向哪個數據盤寫入數據,都需要同時重新寫校驗盤的相關信息。對于那些經常需要執行大量寫入操作的應用而言,校驗盤的負載將會很大,無法滿足程序的運行速度,從而導致整個RAID系統性能的下降。為此,RAID 3更加適用于那些寫入操作較少、讀取操作較多的應用環境,如數據庫和Web服務器等。
6.RAID 4
從RAID 4開始,磁盤陣列均采用了獨立的存儲技術,每個磁盤陣列成員的操作是完全獨立的,各個I/O請求能夠并行完成。那么獨立存取方式將更適合于高速數據請求傳輸的應用,而較少應用于單次請求需要高速數據傳輸的場合。
RAID 4和RAID 3很相似,數據都是依次存儲在多個硬盤之上,奇偶校驗碼存放在獨立的奇偶校驗盤上。唯一不同的是在數據分割上,RAID 3以位為單位,而RAID 4以數據塊為單位,以備磁盤損壞時重構數據。條帶是在磁盤塊層次完成的。
RAID 4也使用一個校驗磁盤,各磁盤相同位置的分段形成一個校驗磁盤分段,放在校驗磁盤中。這種方式可在不同的磁盤平行執行不同的讀取命令,大幅提高磁盤陣列的讀取性能。RAID 4的數據磁盤支持獨立訪問。因此,某個數據單元可以從單塊磁盤中讀寫,而無須訪問整個條帶。RAID 4提供了很好的讀吞吐率和較好的寫吞吐率。但寫入數據時,因受限于校驗磁盤,同一時間只能做一次。由于校驗磁盤和RAID 3一樣,也形成其性能的瓶頸。
RAID 4使用稱為“加重平均糾錯碼(海明碼)”的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 4技術實施更復雜,因此在商業環境中很少使用。
7.RAID 5
RAID 5是一種兼顧存儲性能、數據安全和存儲成本的存儲解決方案。
RAID 5需要由三塊或三塊以上同廠家、同型號、同容量的硬盤搭建,硬盤需要支持熱插拔,所組成的陣列容量大于所有硬盤容量減去一塊硬盤的容量之差。以三塊硬盤組成的RAID 5陣列為例,所組成的陣列中有A、B、C三塊硬盤,A盤、B盤和C盤都負責存儲數據,在三盤數據存儲之外,還會在存儲的同時自動生成奇偶校驗信息,分別存儲在不同的硬盤里,占據相對微小的空間。奇偶校驗信息耗費的空間有限,但恢復數據的能力卻無比強大。
當A盤、B盤、C盤中的任何一塊硬盤出現故障時,拔出故障盤,換上無故障的新盤,存儲于另外一盤中的相對奇或偶校驗能依據存儲在不同盤中的奇偶校驗信息對數據進行有效的恢復。
RAID 5的設計原理決定了其最大的優勢:實現存儲容量與系統穩定性(或稱數據安全性)的和諧統一,最大限度地滿足用戶的存儲需求。
RAID 5需要由三塊或三塊以上的硬盤搭建,所組成的陣列容量大于所有硬盤總容量減去少于一塊硬盤容量的差值,由此而來的陣列容量介于RAID 0與RAID 1之間,這樣對高速硬盤的高昂采購成本就有了較為有效的控制;RAID 5通過占用每塊硬盤空間的很少一部分對各硬盤存儲的數據進行奇偶校驗實時記錄,當存儲數據的一塊硬盤出現故障時,通過熱插拔設備馬上更換新的硬盤上去,新的硬盤會在很短的時間內以另外一塊盤中存儲的奇或偶校驗值記錄信息作為依據,將故障硬盤內存儲的所有數據進行有效恢復,這樣對系統的穩定性起了很好的補充作用。RAID 5也有其缺點,總體來看有兩點:
1)存儲速率有所降低:作為RAID 5保障系統穩定與數據安全的手段,當對數據進行存儲時,由于要同時對存儲的單個數據包進行雙硬盤奇偶校驗信息備份,使得其存儲速度相對單硬盤無校驗存儲的方式有所降低。
2)數據的安全性相對打折:在RAID 5中,采取三硬盤存儲的方式,如果其中的兩塊硬盤同時出現故障,由于存儲在兩盤中的一些配對奇偶校驗信息同時丟失,就再也無法找到能夠恢復數據的備份信息,其后果必然是導致整體數據無法完整恢復。
RAID 5相對RAID 0容量和RAID 1穩定的極端表現,展示了更多的包容性,實現了成本與性能的更加融合。在安全級別為中高級的數據存儲市場中,RAID 5是目前應用最廣泛的存儲技術。
8.RAID 6
RAID 6是由一些大型企業提出來的私有RAID級別標準,它的全稱為“Independent Data Disks with Two Independent Distributed Parity Schemes”,即帶有兩個獨立分布式校驗方案的獨立數據磁盤。這種RAID級別是在RAID 5的基礎上發展而成的,因此它的工作模式與RAID 5有異曲同工之妙。不同的是,RAID 5將校驗碼寫入一個驅動器,而RAID 6將校驗碼寫入兩個驅動器,這樣就增強了磁盤的容錯能力。同時,RAID 6陣列中允許出現故障的磁盤也就可以有兩個,但相應的陣列磁盤數量最少也要四個。
RAID 6陣列中,每個磁盤中都具有兩個校驗值,而RAID 5里面只能為每一個磁盤提供一個校驗值。由于校驗值的使用可以達到恢復數據的目的,因此多增加一位校驗位,數據恢復的能力就越強。不過在增加一位校驗位后,就需要一個比較復雜的控制器來進行控制,同時也使磁盤的寫能力降低,并且還需要占用一定的磁盤空間。因此,這種RAID級別應用還比較少,但相信隨著RAID 6技術的不斷完善,也會得到廣泛應用。
9.RAID 7
RAID 7的全稱為“Optimized Asynchrony for High I/O Rates as well as High Data Transfer Rates”,即最優化的異步高I/O速率和高數據傳輸率。它與其他RAID級別具有明顯的差異。RAID 7不僅是一種技術,還是一種存儲計算機(storage computer)。RAID 7完全可以理解為一個獨立存儲計算機,其存儲計算機操作系統(storage computer operating system)是一套實時事件驅動操作系統,主要用來進行系統初始化和安排RAID 7磁盤陣列的所有數據傳輸,并把它們轉換到相應的物理存儲驅動器上。通過自身系統中的陣列電腦板來設定和控制讀寫速度,存儲計算機操作系統可使主機I/O傳遞性能達到最佳,完全可以獨立運行。
RAID 7等級是至今為止理論上性能最高的RAID模式,因為它從組建方式上就已經和以往的方式有了重大的不同。以往一個硬盤是一個組成陣列的“柱子”,而在RAID 7中,多個硬盤組成一個“柱子”,每個磁盤都有一個獨立的I/O通道,它們與主通道相連,操作系統可以直接對每個磁盤的訪問進行控制,讓每個磁盤在不同的時段進行數據讀寫,這樣就大大改善了I/O的應用,同時也提高了數據讀寫的能力,因而這種磁盤訪問方式也叫作非同步訪問。在RAID 7中有一個磁盤作為專門的校驗盤,它適合對任何一個磁盤進行數據恢復。
總體來說,RAID 7與傳統的RAID級別有很大區別,它的優點很多,但缺點也非常明顯,那就是價格非常高,對于普通企業用戶并不實用。