Ubuntu 上創(chuàng)建常用磁盤陣列

Data Raid

RAID(Redundant Array of Independent Disk 獨立冗余磁盤陣列)技術(shù)是加州大學(xué)伯克利分校1987年提出,最初是為了組合小的廉價磁盤來代替大的昂貴磁盤,同時希望磁盤失效時不會使對數(shù)據(jù)的訪問受損 失而開發(fā)出一定水平的數(shù)據(jù)保護技術(shù)。RAID就是一種由多塊廉價磁盤構(gòu)成的冗余陣列,在操作系統(tǒng)下是作為一個獨立的大型存儲設(shè)備出現(xiàn)。RAID可以充分發(fā) 揮出多塊硬盤的優(yōu)勢,可以提升硬盤速度,增大容量,提供容錯功能夠確保數(shù)據(jù)安全性,易于管理的優(yōu)點,在任何一塊硬盤出現(xiàn)問題的情況下都可以繼續(xù)工作,不會 受到損壞硬盤的影響。

RAID 為 Redundant Array of Indepent Disks (獨立磁盤冗余陣列) 的縮寫,其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。根據(jù)選擇的版本不同,RAID比單顆硬盤有以下一個或多個方面的好處:增強數(shù)據(jù)集成度,增強容錯功能,增加處理量或容量。另外,磁盤陣列對于電腦來說,看起來就像一個單獨的硬盤或邏輯存儲單元。最常用的四種RAID為 RAID 0、RAID 1、RAID 5、RAID 10。

我們將會使用 mdadm 這個ubuntu上的工具創(chuàng)建和管理磁盤陣列。

必要的準備

如果要查看當前機器上是否具有磁盤陣列的配置(在 /proc/mdstat 文件內(nèi)),我們可以打以下的指令:

$ cat /proc/mdstat

Output
Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sdc[1] sdd[0]
209584128 blocks super 1.2 512k chunks

       unused devices: <none>

從文件系統(tǒng)中卸載磁盤陣列:

$ sudo umount /dev/md0

然后,暫停并移除此磁盤陣列:

$ sudo mdadm --stop /dev/md0
$ sudo mdadm --remove /dev/md0

查出磁盤的結(jié)構(gòu)的指令:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
輸出
NAME     SIZE FSTYPE            TYPE MOUNTPOINT
sda      100G                   disk 
sdb      100G                   disk 
sdc      100G linux_raid_member disk 
sdd      100G linux_raid_member disk 
vda       20G                   disk 
├─vda1    20G ext4              part /
└─vda15    1M                   part 

如果發(fā)現(xiàn)我們的磁盤已經(jīng)做過陣列,我們需要重置它們的超級塊(Superblock),使其正?;?

$ sudo mdadm --zero-superblock /dev/sdc
$ sudo mdadm --zero-superblock /dev/sdd

你應(yīng)該刪除所有的陣列相關(guān)的引用設(shè)置,例如在 /etc/fstab 文件內(nèi)自動掛載設(shè)置

$ sudo nano /etc/fstab
# /etc/fstab
. . .
# 將這行注釋,否則會引至啟動失敗
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

當然,你還需要在陣列定義文件 /etc/mdadm/mdadm.conf 內(nèi)移除原有的陣列設(shè)置

sudo nano /etc/mdadm/mdadm.conf
# /etc/mdadm/mdadm.conf
. . .

# 注釋陣列設(shè)置
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

最后更新 initramfs 系統(tǒng):

sudo update-initramfs -u

OK,此時一切回到?jīng)]有陣列的普通磁盤狀態(tài)了,我們就可以開始以下的嘗試了。

Initramfs 初始 ram 文件系統(tǒng)基于 'tmpfs ' (大小靈活、 內(nèi)存中的輕量級文件系統(tǒng)),但是他并不是一個單獨的塊設(shè)備 (所以沒有緩存和所有額外的開銷)。就像 initrd,它包含的工具和腳本在被稱為真正的根文件系統(tǒng)上的二進制文件 init啟動之前被掛載 。這些工具可以解密抽象層 (用于加密的文件系統(tǒng)),邏輯卷管理器,軟件 raid,藍牙驅(qū)動程序基于文件系統(tǒng)的裝載機等。

格式化

在格式化過程中有一個點大家要注意的是,由于現(xiàn)在的硬盤容量越來越大,fdisk 只能硬式化2T以內(nèi)的硬盤,如果你想用兩個3T的硬盤做陣列那么還是用Parted GPT吧:

$ sudo parted /dev/sdb

這個指令按照向?qū)碜鼍秃昧?,過程極其簡單。將格式做成 ext4 就可以了。

RAID 0

RAID 0 即Data Stripping(數(shù)據(jù)分條技術(shù))。整個邏輯盤的數(shù)據(jù)是被分條(stripped)分布在多個物理磁盤上,可以并行讀/寫,提供最快的速度,但沒有冗余能力。要求至少兩個磁盤。我們通過RAID 0可以獲得更大的單個邏輯盤的容量,且通過對多個磁盤的同時讀取獲得更高的存取速度。RAID 0首先考慮的是磁盤的速度和容量,忽略了安全,只要其中一個磁盤出了問題,那么整個陣列的數(shù)據(jù)都會不保了。

在開始之前我們還是先用 lsblk 查看一下磁盤的狀態(tài):

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME     SIZE FSTYPE TYPE MOUNTPOINT
sda      100G        disk
sdb      100G        disk
vda       20G        disk 
├─vda1    20G ext4   part /
└─vda15    1M        part

創(chuàng)建陣列

$ sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

檢查磁盤陣列的狀態(tài):

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdb[1] sda[0]
      209584128 blocks super 1.2 512k chunks

            unused devices: <none>

RAID 1

兩組以上的N個磁盤相互作鏡像,在一些多線程操作系統(tǒng)中能有很好的讀取速度,理論上讀取速度等于硬盤數(shù)量的倍數(shù),另外寫入速度有微小的降低。只要一個磁盤正常即可維持運作,可靠性最高。其原理為在主硬盤上存放數(shù)據(jù)的同時也在鏡像硬盤上寫一樣的數(shù)據(jù)。當主硬盤(物理)損壞時,鏡像硬盤則代替主硬盤的工作。因為有鏡像硬盤做數(shù)據(jù)備份,所以RAID 1的數(shù)據(jù)安全性在所有的RAID級別上來說是最好的。但無論用多少磁盤做RAID 1,僅算一個磁盤的容量,是所有RAID中磁盤利用率最低的一個級別。

  • 磁盤利用率為50%。也就是說,如果我們有兩個磁盤每個500GB,總共是1TB,但在鏡像中它只會顯示500GB。
  • 在鏡像如果一個磁盤發(fā)生故障不會有數(shù)據(jù)丟失,因為兩個磁盤中的內(nèi)容相同。
  • 讀取性能會比寫入性能更好。

創(chuàng)建 RAID 1 至少要有兩個磁盤,你也可以添加更多的磁盤,磁盤數(shù)需為2,4,6,8等偶數(shù)。要添加更多的磁盤,你的系統(tǒng)必須有 RAID 物理適配器(硬件卡)。

這里,我們使用軟件 RAID 不是硬件 RAID,如果你的系統(tǒng)有一個內(nèi)置的物理硬件 RAID 卡,你可以從它的功能界面或使用 Ctrl + I 鍵來訪問它。

創(chuàng)建陣列

$ sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

RAID 5

RAID Level 5是一種儲存性能、數(shù)據(jù)安全和存儲成本兼顧的存儲解決方案。它使用的是Disk Striping(硬盤分區(qū))技術(shù)。RAID 5至少需要三塊硬盤,RAID 5不是對存儲的數(shù)據(jù)進行備份,而是把數(shù)據(jù)和相對應(yīng)的奇偶校驗信息存儲到組成RAID5的各個磁盤上,并且奇偶校驗信息和相對應(yīng)的數(shù)據(jù)分別存儲于不同的磁盤上。當RAID5的一個磁盤數(shù)據(jù)發(fā)生損壞后,可以利用剩下的數(shù)據(jù)和相應(yīng)的奇偶校驗信息去恢復(fù)被損壞的數(shù)據(jù)。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統(tǒng)提供數(shù)據(jù)安全保障,但保障程度要比鏡像低而磁盤空間利用率要比鏡像高。RAID 5具有和RAID 0相近似的數(shù)據(jù)讀取速度,只是因為多了一個奇偶校驗信息,寫入數(shù)據(jù)的速度相對單獨寫入一塊硬盤的速度略慢,若使用“回寫緩存”可以讓性能改善不少。同時由于多個數(shù)據(jù)對應(yīng)一個奇偶校驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較便宜。

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
NAME     SIZE FSTYPE TYPE MOUNTPOINT
sda      100G        disk
sdb      100G        disk
sdc      100G        disk
vda       20G        disk 
├─vda1    20G ext4   part /
└─vda15    1M        part

創(chuàng)建RAID 5陣列

$ sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

RAID 6

與RAID 5相比,RAID 6增加第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統(tǒng)使用不同的算法,數(shù)據(jù)的可靠性非常高,任意兩塊磁盤同時失效時不會影響數(shù)據(jù)完整性。RAID 6需要分配給奇偶校驗信息更大的磁盤空間和額外的校驗計算,相對于RAID 5有更大的IO操作量和計算量,其“寫性能”強烈取決于具體的實現(xiàn)方案,因此RAID6通常不會通過軟件方式來實現(xiàn),而更可能通過硬件/固件方式實現(xiàn)。

同一數(shù)組中最多容許兩個磁盤損壞。更換新磁盤后,數(shù)據(jù)將會重新算出并寫入新的磁盤中。依照設(shè)計理論,RAID 6必須具備四個以上的磁盤才能生效。

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
NAME     SIZE FSTYPE TYPE MOUNTPOINT
sda      100G        disk
sdb      100G        disk
sdc      100G        disk
sdd      100G        disk
vda       20G        disk 
├─vda1    20G ext4   part /
└─vda15    1M        part

創(chuàng)建陣列

$ sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

RAID 10

RAID 10是先鏡射再分區(qū)數(shù)據(jù),再將所有硬盤分為兩組,視為是RAID 0的最低組合,然后將這兩組各自視為RAID 1運作。

RAID 10(又叫RAID 1+0)特點:

  • 最少需要4塊磁盤
  • 先按RAID 0分成兩組,再分別對兩組按RAID 1方式鏡像
  • 兼顧冗余(提供鏡像存儲)和性能(數(shù)據(jù)條帶形分布)
  • 在實際應(yīng)用中較為常用
$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
NAME     SIZE FSTYPE TYPE MOUNTPOINT
sda      100G        disk
sdb      100G        disk
sdc      100G        disk
sdd      100G        disk
vda       20G        disk 
├─vda1    20G ext4   part /
└─vda15    1M        part

創(chuàng)建陣列

sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

掛載文件系統(tǒng)

下一步,在陣列上創(chuàng)建文件系統(tǒng):

$ sudo mkfs.ext4 -F /dev/md0

在文件系統(tǒng)上創(chuàng)建掛載點的文件夾

$ sudo mkdir -p /mnt/md0

掛載陣列至掛載點文件夾上

$ sudo mount /dev/md0 /mnt/md0

檢查是否已具有新的磁盤空間:

$ df -h -x devtmpfs -x tmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  1.1G   18G   6% /
/dev/md0        197G   60M  187G   1% /mnt/md0

現(xiàn)在文件系統(tǒng)已經(jīng)成載掛載將可以訪問了。

開機自動掛載

為了確保陣列開機時被載入,我們應(yīng)該調(diào)整一下 /etc/mdadm/mdadm.conf 的配置文件,我可以加以下的指令使系統(tǒng)在啟動自檢時掃描磁盤陣列的詳細信息:

$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

另外,你可以更新 initfamfs 或者初始化RAM文件系統(tǒng),這樣一來陣列會在啟動前就可以生效:

$ sudo update-initramfs -u

最重要的一點是一定要在 /etc/fstab 配置文件內(nèi)加入自動掛載的設(shè)置:

$ echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

這樣 ubuntu 啟動后就會自動將磁盤陣列掛入了。

另外,如果沒有設(shè)置自動掛載,在系統(tǒng)重啟后或磁盤名稱更改(插入其它硬盤會導(dǎo)致盤名變更的)例如 /dev/md0 變成了 /dev/md127 就可能會出現(xiàn)磁盤不能被掛載的問題,此時切記重新創(chuàng)建陣列,因這將會毀掉你的一切!重新手工掛載一下就OK了:

$ sudo mount /dev/md127 /mnt/md0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,347評論 2 377

推薦閱讀更多精彩內(nèi)容