场景:博主之前虚拟机扩容满4个分区后,再次扩容问题,且之前扩容时采用的是LVM系统。

在分区没满(少于4个),可以参考博主的另一篇虚拟机扩容的文章
centos7虚拟机扩容

操作:

第一步:查看现有虚拟机磁盘情况

使用命令:

fdisk -lu

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_kvm 给虚拟机添加磁盘


可以看出,经过宿主机扩容操作后,现在虚拟机总共有100多G,实际才使用50G左右。

宿主机上的扩容相关操作参考前面的文章链接。

第二步:查看目前虚拟机物理卷信息
使用命令:

pvdisplay

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_kvm 给虚拟机添加磁盘_02


注意:最后一个物理卷信息为10G

第三步:查看卷组信息
使用命令:

vgdisplay

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_kvm 给虚拟机添加磁盘_03


获取卷名称为centos

第四步:查看虚拟机分区信息
使用命令:

fdisk -lu

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_kvm 给虚拟机添加磁盘_04


可以看出已经有了4个主分区,无法继续创建分区来扩容。

第五步:分区进行扩容
输入命令:

fdisk /dev/vda

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_虚拟机扩容_05

先删除最后一个分区,然后才可以进行扩容,注意最后分区此时块大小为10485760

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_KVM_06


重新新建第四个分区,新的磁盘大小已经加入分区中

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_虚拟机扩容_07

修改分区格式为 LVM系统 ,此时最后分区块大小已经变了,输入w保存退出。

但是此时物理卷还未识别分区已经发生改变

第六步:修改物理卷信息
为保证虚拟机识别分区大小已经改变,在修改物理卷信息之前要重启虚拟机
输入命令:

pvresize --setphysicalvolumesize 62G /dev/vda4

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_kvm 给虚拟机添加磁盘_08


此时查看物理卷信息:

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_KVM_09


此时,大小已经改变。

第七步:扩展到根分区下

查看当前状态:

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_满分区扩容_10


由于之前的文章已经处理过逻辑卷扩容的相关操作,此处直接扩容并统一文件格式

输入命令:

lvextend -l +100%FREE /dev/mapper/centos-root

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_kvm 给虚拟机添加磁盘_11


统一格式,输入命令:

xfs_growfs /dev/mapper/centos-root

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_虚拟机扩容_12


查看最后结果:

df -h

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_LVM扩容_13


发现扩容成功。

概念

LVM术语

Physical Volume (PV) 物理卷,一个PV对应一个磁盘或一个磁盘分区

Volume Group (VG) 卷组,一个或多个PV的集合,可动态增减PV,LVM系统中可含有多个VG

Logical Volume(LV) 逻辑卷,建立在VG之上的虚拟block设备, 容量可动态增减

Physical Extent(PE) PV的最小存储单元,最小为128KB,默认为4MB,在创建VG时设定,一旦设定很难更改,只能重建VG

如图:

kvm 给虚拟机添加磁盘 kvm虚拟机扩容_LVM扩容_14


PV命令:

pvchange 修改PV属性

pvck 检查PV metadata

pvcreate 从磁盘或分区创建PV

pvdisplay 显示PV属性

pvmove 移动PV内容(Physical Extents)

pvremove 擦除PV标签,LVM不再将其识别为PV。活动LV使用的PV不能删除

pvresize 调整PV容量

#pvresize --setphysicalvolumesize 62G /dev/mapper/centos-root

pvs 查询PV信息

#pvs

pvscan 查找PV

pvcreate 创建PV

#pvrcreate /dev/vda4

VG命令:
vgcfgbackup 备份VG配置
vgcfgrestore 恢复VG配置
vgchange 修改VG属性
vgck 检查VG元数据
vgconvert 转换VG元数据格式
vgcreate 创建VG
vgdisplay 显示VG属性
vgexport 从系统中注销VG
vgextend 向VG中增加PV
vgimport 注册已注销的VG
vgimportclone 注册和重命名克隆的VG

#vgimportclone --basevgname vg00_snap /dev/sdc /dev/sdd

vgmerge 将两个VG合并
vgmknodes Create the special files for volume group devices in /dev
vgreduce 删除VG中的一个或多个PV
vgremove 删除VG
vgrename 重命名VG
vgs 查询VG信息

#vgs

vgscan 查找VG

创建VG:

vgcreate centos /dev/vda*

增加VG容量:
可从PV创建VG,也可直接从磁盘和分区创建,这样会自动创建PV,如下将/dev/vda4添加到VG中:

#vgextend centos /dev/vda4

删除VG:

#vgremove centos