1. 程式人生 > >磁碟陣列(Raid)詳解

磁碟陣列(Raid)詳解

一. JBOD

JBOD ( Just a Bunch Of Disks )不是標準的 RAID 等級,它通常用來表示一個沒有控制軟體提供協調控制的磁碟集合。 JBOD 將多個物理磁碟串聯起來,提供一個巨大的邏輯磁碟。 JBOD (如圖 1 )的資料存放機制是由第一塊磁碟開始按順序往後儲存,當前磁碟儲存空間用完後,再依次往後面的磁碟儲存資料。 JBOD 儲存效能完全等同於單塊磁碟,而且也不提供資料安全保護。它只是簡單提供一種擴充套件儲存空間的機制, JBOD 可用儲存容量等於所有成員磁碟的儲存空間之和。目前 JBOD 常指磁碟櫃,而不論其是否提供 RAID 功能。如下圖:
在這裡插入圖片描述

二.標準RAID等級

1.RAID0

RAID0 是一種簡單的、無資料校驗的資料條帶化技術。實際上不是一種真正的 RAID ,因為它並不提供任何形式的冗餘策略。 RAID0 將所在磁碟條帶化後組成大容量的儲存空間(如圖 2 所示),將資料分散儲存在所有磁碟中,以獨立訪問方式實現多塊磁碟的並讀訪問。由於可以併發執行 I/O 操作,匯流排頻寬得到充分利用。再加上不需要進行資料校驗,RAID0 的效能在所有 RAID 等級中是最高的。理論上講,一個由 n 塊磁碟組成的 RAID0 ,它的讀寫效能是單個磁碟效能的 n 倍,但由於匯流排頻寬等多種因素的限制,實際的效能提升低於理論值。

RAID0 具有低成本、高讀寫效能、 100% 的高儲存空間利用率等優點,但是它不提供資料冗餘保護,一旦資料損壞,將無法恢復。 因此, RAID0 一般適用於對效能要求嚴格但對資料安全性和可靠性不高的應用,如視訊、音訊儲存、臨時資料快取空間等。( RAID0 :無冗錯的資料條帶)
在這裡插入圖片描述


2.RAID1

RAID1 稱為映象,它將資料完全一致地分別寫到工作磁碟和映象 磁碟,它的磁碟空間利用率為 50% 。 RAID1 在資料寫入時,響應時間會有所影響,但是讀資料的時候沒有影響。 RAID1 提供了最佳的資料保護,一旦工作磁碟發生故障,系統自動從映象磁碟讀取資料,不會影響使用者工作。工作原理如圖 3 所示。

RAID1 與 RAID0 剛好相反,是為了增強資料安全性使兩塊 磁碟資料呈現完全映象,從而達到安全性好、技術簡單、管理方便。 RAID1 擁有完全容錯的能力,但實現成本高。 RAID1 應用於對順序讀寫效能要求高以及對資料保護極為重視的應用,如對郵件系統的資料保護。(RAID1 :無校驗的相互映象)
  在這裡插入圖片描述


  3.RAID2

RAID2 稱為糾錯海明碼磁碟陣列,其設計思想是利用海明碼實現資料校驗冗餘。海明碼是一種在原始資料中加入若干校驗碼來進行錯誤檢測和糾正的編碼技術,其中第 2n 位( 1, 2, 4, 8, … )是校驗碼,其他位置是資料碼。因此在 RAID2 中,資料按位儲存,每塊磁碟儲存一位資料編碼,磁碟數量取決於所設定的資料儲存寬度,可由使用者設定。圖 4 所示的為資料寬度為 4 的 RAID2 ,它需要 4 塊資料磁碟和 3 塊校驗磁碟。如果是 64 位資料寬度,則需要 64 塊 資料磁碟和 7 塊校驗磁碟。可見, RAID2 的資料寬度越大,儲存空間利用率越高,但同時需要的磁碟數量也越多。

海明碼自身具備糾錯能力,因此 RAID2 可以在資料發生錯誤的情況下對糾正錯誤,保證資料的安全性。它的資料傳輸效能相當高,設計複雜性要低於後面介紹的 RAID3 、 RAID4 和 RAID5 。

但是,海明碼的資料冗餘開銷太大,而且 RAID2 的資料輸出效能受陣列中最慢磁碟驅動器的限制。再者,海明碼是按位運算, RAID2 資料重建非常耗時。由於這些顯著的缺陷,再加上大部分磁碟驅動器本身都具備了糾錯功能,因此 RAID2 在實際中很少應用,沒有形成商業產品,目前主流儲存磁碟陣列均不提供 RAID2 支援。(RAID2 :海明碼校驗)
  在這裡插入圖片描述
  4.RAID3
  RAID3 (圖 5 )是使用專用校驗盤的並行訪問陣列,它採用一個專用的磁碟作為校驗盤,其餘磁碟作為資料盤,資料按位可位元組的方式交叉儲存到各個資料盤中。RAID3 至少需要三塊磁碟,不同磁碟上同一帶區的資料作 XOR 校驗,校驗值寫入校驗盤中。 RAID3 完好時讀效能與 RAID0 完全一致,並行從多個磁碟條帶讀取資料,效能非常高,同時還提供了資料容錯能力。向 RAID3 寫入資料時,必須計算與所有同條帶的校驗值,並將新校驗值寫入校驗盤中。一次寫操作包含了寫資料塊、讀取同條帶的資料塊、計算校驗值、寫入校驗值等多個操作,系統開銷非常大,效能較低。

如果 RAID3 中某一磁碟出現故障,不會影響資料讀取,可以藉助校驗資料和其他完好資料來重建資料。假如所要讀取的資料塊正好位於失效磁碟,則系統需要讀取所有同一條帶的資料塊,並根據校驗值重建丟失的資料,系統性能將受到影響。當故障磁碟被更換後,系統按相同的方式重建故障盤中的資料至新磁碟。

RAID3 只需要一個校驗盤,陣列的儲存空間利用率高,再加上並行訪問的特徵,能夠為高頻寬的大量讀寫提供高效能,適用大容量資料的順序訪問應用,如影像處理、流媒體服務等。目前, RAID5 演算法不斷改進,在大資料量讀取時能夠模擬 RAID3 ,而且 RAID3 在出現壞盤時效能會大幅下降,因此常使用 RAID5 替代 RAID3 來執行具有持續性、高頻寬、大量讀寫特徵的應用。(RAID3 :帶有專用位校驗的資料條帶)
  在這裡插入圖片描述
  5.RAID4

RAID4 與 RAID3 的原理大致相同,區別在於條帶化的方式不同。 RAID4 (圖 6 )按照 塊的方式來組織資料,寫操作只涉及當前資料盤和校驗盤兩個盤,多個 I/O 請求可以同時得到處理,提高了系統性能。 RAID4 按塊儲存可以保證單塊的完整性,可以避免受到其他磁碟上同條帶產生的不利影響。

RAID4 在不同磁碟上的同級資料塊同樣使用 XOR 校驗,結果儲存在校驗盤中。寫入資料時, RAID4 按這種方式把各磁碟上的同級資料的校驗值寫入校驗 盤,讀取時進行即時校驗。因此,當某塊磁碟的資料塊損壞, RAID4 可以通過校驗值以及其他磁碟上的同級資料塊進行資料重建。

RAID4 提供了 非常好的讀效能,但單一的校驗盤往往成為系統性能的瓶頸。對於寫操作, RAID4 只能一個磁碟一個磁碟地寫,並且還要寫入校驗資料,因此寫效能比較差。而且隨著成員磁碟數量的增加,校驗盤的系統瓶頸將更加突出。正是如上這些限制和不足, RAID4 在實際應用中很少見,主流儲存產品也很少使用 RAID4 保護。(RAID4 :帶有專用塊級校驗的資料條帶)
  在這裡插入圖片描述
  6.RAID5

RAID5 應該是目前最常見的 RAID 等級,它的原理與 RAID4 相似,區別在於校驗資料分佈在陣列中的所有磁碟上,而沒有采用專門的校驗磁碟。對於資料和校驗資料,它們的寫操作可以同時發生在完全不同的磁碟上。因此, RAID5 不存在 RAID4 中的併發寫操作時的校驗盤效能瓶頸問題。另外, RAID5 還具備很好的擴充套件性。當陣列磁碟 數量增加時,並行操作量的能力也隨之增長,可比 RAID4 支援更多的磁碟,從而擁有更高的容量以及更高的效能。

RAID5 (圖 7)的磁碟上同時儲存資料和校驗資料,資料塊和對應的校驗資訊存儲存在不同的磁碟上,當一個數據盤損壞時,系統可以根據同一條帶的其他資料塊和對應的校驗資料來重建損壞的資料。與其他 RAID 等級一樣,重建資料時, RAID5 的效能會受到較大的影響。

RAID5 兼顧儲存效能、資料安全和儲存成本等各方面因素,它可以理解為 RAID0 和 RAID1 的折中方案,是目前綜合性能最佳的資料保護解決方案。 RAID5 基本上可以滿足大部分的儲存應用需求,資料中心大多采用它作為應用資料的保護方案。(RAID5 :帶分散校驗的資料條帶)
  在這裡插入圖片描述
  7.RAID6

前面所述的各個 RAID 等級都只能保護因單個磁碟失效而造成的資料丟失。如果兩個磁碟同時發生故障,資料將無法恢復。 RAID6 (如圖 8 )引入雙重校驗的概念,它可以保護陣列中同時出現兩個磁碟失效時,陣列仍能夠繼續工作,不會發生資料丟失。 RAID6 等級是在 RAID5 的基礎上為了進一步增強資料保護而設計的一種 RAID 方式,它可以看作是一種擴充套件的 RAID5 等級。

RAID6 不僅要支援資料的恢復,還要支援校驗資料的恢復,因此實現代價很高,控制器的設計也比其他等級更復雜、更昂貴。 RAID6 思想最常見的實現方式是採用兩個獨立的校驗演算法,假設稱為 P 和 Q ,校驗資料可以分別儲存在兩個不同的校驗盤上,或者分散儲存在所有成員磁碟中。當兩個磁碟同時失效時,即可通過求解兩元方程來重建兩個磁碟上的資料。

RAID6 具有快速的讀取效能、更高的容錯能力。但是,它的成本要高於 RAID5 許多,寫效能也較差,並有設計和實施非常複雜。因此, RAID6 很少得到實際應用,主要用於對資料安全等級要求非常高的場合。它一般是替代 RAID10 方案的經濟性選擇。(RAID6 :帶雙重分散校驗的資料條帶)
  在這裡插入圖片描述

三.RAID 組合等級

標準 RAID 等級各有優勢和不足。自然地,我們想到把多個 RAID 等級組合起來,實現優勢互補,彌補相互的不足,從而達到在效能、資料安全性等指標上更高的 RAID 系統。目前在業界和學術研究中提到的 RAID 組合等級主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但實際得到較為廣泛應用的只有 RAID01 和 RAID10 兩個等級。當然,組合等級的實現成本一般都非常昂貴,只是在 少數特定場合應用。 [12]

1.RAID00

簡單地說, RAID00 是由多個成員 RAID0 組成的高階 RAID0 。它與 RAID0 的區別在於, RAID0 陣列替換了原先的成員磁碟。可以把 RAID00 理解為兩層條帶化結構的磁碟陣列,即對條帶再進行條帶化。這種陣列可以提供更大的儲存容量、更高的 I/O 效能和更好的 I/O 負均衡。

2. RAID01 和 RAID10

一些文獻把這兩種 RAID 等級看作是等同的,本文認為是不同的。 RAID01 是先做條帶化再作映象,本質是對物理磁碟實現映象;而 RAID10 是先做映象再作條帶化,是對虛擬磁碟實現映象。相同的配置下,通常 RAID01 比 RAID10 具有更好的容錯能力,原理如圖 9 所示。

RAID01 兼備了 RAID0 和 RAID1 的優點,它先用兩塊磁碟建立映象,然後再在映象內部做條帶化。 RAID01 的資料將同時寫入到兩個磁碟陣列中,如果其中一個陣列損壞,仍可繼續工作,保證資料安全性的同時又提高了效能。 RAID01 和 RAID10 內部都含有 RAID1 模式,因此整體磁碟利用率均僅為 50% 。
  (典型的 RAID01 (上)和 RAID10 (下)模型)
  在這裡插入圖片描述
  在這裡插入圖片描述
  3.RAID100
  通常看作 RAID 1+0+0 ,有時也稱為 RAID 10+0 ,即條帶化的 RAID10 。原理如圖 10 所示。 RAID100 的缺陷與 RAID10 相同,任意一個 RAID1 損壞一個磁碟不會發生資料丟失,但是剩下的磁碟存在單點故障的危險。最頂層的 RAID0 ,即條帶化任務,通常由軟體層來完成。

RAID100 突破了單個 RAID 控制器對物理磁碟數量的限制,可以獲得更高的 I/O 負載均衡, I/O 壓力分散到更多的磁碟上,進一步提高隨機讀效能,並有效降低熱點盤故障風險。因此, RAID100 通常是大資料庫的最佳選擇。
 在這裡插入圖片描述 
4.RAID30 ( RAID53 )、 RAID50 和 RAID60

這三種 RAID 等級與 RAID00 原理基本相同,區別在於成員 “ 磁碟 ” 換成了 RAID3 、 RAID5 和 RAID6 ,分別如圖 11 、 12 、 13 所示。其中, RAID30 通常又被稱為 RAID53[13] 。其實,可把這些等級 RAID 統稱為 RAID X0 等級, X 可為標準 RAID 等級,甚至組合等級(如 RAID100 )。利用多層 RAID 配置,充分利用 RAID X 與 RAID0 的優點,從而獲得在儲存容量、資料安全性和 I/O 負載均衡等方面的大幅效能提升。
  典型的 RAID30 模型
  在這裡插入圖片描述
  典型的 RAID50 模型
  在這裡插入圖片描述
  典型的 RAID60 模型
  在這裡插入圖片描述

四、實現方式

通常計算機功能既可以由硬體來實現,也可以由軟體來實現。對於 RAID 系統而言,自然也不例外,它可以採用軟體方式實現,也可以採用硬體方式實現,或者採用軟硬結合的方式實現。 [3][8]

1 .軟 RAID

軟 RAID 沒有專用的控制晶片和 I/O 晶片,完全由作業系統和 CPU 來實現所的 RAID 的功能。現代作業系統基本上都提供軟 RAID 支援,通過在磁碟裝置驅動程式上新增一個軟體層,提供一個物理驅動器與邏輯驅動器之間的抽象層。目前,作業系統支援的最常見的 RAID 等級有 RAID0 、 RAID1 、 RAID10 、 RAID01 和 RAID5 等。比如, Windows Server 支援 RAID0 、 RAID1 和 RAID5 三種等級, Linux 支援 RAID0 、 RAID1 、 RAID4 、 RAID5 、 RAID6 等, Mac OS X Server 、 FreeBSD 、 NetBSD 、 OpenBSD 、 Solaris 等作業系統也都支援相應的 RAID 等級。

軟 RAID 的配置管理和資料恢復都比較簡單,但是 RAID 所有任務的處理完全由 CPU 來完成,如計算校驗值,所以執行效率比較低下,這種方式需要消耗大量的運算資源,支援 RAID 模式 較少,很難廣泛應用。
  軟 RAID 由作業系統來實現,因此係統所在分割槽不能作為 RAID 的邏輯成員磁碟,軟 RAID 不能保護系統盤 D 。對於部分作業系統而言, RAID 的配置資訊儲存在系統資訊中,而不是單獨以檔案形式儲存在磁碟上。這樣當系統意外崩潰而需要重新安裝時, RAID 資訊就會丟失。另外,磁碟的容錯技術並不等於完全支援線上更換、熱插拔或熱交換,能否支援錯誤磁碟的熱交換與作業系統實現相關,有的作業系統熱交換。

2 .硬 RAID

硬 RAID 擁有自己的 RAID 控制處理與 I/O 處理晶片,甚至還有陣列緩衝,對 CPU 的佔用率和整體效能是三類實現中最優的,但實現成本也最高的。硬 RAID 通常都支援熱交換技術,在系統執行下更換故障磁碟。
  
  硬 RAID 包含 RAID 卡和主機板上整合的 RAID 晶片, 伺服器平臺多采用 RAID 卡。 RAID 卡由 RAID 核心處理晶片( RAID 卡上的 CPU )、埠、快取和電池 4 部分組成。其中,埠是指 RAID 卡支援的磁碟介面型別,如 IDE/ATA 、 SCSI 、 SATA 、 SAS 、 FC 等介面。
  3 .軟硬混合 RAID

軟 RAID 效能欠佳,而且不能保護系統分割槽,因此很難應用於桌面系統。而硬 RAID 成本非常昂貴,不同 RAID 相互獨立,不具互操作性。因此,人們採取軟體與硬體結合的方式來實現 RAID ,從而獲得在效能和成本上的一個折中,即較高的價效比。

這種 RAID 雖然採用了處理控制晶片,但是為了節省成本,晶片往往比較廉價且處理能力較弱, RAID 的任務處理大部分還是通過韌體驅動程式由 CPU 來完成。

五、RAID 應用選擇

RAID 等級的選擇主要有三個因素,即資料可用性、 I/O 效能和成本。 目前,在實際應用中常見的主流 RAID 等級是 RAID0 , RAID1 , RAID3 , RAID5 , RAID6 和 RAID10 ,它們之間的技術對比情況如表 1 所示。如果不要求可用性,選擇 RAID0 以獲得高效能。如果可用性和效能是重要的,而成本不是一個主要因素,則根據磁碟數量選擇 RAID1 。如果可用性,成本和效能都同樣重要,則根據一般的資料傳輸和磁碟數量選擇 RAID3 或 RAID5 。在實際應用中,應當根據使用者的資料應用特點和具體情況,綜合考慮可用性、效能和成本來選擇合適的 RAID 等級。 [10]

表1 主流 RAID 等級技術對比

RAID 等級  	RAID0 	RAID1      RAID3	           RAID5	         RAID6	       RAID10
別名	      條帶	      映象	  專用奇偶校驗條帶	 分佈奇偶校驗條帶	雙重奇偶校驗條帶	映象加條帶
容錯性  	 無	       有       	有        	      有	           有	         有
冗餘型別	 無	       有	      有	            有               有	         有
熱備份選擇	 無	       有	      有	            有	           有	         有
讀效能	       高	       低       	高              	高	            高	         高
隨機寫效能  	 高	       低	      低	           一般	            低	        一般
連續寫效能	 高	       低	      低	            低	            低	        一般
需要磁碟數	 n≥1	     2n (n≥1)	n≥3	           n≥3	           n≥4	      2n(n≥2)≥4
可用容量 ​	 全部	       50%	    (n-1)/n	    (n-1)/n	    (n-2)/n	   50%

近年來,企業的資訊化水平不斷髮展,資料已經取代計算成為了資訊計算的中心,資訊資料的安全性就顯得尤為至關重要。隨著儲存技術的持續發展, RAID 技術在成本、效能、資料安全性等諸多方面都將優於其他儲存技術,例如磁帶庫、光碟庫等,大多數企業資料中心首選 RAID 作為儲存系統。當前儲存行業的知名儲存廠商均提供全線的磁碟陣列產品,包括面向個人和中小企業的入門級的低端 RAID 產品,面向大中型企業的中高階 RAID 產品。這些儲存企業包括了國內外的主流儲存廠商,如 EMC 、 IBM 、 HP 、 SUN 、 NetApp 、 NEC 、 HDS 、 H3C 、 Infortrend 、華賽等。另外,這些廠商在提供儲存硬體系統的同時,還往往提供非常全面的軟體系統,這也是使用者採購產品的一個主要參考因素。

不同的儲存廠商的產品在技術、成本、效能、管理、服務等方面各有優勢和不足。使用者選擇 RAID 的原則是:在成本預算內,滿足資料儲存需求的前提下,選擇最優的儲存廠商解決方案。因此,首先使用者需要對儲存需求作深入的調研和分析,並給出成本預算,然後對眾多儲存廠商的解決方案進行分析和對比,最後選擇出一個綜合最優的儲存方案。其中,儲存產品的擴充套件性和儲存廠家的售後服務需要重點考察,儲存需求(如容量、效能)可能會不斷升級,儲存產品發生故障後的維修和支援保障,這些都要未雨先繆。