首先咱們來了解一下RAID這個概念安全
1988年由加利福尼亞大學伯克利分校發表的文章首次提到並定義了RAID,當今CPU性能每一年可提高30%-50%但硬盤僅提高7%,漸漸的已經成爲計算機總體性能的瓶頸,而且爲了不硬盤的忽然損壞致使數據丟失還加入了冗餘備份機制。運維
RAID的早先設計理念爲」redundant array of Inexpensive disks「即不貴的硬盤組,而如今的定義是」Redundant Array ofIndependent Disks「即獨立的硬盤組,做用是防止硬盤物理損壞以及增長存儲設備的吞吐量。RAID常見的組合有0、1、5和10:性能
RAID0:須要至少兩塊(含)硬盤,能夠有效的提升硬盤的性能和吞吐量,但沒有數據的冗餘和錯誤修復能力。ui
將多塊硬盤經過硬件或軟件的方式串聯在一塊兒,成爲一個大的卷集,將數據依次寫入到各個硬盤中,這樣性能會極大提高,但若任意一塊硬盤故障則整個系統的數據都會受到破壞。spa
RAID1:須要至少兩塊(含)硬盤,能夠有效的提升數據資料的安全性和可修復性,但成本卻提升了。設計
實現原來是在數據寫入硬盤時也會在另一塊閒置的硬盤上生成鏡像文件,在不影響性能的狀況下最大限度保證數據資料的可靠性,只要在一對鏡像盤中還有一塊硬盤可使用,那麼數據也不會丟失,具備很好的硬盤冗餘能力,雖然對數據來說絕對的安全,但成本卻明顯增長,磁盤利用率僅爲50%。3d
RAID5:須要至少三塊(含)硬盤,兼顧存儲性能、數據安全和儲存成本。blog
如上圖所示」parity」塊中保存的是其餘硬盤數據的奇偶校驗信息(並不是其餘硬盤的數據),以數據的奇偶校驗信息來保證數據的安全,RAID5不以單獨的硬盤來存放數據的奇偶校驗信息,而是保存在各個磁盤上。繼承
這樣當任何一個硬盤損壞均可以根據其餘硬盤上的奇偶校驗信息來嘗試重建損壞的數據,性能也很高,兼顧了存儲性能、數據安全和存儲成本,能夠看做是RAID0與RAID1的折中方案。虛擬機
RAID10:須要至少四塊(含)硬盤,兼具速度和安全性,但成本很高。
繼承了RAID0的快速與RAID1的安全,RAID1在這裏提供了冗餘備份的陣列,而RAID0則負責數據的讀寫陣列。
因這種結構的成本高,通常用於存放要求速度與差錯控制的數據。
名稱結構:
下面咱們來具體操做
首先咱們先來掛載RAID5 設置爲3個作RAID,2個用來作備份。
首先咱們須要將虛擬機關機
點擊此處添加5個硬盤,注意要添加五個。由於sda已經被虛擬機自己佔用。
此時的虛擬機上共有6個磁盤。
打開虛擬機,打開終端,輸入命令
[root@fanwenting-hbza ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 2 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
-C表明建立操做,-v顯示建立過程,-n是用到的硬盤個數,-l是定義RAID的級別然後面寫上要加入陣列的硬盤名稱,-x是用於備份的磁盤個數。
此處須要輸入y 來確認建立這個陣列。
下面用mdadm來查看陣列的詳細信息
[root@fanwenting-hbza ~]# mdadm -D /dev/md0
(Spare Devices數量爲2)
而後將磁盤陣列格式化爲ext4系統:
[root@fanwenting-hbza ~]# mkfs.ext4 /dev/md0
[root@fanwenting-hbza ~]# mount -a
將/dev/sdb設備設置爲故障並移出陣列:
[root@fanwenting-hbza ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
此時再查看陣列的詳細信息
/dev/md0:
Version : 1.2
Creation Time : Tue Oct 22 00:54:55 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue Oct 22 01:00:08 2019
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 1
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 51% complete
Name : fanwenting-hbza:0 (local to host fanwenting-hbza)
UUID : 2b3024a3:c4d4d3d1:3cd84251:622b8f9c
Events : 28
Number Major Minor RaidDevice State
4 8 80 0 spare rebuilding /dev/sdf
1 8 32 1 active sync /dev/sdc
5 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
3 8 64 - spare /dev/sde
你會發現sdf直接頂替上去了。這樣大大方便了運維人員對磁盤的管理,磁盤損壞形成的損失大大減少了。
下面咱們來掛載一個使用磁盤數爲5的RAID10
由於如今RAID5在虛擬機上運行着,因此須要先輸入命令將陣列設備停用。
[root@fanwenting-hbza ~]#umount /dev/md0
[root@fanwenting-hbza ~]#mdadm -S /dev/md0
mdadm: stopped /dev/md0
將陣列完全停用,如今陣列已經找不到了。
[root@fanwenting-hbza ~]#mdadm -D /dev/md0
此時就能夠開始建立你RAID10新的陣列了。
輸入指令
[root@fanwenting-hbza ~]#mdadm -Cv /dev/md0 -a yes -n 5 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
-C表明建立操做,-v顯示建立過程,-a yes檢查RAID名稱,-n是用到的硬盤個數,-l是定義RAID的級別然後面寫上要加入陣列的硬盤名稱。
須要y來確認創建這個陣列,而後進行格式化並掛載使用。
將RAID磁盤陣列格式化爲ext4格式:
[root@fanwenting-hbza ~]# mkfs.ext4 /dev/md0
而後建立掛載目錄:
[root@fanwenting-hbza ~]#mkdir /RAID
進行文件系統的掛載:
[root@fanwenting-hbza ~]# mount /dev/md0 /RAID
查看磁盤的掛載信息:
[root@fanwenting-hbza ~]# df -h
最後將它設爲重啓後也依然生效:
[root@fanwenting-hbza ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
這樣磁盤在重啓之後也依然掛載在虛擬機上,若是想將RAID5掛載在虛擬機上且重啓後生效也能夠執行上述操做。
參數-D查看RAID陣列的詳細信息:
[root@fanwenting-hbza ~]# mdadm -D /dev/md0
如今咱們來模擬一個硬盤損壞的狀況
使用mdadm的-f參數將/dev/sdb移出陣列:
[root@fanwenting-hbza ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
(此時的/dev/sdb狀態被是移除,失敗狀態)
由於RAID10級別可以容許一組RAID1硬盤中存在一個故障盤而不影響使用,因此依然能夠正常的建立或刪除文件~
如今就把新的硬盤添加進去吧,固然也可讓硬盤sdb恢復使用:請重啓後執行「 mdadm /dev/md0 -a /dev/sdb」。