【廣告】
磁盤陣列
磁盤陣列,有“獨立磁盤構(gòu)成的具有冗余能力的陣列”之意。
磁盤陣列還能利用同位檢查(Parity Check)的觀念,在數(shù)組中任意一個硬盤故障時,仍可讀出數(shù)據(jù),在數(shù)據(jù)重構(gòu)時,將數(shù)據(jù)經(jīng)計算后重新置入新硬盤中。
RAID 中主要有三個關(guān)鍵概念和技術(shù)
鏡像( Mirroring )、數(shù)據(jù)條帶( Data Stripping )和數(shù)據(jù)校驗( Data parity )。鏡像,將數(shù)據(jù)copy到多個磁盤,一方面可以提高可靠性,另一方面可并發(fā)從兩個或多個副本讀取數(shù)據(jù)來提高讀性能。顯而易見,鏡像的寫性能要稍低, 確保數(shù)據(jù)正確地寫到多個磁盤需要更多的時間消耗。數(shù)據(jù)條帶,將數(shù)據(jù)分片保存在多個不同的磁盤,多個數(shù)據(jù)分片共同組成一個完整數(shù)據(jù)副本,這與鏡像的多個副本是不同的,它通常用于性能考慮。數(shù)據(jù)條帶具有更高的并發(fā)粒度,當訪問數(shù)據(jù)時,可以同時對位于不同磁盤上數(shù)據(jù)進行讀寫操作, 從而獲得非??捎^的 I/O 性能提升 。數(shù)據(jù)校驗,利用冗余數(shù)據(jù)進行數(shù)據(jù)錯誤檢測和修復,冗余數(shù)據(jù)通常采用海明碼、異或操作等算法來計算獲得。利用校驗功能,可以很大程度上提高磁盤陣列的可靠性、魯棒性和容錯能力。不過,數(shù)據(jù)校驗需要從多處讀取數(shù)據(jù)并進行計算和對比,會影響系統(tǒng)性能。 不同等級的 RAID 采用一個或多個以上的三種技術(shù),來獲得不同的數(shù)據(jù)可靠性、可用性和 I/O 性能。至于設計何種 RAID (甚至新的等級或類型)或采用何種模式的 RAID ,需要在深入理解系統(tǒng)需求的前提下進行合理選擇,綜合評估可靠性、性能和成本來進行折中的選擇。
磁盤陣列 RAID 技術(shù)
概述
冗余磁盤陣列技術(shù)(Redundant Array of Inexpensive Disks,簡稱RAID技術(shù))是一種數(shù)據(jù)的虛擬存儲技術(shù),其結(jié)合了多個物理磁盤驅(qū)動器件在一個邏輯磁盤內(nèi)用以實現(xiàn)比單個磁盤更高的存儲性能。其在1987 年由加州大學伯克利分校的David Patterson, Garth A. Gibson 和 Randy Katz共同提出。起初的研制目的是為了組合小的廉價磁盤來代替大的昂貴磁盤,以降低大批量數(shù)據(jù)存儲的費用,同時也希望采用冗余信息的方式,使得磁盤失效時不會使數(shù)據(jù)受損,從而開發(fā)出一定水平的數(shù)據(jù)保護技術(shù)。如下圖所示,當 RAID 組中的某一磁盤損壞時,服務器可以通過對其它磁盤的冗余操作,達到對數(shù)據(jù)的冗余保護功能。
RAID 技術(shù)利用多個硬盤的組合提高存儲的效率和容錯能力,其主要由兩部分組成,即控制器和磁盤陣列??刂破饕罁?jù)接口協(xié)議對磁盤陣列中的磁盤進行讀寫操作和管理數(shù)據(jù)??刂破魍ǔS蓪S玫?CPU 構(gòu)成,能夠完成大量的計算任務。磁盤陣列是由多個磁盤構(gòu)成,其讀寫操作由控制器控制,多個磁盤通過控制器虛擬化成為一個磁盤。
從實現(xiàn)角度來說, RAID 主要分為軟 RAID、硬 RAID 以及軟硬混合 RAID 三種。軟 RAID 所有功能均由操作系統(tǒng)和 CPU 來完成,沒有獨立的 RAID 控制 / 處理芯片和 I/O 處理芯片,效率自然很低。硬 RAID 配備了專門的 RAID 控制 / 處理芯片和 I/O 處理芯片以及陣列緩沖,不占用 CPU 資源,但成本很高。軟硬混合 RAID 具備 RAID 控制 / 處理芯片,但缺乏 I/O 處理芯片,需要 CPU 和驅(qū)動程序來完成,性能和成本 在軟 RAID 和硬 RAID 之間。
RAID的操作步驟
標準的RAID寫操作,需包括以下幾個步驟:
?。?)以校驗盤中讀取數(shù)據(jù)
(2)以目標數(shù)據(jù)盤中讀取數(shù)據(jù)
?。?)以舊校驗數(shù)據(jù),新數(shù)據(jù)及已存在數(shù)據(jù),生成新的校驗數(shù)據(jù)
?。?)將新校驗數(shù)據(jù)寫入校驗盤
?。?)將新數(shù)據(jù)寫入目標數(shù)據(jù)盤
當主機將一個待寫入陣列RAID組中的數(shù)據(jù)發(fā)送到陣列時,陣列控制器將該數(shù)據(jù)保存在緩存中并立即報告主機該數(shù)據(jù)的寫入工作已完成。該數(shù)據(jù)寫入到陣列硬盤的工作由陣列控制器完成,該數(shù)據(jù)可繼續(xù)存放在Cache中直到Cache滿,而且要為新數(shù)據(jù)騰出空間而必須刷新時或陣列需停機時,控制器會及時將該數(shù)據(jù)從Cache寫入陣列硬盤中。
這種緩存回寫技術(shù)使得主機不必等待RAID校驗計算過程的完成,即可處理下一個讀寫任務,這樣,主機的讀寫效率大為增加。當主機命令將一個數(shù)據(jù)寫入硬盤,則陣列控制器將該數(shù)據(jù)寫入緩存上面的位置,只有新數(shù)據(jù)才會被控制器按Write-Back Cache的方式之后寫入硬盤。