磁盤管理RAID

目錄
磁盤陣列
分類
RAID優缺點
RAID級別
Linux運維面試題
簡述raid0 raid1 raid5 三種工作模式的工作原理及特點
軟RAID管理命令mdadm詳解
創建模式
創建raid0,raid1,raid5
管理模式
軟RAID管理
增長模式,用於增加磁盤,爲陣列擴容
mdadm中文man(引用)
示例:

磁盤陣列

磁盤陣列(Redundant Arrays of Independent Disks,RAID),有“獨立磁盤構成的具有冗餘能力的陣列”之意。
磁盤陣列是由很多價格較便宜的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果提升整個磁盤系統效能。

磁盤陣列分類

磁盤管理RAID

RAID優缺點

優點
提高傳輸速率。RAID通過在多個磁盤上同時存儲和讀取數據來大幅提高存儲系統的數據吞吐量(Throughput)。在RAID中,可以讓很多磁盤驅動器同時傳輸數據,而這些磁盤驅動器在邏輯上又是一個磁盤驅動器,所以使用RAID可以達到單個磁盤驅動器幾倍、幾十倍甚至上百倍的速率。這也是RAID最初想要解決的問題。因爲當時CPU的速度增長很快,而磁盤驅動器的數據傳輸速率無法大幅提高,所以需要有一種方案解決二者之間的矛盾。RAID最後成功了。
通過數據校驗提供容錯功能。普通磁盤驅動器無法提供容錯功能,如果不包括寫在磁盤上的CRC(循環冗餘校驗)碼的話。RAID容錯是建立在每個磁盤驅動器的硬件容錯功能之上的,所以它提供更高的安全性。在很多RAID模式中都有較爲完備的相互校驗/恢復的措施,甚至是直接相互的鏡像備份,從而大大提高了RAID系統的容錯度,提高了系統的穩定冗餘性。
缺點
RAID0沒有冗餘功能,如果一個磁盤(物理)損壞,則所有的數據都無法使用。
RAID1磁盤的利用率最高只能達到50%(使用兩塊盤的情況下),是所有RAID級別中最低的。
RAID0+1以理解爲是RAID 0和RAID 1的折中方案。RAID 0+1可以爲系統提供數據安全保障,但保障程度要比 Mirror低而磁盤空間利用率要比Mirror高。

RAID級別

RAID 0: RAID 0連續以位或字節爲單位分割數據,並行讀/寫於多個磁盤上,因此具有很高的數據傳輸率,但它沒有數據冗餘,因此並不能算是真正的RAID結構。RAID 0只是單純地提高性能,並沒有爲數據的可靠性提供保證,而且其中的一個磁盤失效將影響到所有數據。因此,RAID 0不能應用於數據安全性要求高的場合。

磁盤管理RAID

RAID 1: 它是通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。

磁盤管理RAID

RAID 5: RAID 5不單獨指定的奇偶盤,而是在所有磁盤上交叉地存取數據及奇偶校驗信息。在RAID 5上,讀/寫指針可同時對陣列設備進行操作,提供了更高的數據流量。RAID 5更適合於小數據塊和隨機讀寫的數據。RAID 3與RAID 5相比,最主要的區別在於RAID 3每進行一次數據傳輸就需涉及到所有的陣列盤;而對於RAID 5來說,大部分數據傳輸只對一塊磁盤操作,並可進行並行操作。在RAID 5中有“寫損失”,即每一次寫操作將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。

磁盤管理RAID

RAID 01/10: 根據組合分爲RAID 10和RAID 01,實際是將RAID 0和RAID 1標準結合的產物,在連續地以位或字節爲單位分割數據並且並行讀/寫多個磁盤的同時,爲每一塊磁盤作磁盤鏡像進行冗餘。它的優點是同時擁有RAID 0的超凡速度和RAID 1的數據高可靠性,但是CPU佔用率同樣也更高,而且磁盤的利用率比較低。RAID 1+0是先鏡射再分區數據,再將所有硬盤分爲兩組,視爲是RAID 0的最低組合,然後將這兩組各自視爲RAID 1運作。RAID 0+1則是跟RAID 1+0的程序相反,是先分區再將數據鏡射到兩組硬盤。它將所有的硬盤分爲兩組,變成RAID 1的最低組合,而將兩組硬盤各自視爲RAD 0運作。性能上,RAID 0+1比RAID 1+0有着更快的讀寫速度。可靠性上,當RAID 1+0有一個硬盤受損,其餘三個硬盤會繼續運作。RAID 0+1 只要有一個硬盤受損,同組RAID 0的另一隻硬盤亦會停止運作,只剩下兩個硬盤運作,可靠性較低。因此,RAID 10遠較RAID 01常用,零售主板絕大部份支持RAID 0/1/5/10,但不支持RAID 01

磁盤管理RAID

磁盤管理RAID

RAID 50: RAID50是RAID5與RAID0的結合。此配置在RAID5的子磁盤組的每個磁盤上進行包括奇偶信息在內的數據的剝離。每個RAID5子磁盤組要求三個硬盤。RAID50具備更高的容錯能力,因爲它允許某個組內有一個磁盤出現故障,而不會造成數據丟失。而且因爲奇偶位分部於RAID5子磁盤組上,故重建速度有很大提高。優勢:更高的容錯能力,具備更快數據讀取速率的潛力。需要注意的是:磁盤故障會影響吞吐量。故障後重建信息的時間比鏡像配置情況下要長。(不常用的)

磁盤管理RAID

Linux運維面試題

簡述raid0 raid1 raid5 三種工作模式的工作原理及特點

RAID,可以把硬盤整合成一個大磁盤,還可以在大磁盤上再分區,放數據
還有一個大功能,多塊盤放在一起可以有冗餘(備份)
RAID整合方式有很多,常用的:0 1 5 10
RAID 0,可以是一塊盤和N個盤組合 
其優點讀寫快,是RAID中最好的
缺點:沒有冗餘,一塊壞了數據就全沒有了
RAID 1,只能2塊盤,盤的大小可以不一樣,以小的爲準
10G+10G只有10G,另一個做備份。它有100%的冗餘,缺點:浪費資源,成本高
RAID 5 ,3塊盤,容量計算10\*(n-1),損失一塊盤
特點,讀寫性能一般,讀還好一點,寫不好
冗餘從好到壞:RAID1 RAID10 RAID 5 RAID0
性能從好到壞:RAID0 RAID10 RAID5 RAID1
成本從低到高:RAID0 RAID5 RAID1 RAID10
單臺服務器:很重要盤不多,系統盤,RAID1
數據庫服務器:主庫:RAID10 從庫 RAID5\RAID0(爲了維護成本,RAID10)
WEB服務器,如果沒有太多的數據的話,RAID5,RAID0(單盤)
有多臺,監控、應用服務器,RAID0 RAID5
我們會根據數據的存儲和訪問的需求,去匹配對應的RAID級別

簡述raid0 raid1 raid5 三種工作模式的工作原理及特點

RAID 0:帶區卷,連續以位或字節爲單位分割數據,並行讀/寫於多個磁盤上,因此具有很高的數據傳輸率
但它沒有數據冗餘,RAID 0 只是單純地提高性能,並沒有爲數據的可靠性提供保證
而且其中的一個磁盤失效將影響到所有數據。因此,RAID 0 不能應用於數據安全性要求高的場合
RAID 1:鏡像卷,它是通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據
不能提升寫數據效率。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID1 可以提高讀取性能
RAID 1 是磁盤陣列中單位成本最高的,鏡像卷可用容量爲總容量的1/2,但提供了很高的數據安全性和可用性
當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據
RAID5:至少由3塊硬盤組成,分佈式奇偶校驗的獨立磁盤結構,它的奇偶校驗碼存在於所有磁盤上
任何一個硬盤損壞,都可以根據其它硬盤上的校驗位來重建損壞的數據(最多允許1塊硬盤損壞)
所以raid5可以實現數據冗餘,確保數據的安全性,同時raid5也可以提升數據的讀寫性能

raid 0 條帶化 chunk size n*min(size)  讀寫的提升 至少2塊盤
raid 1 鏡像  min(size)  寫性能略降低,讀性能提升 至少2塊盤
raid 5 奇偶校驗  (n-1)*min(size) 至少3塊盤
raid 6 奇偶校驗  (n-2)*min(size) 至少4塊盤
raid 10 先做多個raid1,再組成raid0 安全性優於raid01
raid 01 先做多個raid0,再組成raid1 
raid 50 先做多個raid5,再組成raid0,安全性略低於raid10

軟RAID管理命令mdadm詳解

一、創建模式

mdadm :創建
選項:-C
專用選項:
-l \#: 級別
-n #: 設備個數
-a {yes|no} 自動爲其創建設備文件
-c CHUNK_SIZE: 指定數據塊大小(chunk)
-x #: 指定空閒盤(熱備磁盤)個數,空閒盤(熱備磁盤)能在工作盤損壞後自動頂替
注意:創建陣列時,陣列所需磁盤數爲-n參數和-x參數的個數相加之和

示例:創建raid0,raid1,raid5

1、創建raid0:

mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}#創建raid0 
mkfs.ext4 /dev/md0 #格式化即創建文件系統,默認生成UUID:

2、創建raid1:

mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdb{5,6}#創建raid
mkfs.ext4  /dev/md1#格式化即創建文件系統,默認生成UUID

3、創建raid5:

mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sdb{5,6,7}#創建raid5
mkfs.ext4 /dev/md2#格式化即創建文件系統,默認生成UUID:
mdadm /dev/md2 -a /dev/sdb8#增加熱備磁盤:

4、查看md狀態:
1 查看指定RAID設備的詳細信息:
選項: -D = --detail

             mdadm -D /dev/md0 #  只查看raid0信息

2 查看全部的raid信息

cat /proc/mdstat
Personalities : [raid0] [raid1]
md0 : active raid0 sdb2[1] sdb1[0]
         4206592 blocks super 1.2 512k chunks
md1 : active raid1 sdb6[1] sdb5[0]
            2103447 blocks super 1.2 [2/2] [UU]
unused devices: <none>

注意:在創建raid前,應該先查看磁盤是否被識別,如果內核還識未別,創建Raid時會報錯:
cat /proc/partitions 或者 lsblk
如果沒有被識別,可以執行命令:
kpartx /dev/sdb或者partprobe/dev/sdb
centos6:echo '- - -' > /sys/class/scsi_host/host0/scan(只現虛擬機)
centos7:echo '- - -' > /sys/class/scsi_host/host2/scan(只現虛擬機)

二、管理模式

選項:-a(--add),-d(--del),-r(--remove),-f(--fail)
1、模擬損壞:
    mdadm /dev/md1 -f /dev/sdb5
2、移除損壞的磁盤:
    mdadm /dev/md1 -r /dev/sdb5
3、添加新的硬盤到已有陣列:
    mdadm /dev/md1 -a /dev/sdb7

注意:
3.1、新增加的硬盤需要與原硬盤大小一致
3.2、如果原有陣列缺少工作磁盤(如raid1只有一塊在工作,raid5只有2塊在工作),這時新增加的磁盤直接變爲工作磁盤,如果原有陣列工作正常,則新增加的磁盤爲熱備磁盤。
------------------以下四條命令,僅限raid1,raid5
mdadm /dev/md1 -f /dev/sdf 將md1中的sdf設置爲壞的設備
mdadm /dev/md1 -r /dev/sdf 將md1中的sdf從raid成員中刪除
mdadm /dev/md1 -a /dev/sdf 向md1中增加新成員sdf 
mdadm -G /dev/md1 -n 3 -a /dev/sdh 將raid1 md1的成員數量改爲3,並加入新的成員(不是加爲熱備盤)

三、軟RAID管理

生成配置文件:
    mdadm -D -s > /etc/mdadm.conf  #將raid信息保存至文件
    mdadm -A -s  #激活/etc/mdadm.conf 中的所有未激活的raid設備 ,已激活不讀取.
停止設備:-S = --stop 
    mdadm –S /dev/md0
激活設備:將上述已經停止的陣列重新裝配:
    mdadm -A /dev/md0 /dev/sdc /dev/sdd #激活md0 手動添加md0磁盤
    mdadm –A –s /dev/md0 激活md0 讀取/etc/mdadm.conf中md0磁盤信息
強制啓動:
    mdadm –R /dev/md0 
刪除某塊硬盤的raid信息:
    mdadm --zero-superblock /dev/sdb1
監控模式
    選項:-F
    mdadm -F /dev/md1 實時監控raid狀態
實現自動裝配:(軟RAID是基於系統的,當原系統損壞了,需要重新裝配RAID)
    mdadm運行時會自動檢查/etc/mdadm.conf 文件並嘗試自動裝配,因此第一次配置raid後可以將信息導入到/etc/mdadm.conf中,命令如下:
    mdadm -D -s > /etc/mdadm.conf  #將raid信息保存至文件
    mdadm -A -s  #激活/etc/mdadm.conf 中的所有未激活的raid設備 ,已激活不讀取.
共享熱備盤實現方式
    mdadm -D -s > /etc/mdadm.conf  //將raid值保存到文件中
    在需要共享的多組raid信息最後分別都寫上spare-group=magedu
    然後再加一新行,頂頭寫MAILADDR root@localhost 或 MAILADDR .
    /etc/init.d/mdmonitor restart  //啓動服務
    service mdmonitor restart   //啓動服務

四、增長模式,用於增加磁盤,爲陣列擴容:

選項:-G
示例,將上述raid5的熱備磁盤增加到陣列工作磁盤中

    [root@localhost ~]# mdadm -G /dev/md2  -n 4

注意:-n 4 表示使用四塊工作磁盤
再次使用-D選項查看陣列詳細信息如下:

[root@localhost ~]# mdadm -D /dev/md2
……此處略掉部分信息……
   Number   Major   Minor   RaidDevice State
           0       8       21        0      active sync   /dev/sdb5
           1       8       22        1      active sync   /dev/sdb6
             3       8       23        2      active sync   /dev/sdb7
           4       8       24        3      active sync   /dev/sdb8

五、.mdadm中文man(引用)

基本語法 : mdadm [mode] [options]
[mode] 有7種:
Assemble:將以前定義的某個陣列加入當前在用陣列。
Build:Build a legacy array ,每個device 沒有 superblocks
Create:創建一個新的陣列,每個device 具有 superblocks
Manage: 管理陣列,比如 add 或 remove
Misc:允許單獨對陣列中的某個 device 做操作,比如抹去superblocks 或 終止在用的陣列。
Follow or Monitor:監控 raid 1,4,5,6 和 multipath 的狀態
Grow:改變raid 容量或 陣列中的 device 數目
可用的 [options]:
-A, --assemble:加入一個以前定義的陣列
-B, --build:Build a legacy array without superblocks.
-C, --create:創建一個新的陣列
-Q, --query:查看一個device,判斷它爲一個 md device 或是 一個 md 陣列的一部分
-D, --detail:打印一個或多個 md device 的詳細信息
-E, --examine:打印 device 上的 md superblock 的內容
-F, --follow, --monitor:選擇 Monitor 模式
-G, --grow:改變在用陣列的大小或形態
-h, --help:幫助信息,用在以上選項後,則顯示該選項信息
--help-options
-V, --version
-v, --verbose:顯示細節
-b, --brief:較少的細節。用於 --detail 和 --examine 選項
-f, --force
-c, --config= :指定配置文件,缺省爲 /etc/mdadm/mdadm.conf
-s, --scan:掃描配置文件或 /proc/mdstat以搜尋丟失的信息。配置文件/etc/mdadm/mdadm.conf
create 或 build 使用的選項:
-c, --chunk=:Specify chunk size of kibibytes. 缺省爲 64.
--rounding=: Specify rounding factor for linear array (==chunk size)
-l, --level=:設定 raid level.
--create可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.
--build可用:linear, raid0, 0, stripe.
-p, --parity=:設定 raid5 的奇偶校驗規則:eft-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.缺省爲left-symmetric
--layout=:類似於--parity
-n, --raid-devices=:指定陣列中可用 device 數目,這個數目只能由 --grow 修改
-x, --spare-devices=:指定初始陣列的富餘device 數目
-z, --size=:組建RAID1/4/5/6後從每個device獲取的空間總數
--assume-clean:目前僅用於 --build 選項
-R, --run:陣列中的某一部分出現在其他陣列或文件系統中時,mdadm會確認該陣列。此選項將不作確認。
-f, --force:通常mdadm不允許只用一個device 創建陣列,而且創建raid5時會使用一個device作爲missing drive。此選項正相反。
-a, --auto{=no,yes,md,mdp,part,p}{NN}:

示例:

1:創建一個可用空間爲1G的RAID1設備,文件系統爲ext4,有一個空閒盤,開機可自動掛載至/backup目錄

 lsblk #查看磁盤是否被系統識別
         sdd      8:48   0     1G  0 disk 
         sde      8:64   0     1G  0 disk 
         sdf      8:80   0     1G  0 disk 
    如果沒有被識別,可以執行命令:
    entos6:echo '- - -' > /sys/class/scsi_host/host0/scan(只現虛擬機)
    centos7:echo '- - -' > /sys/class/scsi_host/host2/scan(只現虛擬機)
mdadm -C /dev/md1 -a yes -n 2 -l 1 -x 1 /dev/sd{e,d,f}  #創建md1
lsblk #查看raid1是否創建成功
            sdd       8:48   0     1G  0 disk  
            └─md1   9:127  0  1023M  0 raid1 
            sde       8:64   0     1G  0 disk  
            └─md1  9:127  0  1023M  0 raid1 
            sdf       8:80   0     1G  0 disk  
            └─md1   9:127  0  1023M  0 raid1 
mdadm -D /dev/md1  查看raid信息

    /dev/md127:
        Version : 1.2
  Creation Time : Thu Feb 22 11:43:34 2018
     Raid Level : raid1
     Array Size : 1047552 (1023.00 MiB 1072.69 MB)
  Used Dev Size : 1047552 (1023.00 MiB 1072.69 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Fri Feb 23 14:26:59 2018
          State : clean 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : centos6.magedu.com:1  (local to host centos6.magedu.com)
           UUID : a7ee7358:0f88ee49:f5359499:7a25cd1a
         Events : 22

    Number   Major   Minor   RaidDevice State
       0       8       64        0      active sync   /dev/sde
       1       8       48        1      active sync   /dev/sdd

       2       8       80        -      spare   /dev/sdf

    mkfs.ext4 /dev/md1   #格式化 即 創建文件系統 默認生成UUID
     blkid /dev/md1 #查看指定raid的文件系統 文件格式,UUID 等信息
                /dev/md1: UUID="d6e45441-b68f-4e45-9a18-425887956d87" TYPE="ext4"
    vim /etc/fstab #開機自動掛載硬盤的系統文件
                UUID=d6e45441-b68f-4e45-9a18-425887956d87 /backup                 ext4    defaults        0 0 
            #UUID=ea2ad152-45bb-41cf-904c-e5db0b372df7 //UUID  /backup //掛載目錄    exit4//文件系統   defaults 系統的選項       0 0 //開機是否檢測一般爲零      //下次開機raid名可能會改變,不重要,UUID生效

2:創建由三塊硬盤組成的可用空間爲2G的RAID5設備,要求其chunk大小爲256k,文件系統爲ext4,開機可自動掛載至/mydata目錄

lsblk
        sdg       8:96   0     1G  0 disk  
        sdh       8:112  0     1G  0 disk   
        sdp       8:240  0     1G  0 disk  
mdadm -C /dev/md5 -a yes -n 3 -l 5 -c 256K /dev/sd{g,h,p}
        #-C //創建  /dev/md5//raid文件名 -a yes //  -n 3 //三塊  -l 5 //raid5  -c 256 //chunk大小爲256K
lsblk 查看系統識別硬盤
mdadm -D /dev/md5 查看raid信息
mkfs.ext4 /dev/md5  //格式化/創建文件系統ext4
blkid  //查看uuid /文件系統格式
vim /etc/fstab //開機自動掛載硬盤的系統文件
        UUID="b4c94f87-8648-4835-8e86-24e7daf58c4d /mydata                ext4    defaults        0 0 
mount -a //從新去讀/etc/fstab文件內容,掛載未掛載磁盤,以掛載不會從新讀取,

3:創建一個raid50,由7塊盤組成,其中一塊爲熱備盤,最終容量爲6G大小,chunk大小爲1M,要求熱備盤共享,創建爲ext4文件系統,開機自動掛載到/magedata目錄下。

創建第一個raid5
lsblk
            sdi       8:128  0   1.5G  0 disk  
            sdj       8:144  0   1.5G  0 disk  
            sdk       8:160  0   1.5G  0 disk  
mdadm -C /dev/md0 -n 3 -a yes -l 5 -c 1M /dev/sd{i,j,k}
mkfs.ext4 /dev/md0
創建第二個raid5
lsblk
            sdl       8:176  0   1.5G  0 disk  
            sdm       8:192  0   1.5G  0 disk  
            sdn       8:208  0   1.5G  0 disk  
            sdo       8:224  0   1.5G  0 disk 
mdadm -C /dev/md1 -n 3 -a yes -l 5 -c 1M -x 1 /dev/sd{l,m,n,o}
mkfs.ext4 /dev/md0
創建raid0
mdadm -C /dev/md3 -a yes -n 2 -l 0 -c 1M /dev/md1 /dev/md0
查看:lsblk / blkid  / mdadm -D /dev/md3
mkfs.ext4 /dev/md3 
blkid
vim /etc/fstab
            UUID=8a93b1f7-fb18-4439-8548-2a2ec0e4c428 /magedata              ext4    defaults        0 0 

刪除raid1

 mdadm -S /dev/md1  停止raid設備
         mdadm: stopped /dev/md1
mdadm --zero-superblock /dev/sdd刪除某塊硬盤的raid信息
hexdump -C -n 1024 /dev/sdd  查看硬盤文件二進制信息
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章