主要目的
雖然RAID包含多塊硬碟,但是在作業系統下是作為一個獨立的大型存儲設備出現。利用RAID技術於存儲系統的好處主要有以下三種:
通過把多個磁碟組織在一起作為一個邏輯卷提供磁碟跨越功能;
通過把數據分成多個數據塊(Block)並行寫入/讀出多個磁碟以提高訪問磁碟的速度;
通過鏡像或校驗操作提供容錯能力;
最初開發RAID的主要目的是節省成本,當時幾塊小容量硬碟的價格總和要低於大容量的硬碟。目前來看RAID在節省成本方面的作用並不明顯,但是 RAID可以充分發揮出多塊硬碟的優勢,實現遠遠超出任何一塊單獨硬碟的速度和吞吐量。除了性能上的提高之外,RAID還可以提供良好的容錯能力,在任何一塊硬碟出現問題的情況下都可以繼續工作,不會受到損壞硬碟的影響。
RAID技術分為幾種不同的等級,分別可以提供不同的速度,安全性和性價比。根據實際情況選擇適當的RAID級別可以滿足用戶對存儲系統可用性、性能和容量的要求。常用的RAID級別有以下幾種:NRAID,JBOD,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 0 到 7 八種基本的RAID 級別。另外,還有一些基本RAID級別的組合形式,如RAID 10(RAID 0與RAID 1的組合),RAID 50(RAID 0與RAID 5的組合)等。不同RAID 級別代表著不同的存儲性能、數據安全性和存儲成本。但我們最為常用的是下面的幾種RAID形式。
(1)RAID 0
(2) RAID 1
(3)RAID 0+1
(4) RAID 3
(5) RAID 5
RAID級別的選擇有三個主要因素:可用性(數據冗餘)、性能和成本。如果不要求可用性,選擇RAID0以獲得最佳性能。如果可用性和性能是重要的而成本不是一個主要因素,則根據硬碟數量選擇RAID 1。如果可用性、成本和性能都同樣重要,則根據一般的數據傳輸和硬碟的數量選擇RAID3、RAID5。
發展
在計算機發展的初期,“大容量”硬碟的價格還相當高,解決數據存儲安全性問題的主要方法是使用磁帶機等設備進行備份,這種方法雖然可以保證數據的安全,但查閱和備份工作都相當繁瑣。
1987年, Patterson、Gibson和Katz這三位工程師在加州大學伯克利分校發表了題為《A Case of Redundant Array of Inexpensive Disks(廉價磁碟冗餘陣列方案)》的論文,其基本思想就是將多隻容量較小的、相對廉價的硬碟驅動器進行有機組合,使其性能超過一隻昂貴的大硬碟。
這一設計思想很快被接受,從此RAID技術得到了廣泛套用,數據存儲進入了更快速、更安全、更廉價的新時代。
磁碟陣列對於個人電腦用戶,還是比較陌生和神秘的。印象中的磁碟陣列似乎還停留在這樣的場景中:在寬闊的大廳里,林立的磁碟櫃,數名表情陰鬱、早早謝頂的工程師徘徊在其中,不斷從中抽出一塊塊沉重的硬碟,再插入一塊塊似乎更加沉重的硬碟……終於,隨著大容量硬碟的價格不斷降低,個人電腦的性能不斷提升,IDE-RAID作為磁碟性能改善的最廉價解決方案,開始走入一般用戶的計算機系統。
規範
RAID技術主要包含RAID 0~RAID 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恢復服務提供商不僅需要具備包括原先的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磁碟陣列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磁碟陣列系統和檔案格式。