一种跨虚拟化数据中心的虚拟机在线迁移方法

文档序号:7550505阅读:818来源:国知局
专利名称:一种跨虚拟化数据中心的虚拟机在线迁移方法
技术领域
本发明涉及涉及虚拟化数据中心的资源管理领域,尤其涉及一种跨虚拟化数据中心的虚拟机在线迁移方法。
背景技术
传统的IT资源的拥有者以数据中心的方式向外界提供服务,由分布在各地的拥有大量计算或者存储资源的多个数据中心组成,不同的用户之间共享数据中心的资源池。在云计算模式下,用户的应用复杂多样,需求产生的位置各不相同,不同的用户对应用的服务质量有不同的要求。故IT企业面临着同时管理跨地域的多个数据中心的困难,所以传统数据中心的管理模式缺乏多个数据中心之间的资源动态调节方法,以满足云计算环境中复杂多样的应用与资源的映射管理。服务器虚拟化技术作为云计算的关键技术,其发展为数据中心的资源管理带来新的机遇。系统级虚拟化在硬件与软件之间设置一层虚拟机管理器(Virtual MachineMonitor, VMM)软件,把不同的硬件资源进行抽象,为上层的软件系统提供多个虚拟计算环境,同时支持若干个独立执行的虚拟机(Virtual Machine,VM),通过对硬件资源进行划分,让多个系统同时使用系统资源,因而能够提高资源利用率。每个独立运行的虚拟机具有一台物理机同样的功能,并且他们之间较强的隔离性保障提供的服务质量。虚拟机在线迁移技术是在保持虚拟机运行的状态下,把其从一台物理主机迁移到另一台物理主机,并在目的主机上恢复运行,减少对业务运行的影响,无缝的实现服务整合。通过在线迁移,可以更方便的实现服务器的在线维护、在线升级、负载均衡,灾难恢复,提供一种灵活有效的资源管理方法。现有虚拟机在线迁移机制中源节点和目的节点之间在同一虚拟化数据中心,主要有一下两个特点:(1)两个节点属于同一个VLAN,即同一虚拟化数据中心内,节点之间网络具有低延迟和高带宽。(2)两节点之间通过SAN(storage area network)、NAS(networknetwork-attached storage)等方式共享镜像文件信息,迁移过程只发送迭代产生的内存脏页和CPU状态等信息,而不发送磁盘文件信息。在跨多个虚拟化数据中心的环境下,由于各虚拟化数据中心在地理位置上的广泛分布,要实施在线的虚拟机迁移存在以下两个困难:I)虚拟化数据中心之间的网络的高延迟和低带宽连接两个虚拟化数据中心需要经过多重路由和链路,网络延迟大,带宽相对较小,增大了虚拟机迁移的总时间和宕机时间,影响运行在虚拟机中的业务,而且将虚拟化数据中心直接连入Internet存在安全和管理方面的隐患。现有技术设计数据中之间的专用通信网络,通过专用网络将多个虚拟化数据中心的迁移转变成逻辑上同一局域网内的虚拟机迁移。但存在以下问题:当虚拟机被迁移至距离文件系统所在的虚拟化数据中心较远(相对于文件系统在本地)的业务节点时,虚拟机的1/0平均访问延迟和最大访问延迟均增大到原来的2倍以上,CPU利用率也降低了30%,虚拟机迁移后不能完全恢复到原有的执行效率。
2)跨虚拟化数据中心环境中的虚拟机迁移必须发送虚拟机的所有状态信息(包括:CPU,内存,磁盘等),为了支持各种用户的不同需求,现有技术中采用不同的磁盘迁移策略,虚拟机的磁盘空间较大(10G以上),附加磁盘状态一致性过程中产生的脏扇区和内存迭代产生的脏页信息,使得整个迁移过程发送的数据量过大,耗费过多网络带宽资源,而且虚拟机迁移时间和宕机时间过长。

发明内容
为了解决上述问题,本发明提供了一种跨虚拟化数据中心的虚拟机在线迁移方法,在原有虚拟机在线迁移方法中加入镜像的迁移,使虚拟机能够在多个虚拟化数据中心之间迁移,从而实现在多个虚拟化数据中心之间实现虚拟机和资源的动态映射。为实现上述目的,本发明提供了一种跨虚拟化数据中心的虚拟机在线迁移方法,该方法包括:步骤I,在广域网上部署多个虚拟化数据中心,其中每个虚拟化数据中心的业务节点运行虚拟机,每个虚拟化数据中心的存储节点保存虚拟机镜像;步骤2,通过两层桥接模式的虚拟专用网络连接多个虚拟化数据中心;步骤3,在源节点上的虚拟机I/O驱动进程中监控被迁移虚拟机每次写入磁盘的脏块,并为所述虚拟机I/o驱动进程创建迁移线程,所述迁移线程进行用户私有数据文件的预迁移和脏块监控记录的迁移,其中所述脏块是指虚拟机每次I/o操作的逻辑上连续的扇区;步骤4,源节点上所述虚拟机的迁移进程控制所述用户私有数据文件的预迁移和脏块监控记录的迁移;步骤5,改变所述虚拟机在目的节点恢复进程的执行顺序,为所述恢复进程创建恢复线程,所述恢复线程接收所述预迁移和所述脏块监控记录迁移的信息,并将所述信息写入所述存储节点中。进一步的,所述步骤I包括:步骤11,将所述每个虚拟化数据中心的所有硬件资源虚拟化,以虚拟机的形式提供服务,每个虚拟机依附所述存储节点中的一个虚拟机镜像文件。;步骤12,将所述虚拟机镜像文件分为template和用户私有数据文件,所述template中包括业务运行的操作系统和应用系统,虚拟机运行时不能改变此文件的内容;步骤13,将所述template和所述用户私有数据文件存储于所述存储节点中。进一步的,所述步骤2包括:步骤21,在虚拟化数据中心之外的广域网中随机选择一个节点作为VPNserver,每个虚拟化数据中心选择一个节点作为VPNclient,所述VPNserver生成其建立服务和每个VPNclient请求连接时的认证文件,其中所述VPNserver为VPN服务器,VPNclient为VPN客户;步骤22,在所述VPNserver的配置文件中设置参数,包括:TCP协议,tap设备,IP地址,以及认证文件路径,之后启动VPNserver服务;步骤23,所述每个虚拟化数据中心选择一个节点作为VPNclient后将所述认证文件复制到该节点,并在VPNclient的配置文件中设置参数,包括=VPNserver的IP地址,TCP协议,tap设备,以及认证文件路径,之后启动VPNclient服务,所述VPNclient服务与VPNserver服务连接;步骤24,在所述每个VPNclient上启动虚拟网桥,将所述虚拟网桥与所述tap设备对接。进一步的,所述步骤3包括:步骤31,记录所述虚拟机每次写入磁盘的脏块对应的扇区号和扇区个数;步骤32,当所述迁移线程接收到所述用户私有数据文件的预迁移命令时,通过所述预迁移命令中携带的虚拟机号,在Xenstore中解析所述用户私有数据文件的路径和文件名,并将其发送到目的节点,然后将脏块的监控记录清零,其中所述Xenstore是启动虚拟机后在所述源节点之中保存虚拟机的所有信息;步骤33,当所述迁移线程接收到所述脏块监控记录的迁移命令时,扫描所述脏块监控记录,从扇区号和扇区个数中读取文件内容,并将所述扇区号和扇区个数以及所述文件内容发送到目的节点,然后将监控记录清零。进一步的,所述步骤4包括:步骤41,源节点上所述虚拟机的迁移进程向所述迁移线程发送所述用户私有数据文件的预迁移命令和被迁移虚拟机的虚拟机号,进行所述用户私有数据文件的预迁移,所述用户私有数据文件预迁移成功返回后进入迭代迁移;步骤42,在每轮迭代迁移结束后向所述迁移线程发送脏块监控记录的迁移命令,进行所述脏块监控记录的迁移。进一步的,所述步骤5包括:步骤51,先恢复虚拟机的内存和CPU,然后再恢复虚拟机的I/O ;步骤52,当所述恢复线程接收到的信息为用户私有数据文件的预迁移信息时,在与所述用户私有数据文件对应的路径下创建该文件,并打开此文件,将所述信息内容按顺序与入该文件中,与入完成后,关闭该文件;当所述恢复线程接收到的信息为脏块监控记录的迁移信息时,将所述信息格式化后写入所述用户私有数据文件对应的逻辑扇区中。本发明的有益功效在于,将广域网上分布的多个虚拟化数据中心通过VPN连接,在原有Xen虚拟机迁移机制的基础上发明带镜像文件迁移的,迁移镜像文件时不迁移template,只迁移用户私有数据文件和迁移过程中写入该文件的脏块,减少发送的数据量,降低迁移开销的同时提高迁移时间和宕机时间。实现虚拟机在多个虚拟化数据中心之间的在线迁移,为虚拟化数据中心之间的资源动态管理提供方法,具有良好的使用价值和市场前景。以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1为本发明的跨虚拟化数据中心的虚拟机在线迁移方法流程图;图2A是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移方法流程图;图2B是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移实施过程中的虚拟化数据中心组织结构以及虚拟化数据中心之间的网路连接图。
具体实施例方式图1为本发明的跨虚拟化数据中心的虚拟机在线迁移方法流程图。如图1所示,该方法包括:步骤I,在广域网上部署多个虚拟化数据中心,其中每个虚拟化数据中心的业务节点运行虚拟机,每个虚拟化数据中心的存储节点保存虚拟机镜像;步骤2,通过两层桥接模式(tap)的虚拟专用网络VPN连接多个虚拟化数据中心;步骤3,在源节点上的虚拟机I/O驱动进程中监控被迁移虚拟机每次写入磁盘的脏块(Block),并为所述虚拟机I/O驱动进程创建一个迁移线程(S_thread),所述迁移线程进行用户私有数据文件的预迁移和脏块监控记录的迁移,其中所述脏块是指虚拟机每次I/O操作的逻辑上连续的扇区;步骤4,源节点上的虚拟机的迁移进程控制所述用户私有数据文件的预迁移和脏块监控记录的迁移;步骤5,改变所述虚拟机在目的节点恢复进程的执行顺序,为所述恢复进程创建恢复线程(R_thread),所述恢复线程接收所述预迁移和所述脏块监控记录迁移的信息,并将所述信息写入所述存储节点中。进一步的,所述步骤I包括:Al.每个虚拟化数据中心的所有节点属于同一逻辑局域网,业务节点共享存储节点之上的文件系统中。A2.使用虚拟化技术,将虚拟化数据中心的所有硬件资源虚拟化。以虚拟机的形式向用户提供服务。A3.将虚拟机镜像文件拆分为模板(template)和用户私有数据文件(Qcow),其中每个虚拟化数据中心备份所有的template,每个虚拟化数据中心拥有的template相同,Qcow文件在用户请求服务时动态生成。A4.将template和Qcow分别存储于存储节点之上的Volume中。所述“虚拟化数据中心”是包含在同一逻辑局域网中的业务节点和存储节点,能够向外界提供计算和存储服务。所述“虚拟机镜像文件”在虚拟化数据中心以虚拟机的形式提供服务时,保存在文件系统中的一个文件,其中包含操作系统、应用软件和用户私有数据文件。所述“template”包括业务运行的操作系统和应用系统,虚拟机运行时不能改变此文件的内容。所述“Qcow”是依附template动态创建的文件,用户将私有数据写入其中,用户修改template的内容时,将其复制并改写后保存。所述“Volume”是分布式文件系统的一个卷。进一步的,所述步骤2包括:B1.在虚拟化数据中心之外的广域网中选择一个节点作为VPN服务器(VPNserver),在其上生成自己建立服务和每个VPNclient请求连接时需要的认证文件。B2.在VPNserver的配置文件中设置参数:协议为TCP、tap模式、tap设备使用的虚拟IP地址、以及认证文件路径,之后启动VPNserver服务。
B3.每个虚拟化数据中心选择一个节点作为VPN客户端(VPNclient),将VPNserver生成的认证文件复制到该节点,在配置文件中设置参数=VPNserver的IP地址,TCP协议,tap设备,以及认证文件路径,启动VPNclient服务,所述服务请求与VPNserver服务连接。B4.在每个VPNclient上启动虚拟网桥,将其与tap设备对接。并在VPNclient上设置到其它虚拟化数据中心的net。B5.除VPNclient之外的业务节点上设置默认路由,为本虚拟化数据中心VPNclient 的 IP 地址。所述“net”是在VPNclient上设置其他虚拟化数据中心的路由,使其具有转发数据的功能。所述“认证文件”是由VPNserver生成的确认连接合法性的文件。进一步的,所述步骤3包括:Cl.在源节点上被迁移虚拟机I/O驱动进程中,记录虚拟机的每一个I/O写入Block对应的扇区号和扇区个数。C2.S_thread接收xc_domain_save O发送的两种控制命令,其一为Qcow文件预迁移命令,其二为迁移Block监控记录的命令。C3.当S_thread接收到Qcow文件预迁移命令时,通过命令中携带的虚拟机号,在Xenstore中解析Qcow文件的路径和文件名,并将Block的监控记录清零,重新开始监控,然后发送Qcow文件的文件名和内容到目的节点。C4.当S_thread接收到迁移Block监控记录的命令时,扫描每一条监控记录,从每个(扇区号,扇区个数)位置读取文件内容,将扇区号、扇区个数和文件内容发送到目的节点,发送完成后将监控记录清零。C5.S_thread和I/O驱动进程共享Block监控记录,故在修改位置监控记录加线程锁,使两者互斥修改。所述“源节点”是虚拟机在迁移之前依附的业务节点。所述“目的节点”是虚拟机迁移后依附的业务节点,本发明中源节点和目的节点分别属于不同的虚拟化数据中心。所述“虚拟机1/0驱动”是将虚拟机1/0请求转化为节点之上1/0请求的机制。所述“Xenstore”是启动虚拟机后在所述源节点之中保存虚拟机的所有信息的机制。所述“扇区号”是指虚拟机写文件时存储在Qcow文件中的逻辑地址。进一步的,所述步骤4包括:Dl.在迁移进程初始化变量后向S_thread发送Qcow文件的预迁移命令和被迁移虚拟机的虚拟机号,等待由S_thread返回的消息,Qcow文件预迁移成功返回后进入内存迭代迁移。D2.在每轮内存迭代结束后向S_thread发送Block监控记录的迁移命令,之后进入下一轮迭代。进一步的,所述步骤5包括:El.改变原有虚拟机恢复进程的执行顺序,将1/0状态的恢复移动到内存和CPU状态恢复之后。E2.当R_thread接受到Qcow文件路径和文件名后,在本地文件系统的对应路径下创建该文件,并打开此空文件,等待接受文件内容。E3.将R_thread接受到的Qcow文件内容后按顺序写入该文件中。E4.当Qcow文件接收完成后,关闭该文件。用虚拟机I/O的驱动打开文件的方式打开Qcow文件。E5.当R_thread接受到的文件为Block时,先将接受到的数据格式化为三个部分,分别为:secnum, nb_sector和数据。E6.由R_thread将E5步骤中的数据写入Qcow文件的以secnum为起始地址的nb_sector个逻辑扇区中。下面结合附图2A和2B介绍本发明的一个实施例,该实施例以0penVPN_2.1.3作为建立虚拟化数据中心之间连接的工具,Gluster-3.2.0作为每个虚拟化数据中心存储虚拟机镜像的文件系统,Xen-4.1.0虚拟化平台为例,业务节点上的DomO和存储节点上使用linux-2.6.18.8内核Linux操作系统,展开实现一种跨虚拟化数据中心的虚拟机在线迁移方法的进一步说明。图2A是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移方法流程图,图2B是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移实施过程中的虚拟化数据中心组织结构以及虚拟化数据中心之间的网路连接图。如图2A和图2B所示,该实施例具体实现步骤如下:A.部署以图2B为例的两个虚拟化数据中心,每个虚拟化数据中心包括多个业务节点和存储节点,并属于同一逻辑局域网,虚拟机镜像文件模板template和Qcow存储于存储节点上的文件系统中。具体的一个实施步骤为:Al.图2B中两个虚拟化数据中心Datacenterl和Datacenter2处于Internet中。Datacenterl中的所有节点属于Vlanl,每个节点的IP地址为11.11.11.X0 Datacenter2中的所有节点属于Vlan2,每个节点的IP地址为12.12.12.X。每个Vlan中的节点通过交换机(Switch)相互连接。步骤Al中所述“Vlan”为逻辑局域网。A2.所有存储节点(Storage server)运行Glusterfs Server,并将所有存储节点通过Glusterfs的绑定功能形成统一的挂载接口,在其中创建两个Volume分别为Vol-template 和 Vol-vm。步骤A2中所述“Glusterfs”为一种分布式文件系统。A3.所有业务节点(APPserver)运行基于xen-4.1.0的虚拟机管理器(VMM)虚拟化计算环境和Glusterfs Client,其中DomO为linux-2.6.18.8内核的操作系统,VM为虚拟机,PM为节点。并且挂载存储节点上的Vol-template到本地路径/vm/template,挂载Vol-vm到本地路径/home/vm下。A4.Vol-template中存储模板镜像template, Vol-vm中存储用户私有数据文件Qcow0B.两个Datacenter之间通过VPN建立虚拟专用的网络连接通道,使得连接后Vlanl和Vlan2中的所有节点可以通过原有IP地址通信。具体的一个实施步骤为:
B1.在Datacenterl和Datacenter2之外的广域网中选择一个节点作为VPNserver, IP地址为202.201.46.139。在其上生成自己建立服务和每个VPNclient请求连接时需要的认证文件,包括:.ca.Key,.crt,.crs,和.pem等文件。本步骤中所述的认证文件,均由VPNserver生成,其.ca文件只有一个,VPNserver和VPNclient使用同一文件,.pem文件只为VPNserver使用,其余认证文件,每个节点之上都使用一套,且互不相同。B2.在VPNserver中的配置文件中设置协议为TCP,tapO模式,tapO设备使用的虚拟IP地址为10.99.0.0,以及认证文件路径。启动服务。步骤B2中所述“tapO”是指VPN创建的虚拟网络适配器。B3.Datacenterl中选择一个节点作为VPNclient,该节点拥有两个网络适配器,其中ethO上IP为11.11.11.43地址属于VLanl,ethl上为广域网上的IP地址,将VPNserver生成的认证文件复制到该节点,同样在配置文件中设置VPNserver的IP地址为202.201.46.139,TCP协议,tapO设备,以及认证文件路径,启动服务。步骤B3中所述“eth”是网络适配器名称。B4.在Vlanl中的VPNclient上启动虚拟网桥vpnbrO,将其与tapO设备对接。并在 ethO 上设置到 Datacenter2 的 net。B5.虚拟化数据中心中除VPNclient之外的业务节点上的设置默认路由为
11.11.11.43。本步骤中B3-B5以Datacenterl为例,Datacenter2同理实施。连接后两个虚拟化数据中心的节点可以相互通信。C.把Datacenterl中的一个业务节点作为源节点,在Qemu-dm进程中记录虚拟机1/0的写入磁盘的Block,并为Qemu-dm进程创建迁移线程S_thread, S_thread负责接收xc_domain_save ()发送的控制命令、Qcow文件的预迁移和Blcok监控记录的迁移。具体的一个实施步骤为:Cl.在源节点上被迁移虚拟机的Qemu-dm进程中,写入的Block是由block, c中的bdrv_aio_write O函数执行,在该函数中通过数据结构structWrec wimg[]数组记录虚拟机的每一个1/0写入Block,对应的扇区号(secnum)和扇区个数(nb_sector)存入Wrec的字段中,不记录每次写入Block的具体内容,数组中每个元素记录一次1/0写操作。步骤Cl中所述“Qemu-dm”是Xen_4.1.0全虚拟化虚拟机使用的1/0驱动机制。C2.为 Qemu-dm 进程创建迁移线程(S_thread),在 S_thread 中建立 UNIXSocketServer (UNSS), UNSS循环等待接收来自xc_domain_save O的两种控制命令,其一为Qcow文件预迁移命令,命令中包含虚拟机号(dom),其二为迁移Block监控记录的命令“read”。C3.当UNSS接收到Qcow文件预迁移命令时,通过关键字dom在Xenstore中检索被迁移虚拟机的全部配置信息,在配置信息中查找“params”之后的信息为镜像文件路径和文件名,如/home/vm/dom500.1mg,解析完成后使用fopen()打开文件。C4.将结构体struct Wrec wimg[]全部清零,重新开始监控。C5.然后通过Socket Client发送Qcow文件的文件名和内容到目的节点。发送消息的格式是一个结构体struct fomt,该结构体包含四个字段,包括:int type为消息类型,signed long long sectaddr 为扇区号,int sectnum 为扇区个数,char buf [1024]为存储数据的缓冲区。发送文件路径时,type=l,将路径存入buf中,其他两个字段为零。当发送文件内容时,type=2,按顺序每次读取1024个字节大小的文件缓存在buf中。C4.当UNSS接收到迁移Block监控记录的命令“read”时,在数据结构structWrec数组中从头开始扫描每一条监控记录,对每条记录的secnum和nb_sector使用bdrv_aio_read()函数读取镜像中对应的信息,缓存于buffer中。nb_sector的大小不同,每一个扇区大小为512字节,所以在发送时将buffer拆分为小于等于1024字节的片段。使用Socket Client发送Qcow文件信息到目的节点,信息格式为:type=3, sectaddr, sectnum为拆分后的扇区地址和扇区个数,buf中存储拆分后对应的数据。发送完成后将Wrec全部清零,重新开始监控。C5.UNSS 和 Qemu-dm共享 struct Wrec 数组,故在 block, h 中定义 pthread_mutex_t mut线程锁变量,写入和清零Block监控记录时加线程锁,在修改struct Wrec时使用pthread_mutex_lock (&mut)获得锁,在操作结束后使用 pthread_mutex_unlock (&mut)释放锁,使两者互斥修改监控记录。D.Xen原有虚拟机迁移机制由xc_domain_save O在源节点迭代拷贝内存信息和CPU 状态,在 xc_doamin_save O 中建立 UNIX socket client (UNSC),UNSC 向 UNSS 发送命令,控制Qcow文件的预迁移和Block监控记录的迁移。Dl.在 xc_domain_save O 中使用文件/tmp/unix.domid 建立 UNSC,并与 UNSS 绑定。D2.在内存迭代迁移模块(for (;;))之前UNSC向UNSS发送Qcow文件预迁移命令和dom,其中dom是虚拟机号。Qcow文件内容发送完成后,由UNSS向UNSC返回消息,当返回发送Qcow文件名和内容到目的节点的成功消息后进入内存迭代迁移的过程。D3.在每轮内存迭代结束后UNSC向UNSS发送迁移Block监控记录的命令,之后进入下一轮迭代。E.在Datacenter2中,目的节点xc_domain_restore O负责恢复虚拟机的运行,在其中创建恢复线程(R_thread),在R_thread中建立Socket Server接收源节点发送Qcow文件的预迁移和Block监控记录的迁移,并写入本地存储服节点的文件系统中。具体的一个实施步骤为:El.将 xc_domain_restore O 中 orig_io_fd_flags=fcntl O 函数移动到“out: ”前一行。在xc_domain_restore ()函数开始创建线程R_thread,并在R_thread中建立Socket Server。E2.R_thread将接受到的数据格式化为C5步骤所述的struct fomt结构,并通过type字段的数值判断数据应写入的位置。E3.当 Socket Server 接受到 Qcow 文件路径和文件名/hom/vm/dom500.1mg 后,在本地存储节点的文件系统的对应路径下创建该文件,并打开dom500.1mg文件,等待接受文件内容。E4.当Socket Server接收到的Qcow文件内容后,R_thread按顺序写入dom500.1mg 中。E5.当dom500.1mg的内容接收完成后,关闭该文件。用Qemu-dm中的驱动打开文件。
E6.当Socket Server接收到的文件为Block监控记录时,先将其的数据格式化为三个部分,分别为:secnum, nb_sector和数据。E7.由R_thread写入文件dom500.1mg中以secnum为起始地址的nb_sector个逻辑扇区中。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种跨虚拟化数据中心的虚拟机在线迁移方法,其特征在于,包括: 步骤1,在广域网上部署多个虚拟化数据中心,其中每个虚拟化数据中心的业务节点运行虚拟机,每个虚拟化数据中心的存储节点保存虚拟机镜像; 步骤2,通过两层桥接模式的虚拟专用网络连接多个虚拟化数据中心; 步骤3,在源节点上的虚拟机I/O驱动进程中监控被迁移虚拟机每次写入磁盘的脏块,并为所述虚拟机I/O驱动进程创建一个迁移线程,所述迁移线程进行用户私有数据文件的预迁移和脏块监控记录的迁移,其中所述脏块是指虚拟机每次I/O操作的逻辑上连续的扇区; 步骤4,源节点上虚拟机的迁移进程控制所述预迁移和脏块监控记录的迁移; 步骤5,改变所述虚拟机在目的节点恢复进程的执行顺序,为所述恢复进程创建恢复线程,所述恢复线程接收所述预迁移和所述迁移的信息,并将所述信息写入所述存储节点中。
2.按权利要求1所述的虚拟机在线迁移方法,其特征在于,所述步骤I包括: 步骤11,将所述每个虚拟化数据中心的所有硬件资源虚拟化,以虚拟机的形式向用户提供服务,每个虚拟机依附所述存储节点中的一个虚拟机镜像文件; 步骤12,将所述虚拟机镜像文件分为template和用户私有数据文件,所述template中包括业务运行的操作系统和应用系统,虚拟机运行时不能改变此文件的内容; 步骤13,将所述template和所述用户私有数据文件存储于所述存储节点中。
3.按权利要求1所述 的虚拟机在线迁移方法,其特征在于,所述步骤2包括: 步骤21,在虚拟化数据中心之外的广域网中随机选择一个节点作为VPNserver,每个虚拟化数据中心选择一个节点作为VPNclient,所述VPNserver生成其建立服务和每个VPNclient请求连接时的认证文件,其中所述VPNserver为VPN服务器,VPNclient为VPN客户; 步骤22,在所述VPNserver的配置文件中设置参数,包括:TCP协议,tap设备,IP地址,以及认证文件路径,之后启动VPNserver服务; 步骤23,所述每个虚拟化数据中心选择一个节点作为VPNclient后将所述认证文件复制到该节点,并在VPNclient的配置文件中设置参数,包括=VPNserver的IP地址,TCP协议,tap设备,以及认证文件路径,之后启动VPNclient服务,所述VPNclient服务与VPNserver服务连接; 步骤24,在所述每个VPNclient上启动虚拟网桥,将所述虚拟网桥与所述tap设备对接。
4.按权利要求1所述的虚拟机在线迁移方法,其特征在于,所述步骤3包括: 步骤31,记录所述虚拟机每次写入磁盘的脏块对应的扇区号和扇区个数; 步骤32,当所述迁移线程接收到所述用户私有数据文件的预迁移命令时,通过所述预迁移命令中携带的虚拟机号,在Xenstore中解析所述用户私有数据文件的路径和文件名,并将其发送到目的节点,然后将脏块监控记录清零,其中所述Xenstore是启动虚拟机后在所述源节点之中保存虚拟机的所有信息; 步骤33,当所述迁移线程接收到所述脏块监控记录的迁移命令时,扫描所述脏块监控记录,从扇区号和扇区个数中读取文件内容,并将所述扇区号和扇区个数以及所述文件内容发送到目的节点,然后将监控记录清零。
5.按权利要求1所述的虚拟机在线迁移方法,其特征在于,所述步骤4包括: 步骤41,源节点上所述虚拟机的迁移进程向所述迁移线程发送预迁移命令和被迁移虚拟机的虚拟机号,进行所述用户私有数据文件的预迁移,所述用户私有数据文件预迁移成功返回后进入迭代迁移; 步骤42,在每轮迭代迁移结束后向所述迁移线程发送脏块监控记录的迁移命令,进行所述脏块监控记录的迁移。
6.按权利要求1所述的虚拟机在线迁移方法,其特征在于,所述步骤5包括: 步骤51,先恢复所属虚拟机的内存和CPU,然后再恢复所属虚拟机的I/O ; 步骤52,当所述恢复线程接收到的信息为用户私有数据文件的预迁移信息时,在与所述用户私有数据文件对应的路径下创建该文件,并打开此文件,将所述信息内容按顺序写入该文件中,写入完成后,关闭该文件; 当所述恢复线程接收到 的信息为脏块监控记录的迁移信息时,将所述信息的数据格式化后写入所述用户私有数据文件的逻辑扇区中。
全文摘要
本发明提供一种跨虚拟化数据中心的虚拟机在线迁移方法,包括步骤1,在广域网上部署多个虚拟化数据中心,每个虚拟机镜像分为模板和用户私有数据文件;步骤2,通过两层桥接模式的虚拟专用网络连接虚拟化数据中心;步骤3,源节点上的虚拟机I/O驱动进程中监控每次写入磁盘的脏块,并为所述驱动进程创建迁移线程,所述迁移线程进行用户私有数据文件的预迁移和脏块监控记录的迁移;步骤4,源节点上所述虚拟机的迁移进程控制所述-预迁移和监控记录的迁移;步骤5,改变所述虚拟机在目的节点恢复进程的执行顺序,为所述恢复进程创建恢复线程,所述恢复线程接收所述预迁移和所述监控记录迁移的信息,并将所述信息写入存储节点中。本发明能在多个虚拟化数据中心之间实现虚拟机和资源的动态映射。
文档编号H04L29/08GK103095834SQ20131001620
公开日2013年5月8日 申请日期2013年1月16日 优先权日2013年1月16日
发明者杨鹏斐, 杨坤, 宋 莹, 赵霞, 孙毓忠 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1