各位粉絲朋友大家好,今天給大家分享下RAID磁碟陣列的原理與搭建,希望能夠給各位粉絲朋友帶來幫助,也希望各位粉絲朋友在學習的過程中能夠有所收穫。
磁碟陣列(Redundant Arrays of Independent Disks,RAID),有「獨立磁碟構成的具有冗餘能力的陣列」之意(其中一塊盤壞了,數據不丟失)。 磁碟陣列是由很多價格較便宜的磁碟,以硬體(RAID卡)或軟體(MDADM)形式組合成一個容量巨大的磁碟組,利用多個磁碟組合在一起,提升整個磁碟系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬碟上。 磁碟陣列還能利用同位檢查(Parity Check)的觀念,在陣列中任意一個硬碟故障時,仍可讀出數據,在數據重構時,將數據經計算後重新置入新硬碟中(也就是壞了一塊盤,拔掉,插入新盤,數據還能恢復到新盤,利用奇偶校驗)
註:RAID可以預防數據丟失,但是它並不能完全保證你的數據不會丟失,所以大家使用RAID的同時還是注意備份重要的數據
RAID的創建有兩種方式:軟RAID(通過作業系統軟體來實現)和硬RAID(使用硬體陣列卡);在企業中用的最多的是:raid1、raid5和raid10。不過隨著雲的高速發展,阿里雲,騰訊雲等供應商一般可以把硬體問題解決掉。(你在用雲的時候,會關注供應商底層是用什麼raid類型嗎)
RAID幾種常見的類型
RAID類型
最低磁碟個數
空間利用率
各自的優缺點
級 別
說 明
RAID0
條帶卷
2+
100%
讀寫速度快,不容錯
RAID1
鏡像卷
2
50%
寫速度一般,讀速度提升,容錯
RAID5
帶奇偶校驗的條帶卷
3+
(n-1)/n
讀寫速度快,容錯,允許壞一塊盤
RAID6
帶奇偶校驗的條帶集,雙校驗
4+
(n-2)/n
讀寫快,容錯,允許壞兩塊盤
RAID10
RAID1的安全+RAID0的高速
4
50%
讀寫速度快,容錯
RAID50
RAID5的安全+RAID0的高速
6
(n-2)/n
讀寫速度快,容錯
RAID基本思想:把好幾塊硬碟通過一定組合方式把它組合起來,成為一個新的硬碟陣列組,從而使它能夠達到高性能硬碟的要求
RAID有三個關鍵技術:
鏡像:提供了數據的安全性;
chunk條帶(塊大小也可以說是條帶的粒度),它的存在的就是為了提高I/O,提供了數據並發性
數據的校驗:保證了數據的可靠性
Raid相對於單個磁碟優點:
RAID-0的工作原理
條帶 (strping),也是我們最早出現的RAID模式
需磁碟數量:2塊以上(大小最好相同),是組建磁碟陣列中最簡單的一種形式,只需要2塊以上的硬碟即可.
特點:成本低,可以提高整個磁碟的性能和吞吐量。RAID 0沒有提供冗餘或錯誤修復能力,速度快.
任何一個磁碟的損壞將損壞全部數據;磁碟利用率為100%。
RAID-1
mirroring(鏡像卷),需要磁碟兩塊以上
原理:是把一個磁碟的數據鏡像到另一個磁碟上,也就是說數據在寫入一塊磁碟的同時,會在另一塊閒置的磁碟上生成鏡像文件,(同步)
RAID 1 mirroring(鏡像卷),至少需要兩塊硬碟,raid大小等於兩個raid分區中最小的容量(最好將分區大小分為一樣),數據有冗餘,在存儲時同時寫入兩塊硬碟,實現了數據備份;
磁碟利用率為50%,即2塊100G的磁碟構成RAID1隻能提供100G的可用空間。如下圖
RAID-5
需要三塊或以上硬碟,可以提供熱備盤實現故障的恢復;只損壞一塊,沒有問題。但如果同時損壞兩塊磁碟,則數據將都會損壞。 空間利用率: (n-1)/n 2/3 如下圖所示
奇偶校驗信息的作用:
當RAID5的一個磁碟數據發生損壞後,利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。
擴展:異或運算
是用相對簡單的異或邏輯運算(相同為0,相異為1)
嵌套RAID級別RAID-10鏡像+條帶
RAID 10是將鏡像和條帶進行兩級組合的RAID級別,第一級是RAID1鏡像對,第二級為RAID 0。比如我們有8塊盤,它是先兩兩做鏡像,形成了新的4塊盤,然後對這4塊盤做RAID0;當RAID10有一個硬碟受損其餘硬碟會繼續工作,這個時候受影響的硬碟只有2塊。
幾個方案對比下來, RAID5是最適合的,如下圖:
RAID硬碟失效處理
一般兩種處理方法:熱備和熱插拔
熱備:HotSpare
定義:當冗餘的RAID組中某個硬碟失效時,在不幹擾當前RAID系統的正常使用的情況下,用RAID系統中另外一個正常的備用硬碟自動頂替失效硬碟,及時保證RAID系統的冗餘性(就像汽車上的備胎)
全局式:備用硬碟為系統中所有的冗餘RAID組共享 (多個汽車一個備胎)
專用式:備用硬碟為系統中某一組冗餘RAID組專用 (一個汽車一個備胎)
如下圖所示:是一個全局熱備的示例,該熱備盤由系統中兩個RAID組共享,可自動頂替任何一個RAID中的一個失效硬碟
熱插拔:HotSwap
定義:在不影響系統正常運轉的情況下,用正常的物理硬碟替換RAID系統中失效硬碟。(燈變紅了,有硬碟失效了,直接拔掉,插上一塊新的,伺服器要支持熱插拔HotSwap)
RAID的實現方式
互動:我們做硬體RAID,是在裝系統前還是之後?
答:先做陣列才裝系統 ,一般伺服器啟動時,有顯示進入配置Riad的提示,比如:按下CTRL+L/H/M進入配置raid界面
硬RAID:需要RAID卡,我們的磁碟是接在RAID卡的,由它統一管理和控制。數據也由它來進行分配和維護;它有自己的cpu,處理速度快
連結:https://pan.baidu.com/s/1AFY9Yb5Ic0Rt91FVxB3ChA 提取碼:wo3m 無聲視頻
RAID:通過作業系統實現
Linux內核中有一個md(multiple devices)模塊在底層管理RAID設備,它會在應用層給我們提供一個應用程式的工具mdadm ,mdadm是linux下用於創建和管理軟體RAID的命令。
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 顯示詳細信息
-S
停止陣列
互動: raid5需要3塊硬碟。 那麼使用4塊硬碟,可以做raid5嗎?
可以的
實驗環境:新添加11塊硬碟,每塊磁碟的作用如下:
互動:磁碟達到sdz以後,名字應該如何排?
sdaa 、 sdab 。。。
實驗環境:
raid種類 磁碟 熱備盤
raid0 sdb、sdc
raid1 sdd、sde sdf
raid5 sdg、sdh、sdi sdj
raid10 分區:sdk1、sdk2、sdk3、sdk4
註:工作作中正常做raid全部是使用獨立的磁碟來做的。為了節約資源,raid10以一塊磁碟上多個分區來代替多個獨立的磁碟做raid,但是這樣做出來的raid沒有備份數據的作用,因為一塊磁碟壞了,這個磁碟上所做的raid也就都壞了。
創建RAID0實驗環境:
raid種類 磁碟 熱備盤
raid0 sdb、sdc
1.創建raid0
[root@xuegod63 ~]#yum -y install mdadm
[root@xuegod63 ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
-C 創建 -v 詳細信息 -l陣列級別 -n 陣列成員數量
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@xuegod63 ~]# mdadm -Ds
-D 列印陣列設備詳細信息 s得到陣列缺失信息
2. 查看陣列信息
[root@xuegod63 ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=xuegod63.cn:0 UUID=cadf4f55:226ef97d:565eaba5:3a3c7da4
[root@xuegod63 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 17 15:59:16 2018
Raid Level : raid0
Array Size : 41910272 (39.97 GiB 42.92 GB)
39.97按照1024計算,42.92按照1000計算
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu May 17 15:59:16 2018
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K #chunk是raid中最小的存儲單位
Consistency Policy : none
Name : xuegod63.cn:0 (local to host xuegod63.cn)
UUID : cadf4f55:226ef97d:565eaba5:3a3c7da4
Events : 0
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
active sync:動態同步
[root@xuegod63 ~]# mdadm -Dsv > /etc/mdadm.conf #保存配置信息
[root@xuegod63 ~]# cat /proc/mdstat #從內存中查看,重啟後,信息丟失,所以要保存
3. 對創建的RAID0進行文件系統創建並掛載
[root@xuegod63 ~]# mkfs.xfs /dev/md0
[root@xuegod63 ~]# mkdir /raid0
[root@xuegod63 ~]# mount /dev/md0 /raid0/
[root@xuegod63 ~]# df -Th /raid0/
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/md0 xfs 40G 33M 40G 1% /raid0
[root@xuegod63 ~]# echo 324 > /raid0/a.txt
4. 開機自動掛載
[root@xuegod63 ~]# blkid /dev/md0
/dev/md0: UUID="3bf9c260-dc7b-4e37-a865-a8caa21ddf2c" TYPE="xfs"
[root@xuegod63 ~]# echo "UUID=5bba0862-c4a2-44ad-a78f-367f387ad001 /raid0 xfs defaults 0 0" >> /etc/fstab
創建RAID1實驗內容如下:
raid種類 磁碟 熱備盤
raid1 sdd、sde sdf
1)創建RAID1
2)添加1個熱備盤
3)模擬磁碟故障,自動頂替故障盤
4)從raid1中移出故障盤
[root@xuegod63 ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[d,e,f]
-C 創建 -v 詳細信息 -l陣列級別 -n 陣列成員數量 -x陣列備用盤數量
將RADI信息保存到配置文件
[root@xuegod63 ~]# mdadm -Dsv > /etc/mdadm.conf
查看 RAID 陣列信息:
[root@xuegod63 ~]# mdadm -D /dev/md1
Raid Level : raid1
Array Size : 20955136 (19.98 GiB 21.46 GB)
。。。
Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
1 8 64 1 active sync /dev/sde
2 8 80 - spare /dev/sdf
spare:備用
在RAID設備上創建文件系統
[root@xuegod63 ~]# mkfs.xfs /dev/md1
[root@xuegod63 ~]# mkdir /raid1
[root@xuegod63 ~]# mount /dev/md1 /raid1/
準備測試文件
[root@xuegod63 ~]# cp /etc/passwd /raid1/
#模擬損壞
下面模擬RAID1中數據盤/dev/sde出現故障,觀察/dev/sdf備用盤能否自動頂替故障盤
先確定已經同步成功
[root@xuegod63 ~]# mdadm -D /dev/md1
Consistency Policy : resync
[root@xuegod63 ~]# mdadm /dev/md1 -f /dev/sde
-f 將設備狀態設為故障
查看一下陣列狀態信息
[root@xuegod63 ~]# mdadm -D /dev/md1
Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
2 8 80 1 spare rebuilding /dev/sdf
1 8 64 - faulty /dev/sde
spare rebuilding 熱備重建中,也就是 sdd會把自己的數據同步到sdf
rebuild Status : 13% complete 同步狀態 (此時md1中的文件依然正常使用,因為sdd在工作)
faulty 錯誤
更新配置文件
[root@xuegod63 ~]# mdadm -Dsv > /etc/mdadm.conf
-D 列印陣列設備詳細信息 s得到陣列缺失信息 v
查看數據是否丟失
[root@xuegod63 ~]# ls /raid1/ #數據正常,沒有丟失
重要的數據如:資料庫 ; 系統盤 (把系統安裝到raid1的md1設備上,然後對md1做分區)
移除損壞的設備:
[root@xuegod63 ~]# mdadm -r /dev/md1 /dev/sde #-r 移除設備
mdadm: hot removed /dev/sde from /dev/md1
查看信息:
[root@xuegod63 ~]# mdadm -D /dev/md1
Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdd
2 8 128 1 active sync /dev/sdf
#已經沒有熱備盤了,添加一塊新熱備盤。
[root@xuegod63 ~]# mdadm -a /dev/md1 /dev/sde #-a 添加設備到陣列
mdadm: added /dev/sde
創建RAID5實驗環境:
raid 種類 磁碟 熱備盤
raid5 sdg、sdh、sdi sdj
1)創建RAID5, 添加1個熱備盤,指定chunk大小為32K
-x 指定陣列中備用盤的數量
-c或--chunk= 設定陣列的塊chunk塊大小 ,單位為KB (普通文件就默認就可以,如果存儲大文件就調大些,如果存儲小文件就調小些,這裡chunk就類似簇,塊一樣的概念,是陣列的最小存儲單位)
2)停止陣列,重新激活陣列
3)使用熱備盤,擴展陣列容量,從3個磁碟擴展到4個
(1) 創建RAID-5
[root@xuegod63 ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c 32 /dev/sd{g,h,i,j}
[root@xuegod63 ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Thu May 17 18:54:20 2018
Raid Level : raid5
Array Size : 41910272 (39.97 GiB 42.92 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu May 17 18:54:31 2018
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 32K
Consistency Policy : resync
Rebuild Status : 7% complete #同步狀態,同步完,此行消失。
Name : xuegod63.cn:5 (local to host xuegod63.cn)
UUID : fa685cea:38778d6a:0eb2c670:07ec5797
Events : 2
Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdg
1 8 112 1 active sync /dev/sdh
4 8 128 2 spare rebuilding /dev/sdi
3 8 144 - spare /dev/sdj #熱備盤
(2) 擴展RAID5磁碟陣列
將熱備盤增加到md5中,使用md5中可以使用的磁碟數量為4塊
[root@xuegod63 /]# mdadm -G /dev/md5 -n 4 -c 32
-G或--grow 改變陣列大小或形態
[root@xuegod63 ~]# mdadm -Dsv > /etc/mdadm.conf #保存配置文件
備註:陣列只有在正常狀態下,才能擴容,降級及重構時不允許擴容。對於raid5來說,只能增加成員盤,不能減少。而對於raid1來說,可以增加成員盤,也可以減少。
[root@xuegod63 ~]# mdadm -D /dev/md5 #查看狀態
。。。
Array Size : 41910272 (39.97 GiB 42.92 GB)
#發現新增加硬碟後空間沒有變大,為什麼?
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
。。。
Reshape Status : 3% complete
#重塑狀態:3%完成 ,等到100%, 數據才同步完,同步完後會變成成:Consistency Policy : resync #一致性策略:再同步,表示已經同步完
。。。
Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdg
1 8 112 1 active sync /dev/sdh
4 8 128 2 active sync /dev/sdi
3 8 144 3 active sync /dev/sdj
等一會,等所有數據同步完成後,查看md5空間大小:
Array Size : 62865408 (59.95 GiB 64.37 GB) #空間已經變大
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
(3) 停止MD5陣列
[root@xuegod63 ~]# mdadm -Dsv > /etc/mdadm.conf #停止前,一定要先保存配置文件
[root@xuegod63 ~]# mdadm -D /dev/md5 ##停止前,請確認數據已經同步完(同步不完成,有時會無法激活)
Consistency Policy : resync #數據已經同步完
[root@xuegod63 ~]# mdadm -S /dev/md5 #-S 停止陣列
mdadm: stopped /dev/md5
(4) 激活MD5陣列
[root@xuegod63 ~]# mdadm -As #-A 激活磁碟陣列 s掃描配置文件得到陣列信息
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
創建RAID10實驗環境:
raid10 分區:sdk1,sdk2,sdk3.sdk4
[root@xuegod63 ~]# fdisk /dev/sdk #分4個主分區,每個分區1G大小
[root@xuegod63 ~]# ls /dev/sdk*
[root@xuegod63 ~]# mdadm -C -v /dev/md10 -l 10 -n 4 /dev/sdk[1-4]
[root@xuegod63 ~]# cat /proc/mdstat
刪除RAID所有信息及注意事項[root@xuegod63 ~]# umount /dev/md0 /raid0 #如果你已經掛載raid,就先卸載。
[root@xuegod63 ~]# mdadm -Ss #停止raid設備
[root@xuegod63 ~]# rm -rf /etc/mdadm.conf #刪除raid配置文件
[root@xuegod63 ~]# mdadm --zero-superblock /dev/sdb
#清除物理磁碟中的raid標識 ,MD超級塊
[root@xuegod63 ~]# mdadm --zero-superblock /dev/sdc
#清除物理磁碟中的raid標識 ,MD超級塊
mdadm: Unrecognised md component device #代表已經擦除掉MD超級塊,找不到raid標識的信息了,擦除MD超級快,執行兩次會報這個信息。
參數:--zero-superblock : #擦除設備中的MD超級塊
實戰:企業中硬體raid5的配置聯想(ThinkServer) RD650做Raid
聯想(ThinkServer) RD650(640升級)2U機架式 伺服器2.5『』盤位 2*E5-2609V4/雙電源 升級至32G內存3個300G硬碟
https://item.jd.com/10502926632.html?jd_pop=eef9047a-999c-421a-8f04-fd4678c9cd4c#crumb-wrap
操作步驟:
開機後,進入raid配置界面有提示,按ctrl +h進入raid配置界面:
連接伺服器以後,顯示以下界面,單擊start進入配置頁面:
單機Configuration Wizard (配置嚮導)進行配置:
單機Clear Configuration(清除配置)清除舊的配置:
清除以後,顯示如下圖,再次單機Configuration Wizard進行配置,:
單機new Configuration 進行新的配置:
進入如下頁面,單擊Manual Configuration(配置手冊):
選擇左側兩塊磁碟,做個raid1,單機 Add To Array(加入陣列):
此處我們把兩塊盤做raid1,單機Accept DG(接受磁碟組,DG為disk groups的縮寫):
然後單機next,會進入如下頁面,單機Add to SPAN(縛住或扎牢的意思,理解為將兩塊盤捆綁到一起),單機next:
進入如下頁面,可以選擇raid(我們做的而是raid1),然後單機Update Size,accept,直接next就可以:
後面全部選next或者yes,當碰到下面這步驟時,可以忽略,直接點back:
會回到之前的Configuration Wizard配置嚮導頁面, 後面選擇add Configuration(添加配置),後面做raid5的10塊盤操作步驟和之前相同。最後配置完成的結果如下:
互動:為什麼先把兩塊磁碟做raid1,然後把後面的磁碟都做成raid5
raid1是鏡像卷,安裝系統用,一塊壞了,不影響系統運行。raid5存數據
如果伺服器主板不支持硬raid , 可以用raid卡
擴展:常見raid卡:
戴爾(DELL) 伺服器RAID陣列卡 H730P 大卡 2G緩存+後備電池保障數據讀寫不受斷電影響
今天就先給大家分享到這裡,在日常工作或者學習的過程中如果有Linux方面的問題,可以掃描下方二維碼,老師一對一給你解答,還有20G的Linux學習資料送給你哦!