LVM簡介
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是一種磁盤管理工具,最主要的功能就是可以隨時在線調整分區的大小,解決了安裝Linux系統時需要評估分區大小的煩惱。
LVM相關術語
物理存儲介質(The physical media):LVM存儲介質,可以是硬盤分區、整個硬盤、raid陣列或SAN硬盤。設備必須初始化為LVM物理卷,才能與LVM結合使用。
物理卷PV(physical volume):物理卷就是LVM的基本存儲邏輯塊,但和基本的物理存儲介質比較卻包含與LVM相關的管理參數,創建物理卷可以用硬盤分區,也可以用硬盤本身。
卷組VG(Volume Group):LVM卷組類似於非LVM系統中的物理硬盤,一個卷組VG由一個或多個物理卷PV組成。可以在卷組VG上建立邏輯卷LV。卷組VG可以使多個硬盤空間看起來像是一個大硬盤。
邏輯卷LV(logical volume):類似於非LVM系統中的硬盤分區,邏輯卷LV建立在卷組VG之上。在邏輯卷LV之上建立文件系統。邏輯卷LV可以創建跨多個硬盤空間的分區。
物理塊PE(physical Extent):物理卷PV中可以分配的最小存儲單元,PE的大小可以指定,默認為4MB
邏輯塊LE(Logical Extent):邏輯卷LV中可以分配的最小存儲單元,在同一卷組VG中LE的大小和PE是相同的,並且一一相對。
可以在線對卷組VG、邏輯卷LV進行創建、刪除、調整大小等操作。但LVM上的文件系統也需要重新調整大小。
一、LVM常用命令
安裝:apt install lvm2
1、(pv、vg、lv)scan 掃描
2、(pv、vg、lv)create 創建
3、(pv、vg、lv)display 顯示詳細信息
4、(pv、vg、lv)remove 移除
5、(vg、lv)extend 擴展
6、(vg、lv)reduce 減少
7、(pvs、vgs、lvs)s是簡單查看對應卷信息
二、創建物理卷PV
1、格式化分區或者硬盤為8e,及Linux LVM格式。
2、使用pvcreate創建物理卷PV。
3、pvs查看創建好的物理卷。
三、創建卷組VG
使用vgcreate創建卷組VG,並且此處可以-s選項指定PE(LE)的大小,(默認PE大小4M)。創建完成后使用vgs查看結果。
四、創建邏輯卷LV
使用lvcreate創建LV。lvcreate -n lvname -L lvsize(M,G)|-l LEnumber vgname。(-L分配內存M、G)(-l 按照PE[物理卷基本單元]單元大小4MB分配,4MB*16=64M),所以vg1和vg2是大小相等的。
五、格式化與掛載
1、 mkfs.ext4 /dev/vg1/lv1
//將lv1格式化成ext4
2、 mkdir /lv1
3、 mount /dev/vg1/lv1 /lv1
//掛載到/lv1下
4、 echo
"/dev/vg1/lv1 /lv1 ext4 defaults 0 0"
>> /etc/fstab
//追加到開機掛載
六、邏輯卷LV擴容(動態擴容)
1、首先需要確認是否有可用的擴容空間,邏輯卷LV是從卷組VG中創建的,所有在邏輯卷LV擴容前需要查看卷組VG的空間使用情況。
(1)lvextend -L +100M /dev/vg1/lv1
// +100M是增加100M
(2)lvextend -L 100M /dev/vg1/lv2
//直接使用100M是增加到100M
(3)resize2fs /dev/vg1/lv1
//ext4文件系統在線擴容
七、卷組VG擴容
卷組的擴容相當簡單,一般是LVM空間不夠時,添加一塊新硬盤時使用。
vgs、pvs 查看當前卷組和物理卷分區信息
vgextend vg1 /dev/sdb3 擴展卷組vg1,增加lvm分區物理卷 /dev/sdb3
八、邏輯卷LV縮小
邏輯卷LV縮小命令lvreduce與擴容命令類似,縮減邏輯卷LV請謹慎操作!
lvreduce命令使用-L選項減少空間,-r選項減少文件系統空間,實現動態調整(這是ext4文件系統)
lvreduce -L 200M -r /dev/vg1/lv1 減少到200M
如果不使用-r選項,那么需要卸載掛載點再使用resize2fs調整,但這已經不是動態調整了
xfs文件系統真的只能增大,不能減小。
九、卷組VG縮小
卷組VG的縮小,要查看物理卷PV是否被使用,因為無法縮減一個正在使用的物理卷PV
使用pvs或者pvdisplay查看當前卷組VG所使用的物理卷是否是否存在數據。(/dev/sdb1當前存有數據,/dev/sdb3不存在數據)
此時想要將/dev/sdb1移出vg1,可以使用pvmove命令移動數據,但必須有足夠的空間。
pvmove /dev/sdb1 /dev/sdb3 移動數據
此時,已經將 /dev/sdb1中數據移動到 /dev/sdb3
vgreduce vg1 /dev/sdb1 減小卷組vg1 ,去掉 /dev/sdb1 物理卷
十、刪除LVM
umount /lv1
//卸載掛載點
lvremove /dev/vg1/lv1
//移除邏輯卷
vgremove vg1
//移除卷組
pvremove /dev/sdb1
//移除物理卷
lvm創建(新建)
1、添加硬盤sdb,創建主分區。
ls /dev/sd*
fdisk /dev/sdb
設置主分區大小和類型(Linux或者是Linux lvm)
2、創建物理卷pv
pvcreate /dev/sdb1 /dev/sdb2 /dev/sdc1...或者 pvcreate /dev/sdb{1,2,3,4,...}
查看創建好的物理卷pvs、PVdisplay
3、創建卷組vg
vgcreate vg1 /dev/sdb1 /dev/sdb2 ....
vgcreate -s 16M vg2 /dev/sdb3 ... 指定最小PE為16M,默認為4M
查看創建好的卷組vgs、vgdisplay
4、創建邏輯卷lv
lvcreate -n lv1 -L 64M vg1 指定固定大小64M
lvcreate -n lv2 -l 16 vg1 16*4M=64M,16個PE
5、格式化
mkfs.ext4 /dev/vg1/lv1 將LV1格式化成ext4
6、掛載使用
mkdir /lv1
mount /dev/vg1/lv1 /lv1
ceho "/dev/vg1/lv1 /lv1 ext4 defaults 0 0" >> /etc/fstab 開機自動掛載
lvm擴展(擴容、減小、移動、移除)
1、邏輯卷lv擴容
vgs 查看當前LV所在卷組是否有剩余空間
lvextend -L +400M -r /dev/vg1/lv1
若沒有-r,沒有實時同步文件系統,需要同步
resize2fs /dev/vg1/lv1
2、卷組vg擴容(卷組的擴容相當簡單,一般是LVM空間不夠時,添加一塊新硬盤時使用。)
vgextend vg1 /dev/sdc1
3、邏輯卷lv減小(lvreduce命令使用-L選項減少空間,-r選項減少文件系統空間,實現動態調整(這是ext4文件系統))
lvreduce -L -100M -r /dev/vg1/lv1
如果不使用-r,需要卸載掛載點再使用resize2f調整
resize2fs /dev/vg1/lv1
4、卷組vg減小。(更換舊硬盤)
卷組減小,要查看 物理卷pv是否被占用pvs
通過pvs看到 /dev/sdb1 在vg1卷組,而且pfree <psize,說明 /dev/sdb1 有數據
需要將 /dev/sdb1 數據移動到其他vg1卷組的物理卷上/dev/sdb3
pvmove /dev/sdb1 /dev/sdb3
vgreduce vg1 /dev/sdb1
5、刪除lvm
umount /lv1
lvremove /dev/vg1/lv1 移除卷組
pvremove /dev/sdb1 移除物理卷