1.一种基于LVM的逻辑卷动态扩容的方法,其特征在于,包括:
利用qemu命令将逻辑卷的映射文件转变为qcow2文件格式,并通过下发的写IO,触发底层逻辑卷的容量最大上限值;
获取libvirt中虚拟磁盘上报的容量不足错误,并记录对应的虚拟机名称、虚拟机id及虚拟磁盘路径;
根据所述虚拟磁盘路径查找对应的逻辑卷,判断是否满足扩容条件;
若满足,则对所述逻辑卷执行扩容操作,并根据所述虚拟机名称及所述虚拟机id重启虚拟机。
2.根据权利要求1所述的基于LVM的逻辑卷动态扩容的方法,其特征在于,利用qemu命令将逻辑卷的映射文件转变为qcow2文件格式,并通过下发的写IO,触发底层逻辑卷的容量最大上限值之后,还包括:
当libvirt中虚拟磁盘上报容量不足错误时,利用libvirt触发虚拟机保护机制,暂停对应虚拟机的上层业务。
3.根据权利要求1所述的基于LVM的逻辑卷动态扩容的方法,其特征在于,利用qemu命令将逻辑卷的映射文件转变为qcow2文件格式,并通过下发的写IO,触发底层逻辑卷的容量最大上限值之前,还包括:
设置逻辑卷容量值,逻辑卷的容量最大上限值,卷组容量值,各业务对应的扩容步长值。
4.根据权利要求3所述的基于LVM的逻辑卷动态扩容的方法,其特征在于,判断是否满足扩容条件,包括:
根据所述虚拟机的上层业务,确定扩容步长值;
根据所述虚拟磁盘路径查找对应的逻辑卷,判断所述逻辑卷的容量加上扩容步长值是否大于所述容量最大上限值;
若不大于,则判断扩容步长值是否大于卷组剩余容量值;
若不大于,则满足扩容条件。
5.根据权利要求1所述的基于LVM的逻辑卷动态扩容的方法,其特征在于,获取libvirt中虚拟磁盘上报的容量不足错误,并记录对应的虚拟机名称、虚拟机id及虚拟磁盘路径,包括:
LMD的第一线程获取libvirt中虚拟磁盘上报的容量不足错误,将需要执行的扩容任务放入到任务队列中;
LMD的第二线程从所述任务队列中读取扩容任务,并记录对应的虚拟机名称、虚拟机id及虚拟磁盘路径。
6.根据权利要求5所述的基于LVM的逻辑卷动态扩容的方法,其特征在于,当多个虚拟机的多个虚拟磁盘同时执行扩容操作时,在执行扩容操作之前对卷组添加独占锁;虚拟磁盘获得独占锁之后,对对应的逻辑卷执行扩容操作。
7.一种基于LVM的逻辑卷动态扩容的系统,其特征在于,包括:
格式转换模块,用于利用qemu命令将逻辑卷的映射文件转变为qcow2文件格式,并通过下发的写IO,触发底层逻辑卷的容量最大上限值;
容量错误获取模块,用于获取libvirt中虚拟磁盘上报的容量不足错误,并记录对应的虚拟机名称、虚拟机id及虚拟磁盘路径;
判断模块,用于根据所述虚拟磁盘路径查找对应的逻辑卷,判断是否满足扩容条件;
扩容模块,用于当满足扩容条件时,对所述逻辑卷执行扩容操作,并根据所述虚拟机名称及所述虚拟机id重启虚拟机。
8.根据权利要求7所述的基于LVM的逻辑卷动态扩容的系统,其特征在于,还包括:
暂停业务模块,用于当libvirt中虚拟磁盘上报容量不足错误时,利用libvirt触发虚拟机保护机制,暂停对应虚拟机的上层业务。
9.根据权利要求7所述的基于LVM的逻辑卷动态扩容的系统,其特征在于,所述判断模块包括:
扩容步长值单元,用于根据所述虚拟机的上层业务,确定扩容步长值;
第一判断单元,用于根据所述虚拟磁盘路径查找对应的逻辑卷,判断所述逻辑卷的容量加上扩容步长值是否大于所述容量最大上限值;
第二判断单元,用于当所述逻辑卷的容量加上扩容步长值不大于所述容量最大上限值,则判断扩容步长值是否大于卷组剩余容量值;若不大于,则满足扩容条件。
10.根据权利要求7所述的基于LVM的逻辑卷动态扩容的系统,其特征在于,所述容量错误获取模块包括:
第一线程单元,用于LMD的第一线程获取libvirt中虚拟磁盘上报的容量不足错误,将需要执行的扩容任务放入到任务队列中;
第二线程单元,用于LMD的第二线程从所述任务队列中读取扩容任务,并记录对应的虚拟机名称、虚拟机id及虚拟磁盘路径。