一、LVM簡介
1. 什么是LVM?
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫
2. 為什么使用LVM?
LVM通常用於裝備大量磁盤的系統,但它同樣適於僅有一、兩塊硬盤的小系統。
-----小系統使用LVM的益處:傳統的文件系統:一個文件系統對應一個分區,直觀,但不易改變,不同的分區相對獨立,無相互聯系,各分區空間常常利用不平衡,空間不能充分利用。當一個文件系統/分區已滿時,無法對其擴充,只能采用重新分區/建立文件系統,非常麻煩,或把分區中的數據移到另一個更大的分區中;或采用符號連接的方式使用其它分區的空間。如果要把硬盤上的多個分區合並在一起使用,只能采用再分區的方式,這個過程需要數據的備份與恢復。采用LVM:硬盤的多個分區由LVM統一為卷組管理,可以方便的加入或移走分區以擴大或減小卷組的可用容量,充分利用硬盤空間;文件系統建立在邏輯卷上,而邏輯卷可根據需要改變大小(在卷組容量范圍內)以滿足要求,可以跨分區。
----大系統使用LVM的益處:在使用很多硬盤的大系統中,使用LVM主要是方便管理、增加了系統的擴展性。用戶/用戶組的空間建立在LVM上,可以隨時按要求增大,或根據使用情況對各邏輯卷進行調整。當系統空間不足而加入新的硬盤時,不必把用戶的數據從原硬盤遷移到新硬盤,而只須把新的分區加入卷組並擴充邏輯卷即可。同樣,使用LVM可以在不停服務的情況下。把用戶數據從舊硬盤轉移到新硬盤空間中去。
3 優點:可隨時按需求改變邏輯卷大小,充分利用硬盤空間。
二、LVM原理
傳統文件系統,比如這個盤只有300G,那么建立在這個300G上面的文件系統最多只能用到300G,但是有了LVM這個功能后,我們建立文件系統的盤就不是建立在物理盤上,而是建立在一個叫LV邏輯卷上面,這個卷是一個邏輯概念不是物理盤,空間可能大於一個物理盤,也可能小於一個物理盤。而且這個LV邏輯卷的空間可以擴展和縮小,這樣就給上層的文件系統提供了更好的支持。
需要理解的幾個概念:
PV(Physical Volume):物理空間的意思,其實就是指一個分區(如/dev/sdb1 )或者是一個盤(如/dev/sdb)
VG(Volume Group):相當於一個Pool,由多個PV組成的pool
LV(Logical Volume):用來建立一個文件系統的空間,這個空間來源於VG,大小隨意,可以擴展。(比如/dev/mapper/rhel-root這個目錄其實是一個文件系統掛載點,這個點就是承載在一個LV上,這個文件系統的大小就是這個LV的大小。 )
原理圖:
三、LVM實驗
1)創建PV,VG,LV的指令
創建物理卷 pvcreate /dev/vdb1 ##創建物理卷/dev/vdb1 創建物理卷組 vgcreate vg0 /dev/vdb1 ##創建物理卷組vg0 創建邏輯卷 lvcreate -L 300M -n lv0 vg0 ##在vg0卷組上創建名為lv0,大小為300M的邏輯卷 (-L指定創建的LV大小,-l指定創建的LV的PE數量,-n是LV的名字)
2)創建一個邏輯卷(操作展示)
[root@localhost ~]# fdisk /dev/vda
將分區類型改為LVM:
創建步驟:
[root@localhost ~]# pvcreate /dev/vdb1 ##創建物理卷
[root@localhost ~]# vgcreate vgbox /dev/vdb1
[root@localhost ~]# lvcreate -L 499G -n lgbox vgbox ##在卷組vgbox上創建名為lgbox,大小為499G的邏輯卷
[root@localhost ~]# mkfs.ext4 /dev/vgbox/lgbox ##格式化邏輯卷並改系統格式為ext4
[root@localhost ~]# mount /dev/vgbox/lgbox /data ##掛載【linux下的文件系統需要被掛載后才能使用】
[root@localhost ~]# vim /etc/fstab #添加對應的掛載信息
/dev/vgbox/lgbox /data ext4 defaults 0 0
[root@localhost ~]# mount -a #加載掛載點,然后df -h即可看到掛載信息了
[root@localhost ~]# df -h
監控命令: watch -n 1 ‘pvs;echo ===;vgs;echo ===;lvs;echo ===;df -h /data/’
3)擴容
a)xfs系統中的擴容:
情況一:vg足夠擴展
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0 ##擴展邏輯卷空間到500M
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 ##擴展文件系統
1
2
情況二:vg不夠拉伸,得先擴大設備再擴大系統
擴大設備:
[root@localhost ~]# pvcreate /dev/vdb2 ##創建物理卷/dev/vdb2
[root@localhost ~]# vgextend vg0 /dev/vdb2 ##將新的物理卷vdb2添加到現有的卷組vg0
擴展邏輯卷
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0 ##增加邏輯卷空間到1500M
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
b)ext4系統的擴容
[root@localhost ~]# umount /mnt ##先卸載
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 ##格式化邏輯卷 ,並改系統為ext4
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/ ##掛載
[root@localhost ~]# lvextend -L 1800M /dev/vg0/lv0 ##增加邏輯卷空間
Extending logical volume lv0 to 1.76 GiB Logical volume lv0 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv0 ##更新邏輯卷信息
4)縮減邏輯卷空間
[root@localhost ~]# umount /mnt ##先卸載
[root@localhost ~]# e2fsck -f /dev/vg0/lv0 ##掃描邏輯卷上的空余空間
[root@localhost ~]# resize2fs /dev/vg0/lv0 1000M ##設備文件減少到1000M
[root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0 ##將邏輯卷減少到1000M
[root@localhost ~]# mount /dev/vg0/lv0 /mnt ##掛載
5)縮減vg:(遷移到閑置設備)
[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2 ##將vdb1的空間數據轉移到vdb2
/dev/vdb1: Moved: 88.0%
/dev/vdb1: Moved: 100.0% ##轉移數據成功
[root@localhost ~]# vgreduce vg0 /dev/vdb1 ##將/dev/vdb1分區從vg0卷組中移除
Removed "/dev/vdb1" from volume group "vg0"
[root@localhost ~]# pvremove /dev/vdb1 ##把/dev/vdb1分區從系統中刪除
Labels on physical volume "/dev/vdb1" successfully wiped
注意:將vdb1的空間數據轉移到vdb2時,要確保vdb2的足夠的空間能將vdb1的數據轉移,否則需要先將vdb1縮減。
6)LVM快照創建
[root@localhost ~]# touch /mnt/file{1..5}
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 ##建立一個50M的快照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt ##掛載快照
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# rm -fr * ##刪除所有文件
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt
[root@localhost ~]# lvremove /dev/vg0/lv0backup ##刪除快照
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 ##重建快照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt ##掛載快照
[root@localhost ~]# ls /mnt ##又可以看到之前建立的文件
結論: LVM的快照可以將某一時刻的信息記錄到快照區中,因此,可以利用這一特點對數據做完全備份。
7)刪除設備
[root@localhost ~]# umount /mnt ##卸載
[root@localhost ~]# df
[root@localhost ~]# lvremove /dev/vg0/lv0backup ##刪除快照
[root@localhost ~]# lvremove /dev/vg0/lv0 ##刪除邏輯卷
[root@localhost ~]# vgremove vg0 ##刪除物理卷組
[root@localhost ~]# pvremove /dev/vdb{1..2} ##刪除物理卷
總結
LVM雖然很好用,但是因為在硬件上使用純軟件方式進行管理,所以誤刪除數據恢復更加困難,LVM縮減分區大小風險較大,並不推薦使用LVM對磁盤分區進行管理。
參考鏈接:https://blog.csdn.net/weixin_44297303/article/details/87065544