聯(lián)系方式
詳細(xì)信息
圖文并茂 RAID 技術(shù)全解 – RAID0、RAID1、RAID5、RAID100……
RAID 技術(shù)相信大家都有接觸過,尤其是服務(wù)器運(yùn)維人員,RAID 概念很多,有時(shí)候會(huì)概念混淆。這篇文章為網(wǎng)絡(luò)轉(zhuǎn)載,寫得相當(dāng)不錯(cuò),它對(duì) RAID 技術(shù)的概念特征、基本原理、關(guān)鍵技術(shù)、各種等級(jí)和發(fā)展現(xiàn)狀進(jìn)行了全面的闡述,并為用戶如何進(jìn)行應(yīng)用選擇提供了基本原則,對(duì)于初學(xué)者應(yīng)該有很大的幫助。
一、RAID 概述
1988 年美國(guó)加州大學(xué)伯克利分校的 D. A. Patterson 教授等首次在論文 “A Case of Redundant Array of Inexpensive Disks” 中提出了 RAID 概念 [1] ,即廉價(jià)冗余磁盤陣列( Redundant Array of Inexpensive Disks )。由于當(dāng)時(shí)大容量磁盤比較昂貴, RAID 的基本思想是將多個(gè)容量較小、相對(duì)廉價(jià)的磁盤進(jìn)行有機(jī)組合,從而以較低的成本獲得與昂貴大容量磁盤相當(dāng)?shù)娜萘俊⑿阅?、可靠性。隨著磁盤成本和價(jià)格的不斷降低, RAID 可以使用大部分的磁盤, “廉價(jià)” 已經(jīng)毫無意義。因此, RAID 咨詢委員會(huì)( RAID Advisory Board, RAB )決定用 “ 獨(dú)立 ” 替代 “ 廉價(jià) ” ,于時(shí) RAID 變成了獨(dú)立磁盤冗余陣列( Redundant Array of Independent Disks )。但這僅僅是名稱的變化,實(shí)質(zhì)內(nèi)容沒有改變。
RAID 這種設(shè)計(jì)思想很快被業(yè)界接納, RAID 技術(shù)作為高性能、高可靠的存儲(chǔ)技術(shù),已經(jīng)得到了非常廣泛的應(yīng)用。 RAID 主要利用數(shù)據(jù)條帶、鏡像和數(shù)據(jù)校驗(yàn)技術(shù)來獲取高性能、可靠性、容錯(cuò)能力和擴(kuò)展性,根據(jù)運(yùn)用或組合運(yùn)用這三種技術(shù)的策略和架構(gòu),可以把 RAID 分為不同的等級(jí),以滿足不同數(shù)據(jù)應(yīng)用的需求。 D. A. Patterson 等的論文中定義了 RAID1 ~ RAID5 原始 RAID 等級(jí), 1988 年以來又?jǐn)U展了 RAID0 和 RAID6 。近年來,存儲(chǔ)廠商不斷推出諸如 RAID7 、 RAID10/01 、 RAID50 、 RAID53 、 RAID100 等 RAID 等級(jí),但這些并無統(tǒng)一的標(biāo)準(zhǔn)。目前業(yè)界公認(rèn)的標(biāo)準(zhǔn)是 RAID0 ~ RAID5 ,除 RAID2 外的四個(gè)等級(jí)被定為工業(yè)標(biāo)準(zhǔn),而在實(shí)際應(yīng)用領(lǐng)域中使用最多的 RAID 等級(jí)是 RAID0 、 RAID1 、 RAID3 、 RAID5 、 RAID6 和 RAID10。
從實(shí)現(xiàn)角度看, RAID 主要分為軟 RAID、硬 RAID 以及軟硬混合 RAID 三種。軟 RAID 所有功能均有操作系統(tǒng)和 CPU 來完成,沒有獨(dú)立的 RAID 控制 / 處理芯片和 I/O 處理芯片,效率自然最低。硬 RAID 配備了專門的 RAID 控制 / 處理芯片和 I/O 處理芯片以及陣列緩沖,不占用 CPU 資源,但成本很高。軟硬混合 RAID 具備 RAID 控制 / 處理芯片,但缺乏 I/O 處理芯片,需要 CPU 和驅(qū)動(dòng)程序來完成,性能和成本 在軟 RAID 和硬 RAID 之間。
RAID 每一個(gè)等級(jí)代表一種實(shí)現(xiàn)方法和技術(shù),等級(jí)之間并無高低之分。在實(shí)際應(yīng)用中,應(yīng)當(dāng)根據(jù)用戶的數(shù)據(jù)應(yīng)用特點(diǎn),綜合考慮可用性、性能和成本來選擇合適的 RAID 等級(jí),以及具體的實(shí)現(xiàn)方式。
二、基本原理
RAID ( Redundant Array of Independent Disks )即獨(dú)立磁盤冗余陣列,通常簡(jiǎn)稱為磁盤陣列。簡(jiǎn)單地說, RAID 是由多個(gè)獨(dú)立的高性能磁盤驅(qū)動(dòng)器組成的磁盤子系統(tǒng),從而提供比單個(gè)磁盤更高的存儲(chǔ)性能和數(shù)據(jù)冗余的技術(shù)。 RAID 是一類多磁盤管理技術(shù),其向主機(jī)環(huán)境提供了成本適中、數(shù)據(jù)可靠性高的高性能存儲(chǔ)。 SNIA 對(duì) RAID 的定義是 [2] :一種磁盤陣列,部分物理存儲(chǔ)空間用來記錄保存在剩余空間上的用戶數(shù)據(jù)的冗余信息。當(dāng)其中某一個(gè)磁盤或訪問路徑發(fā)生故障時(shí),冗余信息可用來重建用戶數(shù)據(jù)。磁盤條帶化雖然與 RAID 定義不符,通常還是稱為 RAID (即 RAID0 )。
RAID 的初衷是為大型服務(wù)器提供高端的存儲(chǔ)功能和冗余的數(shù)據(jù)安全。在整個(gè)系統(tǒng)中, RAID 被看作是由兩個(gè)或更多磁盤組成的存儲(chǔ)空間,通過并發(fā)地在多個(gè)磁盤上讀寫數(shù)據(jù)來提高存儲(chǔ)系統(tǒng)的 I/O 性能。大多數(shù) RAID 等級(jí)具有完備的數(shù)據(jù)校驗(yàn)、糾正措施,從而提高系統(tǒng)的容錯(cuò)性,甚至鏡像方式,大大增強(qiáng)系統(tǒng)的可靠性, Redundant 也由此而來。
這里要提一下 JBOD ( Just a Bunch of Disks )。最初 JBOD 用來表示一個(gè)沒有控制軟件提供協(xié)調(diào)控制的磁盤集合,這是 RAID 區(qū)別與 JBOD 的主要因素。目前 JBOD 常指磁盤柜,而不論其是否提供 RAID 功能。
RAID 的兩個(gè)關(guān)鍵目標(biāo)是提高數(shù)據(jù)可靠性和 I/O 性能。磁盤陣列中,數(shù)據(jù)分散在多個(gè)磁盤中,然而對(duì)于計(jì)算機(jī)系統(tǒng)來說,就像一個(gè)單獨(dú)的磁盤。通過把相同數(shù)據(jù)同時(shí)寫入到多塊磁盤(典型地如鏡像),或者將計(jì)算的校驗(yàn)數(shù)據(jù)寫入陣列中來獲得冗余能力,當(dāng)單塊磁盤出現(xiàn)故障時(shí)可以保證不會(huì)導(dǎo)致數(shù)據(jù)丟失。有些 RAID 等級(jí)允許更多地 磁盤同時(shí)發(fā)生故障,比如 RAID6 ,可以是兩塊磁盤同時(shí)損壞。在這樣的冗余機(jī)制下,可以用新磁盤替換故障磁盤, RAID 會(huì)自動(dòng)根據(jù)剩余磁盤中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)重建丟失的數(shù)據(jù),保證數(shù)據(jù)一致性和完整性。數(shù)據(jù)分散保存在 RAID 中的多個(gè)不同磁盤上,并發(fā)數(shù)據(jù)讀寫要大大優(yōu)于單個(gè)磁盤,因此可以獲得更高的聚合 I/O 帶寬。當(dāng)然,磁盤陣列會(huì)減少全體磁盤的總可用存儲(chǔ)空間,犧牲空間換取更高的可靠性和性能。比如, RAID1 存儲(chǔ)空間利用率僅有 50% , RAID5 會(huì)損失其中一個(gè)磁盤的存儲(chǔ)容量,空間利用率為 (n-1)/n 。
磁盤陣列可以在部分磁盤(單塊或多塊,根據(jù)實(shí)現(xiàn)而論)損壞的情況下,仍能保證系統(tǒng)不中斷地連續(xù)運(yùn)行。在重建故障磁盤數(shù)據(jù)至新磁盤的過程中,系統(tǒng)可以繼續(xù)正常運(yùn)行,但是性能方面會(huì)有一定程度上的降低。一些磁盤陣列在添加或刪除磁盤時(shí)必須停機(jī),而有些則支持熱交換 ( Hot Swapping ),允許不停機(jī)下替換磁盤驅(qū)動(dòng)器。這種高端磁盤陣列主要用于要求高可能性的應(yīng)用系統(tǒng),系統(tǒng)不能停機(jī)或盡可能少的停機(jī)時(shí)間。一般來說, RAID 不可作為數(shù)據(jù)備份的替代方案,它對(duì)非磁盤故障等造成的數(shù)據(jù)丟失無能為力,比如病毒、人為破壞、意外刪除等情形。此時(shí)的數(shù)據(jù)丟失是相對(duì)操作系統(tǒng)、文件系統(tǒng)、卷管理器或者應(yīng)用系統(tǒng)來說的,對(duì)于 RAID 系統(tǒng)來身,數(shù)據(jù)都是完好的,沒有發(fā)生丟失。所以,數(shù)據(jù)備份、災(zāi) 備等數(shù)據(jù)保護(hù)措施是非常必要的,與 RAID 相輔相成,保護(hù)數(shù)據(jù)在不同層次的安全性,防止發(fā)生數(shù)據(jù)丟失。
RAID 中主要有三個(gè)關(guān)鍵概念和技術(shù):鏡像( Mirroring )、數(shù)據(jù)條帶( Data Stripping )和數(shù)據(jù)校驗(yàn)( Data parity ) [3][4][5] 。鏡像,將數(shù)據(jù)復(fù)制到多個(gè)磁盤,一方面可以提高可靠性,另一方面可并發(fā)從兩個(gè)或多個(gè)副本讀取數(shù)據(jù)來提高讀性能。顯而易見,鏡像的寫性能要稍低, 確保數(shù)據(jù)正確地寫到多個(gè)磁盤需要更多的時(shí)間消耗。數(shù)據(jù)條帶,將數(shù)據(jù)分片保存在多個(gè)不同的磁盤,多個(gè)數(shù)據(jù)分片共同組成一個(gè)完整數(shù)據(jù)副本,這與鏡像的多個(gè)副本是不同的,它通常用于性能考慮。數(shù)據(jù)條帶具有更高的并發(fā)粒度,當(dāng)訪問數(shù)據(jù)時(shí),可以同時(shí)對(duì)位于不同磁盤上數(shù)據(jù)進(jìn)行讀寫操作, 從而獲得非常可觀的 I/O 性能提升 。數(shù)據(jù)校驗(yàn),利用冗余數(shù)據(jù)進(jìn)行數(shù)據(jù)錯(cuò)誤檢測(cè)和修復(fù),冗余數(shù)據(jù)通常采用海明碼、異或操作等算法來計(jì)算獲得。利用校驗(yàn)功能,可以很大程度上提高磁盤陣列的可靠性、魯棒性和容錯(cuò)能力。不過,數(shù)據(jù)校驗(yàn)需要從多處讀取數(shù)據(jù)并進(jìn)行計(jì)算和對(duì)比,會(huì)影響系統(tǒng)性能。 不同等級(jí)的 RAID 采用一個(gè)或多個(gè)以上的三種技術(shù),來獲得不同的數(shù)據(jù)可靠性、可用性和 I/O 性能。至于設(shè)計(jì)何種 RAID (甚至新的等級(jí)或類型)或采用何種模式的 RAID ,需要在深入理解系統(tǒng)需求的前提下進(jìn)行合理選擇,綜合評(píng)估可靠性、性能和成本來進(jìn)行折中的選擇。
RAID 思想從提出后就廣泛被業(yè)界所接納,存儲(chǔ)工業(yè)界投入了大量的時(shí)間和財(cái)力來研究和開發(fā)相關(guān)產(chǎn)品。而且,隨著處理器、內(nèi)存、計(jì)算機(jī)接口等技術(shù)的不斷發(fā)展, RAID 不斷地發(fā)展和革新,在計(jì)算機(jī)存儲(chǔ)領(lǐng)域得到了廣泛的應(yīng)用,從高端系統(tǒng)逐漸延伸到普通的中低端系統(tǒng)。 RAID 技術(shù)如此流行,源于其具有顯著的特征和優(yōu)勢(shì),基本可以滿足大部分的數(shù)據(jù)存儲(chǔ)需求??傮w說來, RAID 主要優(yōu)勢(shì)有如下幾點(diǎn):
(1) 大容量
這是 RAID 的一個(gè)顯然優(yōu)勢(shì),它擴(kuò)大了磁盤的容量,由多個(gè)磁盤組成的 RAID 系統(tǒng)具有海量的存儲(chǔ)空間?,F(xiàn)在單個(gè)磁盤的容量就可以到 1TB 以上,這樣 RAID 的存儲(chǔ)容量就可以達(dá)到 PB 級(jí),大多數(shù)的存儲(chǔ)需求都可以滿足。一般來說, RAID 可用容量要小于所有成員磁盤的總?cè)萘?。不同等?jí)的 RAID 算法需要一定的冗余開銷,具體容量開銷與采用算法相關(guān)。如果已知 RAID 算法和容量,可以計(jì)算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之間。
(2) 高性能
RAID 的高性能受益于數(shù)據(jù)條帶化技術(shù)。單個(gè)磁盤的 I/O 性能受到接口、帶寬等計(jì)算機(jī)技術(shù)的限制,性能往往很有 限,容易成為系統(tǒng)性能的瓶頸。通過數(shù)據(jù)條帶化, RAID 將數(shù)據(jù) I/O 分散到各個(gè)成員磁盤上,從而獲得比單個(gè)磁盤成倍增長(zhǎng)的聚合 I/O 性能。
(3) 可靠性
可用性和可靠性是 RAID 的另一個(gè)重要特征。從理論上講,由多個(gè)磁盤組成的 RAID 系統(tǒng)在可靠性方面應(yīng)該比單個(gè)磁盤要差。這里有個(gè)隱含假定:?jiǎn)蝹€(gè)磁盤故障將導(dǎo)致整個(gè) RAID 不可用。 RAID 采用鏡像和數(shù)據(jù)校驗(yàn)等數(shù)據(jù)冗余技術(shù),打破了這個(gè)假定。 鏡像是最為原始的冗余技術(shù),把某組磁盤驅(qū)動(dòng)器上的數(shù)據(jù)完全復(fù)制到另一組磁盤驅(qū)動(dòng)器上,保證總有數(shù)據(jù)副本可用。 比起鏡像 50% 的冗余開銷 ,數(shù)據(jù)校驗(yàn)要小很多,它利用校驗(yàn)冗余信息對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)和糾錯(cuò)。 RAID 冗余技術(shù)大幅提升數(shù)據(jù)可用性和可靠性,保證了若干磁盤出錯(cuò)時(shí),不 會(huì)導(dǎo)致數(shù)據(jù)的丟失,不影響系統(tǒng)的連續(xù)運(yùn)行。
(4) 可管理性
實(shí)際上, RAID 是一種虛擬化技術(shù),它對(duì)多個(gè)物理磁盤驅(qū)動(dòng)器虛擬成一個(gè)大容量的邏輯驅(qū)動(dòng)器。對(duì)于外部主機(jī)系統(tǒng)來說, RAID 是一個(gè)單一的、快速可靠的大容量磁盤驅(qū)動(dòng)器。這樣,用戶就可以在這個(gè)虛擬驅(qū)動(dòng)器上來組織和存儲(chǔ)應(yīng)用系統(tǒng)數(shù)據(jù)。 從用戶應(yīng)用角度看,可使存儲(chǔ)系統(tǒng)簡(jiǎn)單易用,管理也很便利。 由于 RAID 內(nèi)部完成了大量的存儲(chǔ)管理工作,管理員只需要管理單個(gè)虛擬驅(qū)動(dòng)器,可以節(jié)省大量的管理工作。 RAID 可以動(dòng)態(tài)增減磁盤驅(qū)動(dòng)器,可自動(dòng)進(jìn)行數(shù)據(jù)校驗(yàn)和數(shù)據(jù)重建,這些都可以 大大簡(jiǎn)化管理工作。
三、關(guān)鍵技術(shù)
3.1 鏡像
鏡像是一種冗余技術(shù),為磁盤提供保護(hù)功能,防止磁盤發(fā)生故障而造成數(shù)據(jù)丟失。對(duì)于 RAID 而言,采用鏡像技術(shù) 典型地 將會(huì)同時(shí)在陣列中產(chǎn)生兩個(gè)完全相同的數(shù)據(jù)副本,分布在兩個(gè)不同的磁盤驅(qū)動(dòng)器組上。鏡像提供了完全的數(shù)據(jù)冗余能力,當(dāng)一個(gè)數(shù)據(jù)副本失效不可用時(shí),外部系統(tǒng)仍可正常訪問另一副本,不會(huì)對(duì)應(yīng)用系統(tǒng)運(yùn)行和性能產(chǎn)生影響。而且,鏡像不需要額外的計(jì)算和校驗(yàn),故障修復(fù)非???,直接復(fù)制即可。鏡像技術(shù)可以從多個(gè)副本進(jìn)行并發(fā)讀取數(shù)據(jù),提供更高的讀 I/O 性能,但不能并行寫數(shù)據(jù),寫多個(gè)副本會(huì)會(huì)導(dǎo)致一定的 I/O 性能降低。
鏡像技術(shù)提供了非常高的數(shù)據(jù)安全性,其代價(jià)也是非常昂貴的,需要至少雙倍的存儲(chǔ)空間。高成本限制了鏡像的廣泛應(yīng)用,主要應(yīng)用于至關(guān)重要的數(shù)據(jù)保護(hù),這種場(chǎng)合下數(shù)據(jù)丟失會(huì)造成巨大的損失。另外,鏡像通過“ 拆分 ”能獲得特定時(shí)間點(diǎn)的上數(shù)據(jù)快照,從而可以實(shí)現(xiàn)一種備份窗口幾乎為零的數(shù)據(jù)備份技術(shù)。
3.2 數(shù)據(jù)條帶
磁盤存儲(chǔ)的性能瓶頸在于磁頭尋道定位,它是一種慢速機(jī)械運(yùn)動(dòng),無法與高速的 CPU 匹配。再者,單個(gè)磁盤驅(qū)動(dòng)器性能存在物理極限, I/O 性能非常有限。 RAID 由多塊磁盤組成,數(shù)據(jù)條帶技術(shù)將數(shù)據(jù)以塊的方式分布存儲(chǔ)在多個(gè)磁盤中,從而可以對(duì)數(shù)據(jù)進(jìn)行并發(fā)處理。這樣寫入和讀取數(shù)據(jù)就可以在多個(gè)磁盤上同時(shí)進(jìn)行,并發(fā)產(chǎn)生非常高的聚合 I/O ,有效提高了整體 I/O 性能,而且具有良好的線性擴(kuò)展性。這對(duì)大容量數(shù)據(jù)尤其顯著,如果不分塊,數(shù)據(jù)只能按順序存儲(chǔ)在磁盤陣列的磁盤上,需要時(shí)再按順序讀取。而通過條帶技術(shù),可獲得數(shù)倍與順序訪問的性能提升。
數(shù)據(jù)條帶技術(shù)的分塊大小選擇非常關(guān)鍵。條帶粒度可以是一個(gè)字節(jié)至幾 KB 大小,分塊越小,并行處理能力就越強(qiáng),數(shù)據(jù)存取速度就越高,但同時(shí)就會(huì)增加塊存取的隨機(jī)性和塊尋址時(shí)間。實(shí)際應(yīng)用中,要根據(jù)數(shù)據(jù)特征和需求來選擇合適的分塊大小,在數(shù)據(jù)存取隨機(jī)性和并發(fā)處理能力之間進(jìn)行平衡,以爭(zhēng)取盡可能高的整體性能。
數(shù)據(jù)條帶是基于提高 I/O 性能而提出的,也就是說它只關(guān)注性能, 而對(duì)數(shù)據(jù)可靠性、可用性沒有任何改善。實(shí)際上,其中任何一個(gè)數(shù)據(jù)條帶損壞都會(huì)導(dǎo)致整個(gè)數(shù)據(jù)不可用,采用數(shù)據(jù)條帶技術(shù)反而增加了數(shù)據(jù)發(fā)生丟失的概念率。
3.3 數(shù)據(jù)校驗(yàn)
鏡像具有高安全性、高讀性能,但冗余開銷太昂貴。數(shù)據(jù)條帶通過并發(fā)性來大幅提高性能,然而對(duì)數(shù)據(jù)安全性、可靠性未作考慮。數(shù)據(jù)校驗(yàn)是一種冗余技術(shù),它用校驗(yàn)數(shù)據(jù)來提供數(shù)據(jù)的安全,可以檢測(cè)數(shù)據(jù)錯(cuò)誤,并在能力允許的前提下進(jìn)行數(shù)據(jù)重構(gòu)。相對(duì)鏡像,數(shù)據(jù)校驗(yàn)大幅縮減了冗余開銷,用較小的代價(jià)換取了極佳的數(shù)據(jù)完整性和可靠性。數(shù)據(jù)條帶技術(shù)提供高性能,數(shù)據(jù)校驗(yàn)提供數(shù)據(jù)安全性, RAID 不同等級(jí)往往同時(shí)結(jié)合使用這兩種技術(shù)。
采用數(shù)據(jù)校驗(yàn)時(shí), RAID 要在寫入數(shù)據(jù)同時(shí)進(jìn)行校驗(yàn)計(jì)算,并將得到的校驗(yàn)數(shù)據(jù)存儲(chǔ)在 RAID 成員磁盤中。校驗(yàn)數(shù)據(jù)可以集中保存在某個(gè)磁盤或分散存儲(chǔ)在多個(gè)不同磁盤中,甚至校驗(yàn)數(shù)據(jù)也可以分塊,不同 RAID 等級(jí)實(shí)現(xiàn)各不相同。當(dāng)其中一部分?jǐn)?shù)據(jù)出錯(cuò)時(shí),就可以對(duì)剩余數(shù)據(jù)和校驗(yàn)數(shù)據(jù)進(jìn)行反校驗(yàn)計(jì)算重建丟失的數(shù)據(jù)。校驗(yàn)技術(shù)相對(duì)于鏡像技術(shù)的優(yōu)勢(shì)在于節(jié)省大量開銷,但由于每次數(shù)據(jù)讀寫都要進(jìn)行大量的校驗(yàn)運(yùn)算,對(duì)計(jì)算機(jī)的運(yùn)算速度要求很高,必須使用硬件 RAID 控制器。在數(shù)據(jù)重建恢復(fù)方面,檢驗(yàn)技術(shù)比鏡像技術(shù)復(fù)雜得多且慢得多。
海明校驗(yàn)碼和 異或校驗(yàn)是兩種最為常用的 數(shù)據(jù)校驗(yàn)算法。海明校驗(yàn)碼是由理查德.海明提出的,不僅能檢測(cè)錯(cuò)誤,還能給出錯(cuò)誤位置并自動(dòng)糾正。海明校驗(yàn)的基本思想是:將有效信息按照某種規(guī)律分成若干組,對(duì)每一個(gè)組作奇偶測(cè)試并安排一個(gè)校驗(yàn)位,從而能提供多位檢錯(cuò)信息,以定位錯(cuò)誤點(diǎn)并糾正。可見海明校驗(yàn)實(shí)質(zhì)上是一種多重奇偶校驗(yàn)。異或校驗(yàn)通過異或邏輯運(yùn)算產(chǎn)生,將一個(gè)有效信息與一個(gè)給定的初始值進(jìn)行異或運(yùn)算,會(huì)得到校驗(yàn)信息。如果有效信息出現(xiàn)錯(cuò)誤,通過校驗(yàn)信息與初始值的異或運(yùn)算能還原正確的有效信息。
四、RAID 等級(jí)
4.1 JBOD
JBOD ( Just a Bunch Of Disks )不是標(biāo)準(zhǔn)的 RAID 等級(jí),它通常用來表示一個(gè)沒有控制軟件提供協(xié)調(diào)控制的磁盤集合。 JBOD 將多個(gè)物理磁盤串聯(lián)起來,提供一個(gè)巨大的邏輯磁盤。 JBOD (如圖 1 )的數(shù)據(jù)存放機(jī)制是由第一塊磁盤開始按順序往后存儲(chǔ),當(dāng)前磁盤存儲(chǔ)空間用完后,再依次往后面的磁盤存儲(chǔ)數(shù)據(jù)。 JBOD 存儲(chǔ)性能完全等同于單塊磁盤,而且也不提供數(shù)據(jù)安全保護(hù)。它只是簡(jiǎn)單提供一種擴(kuò)展存儲(chǔ)空間的機(jī)制, JBOD 可用存儲(chǔ)容量等于所有成員磁盤的存儲(chǔ)空間之和。目前 JBOD 常指磁盤柜,而不論其是否提供 RAID 功能。
圖1 JBOD
4.2 標(biāo)準(zhǔn) RAID 等級(jí)
SNIA 、 Berkeley 等組織機(jī)構(gòu)把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七個(gè)等級(jí)定為標(biāo)準(zhǔn)的 RAID 等級(jí),這也被業(yè)界和學(xué)術(shù)界所公認(rèn)。標(biāo)準(zhǔn)等級(jí)是最基本的 RAID 配置集合,單獨(dú)或綜合利用數(shù)據(jù)條帶、鏡像和數(shù)據(jù)校驗(yàn)技術(shù)。標(biāo)準(zhǔn) RAID 可以組合,即 RAID 組合等級(jí),滿足 對(duì)性能、安全性、可靠性要求更高的存儲(chǔ)應(yīng)用需求。 [6][7][8][9][10][11]
1.RAID0
RAID0 是一種簡(jiǎn)單的、無數(shù)據(jù)校驗(yàn)的數(shù)據(jù)條帶化技術(shù)。實(shí)際上不是一種真正的 RAID ,因?yàn)樗⒉惶峁┤魏涡问降娜哂嗖呗浴?RAID0 將所在磁盤條帶化后組成大容量的存儲(chǔ)空間(如圖 2 所示),將數(shù)據(jù)分散存儲(chǔ)在所有磁盤中,以獨(dú)立訪問方式實(shí)現(xiàn)多塊磁盤的并讀訪問。由于可以并發(fā)執(zhí)行 I/O 操作,總線帶寬得到充分利用。再加上不需要進(jìn)行數(shù)據(jù)校驗(yàn),RAID0 的性能在所有 RAID 等級(jí)中是最高的。理論上講,一個(gè)由 n 塊磁盤組成的 RAID0 ,它的讀寫性能是單個(gè)磁盤性能的 n 倍,但由于總線帶寬等多種因素的限制,實(shí)際的性能提升低于理論值。
RAID0 具有低成本、高讀寫性能、 100% 的高存儲(chǔ)空間利用率等優(yōu)點(diǎn),但是它不提供數(shù)據(jù)冗余保護(hù),一旦數(shù)據(jù)損壞,將無法恢復(fù)。 因此, RAID0 一般適用于對(duì)性能要求嚴(yán)格但對(duì)數(shù)據(jù)安全性和可靠性不高的應(yīng)用,如視頻、音頻存儲(chǔ)、臨時(shí)數(shù)據(jù)緩存空間等。
圖2 RAID0 :無冗錯(cuò)的數(shù)據(jù)條帶
2.RAID1
RAID1 稱為鏡像,它將數(shù)據(jù)完全一致地分別寫到工作磁盤和鏡像 磁盤,它的磁盤空間利用率為 50% 。 RAID1 在數(shù)據(jù)寫入時(shí),響應(yīng)時(shí)間會(huì)有所影響,但是讀數(shù)據(jù)的時(shí)候沒有影響。 RAID1 提供了最佳的數(shù)據(jù)保護(hù),一旦工作磁盤發(fā)生故障,系統(tǒng)自動(dòng)從鏡像磁盤讀取數(shù)據(jù),不會(huì)影響用戶工作。工作原理如圖 3 所示。
RAID1 與 RAID0 剛好相反,是為了增強(qiáng)數(shù)據(jù)安全性使兩塊 磁盤數(shù)據(jù)呈現(xiàn)完全鏡像,從而達(dá)到安全性好、技術(shù)簡(jiǎn)單、管理方便。 RAID1 擁有完全容錯(cuò)的能力,但實(shí)現(xiàn)成本高。 RAID1 應(yīng)用于對(duì)順序讀寫性能要求高以及對(duì)數(shù)據(jù)保護(hù)極為重視的應(yīng)用,如對(duì)郵件系統(tǒng)的數(shù)據(jù)保護(hù)。
圖3 RAID1 :無校驗(yàn)的相互鏡像
3.RAID2
RAID2 稱為糾錯(cuò)海明碼磁盤陣列,其設(shè)計(jì)思想是利用海明碼實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)冗余。海明碼是一種在原始數(shù)據(jù)中加入若干校驗(yàn)碼來進(jìn)行錯(cuò)誤檢測(cè)和糾正的編碼技術(shù),其中第 2n 位( 1, 2, 4, 8, … )是校驗(yàn)碼,其他位置是數(shù)據(jù)碼。因此在 RAID2 中,數(shù)據(jù)按位存儲(chǔ),每塊磁盤存儲(chǔ)一位數(shù)據(jù)編碼,磁盤數(shù)量取決于所設(shè)定的數(shù)據(jù)存儲(chǔ)寬度,可由用戶設(shè)定。圖 4 所示的為數(shù)據(jù)寬度為 4 的 RAID2 ,它需要 4 塊數(shù)據(jù)磁盤和 3 塊校驗(yàn)磁盤。如果是 64 位數(shù)據(jù)寬度,則需要 64 塊 數(shù)據(jù)磁盤和 7 塊校驗(yàn)磁盤??梢?, RAID2 的數(shù)據(jù)寬度越大,存儲(chǔ)空間利用率越高,但同時(shí)需要的磁盤數(shù)量也越多。
海明碼自身具備糾錯(cuò)能力,因此 RAID2 可以在數(shù)據(jù)發(fā)生錯(cuò)誤的情況下對(duì)糾正錯(cuò)誤,保證數(shù)據(jù)的安全性。它的數(shù)據(jù)傳輸性能相當(dāng)高,設(shè)計(jì)復(fù)雜性要低于后面介紹的 RAID3 、 RAID4 和 RAID5 。
但是,海明碼的數(shù)據(jù)冗余開銷太大,而且 RAID2 的數(shù)據(jù)輸出性能受陣列中最慢磁盤驅(qū)動(dòng)器的限制。再者,海明碼是按位運(yùn)算, RAID2 數(shù)據(jù)重建非常耗時(shí)。由于這些顯著的缺陷,再加上大部分磁盤驅(qū)動(dòng)器本身都具備了糾錯(cuò)功能,因此 RAID2 在實(shí)際中很少應(yīng)用,沒有形成商業(yè)產(chǎn)品,目前主流存儲(chǔ)磁盤陣列均不提供 RAID2 支持。
圖 4 RAID2 :海明碼校驗(yàn)
4.RAID3
RAID3 (圖 5 )是使用專用校驗(yàn)盤的并行訪問陣列,它采用一個(gè)專用的磁盤作為校驗(yàn)盤,其余磁盤作為數(shù)據(jù)盤,數(shù)據(jù)按位可字節(jié)的方式交叉存儲(chǔ)到各個(gè)數(shù)據(jù)盤中。RAID3 至少需要三塊磁盤,不同磁盤上同一帶區(qū)的數(shù)據(jù)作 XOR 校驗(yàn),校驗(yàn)值寫入校驗(yàn)盤中。 RAID3 完好時(shí)讀性能與 RAID0 完全一致,并行從多個(gè)磁盤條帶讀取數(shù)據(jù),性能非常高,同時(shí)還提供了數(shù)據(jù)容錯(cuò)能力。向 RAID3 寫入數(shù)據(jù)時(shí),必須計(jì)算與所有同條帶的校驗(yàn)值,并將新校驗(yàn)值寫入校驗(yàn)盤中。一次寫操作包含了寫數(shù)據(jù)塊、讀取同條帶的數(shù)據(jù)塊、計(jì)算校驗(yàn)值、寫入校驗(yàn)值等多個(gè)操作,系統(tǒng)開銷非常大,性能較低。
如果 RAID3 中某一磁盤出現(xiàn)故障,不會(huì)影響數(shù)據(jù)讀取,可以借助校驗(yàn)數(shù)據(jù)和其他完好數(shù)據(jù)來重建數(shù)據(jù)。假如所要讀取的數(shù)據(jù)塊正好位于失效磁盤,則系統(tǒng)需要讀取所有同一條帶的數(shù)據(jù)塊,并根據(jù)校驗(yàn)值重建丟失的數(shù)據(jù),系統(tǒng)性能將受到影響。當(dāng)故障磁盤被更換后,系統(tǒng)按相同的方式重建故障盤中的數(shù)據(jù)至新磁盤。
RAID3 只需要一個(gè)校驗(yàn)盤,陣列的存儲(chǔ)空間利用率高,再加上并行訪問的特征,能夠?yàn)楦邘挼拇罅孔x寫提供高性能,適用大容量數(shù)據(jù)的順序訪問應(yīng)用,如影像處理、流媒體服務(wù)等。目前, RAID5 算法不斷改進(jìn),在大數(shù)據(jù)量讀取時(shí)能夠模擬 RAID3 ,而且 RAID3 在出現(xiàn)壞盤時(shí)性能會(huì)大幅下降,因此常使用 RAID5 替代 RAID3 來運(yùn)行具有持續(xù)性、高帶寬、大量讀寫特征的應(yīng)用。
圖5 RAID3 :帶有專用位校驗(yàn)的數(shù)據(jù)條帶
5.RAID4
RAID4 與 RAID3 的原理大致相同,區(qū)別在于條帶化的方式不同。 RAID4 (圖 6 )按照 塊的方式來組織數(shù)據(jù),寫操作只涉及當(dāng)前數(shù)據(jù)盤和校驗(yàn)盤兩個(gè)盤,多個(gè) I/O 請(qǐng)求可以同時(shí)得到處理,提高了系統(tǒng)性能。 RAID4 按塊存儲(chǔ)可以保證單塊的完整性,可以避免受到其他磁盤上同條帶產(chǎn)生的不利影響。
RAID4 在不同磁盤上的同級(jí)數(shù)據(jù)塊同樣使用 XOR 校驗(yàn),結(jié)果存儲(chǔ)在校驗(yàn)盤中。寫入數(shù)據(jù)時(shí), RAID4 按這種方式把各磁盤上的同級(jí)數(shù)據(jù)的校驗(yàn)值寫入校驗(yàn) 盤,讀取時(shí)進(jìn)行即時(shí)校驗(yàn)。因此,當(dāng)某塊磁盤的數(shù)據(jù)塊損壞, RAID4 可以通過校驗(yàn)值以及其他磁盤上的同級(jí)數(shù)據(jù)塊進(jìn)行數(shù)據(jù)重建。
RAID4 提供了 非常好的讀性能,但單一的校驗(yàn)盤往往成為系統(tǒng)性能的瓶頸。對(duì)于寫操作, RAID4 只能一個(gè)磁盤一個(gè)磁盤地寫,并且還要寫入校驗(yàn)數(shù)據(jù),因此寫性能比較差。而且隨著成員磁盤數(shù)量的增加,校驗(yàn)盤的系統(tǒng)瓶頸將更加突出。正是如上這些限制和不足, RAID4 在實(shí)際應(yīng)用中很少見,主流存儲(chǔ)產(chǎn)品也很少使用 RAID4 保護(hù)。
圖6 RAID4 :帶有專用塊級(jí)校驗(yàn)的數(shù)據(jù)條帶
6.RAID5
RAID5 應(yīng)該是目前最常見的 RAID 等級(jí),它的原理與 RAID4 相似,區(qū)別在于校驗(yàn)數(shù)據(jù)分布在陣列中的所有磁盤上,而沒有采用專門的校驗(yàn)磁盤。對(duì)于數(shù)據(jù)和校驗(yàn)數(shù)據(jù),它們的寫操作可以同時(shí)發(fā)生在完全不同的磁盤上。因此, RAID5 不存在 RAID4 中的并發(fā)寫操作時(shí)的校驗(yàn)盤性能瓶頸問題。另外, RAID5 還具備很好的擴(kuò)展性。當(dāng)陣列磁盤 數(shù)量增加時(shí),并行操作量的能力也隨之增長(zhǎng),可比 RAID4 支持更多的磁盤,從而擁有更高的容量以及更高的性能。
RAID5 (圖 7)的磁盤上同時(shí)存儲(chǔ)數(shù)據(jù)和校驗(yàn)數(shù)據(jù),數(shù)據(jù)塊和對(duì)應(yīng)的校驗(yàn)信息存保存在不同的磁盤上,當(dāng)一個(gè)數(shù)據(jù)盤損壞時(shí),系統(tǒng)可以根據(jù)同一條帶的其他數(shù)據(jù)塊和對(duì)應(yīng)的校驗(yàn)數(shù)據(jù)來重建損壞的數(shù)據(jù)。與其他 RAID 等級(jí)一樣,重建數(shù)據(jù)時(shí), RAID5 的性能會(huì)受到較大的影響。
RAID5 兼顧存儲(chǔ)性能、數(shù)據(jù)安全和存儲(chǔ)成本等各方面因素,它可以理解為 RAID0 和 RAID1 的折中方案,是目前綜合性能最佳的數(shù)據(jù)保護(hù)解決方案。 RAID5 基本上可以滿足大部分的存儲(chǔ)應(yīng)用需求,數(shù)據(jù)中心大多采用它作為應(yīng)用數(shù)據(jù)的保護(hù)方案。
圖7 RAID5 :帶分散校驗(yàn)的數(shù)據(jù)條帶
7.RAID6
前面所述的各個(gè) RAID 等級(jí)都只能保護(hù)因單個(gè)磁盤失效而造成的數(shù)據(jù)丟失。如果兩個(gè)磁盤同時(shí)發(fā)生故障,數(shù)據(jù)將無法恢復(fù)。 RAID6 (如圖 8 )引入雙重校驗(yàn)的概念,它可以保護(hù)陣列中同時(shí)出現(xiàn)兩個(gè)磁盤失效時(shí),陣列仍能夠繼續(xù)工作,不會(huì)發(fā)生數(shù)據(jù)丟失。 RAID6 等級(jí)是在 RAID5 的基礎(chǔ)上為了進(jìn)一步增強(qiáng)數(shù)據(jù)保護(hù)而設(shè)計(jì)的一種 RAID 方式,它可以看作是一種擴(kuò)展的 RAID5 等級(jí)。
RAID6 不僅要支持?jǐn)?shù)據(jù)的恢復(fù),還要支持校驗(yàn)數(shù)據(jù)的恢復(fù),因此實(shí)現(xiàn)代價(jià)很高,控制器的設(shè)計(jì)也比其他等級(jí)更復(fù)雜、更昂貴。 RAID6 思想最常見的實(shí)現(xiàn)方式是采用兩個(gè)獨(dú)立的校驗(yàn)算法,假設(shè)稱為 P 和 Q ,校驗(yàn)數(shù)據(jù)可以分別存儲(chǔ)在兩個(gè)不同的校驗(yàn)盤上,或者分散存儲(chǔ)在所有成員磁盤中。當(dāng)兩個(gè)磁盤同時(shí)失效時(shí),即可通過求解兩元方程來重建兩個(gè)磁盤上的數(shù)據(jù)。
RAID6 具有快速的讀取性能、更高的容錯(cuò)能力。但是,它的成本要高于 RAID5 許多,寫性能也較差,并有設(shè)計(jì)和實(shí)施非常復(fù)雜。因此, RAID6 很少得到實(shí)際應(yīng)用,主要用于對(duì)數(shù)據(jù)安全等級(jí)要求非常高的場(chǎng)合。它一般是替代 RAID10 方案的經(jīng)濟(jì)性選擇。
圖8 RAID6 :帶雙重分散校驗(yàn)的數(shù)據(jù)條帶
4.3 RAID 組合等級(jí)
標(biāo)準(zhǔn) RAID 等級(jí)各有優(yōu)勢(shì)和不足。自然地,我們想到把多個(gè) RAID 等級(jí)組合起來,實(shí)現(xiàn)優(yōu)勢(shì)互補(bǔ),彌補(bǔ)相互的不足,從而達(dá)到在性能、數(shù)據(jù)安全性等指標(biāo)上更高的 RAID 系統(tǒng)。目前在業(yè)界和學(xué)術(shù)研究中提到的 RAID 組合等級(jí)主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但實(shí)際得到較為廣泛應(yīng)用的只有 RAID01 和 RAID10 兩個(gè)等級(jí)。當(dāng)然,組合等級(jí)的實(shí)現(xiàn)成本一般都非常昂貴,只是在 少數(shù)特定場(chǎng)合應(yīng)用。 [12]
1.RAID00
簡(jiǎn)單地說, RAID00 是由多個(gè)成員 RAID0 組成的高級(jí) RAID0 。它與 RAID0 的區(qū)別在于, RAID0 陣列替換了原先的成員磁盤??梢园?RAID00 理解為兩層條帶化結(jié)構(gòu)的磁盤陣列,即對(duì)條帶再進(jìn)行條帶化。這種陣列可以提供更大的存儲(chǔ)容量、更高的 I/O 性能和更好的 I/O 負(fù)均衡。
2. RAID01 和 RAID10
一些文獻(xiàn)把這兩種 RAID 等級(jí)看作是等同的,本文認(rèn)為是不同的。 RAID01 是先做條帶化再作鏡像,本質(zhì)是對(duì)物理磁盤實(shí)現(xiàn)鏡像;而 RAID10 是先做鏡像再作條帶化,是對(duì)虛擬磁盤實(shí)現(xiàn)鏡像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容錯(cuò)能力,原理如圖 9 所示。
RAID01 兼?zhèn)淞?RAID0 和 RAID1 的優(yōu)點(diǎn),它先用兩塊磁盤建立鏡像,然后再在鏡像內(nèi)部做條帶化。 RAID01 的數(shù)據(jù)將同時(shí)寫入到兩個(gè)磁盤陣列中,如果其中一個(gè)陣列損壞,仍可繼續(xù)工作,保證數(shù)據(jù)安全性的同時(shí)又提高了性能。 RAID01 和 RAID10 內(nèi)部都含有 RAID1 模式,因此整體磁盤利用率均僅為 50% 。
圖 9 典型的 RAID01 (上)和 RAID10 (下)模型
3.RAID100
通??醋?RAID 1+0+0 ,有時(shí)也稱為 RAID 10+0 ,即條帶化的 RAID10 。原理如圖 10 所示。 RAID100 的缺陷與 RAID10 相同,任意一個(gè) RAID1 損壞一個(gè)磁盤不會(huì)發(fā)生數(shù)據(jù)丟失,但是剩下的磁盤存在單點(diǎn)故障的危險(xiǎn)。最頂層的 RAID0 ,即條帶化任務(wù),通常由軟件層來完成。
RAID100 突破了單個(gè) RAID 控制器對(duì)物理磁盤數(shù)量的限制,可以獲得更高的 I/O 負(fù)載均衡, I/O 壓力分散到更多的磁盤上,進(jìn)一步提高隨機(jī)讀性能,并有效降低熱點(diǎn)盤故障風(fēng)險(xiǎn)。因此, RAID100 通常是大數(shù)據(jù)庫的最佳選擇。
圖10 典型的 RAID100 模型
4.RAID30 ( RAID53 )、 RAID50 和 RAID60
這三種 RAID 等級(jí)與 RAID00 原理基本相同,區(qū)別在于成員 “ 磁盤 ” 換成了 RAID3 、 RAID5 和 RAID6 ,分別如圖 11 、 12 、 13 所示。其中, RAID30 通常又被稱為 RAID53[13] 。其實(shí),可把這些等級(jí) RAID 統(tǒng)稱為 RAID X0 等級(jí), X 可為標(biāo)準(zhǔn) RAID 等級(jí),甚至組合等級(jí)(如 RAID100 )。利用多層 RAID 配置,充分利用 RAID X 與 RAID0 的優(yōu)點(diǎn),從而獲得在存儲(chǔ)容量、數(shù)據(jù)安全性和 I/O 負(fù)載均衡等方面的大幅性能提升。
圖11 典型的 RAID50 模型
圖12 典型的 RAID50 模型
圖13 典型的 RAID60 模型
4.4 非標(biāo)準(zhǔn) RAID 等級(jí)
雖然標(biāo)準(zhǔn) RAID 和組合 RAID 在具體實(shí)現(xiàn)上存在一定程度的不同,但與標(biāo)準(zhǔn)規(guī)范是保持一致或兼容的。然而除此之外,一些存儲(chǔ)廠商還實(shí)現(xiàn)了非標(biāo)準(zhǔn)的 RAID 等級(jí),往往都是公司私有的產(chǎn)品。這里簡(jiǎn)單介紹幾個(gè)非標(biāo)準(zhǔn) RAID 等級(jí)。 [14]
1.RAID7
RAID7 的全稱是最優(yōu)化的異步高 I/O 速率和高數(shù)據(jù)傳輸率,它與其他 RAID 等級(jí)有著明顯區(qū)別。它不僅僅是一種技術(shù),它還是一個(gè)獨(dú)立存儲(chǔ)計(jì)算機(jī),自身帶的操作系統(tǒng)和管理工具,完全可以獨(dú)立運(yùn)行。
RAID7 的存儲(chǔ)計(jì)算機(jī)操作系統(tǒng)是一套實(shí)時(shí)事件驅(qū)動(dòng)操作系統(tǒng),其主要用來進(jìn)行系統(tǒng)初始化和安排 RAID7 磁盤陣列的所有數(shù)據(jù)傳輸,并把它們轉(zhuǎn)換到相應(yīng)的物理存儲(chǔ)驅(qū)動(dòng)器上。 RAID7 通過自身系統(tǒng)中的專用控制板來控制讀寫速度,存儲(chǔ)計(jì)算機(jī)操作系統(tǒng)可使主機(jī) I/O 傳遞性能達(dá)到最佳。如果一個(gè)磁盤出現(xiàn)故障, RAID7 還能夠自動(dòng)執(zhí)行恢復(fù)操作,并可管理備份磁盤的重建過程。
RAID7 突破了以往 RAID 標(biāo)準(zhǔn)的技術(shù)架構(gòu),采用了非同步訪問,極大地減輕了數(shù)據(jù)寫瓶頸,提高了 I/O 速度。 RAID7 系統(tǒng)內(nèi)置實(shí)時(shí)操作系統(tǒng)還可自動(dòng)對(duì)主機(jī)發(fā)送過來的讀寫指令進(jìn)行優(yōu)化處理,以智能化方式將可能被讀取的數(shù)據(jù)預(yù)先讀入快速緩存中,從而大大減少了磁頭的轉(zhuǎn)動(dòng)次數(shù),提高存儲(chǔ)系統(tǒng)的 I/O 速度。
RAID7 可幫助用戶有效地管理日益龐大的數(shù)據(jù)存儲(chǔ)系統(tǒng),并使系統(tǒng)的運(yùn)行效率大大提高,滿足不同用戶的存儲(chǔ)需求。但是, RAID7 的成本比其他 RAID 等級(jí)要高許多。另外, RAID7 已被某公司注冊(cè)為商標(biāo),目前僅有一家公司提供 RAID7 的產(chǎn)品,用戶沒有更多的選擇。技術(shù)封閉,缺乏主流專業(yè)存儲(chǔ)廠商的參與和研發(fā)嚴(yán)重制約了 RAID7 的發(fā)展。
2.RAID-DP
按照 SNIA 最新的 RAID6 定義 [15] ,雙重?cái)?shù)據(jù)校驗(yàn)的磁盤陣列都可歸為 RAID6 等級(jí)。 NetApp 公司按照 RAID6 的定義實(shí)現(xiàn)了 RAID-DP ,使用雙重的數(shù)據(jù)校驗(yàn)來保護(hù)數(shù)據(jù),可以保證兩塊磁盤同時(shí)損壞的情況下不發(fā)生數(shù)據(jù)丟失。與該公司的 RAID4 實(shí)現(xiàn)對(duì)比,傳統(tǒng)的 RAID6 實(shí)現(xiàn)會(huì)致使系統(tǒng)性能損失 30% 左右,而 RAID-DP 的性能下降低于 2% 。上層文件系統(tǒng)的請(qǐng)求首先寫入后端的 NVRAM 中,確保即使在 掉電的情況下也不會(huì)有任何數(shù)據(jù)丟失。因此,數(shù)據(jù)塊不會(huì)立即更新,當(dāng)執(zhí)行新來的寫操作,會(huì)對(duì)寫操作進(jìn)行聚集,然后存儲(chǔ)控制器嘗試一次性寫入包括校驗(yàn)數(shù)據(jù)在內(nèi)的整個(gè)數(shù)據(jù)條帶。 RAID-DP 提供了比 RAID10 更好的數(shù)據(jù)保護(hù),性能卻不低于 RAID10 。對(duì)于相同大小的 RAID 組,在大多數(shù)情況下, RAID-DP 沒有受到傳統(tǒng) RAID6 即時(shí)更新數(shù)據(jù)塊的挑戰(zhàn),并提供更多的磁盤進(jìn)行讀寫。它甚至允許磁盤固件實(shí)時(shí)更新而不發(fā)生任何中斷。
3.RAID1.5
這是 HighPoint 公司的 RAID 產(chǎn)品,有時(shí)也被錯(cuò)誤地稱為 RAID15 。 RAID1.5 僅使用兩個(gè)磁盤驅(qū)動(dòng)器同時(shí)進(jìn)行數(shù)據(jù)條帶化和鏡像,數(shù)據(jù)可以同時(shí)從兩塊磁盤進(jìn)行讀取。這其中的大部分工作都由硬件來完成,而非驅(qū)動(dòng)程序。 Linux 、 Solaris 等操作系統(tǒng)實(shí)現(xiàn)的 RAID1 也可以實(shí)現(xiàn)同時(shí)從兩塊磁盤進(jìn)行讀取數(shù)據(jù),因此 RAID1.5 并不優(yōu)于傳統(tǒng)的 RAID1。
4. RAID5E 、 RAID5EE 和 RAID6E
這種概念首次在 IBM ServerRAID 中被提出, E 是 Enhanced 的首字母。它們分別是對(duì) RAID5 和 RAID6 的增強(qiáng),增加了熱冗余磁盤驅(qū)動(dòng)器,冗余磁盤與其他磁盤一塊進(jìn)行數(shù)據(jù)塊編排。這種設(shè)計(jì)使得 I/O 可以分散到包括熱冗余在內(nèi)的所在磁盤,從而減小單塊磁盤的 I/O 帶寬, 提供更高的性能。然而,熱冗余磁盤不能夠被多個(gè)陣列共享。
在實(shí)現(xiàn)中,實(shí)際上不存在專用的熱冗余磁盤,就像 RAID5 和 RAID6 中沒有專用的校驗(yàn)磁盤一樣,所有的冗余數(shù)據(jù)塊分布在所的成員磁盤中。例如,一個(gè) 10 塊磁盤的 RAID5E ,包括 80% 數(shù)據(jù)塊、 10% 的冗余數(shù)據(jù)塊和 10% 的校驗(yàn)數(shù)據(jù)。對(duì)于 RAID5E 和 RAID6E ,冗余數(shù)據(jù)塊位于陣列尾部,而 RAID5EE 則分布在整個(gè) RAID 中。如果 RAID5E/5EE 中發(fā)生一塊磁盤損壞,則系統(tǒng)會(huì)自動(dòng)降級(jí)并重建至標(biāo)準(zhǔn)的 RAID5 。這一過程中, I/O 操作非常密集,并且需要花費(fèi)大量時(shí)間,從幾個(gè)小時(shí)至甚至幾天,根據(jù)陣列的具體配置而異。當(dāng)損壞磁盤被替換后,系統(tǒng)則又會(huì)自動(dòng)升級(jí)并重建至原先的 RAID5E/5EE ,同時(shí)非常耗時(shí)。在上面的重建過程中,數(shù)據(jù)沒有冗余保護(hù)。由于系統(tǒng)升級(jí)和降級(jí)時(shí), I/O 活動(dòng)密集且所需時(shí)間過長(zhǎng),因此實(shí)際應(yīng)用中成員磁盤數(shù)據(jù)限制在 4~8 塊。一旦超過 8 塊磁盤,由于損壞磁盤的重建耗時(shí)和重建中發(fā)生第二塊磁盤損壞造成的數(shù)據(jù)丟失, RAID5E/5EE 所獲得的性能提升和其他獲益都將嚴(yán)重降低。
5.RAID S (Parity RAID)
RAID S 是 EMC 公司的 Symmetrix 存儲(chǔ)系統(tǒng)所使用的條帶化校驗(yàn) RAID 。該系統(tǒng)中,每個(gè)卷位于單獨(dú)的物理磁盤上,多個(gè)卷組合進(jìn)行數(shù)據(jù)校驗(yàn)。 EMC 最早引入了 RAID S 概念,后來改名為 Parity RAID 并應(yīng)用于 Symmetrix DMX 平臺(tái)。 EMC 現(xiàn)在也為 Symmetrix DMX 提供標(biāo)準(zhǔn)的 RAID5 , RAID S 已經(jīng)不再 EMC 產(chǎn)品中使用。
6.Intel Matrix RAID
Matrix RAID 是 Intel ICH6R 和后繼的南橋芯片的一個(gè)重要特征,可以通過 RAID BIOS 進(jìn)行訪問。它使用兩塊磁盤或者控制器能支持的最多磁盤,它的顯著特征是允許 RAID0 、 1 、 5 、 10 多種數(shù)據(jù)卷混合共存,每塊磁盤的指定部分分配給相應(yīng)的 RAID 卷。 Matrix RAID 主要用于改善性能和數(shù)據(jù)完整性,實(shí)際應(yīng)用中可以將操作系統(tǒng)應(yīng)用于小的 RAID0 ,而大的 RAID1 存儲(chǔ)關(guān)鍵數(shù)據(jù)以及用戶數(shù)據(jù)。海量的流媒體數(shù)據(jù)容易發(fā)生數(shù)據(jù)丟失,可以考慮使用這種 RAID 。 linux 的 MD RAID 也可以實(shí)現(xiàn)類似的功能。
7.Linux MD RAID 10
RAID 10 是 Linux 內(nèi)核所支持的軟 RAID 等級(jí)之一,它還支持 RAID0、1、3、4、5、6 等級(jí)別。軟 RAID 驅(qū)動(dòng)程序通常通過構(gòu)造典型的 RAID1+0 陣開來實(shí)現(xiàn) RAID10 , 2.6.9 以后的內(nèi)核也可作為單獨(dú)的級(jí)別來實(shí)現(xiàn)。
MD RAID10 支持重復(fù)數(shù)據(jù)塊的近布局和遠(yuǎn)布局兩種模式。近布局與標(biāo)準(zhǔn) RAID10 相同,鏡像數(shù)據(jù)塊相鄰存儲(chǔ)。對(duì)于 n 重鏡像的 k 路條帶,不要求 k 為 n 的 整倍數(shù)。兩重鏡像的2、3、4路條帶的 MD RAID10 分布相當(dāng)于 RAID1 、 RAID-1E 和 RAID10 。遠(yuǎn)布局模式下,所有磁盤被劃分為 f ( f= 鏡像數(shù))個(gè)數(shù)據(jù)存儲(chǔ)區(qū),重復(fù)數(shù)據(jù)塊相對(duì)于原始數(shù)據(jù)塊具有一個(gè)磁盤和若干依偏移的距離,即保存在下一個(gè)磁盤對(duì)應(yīng)存儲(chǔ)區(qū)的偏移位置。這種設(shè)計(jì)能夠提高鏡像陣列的條帶性能,有效提高順序和隨機(jī)讀性能,但對(duì)寫性能沒有顯著提升。許多應(yīng)該通常具有讀密集而寫稀疏的特點(diǎn), RAID10 適合此類數(shù)據(jù)應(yīng)用。需要指出的是,近布局和遠(yuǎn)布局兩種模式可以同時(shí)使用,這種情況下將有 n * f 個(gè)數(shù)據(jù)副本。
8. IBM ServerRAID 1E
IBM 公司的 ServerRAID 陣列卡系列支持任意數(shù)量驅(qū)動(dòng)器上的兩路鏡像,多個(gè)磁盤對(duì)數(shù)據(jù)塊進(jìn)行輪轉(zhuǎn)鏡像。這種配置能夠?qū)Σ幌噜彺疟P驅(qū)動(dòng)器發(fā)生的損壞進(jìn)行容錯(cuò),其他的存儲(chǔ)系統(tǒng)也支持這種模式,比如 SUN 公司的 StorEdge T3 。
9.RAID-K
Kaleidescape 公司實(shí)現(xiàn)了一種稱為 RAID-K[16] 的 RAID 類型。 RAID-K 與 RAID4 相似,但不對(duì)文件數(shù)據(jù)進(jìn)行塊級(jí)的條帶化處理,它企圖將整個(gè)電影或音樂集合完整地存儲(chǔ)在單個(gè)磁盤上。另外,它的冗余校驗(yàn)信息可存儲(chǔ)在多個(gè)磁盤上,從而適應(yīng)由多個(gè)容量不同的磁盤所組成的邏輯磁盤。而且,冗余數(shù)據(jù)包含比校驗(yàn)信息更多的數(shù)據(jù),用于獲取更高的容錯(cuò)性。這些特征可以為影像、音樂提供更好的性能,增加數(shù)據(jù)存儲(chǔ)的安全性。 RAID-K 還可以允許用戶以增量方式擴(kuò)充存儲(chǔ)容量,能夠增加容量更大的磁盤,甚至它還可以增加包含數(shù)據(jù)(僅限影像和音樂)的磁盤。 RAID-K 會(huì)自動(dòng)把這些磁盤組建成 RAID-K 陣列和 Kaleidescape 文件系統(tǒng)。
10. RAID-Z
RAID-Z 是集成在 SUN 公司 ZFS 文件系統(tǒng)中的一種與 RAID5 相似的 RAID 模式。利用寫時(shí)復(fù)制策略, RAID-Z 避免了 RAID5 的寫操作困境(即更新數(shù)據(jù)同時(shí)需要更新校驗(yàn)數(shù)據(jù)),它不用新數(shù)據(jù)覆蓋舊數(shù)據(jù),而是把新數(shù)據(jù)寫到新位置并自動(dòng)更新數(shù)據(jù)指針。對(duì)于小的寫操作,僅僅執(zhí)行完全的寫條帶操作,有效避免 “ 讀?。模瓕懟?” 的操作需求。另外,還可以直接對(duì)小寫操作使用鏡像替換校驗(yàn)進(jìn)行保護(hù),因?yàn)槲募到y(tǒng)了解下層存儲(chǔ)結(jié)構(gòu),可以在必要時(shí)分配 額外存儲(chǔ)空間。 ZFS 還實(shí)現(xiàn)了 RAID-Z2 ,提供類似與 RAID6 的雙重校驗(yàn)保護(hù)能力,可以保證不塊磁盤發(fā)生損壞而不發(fā)生數(shù)據(jù)丟失。根據(jù) 2009 年 6 月的更新, ZFS 加入了三重校驗(yàn) RAID 支持,或許稱為 RAID-Z3 。
五、實(shí)現(xiàn)方式
通常計(jì)算機(jī)功能既可以由硬件來實(shí)現(xiàn),也可以由軟件來實(shí)現(xiàn)。對(duì)于 RAID 系統(tǒng)而言,自然也不例外,它可以采用軟件方式實(shí)現(xiàn),也可以采用硬件方式實(shí)現(xiàn),或者采用軟硬結(jié)合的方式實(shí)現(xiàn)。 [3][8]
5.1 軟 RAID
軟 RAID 沒有專用的控制芯片和 I/O 芯片,完全由操作系統(tǒng)和 CPU 來實(shí)現(xiàn)所的 RAID 的功能?,F(xiàn)代操作系統(tǒng)基本上都提供軟 RAID 支持,通過在磁盤設(shè)備驅(qū)動(dòng)程序上添加一個(gè)軟件層,提供一個(gè)物理驅(qū)動(dòng)器與邏輯驅(qū)動(dòng)器之間的抽象層。目前,操作系統(tǒng)支持的最常見的 RAID 等級(jí)有 RAID0 、 RAID1 、 RAID10 、 RAID01 和 RAID5 等。比如, Windows Server 支持 RAID0 、 RAID1 和 RAID5 三種等級(jí), Linux 支持 RAID0 、 RAID1 、 RAID4 、 RAID5 、 RAID6 等, Mac OS X Server 、 FreeBSD 、 NetBSD 、 OpenBSD 、 Solaris 等操作系統(tǒng)也都支持相應(yīng)的 RAID 等級(jí)。
軟 RAID 的配置管理和數(shù)據(jù)恢復(fù)都比較簡(jiǎn)單,但是 RAID 所有任務(wù)的處理完全由 CPU 來完成,如計(jì)算校驗(yàn)值,所以執(zhí)行效率比較低下,這種方式需要消耗大量的運(yùn)算資源,支持 RAID 模式 較少,很難廣泛應(yīng)用。
軟 RAID 由操作系統(tǒng)來實(shí)現(xiàn),因此系統(tǒng)所在分區(qū)不能作為 RAID 的邏輯成員磁盤,軟 RAID 不能保護(hù)系統(tǒng)盤 D 。對(duì)于部分操作系統(tǒng)而言, RAID 的配置信息保存在系統(tǒng)信息中,而不是單獨(dú)以文件形式保存在磁盤上。這樣當(dāng)系統(tǒng)意外崩潰而需要重新安裝時(shí), RAID 信息就會(huì)丟失。另外,磁盤的容錯(cuò)技術(shù)并不等于完全支持在線更換、熱插拔或熱交換,能否支持錯(cuò)誤磁盤的熱交換與操作系統(tǒng)實(shí)現(xiàn)相關(guān),有的操作系統(tǒng)熱交換。
5.2 硬 RAID
硬 RAID 擁有自己的 RAID 控制處理與 I/O 處理芯片,甚至還有陣列緩沖,對(duì) CPU 的占用率和整體性能是三類實(shí)現(xiàn)中最優(yōu)的,但實(shí)現(xiàn)成本也最高的。硬 RAID 通常都支持熱交換技術(shù),在系統(tǒng)運(yùn)行下更換故障磁盤。
硬 RAID 包含 RAID 卡和主板上集成的 RAID 芯片, 服務(wù)器平臺(tái)多采用 RAID 卡。 RAID 卡由 RAID 核心處理芯片( RAID 卡上的 CPU )、端口、緩存和電池 4 部分組成。其中,端口是指 RAID 卡支持的磁盤接口類型,如 IDE/ATA 、 SCSI 、 SATA 、 SAS 、 FC 等接口。
5.3 軟硬混合 RAID
軟 RAID 性能欠佳,而且不能保護(hù)系統(tǒng)分區(qū),因此很難應(yīng)用于桌面系統(tǒng)。而硬 RAID 成本非常昂貴,不同 RAID 相互獨(dú)立,不具互操作性。因此,人們采取軟件與硬件結(jié)合的方式來實(shí)現(xiàn) RAID ,從而獲得在性能和成本上的一個(gè)折中,即較高的性價(jià)比。
這種 RAID 雖然采用了處理控制芯片,但是為了節(jié)省成本,芯片往往比較廉價(jià)且處理能力較弱, RAID 的任務(wù)處理大部分還是通過固件驅(qū)動(dòng)程序由 CPU 來完成。
六、RAID 應(yīng)用選擇
RAID 等級(jí)的選擇主要有三個(gè)因素,即數(shù)據(jù)可用性、 I/O 性能和成本?!∧壳?,在實(shí)際應(yīng)用中常見的主流 RAID 等級(jí)是 RAID0 , RAID1 , RAID3 , RAID5 , RAID6 和 RAID10 ,它們之間的技術(shù)對(duì)比情況如表 1 所示。如果不要求可用性,選擇 RAID0 以獲得高性能。如果可用性和性能是重要的,而成本不是一個(gè)主要因素,則根據(jù)磁盤數(shù)量選擇 RAID1 。如果可用性,成本和性能都同樣重要,則根據(jù)一般的數(shù)據(jù)傳輸和磁盤數(shù)量選擇 RAID3 或 RAID5 。在實(shí)際應(yīng)用中,應(yīng)當(dāng)根據(jù)用戶的數(shù)據(jù)應(yīng)用特點(diǎn)和具體情況,綜合考慮可用性、性能和成本來選擇合適的 RAID 等級(jí)。 [10]
表1 主流 RAID 等級(jí)技術(shù)對(duì)比
RAID 等級(jí) | RAID0 | RAID1 | RAID3 | RAID5 | RAID6 | RAID10 |
別名 | 條帶 | 鏡像 | 專用奇偶校驗(yàn)條帶 | 分布奇偶校驗(yàn)條帶 | 雙重奇偶校驗(yàn)條帶 | 鏡像加條帶 |
容錯(cuò)性 | 無 | 有 | 有 | 有 | 有 | 有 |
冗余類型 | 無 | 有 | 有 | 有 | 有 | 有 |
熱備份選擇 | 無 | 有 | 有 | 有 | 有 | 有 |
讀性能 | 高 | 低 | 高 | 高 | 高 | 高 |
隨機(jī)寫性能 | 高 | 低 | 低 | 一般 | 低 | 一般 |
連續(xù)寫性能 | 高 | 低 | 低 | 低 | 低 | 一般 |
需要磁盤數(shù) | 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% |
近年來,企業(yè)的信息化水平不斷發(fā)展,數(shù)據(jù)已經(jīng)取代計(jì)算成為了信息計(jì)算的中心,信息數(shù)據(jù)的安全性就顯得尤為至關(guān)重要。隨著存儲(chǔ)技術(shù)的持續(xù)發(fā)展, RAID 技術(shù)在成本、性能、數(shù)據(jù)安全性等諸多方面都將優(yōu)于其他存儲(chǔ)技術(shù),例如磁帶庫、光盤庫等,大多數(shù)企業(yè)數(shù)據(jù)中心首選 RAID 作為存儲(chǔ)系統(tǒng)。當(dāng)前存儲(chǔ)行業(yè)的知名存儲(chǔ)廠商均提供全線的磁盤陣列產(chǎn)品,包括面向個(gè)人和中小企業(yè)的入門級(jí)的低端 RAID 產(chǎn)品,面向大中型企業(yè)的中高端 RAID 產(chǎn)品。這些存儲(chǔ)企業(yè)包括了國(guó)內(nèi)外的主流存儲(chǔ)廠商,如 EMC 、 IBM 、 HP 、 SUN 、 NetApp 、 NEC 、 HDS 、 H3C 、 Infortrend 、華賽等。另外,這些廠商在提供存儲(chǔ)硬件系統(tǒng)的同時(shí),還往往提供非常全面的軟件系統(tǒng),這也是用戶采購產(chǎn)品的一個(gè)主要參考因素。
不同的存儲(chǔ)廠商的產(chǎn)品在技術(shù)、成本、性能、管理、服務(wù)等方面各有優(yōu)勢(shì)和不足。用戶選擇 RAID 的原則是:在成本預(yù)算內(nèi),滿足數(shù)據(jù)存儲(chǔ)需求的前提下,選擇最優(yōu)的存儲(chǔ)廠商解決方案。因此,首先用戶需要對(duì)存儲(chǔ)需求作深入的調(diào)研和分析,并給出成本預(yù)算,然后對(duì)眾多存儲(chǔ)廠商的解決方案進(jìn)行分析和對(duì)比,最后選擇出一個(gè)綜合最優(yōu)的存儲(chǔ)方案。其中,存儲(chǔ)產(chǎn)品的擴(kuò)展性和存儲(chǔ)廠家的售后服務(wù)需要重點(diǎn)考察,存儲(chǔ)需求(如容量、性能)可能會(huì)不斷升級(jí),存儲(chǔ)產(chǎn)品發(fā)生故障后的維修和支持保障,這些都要未雨先繆。
七、總結(jié)與展望
回顧 RAID 發(fā)展歷史,從首次提出概念至今已有二十多年。在此期間,整個(gè)社會(huì)信息化水平不斷提高,數(shù)據(jù)呈現(xiàn)爆炸式增長(zhǎng)趨勢(shì),數(shù)據(jù)取代計(jì)算成為信息計(jì)算的中心。這促使人們對(duì)數(shù)據(jù)愈加重視,不斷追求海量存儲(chǔ)容量、高性能、高 安全性、高可用性、可擴(kuò)展性、可管理性等等。 RAID 技術(shù)在這樣強(qiáng)大的存儲(chǔ)需求推動(dòng)下不斷發(fā)展進(jìn)步,時(shí)至今日技術(shù)已經(jīng)非常成熟,在各種數(shù)據(jù)存儲(chǔ)系統(tǒng)中得到了十分廣泛的應(yīng)用。
正是由于技術(shù)發(fā)展的成熟, RAID 技術(shù)的未來發(fā)展已經(jīng)不被廣泛看好,甚至預(yù)言在不久的將來會(huì)停止發(fā)展,稱之為 “ 僵尸技術(shù) ” ,即雖然宣布死亡,但在很長(zhǎng)一段時(shí)間內(nèi)仍會(huì)繼續(xù)發(fā)揮巨大的價(jià)值。
然而,當(dāng)前的 RAID 技術(shù)仍然存在諸多不足,各種 RAID 模式都存在自身的缺陷,主要集中在讀寫性能、實(shí)現(xiàn)成本、恢復(fù)時(shí)間窗口、多磁盤損壞等方面。因此, RAID 技術(shù)顯然還存在很大的提升空間,具有很大的發(fā)展?jié)摿?。近年來新出現(xiàn)的 RAID 模式以及學(xué)術(shù)研究顯示了其未來的發(fā)展趨勢(shì),包括分布式校驗(yàn)、多重校驗(yàn)、混合 RAID 模式、水平和垂直條帶、基于固態(tài)內(nèi)存 RAID 、網(wǎng)絡(luò)校驗(yàn)等等。特別指出的是,多核 CPU 和 GPU 是當(dāng)前的熱點(diǎn)技術(shù),它們大幅提升了主機(jī)的可用計(jì)算資源,這可以解決 RAID 對(duì)計(jì)算資源的消耗問題,軟 RAID 很可能將重新成為熱點(diǎn)。另外,存儲(chǔ)硬件性能的提升、存儲(chǔ)虛擬化技術(shù)、重復(fù)數(shù)據(jù)刪除技術(shù)以及其他存儲(chǔ)技術(shù)都會(huì)極大地推動(dòng) RAID 技術(shù)的進(jìn)一步創(chuàng)新和發(fā)展。