1. 程式人生 > 實用技巧 >使用RAID與LVM磁碟陣列技術

使用RAID與LVM磁碟陣列技術

1. RAID 0

RAID 0技術把多塊物理硬碟裝置(至少兩塊)通過硬體或軟體的方式串聯在一起,組成一個大的卷組,並將資料依次寫入到各個物理硬碟中。這樣一來,在最理想的狀態下,硬碟裝置的讀寫效能會提升數倍,但是若任意一塊硬碟發生故障將導致整個系統的資料都受到破壞。通俗來說,RAID 0技術能夠有效地提升硬碟資料的吞吐速度,但是不具備資料備份和錯誤修復能力。

2. RAID 1

RAID 1技術是把兩塊以上的硬碟裝置進行繫結,在寫入資料時,是將資料同時寫入到多塊硬碟裝置上(可以將其視為資料的映象或備份)。當其中某一塊硬碟發生故障後,一般會立即自動以熱交換的方式來恢復資料的正常使用。

3. RAID 5

RAID5技術是把硬碟裝置的資料奇偶校驗資訊儲存到其他硬碟裝置中。RAID 5磁碟陣列組中資料的奇偶校驗資訊並不是單獨儲存到某一塊硬碟裝置中,而是儲存到除自身以外的其他每一塊硬碟裝置上,這樣的好處是其中任何一裝置損壞後不至於出現致命缺陷;圖中parity部分存放的就是資料的奇偶校驗資訊,換句話說,就是RAID 5技術實際上沒有備份硬碟中的真實資料資訊,而是當硬碟裝置出現問題後通過奇偶校驗資訊來嘗試重建損壞的資料。RAID這樣的技術特性“妥協”地兼顧了硬碟裝置的讀寫速度、資料安全性與儲存成本問題。

4. RAID 10

RAID 10技術是RAID 1+RAID 0技術的一個“組合體”。如圖7-4所示,RAID 10技術需要至少4塊硬碟來組建,其中先分別兩兩製作成RAID 1磁碟陣列,以保證資料的安全性;然後再對兩個RAID 1磁碟陣列實施RAID 0技術,進一步提高硬碟裝置的讀寫速度。這樣從理論上來講,只要壞的不是同一組中的所有硬碟,那麼最多可以損壞50%的硬碟裝置而不丟失資料。由於RAID 10技術繼承了RAID 0的高讀寫速度和RAID 1的資料安全性,在不考慮成本的情況下RAID 10的效能都超過了RAID 5,因此當前成為廣泛使用的一種儲存技術。

部署磁碟陣列

mdadm命令用於管理Linux系統中的軟體RAID硬碟陣列,格式為“mdadm [模式] <RAID裝置名稱> [選項] [成員裝置名稱]”。

mdadm命令的常用引數和作用

引數	作用
1.-a	    檢測裝置名稱
2.-n	    指定裝置數量
3.-l	    指定RAID級別
4.-C          建立
5.-v	    顯示過程
6.-f	    模擬裝置損壞
7.-r	    移除裝置
8.-Q	    檢視摘要資訊
9.-D	    檢視詳細資訊
10.-S	    停止RAID磁碟陣列

** 損壞磁碟陣列及修復**

移除陣列中一塊硬碟來模擬一塊硬碟損壞。

1.mdadm /dev/md0 -f /dev/sdb    #把/dev/sdb從磁碟陣列/dev/md0中移除
2.mdadm -D /dev/md0             #檢視磁碟這列/dev/md0詳細資訊,發現/dev/sdb狀態從active變為faulty
3.umount /RAID                  #先重啟系統,解除安裝/RAID目錄
4.mdadm /dev/md0 -a /dev/sdb    #把新硬碟新增到RAID磁碟陣列中
5.mdadm -D /dev/md0             #檢視磁碟陣列/dev/md0詳細資訊,/dev/sdb正在 spare rebuilding,然後變回active
6.mount -a                      #重新掛載

磁碟陣列+備份盤

部署RAID 5 磁碟陣列時,至少需要用3塊硬碟,還需要再加一塊備份硬碟。
還原虛擬機器,部署RAID 5 + 1備份盤 。

1.mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[b-e]           #用3塊硬碟建立RAID 5磁碟陣列,再用1塊作為備份盤
2.mdadm -D /dev/md0                                        #檢視磁碟陣列詳細資訊,顯示3個盤為actvie,1個盤為spare,RAID型別為RAID 5
3.mkfs.ext4 /dev/md0                                       
4.echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab    #往/etc/fstab檔案追加掛載資訊,以實現永久掛載
5.mkdir /RAID
6.mount -a
7.mdadm /dev/md0 -f /dev/sdb                               #故意移除RAID 5陣列中的其中一個盤(active的盤)
8.mdadm -D /dev/md0                                        #再檢視磁碟陣列/dev/md0詳細資訊,顯示備份盤自動定提上去並開始資料同步(spare rebuilding)。

LVM邏輯卷管理器

LVM(邏輯卷管理器)可以允許使用者對硬碟資源進行動態調整。(讓使用者靈活的變更分割槽的大小)

邏輯卷管理器是Linux系統用於對硬碟分割槽進行管理的一種機制,理論性較強,其建立初衷是為了解決硬碟裝置在建立分割槽後不易修改分割槽大小的缺陷。而LVM技術是在硬碟分割槽和檔案系統之間添加了一個邏輯層,它提供了一個抽象的卷組,可以把多塊硬碟進行卷組合並。

LVM的技術架構如圖。

LVM的核心理念

1.物理卷處於LVM中的最底層,可以將其理解為物理硬碟、硬碟分割槽或者RAID磁碟陣列,這都可以。
2.卷組建立在物理卷之上,一個卷組可以包含多個物理卷,而且在卷組建立之後也可以繼續向其中新增新的物理卷。
3.邏輯卷是用卷組中空閒的資源建立的,並且邏輯卷在建立後可以動態地擴充套件或縮小空間。

部署邏輯卷

部署LVM時,需要逐個配置物理卷、卷組和邏輯卷。常用的部署命令如表所示。

部署邏輯卷步驟:(PV -> VG -> LV)

讓硬碟裝置支援LVM技術(pvcreate)。
把硬碟裝置加入到卷組(vgcreate)。
從卷組中切割一定空間作為邏輯卷(lvcreate)。
把生成好的邏輯捲進行格式化,然後掛載使用(mkfs,mount,/etc/fstab)。
1.pvcreate /dev/sdb /dev/sdc                                            #建立物理卷,讓硬碟裝置支援LVM
2.vgcreate storage /dev/sdb /dev/sdc                                    #把建立好的物理卷組成卷組,命名為storge
3.vgdisplay                                                             #檢視卷組狀態
4.lvcreate -n vo -l 40 storage                                          #從卷組storge切割出40個基本單元(預設大小4M)建立一個160M的邏輯卷,命名為vo。-l 40效果等同於-L 160M
5.lvdisplay                                                             #檢視邏輯卷狀態
6.mkfs.ext4 /dev/storage/vo                                             #格式化邏輯卷vo
7.echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab    #往/etc/fatab檔案追加掛載資訊,實現永久掛載
8.mkdir /linuxprobe                                                     #建立掛載點
9.mount -a                                                              #掛載
10.df -h                                                                 #檢視掛載狀態

擴容邏輯卷

擴容前,先解除安裝裝置和掛載點的關聯。

擴容邏輯卷(lvextend);
檢查硬碟完整性(e2fsck),並重置硬碟容量(resize2fs);
重新掛載硬碟裝置並檢視掛載狀態。mount -a   df -h

縮小邏輯卷

縮容前,先解除安裝裝置和掛載點的關聯。

檢查硬碟完整性(e2fsck);
先向系統報備一下即將要執行邏輯捲縮容的操作(resize2fs),再縮容邏輯卷(lvreduce);
重新掛載硬碟裝置並檢視掛載狀態。mount -a   df -h

邏輯卷快照

LVM還具備有“快照卷”功能,該功能類似於虛擬機器軟體的還原時間點功能。
LVM的快照卷功能有兩個特點:
1.快照卷的容量必須等同於邏輯卷的容量;
2.快照卷僅一次有效,一旦執行還原操作後則會被立即自動刪除。
往邏輯卷裝置新建一個檔案。然後為邏輯卷建立快照卷。再在邏輯卷目錄生成一個垃圾檔案。後先解除安裝邏輯卷與掛載點關聯,再嘗試快照還原操作(lvconvert --merge),再重新掛載,檢視邏輯卷目錄是否回到建立快照前的狀態。
1.echo "Welcome to Linuxprobe.com" > /linuxprobe/readme.txt    #往邏輯卷裝置寫入一個檔案
2.ls -l /linuxprobe                                            #檢視邏輯卷目錄的內容
3.lvcreate -L 120M -s -n SSS /dev/storage/vo                   #為邏輯卷vo生成一個快照卷,命名為SSS,指定切割大小為120M,
4.lvdisplay                                                    #檢視邏輯卷詳細資訊,可以看到SSS是vo的快照卷(snapshot)
5.dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M         #在邏輯卷vo的目錄下建立一個100M的檔案
6.lvdisplay                                                    #檢視邏輯卷詳細資訊,可以發現vo的空間佔用量上升
7.umount /linuxprobe                                           #解除安裝邏輯卷與掛載點關聯
8.lvconvert --merge /dev/storage/SSS                           #對邏輯卷vo進行快照還原操作 mount -a                                                     #重新掛載
9.ls /linuxprobe/                                              #檢視邏輯卷目錄,可以發現建立快照後再建立的100M檔案不見了,邏輯卷恢復成設定快照前的狀態

刪除邏輯卷

當生產環境中想要重新部署LVM或者不再需要使用LVM時,則需要執行LVM的刪除操作。為此,需要提前備份好重要的資料資訊,然後依次刪除邏輯卷、卷組、物理卷裝置,這個順序不可顛倒。

刪除邏輯卷

1.umount /linuxprobe                               #解除安裝
2.vim /etc/fstab
3./dev/storage/vo /linuxprobe ext4 defaults 0 0    #刪除掛載資訊
4.lvremove /dev/storage/vo                         #刪除邏輯卷,要按y確認
5.vgremove storage                                 #刪除卷組
6.pvremove /dev/sdb /dev/sdc                       #刪除物理卷
2020-10-29    19:33:11