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命令建立分割槽,如下
完成之後使用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 解壓