一、RAID簡介
對於會進行大量磁盤數據讀寫的應用,需要磁盤擁有較高的IO能力
固態硬盤及一些專業的存儲設備能提供較大的IO能力,但價格昂貴
RAID(Redundant Arrays of Independent Disks):獨立磁盤冗餘陣列,是一種將多塊磁盤組合成一塊以提高其I/O能力(並行讀寫)、冗餘能力及耐用能力的技術
二、RAID的實現方式
外接式磁盤陣列:通過服務器外接擴展適配器連接至專用的外接式磁盤陣列設備的方式
內接式磁盤陣列:主板自身集成了RAID控制器
Software RAID:通過軟件的形式實現RAID
結合內核中的md模塊(multi disk)實現
mdadm:用戶面向md內核模塊的工具
三、RAID級別
RAID-0(條帶卷,strip):
將數據通過RAID控制器分塊存儲到多塊磁盤中,提高了磁盤的I/O吞吐能力
可用磁盤空間爲所有磁盤空間總和;
無冗餘能力,任何一塊盤損壞,則該組數據損壞;
RAID-1(鏡像卷,mirror):
將數據複製爲多組儲存在多塊磁盤上
提高了讀取能力,但是寫速率會下降;
可用磁盤空間爲最小磁盤的空間;
有冗餘能力;
RAID-4:
將一組數據分爲多個塊存儲到多個磁盤上,其中一塊磁盤專門存儲數據塊1和數據塊2的校驗碼(即塊1和塊2的ASCII異或運算),若其中儲存數據塊的磁盤損壞,可以通過校驗磁盤和其它磁盤反推(異或運算)出損壞磁盤的數據
RAID-5:
將數據分爲多個塊存循環儲存到儲到多個磁盤上,每塊磁盤做循環作爲某個塊的校驗儲存盤
提高了I/O性能;
可用空間:(N-1)*min(S1,S2...);
有冗餘能力:允許壞一塊盤;
RAID-6:
和RAID類似,但是使用兩塊校驗盤做循環校驗
提高了I/O性能;
可用空間:(N-2)*min(S1,S2...);
有冗餘能力:允許壞兩塊磁盤;
RAID-10:主流技術
將多塊磁盤分爲n組,每組m個磁盤,組內做磁盤RAID-1鏡像卷(提供冗餘),各個組做RAID-0(提高I/O性能及磁盤可用空間)
讀寫性能好;
可用空間N*min(S1、S2...)
有冗餘能力
RAID-01:不太常用
將多塊磁盤分爲n組,每組m個磁盤,組內做磁盤RAID-0條帶卷(提供I/O性能及磁盤可用空間),各個組做RAID-1(提高冗餘)
其它RAID技術:RAID-50
RAID7:廠家私有技術,性能強大,價格高昂)
JBOD:將多個磁盤空間合併爲一個大的連續空間使用(儲存較大的單個文件)
注意:
掛載RAID設備md時,建議用UUID掛載(重啓後,掛載名可能會改變)
四、mdadm RAID管理工具
mdadm用戶面向md內核模塊的工具:
支持:LINEAR
RAID0
RAID1
RAID4
RAID5
RAUD6
RAID10
mdadm --version #查看mdadm的版本
mdadm -C /dev/mdn創建模式
-n n:使用n個塊設備來創建該RAID;
-l n:指明要創建的RAID級別;
-a {yes|no}:自動創建目標RAID的設備文件;
-c :指明塊大小
-x :指明冗餘空閒盤的個數
注意:
若使用軟RAID,需要將分區改爲fd:Linux raid aut,並使用partx -a將分區加載到內核
mdadm -D /dev/mdn #查看md設備詳細情況
mdadm -f /dev/md設備 /dev/sdn設備 #標記md設備中RAID中的某塊sd磁盤爲損壞
mdadm -a /dev/mdn設備 /dev/sdn設備 #將sdn設備添加到mdn中
(補充:添加的這塊磁盤爲RAID的空閒盤)
mdadm -r /dev/mdn設備 /dev/sdn設備 #將sdn設備(RAID中的某塊磁盤)從mdn中移除
mdadm -S /dev/mdn #關閉mdn設備
cat /proc/mdstat #看md設備
watch -n1 'cat /proc/mdstat' #每一秒鐘執信一次md設備查看
軟RAID的使用示例:
查看md設備
[root@localhost ~]# cat /proc/mdstat
Personalities :
unused devices: <none>
創建RADI設備:
[root@localhost ~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sde{5,6,7,8}
mdadm: largest drive (/dev/sde6) exceeds size (26624K) by more than 1%
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
/dev/md0 #設備名稱
-a #自動創建
-n 3 #使用3塊設備創建
-x 1 #空閒盤個數爲1個
-l 5 #RAID級別爲5
/dev/sde{5,6,7,8} #使用/dev/sde{5,6,7,8}創建RAID
查看md設備
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde7[4] sde8[3](S) sde6[1] sde5[0]
53248 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
格式化RAID設備:
[root@localhost ~]# mke2fs -t ext4 /dev/md0
掛載RAID設備:
[root@localhost ~]# mount /dev/md0 /mddata/
[root@localhost ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 19G 261M 18G 2% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 976M 30M 896M 4% /boot
/dev/sdf1 9.8G 23M 9.2G 1% /opt
/dev/sde1 9.8G 23M 9.2G 1% /tmp
/dev/sdd1 9.8G 651M 8.6G 7% /usr
/dev/sdc1 9.8G 23M 9.2G 1% /usr/local
/dev/sdb1 9.8G 53M 9.2G 1% /var
/dev/md0 47M 842K 43M 2% /mddata
標記md設備中RAID中的sde6磁盤爲損壞盤
[root@localhost ~]# mdadm -f /dev/md0 /dev/sde6
mdadm: set /dev/sde6 faulty in /dev/md0
查看md設備詳細情況
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Jan 11 20:23:52 2018
Raid Level : raid5
Array Size : 53248 (52.01 MiB 54.53 MB)
Used Dev Size : 26624 (26.00 MiB 27.26 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu Jan 11 20:50:12 2018
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 50372175:600997e2:797249e8:2e336149
Events : 37
Number Major Minor RaidDevice State
0 8 69 0 active sync /dev/sde5
3 8 72 1 active sync /dev/sde8
4 8 71 2 active sync /dev/sde7
1 8 70 - faulty /dev/sde6
將sde6設備添加到mdn中
[root@localhost ~]# mdadm -a /dev/md0 /dev/sde6
將sde8設備(RAID中的某塊磁盤)從mdn中移除
[root@localhost ~]# mdadm -r /dev/md0 /dev/sde8