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 ##从容器中移除掉丢失的分区