1. 程式人生 > >CentOS7模擬RAID10、LVM邏輯卷管理和磁盤配額

CentOS7模擬RAID10、LVM邏輯卷管理和磁盤配額

raid0 resize 移除 tex 軟件raid sha 虛擬硬盤 生成 edquota

RAID10是RAID1+RAID0技術的一個“組合體”,RAID10技術需要至少4塊硬盤來組建,其中先分別兩兩制作成RAID1磁盤陣列,以保證數據的安全性;然後再對兩個RAID1磁盤陣列實施RAID0技術,進一步提高硬盤設備的讀寫速度。
當用戶想要隨著實際需求的變化調整硬盤分區大小時,會受到硬盤“靈活性”的限制,這時就需要用到另外一項非常普及的硬盤設備資源管理技術了,即LVM(邏輯卷管理器),LVM可以允許用戶對硬盤資源進行動態調整。
廢話不多說,下面我們就來模擬制作RAID10和LVM吧。

一、部署RAID10+備份盤

首先在虛擬機上添加5塊新的虛擬硬盤,然後啟動虛擬機。
技術分享圖片
使用fdisk -l命令,確認5塊新硬盤是否都已被系統認到。

技術分享圖片
生產環境中用到的服務器一般都配備RAID陣列卡,而我們現在是用mdadm命令在Linux系統中創建和管理軟件RAID磁盤陣列,它涉及的理論知識和操作過程與生產環境中的RAID陣列卡是一樣的。
表1:mdadm命令的常用參數和作用

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

接下來,使用mdadm命令創建RAID10,名稱為“/dev/md0”。
其中-C參數表示創建一個RAID陣列卡,-v顯示創建過程,/dev/md0為創建的設備名稱,-a yes表示自動創建設備文件,-n 4表示使用4塊硬盤,-l 10表示RAID 10方案,-x 1表示有一塊備份盤,最後跟上5塊硬盤設備的名稱。

mdadm -Cv /dev/md0 -a yes -n 4 -l 10 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
技術分享圖片
查看/dev/md0磁盤陣列的詳細信息
mdadm -D /dev/md0
技術分享圖片
創建2個分區,分別為/dev/md0p1和/dev/md0p2
fdisk /dev/md0
技術分享圖片

二、部署LVM邏輯卷

表2:常用的LVM命令

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

1、創建物理卷(PV)
pvcreate /dev/md0p1 /dev/md0p2
技術分享圖片
查看物理卷狀態
pvdisplay
技術分享圖片
2、創建卷組(VG)
創建一個名為storage的卷組,並把上面的兩個物理卷加入該卷組中。
vgcreate storage /dev/md0p1 /dev/md0p2
技術分享圖片
查看卷組狀態
vgdisplay
技術分享圖片
3、創建邏輯卷(LV)
這裏我們切割出兩個邏輯卷,vo01和vo02,即/dev/storage/vo01和/dev/storage/vo02,大小分別為15G和10G。

lvcreate -n vo01 -L 15G storage
lvcreate -n vo02 -L 10G storage

技術分享圖片
查看邏輯卷狀態
lvdisplay
技術分享圖片
把創建好的兩個邏輯卷格式化成ext4。

mkfs.ext4 /dev/storage/vo01
mkfs.ext4 /dev/storage/vo02

技術分享圖片
技術分享圖片
創建兩個目錄,將邏輯卷掛載使用。

mkdir /data1
mkdir /data2
mount /dev/storage/vo01 /data1
mount /dev/storage/vo02 /data2

查看分區情況
df -h
技術分享圖片
寫入到/etc/fstab裏,開機自動掛載

echo "/dev/storage/vo01 /data1 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/storage/vo02 /data2 ext4 defaults 0 0" >> /etc/fstab

技術分享圖片
4、調整邏輯卷大小,註:調整大小之前一定要先卸載,否則邏輯卷會出問題。
縮小邏輯卷容量步驟:1、卸載(umount),2、檢查分區完整性(e2fsck),3、確認分區容量(resize2fs),4、減少分區容量(lvreduce)。
將/dev/storage/vo01減少5G

umount /dev/storage/vo01
umount /dev/storage/vo02
e2fsck -f /dev/storage/vo01
resize2fs /dev/storage/vo01 10G
lvreduce -L -5G /dev/storage/vo01

技術分享圖片
將/dev/storage/vo02增加10G
擴展邏輯卷容量步驟:1、卸載(umount),2、增加分區容量(lvextend),3、檢查分區完整性(e2fsck),4、確認分區容量(resize2fs)。

lvextend -L +10G /dev/storage/vo02
e2fsck -f /dev/storage/vo02
resize2fs /dev/storage/vo02

技術分享圖片
重新掛載文件分區

mount /dev/storage/vo01 /data1
mount /dev/storage/vo02 /data2

5、擴展邏輯組容量
前面講過如何調整邏輯卷容量,可是如果邏輯組的容量不夠用了,該如何處理呢,現在我們就來往邏輯組裏增加一塊硬盤設備。
對於LVM來講,不管設備是RAID、硬盤還是分區,它不會去管存儲設備的底層架構和布局,即然如此,我們就添加一塊硬盤來做測試。
首先關閉(shutdown)虛擬機,添加一塊新的虛擬硬盤,然後啟動虛擬機
技術分享圖片
確認新硬盤已經被系統識別
fdisk -l
技術分享圖片
加入新的物理卷(PV)
pvcreate /dev/sdg
技術分享圖片
把/dev/sdg加入到storage卷組中
vgextend storage /dev/sdg
技術分享圖片
6、制作邏輯卷快照
LVM還具備“快照卷”功能,該功能類似於虛擬機軟件的快照功能。例如:可以對某一個邏輯卷設備做一次快照,如果日後發現數據被改錯了,就可以利用之前做好的快照卷進行覆蓋還原。LVM的快照卷功能有兩個特點:
(1)快照卷的容量必須等同於邏輯卷的容量;
(2)快照卷僅一次有效,一旦執行還原操作後則會被立即自動刪除。
首先往/dev/data1下寫入一個文件
echo "xuad to bad" > /data1/xuad.txt
技術分享圖片
使用-s參數生成一個快照卷,使用-L參數指定要創建快照的邏輯卷大小,-n參數指定快照卷名稱,最後跟上邏輯卷的完整路徑。
lvcreate -L 10G -s -n LVdata1 /dev/storage/vo01
技術分享圖片
查看快照卷信息
lvdisplay
技術分享圖片
在/dev/data1下創建一個1G的垃圾文件,然後再查看快照卷的狀態,發現存儲空間占用量上升了。
註:由於創建的文件容量太大,dd命令執行的時間會比較久,請耐心等待。
dd if=/dev/zero of=/data1/files.txt count=1 bs=1G
技術分享圖片
技術分享圖片
通過快照卷對邏輯卷進行還原操作,記得先卸載掉邏輯卷與目錄的掛載。

umount /data1
lvconvert --merge /dev/storage/LVdata1

註:由於邏輯卷容量比較大,所以lvconvert命令執行的時間比較久,請耐心等待。
技術分享圖片
還原後快照卷會被自動刪除掉,而且剛才創建的1G垃圾文件也被清除了。將/dev/storage/vo01掛載,然後檢查檢查垃圾文件是否已被清除。
mount /dev/storage/vo01 /data1
技術分享圖片

三、模擬損壞磁盤陣列及修復

將/dev/sdb標記為已損壞,然後查看RAID磁盤陣列的狀態,發現備用盤已經自動替換上去並開始同步數據了。

mdadm /dev/md0 -f /dev/sdb
mdadm -D /dev/md0

技術分享圖片
假設我們又新購買了一塊硬盤/dev/sdb,現在將新硬盤加入到RAID10磁盤陣列中,首先移除/dev/sdb,然後卸載兩個邏輯卷,再然後使用-a參數檢測一下就行了,最後別忘記掛載邏輯卷。
mdadm /dev/md0 -r /dev/sdb
發現/dev/sdb設備已經成功移除。
技術分享圖片

umount /data1
umount /data2
mdadm /dev/md0 -a /dev/sdb
mdadm -D /dev/md0

此時/dev/sdb已成為備用盤
技術分享圖片

mount /dev/storage/vo01 /data1
mount /dev/storage/vo02 /data2

技術分享圖片

四、quota磁盤配額

root管理員可以通過磁盤容量配額服務來限制某個用戶或某個用戶組針對特定目錄可以使用的最大容量和最大文件個數,一旦達到這個最大值就不再允許繼續使用。可以使用quota命令進行磁盤容量配額管理,從而限制用戶的可用容量和所能創建的最大文件個數。quota命令分為軟限制和硬限制兩個功能。
(1)軟限制:當達到軟限制時會提示用戶,但仍允許用戶在限定的額度內繼續使用。
(2)硬限制:當達到硬限制時會提示用戶,且強制終止用戶的操作。
編輯/dev/fstab配置文件,使/data1目錄支持quota磁盤配額技術,我們這裏對用戶進行配額,所以只需要添加usrquota參數即可,而grpquota參數是針對用戶組的。
vim /etc/fstab
註:ext文件系統使用的是usrquota和grpquota參數,xfs文件系統使用的是uquota參數。
技術分享圖片
卸載/data1,再重新掛載,給/data1增加其他人的寫權限。

umount /data1
mount -a
chmod -Rf o+w /data1

技術分享圖片
在/data1目錄下生成quota配置文件

quotacheck -cugm /data1/
ll /data1/ | grep quota

技術分享圖片
啟動磁盤配額
quotaon /data1/
設置對用戶xuad的磁盤配額限制
edquota -u xuad
註:第一個soft是磁盤容量大小軟限制,第一個hard是磁盤容量大小硬限制,單位是KB;第二個soft是文件數量軟限制,第二個hard是文件數量硬限制。
設置使用磁盤容量的軟限制和硬限制分別是3M和8M,設置文件數量的軟限制和硬限制分別是3個和5個。
技術分享圖片
現在切換到xuad用戶,然後創建一個5M和10M的文件,進行測試。

su - xuad
dd if=/dev/zero of=/data1/files bs=5M count=1

發現雖然給了警告,但文件依然可以正常創建。
技術分享圖片
dd if=/dev/zero of=/data1/files bs=10M count=1
發現報錯了,寫入失敗,達到了quota的限制,文件大小只有8M。
技術分享圖片
現在刪除files文件,再來創建幾個正常的文件進行測試
rm -f /data1/files
用touch命令創建文件,發現在創建到第四個文件時給出了警告,在創建第六個文件時給出了報錯,第六個文件無法創建。
技術分享圖片

CentOS7模擬RAID10、LVM邏輯卷管理和磁盤配額