•常見raid原理
•raid卡
•配置raid
•刪除raid
實驗需要添加5塊硬盤
sda , b ,c,d,e,f
RAID(Redundant Array of Independent Disks,獨立磁盤冗餘陣列)可以提供較普通磁盤更高的速度、安全性,所以服務器在安裝時都會選擇創建RAID。RAID的創建有兩種方式:軟RAID(通過操作系統軟件來實現)和硬RAID(使用硬件陣列卡)。
raid0:
-
RAID-0 :striping(條帶模式),至少需要兩塊磁盤,做RAID分區的大小最好是相同的(可以充分發揮併發優勢);數據分散存儲於不同的磁盤上,在讀寫的時候可以實現併發,所以相對其讀寫性能最好;但是沒有容錯功能,任何一個磁盤的損壞將損壞全部數據;磁盤利用率爲100%。
- RAID-1 :mirroring(鏡像卷),至少需要兩塊硬盤,raid大小等於兩個raid分區中最小的容量(最好將分區大小分爲一樣),數據有冗餘,在存儲時同時寫入兩塊硬盤,實現了數據備份;
磁盤利用率爲50%,即2塊100G的磁盤構成RAID1只能提供100G的可用空間。
RAID-5 :需要三塊或以上硬盤,可以提供熱備盤實現故障的恢復;只損壞一塊,沒有問題。但如果同時損壞兩塊磁盤,則數據將都會損壞。 空間利用率: (n-1)/n 2/3
1+1 =2
是用相對簡單的異或邏輯運算(相同爲0,相異爲1)
A值 B值 Xor結果
0 0 0
1 0 1
0 1 1
1 1 0
管理軟raid工具mdadm
mdadm 參數:
命令常用參數如下:
-C或--creat 建立一個新陣列 -r 移除設備
-A 激活磁盤陣列 -l 或--level= 設定磁盤陣列的級別
-D或--detail 打印陣列設備的詳細信息 -n或--raid-devices= 指定陣列成員(分區/磁盤)的數量
-s或--scan 掃描配置文件或/proc/mdstat得到陣列缺失信息 -x或--spare-devicds= 指定陣列中備用盤的數量
-f 將設備狀態定爲故障 -c或--chunk= 設定陣列的塊chunk大小 ,單位爲KB
-a或--add 添加設備到陣列 -G或--grow 改變陣列大小或形態
-v --verbose 顯示詳細信息
熱備份盤(hot spare or hot standby driver):爲了加強容錯的功能以及使系統在磁盤故障的情況下能迅速的重建數據,以維持系統的性能,一般的磁盤陣列系統都可使用熱備份功能。
Chunk (塊): raid存儲數據時每個數據段的大小。 4K,64K
若chunk過大,可能一塊磁盤上的帶區空間就可以滿足大部分的I/O操作的數據的讀寫只侷限與一塊硬盤上,這便不能充分發揮Raid併發的優勢;如果chunk設置過小,任何很小的I/O指令都可能引發大量的讀寫操作,不能良好的發揮併發性能,佔用過多的控制器總線帶寬,也影響了陣列的整體性能。所以,在創建帶區時,我們應該根據實際應用的需要,合理的選擇帶區的大小
RAID0
例1、
1)創建RAID0
2)導出陣列配置文件
3)格式化並掛載到指定目錄
4)修改/etc/fstab永久掛載
環境:添加一個sdc硬盤,分兩個1G的主分區。sdc1和sdc2
[root@localhost ~]# fdisk /dev/sdc
[root@localhost ~]# ll /dev/sdc*
brw-rw---- 1 root disk 8, 16 Feb 25 09:10 /dev/sdc
brw-rw---- 1 root disk 8, 17 Feb 25 09:10 /dev/sdc1
brw-rw---- 1 root disk 8, 18 Feb 25 09:10 /dev/sdc2
[root@localhost ~]# yum -y install mdadm ##安裝mdadm管理工具
[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdc{1,2}
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
查看陣列信息
[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.cn:0 UUID=c02009dd:fc28f287:fafca47a:49b2bd81
生成配置文件
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Feb 25 09:14:14 2016
Raid Level : raid0
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Feb 25 09:14:14 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Name : localhost.cn:0 (local to host localhost.cn)
UUID : c02009dd:fc28f287:fafca47a:49b2bd81
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdc1
1 8 18 1 active sync /dev/sdc2
對創建的RAID0創建分區
[root@localhost ~]# fdisk /dev/md0
[root@localhost ~]# ll /dev/md0*
brw-rw---- 1 root disk 9, 0 Feb 25 09:19 /dev/md0
brw-rw---- 1 root disk 259, 1 Feb 25 09:19 /dev/md0p1
格式化分區並掛載
[root@localhost ~]# mkfs.xfs /dev/md0p1
[root@localhost ~]# mkdir /raid0
[root@localhost ~]# mount /dev/md0p1 /raid0/
永久掛載
[root@localhost ~]# blkid | grep md0p1
/dev/md0p1: UUID="a25acfcc-9e33-474a-98b8-a0c07fee063e" TYPE="xfs"
[root@localhost ~]# echo "UUID=a25acfcc-9e33-474a-98b8-a0c07fee063e /raid0 xfs defaults 0 0" >> /etc/fstab
建立RAID1
1)創建RAID1
2)添加1G熱備盤
3)模擬磁盤故障,自動頂替故障盤
4)卸載陣列
環境:創建分區:sdd1,sdd2,sdd3 大小爲1G
[root@localhost ~]# fdisk /dev/sdd
[root@localhost ~]# ll /dev/sdd*
brw-rw---- 1 root disk 8, 32 Feb 26 07:35 /dev/sdd
brw-rw---- 1 root disk 8, 33 Feb 26 07:35 /dev/sdd1
brw-rw---- 1 root disk 8, 34 Feb 26 07:35 /dev/sdd2
brw-rw---- 1 root disk 8, 35 Feb 26 07:35 /dev/sdd3
創建RAID1
[root@localhost ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdd{1,2,3}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 1047552K
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
查看陣列信息
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdd32 sdd2[1] sdd1[0]
1047552 blocks super 1.2 [2/2] [UU]
unused devices: <none>
生成配置文件
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
[root@localhost ~]# cat !$
cat /etc/mdadm.conf
ARRAY /dev/md1 metadata=1.2 spares=1 name=localhost.cn:1 UUID=9b5e920c:a637e13a:9bfc64ac:74998dc0
使用RAID1
創建分區、格式化、掛載
[root@localhost ~]# fdisk /dev/md1
[root@localhost ~]# mkfs.xfs /dev/md1p1
[root@localhost ~]# mkdir /raid1
[root@localhost ~]# mount /dev/md1p1 /raid1/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 10G 3.2G 6.9G 32% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 84K 2.0G 1% /dev/shm
tmpfs 2.0G 9.0M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sr0 3.8G 3.8G 0 100% /mnt
/dev/sda1 197M 125M 72M 64% /boot
tmpfs 394M 16K 394M 1% /run/user/42
tmpfs 394M 0 394M 0% /run/user/0
/dev/md1p1 1019M 33M 987M 4% /raid1
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdd32 sdd2[1] sdd1[0]
1047552 blocks super 1.2 [2/2] [UU]
unused devices: <none>
#md1:表示此陣列的設備名
#active:表示此陣列正常讀寫
#sdd3[2][S]:表示是這個陣列第3個設備且是備用盤,sdd2[1]是此陣列第2個設備,sdd1[0]是此陣列第1個設備
11047552 blocks:表示此陣列的大小,以塊爲單位(1G)
#【2/2】:表示陣列中有2個磁盤,並且2個都在正常運行
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md1 metadata=1.2 spares=1 name=localhost.cn:1 UUID=9b5e920c:a637e13a:9bfc64ac:74998dc0
#spares=1表示:有熱備盤1個
#下面模擬RAID1中/dev/sdd1出現故障,觀察/dev/sdd3備用盤能否自動頂替故障盤
#將/dev/sdd1指定爲故障狀態,cat /proc/mdstat查看陣列狀態
#稍待片刻陣列重新重建成功,發現/dev/sdd3後的[S]消失了,成功頂替故障盤
#移除故障盤/dev/sdd1
[root@localhost ~]# watch -n 1 cat /proc/mdstat
[root@localhost ~]# mdadm -f /dev/md1 /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md1
移動損壞的設備:
[root@localhost ~]# mdadm -r /dev/md1 /dev/sdd1
mdadm: hot removed /dev/sdd1 from /dev/md1
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdd3[2] sdd2[1]
1047552 blocks super 1.2 [2/2] [UU]
重新生成配置文件
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
[root@localhost ~]# cat !$
cat /etc/mdadm.conf
ARRAY /dev/md1 metadata=1.2 name=localhost.cn:1 UUID=9b5e920c:a637e13a:9bfc64ac:74998dc0
建立RAID5
1)創建RAID5
2)停止陣列,重新激活陣列
3)再添加新的1G熱備盤,擴展陣列容量,從3磁盤個擴展到4個
實驗環境: sde1,sde2,sde3,sde5,sde6 個主分區 每個1G
創建分區
[root@localhost ~]# fdisk /dev/sde
[root@localhost ~]# ll /dev/sde*
brw-rw---- 1 root disk 8, 64 Feb 26 08:04 /dev/sde
brw-rw---- 1 root disk 8, 65 Feb 26 08:04 /dev/sde1
brw-rw---- 1 root disk 8, 66 Feb 26 08:04 /dev/sde2
brw-rw---- 1 root disk 8, 67 Feb 26 08:04 /dev/sde3
brw-rw---- 1 root disk 8, 69 Feb 26 08:04 /dev/sde5
brw-rw---- 1 root disk 8, 70 Feb 26 08:04 /dev/sde6
brw-rw---- 1 root disk 8, 71 Feb 26 08:04 /dev/sde7
brw-rw---- 1 root disk 8, 72 Feb 26 08:04 /dev/sde8
創建RAID5
[root@localhost ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -c 32 -x 1 /dev/sde{1,2,5,6}
生成配置文件
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
[root@localhost ~]# cat !$
cat /etc/mdadm.conf
ARRAY /dev/md1 metadata=1.2 name=localhost.cn:1 UUID=9b5e920c:a637e13a:9bfc64ac:74998dc0
ARRAY /dev/md5 metadata=1.2 spares=1 name=localhost.cn:5 UUID=1ac1f8c8:d4829dbb:a47fa5e2:414231f1
停止md5
停止之前先生成配置文件
[root@localhost ~]# mdadm -S /dev/md5
mdadm: stopped /dev/md5
激活:
[root@localhost ~]# mdadm -As
#再新添加一塊硬盤分區/dev/sde7,希望擴展RAID5陣列到4塊硬盤
[root@localhost ~]# mdadm -a /dev/md5 /dev/sde7
mdadm: added /dev/sde7
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sde75 sde1[0] sde63 sde5[4] sde2[1]
2095104 blocks super 1.2 level 5, 32k chunk, algorithm 2 [3/3] [UUU]
md1 : active raid1 sdc3[2] sdc2[1]
1047552 blocks super 1.2 [2/2] [UU]
unused devices: <none>
[root@localhost ~]# mdadm -G /dev/md5 -n 4
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sde7[5] sde1[0] sde63 sde5[4] sde2[1]
3142656 blocks super 1.2 level 5, 32k chunk, algorithm 2 [4/4] [UUUU]
md1 : active raid1 sdc3[2] sdc2[1]
1047552 blocks super 1.2 [2/2] [UU]
重新生成配置文件
[root@localhost ~]# mdadm -Ds >/etc/mdadm.conf
瞭解:
建立RAID 1+0雙層架構的方法
方法,先創建raid1,再使用創建的raid1設備創建raid0
[root@localhost ~]# fdisk /dev/sdf
[root@localhost ~]# ll /dev/sdf*
brw-rw---- 1 root disk 8, 80 Feb 26 08:39 /dev/sdf
brw-rw---- 1 root disk 8, 81 Feb 26 08:39 /dev/sdf1
brw-rw---- 1 root disk 8, 82 Feb 26 08:39 /dev/sdf2
brw-rw---- 1 root disk 8, 83 Feb 26 08:39 /dev/sdf3
brw-rw---- 1 root disk 8, 84 Feb 26 08:39 /dev/sdf4
brw-rw---- 1 root disk 8, 85 Feb 26 08:39 /dev/sdf5
首先、創建2個底層的raid1
[root@localhost ~]# mdadm -C -v /dev/md11 -l 1 -n 2 /dev/sdf{1,2}
[root@localhost ~]# mdadm -C -v /dev/md12 -l 1 -n 2 /dev/sdf{3,5}
再創建上層的raid0
[root@localhost ~]# mdadm -C -v /dev/md10 -l 0 -n 2 /dev/md1{1,2}
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
生成配置文件
[root@localhost ~]# cat !$
cat /etc/mdadm.conf
ARRAY /dev/md1 metadata=1.2 name=localhost.cn:1 UUID=9b5e920c:a637e13a:9bfc64ac:74998dc0
ARRAY /dev/md5 metadata=1.2 spares=1 name=localhost.cn:5 UUID=1ac1f8c8:d4829dbb:a47fa5e2:414231f1
ARRAY /dev/md11 metadata=1.2 name=localhost.cn:11 UUID=c80e5768:eca7d5fb:6a576707:06884d89
ARRAY /dev/md12 metadata=1.2 name=localhost.cn:12 UUID=46da12ab:4b6a9a71:16d2715b:18e52724
ARRAY /dev/md10 metadata=1.2 name=localhost.cn:10 UUID=632a0efc:66e6847c:615ee844:a04ab1f3
關閉所有的RAID
卸載raid的掛載
[root@localhost ~]# mdadm -Ss
全部激活
[root@localhost ~]# mdadm -As
mdadm刪除軟raid的方法
首先,創建一個raid1
[root@localhost ~]# mdadm -C /dev/md3 -l 1 -n 2 /dev/sdc{1,2}
開始刪除raid
[root@localhost ~]# umount /dev/md3p1
[root@localhost ~]# mdadm -Ss
刪除配置文件
[root@localhost ~]# rm -rf /etc/mdadm.conf
清除物理磁盤中的raid標識
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdc1
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdc2
參數說明:
mdadm --misc options... devices
report on or modify various md related devices. #報告或修改各種MD相關的設備
--zero-superblock : erase the MD superblock from a device. #擦除設備中的MD超級塊。