最近研究了一下 通过云平台自动扩展linux虚拟机lvm卷,我是通过ssh登录虚拟机执行指定脚本来完成的。我只实现了自动扩展根目录LVM卷,在指定lvm组名和lvm卷id的情况下,其他lvm卷也可以实现。以下是实现步骤。
1、通过虚拟化接口创建虚拟磁盘
2、将磁盘绑定到指定虚拟机
3、通过ssh登录,执行指定脚本
其中,步骤1、2可通过虚拟化的API实现,主要介绍步骤3。
ssh登录通过jsch实现。
shell脚本如下:
#!/bin/bash
lvmmsg=$(mount|awk '{if($3 == "/"){print $1}}')
rootlvm=${lvmmsg##*/}
vgname=${rootlvm%-*}
lvname=${rootlvm#*-}
disklist=$(lsblk -no NAME,TYPE|grep disk|awk '{print $1}')
for disk in $disklist; do
point=$(lsblk -fno MOUNTPOINT /dev/$disk)
echo $point
if [ -z "$point" ] ; then
pvcreate /dev/$disk
vgextend $vgname /dev/$disk
lvextend -l +100%FREE $lvmmsg
resize2fs $lvmmsg
fi
done