1. 程式人生 > >LVM的縮減、擴展以及快照的使用

LVM的縮減、擴展以及快照的使用

c99 靈活 管理 linu isp bcb 簡寫 proc 強行

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。

可以使用fdisk /dev/sdb命令創建分區,如下
技術分享圖片
完成之後使用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的縮減、擴展以及快照的使用