RAID 磁盤陣列的應用


RAID 磁盤陣列的應用

         RAID,一般翻譯爲磁盤陣列,全稱是 Redundant Arrays of Inexpensive Disk,最初的構想是源於加州大學伯克利分校的一個研究小組的項目,他們希望通過大量廉價的硬盤來組建價格便宜,可用性高的磁盤陣列。但是RAID發展到今天,已經背離了當初價格便宜的初衷。但是RAID也帶來了另外的好處,如何合理選擇RAID的級別,可以構建出具有更高可用性,更好地容錯的磁盤。

         RAID主要分爲軟件RAID和硬件RAID,軟件RAID主要是通過操作系統來實現,這樣會增加CPU的負擔,所以在實際場景中極少使用。硬件RAID使用獨立的硬件設備和控制芯片,整體性能優於軟件RAIDRAID有不同的規範,但是總體上可以分爲兩種:標準RAID和混合RAID。雖然現在的RAID有很多不同的規範,但是很多規範只是一種過渡性的實驗產品,在實際的生產環境中幾乎不使用。

1、          標準RAID

1.1   RAID 0

RAID 0也稱爲條帶(strping),它將兩個以上的硬盤串聯起來,成爲一個大容量的磁盤。在存儲數據時,數據分散存儲在這些磁盤中。因爲數據讀寫都可以並行的進行,所以在所有的級別中,RIID的速度是最快的。但是RAID既沒有冗餘功能,也不提供容錯能力。如果有一個物理磁盤損壞,所有的數據都會丟失。所以,RAID只是在一些對數據安全性要求不高,但是速度要求較高的場景下使用,比如視頻,圖像等工作站。

wKioL1T1juOCslPmAADewJfgZi4870.jpg

 

1.2   RAID 1

RAID  1稱爲鏡像技術,需要兩塊以上的硬盤互作鏡像。也就是說,主盤上的數據和鏡像盤上的數據完全一樣。因此,在多線程的操作系統會大大提高數據的讀取速度。RAID 1 的可靠性非常高,只要有一塊硬盤正常就可以保證數據的完整性。但是RAID的缺點是浪費了大量的存儲空間。

wKiom1T1jhOxzU_DAADdbrF4Vic972.jpg

 

RAID2-RAID4屬於實驗性的產品實際生產環境很少使用。

 

1.3   RAID 5

RAID 5引入了數據校驗的功能,並且校驗的數據是分散的存儲在各塊硬盤上。RAID 5 實際上是速度與可靠性的一種折衷方案,在實際場景中應用較多。與RAID相比,存儲成本比較便宜。RAID 5至少需要3塊磁盤來實現。

wKiom1T1jimhWAolAAGOKkI1t-g360.jpg

1.4   RAID 6

RAID 5相比,RAID增加了第二個獨立的信息校驗塊。兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高,即使兩塊磁盤同時失效也不會影響數據的使用。RAID 6至少需要4塊以上的磁盤。

wKioL1T1j_bj2DvSAAIaOzXpsro731.jpg

2、          混合RAID

2.1 JBOD

嚴格來講JBODJust a Bunch Of Disks)並不屬於RAID的等級,JBOD並沒有嚴格的規範,主要是用於實現將各個獨立的硬盤空間在邏輯上組合成一個大的硬盤。如果硬盤損毀,則存在上面的數據將無法救回。若第一塊硬盤損壞,將丟失所有的數據,危險程度與RAID 0相比有過之無不及。但是JBOD也有它的應用場景,例如hadoop就鼓勵使用JBOD,因爲Hadoop由自己的一套容災方案。

wKioL1T1j32RHgrAAAFQl-jX35s977.jpg

2.2 RAID 01

RAID 01RAID 0RAID 1的一種組合。主要實現方案是先將數據分成兩組,然後再對數據進行鏡像映射。即先實現RAID 0,再實現RAID 1

wKiom1T1jn2hsgUCAAGQxThRa80608.jpg

2.3 RAID 10

RAID 10RAID 01恰好相反,是先進行數據鏡像,然後纔對數據進行分組。

wKioL1T1j57TT2oiAAGGBEou6P4048.jpg

2.4 RAID 50

RAID 5RAID 0的結合,先作RAID 5,在作RAID 0,也就是對多組RAID 5構成條帶化的訪問。RAID 50RAID 5爲基礎,而RAID 5至少需要3塊硬盤,要以多組RAID 5構成RAID 50,因此RAID至少需要6塊硬盤。RAID 50在底層任意一組或多組RAID 5中出現一塊硬盤損壞時,仍然可以維持運作,不過任意一組同時出現兩塊硬盤損壞時,整組RAID 50就會失效。

wKiom1T1jpmhBISMAASjVZUlpGI603.jpg

通過Linux 實現軟RAID

Linux實現RAID主要是通過mdadm來實現。

mdadm屬於模式化的命令,主要模式有:

         創建模式

         管理模式

         監控模式

         增長模式

         裝配模式

mdadm的基本格式爲:

#mdadm [mode] <raiddevice> [options]<component-devices>

 

裝配模式RAID的選項有:

-l:指定RAID的級別;

-n:指定設備數,即磁盤的個數;

-a:自動爲其創建設備文件;

-c--chunk 指定分割數據塊的大小

1.       實現RAID 0

準備工作:

兩個1G大小的磁盤分區。

[root@local ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
mdadm: /dev/sdb1 appears to contain an ext2fs file system
    size=104388K  mtime=Thu Jan  1 08:00:00 1970
    Continue creating array? (y/n) y
爲其創建文件系統:
[root@local ~]# mke2fs -j /dev/md0
掛載文件系統:
[root@local mnt]# mount /dev/md0 /mnt/raid
查看掛載文件系統的信息:
[root@local mnt]# df -h
文件系統              容量  已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
                       18G  3.3G   14G  20% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                 252M     0  252M   0% /dev/shm
/dev/sr0              3.3G  3.3G     0 100% /mnt/cdrom
.host:/                56G   44G   12G  79% /mnt/hgfs
/dev/md0              1.9G   35M  1.8G   2% /mnt/raid
這裏顯示文件並沒有2G是正常顯現,因爲RAID本身也有一些元數據需要保存。

2.       實現RAID 1

準備工作:

         兩塊1G大小的磁盤分區。

[root@local ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{5,6}
查看狀態信息
[root@local ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] 
md1 : active raid1 sdb6[1] sdb5[0]
      987840 blocks [2/2] [UU]
      
md0 : active raid0 sdb2[1] sdb1[0]
      1975744 blocks 64k chunks
      
unused devices: <none>
創建文件系統
[root@local ~]# mke2fs -j /dev/md1
查看指定RAID設備的詳細信息
[root@local ~]# mdadm -D /dev/md1
/dev/md1:
        Version : 0.90
  Creation Time : Tue Mar  3 17:26:24 2015
     Raid Level : raid1
     Array Size : 987840 (964.85 MiB 1011.55 MB)
  Used Dev Size : 987840 (964.85 MiB 1011.55 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Tue Mar  3 17:30:22 2015
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : f6a3844f:282828af:45d573d8:5f0aa269
         Events : 0.4

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6

模擬一塊硬盤損壞(管理模式)
[root@local ~]# mdadm /dev/md1 --fail /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md1
移除損壞的硬盤:(-r = --remove)
[root@local ~]# mdadm /dev/md1 -r /dev/sdb5
mdadm: hot removed /dev/sdb5
更換新盤(和壞掉的盤的分區應保持一致)
[root@local ~]# mdadm /dev/md1 -a /dev/sdb7
mdadm: added /dev/sdb7
停止磁盤陣列
[root@local ~]# mdadm -S /dev/md1
mdadm: stopped /dev/md1
重新裝配磁盤陣列
[root@local ~]# mdadm -A --run /dev/md1 /dev/sdb5 /dev/sdb6
mdadm: /dev/md1 has been started with 1 drive (out of 2).
掃描磁盤陣列的信息,以後可以實現自動裝配:
[root@local ~]# mdadm -D --scan > /etc/mdadm.conf



3.       實現RAID 5

準備工作:

         3512M大小的磁盤

[root@local ~]# mdadm -C /dev/md5 -l5 -n3 /dev/sdb{8,9,10}


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