raid及mdadm

raid的作用主要是用來提高磁盤的讀寫速率和提高數據的容錯率。
常見的raid級別有:

    raid0,raid1,raid5,raid10等

raid0:

    理論上創建raid0至少需要兩塊盤,每一塊盤都用做讀寫數據,也就是說:一個數據會拆分成多個,分別寫入到每塊磁盤中,讀取數據的時候也會從每塊盤中讀取。優點:大大提高了數據的讀寫速率;缺點:容錯率很差,只要其中一個塊盤壞了,數據就不可用。
    raid0的磁盤利用率爲100%。
    另外在實際生產環境中一塊盤也能做raid0.

raid1:

    創建raid1需要兩塊盤,其中一塊盤作數據盤,用來存儲數據,另一塊爲鏡像盤,用來備份數據。優點:容錯率高,允許壞掉一塊盤,不會破壞數據,讀取速率比一塊盤要高;缺點:因爲一份數據要寫入兩塊盤,所以寫入數據速率低,另外成本高,磁盤的利用率只有50%。

raid5:

    創建raid5至少需要三塊盤,其中兩塊輪流作爲數據盤,用來存儲數據,另外一塊作爲校驗盤。優點:容錯率高,允許壞掉一塊盤,不會破壞數據,當其中一塊盤壞了之後,可通過校驗盤恢復破壞的數據,如果校驗盤壞了可通過兩塊盤的數據恢復校驗盤,讀寫性能略有提升;缺點成本較高,不能同時壞兩塊盤。磁盤利用率爲(n-1)/n
    raid6和raid5差不多,raid6至少需要4塊盤,兩塊做校驗盤。

raid10:
創建raid10至少需要四塊盤,先兩兩做成raid1再做成raid0;磁盤利用率爲1/2.
另外在生產環境中常用的還用一種jbod的直通模式,就是系統和磁盤直連,在做hadoop大數據中經常需要這種模式。
如,軟raid1創建:

    首先需要兩塊盤,這裏我創建兩個同樣大小的邏輯分區 sdb5和sdb6.
    之後將其格式化mkfs.ext4 /dev/sdb5,mkfs.ext4 /dev/sdb6
    使用mdadm模塊將其創建成raid1(如果沒有mdadm需要安裝)
    創建raid1: mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb5 /sdb6
            -C 創建,-a yes自動創建文件系統,-l raid級別,-n 磁盤數量
    查看raid1狀態:mdadm -D /dev/md0(-D 打印信息)
    [root@localhost ~]# mdadm -D /dev/md0 
/dev/md0:
                Version : 1.2
    Creation Time : Fri Aug 10 15:19:55 2018
         Raid Level : raid1
         Array Size : 521792 (509.65 MiB 534.32 MB)
    Used Dev Size : 521792 (509.65 MiB 534.32 MB)
     Raid Devices : 2
    Total Devices : 2
        Persistence : Superblock is persistent

        Update Time : Fri Aug 10 15:19:59 2018
                    State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
    Spare Devices : 0

                     Name : localhost.localdomain:0  (local to host localhost.localdomain)
                     UUID : fa32332d:ee855ef9:a94fe472:820b3fec
                 Events : 17

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

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdb6[1] sdb5[0]
            521792 blocks super 1.2 [2/2] [UU]

unused devices: <none>

我們知道raid1是有一塊備份盤的,允許破壞一塊盤而不破壞數據,現在模擬一下,使用watch命令來監控raid的狀態:watch -n 1 "cat /proc/mdstat" ,每隔一秒打印raid信息。
現在我們破壞其中一塊盤:

 mdadm /dev/md0 --fail /dev/sdb5可以看到其中一塊盤破壞了
 [root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdb6[1] sdb5[0](F)      #F fail表示破壞
            521792 blocks super 1.2 [2/1] [_U]    # 看到只有一個U up

unused devices: <none>
使用mdadm -D /dev/md0查看
    Number   Major   Minor   RaidDevice State
   0       0        0        0      removed
   1       8       22        1      active sync   /dev/sdb6

/dev/sdb5破壞後需要將其移除:mdadm /dev/md0 --remove /dev/sdb5
添加另一塊好的盤將raid1恢復:mdadm /dev/md0 --add /dev/sdb5,恢復後

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

停止raid:mdadm -S /dev/md0
啓動raid:mdadm -A /dev/md0 /dev/sdb5 /dev/sdb6

    如需自動裝配需要寫入配置文件:mdadm -D --scan > /etc/mdadm.conf

更多的參數使用man mdadm查看,另外軟raid在實際生產線上用的非常少,因爲一旦系統破壞磁盤的數據就毀了,所以一般使用硬raid。

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