使用RAID與LVM磁盤陣列技術

使用RAID與LVM磁盤陣列技術

RAID磁盤冗餘陣列

RAID技術確實具有非常好的數據冗餘備份功能,但是它也相應地提高了成本支出
RAID技術的設計初衷是減少因爲採購硬盤設備帶來的費用支出,但是與數據本身的價值相比較,現代企業更看重的則是RAID技術所具備的冗餘備份機制以及帶來的硬盤吞吐量的提升。也就是說,RAID不僅降低了硬盤設備損壞後丟失數據的機率,還提升了硬盤設備的讀寫速度,所以它在絕大多數運營商或大中型企業中得以廣泛部署和應用。

出於成本和技術方面的考慮,需要針對不同的需求在數據可靠性及讀寫性能上作出權衡,制定出滿足各自需求的不同方案。目前已有的RAID磁盤陣列的方案至少有十幾種,主要有RAID 0、RAID 1、RAID 5與RAID 10這4種最常見的方案。

RAID 0

RAID 0技術把多塊物理硬盤設備(至少兩塊)通過硬件或軟件的方式串聯在一起,組成一個大的卷組,並將數據依次寫入到各個物理硬盤中。這樣一來,在最理想的狀態下,硬盤設備的讀寫性能會提升數倍,但是若任意一塊硬盤發生故障將導致整個系統的數據都受到破壞。通俗來說,RAID 0技術能夠有效地提升硬盤數據的吞吐速度,但是不具備數據備份和錯誤修復能力。數據被分別寫入到不同的硬盤設備中,即disk1和disk2硬盤設備會分別保存數據資料,最終實現提升讀取、寫入速度的效果。
也就是說:RAID0 是把數據分別寫入到兩塊磁盤上面,來提高磁盤的讀寫速度但RAID 0 不具備冗餘防災等特性
raid0.png

RAID1

儘管RAID 0技術提升了硬盤設備的讀寫速度,但是它是將數據依次寫入到各個物理硬盤中,也就是說,它的數據是分開存放的,其中任何一塊硬盤發生故障都會損壞整個系統的數據。因此,如果生產環境對硬盤設備的讀寫速度沒有要求,而是希望增加數據的安全性時,就需要用到RAID 1技術了。
RAID1 是把兩塊以上的硬盤設備進行綁定,在寫入數據時,是將數據同時寫入到多塊硬盤中,當其中某塊硬盤損壞,系統一般會立即自動以熱交換的方式來恢復數據的正常使用。
RAID1 相當於爲數據做了一個鏡像

由於RAID1的出發點是注重數據的安全性,導致磁盤設備的利用率下降。
根據統計,磁盤空間的真實利用率只有50%,又三塊磁盤設備組成的RAID1磁盤陣列的可用率只有33%左右。
所以當需要把數據同時寫入到兩塊以上的硬盤設備中,會增大系統計算能力的負載
從數據安全和成本上,不可能在保持原有硬盤設備的利用率且還不增加新設備的情況下,來大幅度提升數據的安全性

總的來說:RAID1就是把數據都寫入到每個磁盤,來提高安全性,但損失了讀寫速度
raid1.png

RAID5

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

RAID10

RAID 5技術是因爲硬盤設備的成本問題對讀寫速度和數據的安全性能而有了相應的妥協,但數據本身的價值更高於硬盤的成本,因此在有些生產環境中主要使用RAID 10技術。

RAID 10技術是RAID 1+RAID0技術的一個“組合體”。RAID10技術需要至少4塊硬盤來組建,其中先分別兩兩製作成RAID1磁盤陣列,以保證數據的安全性;然後再對兩個RAID1磁盤陣列實施RAID 0技術,進一步提高硬盤設備的讀寫速度。這樣從理論上來講,只要壞的不是同一組中的所有硬盤,那麼最多可以損壞50%的硬盤設備而不丟失數據。由於RAID 10技術繼承了RAID 0的高讀寫速度和RAID1的數據安全性,在不考慮成本的情況下RAID 10的性能都超過了RAID5。

raid10.png

部署磁盤陣列

製作RAID10磁盤陣列

要求:至少需要4塊以上的硬盤
利用虛擬機來進行演示,注意:在需要添加磁盤的時候,一定要先關閉系統。否則將會導致虛擬機系統無法識別添加的虛擬設備

mdadm命令 用於管理 linux系統 中的軟件RAID磁盤陣列。
格式:

mdadm [模式] <RAID設備名稱> [選項] [成員設備名稱]

生產環境中的服務器一般用的都是RAID陣列卡。此時就不需要使用mdadm命令。
進行簡單的實驗,就不需要單獨購買服務器。使用mdadm在linux系統中創建和管理軟件RAID磁盤陣列。
mdadm設計的理論知識的操作過程與生產環境中完全一致。

參數 作用
-a 檢測設備名稱
-n 指定設備數量
-l 指定RAID級別
-C 創建
-v 顯示過程
-f 模擬設備損壞
-r 移除設備
-Q 查看摘要信息
-D 查看詳細信息
-S 停止RAID磁盤陣列

1.使用mdadm命令創建RAID 10;名稱命名爲:"/dev/md10"

mdadm -Cv /dev/md10 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

# -Cv 表示的是創建RAID陣列卡,並顯示創建的過程
# -a yes 表示的是 自動創建設備文件
# -n 4 表示的是 使用4塊硬盤來部署這個RAID磁盤陣列
# -l 10 表示的是 代表RAID10方案
# 最後加上4塊硬盤設備的名稱

2.對RAID磁盤陣列進行格式化爲ext4

將製作好的RAID10 磁盤陣列進行格式化

mkfs.ext4 /dev/md10

3.對磁盤陣列進行掛載

創建掛載點,並把磁盤設備進行掛載操作。

mkdir RAID10
mount /dev/md10 /RAID10
df -Th

4.查看磁盤陣列詳細信息

查看磁盤陣列詳細信息,並將掛載信息寫入到配置文件中,使其永久生效

mdadm -D /dev/md10
echo "/dev/md10 /RAID ext4 defaults 0 0" >> /etc/fstab

損壞磁盤陣列和修復

在生產環境中部署RAID10磁盤陣列,是爲了提高硬盤存儲設備的讀寫速度及數據的安全性,但由於我們的硬盤設備是在虛擬機中模擬出來的,因此對讀寫速度的改善可能並不直觀。
模擬:使用mdadm命令將某塊磁盤移除,之後查看RAID磁盤陣列的狀態,查看狀態是否改變。

首先確認有一塊物理硬盤設備出現損壞不能繼續正常使用後,使用mdadm命令來予以移除,之後查看RAID磁盤陣列組的狀態已經發生改變

mdadm /dev/md10 -f /dev/sdb

mdadm -D /dev/md10

在RAID10磁盤陣列中,RAID1中存在的故障盤不影響RAID10磁盤陣列的使用,當有新的正常的硬盤設備後,使用mdadm命令來進行替換即可,在此期間,我們可以在/RAID 目錄中正常地創建或刪除文件。但由於是虛擬機中模擬硬盤,所以需要:先重啓系統,然後把心的硬盤添加到RAID磁盤陣列中。

umount /RAID10
mdadm /dev/md10 -a /dev/sdb
mdadm -D /dev/md10
mount -a

磁盤陣列 + 備份盤

RAID 10磁盤陣列中最多允許50%的硬盤設備發生故障,但是存在這樣一種極端情況,即同一RAID 1磁盤陣列中的硬盤設備若全部損壞,也會導致數據丟失。換句話說,在RAID 10磁盤陣列中,如果RAID1中的某一塊硬盤出現了故障,而我們正在前往修復的路上,恰巧該RAID1磁盤陣列中的另一塊硬盤設備也出現故障,那麼數據就被徹底丟失了。
這種情況下,可以使用RAID備份技術來預防此類事故,核心理念就是:準備一塊足夠大的硬盤,這塊硬盤在平時處於閒置狀態,一旦RAID磁盤陣列中硬盤出現故障後立即頂替上去。
由於是虛擬機進行此類實驗,爲防止衝突,保證每個實驗的相對獨立性,需要將虛擬機還原到初始狀態。
這裏來演示一下RAID5的部署效果,RAID5磁盤陣列部署,需要至少3塊硬盤,還需要加一塊備份硬盤,也就是4塊硬盤。

部署RAID5磁盤陣列

mdadm -Cv /dev/md5 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

格式化RAID5磁盤陣列,並掛載

mkfs.ext4 /dev/md5
echo "/dev/md5 /RAID5 ext4 defaults 0 0" >> /etc/fstab
mkdir /RAID5
mount -a

驗證備份盤是否自動頂替

把磁盤 /dev/sdb 移除磁盤陣列,然後迅速查看 /dev/md5 磁盤陣列的狀態,查看備份盤是否自動頂替並開始同步。

mdadm /dev/md5 -f /dev/sdb
mdadm -D /dev/md5

LVM邏輯卷管理器

磁盤陣列卡雖然能夠有效提高硬盤設備的讀寫速度以及數據的安全性,但是磁盤分好區或者部署爲RAID磁盤陣列之後,在修改硬盤分區大小就不容易。
也就是說:當想要隨着實際需求的變化調整硬盤分區的大小時,會受到硬盤“靈活性”的限制。
此時就需要–磁盤設備資源管理技術–LVM(邏輯卷管理器)。LVM可以允許隨時對硬盤資源進行動態調整。

邏輯卷管理器是Linux系統用於對硬盤分區進行管理的一種機制,理論性較強,其創建初衷是爲了解決硬盤設備在創建分區後不易修改分區大小的缺陷。儘管對傳統的硬盤分區進行強制擴容或縮容從理論上來講是可行的,但是卻可能造成數據的丟失。而LVM技術是在硬盤分區和文件系統之間添加了一個邏輯層,它提供了一個抽象的卷組,可以把多塊硬盤進行卷組合並。這樣一來,用戶不必關心物理硬盤設備的底層架構和佈局,就可以實現對硬盤分區的動態調整。LVM的技術架構如圖所示。

物理卷(PV):處於LVM的最底層,可以將其理解爲:物理硬盤,硬盤分區或者RAID磁盤陣列。
卷組(VG):建立在物理卷之上,一個卷組可以包含多個物理卷,而且卷組創建之後也可以繼續向其中添加新的物理卷。
邏輯卷(LV):使用卷組中空閒的資源建立的,並且邏輯卷在建立後可以動態的擴展或縮小空間。
以上就是LVM的核心理念

邏輯卷.png

部署邏輯卷

實際環境中,是無法正確評估每個硬盤分區在今後的使用情況,所以可能會導致原先分配的硬盤分區不夠用。並且在實際生產環境中,還存在對較大的硬盤分區進行精簡縮容的情況出現。
常見的部署命令:

功能/命令 物理卷管理(PV) 卷組管理(VG) 邏輯卷管理(LV)
掃描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
顯示 pvdisplay vgdisplay lvdisplay
刪除 pvremove vgremove lvremove
擴展 vgextend lvextend
縮小 vgreduce lvreduce

注意:使用新的虛擬機進行部署

使用2塊虛擬硬盤來進行LVM實驗
我們先對這兩塊新硬盤進行創建物理卷的操作,可以將該操作簡單理解成讓硬盤設備支持LVM技術,或者理解成是把硬盤設備加入到LVM技術可用的硬件資源池中,然後對這兩塊硬盤進行卷組合並,卷組的名稱可以由用戶來自定義。接下來,根據需求把合併後的卷組切割出一個約爲150MB的邏輯卷設備,最後把這個邏輯卷設備格式化成EXT4文件系統後掛載使用。

1.添加2塊硬盤設備支持LVM技術

pvcreate /dev/sdb /dev/sdc

2.將兩塊硬盤加入到strong卷組中

vgcreate strong /dev/sdb /dev/sdc
vgdisplay

# strong 表示的是卷組的名字,可以任意

3.切割一個大約 150MB的邏輯卷設備
注意: 單位的問題。

  • 1.以容量爲單位,所使用的參數爲 -L
  • 2.以基本單元的個數爲單位,使用參數 -l,默認每個基本單元的大小爲4MB.所以生成一個150MB的邏輯卷就是 -l 37
# 創建邏輯卷,是以卷組的根據,所需需要接上卷組的名稱
# 下面中的vo 表示的是邏輯卷的名稱
lvcreate -n vo -l 37 strong
lvdisplay

4.將生成的邏輯捲進行格式化,然後掛載
Linux系統會把LVM中的邏輯卷設備存放在/dev設備目錄中。同時會以卷組的名稱來建立一個目錄,這個目錄中保存了邏輯卷的設備映射文件(/dev/卷組名稱/邏輯卷名稱)

mkfs.ext4 /dev/strong/vo
mkdir /LVM
mount /dev/strong/vo /LVM

5.查看掛載信息,並寫入配置文件,永久生效

df -Th
echo "/dev/strong/vo /LVM ext4 defaults 0 0" >> /etc/fstab

擴容邏輯卷

在進行擴展前,需要卸載設備和掛載點的關聯

umount /LVM

1.將vo擴展到290MB

lvextend -L 290M /dev/strong/vo

2.檢查磁盤完整性,重置硬盤容量

e2fsck -f /dev/strong/vo

resize2fs /dev/strong/vo

3.重新掛載硬盤設備

mount -a 
df -Th

縮小邏輯卷

相較於擴容邏輯卷,在對邏輯捲進行縮容操作時,其丟失數據的風險更大。所以在生產環境中執行相應操作時,一定要提前備份好數據。另外Linux系統規定,在對LVM邏輯捲進行縮容操作之前,要先檢查文件系統的完整性(當然這也是爲了保證我們的數據安全)。在執行縮容操作前記得先把文件系統卸載掉。

umount /LVM

1.檢查文件系統的完整性

e2fsck -f /dev/strong/ov

2.把邏輯卷壓縮到120MB

resize2fs /dev/strong/vo 120M

3.重新掛載並查看系統狀態

mount -a 
df -Th

邏輯卷快照

LVM還具備有“快照卷”功能,該功能類似於虛擬機軟件的還原時間點功能。例如,可以對某一個邏輯卷設備做一次快照,如果日後發現數據被改錯了,就可以利用之前做好的快照捲進行覆蓋還原。LVM的快照卷功能有兩個特點:

  • 1.快照卷的容量必須等同於邏輯卷的容量
  • 2.快照卷僅一次有效,一旦執行還原操作後則會被立即自動刪除

查看卷組的信息

lvdisplay

用重定向往邏輯卷設備所掛載的目錄中寫入一個文件

echo "Welcome to my blog" > /LVM/readme.txt
ls -l /LVM

1.使用-s參數生成一個快照。使用-L參數指定切割的大小,還需要在命令後面寫上針對那個邏輯卷執行快照操作

# -n SNAP表示的是快照的名稱
lvcreate -L 120M -s -n SNAP /dev/strong/vo

lvdisplay

2.在邏輯卷所掛載的目錄中創建一個100M的垃圾文件,然後查看快照卷的狀態,來查看存儲空間佔的用量是否上升

dd if=/dev/zero of=/LVM/files count=1 bs=100M

lvdisplay

3.檢驗SNAP快照卷的效果,需要對邏輯捲進行快照還原操作
注意:對快照進行還原操作前,需要先卸載邏輯卷設備與目錄的掛載

umount /LVM
lvconvert --marge /dev/strong/SNAP

4.快照卷會被自動刪除掉,剛纔在邏輯卷設備被執行快照操作後在創建出來的100M垃圾文件也被清除

mount -a 
ls /LVM

刪除邏輯卷

當生產環境中想要重新部署LVM或者不再需要使用LVM時,則需要執行LVM的刪除操作。爲此,需要提前備份好重要的數據信息.

注意:刪除的順序依次爲:刪除邏輯卷、卷組、物理卷設備,這個順序不可顛倒。

1.取消邏輯卷與目錄的掛載關聯,刪除配置文件中永久生效的配置

umount /LVM
vim /etc/fstab
~~/dev/strong/vo /LVM ext4 defaults 0 0~~

2.刪除邏輯卷設備,需要交互輸入y來確定

lvremove /dev/strong/vo
y

3.刪除卷組
刪除卷組的時候,只需要寫卷組名稱即可,不需要設備的絕對路徑

vgremove strong

4.刪除物理卷設備

pvremove /dev/sdb /dev/sdc

5.最後檢查物理卷 邏輯卷 卷組等LVM信息是否還存在

lvdisplay
vgdisplay
pvdisplay

總結

在實際部署一個項目中,需要根據實際的項目需求,來選擇是讓的磁盤陣列。
同時,爲了項目之後能夠正常,簡便的擴容,需要在上線各具體項目之前,利用LVM邏輯卷管理器來配置磁盤相關信息。
希望能夠幫助正在翻閱西文章的各位。

鏈接:可否博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章