1. 程式人生 > >邏輯卷LVM

邏輯卷LVM

lvm

邏輯卷LVM

簡介

在實際生產應用中,磁盤的分區的容量是固定不變的,當出現分區容量不足的情況,除了新加磁盤,還有沒有其他方法呢?
邏輯卷(LVM)的概念就出現了,全稱叫Logical Volume Manager。它的作用是允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小。
LVM最大的特點是可以對磁盤進行動態管理,在不會丟失原有磁盤數據的同時,又可以對邏輯卷大小進行調整,大大提高了磁盤管理的靈活性。
LVM的實現原理:

技術分享

邏輯卷的實現

之前實驗我們創建了一個RAID-5,邏輯卷我們使用RAID設備、分區和磁盤來進行模擬

1、創建PV:pvcreate
[[email protected] ~]#pvcreate /dev/md5 /dev/sdf /dev/sda6
Physical volume “/dev/md5” successfully created
Physical volume “/dev/sdf” successfully created
Physical volume “/dev/sda6” successfully created
查看:pvdisplay
還可以使用命令pvs 和pvscan 查看簡略信息。

技術分享


2、創建vg:vgcreate

技術分享

創建完成後再看一下PV可以看到三塊物理卷被劃入到同一個卷組vg0中去了。

3、創建Lv:lvcreate
[[email protected] ~]#lvcreate -n lv0 -L 8G vg0 <==-n是指定LV的名字,-L 指定要創建的邏輯卷的大小
Logical volume “lv0” created.
mkfs.ext4 /dev/vg0/lv0 <==創建文件系系統
mount /dev/vg0/lv0 /mnt/lv0 <==掛載,創建完畢。

LVM的擴展

前提:為了驗證動態擴容對數據不影響,我們先拷貝點資料到/mnt/lv0
cp /etc/* /mnt/lv0
1、查看卷組有沒有空間
[[email protected] ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 1 0 wz–n- 16.97g 8.97g <==還有將近9G的空間
2、指定擴展的大小
[[email protected] ~]#lvextend -L +5G /dev/vg0/lv0 <==註意:這裏指定大小的時候,如果不寫“+”,就是指將LV的空間加到多少,有了“+”就是加多少
Size of logical volume vg0/lv0 changed from 8.00 GiB (2048 extents) to 13.00 GiB (3328 extents).
Logical volume lv0 successfully resized.
[[email protected] ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 1 0 wz–n- 16.97g 3.97g <==VG卷組還剩4G
[[email protected] ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 vg0 -wi-ao—- 13.00g <==LV0的大小變成13=8+5
這個註意:現在新增空間雖然加到LV0上去了,但是df -h依然顯示原來的容量,因為新增的空間上並沒有創建文件系統,所以導致系統無法識別。
3、resize2fs /dev/vg0/lv0 <==同步文件系統,df -h才可以擴容後的大小。查看數據並未丟失。

上面的情況是卷組VG有剩余空間,萬一卷組也沒有空間了呢?這時候就需要添加VG
1、pvcreate /dev/sdg
2、vgextend vg0 /dev/sdg <==把/dev/sdg擴展到vg0,這個時候就可以個需要擴容的LV擴容了。

LV的縮減

註意:xfs的文件系統無法縮減
1、umount /mnt/lv0 <==取消掛載
2、fsck -f /dev/vg0/lv0 <==檢查文件系統,必須要做的
3、resize2fs /dev/vg0/lv0 5G <==縮減文件系統
4、lvreduce -L 5G /dev/vg0/lv0 <==這裏的大小必須和第三步縮減的文件系統大小一致
5、mount /dev/vg0/lv0 /mnt/lv0/ <==重新掛載

VG、PV的縮減

1、umount /mnt/lv0/ <==取消掛載
2、pvmove /dev/sdg <==移除空間,確保卷組中有足夠空間放/dev/sdg的空間
3、vgreduce vg0 /dev/sdg <==將/dev/sdg從vg0中移除
4、pvremove /dev/sdg <==從物理卷中刪除

LVM快照

前提:寫入測試數據
[[email protected] lv0]#cp /etc/fstab f1
[[email protected] lv0]#cp /etc/fstab f2
[[email protected] lv0]#cp /etc/fstab f3

創建快照

1、lvcreate -n lv0-snapshot -s -L 100M -p r /dev/vg0/lv0
-n lv0-snapshot:指定一個快照名字
-s:s表示快照
-L 100M:指定大小
-p r:指定只讀屬性
/dev/vg0/lv0:對哪個設備做快照
2、mount /dev/vg0/lv0-snapshot /mnt/snap/ <==掛載
[[email protected] ~]#cd /mnt/snap/
[[email protected] snap]#ls
f1 f2 f3 lost+found
[[email protected] snap]#cd /mnt/lv0/
[[email protected] lv0]#ls
f1 f2 f3 lost+found <==此時快照中還沒有數據
3、修改和刪除原來LV中的數據,會講舊的數據推送到/mnt/snap/,並且只保留舊數據。新創建數據不會推送。

還原

1、取消掛載
[[email protected] ~]#umount /mnt/lv0
[[email protected] ~]#umount /mnt/snap
2、[[email protected] ~]#lvconvert –merge /dev/vg0/lv0-snapshot <==拿快照合並數據,合並完快照的邏輯卷消失了。
Merging of volume lv0-snapshot started.
lv0: Merged: 100.0%
Merge of snapshot into logical volume lv0 has finished.
Logical volume “lv0-snapshot” successfully removed
3、再次掛載mount /dev/vg0/lv0 /mnt/lv0/,發現數據恢復。

LVM刪除

1、lvremove /dev/vg0/lv0
2、vgremove /dev/vg0
3、pvremove /dev/md5 /dev/sda6 /dev/sdf /dev/sdg
註意:創建的時候是從PV-VG-LV,刪除的時候過程相反。





邏輯卷LVM