RAID磁盤陣列

RAID概念

  • 磁盤陣列(Redundant Arrays of Independent Disks,RAID),有“獨立磁盤構成的具有冗餘能力的陣列”之意。
  • 磁盤陣列是由很多價格較便宜的磁盤,以硬件(RAID卡)或軟件(MDADM)形式組合成一個容量巨大的磁盤組,利用多個磁盤組合在一起,提升整個磁盤系統效能。
  • 利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。 磁盤陣列還能利用同位檢查(Parity Check)的觀念,在數組中任意一個硬盤故障時,仍可讀出數據,在數據重構時,將數據經計算後重新置入新硬盤中
  • 注:RAID可以預防數據丟失,但是它並不能完全保證你的數據不會丟失,所以大家使用RAID的同時還是注意備份重要的數據
  • RAID的創建有兩種方式:軟RAID(通過操作系統軟件來實現)和硬RAID(使用硬件陣列卡);在企業中用的最多的是:raid1、raid5和raid10。不過隨着雲的高速發展,供應商一般可以把硬件問題解決掉。

RAID幾種常見的類型

RAID類型 最低磁盤個數 空間利用率 優缺點
RAID0-條帶卷 2+ 100% 讀寫速度快,不容錯
RAID1-鏡像卷 2 50% 讀寫速度一般,容錯
RAID5-奇偶校驗條帶卷 3+ (n-1)/n 讀寫速度快,容錯,允許壞一塊盤
RAID6-奇偶校驗條帶卷,雙校驗 4+ (n-2)/2 讀寫快,容錯,允許壞兩塊盤
RAID10-RAID1的安全+RADI0 的高速 4 50% 讀寫速度快,容錯
RAID50-RAID5的安全+RAID0的高速 6 (n-2)/2 讀寫速度快,容錯

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系統中失效硬盤。

RAID-0-1-5-10搭建及使用-刪除RAID及注意事項

RAID的實現方式

  • 我們做硬件RAID,是在裝系統前還是之後?

  • 先做陣列才裝系統 ,一般服務器啓動時,有顯示進入配置Riad的提示,比如:按下CTRL+L/H/M進入配置raid界面

  • 硬RAID:需要RAID卡,我們的磁盤是接在RAID卡的,由它統一管理和控制。數據也由它來進行分配和維護;它有自己的cpu,處理速度快

  • 軟RAID:通過操作系統實現
    Linux內核中有一個md(multiple devices)模塊在底層管理RAID設備,它會在應用層給我們提供一個應用程序的工具mdadm ,mdadm是linux下用於創建和管理軟件RAID的命令。

mdadm的常用命令參數

常用參數 參數解釋
-A active:激活磁盤陣列
-C create:建立一個新陣列
-D detail:打印陣列設備的詳細信息
- S stop :停止陣列
-G grow:改變陣列大小或形態
-s scan:掃描配置文件或/proc/mdstat得到陣列缺失信息
-f faulty:將設備狀態定爲故障
-a add:添加設備到陣列
-v verbose :顯示詳細信息
-r remove:移除設備
-l level:設定磁盤陣列的級別
-n 指定陣列成員(分區/磁盤)的數量
-c chunk:指定陣列中備用盤的數量

實例

新添加多塊硬盤,如下圖:在這裏插入圖片描述

創建RAID0

  • 將sdc sdb 兩塊硬盤組合成RAID-0
[root@server14 ~]# 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.
[root@server14 ~]# mdadm -Ds
  • 查看陣列信息
[root@server14 ~]#   mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=xuegod63.cn:0 UUID=cadf4f55:226ef97d:565eaba5:3a3c7da4 
[root@server14 ~]#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
       
[root@server14 ~]# mdadm -Ds > /etc/mdadm.conf       #生成配置文件,每次做了,先保存配置文件,不然,關機就沒了
  • 對創建的RAID0進行文件系統創建並掛載
[root@server14 ~]#mkfs.xfs /dev/md0
[root@server14 ~]#mkdir /raid0
[root@server14 ~]# mount /dev/md0 /raid0/
[root@server14 ~]#  df -Th /raid0/
文件系統       類型  容量  已用  可用 已用% 掛載點
/dev/md0       xfs    40G   33M   40G    1% /raid0 
[root@xuegod63 ~]# echo 324 > /raid0/a.txt

  • 開機自動掛載
[root@server14 ~]#  blkid /dev/md0
/dev/md0: UUID="3bf9c260-dc7b-4e37-a865-a8caa21ddf2c" TYPE="xfs" 
[root@server14 ~]# echo "UUID=5bba0862-c4a2-44ad-a78f-367f387ad001 /raid0 xfs defaults 0 0" >> /etc/fstab

創建RAID1

將sde sdd sdf 三塊硬盤組合成RAID-1
1)創建RAID1
2)添加1個熱備盤
3)模擬磁盤故障,自動頂替故障盤
4)從raid1中移出故障盤

[root@server14 ~]#   mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[d,e,f]  
[root@server14 ~]#  mdadm  -Dsv > /etc/mdadm.conf 
 #將RADI信息保存到配置文件
 
  • 查看 RAID 陣列信息:
[root@server14 ~]#  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設備上格式化、掛載
[root@server14 ~]# mkfs.xfs /dev/md1
[root@server14 ~]# mkdir /raid1
[root@server14 ~]# mount /dev/md1  /raid1/

  • 準備測試文件
[root@server14 ~]# cp /etc/passwd /raid1/

  • 模擬故障盤
[root@server14 ~]# mdadm  /dev/md1 -f  /dev/sde

查看一下陣列狀態信息

[root@server14 ~]#mdadm  -D /dev/md1
...
    Number   Major   Minor   RaidDevice State
       0       8       96        0      active sync   /dev/sdd
       2       8      128        1      spare rebuilding   /dev/sdf #熱備盤已經在同步數據
       1       8      112        -      faulty   /dev/sde  

  • 更新配置文件
[root@server14 ~]# mdadm  -Dsv > /etc/mdadm.conf 
[root@server14 ~]# ls /raid1/    #數據正常,沒有丟失

重要的數據如:數據庫  ;  系統盤 (把系統安裝到raid1的md1設備上,可以對md1做分區)
  • 移除損壞的設備:
[root@server14 ~]# mdadm  -r /dev/md1 /dev/sde
mdadm: hot removed /dev/sde  from /dev/md1
  • 查看信息:
[root@server14 ~]# 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@server14 ~]# mdadm  -a /dev/md1  /dev/sde
mdadm: added /dev/sde

創建RAID5

將raid5 sdg、sdh、sdi sdj 硬盤組合成RAID-5
1)創建RAID5, 添加1個熱備盤,指定chunk大小爲32K
-x或–spare-devicds= 指定陣列中備用盤的數量
-c或–chunk= 設定陣列的塊chunk塊大小 ,單位爲KB
2)停止陣列,重新激活陣列
3)使用熱備盤,擴展陣列容量,從3個磁盤擴展到4個

  • 創建RAID-5

[root@server14 ~]#  mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c 32 /dev/sd{g,h,i,j} 
[root@server14 ~]# 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   #熱備盤
  • 停止MD5陣列
[root@server14 ~]# mdadm -Dsv > /etc/mdadm.conf   #停止前,一定要先保存配置文件
[root@server14 ~]# mdadm  -D /dev/md5  ##停止前,請確認數據已經同步完
Consistency Policy : resync   #數據已經同步完
[root@server14 ~]# mdadm  -S /dev/md5  
mdadm: stopped /dev/md5
  • 激活MD5陣列
[root@server14 ~]# mdadm  -As
mdadm: /dev/md5 has been started with 3 drives and 1 spare.

  • 擴展RAID5磁盤陣列
    將熱備盤增加到md5中,使用md5中可以使用的磁盤數量爲4塊
[root@server14 ~]# mdadm -G /dev/md5 -n 4 -c 32
#-G或--grow	改變陣列大小或形態

[root@server14 ~]# mdadm -Dsv > /etc/mdadm.conf   #保存配置文件
備註:陣列只有在正常狀態下,才能擴容,降級及重構時不允許擴容。對於raid5來說,只能增加成員盤,不能減少。而對於raid1來說,可以增加成員盤,也可以減少。

[root@server14 ~]# mdadm -D /dev/md5  #查看狀態  ,這裏可能還沒同步,稍微等會,就會改變

創建RAID10

將sdk磁盤分四個分區,組建RAID10,這裏主要是模擬,學方法
raid10 分區:sdk1,sdk2,sdk3.sdk4

[root@server14 ~]# fdisk  /dev/sdk  #分4個主分區,每個分區1G大小
[root@server14 ~]# mdadm -C -v /dev/md10 -l 10 -n 4 /dev/sdk[1-4]
[root@server14 ~]# cat /proc/mdstat 

刪除RAID所有信息及注意事項

[root@server14 ~]# umount /dev/md0 /raid0   #如果你已經掛載raid,就先卸載。
[root@server14 ~]# mdadm  -Ss          	 #停止raid設備
[root@server14 ~]# rm -rf /etc/mdadm.conf     #刪除raid配置文件
[root@server14 ~]#  mdadm  --zero-superblock /dev/sdb  #清除物理磁盤中的raid標識  
[root@server14 ~]#  mdadm  --zero-superblock /dev/sdc  #清除物理磁盤中的raid標識  
參數:--zero-superblock :  erase the MD superblock from a device.   #擦除設備中的MD超級塊
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章