您好,登錄后才能下訂單哦!
企業(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 10的介紹也就明白了RAID 50的性能模式了吧?這里就不介紹了。
下面是一個綜合各種RAID 等級的性能以及應(yīng)用場景:
軟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為例)
需求如下:
- 利用4個分區(qū)組成RAID 5,其中一個分區(qū)作為預(yù)備磁盤,當(dāng)工作中的RAID損壞后,預(yù)備磁盤頂上;
- 每個分區(qū)大小為20GB;
- 利用1個分區(qū)設(shè)置為預(yù)備分區(qū);
- 掛載到/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é)束,感謝閱讀
免責(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)容。