複製鏈接
請複製以下鏈接發送給好友

RAID磁盤陣列

鎖定
RAID是英文Redundant Array of Independent Disks的縮寫,中文簡稱為獨立磁盤冗餘磁盤陣列。簡單的説,RAID是一種把多塊獨立的硬盤(物理硬盤)按不同的方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據備份技術。
組成磁盤陣列的不同方式稱為RAID級別(RAID Levels)。在用户看起來,組成的磁盤組就像是一個硬盤,用户可以對它進行分區,格式化等等。總之,對磁盤陣列的操作與單個硬盤一模一樣。不同的是,磁盤陣列的存儲速度要比單個硬盤高很多,而且可以提供自動數據備份。數據備份的功能是在用户數據一旦發生損壞後,利用備份信息可以使損壞數據得以恢復,從而保障了用户數據的安全性。
中文名
RAID磁盤陣列
外文名
Redundant Array of Independent Disks
中文簡稱
獨立冗餘磁盤陣列
屬    性
一個硬盤組

RAID磁盤陣列主要目的

雖然RAID包含多塊硬盤,但是在操作系統下是作為一個獨立的大型存儲設備出現。利用RAID技術於存儲系統的好處主要有以下三種:
通過把多個磁盤組織在一起作為一個邏輯卷提供磁盤跨越功能;
通過把數據分成多個數據塊(Block)並行寫入/讀出多個磁盤以提高訪問磁盤的速度;
通過鏡像或校驗操作提供容錯能力
最初開發RAID的主要目的是節省成本,當時幾塊小容量硬盤的價格總和要低於大容量的硬盤。RAID在節省成本方面的作用並不明顯,但是RAID可以充分發揮出多塊硬盤的優勢,實現遠遠超出任何一塊單獨硬盤的速度和吞吐量。除了性能上的提高之外,RAID還可以提供良好的容錯能力,在任何一塊硬盤出現問題的情況下都可以繼續工作,不會受到損壞硬盤的影響。
RAID技術分為幾種不同的等級,分別可以提供不同的速度,安全性和性價比。根據實際情況選擇適當的RAID級別可以滿足用户對存儲系統可用性、性能和容量的要求。常用的RAID級別有以下幾種:NRAIDJBOD,RAID0,RAID1,RAID1+0,RAID3,RAID5等。經常使用的是RAID5和RAID(1+0)。
磁盤陣列(Disk Array)是由一個硬盤控制器來控制多個硬盤的相互連接,使多個硬盤的讀寫同步,減少錯誤,增加效率和可靠度的技術。磁盤陣列卡則是實現這一技術的硬件產品,磁盤陣列卡擁有一個專門的處理器,還擁有專門的存貯器,用於高速緩衝數據。使用磁盤陣列卡服務器對磁盤的操作就直接通過陣列卡來進行處理,因此不需要大量的CPU及系統內存資源,不會降低磁盤子系統的性能。陣列卡專用的處理單元來進行操作,它的性能要遠遠高於常規非陣列硬盤,並且更安全更穩定。
RAID技術的兩大特點:一是速度、二是安全,由於這兩項優點,RAID技術早期被應用於高級服務器中的SCSI接口的硬盤系統中,隨着近年計算機技術的發展,PC機的CPU的速度已進入GHz時代。IDE接口的硬盤也不甘落後,相繼推出了ATA66和ATA100硬盤。這就使得RAID技術被應用於中低檔甚至個人PC機上成為可能。RAID通常是由在硬盤陣列塔中的RAID控制器或電腦中的RAID卡來實現的。

RAID磁盤陣列分類

RAID技術經過不斷的發展,現在已擁有了從RAID 0到7八種基本的RAID級別。另外,還有一些基本RAID級別的組合形式,如RAID 10(RAID 0與RAID 1的組合),RAID 50(RAID 0與RAID 5的組合)等。不同RAID級別代表着不同的存儲性能、數據安全性和存儲成本。但我們最為常用的是下面的幾種RAID形式。
RAID級別的選擇有三個主要因素:可用性(數據冗餘)、性能和成本。如果不要求可用性,選擇RAID0以獲得最佳性能。如果可用性和性能是重要的而成本不是一個主要因素,則根據硬盤數量選擇RAID 1。如果可用性、成本和性能都同樣重要,則根據一般的數據傳輸和硬盤的數量選擇RAID3、RAID5。

RAID磁盤陣列發展

在計算機發展的初期,“大容量”硬盤的價格還相當高,解決數據存儲安全性問題的主要方法是使用磁帶機等設備進行備份,這種方法雖然可以保證數據的安全,但查閲和備份工作都相當繁瑣。
1987年,Patterson、Gibson和Katz這三位工程師在加州大學伯克利分校發表了題為《A Case of Redundant Array of Inexpensive Disks(廉價磁盤冗餘陣列方案)》的論文,其基本思想就是將多隻容量較小的、相對廉價的硬盤驅動器進行有機組合,使其性能超過一隻昂貴的大硬盤。
這一設計思想很快被接受,從此RAID技術得到了廣泛應用,數據存儲進入了更快速、更安全、更廉價的新時代。
磁盤陣列對於個人電腦用户,還是比較陌生和神秘的。印象中的磁盤陣列似乎還停留在這樣的場景中:在寬闊的大廳裏,林立的磁盤櫃,數名錶情陰鬱、早早謝頂的工程師徘徊在其中,不斷從中抽出一塊塊沉重的硬盤,再插入一塊塊似乎更加沉重的硬盤……終於,隨着大容量硬盤的價格不斷降低,個人電腦的性能不斷提升,IDE-RAID作為磁盤性能改善的最廉價解決方案,開始走入一般用户的計算機系統

RAID磁盤陣列規範

RAID技術主要包含RAID 0RAID 7等數個規範,它們的側重點各不相同,常見的規範有如下幾種:
RAID 0:連續以位或字節為單位分割數據,並行讀/寫於多個磁盤上,因此具有很高的數據傳輸率,但它沒有數據冗餘,因此並不能算是真正的RAID結構。RAID 0只是單純地提高性能,並沒有為數據的可靠性提供保證,而且其中的一個磁盤失效將影響到所有數據。因此,RAID 0不能應用於數據安全性要求高的場合。
RAID 1:它是通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互為備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁盤陣列單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。
RAID 0+1:也被稱為RAID 10標準,實際是將RAID 0和RAID 1標準結合的產物,在連續地以位或字節為單位分割數據並且並行讀/寫多個磁盤的同時,為每一塊磁盤作磁盤鏡像進行冗餘。它的優點是同時擁有RAID 0的超凡速度和RAID 1的數據高可靠性,但是CPU佔用率同樣也更高,而且磁盤的利用率比較低。
RAID 2:將數據條塊化地分佈於不同的硬盤上,條塊單位為位或字節,並使用稱為“加重平均糾錯碼(海明碼)”的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜,因此在商業環境中很少使用。
RAID 3:它同RAID 2非常類似,都是將數據條塊化分佈於不同的硬盤上,區別在於RAID 3使用簡單的奇偶校驗,並用單塊磁盤存放奇偶校驗信息。如果一塊磁盤失效,奇偶盤及其他數據盤可以重新產生數據;如果奇偶盤失效則不影響數據使用。RAID 3對於大量的連續數據可提供很好的傳輸率,但對於隨機數據來説,奇偶盤會成為寫操作的瓶頸。
RAID 4:RAID 4同樣也將數據條塊化並分佈於不同的磁盤上,但條塊單位為塊或記錄。RAID 4使用一塊磁盤作為奇偶校驗盤,每次寫操作都需要訪問奇偶盤,這時奇偶校驗盤會成為寫操作的瓶頸,因此RAID 4在商業環境中也很少使用。
RAID 5:RAID 5不單獨指定的奇偶盤,而是在所有磁盤上交叉地存取數據及奇偶校驗信息。在RAID 5上,讀/寫指針可同時對陣列設備進行操作,提供了更高的數據流量。RAID 5更適合於小數據塊和隨機讀寫的數據。
RAID 3與RAID 5相比,最主要的區別在於RAID 3每進行一次數據傳輸就需涉及到所有的陣列盤;而對於RAID 5來説,大部分數據傳輸只對一塊磁盤操作,並可進行並行操作。在RAID 5中有“寫損失”,即每一次寫操作將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。
RAID 6:與RAID 5相比,RAID 6增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高,即使兩塊磁盤同時失效也不會影響數據的使用。但RAID 6需要分配給奇偶校驗信息更大的磁盤空間,相對於RAID 5有更大的“寫損失”,因此“寫性能”非常差。較差的性能和複雜的實施方式使得RAID 6很少得到實際應用。
RAID 7:這是一種新的RAID標準,其自身帶有智能化實時操作系統和用於存儲管理軟件工具,可完全獨立於主機運行,不佔用主機CPU資源。RAID 7可以看作是一種存儲計算機(Storage Computer),它與其他RAID標準有明顯區別。除了以上的各種標準,我們可以如RAID 0+1那樣結合多種RAID規範來構築所需的RAID陣列,例如RAID 5+3(RAID 53)就是一種應用較為廣泛的陣列形式。用户一般可以通過靈活配置磁盤陣列來獲得更加符合其要求的磁盤存儲系統。
開始時RAID方案主要針對SCSI硬盤系統,系統成本比較昂貴。1993年,HighPoint公司推出了第一款IDE-RAID控制芯片,能夠利用相對廉價的IDE硬盤來組建RAID系統,從而大大降低了RAID的“門檻”。
從此,個人用户也開始關注這項技術,因為硬盤是現代個人計算機中發展最為“緩慢”和最缺少安全性的設備,而用户存儲在其中的數據卻常常遠超計算機的本身價格。在花費相對較少的情況下,RAID技術可以使個人用户也享受到成倍的磁盤速度提升和更高的數據安全性,現在個人電腦市場上的IDE-RAID控制芯片主要出自HighPoint和Promise公司,此外還有一部分來自AMI公司。
面向個人用户的IDE-RAID芯片一般只提供了RAID 0、RAID 1和RAID 0+1(RAID 10)等RAID規範的支持,雖然它們在技術上無法與商用系統相提並論,但是對普通用户來説其提供的速度提升和安全保證已經足夠了。
隨着硬盤接口傳輸率的不斷提高,IDE-RAID芯片也不斷地更新換代,芯片市場上的主流芯片已經全部支持ATA 100標準,而HighPoint公司新推出的HPT 372芯片和Promise最新的PDC20276芯片,甚至已經可以支持ATA 133標準的IDE硬盤。在主板廠商競爭加劇、個人電腦用户要求逐漸提高的今天,在主板上板載RAID芯片的廠商已經不在少數,用户完全可以不用購置RAID卡,直接組建自己的磁盤陣列,感受磁盤狂飆的速度。

RAID磁盤陣列技巧

從技術的角度來看,RAID恢復服務提供商不僅需要具備包括原先的5種(或者6種,如果包括RAID 0或者無RAID保護)基本的RAID陣列級別或者技術的能力,而且需要具備RAID 5E、RAID 5EE、RAID 6、RAID 10、RAID 50、RAID 51、RAID 60以及RAID ADG等其它級別的能力。這些RAID級別可以利用多個連接和磁盤驅動器的類型以及各種各樣的以太網連接。技術挑戰之外就是由服務器和存儲系統廠商以及有些介質製造商帶來的RAID技術的變化。
1、找一家支持您的硬件的RAID恢復服務。底線是你需要詳述受損的RAID集的特性:部件的型號和生產商、RAID軟件的固件版本驅動器的大小和型號、連接的類型、使用的操作系統、甚至把數據寫入存儲的可能的業務應用程序。然後你需要找一家對你現有的配置有經驗的服務提供商。
2、瞭解RAID故障的原因。不要接受廠商有時會做出的有關“RAID故障的四個基本原因”的簡單的保證。儘管由於硬件RAID故障、軟件RAID故障、人為錯誤以及應用程序錯誤,的確出現RAID系統中斷,但是對根本原因的分類的瞭解並不代表把數據從受損的RAID集進行恢復的能力。
3、尋求認證的RAID恢復服務提供商。如果服務提供商具備恢復服務的基本實踐方面的認證,例如國際標準ISO 4級、美國聯邦標準10級的潔淨室認證(Cleanroom Certification)(管控執行工作的設施中懸浮粒子污染等級,如果工作是在服務提供商的公司執行)、遵從敏感數據資產安全處理的SSAE 16 Type II審計準則以及可能適用你的數據的性質以及法律/監管規定的數據保存和保護要求的其它認證,這通常是一個好兆頭。你也應該從硬件廠商尋求你的RAID系統基於的設備或者軟件的認證。
4、條款清晰的合同是關鍵。尋找詳述提供服務的內容以及預期結果的時間跨度的簡潔易懂的合同。您可能喜歡在開始時有一個診斷的步驟,以查明你的數據是否完全可恢復。這最好是一項免費的服務,因為實際的恢復可能價格高昂,尤其對於SAN或者對於某些把內容尋址(content-addressable)存儲算法與RAID進行組合的系統。

RAID磁盤陣列磁盤陣列

隨着RAID磁盤陣列技術的發展,存儲的性能和安全性都有了很好的保障。對於中小項目常用的RAID磁盤陣列5(包括RAID磁盤陣列5e,RAID磁盤陣列5ee和RAID磁盤陣列6)這種級別的RAID磁盤陣列,都能保證在1-2塊磁盤/FLASH出現故障的情況下,RAID磁盤陣列保證數據的完整性,但RAID磁盤陣列5的保護機制是否能完整的保護數據,答案卻是否定的。
RAID磁盤陣列5和RAID磁盤陣列6對於普通的磁盤故障有很好的糾錯能力,但RAID磁盤陣列對於儲存的底層故障,RAID磁盤陣列5和RAID磁盤陣列6都無法進行糾錯恢復。
硬件RAID磁盤陣列的缺點:可以檢測並嘗試恢復Noisy Error,我們常見的磁盤損壞包括Bit Rot就是代表性的顯性錯誤,但是RAID磁盤陣列無法檢測到隱性錯誤。常見的RAID磁盤陣列儲存底層隱性錯誤有以下幾種:
Phantom writes“幻影寫入”。RAID磁盤陣列磁盤已經發出指令寫入磁道,由於RAID磁盤陣列內部故障,並未寫入成功,但在RAID磁盤陣列儲存表象為寫入完成的狀態。
Misdirected reads or writes誤讀寫。舉例:RAID磁盤陣列數據要在01扇區進行讀寫,卻在02扇區做了這個操作,導致數據混亂。
DMA parity errors DMA傳輸過程中發生的error。
Accidental overwrites 在頻繁的Swapping(文件交換)中數據誤讀寫。
隨着RAID磁盤陣列儲存設備技術的進化,上面這四種只是常見的Silent Error,當然會有其他更多的RAID磁盤陣列種類,涉及到很多RAID磁盤陣列底層的技術。
我們遇到的RAID磁盤陣列VDD Error就是屬於可以檢測並嘗試恢復RAID磁盤陣列Noisy Error,但是無法檢測到RAID磁盤陣列Silent Error,所以故障層面只顯示統一的RAID磁盤陣列VDD錯誤,但RAID磁盤陣列底層的故障卻不一定是相同的。
對於硬件RAID磁盤陣列來説,RAID磁盤陣列在陣列卡和光纖卡的級別,RAID磁盤陣列並不會去確認故障是哪一種error,這是硬件RAID磁盤陣列先天的硬件特性限制。
我們可以看看下面這個例子,做了RAID磁盤陣列6,並劃分了LUN。RAID磁盤陣列在故障的表現層面,RAID磁盤陣列櫃的硬件並未出現故障告警,RAID磁盤陣列出現VDD錯誤告警,RAID磁盤陣列在告警之後又進行了修復:
RAID磁盤陣列VDD Repair start開始修復的動作。當VDD Repair到一定程度,完全無法repair的時候,才會表現為服務器告警(故障燈亮)。
但由於RAID磁盤陣列底層故障是Silent Error,不可避免的會有幾率出現hantom writes 或Misdirected reads or writes讀寫誤載這些Silent Error,這些錯誤導致的結果就是錯誤的RAID磁盤陣列數據被相互校檢到RAID磁盤陣列5的其他盤了,這在硬件RAID磁盤陣列屬於不可勘測的部分(當然在超高端的儲存設備還是有這些檢測的機制)。
在更換了故障的RAID磁盤陣列磁盤之後。我們回到Storage Manager的日常event,
像上面這種例子的RAID磁盤陣列故障,在近幾年的RAID磁盤陣列儲存故障發生得越來越頻繁,一方面由於RAID磁盤陣列儲存容量的翻倍提升帶來的磁盤/FLASH密度高速增減,另一方面不斷下降的成本也導致RAID磁盤陣列感覺不如原來的穩定了。
所以RAID磁盤陣列5(e、ee、raid6)級別的這種RAID磁盤陣列技術,並非在單盤雙盤損壞的情況下都能保持良好的重構工作。在一些RAID磁盤陣列數據安全需求高、成本又受限的地方,我們不能只依靠RAID磁盤陣列5的技術來規避數據丟失。
ZFS文件系統,在系統層面能補充硬件RAID磁盤陣列的這種不可規避的數據丟失情況,所以在每個RAID磁盤陣列項目的規劃初期,應該要規劃好相應的RAID磁盤陣列系統和文件格式