? ??


我們先來看一下這張圖片:

image.png

PV: 底層的一個硬盤設備,可以是一個分區,也可能是一個RAID。我們可以把這個塊設備創建成一個物理卷格式,即一個PV。

VG: 將一個或多個PV提供的存儲空間在一個更低的單位上劃分成一個個獨立的存儲單元,并且把這些存儲單元合成一個較為高層的組件叫做卷組vg;

? ? ? ?其中vg可以包含多個物理卷。我們這里可以看到vg有點類似于擴展分區,這種格式的分區是沒有辦法創建文件系統的,必須要它劃分成邏輯分區。

LV: 在vg的基礎上再次創建LV的組件,LV才是真正意義上的邏輯卷。每一個LV邏輯卷都是一個獨立的文件系統,可以被格式化掛載使用,LV的大小可以是vg內的任意大小空間;

? ? ? ?lv可以支持動態擴展的,當存儲空間不夠時,可以再添加pe,當空間足夠時,可以刪除的多余的pe,并且這個過程是不損害lv當中原有的數據的,lv的大小可以動態擴展跟收縮。

PE: vg會在一個邏輯層次上將每一個pv所提供的物理空間劃分成固定大小的PE.(物理盤區),然后在vg上面創建lv,所為創建lv的過程就是指定一定數量的pe來組成邏輯存儲單元的過程。


pv管理工具:

? ? ? ? pvs:簡要顯示pv的信息

? ? ? ? pvdisplay:顯示pv的詳細信息

? ? ? ??pvcreate ?/dev/DEVICE:創建PV

vg管理工具:

? ? ? ? vgs:簡要顯示vg的信息

? ? ? ? vgdisplay:顯示vg的詳細信息

? ? ? ? vgcreate ?卷組名 ?/dev/DEVICE:創建vg

? ? ? ? vgextend ?VolumeGroupNam??PhysicalDevicePath:? 擴展vg

? ? ? ??vgreduce ?VolumeGroupNam??PhysicalDevicePath:? 縮減vg

? ? ? ? 備注:這里我們要注意在縮減前先做pvmove進行物理層次的縮減即PV的縮減

?lv管理工具:

? ? ? ?lvs:簡要顯示lv的信息

? ? ? ?lvdisplay:顯示lv的詳細信息,路徑為/dev/卷組名稱/卷組

? ? ? ?lvcreate -L ?[大小MGT] ?-n NAME VolumeGroup(vg名稱)

? ? ? ?lvcreate -L 128M??-n mylv myvg

? ? ? ?lvremove ?/dev/VG_NAME/LV_NAME:刪除邏輯卷

? ? ? 擴展邏輯卷:

? ? ? ?lvextend -L ?[+]MGT ?/dev/VG_NAME/VL_NAME

? ? ? ?resize2fs ? /dev/VG_NAME/LV_NAME 只適用于ext文件系統

? ? ? 縮減邏輯卷:(縮減后的空間一定要能容納現有所有的數據)

? ? ? ?umount ?/dev/VG_NAME/LV_NAME

? ? ? ?e2fsck -f /dev/VG_NAME/LV_NAME

? ? ? ?resize2fs /dev/VG_NAME/LV_NAME ? [MGT] 縮減文件系統

? ? ? ?lvreduce -L [-]MGT /dev/VG_NAME/LV_NAME 縮減邏輯卷

? ? ? ?mount ?/dev/VG_NAME/LV_NAME 掛載


接下來我們用一個示例來講解一下邏輯卷的創建與管理

首先我們新添加一塊磁盤/dev/sdb

然后創建三個5G的分區,磁盤格式設置為LVM格式,并為其創建ext4文件系統

????image.png

partprobe /dev/sdb:通知內核重新讀取磁盤

接下來我們創建一個PV

pvcreate /dev/sdb1

image.png

這里我們可以使用pvdisplay查看一下

image.png


接下我們創建一個vg

vgcreate? myvg? /dev/sdb1

如果不制定大小的話,默認創建出來的vg卷中的PE大小為4M,想要為PE指定大小可以使用-s選項

vgcreate -s 10 myvg? /dev/sdb1

這樣創建出來的PE大小為10M?

注意:如果我們想要刪除次卷組可以使用命令vgremove

例如刪除剛剛創建的myvg卷組

vgremove? myvg

我們現在可以將第一個邏輯分區添加到剛剛創建好的myvg中

pvcreate /dev/sdb5

vgextend myvg? /dev/sdb5

image.png

如果我們想要縮減vg卷組,首先我們要將卷組中想要移除pv中的數據移到卷組中其它的pv上面,然后在縮減

pvmove /dev/sdb5

vgreduce? myvg? /dev/sdb5

image.png

現在我們來創建一個名稱為mylv的邏輯卷

lvcreate -L 2G -n mylv myvg

image.png

對邏輯卷進行格式化并掛載到/mnt/test目錄上

mke2fs? -t? ext4? /dev/myvg/mylv

mount /dev/myvg/mylv? ?/mnt/test

這時候這個邏輯卷分區就可以正常使用了,我們復制一個文件做一下測試

cp /etc/fstab? ?/mnt/test

擴展邏輯卷

lvextencet? -L 5G? /dev/myvg/mylv

并重新出創建文件系統

resize2fs? ?/dev/myvg/mylv

image.png

備注:resize2fs命令只適用于ext文件系統類型,如果是xfs,btrfs文件系統則需要使用別的命令

設置開機自動掛載

在/etc/fstab文件中添加

/dev/myvg/mylv? ?/mnt/test? ? ext4? defaults? ?0? 0??

縮減邏輯卷

先縮減文件系統到指定大小

第一步:先卸載文件系統

umount? /dev/myvg/mylv

第二步:e2fsck -f /dev/myvg/mylv做文件系統的強制檢測文件系統修復

e2fsck -f /dev/myvg/mylv

第三步:resize2fs? ?/dev/myvg/mylv? #[mg]

resize2fs? ?/dev/myvg/mylv 3G

lvreduce -L 3G? /dev/myvg/mylv

image.png

這樣我們就完成了對邏輯卷的縮減


上述所有內容就是對邏輯卷管理的一些概述與操作。