1. 程式人生 > >Centos7.5-RAID磁碟陣列的原理與搭建

Centos7.5-RAID磁碟陣列的原理與搭建

本節所講內容:

  • 14.1 RAID概念-企業級RAID 0, 1,5,10的工作原理
  • 14.2 RAID-0-1-5-10搭建及使用-刪除RAID及注意事項
  • 14.3 實戰:企業中硬體raid5的配置

14.1 RAID概念

磁碟陣列(Redundant Arrays of Independent Disks,RAID)

  • 有“獨立磁碟構成的具有冗餘能力的陣列”之意。 磁碟陣列是由很多價格較便宜的磁碟,以硬體(RAID卡)或軟體(MDADM)形式組合成一個容量巨大的磁碟組,利用多個磁碟組合在一起,提升整個磁碟系統效能。
  • 利用這項技術,將資料切割成許多區段,分別存放在各個硬碟上。 磁碟陣列還能利用同位檢查(Parity Check)的觀念,在陣列中任意一個硬碟故障時,仍可讀出資料,在資料重構時,將資料經計算後重新置入新硬碟中

注:RAID可以預防資料丟失,但是它並不能完全保證你的資料不會丟失,所以大家使用RAID的同時還是注意備份重要的資料

RAID的建立有兩種方式:軟RAID(通過作業系統軟體來實現)和硬RAID(使用硬體陣列卡);在企業中用的最多的是:raid1、raid5和raid10。不過隨著雲的高速發展,供應商一般可以把硬體問題解決掉。

14.1.1 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相對於單個磁碟優點: 在這裡插入圖片描述 14.1.2 RAID-0的工作原理

條帶 (strping),也是我們最早出現的RAID模式

  • 需磁碟數量:2塊以上(大小最好相同),是組建磁碟陣列中最簡單的一種形式,只需要2塊以上的硬碟即可.
  • 特點:成本低,可以提高整個磁碟的效能和吞吐量。RAID 0沒有提供冗餘或錯誤修復能力,速度快.
  • 任何一個磁碟的損壞將損壞全部資料;磁碟利用率為100%。 在這裡插入圖片描述 在這裡插入圖片描述 14.1.3 RAID-1

mirroring(映象卷),需要磁碟兩塊以上

  • 原理:是把一個磁碟的資料映象到另一個磁碟上,也就是說資料在寫入一塊磁碟的同時,會在另一塊閒置的磁碟上生成映象檔案,(同步)
  • RAID 1 mirroring(映象卷),至少需要兩塊硬碟,raid大小等於兩個raid分割槽中最小的容量(最好將分割槽大小分為一樣),資料有冗餘,在儲存時同時寫入兩塊硬碟,實現了資料備份;
  • 磁碟利用率為50%,即2塊100G的磁碟構成RAID1只能提供100G的可用空間。如下圖 在這裡插入圖片描述

在這裡插入圖片描述 14.1.4 RAID-5

需要三塊或以上硬碟,可以提供熱備盤實現故障的恢復;只損壞一塊,沒有問題。但如果同時損壞兩塊磁碟,則資料將都會損壞。 空間利用率: (n-1)/n 2/3 如下圖所示 在這裡插入圖片描述 奇偶校驗資訊的作用:

  • 當RAID5的一個磁碟資料發生損壞後,利用剩下的資料和相應的奇偶校驗資訊去恢復被損壞的資料。

擴充套件:異或運算

  • 是用相對簡單的異或邏輯運算(相同為0,相異為1)

    A值 B值 Xor結果 0 0 0 1 0 1 0 1 1 1 1 0 14.1.5 巢狀RAID級別

RAID-10映象+條帶 RAID 10是將映象和條帶進行兩級組合的RAID級別,第一級是RAID1映象對,第二級為RAID 0。比如我們有8塊盤,它是先兩兩做映象,形成了新的4塊盤,然後對這4塊盤做RAID0;當RAID10有一個硬碟受損其餘硬碟會繼續工作,這個時候受影響的硬碟只有2塊 在這裡插入圖片描述 幾個方案對比下來, RAID5是最適合的,如下圖: 在這裡插入圖片描述 14.1.6 RAID硬碟失效處理

一般兩種處理方法:熱備和熱插拔

  • 熱備:HotSpare
  • 定義:當冗餘的RAID組中某個硬碟失效時,在不干擾當前RAID系統的正常使用的情況下,用RAID系統中另外一個正常的備用硬碟自動頂替失效硬碟,及時保證RAID系統的冗餘性
  • 全域性式:備用硬碟為系統中所有的冗餘RAID組共享
  • 專用式:備用硬碟為系統中某一組冗餘RAID組專用

如下圖所示:是一個全域性熱備的示例,該熱備盤由系統中兩個RAID組共享,可自動頂替任何一個RAID中的一個失效硬碟 在這裡插入圖片描述 熱插拔:HotSwap

  • 定義:在不影響系統正常運轉的情況下,用正常的物理硬碟替換RAID系統中失效硬碟。 Linux架構師高薪入口: 1.學神IT教育官方網站: http://xuegod.ke.qq.com 2.10年行業資深老鳥MK:QQ2659153446 3.加入Linux技術交流QQ群:722287089,即可獲得以下福利: ①定期分享免費學習資料與視訊(工具+筆記+拓展實戰) ②10年行業資深老鳥線上答疑:技能+實戰+專案分享+高薪就業 ③有機會免費領取Linux雲端計算叢集架構師4冊書籍

14.2 RAID-0-1-5-10搭建及使用-刪除RAID及注意事項 14.2.1 RAID的實現方式

互動:我們做硬體RAID,是在裝系統前還是之後?

  • 答:先做陣列才裝系統 ,一般伺服器啟動時,有顯示進入配置Riad的提示,比如:按下CTRL+L/H/M進入配置raid介面
  • 硬RAID:需要RAID卡,我們的磁碟是接在RAID卡的,由它統一管理和控制。資料也由它來進行分配和維護;它有自己的cpu,處理速度快
  • 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也就都壞了。 14.2.2 建立RAID0

實驗環境:

  • raid種類 磁碟 熱備盤
  • raid0 sdb、sdc

1、建立raid0

[[email protected] ~]# mdadm  -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[[email protected] ~]#  mdadm -Ds

2、 檢視陣列資訊

[[email protected] ~]#   mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=xuegod63.cn:0 UUID=cadf4f55:226ef97d:565eaba5:3a3c7da4 
[[email protected] ~]# 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)
      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
[[email protected] ~]# mdadm -Ds > /etc/mdadm.conf   #生成配置檔案

3、 對建立的RAID0進行檔案系統建立並掛載

[[email protected] ~]# mkfs.xfs /dev/md0
[[email protected] ~]# mkdir /raid0
[[email protected] ~]# mount /dev/md0 /raid0/
[[email protected] ~]#  df -Th /raid0/

檔案系統       型別  容量  已用  可用 已用% 掛載點
/dev/md0       xfs    40G   33M   40G    1% /raid0 
[[email protected] ~]# echo 324 > /raid0/a.txt

4、 開機自動掛載

[[email protected] ~]#  blkid /dev/md0
/dev/md0: UUID="3bf9c260-dc7b-4e37-a865-a8caa21ddf2c" TYPE="xfs" 
[[email protected] ~]# echo "UUID=5bba0862-c4a2-44ad-a78f-367f387ad001 /raid0 xfs defaults 0 0" >> /etc/fstab

14.2.3 建立RAID1

實驗內容如下: raid種類 磁碟 熱備盤 raid1 sdd、sde、 sdf 1)建立RAID1 2)新增1個熱備盤 3)模擬磁碟故障,自動頂替故障盤 4)從raid1中移出故障盤 [

[email protected] ~]#  mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[d,e,f]
  將RADI資訊儲存到配置檔案
[[email protected] ~]# mdadm  -Dsv > /etc/mdadm.conf
檢視 RAID 陣列資訊:
[[email protected] ~]# 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

在RAID裝置上建立檔案系統

[[email protected] ~]# mkfs.xfs /dev/md1
[[email protected] ~]# mkdir /raid1
[[email protected] ~]# mount /dev/md1  /raid1/
準備測試檔案
[[email protected] ~]# cp /etc/passwd /raid1/
 模擬損壞
下面模擬RAID1中資料盤/dev/sde出現故障,觀察/dev/sdf備用盤能否自動頂替故障盤
[[email protected] ~]# mdadm  /dev/md1 -f  /dev/sde

檢視一下陣列狀態資訊

[[email protected] ~]# mdadm  -D /dev/md1
...
    Number   Major   Minor   RaidDevice State
       0       8       96        0      active sync   /dev/sdg
       2       8      128        1      spare rebuilding   /dev/sdi #熱備盤已經在同步資料
       1       8      112        -      faulty   /dev/sdh  

更新配置檔案

[[email protected] ~]# mdadm  -Dsv > /etc/mdadm.conf 
檢視資料是否丟失
[[email protected] ~]# ls /raid1/    #資料正常,沒有丟失
重要的資料如:資料庫  ;  系統盤 (把系統安裝到raid1的md1裝置上,可以對md1做分割槽)

移除損壞的裝置:

[[email protected] ~]# mdadm  -r /dev/md1 /dev/sde
mdadm: hot removed /dev/sde  from /dev/md1

檢視資訊:

[[email protected] ~]# 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   #已經沒有熱備盤了
    新增一塊新熱備盤
[[email protected] ~]# mdadm  -a /dev/md1  /dev/sde
mdadm: added /dev/sde

14.2.4 建立RAID5

實驗環境:

  • raid種類 磁碟 熱備盤

  • raid5 sdg、sdh、sdi sdj

    1)建立RAID5, 新增1個熱備盤,指定chunk大小為32K -x或–spare-devicds= 指定陣列中備用盤的數量 -c或–chunk= 設定陣列的塊chunk塊大小 ,單位為KB 2)停止陣列,重新啟用陣列 3)使用熱備盤,擴充套件陣列容量,從3個磁碟擴充套件到4個 14.2.4.1 建立RAID-5

    [[email protected] ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c32 /dev/sd{g,h,i,j} [[email protected] ~]# 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   #熱備盤
    

14.2.4.2 停止MD5陣列

[[email protected] ~]# mdadm -Dsv > /etc/mdadm.conf   #停止前,一定要先儲存配置檔案
[[email protected] ~]# mdadm  -D /dev/md5  ##停止前,請確認資料已經同步完
Consistency Policy : resync   #資料已經同步完
[[email protected] ~]# mdadm  -S /dev/md5  
mdadm: stopped /dev/md5

14.2.4.3 啟用MD5陣列

[[email protected] ~]# mdadm  -As
mdadm: /dev/md5 has been started with 3 drives and 1 spare.

14.2.4.4 擴充套件RAID5磁碟陣列

將熱備盤增加到md5中,使用md5中可以使用的磁碟數量為4塊 
[[email protected] /]# mdadm -G /dev/md5 -n 4 -c 32
#-G或--grow	改變陣列大小或形態
[[email protected] ~]# mdadm -Dsv > /etc/mdadm.conf   #儲存配置檔案
備註:陣列只有在正常狀態下,才能擴容,降級及重構時不允許擴容。對於raid5來說,只能增加成員盤,不能減少。而對於raid1來說,可以增加成員盤,也可以減少。
[[email protected] ~]# 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)

14.2.5 建立RAID10

實驗環境:

raid種類	磁碟	熱備盤
raid10	分割槽:sdk1,sdk2,sdk3.sdk4	
[[email protected] ~]# fdisk  /dev/sdk  #分4個主分割槽,每個分割槽1G大小
[[email protected] ~]# mdadm -C -v /dev/md10 -l 10 -n 4 /dev/sdk[1-4]
[[email protected] ~]# cat /proc/mdstat 

14.2.6刪除RAID所有資訊及注意事項

[[email protected] ~]# umount /dev/md0 /raid0   #如果你已經掛載raid,就先解除安裝。
[[email protected] ~]# mdadm  -Ss          	 #停止raid裝置
[[email protected] ~]# rm -rf /etc/mdadm.conf     #刪除raid配置檔案
[[email protected] ~]#  mdadm  --zero-superblock /dev/sdb  #清除物理磁碟中的raid標識  
[[email protected] ~]#  mdadm  --zero-superblock /dev/sdc  #清除物理磁碟中的raid標識  
引數:--zero-superblock :  erase the MD superblock from a device.   #擦除裝置中的MD超級塊

Linux架構師高薪入口: 1.學神IT教育官方網站: http://xuegod.ke.qq.com 2.10年行業資深老鳥MK:QQ2659153446 3.加入Linux技術交流QQ群:722287089,即可獲得以下福利: ①定期分享免費學習資料與視訊(工具+筆記+拓展實戰) ②10年行業資深老鳥線上答疑:技能+實戰+專案分享+高薪就業 ③有機會免費領取Linux雲端計算叢集架構師4冊書籍

  • 開機後,進入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快取+後備電池保障資料讀寫不受斷電影響 https://item.jd.com/13179864635.html ¥1990.00元 H730P 小卡是1G快取 在這裡插入圖片描述 在這裡插入圖片描述

在這裡插入圖片描述 硬raid如果陣列卡壞了 怎麼辦?

  • 如果更換的RAID卡,與原卡規格型號相同,則不會有什麼問題。若兩卡規格型號不同,需要重新安裝新卡驅動程式。這時就會有不確定的可能性,如驅動程式差別不大時,RAID盤組合順序正常,硬碟原資料可正確讀寫;若驅動程式結構差別較大,則可能發生讀寫錯誤。 因此,要儘量選購與原卡規格相同的產品,以確保資料安全。 Linux架構師高薪入口: 1.學神IT教育官方網站: http://xuegod.ke.qq.com 2.10年行業資深老鳥MK:QQ2659153446 3.加入Linux技術交流QQ群:722287089,即可獲得以下福利: ①定期分享免費學習資料與視訊(工具+筆記+拓展實戰) ②10年行業資深老鳥線上答疑:技能+實戰+專案分享+高薪就業 ③有機會免費領取Linux雲端計算叢集架構師4冊書籍

微信公眾號: 在這裡插入圖片描述 MK老師微訊號: 在這裡插入圖片描述 總結:

  • 14.1 RAID概念-企業級RAID 0, 1,5,10的工作原理
  • 14.2 RAID-0-1-5-10搭建及使用-刪除RAID及注意事項
  • 14.3 實戰:企業中硬體raid5的配置