LVM,即邏輯卷管理,主要是爲了讓用戶在無需停機的情況下對各個分區進行調整。
1.LVM建立
1.劃分物理分區並把分區id修改mbr爲8e(在gpt中id修改爲15)
pvs|pvdisplay
vgs|vgdisplay
lvs|lvdisplay
watch -n 1 'pvs;vgs;lvs;df -h /mnt/'
fdisk /dev/vdb ##創建一個分區並修改格式爲linux lvm
pvcreate /dev/vdb1 ##建立PV分區
vgcreate -s 2M(必須是2的整數倍具體見man) xxx /dev/vdb1 ##在pv分區中建立vg
lvcreate -L 100M -n xxx xxx ##取出100M建立LVM
mkfs.xfs /dev/xxx/xxx ##格式化
mount /dev/xxx/lv0 /mnt/ ##掛載
2.擴大文件系統
當VG中的容量夠用時:
lvextend -L 300M /dev/xxx/xxx ##擴展到300M
xfs_growfs /dev/xxx/xxx ##expand an XFS filesystem
當VG中的容量不夠用時:
fdisk /dev/vdb ##再創建一個分區並修改格式爲linux lvm
pvcreate /dev/vdb2 ##建立PV分區
vgextend xxx /dev/vdb2 ##擴展vg
lvextend -L 600M /dev/xxx/lv0 ##擴展lv
xfs_growfs /dev/xxx/lv0 ##expand an XFS filesystem
umount /mnt/ ##取消掛載
mkfs.ext4 /dev/xxx/lv0 ##xfs文件系統可以擴大,但是不可以縮減
##ext4文件系統可以擴大,也可以縮減
umount /mnt/
e2fsck -f /dev/xxx/lv0 ##check檢測設備
resize2fs /dev/xxx/lv0 550M ##改變文件系統的大小
mount /dev/xxx/lv0 /mnt/
lvreduce -L 550M /dev/xxx/lv0 ##縮減設備
3.刪除不需要的pv
pvmove /dev/vdb1 /dev/vdb2 ##當我要刪除的分區存在數據時,需要先作數據遷移
vgreduce xxx /dev/vdb1 ##把分區從組裏取出來
pvremove /dev/vdb1 ##移除分區
4.lvm快照
touch /mnt/file
lvcreate -L 10M -n lv0-backup -s /dev/westos/lv0
mount /dev/vg0/lv0-backup /mnt
rm -fr /mnt/*
lvremove /dev/vg0/lv0-backup
lvcreate -L 10M -n lv0-backup -s /dev/westos/lv0
/mnt下的數據還原
5.刪除lvm分區(逐級刪除lv-vg-pv)
umount /mnt/
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/vdb2
@@@@@@@當我們誤刪lvm分區導致出現錯誤時@@@@@@@
執行下面操作
vgreduce --removemissing vg0 ##從容器中移除掉丟失的分區