您好,登錄后才能下訂單哦!
企業級的數據庫應用大多部署在RAID磁盤陣列的服務器上,這樣能提高磁盤的訪問性能,并能夠實現容錯/容災。
RAID(冗余磁盤陣列),簡單理解,就是拿一些廉價的硬盤來做成陣列。其目的無非是為了擴展存儲容量,提升讀寫性能,實現數據冗余(備份容災)。
主流的大概可以分為幾個級別:RAID 0、RAID 1、RAID 5、RAID6、RAID 10、 RAID 01、RAID 50等。
RAID 0 簡稱磁盤條帶化,它可以提供最好的讀寫性能,如果你把兩塊磁盤做成了RAID0,那么在寫入數據的時候,就可以同時對A磁盤和B磁盤執行寫入操作。這里需要說明的是:“可以同時...寫入操作”,并不是意味著將文件的相同內容“在同一時間內完全寫入”A磁盤和B磁盤中。打 個比方:有一個100M的文件需要寫入磁盤中,假設單個磁盤的寫入速度是10M/S,那么需要10秒鐘才能完成寫入工作。但如果在具有A、B兩塊磁盤的 RAID 0陣列環境中,(以秒/S為最小單位的)單時間內,可以將10M內容寫入A磁盤中,并同時將緊隨的10M內容寫入B磁盤中,這樣算起來,寫入速度變成了 20M/S,只需要5秒鐘就能搞定了,而且每塊磁盤中只需存儲50M的文件內容,不會造成硬盤存儲壓力。當然,上訴例子也許不恰當,也只是指的理論環境 下,實際環境中會有很多其他因素,效率肯定不能達到。
可以肯定的是,這樣肯定是能提高讀寫性能的,但是這樣也帶來了一個問題就是,如果其中的一部 分數據丟失了,你的全部數據都不會找回來的,因為RAID0沒有提供冗余恢復數據的策略。所以RAID0可以用在只讀的數據庫數據表,或者是經過復制過來 的數據庫上,如果你對數據丟失不敏感的話,也可以使用RAID 0,總之這個level下是高性能、無冗余。
通過上面RAID 10的介紹也就明白了RAID 50的性能模式了吧?這里就不介紹了。
下面是一個綜合各種RAID 等級的性能以及應用場景:
軟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
關于上述的選項與參數介紹:
- -C --create:創建模式
- -a --auto {yes|no}:同意創建設備,如不加此參數時必須先使用mknod 命令來創建一個RAID設備,不過推薦使用-a yes參數一次性創建;
- -l --level #:陣列模式,支持的陣列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
- -n #:使用#個塊設備來創建此RAID(-n 3 表示用3塊硬盤來創建這個RAID)
- -x #:當前陣列中熱備盤只有#塊(-x 1 表示熱備盤只有1塊)
創建RAID舉例(以RAID 5為例)
需求如下:
- 利用4個分區組成RAID 5,其中一個分區作為預備磁盤,當工作中的RAID損壞后,預備磁盤頂上;
- 每個分區大小為20GB;
- 利用1個分區設置為預備分區;
- 掛載到/test目錄使用】
開始配置:
1、創建RAID 5:
[root@localhost ~]# fdisk -l | grep 磁盤 #以下就是用來做RAID 5的磁盤
..........................#省略部分內容
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
磁盤標簽類型:gpt
磁盤 /dev/sdc:21.5 GB, 21474836480 字節,41943040 個扇區
磁盤標簽類型:gpt
磁盤 /dev/sdd:21.5 GB, 21474836480 字節,41943040 個扇區
磁盤標簽類型:gpt
磁盤 /dev/sde:21.5 GB, 21474836480 字節,41943040 個扇區
磁盤標簽類型:gpt
..........................#省略部分內容
[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”進行確認
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started. #/dev/md0創建成功。
[root@localhost ~]# cat /proc/mdstat #查詢剛剛創建的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]
#相關信息,chunk大小及RAID等級說明,后面的三個U代表正常,若不是U則代表有誤。
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md0 #這個命令查看出來的結果更人性化寫
/dev/md0: #RAID的設備文件名
Version : 1.2
Creation Time : Thu Sep 5 09:37:42 2019 #創建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的磁盤數量
Total Devices : 4 #包括spare的總磁盤數
Persistence : Superblock is persistent
Update Time : Thu Sep 5 09:39:28 2019
State : clean #目前這個RAID的使用狀態
Active Devices : 3 #啟動的設備數量
Working Devices : 4 #目前使用于此RAID的設備數量
Failed Devices : 0 #損壞的設備數量
Spare Devices : 1 #預備磁盤的數量
Layout : left-symmetric
Chunk Size : 512K #chunk的小區塊容量
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內的磁盤順序
2、格式化并進行掛載使用:
[root@localhost ~]# mkfs.xfs /dev/md0 #格式化剛剛創建的RAID 5
[root@localhost ~]# mkdir /test #創建掛載點
[root@localhost ~]# mount /dev/md0 /test #掛載
[root@localhost ~]# df -hT /test #確認掛載,使用起來和普通文件系統沒有區別
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/md0 xfs 40G 33M 40G 1% /test
#將掛載信息寫入/etc/fstab中進行開機自動掛載了,設備名可以是/dev/md0,也可以是設備的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,寫入下面內容
UUID=93830b3a-69e4-4cbf-b255-f43f2ae4864b /test xfs defaults 0 0
3、測試RAID 5:
關于測試,必然涉及到了一些管理RAID的參數,如下:
- -f --fail:會將后面的設備設置成為出錯的狀態;
- -a --add:會將后面的設備加入到這個md中;
- -r --remove:會將后面這個設備由這個md中移除;
[root@localhost ~]# echo "hi,girl,good morning." > /test/a.txt #寫入數據
[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的狀態
/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 #這就是剛才損壞的磁盤
#可以發現作為預備磁盤已經頂替了損壞的磁盤了
[root@localhost ~]# df -hT /test #可用容量還是40G
文件系統 類型 容量 已用 可用 已用% 掛載點
/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組的成員狀態
/dev/md0:
.............#省略部分內容
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
#新添加的磁盤已經成為了RAID組的預備磁盤
4、將RAID組重設置為普通磁盤
[root@localhost ~]# umount /test
[root@localhost ~]# vim /etc/fstab
.............#省略部分內容
UUID=93830b3a-69e4-4cbf-b255-f43f2ae4864b /test xfs defaults 0 0
#將設置的RAID 5自動掛載刪除
[root@localhost ~]# dd if=/dev/zero of=/dev/md0 bs=1M count=50
#損壞RAID的超級區塊
[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 #確認下面不存在該RAID
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>
經過以上操作即恢復成了普通磁盤,但是原本的數據都沒有了,后續使用沒有深入研究,可以使用一些重新檢測的命令進行系統掃描或者重啟系統,即可掛載使用,否則可能會掛載不上。
重新檢測命令:
[root@localhost ~]# partprobe /dev/sdc
———————— 本文至此結束,感謝閱讀
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。