RAID
獨立磁盤冗餘陣列(RAID,redundant array of independent disks)是把相同的數據存儲在多個硬盤的不同的地方(因此,冗餘地)的方法。通過把數據放在多個硬盤上,輸入輸出操作能以平衡的方式交疊,改良性能。因爲多個硬盤增加了平均故障間隔時間(MTBF),儲存冗餘數據也增加了容錯。
RAID類型 | 個數 | 利用率 | 優缺點 |
---|---|---|---|
RAID0條帶集 | 2或2+ | 100% | 讀寫性能提升,不容錯 |
RAID1鏡像集 | 2或2+ | 50% | 讀性能提升,寫性能下降,有冗餘能力 |
RAID5奇偶校驗條帶集 | 3+ | n-1 | 讀寫性能提升,容錯,允許壞一個盤 |
RAID6奇偶校驗條帶集雙校驗 | 4+ | n-2 | 讀寫性能提升,容錯,允許壞2個盤 |
RAID10 | 4+ | 50% | 讀寫性能提升,容錯 |
RAID01 | 4+ | n-4 | 讀寫性能提升,容錯 |
RAID50 | 6 | n-2 | 讀寫性能提升,容錯 |
RAID60 | 8 | n-4 | 讀寫性能提升,容錯 |
RAID0
定義:
RAID 0又稱爲Stripe或Striping,它代表了所有RAID級別中最高的存儲性能。RAID 0提高存儲性能的原理是把連續的數據分散到多個磁盤上存取,這樣,系統有數據請求就可以被多個磁盤並行的執行,每個磁盤執行屬於它自己的那部分數據請求。這種數據上的並行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能
原理:
系統向三個磁盤組成的邏輯硬盤(RAID0 磁盤組)發出的I/O數據請求被轉化爲3項操作,其中的每一項操作都對應於一塊物理硬盤。通過建立RAID 0,原先順序的數據請求被分散到所有的三塊硬盤中同時執行
RAID1
定義:
RAID 1通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。
工作原理:
RAID1是將一個兩塊硬盤所構成RAID磁盤陣列,其容量僅等於一塊硬盤的容量,因爲另一塊只是當作數據“鏡像”
RAID5
定義:
RAID 5具有和RAID0相近似的數據讀取速度,只是多了一個奇偶校驗信息,寫入數據的速度比對單個磁盤進行寫入操作稍慢。同時由於多個數據對應一個奇偶校驗信息,RAID5的磁盤空間利用率要比RAID 1高,存儲成本相對較低,是目前運用較多的一種解決方案
工作原理:
RAID5把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁盤上,其中任意N-1塊磁盤上都存儲完整的數據,也就是說有相當於一塊磁盤容量的空間用於存儲奇偶校驗信息。因此當RAID5的一個磁盤發生損壞後,不會影響數據的完整性,從而保證了數據安全。當損壞的磁盤被替換後,RAID還會自動利用剩下奇偶校驗信息去重建此磁盤上的數據,來保持RAID5的高可靠性
RAID6
定義:
引入雙重校驗的概念,它可以保護陣列中同時出現。兩個磁盤失效時,陣列仍能繼續工作不會發生數據丟失。RAID6等級是在RAID5的基礎上,爲了進一步增長數據保護而設計的一種方式,它可以看作是一種擴展RAID5等級。
RAID10
定義:
RAID10也被稱爲鏡象陣列條帶。象RAID0一樣,數據跨磁盤抽取;象RAID1一樣,每個磁盤都有一個鏡象磁盤, 所以RAID 10的另一種會說法是 RAID 0+1
實現原理:
Raid10其實結構非常簡單,首先創建2個獨立的Raid1,然後將這兩個獨立的Raid1組成一個Raid0,當往這個邏輯Raid中寫數據時,數據被有序的寫入兩個Raid1中。磁盤1和磁盤2組成一個Raid1,磁盤3和磁盤4又組成另外一個Raid1;這兩個Raid1組成了一個新的Raid0
RAID01
定義:RAID01兼備了RAID0和RAID1的優點,他先用兩塊磁盤建立鏡像,然後再在鏡像內部做條帶化。RAID1的數據將同時寫入到兩個磁盤陣列中,如果其中一個陣列損壞。仍可繼續工作。保證數據安全性的同時又提高了性能。RAID1和RAID0內部都含有RAID1的模式。因此整體磁盤利用率均爲50%。
創建RAID5
使用mdadm工具
-C 或–create | 創建一個新RAID |
---|---|
-A 或–assemble | 加載一個已存在的陣列,後面跟陣列以及設備的名稱。 |
-D或–detail | 輸出指定RAID設備的詳細。 |
-S或–stop | 停止指定的RAID設備。 |
-l或–level | 設置raid級別 ( -l=#) |
-n或–raid-devices | 指定陣列中活動磁盤的數量 |
–spare-devices | 指定陣列中的備用磁盤數目。 |
-s或–scan | 掃描配置文件或/proc/mdstat文件來搜索軟raid的配置信息,該參數不能單獨使用,只能配置其他參數才能使用 |
準備4個空閒磁盤
1創建分區
[root@xiaoagiao ~]# fdisk /dev/sdc //分別對四塊磁盤進行分區
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xfed67348.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +100M
Partition 1 of type Linux and of size 100 MiB is set
Command (m for help): w
2 創建RAID5
[root@xiaoagiao ~]# mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[c-f]1 //創建一個RAID5,/dev/md0,活動磁盤數量爲3,一個備用
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@xiaoagiao ~]# mdadm -D /dev/md0 //查看/dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Apr 4 02:02:27 2020
Raid Level : raid5 //RAID類型
Array Size : 200704 (196.00 MiB 205.52 MB)
Used Dev Size : 100352 (98.00 MiB 102.76 MB)
Raid Devices : 3 //可用爲3個
Total Devices : 4 //總計4個
Persistence : Superblock is persistent
Update Time : Sat Apr 4 02:02:29 2020
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : xiaoagiao:0 (local to host xiaoagiao)
UUID : 24a8ee5f:4b36775e:a6681144:a9d26e98
Events : 18
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
4 8 65 2 active sync /dev/sde1
3 8 81 - spare /dev/sdf1
3創建RAID配置文件
RAID配置文件“mdadm.conf”,默認是不存在的。所以需要手工創建。該配置文件存在的主要作用是啓動系統的時候。能夠自動加載軟RAID,同時方便日後管理。
mdadm.conf包括:用於軟raid的所有設備。ARRAY選項所指定陣列設備名,RAID級別,陣列中活動設備數目及UUID
[root@xiaoagiao ~]# mdadm --detail --scan > /etc/mdadm.conf //創建mdadm.conf,但需要修改內容
[root@xiaoagiao ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 spares=1 name=xiaoagiao:0 UUID=24a8ee5f:4b36775e:a6681144:a9d26e98
[root@xiaoagiao ~]# vi /etc/mdadm.conf
[root@xiaoagiao ~]# cat /etc/mdadm.conf
DEVICE /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 //添加用於RAID設備
ARRAY /dev/md0 metadata=1.2 spares=1 name=xiaoagiao:0 UUID=24a8ee5f:4b36775e:a6681144:a9d26e98
4創建文件系統
# mkfs.ext4 /dev/md0
維護RAID
若一個磁盤損壞(/dev/sdc1),系統會自動標記該磁盤爲故障磁盤,並停止對故障磁盤的讀寫操作。所以需要將/dev/sdc1標記爲出現故障的磁盤。
[root@xiaoagiao ~]# mdadm /dev/md0 --fail /dev/sdc1 //標記/dev/sdc1/損壞
mdadm: set /dev/sdc1 faulty in /dev/md0
因爲有一個備用磁盤,所以當一個損壞後備用磁盤會立即頂替工作。通過/proc/mdstat文件可查看當前陣列的狀態。
[root@xiaoagiao ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde1[4] sdf1[3] sdd1[1] sdc1[0](F) //可以看出 sdc1損壞,其他三個工作正常。
200704 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
移除有故障的磁盤。
# mdadm /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1 from /dev/md0
添加新的磁盤
# mdadm /dev/md0 --add /dev/sdc1
mdadm: added /dev/sdc1