基于迁移方式加速虚拟机批量启动的方法及系统与流程

文档序号:17925324发布日期:2019-06-15 00:22阅读:129来源:国知局
本发明涉及基于迁移方式加速虚拟机批量启动的方法及系统。
背景技术
::有些虚拟化场景中存在大量相同的虚拟机,如虚拟教室,每个学生使用一台虚拟机,所有虚拟机完全一样,运行同样的系统,包含同样的课程。类似场景中通常的做法是制作一份基础镜像文件,基于基础镜像创建一组快照文件,作为每台虚拟机的硬盘,虚拟机运行时增量数据写入快照文件中,基础镜像作为只读存储。虚拟机批量启动时对系统资源冲击很大,尤其是存储资源,启动时虚拟机彼此竞争,磁盘IO操作密集,整体启动过程缓慢,总体耗时较长。技术实现要素:本发明的目的就是为了解决上述问题,提供基于迁移方式加速虚拟机批量启动的方法及系统,初始时仅仅正常启动一台虚拟机,剩余虚拟机通过等待在线迁移的方式启动。迁移时只复制内存数据,不复制磁盘数据,有效避免磁盘资源的竞争,加速整体启动过程。开发一套控制系统,控制整体启动过程,实现迁移方式批量启动虚拟机的自动化控制。为了实现上述目的,本发明采用如下技术方案:基于迁移方式加速虚拟机批量启动的方法,包括如下步骤:步骤(1):创建一个启动完成队列和一个迁移等待队列,启动完成队列用以存放启动完成的虚拟机编号,迁移等待队列用以存放等待迁移的虚拟机编号,在迁移等待队列中写入等待迁移的虚拟机的编号2到n,n为正整数;步骤(2):并列运行n个启动程序,每个启动程序管理一台虚拟机;步骤(3):第一个启动程序基于基础镜像创建自己的快照文件,以正常方式后台启动第一台虚拟机,等待第一台虚拟机启动完成;剩余的n-1个启动程序基于基础镜像创建各自的快照文件,以等待迁移方式后台启动各自的虚拟机,分别等待各自的虚拟机启动完成;步骤(4):启动程序从迁移等待队列中读取一个虚拟机编号i,如果迁移等待队列为空,启动程序运行结束;否则,进入步骤(5);i的取值范围是2到n;步骤(5):启动程序执行迁移操作,向自己管理的虚拟机发送迁移指令,让虚拟机在线迁移至编号为i的虚拟机,等待迁移完成,之后向自己管理的虚拟机发送继续指令,让虚拟机继续执行,返回步骤(4)。此时,所有虚拟机全部正常启动完成,可以正常登录操作。所述步骤(1)与步骤(2)之间还设有步骤(10):定时统计启动完成队列中的元素数目,达到n时退出,并输出累计耗时。采用宿主机的一个UDP端口为第一台虚拟机模拟一个串口,第一个启动程序等待读取宿主机的端口得到预先约定的字符串,从而得知第一台虚拟机已启动完成。采用宿主机的一组TCP端口为剩余的每台虚拟机指定迁移等待端口,剩余的每台虚拟机在指定端口等待迁移。采用宿主机的另外一组TCP端口为每台虚拟机模拟monitor控制台,每个启动程序通过读写TCP端口与monitor控制台交互,控制迁移过程。第一台虚拟机通过串口发送约定的字符串ok,标识自己启动完成,剩余的虚拟机的启动完成信息是通过轮询对应的monitor控制台而得知的,定时向monitor控制台发送infostatus指令,查看输出结果中是否包含running字样,包含表示启动完成,否则表示正在启动。迁移时启动程序向自己管理的虚拟机的monitor控制台发送migrate迁移指令,之后定时发送infostatus指令,查看输出结果中是否包含paused(postmigrate)字样,包含表示迁移完成,否则表示迁移进行中。每一次迁移操作得到若干台一模一样的运行状态的虚拟机,相当于一次复制,多台虚拟机可以同时执行复制操作,只需要j次复制操作就可以得到2j台运行状态的虚拟机。通过j次迁移操作得到2j台一模一样的运行状态的虚拟机。所述启动程序是指:管理虚拟机启动过程及实施迁移的程序;所述启动完成队列是指:用以存放启动完成的虚拟机编号的队列;所述迁移等待队列是指:用以存放等待迁移的虚拟机编号的队列;所述以正常方式启动:用以区分等待迁移方式启动;基于迁移方式加速虚拟机批量启动的系统,包括:镜像文件管理模块,包括一个基础镜像及一组快照文件,快照文件基于基础镜像创建,作为每台虚拟机的硬盘,虚拟机运行时增量数据写入快照文件中,基础镜像作为只读存储;数据队列存储模块,包括一个启动完成队列和一个迁移等待队列,启动完成队列用以存放启动完成的虚拟机编号,迁移等待队列用以存放等待迁移的虚拟机编号;统计程序模块,用于定时统计启动完成队列中的元素数目,达到设定数目时退出,并输出累计耗时;启动程序模块,用于对应虚拟机数目,运行一组启动程序,第一个启动程序基于基础镜像创建自己的快照文件,以常规方式后台启动第一台虚拟机,等待第一台虚拟机启动完成;剩余的启动程序基于基础镜像创建各自的快照文件,以等待迁移方式后台启动各自的虚拟机,分别等待各自的虚拟机启动完成;迁移操作模块:由启动程序模块调用,向启动程序管理的虚拟机发送迁移指令,让虚拟机在线迁移至等待迁移的虚拟机,等待迁移完成之后启动程序向虚拟机发送继续指令,让虚拟机继续执行。迁移时只复制内存数据,不复制磁盘数据,有效避免磁盘资源的竞争,加速整体启动过程。本发明的有益效果:1加速虚拟机批量启动的整体过程:初始时仅仅正常启动一台虚拟机,剩余虚拟机通过等待在线迁移的方式启动。迁移时只复制内存数据,不复制磁盘数据,有效避免磁盘资源的竞争,加速整体启动过程;2配套开发一套控制系统,控制整体启动过程,实现迁移方式批量启动虚拟机的自动化控制。附图说明图1为整体功能架构示意图;图2为迁移复制示意图;图3为启动耗时对比图。具体实施方式下面结合附图与实施例对本发明作进一步说明。基于迁移方式加速虚拟机批量启动的方法,以批量启动8台虚拟机为例,包括如下步骤:步骤(1):创建一个启动完成队列和一个迁移等待队列,启动完成队列用以存放启动完成的虚拟机编号,迁移等待队列用以存放等待迁移的虚拟机编号,在迁移等待队列中写入7台等待迁移的虚拟机的编号(2、3、4、5、6、7、8);步骤(2):(可选)运行一个统计程序,定时统计启动完成队列中的元素数目,达到8时退出,并输出累计耗时;步骤(3):并行运行8个启动程序,每个启动程序管理一台虚拟机;步骤(4):1号启动程序基于基础镜像创建自己的快照文件,以常规方式后台启动1号虚拟机,等待其启动完成;剩余的7个启动程序的行为类似,基于基础镜像创建各自的快照文件,以等待迁移方式后台启动各自的虚拟机,分别等待各自的虚拟机启动完成;步骤(5):启动程序从迁移等待队列中读取一个虚拟机编号n,如果队列为空,启动程序运行结束;步骤(6):启动程序执行迁移操作,向自己管理的虚拟机发送迁移指令,让虚拟机在线迁移至编号为n的虚拟机,等待迁移完成,之后向自己管理的虚拟机发送继续指令,让虚拟机继续执行,返回步骤(5);此时,所有虚拟机全部正常启动完成,可以正常登录操作。所述步骤(4)中:宿主操作系统采用Centos7.2.1511,虚拟机管理软件采用qemu-kvm1.5.3,虚拟机操作系统采用winXP,快照文件通过带有-b选项的qemu-img程序创建;宿主机是承载虚拟机的物理主机,安装虚拟机管理软件,提供虚拟机所需的硬件资源,支撑虚拟机的调度运行。所述步骤(6)中:迁移操作指虚拟机的保存与恢复,完整保存源虚拟机的运行状态,快速平滑恢复到目标虚拟机,迁移指令通过QEMUmonitor发送,这是一个管理控制台;迁移之后源虚拟机的运行状态为暂停状态,需要发送继续指令命令其继续运行。基于迁移方式加速虚拟机批量启动的系统,包括:镜像文件管理:一个基础镜像及一组快照文件,快照文件基于基础镜像创建,作为每台虚拟机的硬盘,虚拟机运行时增量数据写入快照文件中,基础镜像作为只读存储;数据队列存储:一个启动完成队列和一个迁移等待队列,启动完成队列用以存放启动完成的虚拟机编号,迁移等待队列用以存放等待迁移的虚拟机编号;统计程序模块:定时统计启动完成队列中的元素数目,达到设定数目时退出,并输出累计耗时;启动程序模块:对应虚拟机数目,运行一组启动程序,1号启动程序基于基础镜像创建自己的快照文件,以常规方式后台启动1号虚拟机,等待其启动完成;其它启动程序的行为类似,基于基础镜像创建各自的快照文件,以等待迁移方式后台启动各自的虚拟机,分别等待各自的虚拟机启动完成;迁移操作模块:由启动程序调用,向自己管理的虚拟机发送迁移指令,让虚拟机在线迁移至某台等待迁移的虚拟机,等待迁移完成之后向自己管理的虚拟机发送继续指令,让虚拟机继续执行。宿主操作系统采用Centos7.2.1511,虚拟机管理软件采用qemu-kvm1.5.3,虚拟机操作系统采用winXP,快照文件通过带有-b选项的qemu-img程序创建;引导基础镜像中的winXP系统,设置为默认用户免密码自动登录,再编写一个.bat脚本文件,放入对所有用户有效的启动文件夹,一般位于C:\DocumentsandSettings\AllUsers\「开始」菜单\程序\启动,脚本的内容只有一行:echo"ok">com1这样虚拟机开机启动时自动向串口1写入一个约定的字符串ok,标识自己启动完成;qemu-kvm程序采用宿主机的一个UDP端口为1号虚拟机模拟一个串口,启动程序等待读取宿主机的端口得到约定的字符串,知晓虚拟机已启动完成;qemu-kvm程序采用宿主机的一组TCP端口为每台虚拟机模拟monitor控制台,启动程序通过读写端口与monitor交互,控制迁移过程;qemu-kvm程序采用宿主机的另外一组TCP端口为每台虚拟机指定迁移等待端口,虚拟机在指定端口等待迁移;TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议;UDP(UserDatagramProtocol,用户数据报协议),是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务;以8台虚拟机为例,端口的规划方案为:UDP10001串口;TCP10001-10008monitor;TCP20002-20008迁移端口;qemu-kvm程序的命令行示例:/usr/libexec/qemu-kvm-m256-hda/vm/xp-back-1.img-usb-usbdevicetablet-vnc:1-daemonize-monitortcp:127.0.0.1:10001,server,nowait-serialudp:127.0.0.1:10001-netnone/usr/libexec/qemu-kvm-m256-hda/vm/xp-back-2.img-usb-usbdevicetablet-vnc:2-daemonize-monitortcp:127.0.0.1:10002,server,nowait-incomingtcp:0:20002-netnone第一行对应1号虚拟机,第二行对应2号虚拟机;-netnone参数表示不添加网卡,避免迁移之后所有的虚拟机拥有同样的网卡参数,可以在启动完成之后通过monitor控制台为虚拟机在线添加个性化网卡;只需要为1号虚拟机模拟一个串口,因为1号启动程序需要读取其串口获取其启动完成标识,其它虚拟机都不需要串口,它们在等待迁移操作;其它虚拟机的启动完成信息是通过轮询对应的monitor控制台而得知的,间隔1秒定时向monitor发送infostatus指令,查看其输出结果中是否包含running字样;启动程序得知虚拟机启动完成后,在启动完成队列中记录其编号,从迁移等待队列中读取等待迁移的虚拟机编号,向自己管理的虚拟机的monitor控制台发送migrate指令,执行向目标虚拟机的迁移操作,间隔1秒定时向monitor发送infostatus指令,查看其输出结果中是否包含paused(postmigrate)字样,确定迁移操作完成;迁移完成之后,启动程序管理的虚拟机处于暂停状态,此时再向其monitor发送c指令,令其继续运行;重复上述迁移过程,直到迁移等待队列中没有虚拟机处于等待迁移状态,此时所有虚拟机启动完成,可以正常登录操作。如图1所示,以8台虚拟机为例描述迁移方式批量启动虚拟机的整体框架,整个系统主要包含:8个QEMU进程,8个启动进程,1个统计进程,1个基础镜像,8个快照文件,1个迁移等待队列,1个启动完成队列,各个组成部分作为一个有机整体协同工作;初始在迁移等待队列中写入7台等待迁移的虚拟机的编号(2、3、4、5、6、7、8),并行运行8个启动程序,每个启动程序管理一台虚拟机,负责QEMU进程的启动,并通过其monitor控制台与其交互;1号启动程序基于基础镜像创建自己的快照文件,以常规方式后台启动1号虚拟机,等待其启动完成;启动完成后,在启动完成队列中记录虚拟机编号,并从迁移等待队列中读取等待迁移的虚拟机编号,通过monitor控制台向自己管理的虚拟机发送migrate指令,执行向目标虚拟机的迁移操作,以2号虚拟机为例,具体的迁移指令为migratetcp:127.0.0.1:20002;注意在迁移指令之前需要先发送一条设置迁移速度的指令,如:migrate_set_speed2048否则迁移过程可能会很慢,导致整体启动过程减慢。如图2所示,演示了迁移方式批量启动虚拟机的整体过程,每一次迁移操作得到两台一模一样的运行状态的虚拟机,相当于一次复制,多台虚拟机可以同时复制操作,只需要3次复制操作就可以得到8台运行状态的虚拟机。如图3所示,对比普通方式与迁移方式批量启动一组虚拟机的总体耗时,普通方式采用常规方式同时启动一组虚拟机,迁移方式采用本发明前面描述的方案;测试采用的宿主环境是Centos7.2.1511,内存10G,1颗双核Intel(R)Pentium(R)CPUG640@2.80GHz;虚拟机操作系统采用winXP,每台虚拟机的内存是256M,1颗CPU;分别对比两种方式同时启动8台、16台、32台虚拟机的耗时;横坐标是同时启动的虚拟机数目(单位:台),纵坐标是总体耗时(单位:秒);从对比结果来看,批量启动的虚拟机数目越多,迁移方式批量启动的优势越明显。上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1