[Linux實用命令]-9-磁盤陣列(RAID)實例詳解

引言

這篇文章介紹幾種常用的磁盤陣列技術(Raid0、Raid1、Raid4、Raid5、Raid10、Raid01),演示如何在CentOS7環(huán)境下使用mdadm命令去創(chuàng)建和維護磁盤陣列;RAID又稱“廉價磁盤冗余陣列”,可以使用硬件和軟件兩種方式來實現(xiàn),硬件RAID可以參考購買硬件時附帶的參考手冊,設置方法與軟件RAID有差異;現(xiàn)如今軟件RAID大多用作研究和熟悉RAID的工作方式。

文章目錄

  • 0×1.Raid(磁盤陣列)級別介紹
  •    a.Raid0
    
  •    b.Raid1
    
  •    c.Raid4
    
  •    d.Raid5
    
  •    e.Raid10
    
  •    f.Raid01
    
  • 0×2.Linux創(chuàng)建磁盤陣列實例
  •   a.實驗環(huán)境介紹
    
  •   b.創(chuàng)建磁盤陣列Raid10
    
  •   c.配置開機自啟動磁盤陣列
    
  •   d.將磁盤陣列掛載到目錄使用
    
  • 0×3.創(chuàng)建冗余磁盤陣列
  • 0×4.刪除磁盤陣列

0×1.Raid(磁盤陣列)級別介紹

Raid有"廉價磁盤冗余陣列"的意思,就是利用多塊廉價的硬盤組成磁盤組,讓數(shù)據(jù)分部儲存在這些硬盤里面,從而達到讀取和寫入加速的目的;也可以用作數(shù)據(jù)的冗余,當某塊硬盤損毀后,其他硬盤可以通過冗余數(shù)據(jù)計算出損壞磁盤的數(shù)據(jù),這樣就提高了數(shù)據(jù)儲存的安全性。

a.Raid0

Raid0數(shù)據(jù)儲存方法如下(假設有兩塊硬盤D1、D2):


Raid0數(shù)據(jù)儲存

特點:數(shù)據(jù)被并行寫入每個磁盤,每個磁盤都保存了完整數(shù)據(jù)的一部分,讀取也采用并行方式,磁盤數(shù)量越多,讀取和寫入速度越快。因為沒有冗余,一個硬盤壞掉全部數(shù)據(jù)丟失。至少兩塊硬盤才能組成Raid0陣列。

容量:所有硬盤之和。

b.Raid1

Raid1數(shù)據(jù)儲存方法如下(假設有兩塊硬盤D1、D2):


Raid1數(shù)據(jù)儲存

特點:有數(shù)據(jù)冗余,可靠性強,D1、D2被寫入相同的數(shù)據(jù),其中D2可以作為D1的完整備份。讀取時,從兩塊硬盤上并行讀取,寫入慢,讀取快。任何一塊硬盤壞掉不會丟失數(shù)據(jù),至少兩塊硬盤并且兩塊硬盤大小相等才能組成Raid1陣列。

容量:所有硬盤容量之和的一半(一半寫數(shù)據(jù),一半用來做備份)。

c.Raid4

Raid4數(shù)據(jù)儲存方法如下(假設有三塊硬盤D1、D2、D3):


Raid4數(shù)據(jù)儲存

特點:有數(shù)據(jù)冗余校驗,可靠性強。其中任何一塊硬盤壞掉都不會引起數(shù)據(jù)丟失,D1丟失時,D3根據(jù)校驗和以及D2的數(shù)據(jù)進行逆運算,計算出D1的數(shù)據(jù)。但當寫入大量數(shù)據(jù)時校驗盤D3會是一個數(shù)據(jù)瓶頸,導致寫入慢。只有當兩塊磁盤同時丟失時,數(shù)據(jù)才無法恢復。至少三塊硬盤并且磁盤大小應該相等才能組成Raid4陣列(不常用)。

容量:所有硬盤容量之和減去其中一塊硬盤的容量。

d.Raid5

Raid5數(shù)據(jù)儲存方法如下(假設有三塊硬盤D1、D2、D3):


Raid5數(shù)據(jù)儲存

特點:采用奇偶校驗,可靠性強,磁盤校驗和被散列到不同的磁盤里面,增加了讀寫速率。只有當兩塊磁盤同時丟失時,數(shù)據(jù)才無法恢復,至少三塊硬盤并且硬盤大小應該相等才能組成Raid5陣列。

容量:所有硬盤容量之和減去其中一塊硬盤的容量,被減去的容量被分配到三塊硬盤的不同區(qū)域用來存放數(shù)據(jù)校驗信息。

e.Raid10

Raid10(Raid1+Raid0)是現(xiàn)在比較常用的一種磁盤陣列級別,它的容錯好,讀寫數(shù)據(jù)效率較高,但經(jīng)費相對也較高。
Raid10數(shù)據(jù)儲存方法如下(假設有四塊硬盤D1、D2、D3、D4):


Raid10數(shù)據(jù)儲存

特點:備份和并發(fā)式存取數(shù)據(jù),可靠性強。D1、D2組成一個陣列Raid1,其中D1是數(shù)據(jù)盤,D2是備份盤;D3、D4也組成一個Raid1,其中D3是數(shù)據(jù)盤,D4是備份盤;在這個基礎上將D1、D2作為一個整體,將D3、D4也作為一個整體,這兩個整體之間再組成一個Raid0陣列。這樣不僅僅讀取數(shù)據(jù)會非???,并發(fā)寫入的速度也會隨著磁盤的增多而變快。至少四塊硬盤并且每塊硬盤大小應該相等才能組成Raid10陣列。

容量:所有硬盤容量之和的一半(一半寫數(shù)據(jù),一半用來備份數(shù)據(jù))。

f.Raid01

Raid01數(shù)據(jù)儲存方法如下(假設有四塊硬盤D1、D2、D3、D4):


Raid01數(shù)據(jù)儲存

特點:D1、D2組成一個陣列Raid0,D3、D4也組成一個陣列Raid0,D1、D2和D3、D4再組成一個Raid1。D1和D2作為數(shù)據(jù)盤陣列,D3和D4作為數(shù)據(jù)備份陣列,這種方式并不常用,至少四塊硬盤并且每塊硬盤大小應該相等才能組成Raid01陣列。

容量:所有硬盤容量之和的一半。

0×2.Linux創(chuàng)建磁盤陣列實例

這一部分通過Linux上的mdadm命令來實現(xiàn)Raid10磁盤陣列。

a.實驗環(huán)境介紹

實驗環(huán)境為一臺安裝了5塊硬盤的計算機,操作系統(tǒng)是CentOS7,除系統(tǒng)所在硬盤(/dev/sda)外,其余四塊20G的硬盤盤符分別為(/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde);

主要用到的命令:mdadm;

CentOS7中mdadm默認已安裝,如果沒有安裝,可以使用yum在線安裝,如下:

#首先確保已經(jīng)連接到互聯(lián)網(wǎng),搜索一下yum服務器上是否存在mdadm
qing@qingsword.com:~$ sudo yum search mdadm

#根據(jù)搜索結果和系統(tǒng)環(huán)境選擇對應的版本安裝
qing@qingsword.com:~$ sudo yum install mdadm.x86_64

#安裝需要root權限,請確保普通用戶可用sudo或切換到root權限操作

到這里,實驗的準備工作完成。

b.創(chuàng)建磁盤陣列Raid10

#參數(shù)詳解:
# 磁盤陣列創(chuàng)建需要root權限;
# -C 創(chuàng)建一個新的RAID起名為md0;
# -a yes 自動創(chuàng)建對應設備;
# -l 指定RAID級別,本例是10;
# -n 活動的磁盤數(shù)量(備份盤除外);
# 因為RAID10最少需要4塊硬盤,后面的sd[b-e]都被添加到md0中;
# 如果要創(chuàng)建其他級別的RAID,只需要更改-l參數(shù)后的級別,并根據(jù)所需要的硬盤的數(shù)量更改-n參數(shù)后面的數(shù)量即可;
qing@qingsword.com:~$ sudo mdadm -C /dev/md0 -a yes -l 10 -n 4 /dev/sd[b-e]
Continue creating array? (y/n)  y #輸入y繼續(xù)

#如果每塊硬盤容量都很大,RAID的創(chuàng)建不是瞬間完成的,通過查看下面這個文件,可以看到一個創(chuàng)建進度,確保全部完成后再進行下一步
qing@qingsword.com:~$ cat /proc/mdstat
Personalities : [raid10]
[====>................]  resync = 24.0%
#只有這個到達100%才算完成

#查看剛才創(chuàng)建的磁盤陣列md0詳細信息
qing@qingsword.com:~$  sudo mdadm -D /dev/md0

c.配置開機自啟動磁盤陣列

新創(chuàng)建的磁盤陣列默認是不能開機自啟動的,需要手動創(chuàng)建一個配置文件,讓系統(tǒng)在啟動的時候自動啟動Raid(經(jīng)過測試,CentOS7并不需要創(chuàng)建這個配置文件,如果重啟后磁盤陣列沒有隨機啟動,請使用下面的方法配置一次):

#這個配置文件的創(chuàng)建需要root權限才可進行,切換到root
qing@qingsword.com:~$ su root
 
#將mdadm信息寫入配置文件
root@qingsword.com:~# mdadm -D --scan > /etc/mdadm.conf

d.將磁盤陣列掛載到目錄使用

#掛載前先需要對磁盤陣列格式化
qing@qingsword.com:~$ sudo mkfs.ext4 /dev/md0

#掛載,本例掛載到/mnt目錄
qing@qingsword.com:~$ sudo mount /dev/md0 /mnt

#查看已經(jīng)掛載的設備,可以看到/dev/md0可使用的大小是40G,上面已經(jīng)介紹過,Raid10可用大小是活動硬盤總和的一半
qing@qingsword.com:~$ sudo df -h
Filesystem                   Size  Used Avail Use% Mounted on
...
/dev/md0                     40G   176M   38G  1%  /mnt

0×3.創(chuàng)建冗余磁盤陣列

可以在創(chuàng)建RAID的時候指定有幾塊冗余磁盤,當工作磁盤出現(xiàn)故障的時候,冗余磁盤自動啟動,頂替出現(xiàn)故障的磁盤繼續(xù)工作,請看下面的實例:

#假設有6塊硬盤,前面4塊用作RAID10,后面兩塊將被用作冗余(參數(shù)-x 2表示有2塊硬盤用作冗余)
qing@qingsword.com:~$ sudo mdadm -C /dev/md0 -a yes -l 10 -n 4 -x 2 /dev/sd[b-g]

#查看磁盤陣列詳細詳細
qing@qingsword.com:~$ sudo mdadm -D /dev/md0
...
Raid Level : raid10
...
Raid Devices : 4 #參與磁盤陣列硬盤數(shù)4
Total Devices : 6 #總硬盤數(shù)6
...
Active Devices : 4 #正在工作的硬盤4
Working Devices : 6 #能夠工作的硬盤6個
Failed Devices : 0  #故障硬盤數(shù)0
Spare Devices : 2 #空閑硬盤數(shù)2

Number Major Minor RaidDevice State
  0  8  16   0  active sync set-A  /dev/sdb
  1  8  32   1  active sync set-B  /dev/sdc
  2  8  48   2  active sync set-A  /dev/sdd
  3  8  64   3  active sync set-B  /dev/sde

  4  8  80   -   spare   /dev/sdf #兩個冗余磁盤
  5  8  96   -   spare   /dev/sdg

下面手動將一塊磁盤標記為故障,看看冗余盤是否起作用:

#將md0中sdc標記為故障
qing@qingsword.com:~$ sudo mdadm /dev/md0 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0

qing@qingsword.com:~$ sudo mdadm -D
...
Active Devices : 4
Working Devices : 5
#還有5個能工作的磁盤(包括剩下冗余的1個)
Failed Devices : 1 #壞掉1個
Spare Devices : 1 #空閑1個

Number Major Minor RaidDevice State
  0  8  16  0  active sync set-A  /dev/sdb
  5  8  96  1  active sync set-B  /dev/sdg
  2  8  48  2  active sync set-A  /dev/sdd
  3  8  64  3  active sync set-B  /dev/sde

  1  8  32  -  faulty  /dev/sdc
  4  8  80  -  spare  /dev/sdf

假如/dev/sdc經(jīng)過測試后發(fā)現(xiàn)沒有問題,想要重新加入md0使用,可以在系統(tǒng)重啟后,使用"mdadm /dev/md0 -a /dev/sdc"命令將它重新(添加)啟用。

如果以后,想要加入一塊新硬盤到這個raid10里作為備份盤,這塊新硬盤需要和其他硬盤(或分區(qū))保持相同的大小,然后使用下面的命令添加:

#添加后,就會在備份列表中看到/dev/sdh這塊硬盤了
qing@qingsword.com:~$ sudo mdadm /dev/md0 --add /dev/sdh
 
#或簡寫命令如下,效果同上
qing@qingsword.com:~$ sudo mdadm /dev/md0 -a /dev/sdh

0×4.刪除磁盤陣列

要想徹底清除RAID以及數(shù)據(jù),請使用下面的方法:

#1.如果已經(jīng)掛載,先卸載
qing@qingsword.com:~$ sudo umount /dev/md0

#2.關閉RAID
qing@qingsword.com:~$ sudo mdadm -S /dev/md0

#3.將磁盤sdb至sdf中的所有數(shù)據(jù)全部用0填充(創(chuàng)建時有多少塊硬盤,這里就寫多少塊,例如上面創(chuàng)建了冗余是從b-g,那么這里就寫/dev/sd[b-g])
qing@qingsword.com:~$ sudo mdadm --zero-superblock /dev/sd[b-f]

#4.刪除啟動配置文件(如果有)
qing@qingsword.com:~$ sudo rm -rf /etc/mdadm.conf

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 在單機時代,采用單塊磁盤進行數(shù)據(jù)存儲和讀寫的方式,由于尋址和讀寫的時間消耗,導致I/O性能非常低,且存儲容量還會受...
    牛初九閱讀 719評論 0 0
  • 來自公眾號:安占鑫 導讀:RAID一頁通整理所有RAID技術、原理并配合相應RAID圖解,告訴你什么是RAID,R...
    碼農(nóng)小光閱讀 1,023評論 0 4
  • RAID簡稱”磁盤冗余陣列,是由加利福利亞大學伯克利分校在1988年,發(fā)表文章并定義的。據(jù)英特爾創(chuàng)始人之一戈登·摩...
    扎啤閱讀 2,198評論 0 5
  • Linux系統(tǒng)安全 | Linux下邏輯卷LVM的管理和RAID磁盤陣列 原創(chuàng) 謝公子 [謝公子學安全](java...
    蒼簡閱讀 1,009評論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,869評論 28 54

友情鏈接更多精彩內容