寫在前面–命令總覽:創建RAID:mdamd -C [-l級別 -n盤數量 -cchunk -a是否詢問]
查看RAID: mdadm –D 停止RAID:mdadm –S 管理RAID:-f標記損壞 -r刪除 -a添加
watch 文件:/proc/mdstat 操作簡要流程在尾部
RAID各級特性
RAID全稱為獨立磁盤冗余陣列(Redundant Array of Independent Disks),基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴的硬盤。
RAID優點如下:
把多塊硬盤組合成更大的硬盤當做一塊硬盤使用
提高IO能力:磁盤并行讀寫
提高耐用性:通過磁盤冗余來實現
擁有獨立內存和自我供電能力,在突然斷電時能靠電池把內存中的數據寫入磁盤,一定程度上防止數據丟失。
RAID的實現方式:
外接式磁盤陣列:通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器
上述兩種方式:RAID配置在BIOS中
software RAID:但現在幾乎沒人用了
RAID級別:level,多塊磁盤組織在一起的工作方式不同,而不是性能好壞之分
單一類型:
RAID-0:條帶卷。chunk
假如,有兩塊硬盤A和B,把數據存儲到這兩塊硬盤上。就把數據切割成到四數據塊,把數據塊1存儲到A盤上,數據塊2存儲到B盤上,把數據塊3再存儲到A盤上,把數據塊4存儲到B盤上。這樣A和B盤可以同時存儲,整個數據存儲的時間就減半了。相同的,讀取時從兩盤一起讀數據,讀取的時間也減半了。
但是,假如一塊磁盤壞掉的可能性為1/4,那么兩塊盤壞掉一塊的概率就為1/2,壞掉任何塊盤都會導致整個數據的損壞,所以使用磁盤越多,雖然IO能力越強,但風險也越大。上述數據塊1,數據塊2等稱為chunk。這種方式一般存放不是很重要的數據。
特性:
讀寫能力提升
可用空間:n*min 假如有三塊硬盤分別為10G,12G,15G 大小,可用空間為3x10G=30G。
無容錯(冗余)能力,反而增加風險
需要磁盤數量:2塊以上
RAID-1:鏡像卷。
把數據分別寫入A和B兩塊盤內,相當于把數據存了兩份,這兩個盤內的數據完全一樣。這樣,即便有一塊盤壞掉,另一塊盤也能保存好完成數據。讀取是從兩塊盤一起讀,所以讀取能力上升。但是寫入數據時需要把數據寫兩遍,所以寫入能力下降。
特性:
寫性能下降
讀性能提升
可用空間:1*min,只有一塊盤有用,其他盤只是做備份
有容錯能力
最少磁盤數:2
RAID-4:校驗盤技術。假如有四塊盤,拿三塊盤A,B,C分別存儲小數據塊chunk,拿最后一塊盤D做校驗盤,存儲前面三塊盤數據的校驗碼(校驗碼可以理解為前三塊盤數據的總和但占用空間卻沒增加)。這樣就允許壞一塊盤,無論任何一塊盤壞掉,通過另外三塊盤都可以找回丟失的數據。但是校驗盤D存儲數據多,壓力大,而且前ABC三塊盤任何一塊壞掉,校驗盤D就不得不扛起那塊壞掉的盤的工作,壓力很大,所以壞掉的可能性最大。所以通常就為校驗盤D做一塊備胎盤E,E時刻監視D的一舉一動,哪一天D壞掉了,備胎E就會自動自告奮勇,挑起大梁。
RAID-5:三塊盤輪流做校驗盤。
比如第一輪存儲把chunk1存儲到A上,chunk2存儲到B上,chunk3存儲到C上,校驗碼存儲到D上。第二輪存儲校驗碼存到C上,chunk存儲到ABD上,第三輪存儲把校驗碼存儲到B上,chunk存儲到ACD上,第四輪把校驗碼存儲到A上,以此類推。這樣就不會有哪一塊盤的壓力特別大了。
讀寫性能提升
可用空間:n-1,相當于一塊拿來做校驗盤
容錯能力:1塊盤
最少磁盤數:3
RAID-6:
拿兩個盤做校驗盤,這樣可以允許壞兩塊磁盤,但效果不如RAID10
讀寫性能提升
可用空間:n-2
容錯能力:2塊盤
最少磁盤數:4
混合類型:
RAID-10:先做1再做0,先組合下層,才能組合上層
假如6個盤分成三組,AB為一組,CD二組,EF三組。簡稱把數據分成三個chunk,每一組一個chunk,
讀寫性能提升。一組拿到chunk后把自己的chunk分別存到A,B盤上,這樣A和B就互為鏡像了。這樣每個小組內都允許壞掉一塊盤,比如ACE同時壞掉都沒事。
可用空間:1/2
有容錯能力:每組只能壞一塊
最少磁盤數:4
RAID-01:
例如把6個盤分成兩組,ABC為第一組,DEF為第二組。把數據給第一組,再把相同的數據給第二組。第一組拿到數據后把數據切成三個chunk,分別存儲到A、B、C、上。第二組拿到數據后也執行與第一組相同的操作。表面看兩組互為鏡像,但由于組拿到數據后又進行了切割,兩個組的切割方式幾乎不可能完全相同,所以如果 第一組和第二組都各自壞掉一塊盤,數據基本就找不回來了,所以只允許有一組出錯,一組內全部壞掉都沒事,但不允許兩組同時出現壞盤。
RAID-50:至少6塊盤,最多壞一個
RAID-7:
JBOD:just a bunch of disks
最簡單的將多塊磁盤空間合并成一個大的可用空間
可用空間:sum,不論是否一樣大
無容錯能力
常用級別:RAID-0,RAID-1,RAID-10,RAID-50,JBDO
一般用10,和50,或0,其他不好用
centos6上軟RAID的實現;
結合內核中的md(multi device)
mdadm:模式化工具
支持LINEAR, RAID0,RAID4,RAID5,RAID6,RAID10
創建:-C 查看 –D 管理-f,-r,-a 停用,刪除-S 裝配-A 監控-F
-C:創建RAID
mdadm –C /dev/md0 –l 5 –n 3 –x 1 –c 128K -a yes /dev/sda{5,6,7}
-n #:使用#塊設備創建此RAID
-l #:指明RAID級別
-a {yes,no}:自動創建目標RAID的設備的設備文件
-c chunk_size:指明塊大小
-x#:指明空閑盤的個數
-D:顯示raid的詳細信息
mdadm -D /dev/md0
觀察md狀態:
cat /proc/mdstat
watch命令:
watch –n1 'command'
watch -n1 'cat /proc/mdstat'
管理模式:
-f:標記磁盤為損壞
mdadm /dev/md0 -f /dev/sda6
-a添加磁盤
mdadm /dev/md0 -a /dev/sda5
-r移除磁盤
mdadm /dev/md0 -r /dev/sda5
-S停止,刪除md設備
mdadm -S /dev/md0 ———刪除md0
下面為創建RAID5的詳細過程:
[root@localhost ~]# mdadm -C /dev/md0 -l 5 -n 3 -x 1 -c 128K -a yes /dev/sda{7,8,9,10}
mdadm: /dev/sda7 appears to contain an ext2fs file system —————-創建/dev/md0
size=2099724K mtime=Thu Jan 1 08:00:00 1970
mdadm: largest drive (/dev/sda9) exceeds size (2097664K) by more than 1%
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sda9[4] sda10[3](S) sda8[1] sda7[0]
4195328 blocks super 1.2 level 5, 128k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
[root@localhost ~]# mke2fs -t ext4 /dev/md0 ———–格式化md0
[root@localhost ~]# mkdir /mydata
[root@localhost ~]# mount /dev/md0 /mydata
[root@localhost ~]# mdadm -D /dev/md0 —-可以看到一共有4塊設備組成/dev/sda{7,8,9}和/dev/sda10
[root@localhost ~]# mdadm /dev/md0 -f /dev/sda7 ——–把/dev/sda7標記損壞
mdadm: set /dev/sda7 faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
Number Major Minor RaidDevice State
3 8 10 0 spare rebuilding /dev/sda10
1 8 8 1 active sync /dev/sda8 ——–可看到/dev/sda10自動替換到了
—————————/dev/sda7的位置,正在同步數據
4 8 9 2 active sync /dev/sda9
0 8 7 – faulty /dev/sda7
[root@localhost ~]# mdadm /dev/md0 -f /dev/sda8 —–再標記壞一塊盤
mdadm: set /dev/sda8 faulty in /dev/md0
[root@localhost ~]# cd /mydata
[root@localhost mydata]# ll
總用量 16
drwx——. 2 root root 16384 12月 20 17:11 lost+found ————-原來數據還能查看
[root@localhost mydata]# mdadm /dev/md0 -r /dev/sda7 ———移除/dev/sda7
mdadm: hot removed /dev/sda7 from /dev/md0
[root@localhost mydata]# mdadm /dev/md0 -r /dev/sda8
mdadm: hot removed /dev/sda8 from /dev/md0
[root@localhost mydata]# mdadm -D /dev/md0 ——發現只剩兩塊盤
………………………………………………..
Number Major Minor RaidDevice State
3 8 10 0 active sync /dev/sda10
2 0 0 2 removed
4 8 9 2 active sync /dev/sda9
[root@localhost mydata]# mdadm /dev/md0 -a /dev/sda7 ——-/dev/sda7加上去
mdadm: added /dev/sda7
[root@localhost mydata]# mdadm -D /dev/md0 ———-/dev/sda7添加成功
Number Major Minor RaidDevice State
3 8 10 0 active sync /dev/sda10
5 8 7 1 spare rebuilding /dev/sda7
4 8 9 2 active sync /dev/sda9
下面為創建RAID5的簡要過程:
fdisk /dev/sda — 創建4個5G分區—用t,設備號即數字—-把磁盤類型改寫fd,RAID用的磁盤類型
cat /proc/mdstat ———此文件可查看RAID設備的信息
mdadm -C /dev/md0 -a yes -n 3 -l 5 /dev/sda{5,6,7,8,}—– 創建一個名為md0的RAID
mke2fs -t ext4 /dev/md0 ————-把RAID格式化成ext4格式
mount /dev/md0 /mydata ———-把RAID掛載至 /mydata目錄下
mount ———-查看是否掛載成功
df –lh ———查看磁盤信息
blkid /dev/md0 ———–查看md0的信息
mdadm -D /dev/md0 ————查看md0的詳細信息
mdadm /dev/md0 -f /dev/sda5———損壞一塊 損壞RAID md0 上的一塊盤
watch -n1 'cat /proc/mdstat' ———-監控這個文件,隨時掌握RAID的信息
mdadm -D /dev/md0 ———-查看md0的詳細信息
mdadm /dev/md0 -f /dev/sda6–再損壞一塊盤
mdadm -D /dev/md0 —————查看md0的詳細信息,發現依然能訪問掛載點
mdadm /dev/md0 -r /dev/sda5 ——-移除壞掉的盤
mdadm /dev/md0 -r /dev/sda6
mdadm -D /dev/md0
mdadm /dev/md0 -a /dev/sda5 ———給md0加上一塊盤
mdadm -D /dev/md0 ———–查看md0的狀態
原創文章,作者:flivfox,如若轉載,請注明出處:http://www.www58058.com/10285