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建立分區
[[email protected] ~]# 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
[[email protected] ~]# 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.
[[email protected] ~]# 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
[[email protected] ~]# mdadm --detail --scan > /etc/mdadm.conf //建立mdadm.conf,但需要修改内容
[[email protected] ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 spares=1 name=xiaoagiao:0 UUID=24a8ee5f:4b36775e:a6681144:a9d26e98
[[email protected] ~]# vi /etc/mdadm.conf
[[email protected] ~]# 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标記為出現故障的磁盤。
[[email protected] ~]# mdadm /dev/md0 --fail /dev/sdc1 //标記/dev/sdc1/損壞
mdadm: set /dev/sdc1 faulty in /dev/md0
因為有一個備用磁盤,是以當一個損壞後備用磁盤會立即頂替工作。通過/proc/mdstat檔案可檢視目前陣列的狀态。
[[email protected] ~]# 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