閱讀140 返回首頁    go 阿裏雲 go 技術社區[雲棲]


雙硬盤RAID 0全攻略

硬盤RAID技術詳解

一Raid定義
  RAID(Redundant Array ofIndependent Disk 獨立冗餘磁盤陣列)技術是加州大學伯克利分校1987年提出最初是為了組合小的廉價磁盤來代替大的昂貴磁盤同時希望磁盤失效時不會使對數據的訪問受損失而開發出一定水平的數據保護技術。RAID就是一種由多塊廉價磁盤構成的冗餘陣列在操作係統下是作為一個獨立的大型存儲設備出現。RAID可以充分發揮出多塊硬盤的優勢可以提升硬盤速度增大容量,提供容錯功能夠確保數據安全性易於管理的優點在任何一塊硬盤出現問題的情況下都可以繼續工作不會受到損壞硬盤的影響。  

二、RAID的幾種工作模式
1、RAID0
   即Data Stripping數據分條技術。RAID 0可以把多塊硬盤連成一個容量更大的硬盤群可以提高磁盤的性能和吞吐量。RAID0沒有冗餘或錯誤修複能力成本低要求至少兩個磁盤一般隻是在那些對數據安全性要求不高的情況下才被使用。

1、RAID 0最簡單方式
就是把x塊同樣的硬盤用硬件的形式通過智能磁盤控製器或用操作係統中的磁盤驅動程序以軟件的方式串聯在一起形成一個獨立的邏輯驅動器容量是單獨硬盤的x倍,在電腦數據寫時被依次寫入到各磁盤中當一塊磁盤的空間用盡時數據就會被自動寫入到下一塊磁盤中它的好處是可以增加磁盤的容量。速度與其中任何一塊磁盤的速度相同如果其中的任何一塊磁盤出現故障整個係統將會受到破壞可靠性是單獨使用一塊硬盤的1/n。

2、RAID 0的另一方式
      是用n塊硬盤選擇合理的帶區大小創建帶區集最好是為每一塊硬盤都配備一個專門的磁盤控製器,在電腦數據讀寫時同時向n塊磁盤讀寫數據,速度提升n倍。提高係統的性能。

2、RAID 1
RAID 1稱為磁盤鏡像把一個磁盤的數據鏡像到另一個磁盤上在不影響性能情況下最大限度的保證係統的可靠性和可修複性上具有很高的數據冗餘能力但磁盤利用率為50%故成本最高多用在保存關鍵性的重要數據的場合。RAID 1有以下特點 
  1、RAID 1的每一個磁盤都具有一個對應的鏡像盤任何時候數據都同步鏡像係統可以從一組鏡像盤中的任何一個磁盤讀取數據。
  2、磁盤所能使用的空間隻有磁盤容量總和的一半係統成本高。
  3、隻要係統中任何一對鏡像盤中至少有一塊磁盤可以使用甚至可以在一半數量的硬盤出現問題時係統都可以正常運行。
  4、出現硬盤故障的RAID係統不再可靠應當及時的更換損壞的硬盤否則剩餘的鏡像盤也出現問題那麼整個係統就會崩潰。
  5、更換新盤後原有數據會需要很長時間同步鏡像外界對數據的訪問不會受到影響隻是這時整個係統的性能有所下降。
  6、RAID 1磁盤控製器的負載相當大用多個磁盤控製器可以提高數據的安全性和可用性。

3、RAID01
把RAID0和RAID1技術結合起來數據除分布在多個盤上外每個盤都有其物理鏡像盤提供全冗餘能力允許一個以下磁盤故障而不影響數據可用性並具有快速讀/寫能力。RAID0+1要在磁盤鏡像中建立帶區集至少4個硬盤。

4、RAID2
 電腦在寫入數據時在一個磁盤上保存數據的各個位同時把一個數據不同的位運算得到的海明校驗碼保存另一組磁盤上由於海明碼可以在數據發生錯誤的情況下將錯誤校正以保證輸出的正確。但海明碼使用數據冗餘技術使得輸出數據的速率取決於驅動器組中速度最慢的磁盤。RAID2控製器的設計簡單。

5、RAID3
     帶奇偶校驗碼的並行傳送
      RAID 3使用一個專門的磁盤存放所有的校驗數據而在剩餘的磁盤中創建帶區集分散數據的讀寫操作。當一個完好的RAID 3係統中讀取數據隻需要在數據存儲盤中找到相應的數據塊進行讀取操作即可。但當向RAID3寫入數據時必須計算與該數據塊同處一個帶區的所有數據塊的校驗值並將新值重新寫入到校驗塊中這樣無形雖增加係統開銷。當一塊磁盤失效時該磁盤上的所有數據塊必須使用校驗信息重新建立如果所要讀取的數據塊正好位於已經損壞的磁盤則必須同時讀取同一帶區中的所有其它數據塊並根據校驗值重建丟失的數據這使係統減慢。當更換了損壞的磁盤後係統必須一個數據塊一個數據塊的重建壞盤中的數據整個係統的性能會受到嚴重的影響。RAID 3最大不足是校驗盤很容易成為整個係統的瓶頸對於經常大量寫入操作的應用會導致整個RAID係統性能的下降。RAID 3適合用於數據庫和WEB服務器等。

6、 RAID4
RAID4即帶奇偶校驗碼的獨立磁盤結構RAID4和RAID3很象它對數據的訪問是按數據塊進行的也就是按磁盤進行的每次是一個盤RAID4的特點和RAID3也挺象不過在失敗恢複時它的難度可要比RAID3大得多了控製器的設計難度也要大許多而且訪問數據的效率不怎麼好。

7、 RAID5
RAID 5把校驗塊分散到所有的數據盤中。RAID 5使用了一種特殊的算法可以計算出任何一個帶區校驗塊的存放位置。這樣就可以確保任何對校驗塊進行的讀寫操作都會在所有的RAID磁盤中進行均衡從而消除了產生瓶頸的可能。RAID5的讀出效率很高寫入效率一般塊式的集體訪問效率不錯。RAID 5提高了係統可靠性但對數據傳輸的並行性解決不好而且控製器的設計也相當困難。

8、 RAID6
RAID6即帶有兩種分布存儲的奇偶校驗碼的獨立磁盤結構它是對RAID5的擴展主要是用於要求數據絕對不能出錯的場合使用了二種奇偶校驗值所以需要N+2個磁盤同時對控製器的設計變得十分複雜寫入速度也不好用於計算奇偶校驗值和驗證數據正確性所花費的時間比較多造成了不必須的負載很少人用。

9、 RAID7
  RAID7即優化的高速數據傳送磁盤結構它所有的I/O傳送均是同步進行的可以分別控製這樣提高了係統的並行性和係統訪問數據的速度每個磁盤都帶有高速緩衝存儲器實時操作係統可以使用任何實時操作芯片達到不同實時係統的需要。允許使用SNMP協議進行管理和監視可以對校驗區指定獨立的傳送信道以提高效率。可以連接多台主機當多用戶訪問係統時訪問時間幾乎接近於0。但如果係統斷電在高速緩衝存儲器內的數據就會全部丟失因此需要和UPS一起工作RAID7係統成本很高。

10、 RAID10
  RAID10即高可靠性與高效磁盤結構它是一個帶區結構加一個鏡象結構可以達到既高效又高速的目的。這種新結構的價格高可擴充性不好。

11、 RAID53
  RAID7即高效數據傳送磁盤結構是RAID3和帶區結構的統一因此它速度比較快也有容錯功能。但價格十分高不易於實現。

為什麼需要磁盤陣列

      
如何增加磁盤的存取(access)速度,如何防止數據因磁盤的故障而失落及如何有效的利用磁盤空間,一直是電腦專業人員和用戶的困擾;而大容量磁盤的價格非常昂貴,對用戶形成很大的負擔。磁盤陣列技術的產生一舉解決了這些問題。

        過去十年來,CPU的處理速度增加了五十倍有多,內存(memory)的存取速度亦大幅增加,而數據儲存裝置--主要是磁盤(harddisk)--的存取速度隻增加了三、四倍,形成電腦係統的瓶頸,拉低了電腦係統的整體性能(throughput),若不能有效的提升磁盤的存取速度,CPU、內存及磁盤間的不平衡將使CPU及內存的改進形成浪費。

       目前改進磁盤存取速度的的方式主要有兩種。一是磁盤快取控製(disk cache controller),它將從磁盤讀取的數據存在快取內存(cachememory)中以減少磁盤存取的次數,數據的讀寫都在快取內存中進行,大幅增加存取的速度,如要讀取的數據不在快取內存中,或要寫數據到磁盤時,才做磁盤的存取動作。這種方式在單工環境(single-tasking environment)如DOS之下,對大量數據的存取有很好的性能(量小且頻繁的存取則不然),但在多工(multi-tasking)環境之下(因為要不停的作數據交換(swapping)的動作)或數據庫(database)的存取(因為每一記錄都很小)就不能顯示其性能。這種方式沒有任何安全保障。其二是使用磁盤陣列的技術。磁盤陣列是把多個磁盤組成一個陣列,當作單一磁盤使用,它將數據以分段(striping)的方式儲存在不同的磁盤中,存取數據時,陣列中的相關磁盤一起動作,大幅減低數據的存取時間,同時有更佳的空間利用率。磁盤陣列所利用的不同的技術,稱為RAID level,不同的level針對不同的係統及應用,以解決數據安全的問題。

       一般高性能的磁盤陣列都是以硬件的形式來達成,進一步的把磁盤快取控製及磁盤陣列結合在一個控製器(RAID controller)或控製卡上,針對不同的用戶解決人們對磁盤輸出入係統的四大要求:
(1)增加存取速度,
(2)容錯(fault tolerance),即安全性
(3)有效的利用磁盤空間;
(4)盡量的平衡CPU,內存及磁盤的性能差異,提高電腦的整體工作性能。


磁盤陣列有兩種方法可以實現

軟件陣列與硬件陣列。

1、軟件陣列是指通過網絡操作係統自身提供的磁盤管理功能將連接的普通SCSI卡上的多塊硬盤配置成邏輯盤組成陣列。軟件陣列可以提供數據冗餘功能但是磁盤子係統的性能會有所降低。目前WINDOWS
NT和NET WARE兩種操作係統都可以提供軟件陣列功能其中WINDOWSNT可以提供RAID 0、RAID 1、RAID 5。NET WARE操作係統可以實現RAID 1功能。

2、硬件陣列是使用專門的磁盤陣列卡來實現的。現在的非入門級服務器幾乎都提供磁盤陣列卡不管是集成在主板上或非集成的都能輕鬆實現陣列功能。硬件陣列能夠提供在線擴容、動態修改陣列級別、自動數據恢複、驅動器漫遊、超高速緩衝等功能。它能提供性能、數據保護、可靠性、可用性和可管理性的解決方案。磁盤陣列卡擁有一個專門的處理器一般是Intel的I960芯片還擁有專門的存貯器用於高速緩衝數據。這樣一來服務器對磁盤的操作就直接通過磁盤陣列卡來進行處理因此不需要大量的CPU及係統內存資源不會降低磁盤子係統的性能。陣列卡專用的處理單元來進行操作它的性能要遠遠高於常規非陣列硬盤並且更安全更穩定。


       無論是主板板載的IDE RAID控製芯片還是獨立的PCI接口IDE RAID控製器它們都有一個用來進行配置和工作的獨立BIOS它們的BIOS設置畫麵會在係統POST完成之後顯示我們可以看到這時候HighPoint HPT372 IDE RAID控製芯片的BIOS畫麵已經出現在屏幕上按Ctrl+H進入控製界麵。

  這裏我們看到可以選擇的依次有CreateArray建立陣列、Delete Array刪除陣列、Create/DeleteSpare建立、刪除和Select Boot Disk選擇啟動硬盤這幾個選項。而在選項的下方則顯示了所識別到的硬盤和它們的工作狀態。我們要建立一個陣列所以選擇Create Array在出現的畫麵中我們就可以完成所有的陣列建立設置工作在ArrayMode中我們可以選擇建立RAID的種類默認的是RAID 0模式當然我們可以根據需要選擇RAID 0、0+1、JBOD等。

  當我們確定了選擇的RAID模式之後便需要為這個陣列進行命名你可以選擇自己好識別容易記的名字。確定名字之後我們就要來選擇驅動器了。因為我們建立的是RAID 0模式所以隻需要2個硬盤。我們選定在下麵設備欄中的兩塊硬盤。

  完成以後就能設定塊的大小了。所謂塊的大小就是指陣列中的最基本數據單位。一般來說塊越小越能充分利用空間。但是IDERAID因為沒有自己獨立的I/O處理器所以塊越小也意味著越高的資源消耗。一般來說默認的64K或者32K都是不錯的選擇。做完這一切之後整個陣列就建立完成了選擇Start Creation Process之後就能保存退出了。

  RAID 0的啟用
  如果需要從RAID啟動我們還需要在BIOS中把啟動順序設置為ATA RAID獨立的RAID卡我們則需要設置為SCSI啟動。對於Windows 9x的用戶到此整個RAID就建立完畢了我們在DOS下按照普通單個硬盤分區格式化安裝係統就搞定了而操作係統也隻會把它當作一個驅動器。使用Windows NT/2000/XP的朋友就要麻煩一點了需要另外安裝一下你的RAID驅動。

注意事項
1.如果要做RAID 0必須至少有兩個硬盤另外一旦將硬盤組成RAID陣列就會丟失原來的數據。
  2.選擇硬盤的時候最好完全一樣否則會降低性能此時的理論速度也隻是慢硬盤速度的兩倍。
  3.如果RAID 0陣列中的一塊硬盤損壞硬盤陣列的數據將全部丟失造成損失。


      在多個磁盤驅動器上儲存數據磁盤讀取的工作可以平均分散在不同的磁盤驅動器上可以提高效能。由於使用多個磁盤驅動器平均失效時間會延長重複備份亦可增加數據的容錯度。
  
  RAID 0 磁盤平行儲存。這表示要寫入到數組的數據會先劃分為區塊再把數據區塊寫入到數組中的不同的成員磁盤這個方法以較低的固有開支提供了相當高的 I/O 存取效能不過並沒有任何的容錯能力。 RAID 0 數組的儲存容量等於硬件 RAID 設定中所有成員磁盤的總容量也等於軟件 RAID 設定中成員分割區的總容量。
  
  RAID 0 需要至少兩個以上的磁盤。
  
  RAID 1 映像儲存是把相同的數據寫入到數組中的每一個成員磁盤中以提供容錯能力。
  
  RAID 1 需要至少兩個以上的磁盤。
  
  RAID 3 磁盤平行儲存與同位檢測數據。要寫入到數組的數據會先劃分為區塊再把數據區塊寫入到數組中的不同的成員磁盤每一個數據區塊會產生一個同位檢測數據這個同位檢測數據在數據寫入時會寫到專屬磁盤在數據讀出時會用來確定數據的正確性。
  
  RAID 3 需要至少三個以上的磁盤。
  
  RAID 5 磁盤平行儲存與分布式同位檢測數據。要寫入到數組的數據會先劃分為區塊再把數據區塊寫入到數組中的不同的成員磁盤每一個數據區塊會產生一個同位檢測數據這個同位檢測數據在數據寫入時會寫到磁盤陣列中某一磁盤內分散同位檢測數據的信息到數組中某些或所有的成員磁盤驅動器中。
  
  RAID 5 需要至少三個以上的磁盤。
  
  JBOD 簡易地群組磁盤驅動器來建立一個大型的虛擬磁盤。 在此模式設定中空間區塊是從一個成員磁盤依序分配下來當第一個磁盤完全填滿時再分配到第二個磁盤依此類推。這種群組化並沒有提供任何的效能增益因為在成員磁盤驅動器之間不可能會有任何分開的 I/O 操作。 JBOD 模式也沒有提供多餘性而且說實在的它也降低了可靠性 — 假如任何一個成員磁盤發生錯誤整個數組便無法存取使用。總磁盤容量是所有成員磁盤驅動器的容量。

最後更新:2017-04-03 05:39:51

  上一篇:go Spring4.0MVC學習資料,Controller中的方法詳解和使用(四)
  下一篇:go 如何解決adb devices 端口被占用的問題