CentOS系統(tǒng)中軟Raid的配置

由加利福尼亞大學(xué)伯克利分校(University of California-Berkeley)在1988年,發(fā)表的文章:“A Case for Redundant Arrays of Inexpensive Disks”。文章中,談到了RAID這個(gè)詞匯,而且定義了RAID的5個(gè)層級(jí)。獨(dú)立磁盤冗余陣列(RAID,redundant array of independent disks)是把相同的數(shù)據(jù)存儲(chǔ)在多個(gè)硬盤的不同的地方(因此,冗余地)的方法。通過把數(shù)據(jù)放在多個(gè)硬盤上,輸入輸出操作能以平衡的方式交疊,改良性能。因?yàn)槎鄠€(gè)硬盤增加了平均故障間隔時(shí)間(MTBF),儲(chǔ)存冗余數(shù)據(jù)也增加了容錯(cuò)性。

  1. RAID的幾個(gè)常用級(jí)別
  • raid 0 要2塊或2塊以上的硬盤,把數(shù)據(jù)分散在N塊硬盤內(nèi)性能提升極高,無容錯(cuò)能力。
  • raid 1 需要2塊硬盤,會(huì)把一塊硬盤寫數(shù)據(jù),把另一塊寫入數(shù)據(jù)鏡像,容錯(cuò)性最高,但寫入性能會(huì)下降。
  • raid 4 需要3塊或以上的硬盤,多塊數(shù)據(jù)盤進(jìn)行異或運(yùn)算,把一塊硬盤做專用校驗(yàn)盤,異或相同為假不同為真,有容錯(cuò)性,一塊壞掉可以通過校驗(yàn)盤來計(jì)算恢復(fù)。但已基本不用本文不做詳細(xì)介紹。
  • raid 5 需要3塊或3塊以上的硬盤,會(huì)把1塊硬盤的容量來放校驗(yàn)位,有容錯(cuò)性允許一塊磁盤損壞,性能有提升,比較常用。磁盤利用率比raid1要高。擁有和raid0相近的讀取速度,但寫入數(shù)據(jù)和單個(gè)磁盤相比稍慢。把多塊數(shù)據(jù)進(jìn)行異或運(yùn)算生成校驗(yàn)信息,然后把數(shù)據(jù)和與其相對(duì)的校驗(yàn)信息保存在raid5各個(gè)磁盤中。
  • raid 6 需要4塊或4塊以上的硬盤,會(huì)把2塊硬盤的容量來放校驗(yàn)位,會(huì)計(jì)算兩個(gè)校驗(yàn)位儲(chǔ)存在兩塊盤上,容錯(cuò)性允許兩塊磁盤損壞,不常用,本文不做詳細(xì)介紹。
  • raid 10 需要4塊或2的2倍以上的硬盤,但添加硬盤要一次添加2塊。會(huì)把硬盤先做raid 1在做raid 0,性能提升較高,但磁盤利用率較低,容錯(cuò)性極高。raid01與其相似但是raid01是先做raid 0再做raid 1.
  • raid 50 需要6塊或3的2倍以上的硬盤,先把硬盤做成raid5,再做成raid 0,性能提升較高,磁盤利用率較低,容錯(cuò)性極高。
  • raid 7 可以理解為一個(gè)獨(dú)立存儲(chǔ)計(jì)算機(jī),自身帶有操作系統(tǒng)和管理工具,可以獨(dú)立運(yùn)行,理論上性能最高的raid模式,本文里不做詳細(xì)介紹。
級(jí)別 最少硬盤 容量 讀取性能 寫入性能 容錯(cuò)性
raid 0 2 n n n 無容錯(cuò)性
raid 1 2 n/2 n n/2 2塊可以壞掉一塊
raid 5 3 n-1 n-1 n-1 3塊可以壞掉一塊
raid 10 4 n/2 n n/2 只要不是同一個(gè)raid1的硬盤,可以壞掉一半

  1. 實(shí)現(xiàn)

2.1 軟raid命令mdadm

-C: 創(chuàng)建模式,參數(shù):

  • -n #: 使用 #個(gè)塊設(shè)備來創(chuàng)建此RAID
  • -l #:指明要?jiǎng)?chuàng)建的RAID的級(jí)別,1表示raid1
  • -a {yes|no}:自動(dòng)創(chuàng)建目標(biāo)RAID設(shè)備的設(shè)備文件
  • -c CHUNK_SIZE: 指明塊大小
  • -x #: 指明空閑盤的個(gè)數(shù)

-D:顯示raid的詳細(xì)信息

  • -s:掃描配置文件或/proc/mdstat缺少信息。

-G:更改大小

-I:添加或刪除單個(gè)硬盤

-F:監(jiān)控

管理模式

  • -f: 標(biāo)記指定磁盤為損壞
  • -a: 添加磁盤
  • -r: 移除磁盤

注:要查看raid的狀態(tài):cat /proc/mdstat,創(chuàng)建之后要寫入配置文件來保存否則在停用設(shè)備之后無法啟動(dòng): mdadm –D –s >> /etc/mdadm.conf

2.2 raid 0

[root@centos6.9 ~]#lsblk  #查看硬盤情況
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  100G  0 disk 
└─sdb1   8:17   0   30G  0 part /test
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0 1000M  0 part /boot
├─sda2   8:2    0 97.7G  0 part /
├─sda3   8:3    0 48.8G  0 part /app
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sdc      8:32   0   10G  0 disk  #這里有4塊10GB的硬盤,就是我們做實(shí)驗(yàn)要用的
sdd      8:48   0   10G  0 disk 
sde      8:64   0   10G  0 disk 
sdf      8:80   0   10G  0 disk 
[root@centos6.9 ~]#mdadm -C /dev/md0 -n 2 -a yes -l 0 /dev/sdc /dev/sdd 
#-C創(chuàng)建md0,-n指定由2塊硬盤創(chuàng)建,-a yes自動(dòng)創(chuàng)建設(shè)備文件,-l 指定raid 0,后面指定成員硬盤
mdadm: Defaulting to version 1.2 metadata  
mdadm: array /dev/md0 started.   #創(chuàng)建md0成功

[root@centos6.9 ~]#mdadm -D /dev/md0   #查看創(chuàng)建的md0的詳細(xì)信息
/dev/md0:
        Version : 1.2
  Creation Time : Tue Jun 20 19:53:17 2017
     Raid Level : raid0   #raid等級(jí)
     Array Size : 20955136 (19.98 GiB 21.46 GB)  #總?cè)萘?   Raid Devices : 2   #raid硬盤數(shù)
  Total Devices : 2   #總硬盤數(shù)
    Persistence : Superblock is persistent
    Update Time : Tue Jun 20 19:53:17 2017
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
     Chunk Size : 512K  #分散在硬盤中塊的大小
           Name : centos6.9:0  (local to host centos6.9)
           UUID : cd351fb1:b45416d3:5ac664ae:6d130fd2    #raid的UUID號(hào)
         Events : 0
    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc  #成員1
       1       8       48        1      active sync   /dev/sdd  #成員2


root@centos6.9 ~]#fdisk /dev/md0   #用fdisk管理/md0分區(qū)

Command (m for help): n    #創(chuàng)建一個(gè)分區(qū)
Command action
   e   extended                   #擴(kuò)展分區(qū)
   p   primary partition (1-4)    #主分區(qū)
p       #這里選了p,創(chuàng)建一個(gè)主分區(qū)
Partition number (1-4): 1  #選擇分區(qū)編號(hào)1
First cylinder (1-5238784, default 257 ): #默認(rèn)從的257個(gè)扇區(qū)開始,這里選擇默認(rèn)
Last cylinder, +cylinders or +size{K,M,G} (257-5238784, default 5238784): +10G   #創(chuàng)建一個(gè)10G的分區(qū)

Command (m for help): p   #查看分區(qū)

Disk /dev/md0: 21.5 GB, 21458059264 bytes
2 heads, 4 sectors/track, 5238784 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x861106f0

      Device Boot      Start         End      Blocks   Id  System
/dev/md0p1             257     2621696    10485760   83  Linux

Command (m for help): w    #保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@centos6.9 ~]#fdisk -l     #查看硬盤分區(qū),因?yàn)橛脖P比較多所以只顯示了md0
Disk /dev/md0: 21.5 GB, 21458059264 bytes  #硬盤大小
2 heads, 4 sectors/track, 5238784 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0xdbb02828

    Device Boot      Start         End      Blocks   Id  System
/dev/md0p1              257     2621440    10485758   83  Linux     #硬盤里的分區(qū)

[root@centos6.9 ~]#mkfs.ext4 /dev/md0p1  #格式化md0p1分區(qū),文件系統(tǒng)ext4
[root@centos6.9 ~]#mkdir /raid  #創(chuàng)建raid文件夾
[root@centos6.9 ~]#mount /dev/md0 /raid/  #把raid掛載到raid目錄上
[root@centos6.9 ~]#df  #查看掛載信息
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      100660656 3598692  91941964   4% /
tmpfs             502056       8    502048   1% /dev/shm
/dev/sda3       50264772   56396  47648376   1% /app
/dev/sda1         991512   34932    905380   4% /boot
/dev/sdb1       30838496   45008  29220328   1% /test
/dev/md0        20494972   44992  19402224   1% /raid  掛載成功

[root@centos6.9 ~]#vim /etc/fstab   #修改文件保存掛載,如果不寫入文件的話,開機(jī)之后不會(huì)自動(dòng)掛載
UUID=80f63701-5c1b-4dc1-9864-7c1247ed8561 /                       ext4    defaults        1 1
UUID=daf6631d-90ab-45dc-b5b5-20eb52476056 /app                    ext4    defaults        1 2
UUID=87c9aa50-7b7a-459e-babc-87bfaf5b49f2 /boot                   ext4    defaults        1 2
UUID=2f7f0957-6978-4028-ac0d-966fb8d486e5 swap                    swap    defaults        0 0
UUID=0ec85016-ffa5-4d52-b353-b55b0c239228  /raid ext4   defaults        0 0    #在里面加一行,參考系統(tǒng)的格式寫
#在添加的時(shí)候要寫文件的UUID號(hào),以防止設(shè)備名變更無法掛載。
[root@centos6.9 ~]#blkid /dev/md0p1   #查看分區(qū)的UUID
/dev/md0p1: UUID="0ec85016-ffa5-4d52-b353-b55b0c239228" TYPE="ext4"    #分區(qū)的UUID號(hào)和文件系統(tǒng)類型  
[root@centos6.9 ~]#mdadm -D -s /dev/md0 >> /etc/mdadm.conf   #把md0的配置追加進(jìn)/etc/mdadm.conf文件

2.3 raid 1

[root@centos6.9 ~]#mdadm -C /dev/md1 -n 2 -a yes -l 1  /dev/sdc /dev/sdd   #創(chuàng)建raid1
/dev/md1:
        Version : 1.2
  Creation Time : Tue Jun 20 21:27:53 2017
     Raid Level : raid1    #raid 等級(jí)
     Array Size : 10477568 (9.99 GiB 10.73 GB)    #raid1容量
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)    #鏡像空間大小
   Raid Devices : 2   #raid硬盤數(shù)
  Total Devices : 2   #總硬盤數(shù)
    Persistence : Superblock is persistent

    Update Time : Tue Jun 20 21:28:25 2017
          State : clean, resyncing 
 Active Devices : 2    #主動(dòng)設(shè)備
Working Devices : 2    #工作設(shè)備
 Failed Devices : 0    #問題設(shè)備
  Spare Devices : 0    #備用設(shè)備

  Resync Status : 66% complete

           Name : centos6.9:1  (local to host centos6.9)
           UUID : 2244ef88:05bcf8d4:3de8c6f6:a65ee55b
         Events : 10

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc     #成員
       1       8       48        1      active sync   /dev/sdd     #成員

2.4 raid 5

[root@centos6.9 ~]#mdadm -C /dev/md2 -n 3 -x 1 -a yes -l 5  /dev/sdc /dev/sdd /dev/sde  /dev/sdf  
                  #指定三個(gè)成員硬盤,同是用-x指定了一個(gè)備用盤
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.  #創(chuàng)建成功
[root@centos6.9 ~]#mdadm -D /dev/md2 
/dev/md2:
        Version : 1.2
  Creation Time : Tue Jun 20 21:49:02 2017  #創(chuàng)建時(shí)間
     Raid Level : raid5   #等級(jí)
     Array Size : 20955136 (19.98 GiB 21.46 GB)   #可用容量
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)    #校驗(yàn)數(shù)據(jù)容量
   Raid Devices : 3  #
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Tue Jun 20 21:49:55 2017
          State : clean 
 Active Devices : 3    #raid硬盤數(shù)
Working Devices : 4    #總硬盤數(shù)
 Failed Devices : 0    #損壞硬盤數(shù)
  Spare Devices : 1    #備用硬盤數(shù)

         Layout : left-symmetric
     Chunk Size : 512K   #分散在硬盤中的塊大小,不指定默認(rèn)為512KB

           Name : centos6.9:2  (local to host centos6.9)
           UUID : e33c123d:e4598fda:c6b15be6:7cc8cf29   #uuid
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc  #成員
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde

       3       8       80        -      spare   /dev/sdf       #空閑備份硬盤 
       #空閑盤,不用來儲(chǔ)存數(shù)據(jù),在其中一塊raid硬盤出現(xiàn)問題后自動(dòng)頂替并通過運(yùn)算恢復(fù)數(shù)據(jù)

2.5 有容錯(cuò)性的raid實(shí)驗(yàn)其容錯(cuò)性,這里以raid5來實(shí)驗(yàn)。

[root@centos6.9 raid]#echo 11111 >  11   #創(chuàng)建一個(gè)文件,在里面寫入11111
[root@centos6.9 raid]#cat 11   #查看文件
11111

[root@centos6.9 ~]#mdadm /dev/md2 -f /dev/sdc    #把sdc標(biāo)記為損壞

[root@centos6.9 ~]#mdadm -D /dev/md2    #查看md2狀態(tài),因?yàn)樾畔⑦^多,所以這里只顯示硬盤的狀態(tài)
 Active Devices : 3
Working Devices : 4   
 Failed Devices : 1   #這里顯示有一個(gè)損壞的硬盤
  Spare Devices : 0   #沒有空閑的硬盤了
    Number   Major   Minor   RaidDevice State
       3       8       80        0      active sync   /dev/sdf     #sdf已經(jīng)替換了sdc
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde

       0       8       32        -      faulty   /dev/sdc  #sdc被標(biāo)記為壞掉的
[root@centos6.9 raid]#cat 11  #看看數(shù)據(jù)有沒有丟失
11111  #數(shù)據(jù)沒有問題
       

2.6 移除和添加硬盤,我這里添加了一塊硬盤sdg

[root@centos6.9 raid]#mdadm /dev/md2 -r /dev/sdc     #把上面實(shí)驗(yàn)標(biāo)記為損壞的sdc從md2中移除
mdadm: hot removed /dev/sdc from /dev/md2
[root@centos6.9 raid]#mdadm -D /dev/md2     #查看md2的狀態(tài)
/dev/md2:
        Version : 1.2
  Creation Time : Tue Jun 20 21:49:02 2017
     Raid Level : raid5  
     Array Size : 20955136 (19.98 GiB 21.46 GB)
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
   Raid Devices : 3
  Total Devices : 3   #這里的總硬盤數(shù)只有三個(gè)
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0   #沒有損壞硬盤
  Spare Devices : 0
    Number   Major   Minor   RaidDevice State
       3       8       80        0      active sync   /dev/sdf   
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde    #沒有sdc的信息了
       
[root@centos6.9 raid]#mdadm  /dev/md2  -a /dev/sdg   #把sdg添加到md2中
[root@centos6.9 raid]#mdadm -D /dev/md2   #查看md2的信息,有省略
/dev/md2:
   Raid Devices : 3  
  Total Devices : 4   #總硬盤數(shù)
          State : clean 
 Active Devices : 3    
Working Devices : 4    #總硬盤數(shù)
 Failed Devices : 0    #損壞硬盤數(shù)
  Spare Devices : 1    #有一個(gè)備用盤
           Name : centos6.9:2  (local to host centos6.9)
           UUID : e33c123d:e4598fda:c6b15be6:7cc8cf29
         Events : 39

    Number   Major   Minor   RaidDevice State
       3       8       80        0      active sync   /dev/sdf
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde

       5       8       96        -      spare   /dev/sdg   #sdg為備份盤

如果想要擴(kuò)展只想raid硬盤的盤數(shù)用:

[root@centos6.9 raid]#mdadm -G /dev/md2 -n 4 -a /dev/sdg     

    Update Time : Tue Jun 20 22:48:47 2017
          State : clean, reshaping 
 Active Devices : 4  #raid盤數(shù) 
Working Devices : 4  #總盤數(shù)
 Failed Devices : 0
  Spare Devices : 0  #沒有備份盤
 Number   Major   Minor   RaidDevice State
       3       8       80        0      active sync   /dev/sdf
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde
       5       8       96        3      active sync   /dev/sdg   #不會(huì)把sdg添加為備用盤,直接參與數(shù)據(jù)儲(chǔ)存

2.7 停用、啟動(dòng)raid設(shè)備

[root@centos6.9 ~]#mdadm -D -s >> /etc/mdadm.conf   #在創(chuàng)建好raid設(shè)備后一定要,把配置寫入文件,否則無法啟動(dòng)
[root@centos6.9 ~]#cat /etc/mdadm.conf  #查看文件
ARRAY /dev/md2 metadata=1.2 name=centos6.9:2 UUID=cbb20529:52eced42:77605adf:0a416662

[root@centos6.9 ~]#mdadm -S /dev/md2  #停用raid設(shè)備md2
mdadm: stopped /dev/md2
[root@centos6.9 ~]#mdadm -D /dev/md2  #再來查看md2的信息
mdadm: cannot open /dev/md2: No such file or directory   #提示沒有這個(gè)目錄或文件,無法打開
[root@centos6.9 ~]#mdadm -A -s  /dev/md2   #啟用設(shè)備
mdadm: /dev/md2 has been started with 4 drives.  #啟動(dòng)成功
[root@centos6.9 ~]#mdadm -D /dev/md2    #查看md2的狀態(tài)
/dev/md2:   
        Version : 1.2                                   #可以查看了
  Creation Time : Tue Jun 20 23:02:38 2017
     Raid Level : raid5
     Array Size : 31432704 (29.98 GiB 32.19 GB)
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
   Raid Devices : 4
  Total Devices : 4                                     
#省略......
    Number   Major   Minor   RaidDevice State
       0       8       80        0      active sync   /dev/sdf
       1       8       48        1      active sync   /dev/sdd
       2       8       64        2      active sync   /dev/sde
       4       8       96        3      active sync   /dev/sdg

注:如果沒有寫配置文件可以用下面的命令來強(qiáng)制啟動(dòng),但會(huì)丟失一些配置信息

mdadm –R /dev/md2

2.8 刪除raid設(shè)備

  • 1.先用umont取消設(shè)備掛載
  • 2.停止raid設(shè)備
  • 3.刪除/etc/fstab里掛載信息和/etc/mdadm.conf文件里的配置行
  • 4.刪除每個(gè)磁盤的raid信息: mdadm --zero-superblock /dev/sdd
    注:如果不用第4步的命令,直接格式化硬盤,raid信息會(huì)清除不干凈有殘留,重啟之后設(shè)備會(huì)重新創(chuàng)建。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 獨(dú)立磁盤冗余數(shù)組(RAID, Redundant Array of Independent Disks)簡(jiǎn)稱硬盤陣...
    yekai閱讀 5,257評(píng)論 0 14
  • 介紹一個(gè)新概念,RAID,這也是大學(xué)的時(shí)候的學(xué)的東西了,一直很少在工作中使用,有點(diǎn)忘記,今天復(fù)習(xí)更新一下。分享給大...
    若與閱讀 4,985評(píng)論 0 6
  • 一.RAID定義 RAID(Redundant Array of Independent Disk 獨(dú)立冗余磁盤陣...
    小艾QQD閱讀 602評(píng)論 0 1
  • 這是第幾本東野圭吾的書呢?每一次看他的書都像這本一樣,迫不及待的在一兩天之內(nèi)看完。哪怕是最厚的《白夜行》我也在...
    祁光96閱讀 551評(píng)論 0 1
  • 我是日記星球270號(hào)星寶寶素梅—素食者王繼梅,正在參加日記星球21天蛻變之旅,這是我的第9篇原創(chuàng)日記,堅(jiān)持每天一篇...
    素梅1素食者王繼梅閱讀 365評(píng)論 0 0

友情鏈接更多精彩內(nèi)容