LVM的縮減、擴展以及快照的使用
一、什麽是LVM?
LVM是邏輯盤卷管理(LogicalVolumeManager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制。
LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。
LVM可分為三層。底層為物理卷(Physical Volume),簡寫為PV;中間層為卷組(Volume Group),簡寫為VG;頂層為邏輯卷(Logical Volume),簡寫為LV。
上層的大小取決於下層的大小。
二、如何創建LVM系統?(我用的磁盤是/dev/sdb)
1、首先創建LVM分區/dev/sdb6、/dev/sdb7、/dev/sdb8,大小分別為7G、3G、2G,類型均為8e。
完成之後使用partprobe通知內核分區,可查看/proc/partitions內核是否讀取
#partprobe
#cat /proc/partitions
2、創建物理卷PV
#pvcreate /dev/sdb{7,6}
#pvs //查看當前系統PV
從中可以看到pv有/dev/sdb6、/dev/sdb7,其大小分別為5G、3G。
3、創建卷組GV
#vgcreate myvg /dev/sdb6 /dev/sdb7
#vgs //查看當前系統VG
可以看到創建的VG為myvg,大小基本等於(5+3)G
#vgdisplay myvg //顯示指定vg的詳細信息
4、創建邏輯卷LV
#lvcreate -n testlv -L 65M myvg
此處創建了65M大小的邏輯卷,但是創建之後大小為68M,是因為在創建VG時其PE大小默認為4M,創建的邏輯卷大小必須時PE的整數倍。創建VG時可用選項-s #(#為數字)指定PE大小
#lvs //查看當前系統lv
#lvdisplay /dev/myvg/testlv //顯示指定lv的詳細信息。
註:指定lv在vg目錄下的lv,不是直接指定lv名字
#mke2fs -j /dev/myvg/testlv //格式化
#mount /dev/myvg/testlv /mnt //掛載到/mnt下
#mount
使用mount可以看到掛載/mnt的是/dev/mapper/mylv-testlv。
#ls -l /dev/mapper
這裏面的才是真正的設備文件
三、在不影響原數據的前提下擴展、縮減邏輯卷和使用快照卷
邏輯邊界時緊靠在物理邊界大小上創建的,可以理解為邏輯邊界微小於物理邊界。
所以,存取數據取決於物理邊界和邏輯邊界
擴展邏輯卷LVM
先擴展物理邊界,再擴展邏輯(文件系統)邊界
註:邏輯邊界一定要小於物理邊界,否則文件系統可能會崩潰
lvextend:擴展物理邊界
-L +# /PATH/TO/LV :給lv增加#大小的物理邊界
-L # /PATH/TO/LV :給lv增加到#大小的物理邊界
resize2fs(ext2/3):擴展文件系統邊界
resize2fs /PATH/TO/LV #G :增加文件系統邊界到#G大小
-p 擴展文件系統到最大值
例子:在2G大小的名為testlv的LV擴展到5G大小(還是在先前的/dev/myvg上)
#lvcreate -n testlv -L 2G myvg
#lvs
之後格式化再掛載到/mnt上
#cp /etc/inittab /mnt // 拷貝一份文件到掛載目錄下作為原數據
#cat /mnt/inittab //查看此目錄下的內容
#df -lh /查看邏輯卷testlv為2G
#vgs //查看vg中free是否能夠擴展到5G大小
圖中可以看到還剩余約6G,增加3G,足夠
#lvextend -L 5G /dev/myvg/testlv //擴展物理邊界
#resize2fs -p /dev/myvg/testlv //擴展邏輯邊界
#df -lh //查看邏輯卷testlv為5G(有誤差)
#cat /mnt/inittab //查看原數據是否改變
從圖中看出數據未曾改變
縮減邏輯卷LVM
先縮減邏輯邊界,再縮減物理邊界
註:1、不能在線縮減,得先卸載
2、確保縮減後的空間大小依然能存儲原有所有的數據
3、再縮減前應該先檢查文件,以確保文件處於移植狀態
df -lh :查看所用空間大小
umount :卸載
e2fsck -f /PATH/TO/LV :強行檢查文件系統
resize2fs(ext2/3):縮減文件系統邊界
resize2fs /PATH/TO/LV #G :縮減文件系統邊界到#G大小
lvreduce -L -# /PATH/TO/LV //縮減#G大小的物理邊界
lvreduce -L # /PATH/TO/LV //縮減物理邊界到#G大小
重新掛載
例子:接著將上述中5G大小縮減為3G大小。
#df -lh
#umount /mnt
#e2fsck -f /dev/myvg/testlv
#resize2fs /dev/myvg/testlv 3G //縮減邏輯邊界
#lvreduce -L 3G /dev/myvg/testlv //縮減物理邊界
#mount /dev/myvg/testlv /mnt //重新掛載
#cat /mnt/inittab //查看原數據
#df -lh //查看大小
大小變為了3G,且原數據並未受到影響
快照卷
1、生命周期為整個數據時長:在這段時長內,數據的增長量不能超過快照卷的大小(超過的話快照卷就會掛掉)
2、快照卷應該是只讀的
3、快照卷應該跟原卷在同一卷組內
命令:lvcreate -s
-p r|w 指定權限 只讀|讀寫
lvcreate -s -L # -n SLVNAME -p r /PATH/TO/LV
掛載: mount /PATH/TO/SLV /指定目錄
備份: 壓縮快照中的文件 tar
移除:
卸載 umount /指定目錄
lvremove /PATH/TO/SLV
還原數據:tar 解壓
LVM的縮減、擴展以及快照的使用