Linux RAID廉價磁盤冗餘陣列

磁盤接口的性能決定着磁盤數據傳輸的速率,一般磁盤設備接口的讀寫標準如下:


  •  IDE: 133Mbps
  • SATA: 300Mbps, 600Mbps, 6Gbps
  • USB 3.0: 480Mbps
  • SCSI: UltraSCSI, 320Mbps

正如我們所知道的,不同的硬盤數據存儲的性能和內部機制存在着大大小小的差異:

IDE

l  指把控制器與盤體集成在一起的硬盤驅動器,我們常說的IDE 接口,也叫ATA接口(並行);

l  並行雙通道;

SATA

u  SATA是Serial ATA的縮寫,即串行ATA。它是一種電腦總線,主要功能是用作主板和大量存儲設備(如硬盤及光盤驅動器)之間的數據傳輸之用。

u  串行高傳輸速率;

u  支持熱插拔;

u  採用了點對點傳輸協議,每一個硬盤與主機通信時都獨佔一個通道,系統中所有的硬盤都是對等的,因此,在串行ATA中將不存在“主/ 從”盤的區別,用戶也不用再費事去設置硬盤的相關跳線了。

SCSI

  一種總線型的系統接口,每個SCSI總線上可以連接包括SCSI控制卡在內的8/16個SCSI設備;

  支持冗餘磁盤陣列(RAID)等多種設備

  SCSI磁盤自身攜帶有類似與CPU的小型控制設備,可以解放CPU,結合獨立總線使得SCSI設備的CPU佔用率很低,大大的提高傳輸速率;

  每個SCSI ID上最多有32個LUN,一個LUN對應一個邏輯設備;

窄SCSI接口(8 target)

控制器端也佔用一個target


CPUSCSI設備發送指令/存儲數據時,SCSI設備怎麼知道目標磁盤是哪一個?

CPU發來的數據的首部包含了目標設備的targetID和LUN ID等控制信息,通過控制器的解釋後,控制器會一步步將該指令/數據定向到目標設備。


在小型計算機/服務器中,它們可以妥妥的滿足用戶/系統的需求;但是對於大型公司的數據存儲,IO存取的速率會遠遠超過單個磁盤提供的的標準性能,這就這就形成了一個IO瓶頸。那麼,這種瓶頸該如何打破呢?

RAID應運而生,它是指將多個獨立的物理硬盤按照不同的方式組合起來,形成一個虛擬的硬盤;

 

如上所示,系統內部中的IDE磁盤性能較低,在無法滿足系統正常運行所需需求的情況下,就需要對磁盤性能進行提升。特別是對於一些公司內部重要的服務器,正在運行中,但是又不可能停下來,換一塊更大的硬盤,然後繼續運行,這樣的話,公司的損失是巨大的;那麼只有在系統運行的情況下進行冗餘技術和熱備、熱換

我們可以在計算機的外部提供一個控制器,該控制器支持SCSI接口,通過SCSI接口的總線,我們可以接上更多的硬盤,這些硬盤是並行的,所以會大大提高傳輸速率;

但在與CPU來看,外部磁盤設備相當於一個整體,數據存儲是通過控制器2來實現分發和鏡像的。

 

根據RAID組織的不同方式可以將RAID分成不同的級別:

RAID 0:條帶

l RAID0是以條帶的形式將數據均勻分佈在陣列的各個磁盤上

 

 

RAID 1:鏡像

RAID1以鏡像爲冗餘方式,對虛擬磁盤上的數據做多份拷貝,放在成員磁盤上



RAID2:

採用校驗冗餘

à  把數據分散爲位或塊,加入漢明碼,間隔寫入到磁盤陣列的每個磁盤中

à  在成員磁盤上的地址都一樣

採用了並行存取方式

花費大,成本昂貴

 

RAID 3:

數據塊被分爲更小的塊並行傳輸到各個成員磁盤上,同時計算XOR校驗數據存放到專用的校驗磁盤上

 


RAID 4:校驗碼

數據被分爲更大的塊並行傳輸到各個成員磁盤上,同時計算XOR校驗數據存放到專用的校驗磁盤上


修復:假如其中一塊磁盤壞掉了,可以使用一塊新的磁盤代替壞掉的磁盤,並根據校驗磁盤計算出壞掉磁盤的數據,並將數據寫入新的磁盤,這個過程就叫磁盤修復

如果在磁盤修復過程中出現了差錯,導致磁盤修復失敗,那麼磁盤中的數據將徹底丟失,永遠無法找回

冗餘能力:壞掉一塊磁盤,可以修復;同時壞掉2+塊磁盤,將無法修復

 

RAID 5:輪流校驗碼

採用獨立存取的陣列方式,校驗信息被均勻的分散到陣列的各個磁盤上


冗餘能力:壞掉一塊磁盤,可以修復;同時壞掉2+塊磁盤,將無法修復

 

RAID 6:

帶有兩種分佈存儲的檢驗信息的磁盤陣列,它是對RAID5的擴展,主要是用於要求數據絕對不能出錯的場合,使用了二種奇偶校驗方法,需要N+2個磁盤

  常用的RAID6技術:

l  RAID6 P+Q

l  RAID6 DP


RAID 7:Jbod

將多個小型磁盤疊加,組合成一個更大的磁盤

不提供數據校驗和鏡像備份

對數據存儲速率沒有提升,對數據的可用性也沒有保障


冗餘能力:壞掉一塊磁盤,所有的數據都將丟失

 

RAID 10:
先鏡像,再條帶化

冗餘能力:左右兩邊同時各壞掉至少一個編號不一致的磁盤,數據完全丟失

                     若左邊/右邊的磁盤全部壞掉了,可以通過相應磁盤的鏡像恢復


RAID 01:

先條帶化,再鏡像


冗餘能力:每組鏡像磁盤各壞掉一個,數據可以恢復

                     假如其中一組中的所有磁盤都壞掉了,數據將完全丟失

 

RAID 50:

RAID5和RAID0的結合,先實現RAID5,再條帶化


冗餘能力:
最強

 

常用RAID級別比較:

RAID 0

RAID 1

RAID 5

RAID JBOD

性能提升: 讀,寫

               冗餘能力(容錯能力): 無

               空間利用率:n

               至少2塊盤

 

性能表現:寫性能下降,讀性能提升

               冗餘能力:有

               空間利用率:1/2

               至少2塊盤

性能表現:讀,寫提升

               冗餘能力:有

               空間利用率:(n-1)/n        

               至少需要3塊

 

性能表現:無提升

               冗餘能力:無

               空間利用率:100%             

               至少需要2塊

RAID 01

RAID 10

RAID 50

 

性能表現:讀、寫提升

               冗餘能力:有

               空間利用率:1/2

               至少需要4塊

 

性能表現:讀、寫提升

               冗餘能力:有

               空間利用率:1/2

               至少需要4塊

性能表現:讀、寫提升

               冗餘能力:有

               空間利用率:(n-2)/n

至少需要6塊

 

 


硬件RAID和軟件RAID:

通常情況下所說的RAID指的是硬件RAID,軟件RAID是指模擬RAID創建的軟件設備;

硬件RAID:

SATA+SAS/SCSI


可以提高讀寫速率,並保證數據的冗餘

硬件RAID一般獨立於計算機/服務器,屬於外部獨立設備,它是通過兩個控制器之間的總線和計算機/服務器進行數據傳輸和通信的。

 

硬件RAID需要在BIOS進行配置,對於已經組合的RAID陣列磁盤,操作系統識別到的只是一個普通的磁盤設備,即/dev/sdaN;假如在BIOS已經配置好了RAID,操作系統卻無法識別,很可能是RAID驅動的問題,這就需要聯繫硬件廠商獲取RAID驅動了。

 

某些RAID芯片上帶有緩存,可以提高數據讀寫的速率,但是遇到突然斷電的情況,數據可能會丟失,所以還有一些更高級的RAID芯片,在內部嵌入電池,在突然斷電情況下,依然可以保證數據全部都寫入硬盤才關機,從而保證了數據的安全性。

 

軟件RAID(邏輯RAID):

假設計算機內部存在多個磁盤,操作系統裝載OS盤上,在其他磁盤格式化成文件系統之前,內核可以識別當前系統中的其他磁盤;

內核中又一個模塊MD(multi disks),它可以讀取磁盤的配置信息,並識別哪些磁盤可以用來組合成爲RAID磁盤,然後將指定磁盤組合起來,形成RAID


邏輯RAID就是通過MD來實現的,Md模擬一個假的RAID設備,並創建對應的設備文件/dev/mdN;

存儲數據時,內核讀取配置文件識別該設備後,在內核內部由MD模塊負責將數據以RAID設備的格式分別發送到各個磁盤上去。

 

邏輯RAID的實質

在用戶空間和內核空間之間創建一個假的RAID設備,這個RAID設備可以模擬RAID設備工作;這個RAID設備對於用戶看來,是一個RAID設備,但對於內核看來,還是N個獨立的磁盤。

 

邏輯RAID性能取決於CPU

假設操作系統崩潰,內核也就沒有了,此前配置的RAID信息也會消失,以RAID形式存儲在磁盤上的數據也就不能訪問了。

 

邏輯RAID數據安全性防範

邏輯RAID磁盤設備必須標識爲fd類型,這樣存儲數據的時候,會在數據之外存儲一些元數據(黃色小方塊表示元數據),重裝操作系統時,內核中的md模塊可以通過重新掃描該fd設備,將該fd設備組合成原先的RAID設備。

 

邏輯RAID管理命令

madam命令:RAID管理工具

模式化的命令:

         創建模式

                   -C

                   專用選項:

                            -l:級別

                            -n#: 設備個數

                            -a{yes|no}: 是否自動爲其創建設備文件

                            -c:CHUNK大小, 2^n,默認爲64K

                            -x#: 指定空閒盤個數

         管理模式

                   --add,--remove, --fail,--stop

                   -a,-r, -f,-S

                   mdadm/dev/md# --fail /dev/sda7

         監控模式

                   -F

         增長模式

                   -G

         裝配模式

                   -A

<p>查看RAID陣列的詳細信息</p><p>mdadm <strong>-D</strong>/dev/md#</p><p>     --detail</p><p></p><p>將當前RAID信息保存至配置文件,以便以後進行直接裝配:</p><p>mdamd -D --scan > /etc/mdadm.conf</p>
<p>查看當前系統當前狀態下所有啓用的RAID設備信息:</p><p>cat /proc/mdstat</p>
<p>提高RAID陣列磁盤性能</p><p>Mke2fs –j –E stride=16 –b 4096 /dev/mdN</p>其中stride=CHUNK/block size


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章