溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

軟RAID相關(guān)概念介紹及配置方法

發(fā)布時間:2020-07-18 09:34:25 來源:網(wǎng)絡(luò) 閱讀:393 作者:mb5c7bb57d7f7e8 欄目:系統(tǒng)運維

企業(yè)級的數(shù)據(jù)庫應(yīng)用大多部署在RAID磁盤陣列的服務(wù)器上,這樣能提高磁盤的訪問性能,并能夠?qū)崿F(xiàn)容錯/容災(zāi)。
RAID(冗余磁盤陣列),簡單理解,就是拿一些廉價的硬盤來做成陣列。其目的無非是為了擴展存儲容量,提升讀寫性能,實現(xiàn)數(shù)據(jù)冗余(備份容災(zāi))。

主流的大概可以分為幾個級別:RAID 0、RAID 1、RAID 5、RAID6、RAID 10、 RAID 01、RAID 50等。

  • RAID 0 簡稱磁盤條帶化,它可以提供最好的讀寫性能,如果你把兩塊磁盤做成了RAID0,那么在寫入數(shù)據(jù)的時候,就可以同時對A磁盤和B磁盤執(zhí)行寫入操作。這里需要說明的是:“可以同時...寫入操作”,并不是意味著將文件的相同內(nèi)容“在同一時間內(nèi)完全寫入”A磁盤和B磁盤中。打 個比方:有一個100M的文件需要寫入磁盤中,假設(shè)單個磁盤的寫入速度是10M/S,那么需要10秒鐘才能完成寫入工作。但如果在具有A、B兩塊磁盤的 RAID 0陣列環(huán)境中,(以秒/S為最小單位的)單時間內(nèi),可以將10M內(nèi)容寫入A磁盤中,并同時將緊隨的10M內(nèi)容寫入B磁盤中,這樣算起來,寫入速度變成了 20M/S,只需要5秒鐘就能搞定了,而且每塊磁盤中只需存儲50M的文件內(nèi)容,不會造成硬盤存儲壓力。當(dāng)然,上訴例子也許不恰當(dāng),也只是指的理論環(huán)境 下,實際環(huán)境中會有很多其他因素,效率肯定不能達(dá)到。
    可以肯定的是,這樣肯定是能提高讀寫性能的,但是這樣也帶來了一個問題就是,如果其中的一部 分?jǐn)?shù)據(jù)丟失了,你的全部數(shù)據(jù)都不會找回來的,因為RAID0沒有提供冗余恢復(fù)數(shù)據(jù)的策略。所以RAID0可以用在只讀的數(shù)據(jù)庫數(shù)據(jù)表,或者是經(jīng)過復(fù)制過來 的數(shù)據(jù)庫上,如果你對數(shù)據(jù)丟失不敏感的話,也可以使用RAID 0,總之這個level下是高性能、無冗余。

  • RAID 1 磁盤鏡像它提高了讀的性能,降低了寫的性能,因為它采用了一塊磁盤做冗余備份的方法,這樣如果你有兩塊50G的磁盤,那么加起來就是100G,但是在RAID 1下,那么你只能使用50G ,這種方法會影響磁盤的空間使用,降低了I/O 寫的性能。通俗點來講:你將一個100M的文件寫入RAID 1時,將內(nèi)容寫入A磁盤的同時,也會將相同的內(nèi)容寫入B磁盤中。 這樣一來,兩塊磁盤的內(nèi)容是完全一致的(這就傳說中的”冗余“,并不是什么高深的東西)。本來只需要寫入1塊硬盤的,可是現(xiàn)在要寫入到兩塊硬盤去,效率肯 定會變低。至于“讀”操作,RAID 1環(huán)境下,由于兩塊磁盤上有相同的內(nèi)容,讀取操作同時在兩塊磁盤上進(jìn)行,所以讀性能得到提升,關(guān)于數(shù)據(jù)冗余方面,只是當(dāng)?shù)谝粋€硬盤數(shù)據(jù)損壞或 者掛掉了,就啟動第二塊硬盤。當(dāng)然,兩塊硬盤都掛了,那就真的崩潰了。哈哈。值得一提的是,有些書或者文章上講,RAID 1是在將第一塊硬盤寫入完成后,才將數(shù)據(jù)完整復(fù)制到第二塊磁盤中做為鏡像備份的這種說法有待考證,按我的理解,是同時復(fù)制寫入的。
  • RAID 5 與RAID1 不同之處就是多了奇偶校驗,所有的奇偶校驗的信息會遍布各個磁盤,性能上要比RAID1高些,但是一旦發(fā)生磁盤I/O失敗,就會造成性能急劇下降,同時這 種方法也在RAID0 與RAID1間折了中,是比較通用的做法。 用簡單的語言來表示,至少使用3塊硬盤(也可以更多)組建RAID5陣列,當(dāng)有數(shù)據(jù)寫入硬盤的時候,按照1塊硬盤的方式就是直接寫入這塊硬盤的,如果是 RAID5的話這次數(shù)據(jù)寫入會分根據(jù)算法分成3部分,然后寫入這3塊硬盤,寫入的同時還會在這3塊硬盤上寫入校驗信息,當(dāng)讀取寫入的數(shù)據(jù)的時候會分別從3 塊硬盤上讀取數(shù)據(jù)內(nèi)容,再通過檢驗信息進(jìn)行校驗。當(dāng)其中有1塊硬盤出現(xiàn)損壞的時候,就從另外2塊硬盤上存儲的數(shù)據(jù)可以計算出第3塊硬盤的數(shù)據(jù)內(nèi)容。也就是說RAID5這種存儲方式只允許有一塊硬盤出現(xiàn)故障,出現(xiàn)故障時需要盡快更換。當(dāng)更換故障硬盤后,在故障期間寫入的數(shù)據(jù)會進(jìn)行重新校驗。 如果在未解決故障又壞1塊,那就是災(zāi)難性的了。
  • RAID 10 (和RAID 01沒什么區(qū)別,就是前者在RAID 1的基礎(chǔ)上做RAID 0,后者反了過來而已 )就是RAID0 與 RAID1的組合,它提供了高性能,高可用性, 性能上要比RAID5好,特別適合大量寫入的應(yīng)用程序,但是就是成本比較高無論是多少塊磁盤你都是將損失一半的磁盤存儲。至少需要4塊硬盤 才能完成,A和B做數(shù)據(jù)分割,分別存儲一半的數(shù)據(jù),C和D分別對應(yīng)做A和B的鏡像備份。這樣一來,可真是完美了,也是我理想中的最佳狀態(tài)。也不需要 RAID 5的奇偶校驗。很顯然,這樣子成本也會高一些。還有一點很遺憾的就是性能的”短板效應(yīng)“,

通過上面RAID 10的介紹也就明白了RAID 50的性能模式了吧?這里就不介紹了。

下面是一個綜合各種RAID 等級的性能以及應(yīng)用場景:
軟RAID相關(guān)概念介紹及配置方法

軟RAID配置命令——mdadm
命令格式:

[root@localhost ~]# mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sd[b,c,d,e]
或者
[root@localhost ~]# mdadm -C /dev/md0 -ayes -l5 -n3 -x1 /dev/sd[b-e]1

關(guān)于上述的選項與參數(shù)介紹:

  • -C --create:創(chuàng)建模式
  • -a --auto {yes|no}:同意創(chuàng)建設(shè)備,如不加此參數(shù)時必須先使用mknod 命令來創(chuàng)建一個RAID設(shè)備,不過推薦使用-a yes參數(shù)一次性創(chuàng)建;
  • -l --level #:陣列模式,支持的陣列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
  • -n #:使用#個塊設(shè)備來創(chuàng)建此RAID(-n 3 表示用3塊硬盤來創(chuàng)建這個RAID)
  • -x #:當(dāng)前陣列中熱備盤只有#塊(-x 1 表示熱備盤只有1塊)

創(chuàng)建RAID舉例(以RAID 5為例)
需求如下:

  1. 利用4個分區(qū)組成RAID 5,其中一個分區(qū)作為預(yù)備磁盤,當(dāng)工作中的RAID損壞后,預(yù)備磁盤頂上;
  2. 每個分區(qū)大小為20GB;
  3. 利用1個分區(qū)設(shè)置為預(yù)備分區(qū);
  4. 掛載到/test目錄使用】

開始配置:

1、創(chuàng)建RAID 5:

[root@localhost ~]# fdisk -l | grep  磁盤      #以下就是用來做RAID 5的磁盤
                    ..........................#省略部分內(nèi)容
磁盤 /dev/sdb:21.5 GB, 21474836480 字節(jié),41943040 個扇區(qū)
磁盤標(biāo)簽類型:gpt
磁盤 /dev/sdc:21.5 GB, 21474836480 字節(jié),41943040 個扇區(qū)
磁盤標(biāo)簽類型:gpt
磁盤 /dev/sdd:21.5 GB, 21474836480 字節(jié),41943040 個扇區(qū)
磁盤標(biāo)簽類型:gpt
磁盤 /dev/sde:21.5 GB, 21474836480 字節(jié),41943040 個扇區(qū)
磁盤標(biāo)簽類型:gpt
                    ..........................#省略部分內(nèi)容
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd[b,c,d,e]
                     ........................#忽略部分提示信息
Continue creating array? y                   #輸入“y”進(jìn)行確認(rèn)
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.       #/dev/md0創(chuàng)建成功。
[root@localhost ~]# cat /proc/mdstat       #查詢剛剛創(chuàng)建的RAID信息
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd[4] sde[3](S) sdc[1] sdb[0]   #組成RAID的實體磁盤及其順序
 41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]  
 #相關(guān)信息,chunk大小及RAID等級說明,后面的三個U代表正常,若不是U則代表有誤。

unused devices: <none>

[root@localhost ~]# mdadm -D /dev/md0      #這個命令查看出來的結(jié)果更人性化寫
/dev/md0:                          #RAID的設(shè)備文件名
           Version : 1.2
     Creation Time : Thu Sep  5 09:37:42 2019    #創(chuàng)建RAID的時間
        Raid Level : raid5      #RAID的等級,這里是RAID5
        Array Size : 41908224 (39.97 GiB 42.91 GB)    #整組RAID的可用量
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)     #每顆磁盤的可用容量
      Raid Devices : 3      #組成RAID的磁盤數(shù)量
     Total Devices : 4       #包括spare的總磁盤數(shù)
       Persistence : Superblock is persistent

       Update Time : Thu Sep  5 09:39:28 2019
             State : clean          #目前這個RAID的使用狀態(tài)
    Active Devices : 3        #啟動的設(shè)備數(shù)量
   Working Devices : 4       #目前使用于此RAID的設(shè)備數(shù)量
    Failed Devices : 0            #損壞的設(shè)備數(shù)量
     Spare Devices : 1      #預(yù)備磁盤的數(shù)量

            Layout : left-symmetric
        Chunk Size : 512K             #chunk的小區(qū)塊容量

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : d395d245:8f9294b4:3223cd47:b0bee5d8
            Events : 18
#以下是每個磁盤的使用情況,包括三個active  sync和一個spare
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde
#RaidDevice是指此RAID內(nèi)的磁盤順序

2、格式化并進(jìn)行掛載使用:

[root@localhost ~]# mkfs.xfs /dev/md0          #格式化剛剛創(chuàng)建的RAID 5
[root@localhost ~]# mkdir /test       #創(chuàng)建掛載點
[root@localhost ~]# mount /dev/md0 /test       #掛載
[root@localhost ~]# df -hT /test      #確認(rèn)掛載,使用起來和普通文件系統(tǒng)沒有區(qū)別
文件系統(tǒng)       類型  容量  已用  可用 已用% 掛載點
/dev/md0       xfs    40G   33M   40G    1% /test
#將掛載信息寫入/etc/fstab中進(jìn)行開機自動掛載了,設(shè)備名可以是/dev/md0,也可以是設(shè)備的UUID。
[root@localhost ~]# blkid /dev/md0     #查詢該RAID 5的UUID
/dev/md0: UUID="93830b3a-69e4-4cbf-b255-f43f2ae4864b" TYPE="xfs" 
[root@localhost ~]# vim /etc/fstab   #打開/etc/fstab,寫入下面內(nèi)容
UUID=93830b3a-69e4-4cbf-b255-f43f2ae4864b /test xfs     defaults        0 0

3、測試RAID 5:

關(guān)于測試,必然涉及到了一些管理RAID的參數(shù),如下:

  • -f --fail:會將后面的設(shè)備設(shè)置成為出錯的狀態(tài);
  • -a --add:會將后面的設(shè)備加入到這個md中;
  • -r --remove:會將后面這個設(shè)備由這個md中移除;

[root@localhost ~]# echo "hi,girl,good morning." > /test/a.txt   #寫入數(shù)據(jù)
[root@localhost ~]# cat /test/a.txt     #查看
hi,girl,good morning.
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb    #將/dev/sdb損壞
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0     #查看RAID  5的狀態(tài)
/dev/md0:
           Version : 1.2
     Creation Time : Thu Sep  5 09:37:42 2019
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Sep  5 10:47:00 2019
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1        #查到失敗的磁盤有1個
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : d395d245:8f9294b4:3223cd47:b0bee5d8
            Events : 39

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

       0       8       16        -      faulty   /dev/sdb       #這就是剛才損壞的磁盤
#可以發(fā)現(xiàn)作為預(yù)備磁盤已經(jīng)頂替了損壞的磁盤了
[root@localhost ~]# df -hT /test      #可用容量還是40G
文件系統(tǒng)       類型  容量  已用  可用 已用% 掛載點
/dev/md0       xfs    40G   33M   40G    1% /test
root@localhost ~]# mdadm /dev/md0 -r /dev/sdb     #將損壞的磁盤移除RAID組
mdadm: hot removed /dev/sdb from /dev/md0
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdf      #添加一塊磁盤到RAID組
mdadm: added /dev/sdf
[root@localhost ~]# mdadm -D /dev/md0    #查看RAID組的成員狀態(tài)
/dev/md0:
                       .............#省略部分內(nèi)容
    Number   Major   Minor   RaidDevice State
       3       8       64        0      active sync   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       5       8       80        -      spare   /dev/sdf   
             #新添加的磁盤已經(jīng)成為了RAID組的預(yù)備磁盤

4、將RAID組重設(shè)置為普通磁盤

[root@localhost ~]# umount /test
[root@localhost ~]# vim /etc/fstab
                       .............#省略部分內(nèi)容
UUID=93830b3a-69e4-4cbf-b255-f43f2ae4864b /test xfs     defaults        0 0             
#將設(shè)置的RAID  5自動掛載刪除
[root@localhost ~]# dd if=/dev/zero of=/dev/md0 bs=1M count=50
#損壞RAID的超級區(qū)塊
[root@localhost ~]# mdadm --stop /dev/md0     #停止RAID的使用
mdadm: stopped /dev/md0
#以下操作是將RAID中成員磁盤的超級塊信息覆蓋
[root@localhost ~]# dd if=/dev/zero of=/dev/sdc bs=1M count=10
[root@localhost ~]# dd if=/dev/zero of=/dev/sdd bs=1M count=10
[root@localhost ~]# dd if=/dev/zero of=/dev/sde bs=1M count=10
[root@localhost ~]# dd if=/dev/zero of=/dev/sdf bs=1M count=10
[root@localhost ~]# cat /proc/mdstat         #確認(rèn)下面不存在該RAID
Personalities : [raid6] [raid5] [raid4] 
unused devices: <none>

經(jīng)過以上操作即恢復(fù)成了普通磁盤,但是原本的數(shù)據(jù)都沒有了,后續(xù)使用沒有深入研究,可以使用一些重新檢測的命令進(jìn)行系統(tǒng)掃描或者重啟系統(tǒng),即可掛載使用,否則可能會掛載不上。

重新檢測命令:

[root@localhost ~]# partprobe /dev/sdc

———————— 本文至此結(jié)束,感謝閱讀

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI