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

LVM的縮減、擴充套件以及快照的使用

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命令建立分割槽,如下
LVM的縮減、擴充套件以及快照的使用


完成之後使用partprobe通知核心分割槽,可檢視/proc/partitions核心是否讀取
#partprobe
#cat /proc/partitions
LVM的縮減、擴充套件以及快照的使用

2、建立物理卷PV
#pvcreate /dev/sdb{7,6}
#pvs //檢視當前系統PV
LVM的縮減、擴充套件以及快照的使用
從中可以看到pv有/dev/sdb6、/dev/sdb7,其大小分別為5G、3G。

3、建立卷組GV
#vgcreate myvg /dev/sdb6 /dev/sdb7
LVM的縮減、擴充套件以及快照的使用
#vgs //檢視當前系統VG
LVM的縮減、擴充套件以及快照的使用
可以看到建立的VG為myvg,大小基本等於(5+3)G
#vgdisplay myvg //顯示指定vg的詳細資訊
LVM的縮減、擴充套件以及快照的使用

4、建立邏輯卷LV
#lvcreate -n testlv -L 65M myvg
LVM的縮減、擴充套件以及快照的使用


此處建立了65M大小的邏輯卷,但是建立之後大小為68M,是因為在建立VG時其PE大小預設為4M,建立的邏輯卷大小必須時PE的整數倍。建立VG時可用選項-s #(#為數字)指定PE大小
#lvs //檢視當前系統lv
LVM的縮減、擴充套件以及快照的使用
#lvdisplay /dev/myvg/testlv //顯示指定lv的詳細資訊。
注:指定lv在vg目錄下的lv,不是直接指定lv名字
LVM的縮減、擴充套件以及快照的使用

#mke2fs -j /dev/myvg/testlv //格式化
LVM的縮減、擴充套件以及快照的使用

#mount /dev/myvg/testlv /mnt //掛載到/mnt下
LVM的縮減、擴充套件以及快照的使用

#mount
LVM的縮減、擴充套件以及快照的使用
使用mount可以看到掛載/mnt的是/dev/mapper/mylv-testlv。

#ls -l /dev/mapper
LVM的縮減、擴充套件以及快照的使用
這裡面的才是真正的裝置檔案

三、在不影響原資料的前提下擴充套件、縮減邏輯卷和使用快照卷
邏輯邊界時緊靠在物理邊界大小上建立的,可以理解為邏輯邊界微小於物理邊界。
所以,存取資料取決於物理邊界和邏輯邊界

擴充套件邏輯卷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
LVM的縮減、擴充套件以及快照的使用
之後格式化再掛載到/mnt上
#cp /etc/inittab /mnt // 拷貝一份檔案到掛載目錄下作為原資料
#cat /mnt/inittab //檢視此目錄下的內容
LVM的縮減、擴充套件以及快照的使用
#df -lh /檢視邏輯卷testlv為2G
LVM的縮減、擴充套件以及快照的使用
#vgs //檢視vg中free是否能夠擴充套件到5G大小
LVM的縮減、擴充套件以及快照的使用
圖中可以看到還剩餘約6G,增加3G,足夠

#lvextend -L 5G /dev/myvg/testlv //擴充套件物理邊界
#resize2fs -p /dev/myvg/testlv //擴充套件邏輯邊界
LVM的縮減、擴充套件以及快照的使用
#df -lh //檢視邏輯卷testlv為5G(有誤差)
LVM的縮減、擴充套件以及快照的使用
#cat /mnt/inittab //檢視原資料是否改變
LVM的縮減、擴充套件以及快照的使用
從圖中看出資料未曾改變

縮減邏輯卷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
LVM的縮減、擴充套件以及快照的使用
#resize2fs /dev/myvg/testlv 3G //縮減邏輯邊界
LVM的縮減、擴充套件以及快照的使用
#lvreduce -L 3G /dev/myvg/testlv //縮減物理邊界
LVM的縮減、擴充套件以及快照的使用
#mount /dev/myvg/testlv /mnt //重新掛載
#cat /mnt/inittab //檢視原資料
LVM的縮減、擴充套件以及快照的使用
#df -lh //檢視大小
LVM的縮減、擴充套件以及快照的使用
大小變為了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 解壓