RAID簡介與軟RAID實現

寫在前面:

    博客書寫牢記5W1H法則:What,Why,When,Where,Who,How。


本篇主要內容:

● RAID簡介及各RAID級別特點

● 軟RAID的創建使用


RAID簡介

   最早時候RAID爲Redundant Arrays of Inexpensive Disks,即廉價磁盤冗餘陣列;後將Inexpensive替換爲Independent,即獨立磁盤冗餘陣列。

   優勢:

      (1)易於靈活的進行容量擴展

      (2)“虛擬化”使可管理性極大的增強

      (3)“磁盤分塊”技術帶來性能提高

      (4)通過冗餘、熱備、熱換提高可靠性

   磁盤冗餘:

      (1)鏡像冗餘使用磁盤鏡像技術;

      (2)磁盤鏡像是一個簡單的設備虛擬化技術,每個I/O操作都會在兩個磁盤上執行;

      (3)磁盤冗餘可提高磁盤的讀性能

   校驗冗餘:

      (1)根據冗餘算法計算陣列中成員磁盤上數據校驗信息,將校驗信息保存在其他的磁盤資源上;

      (2)保證磁盤可靠性;

      (3)和鏡像冗餘比較,校驗冗餘的開銷更小

   異或算法(XOR);

      相同爲假,不同爲真

   特點:

      提高IO能力

         磁盤並行讀寫

      提高耐用性

         磁盤冗餘來實現

   級別:多塊磁盤組織在一起的工作方式不盡相同

   RAID的實現方式:

      (1)外接式磁盤陣列:通過擴展卡提供適配能力

      (2)內接式RAID:主板集成RAID控制器

      (3)Software RAID:消耗主機資源,IO大時嚴重影響主機性能。

   RAID級別:

      組成RAID陣列的不同方式,不同RAID級別:

         不同的存儲性能;

         不同的數據可靠性;

         不同的存儲成本

      RAID 0:條帶式數據分佈在各個磁盤上,strip

      RAID 1:以鏡像爲冗餘方式,mirror

      RAID 2:條帶海明碼奇偶校驗。校驗碼分佈在各個磁盤,提供錯誤檢查與恢復。很少用

      RAID 3:數據塊劃分爲更小的塊並行傳輸到各個成員磁盤,計算的XOR校驗放到專用校驗磁盤上。大量連續數據可提供很好速率,隨機數據,奇偶盤成爲瓶頸。

      RAID 4:以數據塊爲單位,其他與RAID3相同。數據恢復難度大,控制器難設計,不常用。

      RAID 5:獨立存取,校驗信息均勻分散到陣列的各個磁盤上

      RAID 10:先鏡像,再整體條帶

      RAID 50:先RAID5,再整體條帶

      補充:JBOD(Just a Bunch Of Disks)可實現多塊磁盤合併爲一個大的連續空間。

RAID級別RAID 0RAID 1RAID 3RAID 5RAID 10
別名條帶鏡像專用奇偶位條帶分佈奇偶位條帶鏡像陣列條帶
容錯性
冗餘類型
鏡像奇偶校驗奇偶校驗鏡像
備盤
讀性能較單盤略高
隨機寫性能低,叫單盤差不多最低,比單盤還低
連續寫
磁盤數2+2N,N>=13+3+2N,N>=2
可用容量全部N50%N-1
N-150%

   軟RAID實現

      mdadm(MD adm)

         manage MD devices aka Linux Software RAID

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

         -C, --create:創建模式

            -n #: 使用#個活動塊設備來創建此RAID;

            -l #:指明要創建的RAID的級別;

            -a {yes|no}:自動創建目標RAID設備的設備文件;

            -c CHUNK_SIZE: 指明塊大小;4K整數倍

            -x #: 指明空閒盤(替補盤)的個數;

         -D:顯示raid的詳細信息;

            mdadm -D /dev/md#

         -A, --assemble:裝配

         -F, --follow, --monitor:監控

         -S, --stop:停用MD設備,釋放所有磁盤

            mdadm -S /dev/md#

         管理模式

            -f, --force:標記指定磁盤爲壞

            -a, --add:添加磁盤

            -r, --remove:移除磁盤

            <raiddevice>: /dev/md#

            <component-devices>: 任意塊設備或分區

         觀察MD狀態:

            cat /proc/mdstat

   watch

      -n #:刷新間隔,單位爲秒

      watch -n# `COMMAND`


   實例:

  #創建5個100M大小的磁盤分區,修改分區類型爲fd(Linux raid auto)

[root@localhost ~]# fdisk /dev/sda
...省略步驟...記得修改分區類型爲fd
[root@localhost ~]# partx -a /dev/sda
[root@localhost ~]# fdisk -l /dev/sda
...省略部分輸出...看重點
/dev/sda5            8513        8526      112423+  fd  Linux raid autodetect
/dev/sda6            8527        8540      112423+  fd  Linux raid autodetect
/dev/sda7            8541        8554      112423+  fd  Linux raid autodetect
/dev/sda8            8555        8568      112423+  fd  Linux raid autodetect
/dev/sda9            8569        8582      112423+  fd  Linux raid autodetect

  #創建MD設備/dev/md0,其中4塊活動設備,RAID級別爲5,自動創建,tunck大小爲1M,1塊備用盤,使用/dev/sda5-9 5塊盤分區

[root@localhost ~]# mdadm -C /dev/md0 -n 4 -l 5 -a yes -c 1M  -x 1 /dev/sda{5,6,7,8,9}
mdadm: /dev/sda5 appears to contain an ext2fs file system
       size=5253220K  mtime=Tue Mar 15 13:50:48 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Mar 15 19:19:04 2016
     Raid Level : raid5
     Array Size : 328704 (321.05 MiB 336.59 MB)
  Used Dev Size : 109568 (107.02 MiB 112.20 MB)
   Raid Devices : 4
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Tue Mar 15 19:19:15 2016
          State : clean 
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 1024K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : b477152a:6867fa49:d72e3b5c:efbe2709
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        6        1      active sync   /dev/sda6
       2       8        7        2      active sync   /dev/sda7
       5       8        8        3      active sync   /dev/sda8

       4       8        9        -      spare   /dev/sda9

  #格式化並掛載使用,存入文件

[root@localhost ~]# mkfs.ext4 /dev/md0
...省略輸出...
[root@localhost ~]# mkdir /mnt/md0
[root@localhost ~]# mount /dev/md0 /mnt/md0
[root@localhost ~]# cd /mnt/md0
[root@localhost md0]# dd if=/dev/zero of=datafile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.287878 s, 364 MB/s
[root@localhost md0]# ls -l 
total 102413
-rw-r--r-- 1 root root 104857600 Mar 15 19:26 datafile
drwx------ 2 root root     12288 Mar 15 19:20 lost+found

  #查看可用空間:(4-1)*100M=300M

[root@localhost md0]# df -h /dev/md0
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        303M  103M  185M  36% /mnt/md0

  #制壞其中一塊活動設備,備用設備立即啓用。查看數據無損失

[root@localhost md0]# mdadm /dev/md0 -f /dev/sda8
mdadm: set /dev/sda8 faulty in /dev/md0
[root@localhost md0]# mdadm -D /dev/md0
...省略部分輸出...
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 1
  Spare Devices : 0
  ...省略部分輸出...
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        6        1      active sync   /dev/sda6
       2       8        7        2      active sync   /dev/sda7
       4       8        9        3      active sync   /dev/sda9

       5       8        8        -      faulty   /dev/sda8
[root@localhost md0]# ls -lh
total 101M
-rw-r--r-- 1 root root 100M Mar 15 19:26 datafile
drwx------ 2 root root  12K Mar 15 19:20 lost+found

  #繼續制壞

[root@localhost md0]# mdadm /dev/md0 -f /dev/sda9
mdadm: set /dev/sda9 faulty in /dev/md0
[root@localhost md0]# mdadm -D /dev/md0
...省略部分輸出...狀態變成了clean,degraded
          State : clean, degraded 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 2
  Spare Devices : 0
...省略部分輸出...
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        6        1      active sync   /dev/sda6
       2       8        7        2      active sync   /dev/sda7
       6       0        0        6      removed

       4       8        9        -      faulty   /dev/sda9
       5       8        8        -      faulty   /dev/sda8

  #移除制壞的設備

[root@localhost md0]# mdadm  /dev/md0 -r /dev/sda9
mdadm: hot removed /dev/sda9 from /dev/md0
[root@localhost md0]# mdadm  /dev/md0 -r /dev/sda8
mdadm: hot removed /dev/sda8 from /dev/md0
[root@localhost md0]# mdadm -D /dev/md0
...省略部分輸出...
          State : clean, degraded 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0
...省略部分輸出...
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        6        1      active sync   /dev/sda6
       2       8        7        2      active sync   /dev/sda7
       6       0        0        6      removed

  #做數據改動

[root@localhost md0]# dd if=/dev/zero of=datafile2 bs=1M count=80
80+0 records in
80+0 records out
83886080 bytes (84 MB) copied, 0.1969 s, 426 MB/s
[root@localhost md0]# ls -lh
total 181M
-rw-r--r-- 1 root root 100M Mar 15 19:26 datafile
-rw-r--r-- 1 root root  80M Mar 15 19:41 datafile2
drwx------ 2 root root  12K Mar 15 19:20 lost+found

  #模擬添加新硬盤,查看同步狀態

[root@localhost md0]# mdadm /dev/md0 -a /dev/sda9
mdadm: added /dev/sda9
[root@localhost md0]# mdadm /dev/md0 -a /dev/sda8
mdadm: added /dev/sda8
[root@localhost md0]# mdadm -D /dev/md0
...省略部分輸出...狀態變成了clean, degraded, recovering
          State : clean, degraded, recovering 
 Active Devices : 3
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 2
...省略部分輸出...
 Rebuild Status : 72% complete
...省略部分輸出...
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        6        1      active sync   /dev/sda6
       2       8        7        2      active sync   /dev/sda7
       4       8        9        3      spare rebuilding   /dev/sda9

       5       8        8        -      spare   /dev/sda8

  #稍後片刻,同步數據完成

[root@localhost md0]# mdadm -D /dev/md0
...省略部分輸出...
          State : clean 
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1
...省略部分輸出...
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        6        1      active sync   /dev/sda6
       2       8        7        2      active sync   /dev/sda7
       4       8        9        3      active sync   /dev/sda9

       5       8        8        -      spare   /dev/sda8

  #實驗完成,打掃戰場。/dev/md0會自動消失的

[root@localhost ~]# umount /dev/md0
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0

  #如果後悔了,現在還能裝載回來

[root@localhost ~]# mdadm -A /dev/md0 /dev/sda{5..9}
mdadm: /dev/md0 has been started with 4 drives and 1 spare.
[root@localhost ~]# mount /dev/md0 /mnt/md0
[root@localhost ~]# ls /mnt/md0
datafile  datafile2  lost+found


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