基於軟件的方式實現RAID(冗餘磁盤陣列)技術

        在摘要部分已經對raid進行了簡單的介紹,而在實際生產中主要用的即是軟件RAID和硬件RAID,同時因爲硬件RAID的價錢比較貴,於是,愈來愈多的人使用軟件RAID來構建企業的一套存儲方案。那麼,使用RAID的最大好處是什麼呢?哈哈,固然就是省錢了啊,同時RAID技術具備如下優勢:node

        提升傳輸速率。RAID經過在多個磁盤上同時存儲和讀取數據來大幅提升存儲系統的數據吞吐量(Throughput)。在RAID中,可讓不少磁盤驅動器同時傳輸數據,而這些磁盤驅動器在邏輯上又是一個磁盤驅動器,因此使用RAID能夠達到單個磁盤驅動器幾倍、幾十倍甚至上百倍的速率。vim

        經過數據校驗提供容錯功能。普通磁盤驅動器沒法提供容錯功能,若是不包括寫在磁盤上的CRC(循環冗餘校驗)碼的話。RAID容錯是創建在每一個磁盤驅動器的硬件容錯功能之上的,因此它提供更高的安全性。在不少RAID模式中都有較爲完備的相互校驗/恢復的措施,甚至是直接相互的鏡像備份,從而大大提升了RAID系統的容錯度,提升了系統的穩定冗餘性。
安全

簡單介紹如下經常使用的幾種RAID模式:工具

RAID0:磁盤分條技術,效率最高至少一塊硬盤。只須要2塊以上的硬盤便可,成本低,能夠提升整個磁盤的性能和吞吐量。RAID 0沒有提供冗餘或錯誤修復能力,實現交叉複製,總容量是全部磁盤的綜合。可是缺點也很致命,即若是任何一塊硬盤損壞,數據就很難恢復。性能

RAID1:磁盤鏡像技術,最少兩塊硬盤。原理是把一個磁盤的數據鏡像到另外一個磁盤上,也就是說數據在寫入一塊磁盤的同時,會在另外一塊閒置的磁盤上生成鏡像文件,在不影響性能狀況下最大限度的保證 系統的可靠性和可修復性上,只要系統中任何一對鏡像盤中至少有一塊磁盤可使用,甚至能夠在一半數量的硬盤出現問題時系統均可以正常運行,當一塊硬盤失效 時,系統會忽略該硬盤,轉而使用剩餘的鏡像盤讀寫數據,具有很好的磁盤冗餘能力。安全性最高,可是磁盤利用率僅有50%,也就是說涼快硬盤,實際只有一塊的容量。ui

RAID5:一種帶校驗的磁盤分條技術,爲系統提供數據安全保障,最少須要三塊硬盤,能夠支持一塊磁盤損壞。RAID 5具備和RAID 0相近似的數據讀取速度,只是多了一個奇偶校驗信息,寫入數據的速度比對單個磁盤進行寫入操做稍慢。同時因爲多個數據對應一個奇偶校驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較低,是目前運用較多的一種解決方案。spa

                                        RAID5原理圖
rem

同時基於RAID0和RAID1的優缺點,常常會有人講兩個結合使用,成爲RAID0+1或者RAID1+0(至少四塊硬盤),既能知足磁盤的讀寫性能,又能保障數據的可靠性。在這裏很少介紹,感興趣的能夠下去本身多多瞭解。it






接下來將在試驗環境下構建RAID5存儲方案:io

環境:Centos 6.5

軟件環境:mdadm

#yum install mdadm -y

要求:利用四塊分區作成RAID5
         每一個分區1G,最好每一個分區同樣大
        使用一塊分區做爲spare disk,且大小與其餘同樣,做爲備用磁盤
         將此RAID5設備掛載到/mnt/raid下

1.使用fdisk工具準備5個1G的分區

#fdisk -cu /dev/sdb

# cat /proc/partitions

  8       21    1048576 sdb5
   8       22    1048576 sdb6
   8       23    1048576 sdb7
   8       24    1048576 sdb8
   8       25    1048576 sdb9

2.建立raid磁盤陣列

 # mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sdb{5,6,7,8,9}

--create表示建立raid   --auto 決定建立後面接的軟件磁盤陣列設備/dev/md0  --leavel表示raid的等級,這裏使用raid5

--raid-devices表示使用的磁盤個數  --spare-devices表示使用備用磁盤個數 而且指定那些磁盤分區

3.查看建立好的設備

# mdadm --detail /dev/md0                         查看raid設備信息
/dev/md0:                                                    設備名稱
        Version : 1.2
  Creation Time : Fri Jul 18 03:41:56 2014      建立日期
     Raid Level : raid5                                        raid等級
     Array Size : 3142656 (3.00 GiB 3.22 GB)    可用容量
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)    每一個磁盤的容量
   Raid Devices : 4                                              四塊raid設備
  Total Devices : 5                                                總共五塊設備(一塊在作備份用哦)
    Persistence : Superblock is persistent
    Update Time : Fri Jul 18 03:42:04 2014
          State : clean
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1                                            一塊做爲備份磁盤
         Layout : left-symmetric
     Chunk Size : 512K
           Name : node1.example.com:0  (local to host node1.example.com)
           UUID : 69e94971:195da1d1:ac94ce25:d330e237        raid的uuid
         Events : 18
    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       2       8       23        2      active sync   /dev/sdb7
       5       8       24        3      active sync   /dev/sdb8
       4       8       25        -      spare   /dev/sdb9

從上面的信息能夠看出來,激活的磁盤爲/dev/sdb5-8.  /dev/sdb9爲備份磁盤

# cat /proc/mdstat         查看raid狀態信息
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb8[5] sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]
      3142656 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

sdb9後面的s表示此磁盤用做spare
第二行代表有3142656個block,每一個block單位爲1k。寫入磁盤的小區塊(chunk)大小爲512k   [m/n]表示須要m個磁盤,n個盤正常運行   U表明正常,-表明不正常

4.掛載使用raid

#mkfs.ext4 /dev/md0
#mkdir /mnt/raid
#mount /dev/md0 /mnt/raid/

raid5設備/dev/md0如今能夠正式使用咯!


RAID的錯誤救援模式:

試想,生產環境中誰也沒法預料硬盤的損壞,若是忽然損壞,咱們應該怎麼辦呢?不用着急,接下來繼續講講!

假如/dev/sdb8磁盤壞了,查看磁盤陣列信息,/dev/sdb9備用磁盤會自動替換
[root@node1 ~]# mdadm --manage /dev/md0 --fail /dev/sdb8          模擬磁盤錯誤
mdadm: set /dev/sdb8 faulty in /dev/md0
[root@node1 ~]# mdadm --detail /dev/md0                                         查看raid設備發現備用/dev/sdb9自動替換工做了
。。。。。。。。。。。。。。。。省略
    Update Time : Fri Jul 18 03:56:19 2014
          State : clean
 Active Devices : 4
Working Devices : 4                                                 壞了一個磁盤,可是工做設備仍然4個
 Failed Devices : 1         
                                           顯示一個設備壞了哦
  Spare Devices : 0

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       2       8       23        2      active sync   /dev/sdb7
       4       8       25        3      active sync   /dev/sdb9
       5       8       24        -      faulty spare   /dev/sdb8

那麼爲了保證真個raid存儲的安全性,咱們須要從新新建分區,做爲新的spare分區。

仍然使用fdisk工具建立1G分區/dev/sdb10

1.增長一個磁盤設備,將損壞的設備移除,就能夠直接拔掉硬盤了(注意,要支持熱插拔哦)

[root@node1 ~]# mdadm --manage /dev/md0  --add /dev/sdb10 --remove /dev/sdb8
mdadm: added /dev/sdb10
mdadm: hot removed /dev/sdb8 from /dev/md0
從新查看raid設備信息,發現/dev/sdb10變成了備用磁盤了,/dev/sdb8刪除了

如今,咱們又能保障咱們的RAID設備健壯的運行了。

2.設置RAID設備開機自動掛載

#mdadm --detail /dev/md0 | grep UUID            查看/dev/md0磁盤設備的UUID
#vim /etc/mdadm.conf   

(ARRAY /dev/md0  UUID=69e94971:195da1d1:ac94ce25:d330e237)
#vim /etc/fstab        

(/dev/md0  /mnt/raid ext4 defaults  1 2 )
#mount -a         從新掛載分區

這樣,一個RAID5設備就徹底構建好了!


注意:文章內容使用虛擬環境分區來模擬真實硬盤構建RAID,所以和生產環境有必定出入,但願你們可以適當借鑑。


相關文章
相關標籤/搜索