一种在线添加虚拟机资源的方法与流程

文档序号:11154575阅读:899来源:国知局
一种在线添加虚拟机资源的方法与制造工艺

本发明涉及云计算技术领域,特别是一种在线添加虚拟机资源的方法。



背景技术:

云计算的兴起,让越来越多的用户开始将自己的应用和服务迁移到可弹性伸缩扩展的云服务器上运行。用户购买或租用虚拟机的时候很难确定自己所需要的虚拟机资源大小,通常都是先购买比较小的资源,等应用和服务的访问量上升之后选择扩展自己的虚拟机资源;因此,通常涉及到虚拟机资源的扩展问题。云服务提供商在为客户扩展虚拟机资源的时候很多都是等到凌晨通过暂停服务、关闭虚拟机、重新定义资源、重启虚拟机和服务的形式进行升级。这种扩展虚拟机资源的方式不能解决如下的应用场景:虚拟机运行的应用非常重要,不能停机而性能出现严重不足。

针对此,虚拟机提供商急需要一种再现添加虚拟机资源的方法,以满足用户在虚拟机出现性能严重不足又无法暂停应用的情况下及时添加虚拟机资源。

LIBVIRT

LIBVRT是一套免费、开源的支持Linux下主流虚拟化工具的C函数库。当前流行的云平台都使用LIBVIRT来管理自己的虚拟机资源。LIBVIRT提供了一种XML格式的配置文件libvirt.xml用以定义虚拟机资源的各种配置信息。

HYPERVISOR

Hypervisors也可叫做VMM(虚拟机监视器),是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。

Qemu Agent

Qemu Agent,简称qga,是一个运行在虚拟机内部的普通应用程序,其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。qga通过读写串口设备与宿主机上的socket通道进行交互。



技术实现要素:

本发明解决的技术问题在于提出了一种在线添加虚拟机资源的方法,克服了当前云平台提供商在为客户扩展虚拟机资源的时候所存在的需要关闭虚拟机而导致客户应用服务暂停的问题。

本发明解决上述技术问题的技术方案是:

所述的方法包括制作支持资源在线添加的虚拟机镜像,准备LIBVIRT配置文件并利用上述虚拟机镜像启动虚拟机,在宿主机上面通过HYPERVISOR指令对运行中的虚拟机进行资源添加操作。

所述的虚拟机镜像包括自动加载虚拟化驱动模块、热插拔驱动模块和安装QEMU-AGENT代理并自启动代理服务;

所述的虚拟化驱动包括VIRTIO半虚拟化驱动及VIRT BALLOON驱动,VIRTIO半虚拟化驱动用于提高虚拟机的I/O性能,VIRT BALLOON驱动用于管理虚拟机的内存资源;

所述的热插拔驱动即带电插拔驱动程序,虚拟机镜像内核加载该模块之后可以保证虚拟机在运行的状态下,对系统添加外部资源设备;

所述的QEMU-AGENT代理是QEMU提供的一个体积小、性能稳定的代理服务程序,当虚拟机中安装并启动所述代理服务后,宿主机即可通过其与虚拟机进行通信。

所述的在线添加是指直接对处于运行状态下的虚拟机进行资源添加,虚拟机在整个过程中无需关机,虚拟机上所运行的应用也无需暂停。

所述的LIBVIRT配置文件是一种XML格式的配置文件,可以利用其定义虚拟机资源的各种配置信息;

所述的虚拟机资源包括CPU资源和内存资源;

所述的准备LIBVIRT配置文件包括CPU资源的配置准备和内存资源的配置准备;

所述的准备LIBVIRT配置文件进一步包括:

执行virsh setvcpus命令修改虚拟机CPU个数;

执行virsh qemu-monitor-command命令修改虚拟机内存大小;

调用QEMU-AGENT代理服务设置增加的CPU资源生效。

本发明方案的有益效果如下:

1、本发明提供一种在线添加虚拟机资源的方法,解决了当前云平台提供商在为客户扩展虚拟机资源的时候所普遍存在的关闭虚拟机导致客户应用服务暂停的问题。

2、本发明的方法同时提供了限制虚拟机资源的最大值,保证了虚拟机之间的相互独立性,避免单个虚拟机资源的无限扩展所带来的对其他虚拟机的影响。

附图说明

下面结合附图对本发明进一步说明:

图1为本发明的流程图;

图2为本发明的模块图。

具体实施方式

请参见图1、2,为本发明实施例所提供的一种在线添加虚拟机资源的方法流程图。下面分别对其各个流程具体实现进行描述。

利用虚拟机模板镜像文件启动一台虚拟机,然后通过VNC登录虚拟机并执行如下配置虚拟机模板镜像。

镜像配置虚拟化驱动:

//备份原镜像

cp-p/boot/initramfs-$(uname-r).img/boot/initramfs-$(uname-r).img.bak

//生存新镜像,如果以前做过修改,也要加上增加的模块。

dracut--add-drivers“virtio virtio_ring--with virtio_blk--with virtio_net--with virtio_pci”-f/boot/initramfs-$(uname-r).img$(uname-r)

镜像配置加载热插拔模块驱动:

//开机启动挂载PCI热插拔模块

vi/etc/modules

acpiphp

pci_hotplugin

镜像配置代理服务:

//执行install.sh脚本安装qemu-agent程序

sh/cdrom/linux-install/centos6/x8664/install.sh

chkconfig qemu-ga on

镜像配置好之后,关闭模板虚拟机,之后可用通过对镜像模板创建外部快照的形式来进行后续虚拟机的启动。

准备虚拟机配置文件启动虚拟机:

//针对虚拟机CPU资源编辑如下配置

<vcpu placement=’static’cpuset=″1-4,^3,6″current=″2″>10</vcpu>

//针对虚拟机内存资源编辑如下配置

<memballoon model=’virtio’>

<alias name=’balloonO’/>

</memballoon>

准备好LIBVIRT配置文件之后执行virsh createlibvirt.xml启动虚拟机,当然也可以实现对镜像模板制作外部快照,然后利用快照文件启动虚拟机。

宿主机上在线添加虚拟机CPU:

virsh setvcpus Centos6 3--live

宿主机上在线设置虚拟机内存:

virsh qemu-monitor-command Centos6-hmp-cmd bal loon 4096

宿主机上调用代理服务使添加的CPU生效:

virsh qemu-agent-command Centos6’{″execute″:″guest-exec″,″arguments″:{″path″:″echo″,″arg″:[″1″,″>/sys/devices/system/cpu/cpu3/online″]}}’

以上描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出实质性创造所获得的方案,都属于本发明保护的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1