Linux 獨立冗余磁盤陣列介紹
常用raid介紹
raid 0
RAID 0又稱為Stripe或Striping,它代表了所有RAID級別中最高的存儲性能。RAID 0提高存儲性能的原理是把連續的數據分散到多個磁盤上存取,這樣,系統有數據請求就可以被多個磁盤並行的執行,每個磁盤執行屬於它自己的那部分數據請求。這種數據上的並行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能。
使用:以2塊盤為例子,數據存儲各一半
優點:寫入讀取快,適合保存非重要數據
可用空間:num*min(device)
raid 1
RAID 1通過磁盤數據鏡像實現數據冗余,在成對的獨立磁盤上產生互 為備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。
使用:以2塊盤為例子,數據各一份
優點:讀性能提升,數據冗余
缺點:寫性能略有下降
可用空間:1*min(device)
raid 4
RAID是英文Redundant Array of IndependentDisks的縮寫,中文簡稱為獨立磁盤冗余陣列。RAID就是一種由多塊硬盤構成的冗余陣列。雖然RAID包含多塊硬盤,但是在操作系統下是作為一個獨立的大型存儲設備出現。RAID4即帶奇偶校驗碼的獨立磁盤結構,RAID4和RAID3很象。在獨立訪問陣列中,每個磁盤都是獨立運轉的,因此不同的I/O請求可以並行地滿足
使用:以3塊盤為例子,一塊校驗盤,用戶還原數據,2塊數據盤
優點:有冗余能力,讀、寫性能提升,允許壞一塊盤
缺點:校驗盤壓力過大
可用空間:(N-1)*min(device)
raid 5
RAID 5 是一種存儲性能、數據安全和存儲成本兼顧的存儲解決方案。 RAID 5可以理解為是RAID 0和RAID 1的折中方案。RAID 5可以為系統提供數據安全保障,但保障程度要比Mirror低而磁盤空間利用率要比Mirror高。RAID 5具有和RAID 0相近似的數據讀取速度,只是多了一個奇偶校驗信息,寫入數據的速度比對單個磁盤進行寫入操作稍慢。同時由於多個數據對應一個奇偶校驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較低,是目前運用較多的一種解決方案。
使用:以3塊盤為例子,1塊輪流做校驗盤和2塊輪流存儲盤
優點:相比radi4,降低校驗盤壓力
缺點:只能壞一塊盤
可用空間:(N-1)*min(device)
raid 6
RAID6技術是在RAID 5基礎上,為了進一步加強數據保護而設計的一種RAID方式,實際上是一種擴展RAID 5等級。與RAID 5的不同之處於除了每個硬盤上都有同級數據XOR校驗區外,還有一個針對每個數據塊的XOR校驗區。當然,當前盤數據塊的校驗數據不可能存在當前盤而是交錯存儲的,這樣一來,等於每個數據塊有了兩個校驗保護屏障(一個分層校驗,一個是總體校驗),因此RAID 6的數據冗余性能相當好。但是,由於增加了一個校驗,所以寫入的效率較RAID 5還差,而且控制系統的設計也更為復雜,第二塊的校驗區也減少了有效存儲空間。
使用:以4塊盤為例子,二塊校驗盤,用戶還原數據,2塊數據盤
優點:容錯比raid 5好
缺點:寫入沒raid 5 好
可用空間:(N-2)*min(device)
raid 10
Raid 10是一個Raid 1與Raid0的組合體,它是利用奇偶校驗實現條帶集鏡像,所以它繼承了Raid0的快速和Raid1的安全。我們知道,RAID 1在這裏就是一個冗余的備份陣列,而RAID 0則負責數據的讀寫陣列。其實,右圖只是一種RAID 10方式,更多的情況是從主通路分出兩路,做Striping操作,即把數據分割,而這分出來的每一路則再分兩路,做Mirroring操作,即互做鏡像。
使用:以4塊盤為例子,分2對 raid 1,2對raid為raid 0
優點:提升讀寫,有冗余,每對raid1能壞一塊
虛擬實現raid 5
mdadm 常用選項說明
支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;
模式:
-C: 創建模式
|--- -n #: 使用#個塊設備來創建此RAID;
|--- -l #:指明要創建的RAID的級別;
|--- -a {yes|no}:自動創建目標RAID設備的設備文件;
|--- -c CHUNK_SIZE: 指明塊大小;
|--- -x #: 指明空閑盤的個數;
-D:管理模式 顯示raid的詳細信息;
-f: 標記指定磁盤為損壞;
-a: 添加磁盤
-r: 移除磁盤
實驗先創建4個1G的分區,用2塊存儲數據,1塊存儲校驗,1塊備用,創建raid 5,
#創建4塊分區,註意格式是fd
[root@localhost sh]# fdisk /dev/sdb
命令(輸入 m 獲取幫助):t
分區號 (1-7,默認 7):5
Hex 代碼(輸入 L 列出所有代碼):fd
已將分區“Linux”的類型更改為“Linux raid autodetect”
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 16779263 8388608 5 Extended
/dev/sdb5 4096 2101247 1048576 fd Linux raid autodetect
/dev/sdb6 2103296 4200447 1048576 fd Linux raid autodetect
/dev/sdb7 4202496 6299647 1048576 fd Linux raid autodetect
/dev/sdb8 6301696 8398847 1048576 fd Linux raid autodetect
查看本機虛擬raid
[root@localhost sh]# cat /proc/mdstat
Personalities :
unused devices: <none>
創建
[root@localhost sh]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sdb{5,6,7,8}
#-x 1 一塊是空閑備份 -l 5 raid5 -n 3塊使用盤
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
再次查看
[root@localhost sh]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb7[4] sdb8[3](S) sdb6[1] sdb5[0]
2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
#active 活動狀態,可以使用
掛載
[root@localhost sh]# mke2fs -t ext4 /dev/md0
[root@localhost sh]# mount /dev/md0 /mnt/t2
[root@localhost sh]# df -h /mnt/t2/ #2g可以用設備
文件系統 容量 已用 可用 已用% 掛載點
/dev/md0 2.0G 6.0M 1.9G 1% /mnt/t2
詳細信息查看:
[root@localhost t2]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Apr 23 03:14:26 2018
Raid Level : raid5
Array Size : 2095104 (2046.00 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.00 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Apr 23 03:20:48 2018
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 24dec4a5:d57dbe03:f9aa2729:b2997a05
Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
3 8 24 - spare /dev/sdb8 空閑狀態
手動標記一塊錯誤盤
[root@localhost t2]# mdadm /dev/md0 -f /dev/sdb6
mdadm: set /dev/sdb6 faulty in /dev/md0
[root@localhost t2]# cat /proc/mdstat #這個階段可以觀察數據恢復 直到active
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb7[4] sdb8[3] sdb6[1](F) sdb5[0]
2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
再次觀察
[root@localhost t2]# mdadm -D /dev/md0
#會發現
1 8 22 - faulty /dev/sdb6 #損壞盤 而8已經從空閑到正常使用
#如果在移掉一個
State : clean也會變化成clean,degrade降級狀態
手動移除壞的分區
[root@localhost t2]# mdadm /dev/md0 -r /dev/sdb6
mdadm: hot removed /dev/sdb6 from /dev/md0
再次添加
[root@localhost t2]# mdadm /dev/md0 -a /dev/sdb6
mdadm: added /dev/sdb6
移除raid 5
[root@localhost mnt]# umount /mnt/t2
[root@localhost mnt]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
Linux 獨立冗余磁盤陣列介紹