http://zh.wikipedia.org/wiki/RAID
獨立硬盤冗余陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱硬盤陣列。其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。根據選擇的版本不同,RAID比單顆硬盤有以下一個或多個方面的好處:增強數據集成度,增強容錯功能,增加處理量或容量。另外,磁盤陣列對於電腦來說,看起來就像一個單獨的硬盤或邏輯存儲單元。分為RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。
簡單來說,RAID把多個硬盤組合成為一個邏輯扇區,因此,操作系統只會把它當作一個硬盤。RAID常被用在服務器電腦上,並且常使用完全相同的硬盤作為組合。由於硬盤價格的不斷下降與RAID功能更加有效地與主板集成,它也成為了玩家的一個選擇,特別是需要大容量存儲空間的工作,如:視頻與音頻制作。
最初的RAID分成了不同的等級,每種等級都有其理論上的優缺點,不同的等級在兩個目標間取得平衡,分別是增加數據可靠性以及增加存儲器(群)讀寫性能。這些年來,出現了對於RAID觀念不同的應用。
目錄
[隱藏]
標准RAID
RAID 0
RAID 0亦稱為帶區集。它將兩個以上的磁盤並列起來,成為一個大容量的磁盤。在存放數據時,分段后分散存儲在這些磁盤中,因為讀寫時都可以並行處理,所以在所有的級別中,RAID 0的速度是最快的。但是RAID 0既沒有冗余功能,也不具備容錯能力,如果一個磁盤(物理)損壞,所有數據都會丟失,危險程度與JBOD相當。
RAID 1
兩組以上的N個磁盤相互作鏡像,在一些多線程操作系統中能有很好的讀取速度,理論上讀取速度等於硬盤數量的倍數,另外寫入速度有微小的降低。只要一個磁盤正常即可維持運作,可靠性最高。RAID 1就是鏡像,其原理為在主硬盤上存放數據的同時也在鏡像硬盤上寫一樣的數據。當主硬盤(物理)損壞時,鏡像硬盤則代替主硬盤的工作。因為有鏡像硬盤做數據備份,所以RAID 1的數據安全性在所有的RAID級別上來說是最好的。但無論用多少磁盤做RAID 1,僅算一個磁盤的容量,是所有RAID中磁盤利用率最低的一個級別。
如果用兩個不同大小的磁盤建RAID 1,可用空間為較小的那個磁盤,較大的磁盤多出來的空間也可以分區成一個區來使用,不會造成浪費。
RAID 2
這是RAID 0的改良版,以漢明碼(Hamming Code)的方式將數據進行編碼后分區為獨立的比特,並將數據分別寫入硬盤中。因為在數據中加入了錯誤修正碼(ECC,Error Correction Code),所以數據整體的容量會比原始數據大一些,RAID2最少要三台磁盤驅動器方能運作。
RAID 3
采用Bit-interleaving(數據交錯存儲)技術,它需要通過編碼再將數據比特分割后分別存在硬盤中,而將同比特檢查后單獨存在一個硬盤中,但由於數據內的比特分散在不同的硬盤上,因此就算要讀取一小段數據資料都可能需要所有的硬盤進行工作,所以這種規格比較適於讀取大量數據時使用。
RAID 4
它與RAID 3不同的是它在分區時是以區塊為單位分別存在硬盤中,但每次的數據訪問都必須從同比特檢查的那個硬盤中取出對應的同比特數據進行核對,由於過於頻繁的使用,所以對硬盤的損耗可能會提高。(塊交織技術,Block interleaving)
RAID 5
RAID Level 5是一種儲存性能、數據安全和存儲成本兼顧的存儲解決方案。它使用的是Disk Striping(硬盤分區)技術。RAID 5至少需要三顆硬盤,RAID 5不是對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁盤上。當RAID5的一個磁盤數據發生損壞后,可以利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供數據安全保障,但保障程度要比鏡像低而磁盤空間利用率要比鏡像高。RAID 5具有和RAID 0相近似的數據讀取速度,只是因為多了一個奇偶校驗信息,寫入數據的速度相對單獨寫入一塊硬盤的速度略慢,若使用“回寫高速緩存”可以讓性能改善不少。同時由於多個數據對應一個奇偶校驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較便宜。
RAID 6
與RAID 5相比,RAID 6增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高,即使兩塊磁盤同時失效也不會影響數據的使用。但RAID 6需要分配給奇偶校驗信息更大的磁盤空間,相對於RAID 5有更大的“寫損失”,因此“寫性能”非常差。較差的性能和復雜的實作方式使得RAID 6很少得到實際應用。
同一數組中最多容許兩個磁盤損壞。更換新磁盤后,數據將會重新算出並寫入新的磁盤中。依照設計理論,RAID 6必須具備四個以上的磁盤才能生效。
可使用的容量為硬盤總數減去2的差,乘以最小容量,公式為:
同理,數據保護區域容量則為最小容量乘以2。
RAID 6在硬件磁盤陣列卡的功能中,也是最常見的磁盤陣列等級。
混合RAID
JBOD
JBOD( Just a Bunch Of Disks)在分類上,JBOD並不是RAID的等級。由於並沒有規范,市場上有兩類主流的做法
- 使用單獨的鏈接端口如SATA、USB或1394同時控制多個各別獨立的硬盤,使用這種模式通常是較高級的設備,還具備有RAID的功能,不需要依靠JBOD達到合並邏輯扇區的目的。
- 只是將多個硬盤空間合並成一個大的邏輯硬盤,沒有錯誤備援機制。
數據的存放機制是由第一顆硬盤開始依序往后存放,即操作系統看到的是一個大硬盤(由許多小硬盤組成的)。但如果硬盤損毀,則該顆硬盤上的所有數據將無法救回。若第一顆硬盤損壞,通常無法作救援(因為大部分文件系統將磁盤分區表(partition table)存在磁盤前端,即第一顆),失去磁盤分區表即失去一切數據,若遭遇磁盤陣列數據或硬盤出錯的狀況,危險程度較RAID 0更劇。它的好處是不會像RAID,每次訪問都要讀寫全部硬盤。
RAID 7
RAID 7並非公開的RAID標准,而是Storage Computer Corporation的專利硬件產品名稱,RAID 7是以RAID 3及RAID 4為基礎所發展,但是經過強化以解決原來的一些限制。另外,在實現中使用大量的高速緩存以及用以實現異步數組管理的專用即時處理器,使得RAID 7可以同時處理大量的IO要求,所以性能甚至超越了許多其他RAID標准的實做產品。但也因為如此,在價格方面非常的高昂。[1]
RAID 10/01
RAID 10是先鏡射再分區數據,再將所有硬盤分為兩組,視為是RAID 0的最低組合,然后將這兩組各自視為RAID 1運作。
RAID 01則是跟RAID 10的程序相反,是先分區再將數據鏡射到兩組硬盤。它將所有的硬盤分為兩組,變成RAID 1的最低組合,而將兩組硬盤各自視為RAID 0運作。
當RAID 10有一個硬盤受損,其余硬盤會繼續運作。RAID 01只要有一個硬盤受損,同組RAID 0的所有硬盤都會停止運作,只剩下其他組的硬盤運作,可靠性較低。如果以六個硬盤建RAID 01,鏡射再用三個建RAID 0,那么壞一個硬盤便會有三個硬盤脫機。因此,RAID 10遠較RAID 01常用,零售主板絕大部份支持RAID 0/1/5/10,但不支持RAID 01。
RAID 50
RAID 5與RAID 0的組合,先作RAID 5,再作RAID 0,也就是對多組RAID 5彼此構成Stripe訪問。由於RAID 50是以RAID 5為基礎,而RAID 5至少需要3台硬盤,因此要以多組RAID 5構成RAID 50,至少需要6台硬盤。以RAID 50最小的6台硬盤組態為例,先把6台硬盤分為2組,每組3台構成RAID 5,如此就得到兩組RAID 5,然后再把兩組RAID 5構成RAID 0。
RAID 50在底層的任一組或多組RAID 5中出現1台硬盤損壞時,仍能維持運作,不過如果任一組RAID 5中出現2台或兩台以上硬盤損毀,整組RAID 50就會失效。
RAID 50由於在上層把多組RAID 5構成Stripe,性能比起單純的RAID 5高,容量利用率比RAID5要低。比如同樣9塊硬盤,RAID 50則3個RAID 5組成RAID 0,每個RAID 5會浪費一塊硬盤,利用率為(1-3/9),RAID 5則為(1-1/9)。
RAID 53
它擁有一個鏡射條帶數組,硬盤里其中一個條帶就是一個是由3組以上的RAID 5組成RAID 3硬盤陣列。
RAID 60
RAID 6與RAID 0的組合:先作RAID 6,再作RAID 0。換句話說,就是對兩組以上的RAID 6作Stripe訪問。RAID 6至少需具備4台硬盤,所以RAID 60的最小需求是8台硬盤。
由於底層是以RAID 6組成,所以RAID 60可以容許任一組RAID 6中損毀最多2台硬盤,而系統仍能維持運作;不過只要底層任一組RAID 6中損毀3台硬盤,整組RAID 60就會失效,當然這種情況的機率相當低。
比起單純的RAID 6,RAID 60的上層通過結合多組RAID 6構成Stripe訪問,因此性能較高。不過使用門檻高,而且容量利用率低是較大的問題。
應用
RAID2、3、4較少實際應用,因為RAID5已經涵蓋了所需的功能,因此RAID2、3、4大多只在研究領域有實現,而實際應用上則以RAID5為主。
RAID4有應用在某些商用機器上,像是NetApp公司設計的NAS系統就是使用RAID4的設計概念。
磁盤陣列比較表
RAID等級 | 最少硬盤 | 最大容錯 | 可用容量 | 讀取性能 | 寫入性能 | 安全性 | 目的 | 應用產業 |
---|---|---|---|---|---|---|---|---|
單一硬盤 | (參考) | 0 | 1 | 1 | 1 | 無 | ||
JBOD | 1 | 0 | n | 1 | 1 | 無(同RAID 0) | 增加容量 | 個人(暫時)存儲備份 |
0 | 2 | 0 | n | n | n | 一個硬盤異常,全部硬盤都會異常 | 追求最大容量、速度 | 3D產業實時渲染、視頻剪接高速緩存用途 |
1 | 2 | n-1 | 1 | n | 1 | 最高,一個正常即可 | 追求最大安全性 | 個人、企業備份 |
5 | 3 | 1 | n-1 | n-1 | n-1 | 高 | 追求最大容量、最小預算 | 個人、企業備份 |
6 | 4 | 2 | n-2 | n-2 | n-2 | 安全性較RAID 5高 | 同RAID 5,但較安全 | 個人、企業備份 |
10 | 4 | n/2 | n/2 | n | n/2 | 安全性高 | 綜合RAID 0/1優點,理論速度較快 | 大型數據庫、服務器 |
1. n代表硬盤總數
2. JBOD可接到現有硬盤,直接增加容量
種類
- 軟件磁盤陣列(Software RAID)
-
主要由電腦主板CPU處理數組存儲作業,缺點為耗損較多CPU資源運算RAID,優點則是價格偏低。分類有二種:
- 純軟件磁盤陣列(Pure Software RAID):只需要主板支持即可,不需要任何磁盤陣列卡。若主板損壞,可能難以購買同款主板重建RAID。
- 硬件輔助磁盤陣列(Hardware-Assisted RAID):需要一張RAID卡,以及廠商所提供的驅動程序。這款RAID較易遷移到其他電腦。
- 硬件磁盤陣列(Hardware RAID)
- RAID卡上內置處理器,不需要服務器的CPU運算。優點是讀寫性能最快,不占用服務器資源,可用於任何操作系統,也能在系統斷電后,通過備份電池模塊(BBU, Backup Battery Unit)以及 非易失性存儲器 (NVRAM)將硬盤讀寫日志文件(Journal)包含的剩余讀寫作業先紀錄在存儲器中,等待電力供應撤消后,再由NVRAM取回日志文件數據,接着再完成讀寫作業,將剩余讀寫作業安全完成以確保讀寫完整性。備份電池模塊通常會配合數組卡的Write-Back高速緩存模式,借由此存儲器高速緩存讀寫作業以得到更高的讀寫性能;但是沒有備份電池模塊的硬件磁盤陣列卡,切勿使用Write-Back高速緩存模式以免遭遇斷電情形導致讀寫數據流失。此外,因為硬件磁盤陣列卡搭載CPU處理器,所以可以與系統分離出來,對硬盤進行各種作業,還原作業的速度也比軟件磁盤陣列快。缺點是其售價很高,通常只用於RAID 5和RAID 6。
磁盤陣列相關產品
使用磁盤陣列技術的產品,可依照該產品位於電腦主機中的位置來區分,在電腦主機內部運作的數組產品,包括了主板內置的磁盤陣列、磁盤陣列卡;在電腦主機外部運作的數組產品,則包括硬盤外接盒(別名:磁盤陣列設備)、NAS網絡存儲設備、硬盤外接座、存儲卡數組盒。
- 磁盤陣列技術內置於主板的廠商,常見的有:“英特爾”(Intel)、“超微”(AMD)二家廠商,還有采用Intel芯片組的相關主板廠商,例如:“華碩”(ASUS)、“技嘉”(GIGABYTE)、“微星”(MSI)、“華擎”(ASROCK)等等。
- 磁盤陣列卡
- 磁盤陣列技術應用於磁盤陣列卡的廠商,常見的有:“艾薩”(LSI)、“峰際科技”(HighPoint)、“HP”、“Adaptec”、“Areca”、“Supermicro”、“登昌恆興業”(UPMOST)等等。
- 磁盤陣列技術應用於硬盤外接盒的廠商,常見的有:“世特力”(Century)、“艾客優品”(AKITIO)、“大衛肯尼”(CyberSLIM)、“中銨”(ICY DOCK)、“銳銨”(STARDOM)。
- 具備RAID功能的硬盤外接盒,通常也叫“磁盤陣列設備”。
- 硬盤陣列系統
- 磁盤陣列技術應用於磁盤陣列系統的廠商有:“普安”(Infotrend)、“商丞”(Unifosa)、“普樺(現為商丞旗下存儲事業群)”(Proware)、“濰進”(Netstor)、“喬鼎”(Promise)、“Sans Digital”、“G-Technology”、“Accusys ExaSAN”(ExaSAN)等等。
- 通常指大型存儲系統Rackmount等大容量的機箱,16Bay以上的多層式機箱內,還會配上主板與CPU成為一個獨立的系統。
- 磁盤陣列技術應用於NAS網絡存儲設備的廠商,常見的有:“群暉”(Synology)、“威聯通”(QNAP)、“色卡司”(Thecus)、“凡達克”(Vantec)、“華芸”(Asustor)等等。
- 磁盤陣列技術應用於硬盤外接座的廠商,常見的有:“世特力”(Century)、“峰際科技”(HighPoint)、“弘拓”(ONNTO)、“中銨”(ICY DOCK)、“大衛肯尼”(CyberSLIM)等等。
- 存儲卡數組盒
- 磁盤陣列技術應用於存儲卡的廠商,目前可見的有“信億”(ARACRD)、“登昌恆興業”(UPMOST)、“致宇”(Bplus)等等。
- 轉換器
- 磁盤陣列技術應用於轉換器的廠商,目前可見的有“峰際科技”(HighPoint)。
磁盤陣列相關客戶類型
- 一般消費者備份數據之用、企業創建ERP系統或NAS系統時的重要數據備份。
- 影音多媒體數字內容創作公司、個人影音剪輯數字內容工作室。
- 數字監控系統(DVR)、網絡監控系統(NVR)等等需要大量存儲視頻的監控系統業者,軍方、賭場因為需要大量監控系統也是常見使用磁盤陣列的客戶。
- 證券、銀行等金融行業保管重要客戶數據。
RAID vs. HDFS(http://book.51cto.com/art/201310/412864.htm)
RAID技術可以通過硬件實現,比如專用的RAID卡或者主板直接支持,也可以通過軟件實現。RAID技術在傳統關系數據庫及文件系統中應用比較廣泛,但是在大型網站比較喜歡使用的NoSQL,以及分布式文件系統中,RAID技術卻遭到冷落。
例如在HDFS(Hadoop 分布式文件系統)中,系統在整個存儲集群的多台服務器上進行數據並發讀寫和備份,可以看作在服務器集群規模上實現了類似RAID的功能,因此不需要磁盤RAID。
HDFS以塊(Block)為單位管理文件內容,一個文件被分割成若干個Block,當應用程序寫文件時,每寫完一個Block,HDFS就將其自動復制到另外兩台機器上,保證每個Block有三個副本,即使有兩台服務器宕機,數據依然可以訪問,相當於實現了RAID1的數據復制功能。
當對文件進行處理計算時,通過MapReduce並發計算任務框架,可以啟動多個計算子任務(MapReduce Task),同時讀取文件的多個Block,並發處理,相當於實現了RAID0的並發訪問功能。
HDFS架構如圖4.23所示。
在HDFS中有兩種重要的服務器角色:NameNode(名字服務節點)和DataNode(數據存儲節點)。NameNode在整個HDFS中只部署一個實例,提供元數據服務,相當於操作系統中的文件分配表(FAT),管理文件名Block的分配,維護整個文件系統的目錄樹結構。DataNode則部署在HDFS集群中其他所有服務器上,提供真正的數據存儲服務。
和操作系統一樣,HDFS對數據存儲空間的管理以數據塊(Block)為單位,只是比操作系統中的數據塊(512字節)要大得多,默認為64MB。HDFS將DataNode上的磁盤空間分成N個這樣的塊,供應用程序使用。
應用程序(Client)需要寫文件時,首先訪問NameNode,請求分配數據塊,NameNode根據管理的DataNode服務器的磁盤空間,按照一定的負載均衡策略,分配若干數據塊供Client使用。
當Client寫完一個數據塊時,HDFS會將這個數據塊再復制兩份存儲在其他DataNode服務器上,HDFS默認同一份數據有三個副本,保證數據可靠性。因此在HDFS中,即使DataNode服務器有多塊磁盤,也不需要使用RAID進行數據備份,而是在整個集群上進行數據復制,而且系統一旦發現某台服務器宕機,會自動利用其他機器上的數據將這台服務器上存儲的數據塊自動再備份一份,從而獲得更高的數據可靠性。
HDFS配合MapReduce等並行計算框架進行大數據處理時,可以在整個集群上並發讀寫訪問所有的磁盤,無需RAID支持。