天天看點

rhel6.5常見的軟體RAID陣列建立

  • RAID(Redundant Array of Independent Disk)

    ,經常被翻譯為連結磁盤備援陣列,最早的思想是用來組合小磁盤,代替大容量的磁盤,并且盡量的提供磁盤備援能力,提供磁盤在硬體損毀時,提供對于資料一定的備援能力;
  • 這裡通過軟體來實作

    RAID

    陣列,軟體

    RAID

    和硬體

    RAID

    的性能相差特别大,但是可以通過軟體

    RAID

    來了解

    RAID

    的特性
  • RAID

    的幾種技術:
    • 條帶化技術:如何将資料分散存儲在多塊盤上面,将資料按照一定的大小劃分稱為一定的數量然後将這些劃分好的資料按照一定的位置進行存放;
    • 磁盤鏡像化技術:用于實作将資料劃分成為相同的幾份;
    • 檢驗碼技術:資料在進行條帶化的存儲的時候,将等長的資料,計算校驗碼的值,用于在資料出錯時,進行資料的檢錯和恢複;校驗技術例如奇偶校驗;
  • RAID陣列的級别
  • 級别僅僅是不同的功能的劃分,和性能等無關
  • RAID 0

    :
  • 僅僅使用條帶化技術,可以改善資料的存入和讀取性能,但是不提供資料的備援能力,至少需要兩塊磁盤來建構

    RAID 0

    陣列
    rhel6.5常見的軟體RAID陣列建立
  • RAID 1

    :
  • 僅僅使用鏡像技術,寫性能提升,讀性能提升,寫性能下降,存在備援能力,磁盤使用率為

    1/2

    ,至少需要兩塊磁盤;
    rhel6.5常見的軟體RAID陣列建立
  • RAID 2

    :
  • 使用漢明碼的方式将需要存儲的資料進行編碼,并且使用條帶化技術進行存儲,在進行資料讀取時,要求具有共軸同步技術,對于大檔案讀取性能優秀,對于小檔案,頻繁的讀取不足一個扇區的資料,導緻性能下降,較少應用于

    PC

    機等小檔案操作頻繁的技術;
  • `RAID 3

    :
  • 使用條帶化和校驗碼技術,通過條帶化技術将原始資料劃分成為兩份,分别存儲在不同磁盤上面相同位置,并且根據校驗碼技術計算出校驗和,将校驗和儲存在獨立的第三塊磁盤上面,通過這種技術,磁盤保證了資料的讀取和寫入性能,并且資料具有一定的備援能力,資料的校驗以及恢複能力有限,僅僅允許單塊磁盤出錯,否則資料無法進行恢複;磁盤的使用率為

    n-1/n

    ;
    rhel6.5常見的軟體RAID陣列建立
  • RAID 4

    :
  • 是一種類似于

    RAID 3

    的技術,

    RAID 3

    實作的是按位進行資料的存儲,讀取以及計算校驗碼,

    RAID 4

    實作的是按照一定的資料塊來進行資料的讀取和存儲,并且計算出校驗碼,以及保證資料塊的完整性,不被條帶化技術影響;
  • RAID 5

    :
  • 是對于

    RAID 3

    的一種改進,将資料的校驗盤的值,存儲在不同的磁盤上面,也就是打亂資料存儲和校驗碼存儲,解決了校驗碼盤存儲錯誤的導緻資料校驗無法完成的缺點,至少需要三塊磁盤,磁盤的利用空間為

    n-1/n

    ;
    rhel6.5常見的軟體RAID陣列建立
  • 常見的RAID陣列
  • RAID

    陣列隻是對于上述不同

    RAID

    進行的組合,為了應對不同的業務場景,組合出不同的

    RAID

    場景;
  • RAID 0+1

  • 表示的含義是首先進行條帶化,然後進行鏡像化;适合于對屬于安全性要求較高場景,并且首先進行條帶化,資料的寫入速度高,可以保證資料的及時寫入,可以同時保證資料的安全性和資料的寫入性能;
  • RAID 1+0

    :
  • 表示的含義是首先進行鏡像化,其次進行條帶化;資料的安全性好,隻需要保證鏡像化的資料不會同時損壞相同的部分,但是資料的寫入性能稍差;
  • RAID 5+0

    :
  • 表示首先進行的是奇偶校驗,并且将校驗的值和原始資料打亂,然後對這些資料進行條帶化,存儲在不同的磁盤上面,這種情況可以應用于對于資料的恢複以及資料的寫入要求比較高的場景;
  • jbod

    :
  • 這個是名副其實的用來将多個小盤整合成為一個大空間的磁盤來使用的軟體,不提供備援能力,空間使用率高,因為這個軟體就是用來提高空間使用率的,通常至少需要兩塊磁盤
  • raid

    陣列的實作:
    • 首先需要核心支援

      RAID

      多陣列裝置,在核心中有一個

      multi disks

      子產品用于對多裝置的支援,首先需要模拟出一個邏輯

      RAID

      裝置,裝置檔案通常是

      /dev/md0

      ,

      /dev/md5

      等根據識别順序命名,應用程式提請資料請求,将請求發送給核心,核心送出給

      md

      裝置,再通過

      md

      裝置完成資料在真實硬碟上資料的存儲;,
  • 核心的需要

    md

    子產品完成這樣的轉換,但是如果作業系統崩潰,核心功能喪失,是以需要 md 子產品會将磁盤設别标記為核心可以識别的

    fd

    類型,并且子產品會存儲一些中繼資料用于來識别 RAID 陣列;
  • 常見的RAID類型
  • 硬體實作的方式,這種方式實作的

    RAID

    陣列一點都不廉價,但是性能優異,并且為穩定;

    RAID

    晶片是十分昂貴的,

    RAID

    自帶

    CPU

    以及記憶體,緩存等裝置,設定提供電池,這些特性都是用來保證資料的安全性的,是以價格也就不會低了;
  • 軟體實作方式:這種方式僅僅用來示範

    RAID

    的特性,軟體

    RAID

    的實作需要滿足以下要求:
    • 1.首先核心需要支援軟體

      RAID

      ,軟體

      RAID

      的實作是核心的

      md(multi disks)

      ;
    • 2.核心需要模拟出一個軟體邏輯RAID,提供裝置檔案

      /dev/md#

      ;
    • 3.存儲資料資料時,請求不再交給

      sda

      裝置,而是交給核心

      md

      子產品;
    • 4.該子產品完成資料的存儲;
  • md

    子產品:
    • 1.根據指定配置将指定的硬碟配置稱為

      RAID

      裝置,軟體

      RAID

      的性能,取決于

      CPU

      的能力,硬碟的能力;
    • 2.對于

      RAID

      底下的磁盤子產品必須标記為核心可以識别的子產品,這是為了防止作業系統崩潰之後資料被按照普通的資料格式進行讀取,是以對于

      RAID

      的磁盤需要标記為核心可以識别為

      RAID

      陣列的類型稱為

      fd

      類型;
    • 3.在

      RAID

      的磁盤上面存儲的一些中繼資料,用來在作業系統重裝時,用來識别

      RAID

      陣列;
  • RAID

    陣列的管理工具:
  • mdadm

    :
    • 建立模式:
      • -C[大寫]

        :
        • -l

          :指定

          RAID

          陣列的級别;
        • -n

          :裝置的個數;
        • -a yes | no

          :自動為其建立裝置檔案;
        • -c[小寫]

          :指定

          chunk

          的大小,表示資料塊的大小;
        • -x

          :表示用于指定空閑盤的個數,

          n+x=

          你所提供的裝置數;
    • 管理模式:
      • -add

        :用于添加陣列中的磁盤;
      • --remove

        :用于移除陣列中的磁盤;
      • -fail

        :用于模拟損壞某個磁盤;
      • mdadm /dev/md# --fail /dev/vdb3

        :模拟這個陣列的

        vdb3

        損壞;
      • -S | --stop /dev/md#

        :用于停止某個陣列;
    • 監控模式:
      • -F

        :用于設定監控模式,也就是陣列出現問題的告警方式,常見的有

        mail program

        等等;
      • -D /dev/md#

        :

        Print details of one or more md devices

        ,這裡必須指定陣列,而不是具體的磁盤裝置;
    • 裝配模式:
      • -A

        :表示用于裝配一個已經存在的陣列;
    • mdadm --detail --scan > /etc/mdadm.conf

      :表示用于設定配置檔案;
  • 删除陣列的正确方式,首先應該停止陣列,然後進行删除;
  • mdadm -S /dev/md#

  • rm /dev/md#

  • 掃描模式常常用來制作配置檔案;
  • 1.

    mdadm –D –scan > /etc/mdadm.conf

    ;
  • 2.啟動時,

    mdadm –A /dev/md1

    可以重新自動進行裝配,不需要手動的配置;
  • 建立RAID
  • 建立

    RAID 0

    :
  • 1.建立一個

    2G

    RAID 0

    也就是需要使用至少兩塊

    1G

    的磁盤或者分區;
Disk identifier: 

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1                            +    Linux
/dev/vdb2                              Linux
           
  • 這裡還需要調整類型
Device Boot      Start         End      Blocks   Id  System
/dev/vdb1                            +  fd  Linux raid autodetect
/dev/vdb2                            fd  Linux raid autodetect

           
  • 然後通知核心進行調整
[root@server23 ~]# partx /dev/vdb
# 1:        63-  2098655 (  2098593 sectors,   1074 MB)
# 2:   2098656-  4197311 (  2098656 sectors,   1074 MB)
           
  • 接下來的操作可能需要安裝

    mdadm-3.2.6-7.el6.x86_64

    ,來提供

    mdadm

    指令
[[email protected] ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/vdb{1,2}
mdadm: Defaulting to version  metadata
mdadm: array /dev/md0 started.
           
  • 如果出現了以下錯誤
[[email protected] ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/vdb{1,2}
mdadm: /dev/vdb1 appears to contain an ext2fs file system
    size=K  mtime=Mon Jan  :: 
mdadm: super1.x cannot open /dev/vdb2: Device or resource busy
mdadm: /dev/vdb2 is not suitable for this array.
mdadm: create aborted
           
  • 是因為之前的進行過格式化操作,已經存在檔案系統,可以删除這個分區,之後,重新進行建立;
  • 如果正常,執行下面的指令來檢視建立的

    RAID

    裝置
[root@server23 ~]# cat /proc/mdstat 
Personalities : [raid] 
md : active raid vdb2[] vdb1[]
       blocks super  k chunks

unused devices: <none>
           
  • 裝置狀态是正常的,是以可以進行格式化這個裝置
[[email protected] ~]# mke2fs -j /dev/md0 
mke2fs  (-May-)
warning:  blocks unused.

Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
First data block=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks: 
    , , , , 

Writing inode tables: done                            
Creating journal ( blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every  mounts or
 days, whichever comes first.  Use tune2fs -c or -i to override.
           
  • 接下來可以将這個目錄挂載到本地,然後進行使用
[root@server23 ~]# mount /dev/md0 /mnt/md0/
[root@server23 md0]# df
Filesystem                   K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root   7853764 1262644   6192172  17% /
tmpfs                                         % /dev/shm
/dev/vda1                                 % /boot
/dev/md0                                % /mnt/md0
           
  • 使用監控模式來檢視

    RAID

    陣列的使用情況
[[email protected] ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 
  Creation Time : Thu Apr  :: 
     Raid Level : raid0
     Array Size :  ( GiB  GB)
   Raid Devices : 
  Total Devices : 
    Persistence : Superblock is persistent

    Update Time : Thu Apr  :: 
          State : clean 
 Active Devices : 
Working Devices : 
 Failed Devices : 
  Spare Devices : 

     Chunk Size : K

           Name : server23.com:  (local to host server23.com)
           UUID : db67d3:a553f8b3:a30596f5:d12598ea
         Events : 

    Number   Major   Minor   RaidDevice State
                                 active sync   /dev/vdb1
                                 active sync   /dev/vdb2
           
  • RAID 0

    僅僅是條帶化技術,是以任何一塊磁盤出現損壞,資料都無法進行通路;
  • 接下來實作

    RAID 1

  • 建立一個

    1G

    RAID 1

    ,這裡需要兩個相同的

    RAID

    磁盤,使用兩個

    1G

    的分區,并且調整類型
Disk identifier: 

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1                            +  fd  Linux raid autodetect
/dev/vdb2                            fd  Linux raid autodetect
           
  • 通知核心重讀分區表
[[email protected] mnt]# partx /dev/vdb
# 1:        63-  2098655 (  2098593 sectors,   1074 MB)
# 2:   2098656-  4197311 (  2098656 sectors,   1074 MB)
# 3:         0-       -1 (        0 sectors,      0 MB)
# 4:         0-       -1 (        0 sectors,      0 MB)
           
  • 接下來建立

    RAID 1

  • 如果在分區的過程中出現這個錯誤:
WARNING: Re-reading the partition table failed with error : Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe() or kpartx()
Syncing disks.
           
  • 使用指令讀取新的分區表,會失敗,
[[email protected] mnt]# partprobe /dev/vdb
Warning: WARNING: the kernel failed to re-read the partition table on /dev/vdb (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
           
  • 然後劃分新的分區,并且調整類型
Disk identifier: 

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1                            +  fd  Linux raid autodetect
/dev/vdb2                            fd  Linux raid autodetect
[[email protected] ~]# partx /dev/vdb
# 1:        63-  2098655 (  2098593 sectors,   1074 MB)
# 2:   2098656-  4197311 (  2098656 sectors,   1074 MB)
# 3:         0-       -1 (        0 sectors,      0 MB)
# 4:         0-       -1 (        0 sectors,      0 MB)
           
  • 接下來需要建立

    RAID 1

[[email protected] ~]# mdadm -C /dev/md1 -a yes -n  -l  /dev/vdb1 /dev/vdb2 
mdadm: /dev/vdb1 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=
mdadm: /dev/vdb2 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
Continue creating array? y
mdadm: Defaulting to version  metadata
mdadm: array /dev/md1 started.
           
  • 可以檢視兩個磁盤在第一次進行鏡像的狀态
[root@server23 ~]# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md1 : active raid1 vdb2[] vdb1[]
       blocks super  [/] [UU]
      [========>............]  resync = % (/) finish=min speed=K/sec

unused devices: <none>
[root@server23 ~]# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md1 : active raid1 vdb2[] vdb1[]
       blocks super  [/] [UU]
      [===========>.........]  resync = % (/) finish=min speed=K/sec

unused devices: <none>
           
  • 接下來進行格式化操作
[[email protected] ~]# mke2fs -j /dev/md1 
mke2fs  (-May-)
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
First data block=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks: 
    , , , 
           
  • 接下來可以模拟損壞一塊的磁盤,并且移除這個損壞的磁盤
[[email protected] ~]# mdadm /dev/md1 -f /dev/vdb1 
mdadm: set /dev/vdb1 faulty in /dev/md1
[[email protected] ~]# mdadm /dev/md1 --remove /dev/vdb1 
mdadm: hot removed /dev/vdb1 from /dev/md1
           
  • 為了完成鏡像,這裡還需要添加一塊磁盤,這裡的話,可以将移除的磁盤添加回來
[root@server23 ~]# mdadm /dev/md1 --add /dev/vdb1 
mdadm: added /dev/vdb1
           
  • 添加磁盤之後,還需要進行新的同步
[[email protected] ~]# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md1 : active raid1 vdb1[] vdb2[]
      1048256 blocks super 1.2 [/] [_U]
      [=====>...............]  recovery = 25.0% (262144/1048256) finish=0.4min speed=26214K/sec

unused devices: <none>
           
  • 檢視配置的

    RAID 1

    的狀态
[[email protected] ~]# mdadm -D /dev/md1 
/dev/md1:
        Version : 
  Creation Time : Thu Apr  :: 
     Raid Level : raid1
     Array Size :  ( MiB  MB)
  Used Dev Size :  ( MiB  MB)
   Raid Devices : 
  Total Devices : 
    Persistence : Superblock is persistent

    Update Time : Thu Apr  :: 
          State : clean 
 Active Devices : 
Working Devices : 
 Failed Devices : 
  Spare Devices : 

           Name : server23.com:  (local to host server23.com)
           UUID : aef4598c:b80129e:d946b8:c9f2a851
         Events : 

    Number   Major   Minor   RaidDevice State
                                 active sync   /dev/vdb1
                                 active sync   /dev/vdb2
           
  • 接下來如何停止一個陣列:
  • 首先需要解除安裝存在的挂載
[root@server23 ~]# umount /mnt/md1/
[root@server23 ~]# df
Filesystem                   K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root   7853764 1266712   6188104  17% /
tmpfs                                         % /dev/shm
/dev/vda1                                 % /boot
           
  • 接下來停止

    RAID

    服務
  • 然後删除

    RAID

    的裝置檔案
  • 然後可以看到
[root@server23 ~]# cat /proc/mdstat 
Personalities : [raid] [raid1] 
unused devices: <none>
           
  • 接下來嘗試配置使磁盤具有熱切換
    這裡需要提供三塊磁盤,使用

    RAID 1

    來進行實驗
  • 首先需要準備三塊分區
Device Boot      Start         End      Blocks   Id  System
/dev/vdb1                            +  fd  Linux raid autodetect
/dev/vdb2                            fd  Linux raid autodetect
/dev/vdb3                            fd  Linux raid autodetect
           
  • 接下來建立

    RAID

    陣列,使得兩塊磁盤線上,一塊磁盤作為熱備份,必要時,進行快速切換
  • 因為這裡使用的分區存在前面的

    RAID

    陣列的一些中繼資料等資訊,是以會有下面的提示
[[email protected] ~]# mdadm -C /dev/md2 -l  -n  -x  /dev/vdb1 /dev/vdb2 /dev/vdb3 
mdadm: /dev/vdb1 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=
mdadm: /dev/vdb2 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
Continue creating array? y
mdadm: Defaulting to version  metadata
mdadm: array /dev/md2 started.
           
  • 接下來進行格式化操作
[[email protected] ~]# mke2fs -j /dev/md2 
mke2fs  (-May-)
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
First data block=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks: 
    , , , 
Writing inode tables: done                            
Creating journal ( blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every  mounts or
 days, whichever comes first.  Use tune2fs -c or -i to override.
           
  • 然後可以進行挂載
  • 複制檔案,并且檢視

    RAID

    的狀态
[[email protected] md2]# cp /etc/passwd .
[[email protected] md2]# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md2 : active raid1 vdb3[2](S) vdb2[1] vdb1[0]
      1048256 blocks super 1.2 [2/2] [UU]

unused devices: <none>
           
  • 使用管理類指令檢視具體的狀态
[[email protected] md2]# mdadm -D /dev/md2 
/dev/md2:
        Version : 
  Creation Time : Thu Apr  :: 
     Raid Level : raid1
     Array Size :  ( MiB  MB)
  Used Dev Size :  ( MiB  MB)
   Raid Devices : 
  Total Devices : 
    Persistence : Superblock is persistent

    Update Time : Thu Apr  :: 
          State : clean 
 Active Devices : 
Working Devices : 
 Failed Devices : 
  Spare Devices : 

           Name : server23.com:  (local to host server23.com)
           UUID : a7:c1a9cdd8:ce7:be630d
         Events : 

    Number   Major   Minor   RaidDevice State
                                 active sync   /dev/vdb1
                                 active sync   /dev/vdb2

                           -      spare   /dev/vdb3
           
  • 接下來模拟一塊磁盤的損壞,檢視空閑磁盤是否會自動頂替
[[email protected] md2]# mdadm /dev/md2 --fail /dev/vdb1 
mdadm: set /dev/vdb1 faulty in /dev/md2
           
  • 檢視磁盤切換的狀态
[[email protected] md2]# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md2 : active raid1 vdb3[2] vdb2[1] vdb1[0](F)
      1048256 blocks super 1.2 [2/1] [_U]
      [======>..............]  recovery = 31.2% (327680/1048256) finish=0.4min speed=25206K/sec

unused devices: <none>
           
  • 檢視相信的資訊,已經正常的進行了切換
[[email protected] md2]# mdadm -D /dev/md2 
/dev/md2:
        Version : 
  Creation Time : Thu Apr  :: 
     Raid Level : raid1
     Array Size :  ( MiB  MB)
  Used Dev Size :  ( MiB  MB)
   Raid Devices : 
  Total Devices : 
    Persistence : Superblock is persistent

    Update Time : Thu Apr  :: 
          State : clean 
 Active Devices : 
Working Devices : 
 Failed Devices : 
  Spare Devices : 

           Name : server23.com:  (local to host server23.com)
           UUID : a7:c1a9cdd8:ce7:be630d
         Events : 

    Number   Major   Minor   RaidDevice State
                                 active sync   /dev/vdb3
                                 active sync   /dev/vdb2

                           -      faulty   /dev/vdb1
           
  • 通過上述配置檔案的對比,發現已經進行了切換
  • 對于這種出現故障的磁盤,應該及時的移除,然後重新添加新的磁盤,用于建構備援磁盤
[[email protected] md2]# mdadm /dev/md2 --remove /dev/vdb1 
mdadm: hot removed /dev/vdb1 from /dev/md2
           
  • 這裡還是将上面模拟損壞的分區添加回去
[root@server23 md2]# mdadm /dev/md2 --add /dev/vdb1 
mdadm: added /dev/vdb1
           
  • 對于

    RAID

    的資訊如果需要儲存為配置檔案需要執行
[[email protected] md2]# mdadm --detail --scan
ARRAY /dev/md2 metadata=1.2 spares=1 name=server23.com:2 UUID=567843a7:c1a9cdd8:08175ce7:12be630d
           
  • 将上面的輸出資訊重定向為

    /etc/mdadm.conf

    ;
  • 通過查詢

    mdadm

    的手冊,發現
Currently, Linux supports LINEAR md devices,  RAID0  (striping),  RAID1
       (mirroring),  RAID4,  RAID5, RAID6, RAID10, MULTIPATH, FAULTY, and CONTAINER.
           
  • 接下來實作的上面支援的

    RAID 5

    ,并且提供備援磁盤,
Device Boot      Start         End      Blocks   Id  System
/dev/vdb1                            +  fd  Linux raid autodetect
/dev/vdb2                            fd  Linux raid autodetect
/dev/vdb3                            fd  Linux raid autodetect
/dev/vdc1                            +  fd  Linux raid autodetect
           
  • 接下來建立

    RAID 5

    磁盤
[[email protected] mnt]# mdadm -C /dev/md3 -l  -n  -x  /dev/vdb1 /dev/vdb2 /dev/vdb3 /dev/vdc1 
mdadm: /dev/vdb1 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=
mdadm: /dev/vdb2 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
mdadm: /dev/vdb3 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
Continue creating array? y
mdadm: Defaulting to version  metadata
mdadm: array /dev/md3 started.
           
  • 檢視

    RAID 5

    陣列的狀态
[[email protected] mnt]# mdadm -D /dev/md3 
/dev/md3:
        Version : 
  Creation Time : Thu Apr  :: 
     Raid Level : raid1
     Array Size :  ( MiB  MB)
  Used Dev Size :  ( MiB  MB)
   Raid Devices : 
  Total Devices : 
    Persistence : Superblock is persistent

    Update Time : Thu Apr  :: 
          State : clean 
 Active Devices : 
Working Devices : 
 Failed Devices : 
  Spare Devices : 

           Name : server23.com:  (local to host server23.com)
           UUID : b58543b:fe2cf1::e600eeff
         Events : 

    Number   Major   Minor   RaidDevice State
                                 active sync   /dev/vdb1
                                 active sync   /dev/vdb2
                                 active sync   /dev/vdb3

                           -      spare   /dev/vdc1
           
  • 然後進行格式化,格式化時可以指定

    stride

    的大小
[[email protected] mnt]# mke2fs -j -E stride= -b  /dev/md3 
mke2fs  (-May-)
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
First data block=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks: 
    , , , 
           
  • 對于上面指定的參數,可以根據實際的應用場景進行選擇,如果大檔案的場景,适當的調大上面的值;
  • 建立RAID 10
  • 首先需要四個分區,使用上面提供的分區,來完成

    RAID 10

    的建立,在建立的

    RAID 10

    的時候,需要計算的是,需要幾塊硬碟,手法提供空閑磁盤,空閑磁盤至少需要幾塊
[[email protected] mnt]# mdadm -C /dev/md10 -l  -n   /dev/vdb1 /dev/vdb2 /dev/vdb3 /dev/vdc1 
mdadm: /dev/vdb1 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=
mdadm: /dev/vdb2 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
mdadm: /dev/vdb3 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
mdadm: /dev/vdc1 appears to be part of a raid array:
    level=raid1 devices= ctime=Thu Apr  :: 
Continue creating array? y
mdadm: Defaulting to version  metadata
mdadm: array /dev/md10 started.
           
  • 然後就可以就可以進行格式化操作
[[email protected] mnt]# mke2fs -j -E stride= -b  /dev/md10
mke2fs  (-May-)
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
 inodes,  blocks
 blocks (%) reserved for the super user
First data block=
Maximum filesystem blocks=
 block groups
 blocks per group,  fragments per group
 inodes per group
Superblock backups stored on blocks: 
    , , , 
           
  • 之後就可以進行挂載使用

繼續閱讀