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

上传人:zhu****_FC 文档编号:4890437 上传时间:2018-11-24 格式:PDF 页数:15 大小:3.53MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310016206.9

申请日:

2013.01.16

公开号:

CN103095834A

公开日:

2013.05.08

当前法律状态:

授权

有效性:

有权

法律详情:

登录超时

IPC分类号:

H04L29/08; H04L12/46; G06F9/455

主分类号:

H04L29/08

申请人:

中国科学院计算技术研究所

发明人:

杨鹏斐; 杨坤; 宋莹; 赵霞; 孙毓忠

地址:

100190 北京市海淀区中关村科学院南路6号

优先权:

专利代理机构:

北京律诚同业知识产权代理有限公司 11006

代理人:

祁建国;梁挥

PDF下载: PDF下载
内容摘要

本发明提供一种跨虚拟化数据中心的虚拟机在线迁移方法,包括:步骤1,在广域网上部署多个虚拟化数据中心,每个虚拟机镜像分为模板和用户私有数据文件;步骤2,通过两层桥接模式的虚拟专用网络连接虚拟化数据中心;步骤3,源节点上的虚拟机I/O驱动进程中监控每次写入磁盘的脏块,并为所述驱动进程创建迁移线程,所述迁移线程进行用户私有数据文件的预迁移和脏块监控记录的迁移;步骤4,源节点上所述虚拟机的迁移进程控制所述-预迁移和监控记录的迁移;步骤5,改变所述虚拟机在目的节点恢复进程的执行顺序,为所述恢复进程创建恢复线程,所述恢复线程接收所述预迁移和所述监控记录迁移的信息,并将所述信息写入存储节点中。本发明能在多个虚拟化数据中心之间实现虚拟机和资源的动态映射。

权利要求书

权利要求书一种跨虚拟化数据中心的虚拟机在线迁移方法,其特征在于,包括:
步骤1,在广域网上部署多个虚拟化数据中心,其中每个虚拟化数据中心的业务节点运行虚拟机,每个虚拟化数据中心的存储节点保存虚拟机镜像;
步骤2,通过两层桥接模式的虚拟专用网络连接多个虚拟化数据中心;
步骤3,在源节点上的虚拟机I/O驱动进程中监控被迁移虚拟机每次写入磁盘的脏块,并为所述虚拟机I/O驱动进程创建一个迁移线程,所述迁移线程进行用户私有数据文件的预迁移和脏块监控记录的迁移,其中所述脏块是指虚拟机每次I/O操作的逻辑上连续的扇区;
步骤4,源节点上虚拟机的迁移进程控制所述预迁移和脏块监控记录的迁移;
步骤5,改变所述虚拟机在目的节点恢复进程的执行顺序,为所述恢复进程创建恢复线程,所述恢复线程接收所述预迁移和所述迁移的信息,并将所述信息写入所述存储节点中。
如权利要求1所述的虚拟机在线迁移方法,其特征在于,所述步骤1包括:
步骤11,将所述每个虚拟化数据中心的所有硬件资源虚拟化,以虚拟机的形式向用户提供服务,每个虚拟机依附所述存储节点中的一个虚拟机镜像文件;
步骤12,将所述虚拟机镜像文件分为template和用户私有数据文件,所述template中包括业务运行的操作系统和应用系统,虚拟机运行时不能改变此文件的内容;
步骤13,将所述template和所述用户私有数据文件存储于所述存储节点中。
如权利要求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设备对接。
如权利要求1所述的虚拟机在线迁移方法,其特征在于,所述步骤3包括:
步骤31,记录所述虚拟机每次写入磁盘的脏块对应的扇区号和扇区个数;
步骤32,当所述迁移线程接收到所述用户私有数据文件的预迁移命令时,通过所述预迁移命令中携带的虚拟机号,在Xenstore中解析所述用户私有数据文件的路径和文件名,并将其发送到目的节点,然后将脏块监控记录清零,其中所述Xenstore是启动虚拟机后在所述源节点之中保存虚拟机的所有信息;
步骤33,当所述迁移线程接收到所述脏块监控记录的迁移命令时,扫描所述脏块监控记录,从扇区号和扇区个数中读取文件内容,并将所述扇区号和扇区个数以及所述文件内容发送到目的节点,然后将监控记录清零。
如权利要求1所述的虚拟机在线迁移方法,其特征在于,所述步骤4包括:
步骤41,源节点上所述虚拟机的迁移进程向所述迁移线程发送预迁移命令和被迁移虚拟机的虚拟机号,进行所述用户私有数据文件的预迁移,所述用户私有数据文件预迁移成功返回后进入迭代迁移;
步骤42,在每轮迭代迁移结束后向所述迁移线程发送脏块监控记录的迁移命令,进行所述脏块监控记录的迁移。
如权利要求1所述的虚拟机在线迁移方法,其特征在于,所述步骤5包括:
步骤51,先恢复所属虚拟机的内存和CPU,然后再恢复所属虚拟机的I/O;
步骤52,当所述恢复线程接收到的信息为用户私有数据文件的预迁移信息时,在与所述用户私有数据文件对应的路径下创建该文件,并打开此文件,将所述信息内容按顺序写入该文件中,写入完成后,关闭该文件;
当所述恢复线程接收到的信息为脏块监控记录的迁移信息时,将所述信息的数据格式化后写入所述用户私有数据文件的逻辑扇区中。

说明书

说明书一种跨虚拟化数据中心的虚拟机在线迁移方法
技术领域
本发明涉及涉及虚拟化数据中心的资源管理领域,尤其涉及一种跨虚拟化数据中心的虚拟机在线迁移方法。
背景技术
传统的IT资源的拥有者以数据中心的方式向外界提供服务,由分布在各地的拥有大量计算或者存储资源的多个数据中心组成,不同的用户之间共享数据中心的资源池。在云计算模式下,用户的应用复杂多样,需求产生的位置各不相同,不同的用户对应用的服务质量有不同的要求。故IT企业面临着同时管理跨地域的多个数据中心的困难,所以传统数据中心的管理模式缺乏多个数据中心之间的资源动态调节方法,以满足云计算环境中复杂多样的应用与资源的映射管理。
服务器虚拟化技术作为云计算的关键技术,其发展为数据中心的资源管理带来新的机遇。系统级虚拟化在硬件与软件之间设置一层虚拟机管理器(Virtual Machine Monitor,VMM)软件,把不同的硬件资源进行抽象,为上层的软件系统提供多个虚拟计算环境,同时支持若干个独立执行的虚拟机(Virtual Machine,VM),通过对硬件资源进行划分,让多个系统同时使用系统资源,因而能够提高资源利用率。每个独立运行的虚拟机具有一台物理机同样的功能,并且他们之间较强的隔离性保障提供的服务质量。
虚拟机在线迁移技术是在保持虚拟机运行的状态下,把其从一台物理主机迁移到另一台物理主机,并在目的主机上恢复运行,减少对业务运行的影响,无缝的实现服务整合。通过在线迁移,可以更方便的实现服务器的在线维护、在线升级、负载均衡,灾难恢复,提供一种灵活有效的资源管理方法。
现有虚拟机在线迁移机制中源节点和目的节点之间在同一虚拟化数据中心,主要有一下两个特点:(1)两个节点属于同一个VLAN,即同一虚拟化数据中心内,节点之间网络具有低延迟和高带宽。(2)两节点之间通过SAN(storage area network)、NAS(network network‑attached storage)等方式共享镜像文件信息,迁移过程只发送迭代产生的内存脏页和CPU状态等信息,而不发送磁盘文件信息。
在跨多个虚拟化数据中心的环境下,由于各虚拟化数据中心在地理位置上的广泛分布,要实施在线的虚拟机迁移存在以下两个困难:
1)虚拟化数据中心之间的网络的高延迟和低带宽连接两个虚拟化数据中心需要经过多重路由和链路,网络延迟大,带宽相对较小,增大了虚拟机迁移的总时间和宕机时间,影响运行在虚拟机中的业务,而且将虚拟化数据中心直接连入Internet存在安全和管理方面的隐患。现有技术设计数据中之间的专用通信网络,通过专用网络将多个虚拟化数据中心的迁移转变成逻辑上同一局域网内的虚拟机迁移。但存在以下问题:当虚拟机被迁移至距离文件系统所在的虚拟化数据中心较远(相对于文件系统在本地)的业务节点时,虚拟机的I/O平均访问延迟和最大访问延迟均增大到原来的2倍以上,CPU利用率也降低了30%,虚拟机迁移后不能完全恢复到原有的执行效率。
2)跨虚拟化数据中心环境中的虚拟机迁移必须发送虚拟机的所有状态信息(包括:CPU,内存,磁盘等),为了支持各种用户的不同需求,现有技术中采用不同的磁盘迁移策略,虚拟机的磁盘空间较大(10G以上),附加磁盘状态一致性过程中产生的脏扇区和内存迭代产生的脏页信息,使得整个迁移过程发送的数据量过大,耗费过多网络带宽资源,而且虚拟机迁移时间和宕机时间过长。
发明内容
为了解决上述问题,本发明提供了一种跨虚拟化数据中心的虚拟机在线迁移方法,在原有虚拟机在线迁移方法中加入镜像的迁移,使虚拟机能够在多个虚拟化数据中心之间迁移,从而实现在多个虚拟化数据中心之间实现虚拟机和资源的动态映射。
为实现上述目的,本发明提供了一种跨虚拟化数据中心的虚拟机在线迁移方法,该方法包括:
步骤1,在广域网上部署多个虚拟化数据中心,其中每个虚拟化数据中心的业务节点运行虚拟机,每个虚拟化数据中心的存储节点保存虚拟机镜像;
步骤2,通过两层桥接模式的虚拟专用网络连接多个虚拟化数据中心;
步骤3,在源节点上的虚拟机I/O驱动进程中监控被迁移虚拟机每次写入磁盘的脏块,并为所述虚拟机I/O驱动进程创建迁移线程,所述迁移线程进行用户私有数据文件的预迁移和脏块监控记录的迁移,其中所述脏块是指虚拟机每次I/O操作的逻辑上连续的扇区;
步骤4,源节点上所述虚拟机的迁移进程控制所述用户私有数据文件的预迁移和脏块监控记录的迁移;
步骤5,改变所述虚拟机在目的节点恢复进程的执行顺序,为所述恢复进程创建恢复线程,所述恢复线程接收所述预迁移和所述脏块监控记录迁移的信息,并将所述信息写入所述存储节点中。
进一步的,所述步骤1包括:
步骤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所示,该方法包括:
步骤1,在广域网上部署多个虚拟化数据中心,其中每个虚拟化数据中心的业务节点运行虚拟机,每个虚拟化数据中心的存储节点保存虚拟机镜像;
步骤2,通过两层桥接模式(tap)的虚拟专用网络VPN连接多个虚拟化数据中心;
步骤3,在源节点上的虚拟机I/O驱动进程中监控被迁移虚拟机每次写入磁盘的脏块(Block),并为所述虚拟机I/O驱动进程创建一个迁移线程(S_thread),所述迁移线程进行用户私有数据文件的预迁移和脏块监控记录的迁移,其中所述脏块是指虚拟机每次I/O操作的逻辑上连续的扇区;
步骤4,源节点上的虚拟机的迁移进程控制所述用户私有数据文件的预迁移和脏块监控记录的迁移;
步骤5,改变所述虚拟机在目的节点恢复进程的执行顺序,为所述恢复进程创建恢复线程(R_thread),所述恢复线程接收所述预迁移和所述脏块监控记录迁移的信息,并将所述信息写入所述存储节点中。
进一步的,所述步骤1包括:
A1.每个虚拟化数据中心的所有节点属于同一逻辑局域网,业务节点共享存储节点之上的文件系统中。
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包括:
C1.在源节点上被迁移虚拟机I/O驱动进程中,记录虚拟机的每一个I/O写入Block对应的扇区号和扇区个数。
C2.S_thread接收xc_domain_save()发送的两种控制命令,其一为Qcow文件预迁移命令,其二为迁移Block监控记录的命令。
C3.当S_thread接收到Qcow文件预迁移命令时,通过命令中携带的虚拟机号,在Xenstore中解析Qcow文件的路径和文件名,并将Block的监控记录清零,重新开始监控,然后发送Qcow文件的文件名和内容到目的节点。
C4.当S_thread接收到迁移Block监控记录的命令时,扫描每一条监控记录,从每个(扇区号,扇区个数)位置读取文件内容,将扇区号、扇区个数和文件内容发送到目的节点,发送完成后将监控记录清零。
C5.S_thread和I/O驱动进程共享Block监控记录,故在修改位置监控记录加线程锁,使两者互斥修改。
所述“源节点”是虚拟机在迁移之前依附的业务节点。
所述“目的节点”是虚拟机迁移后依附的业务节点,本发明中源节点和目的节点分别属于不同的虚拟化数据中心。
所述“虚拟机I/O驱动”是将虚拟机I/O请求转化为节点之上I/O请求的机制。
所述“Xenstore”是启动虚拟机后在所述源节点之中保存虚拟机的所有信息的机制。
所述“扇区号”是指虚拟机写文件时存储在Qcow文件中的逻辑地址。
进一步的,所述步骤4包括:
D1.在迁移进程初始化变量后向S_thread发送Qcow文件的预迁移命令和被迁移虚拟机的虚拟机号,等待由S_thread返回的消息,Qcow文件预迁移成功返回后进入内存迭代迁移。
D2.在每轮内存迭代结束后向S_thread发送Block监控记录的迁移命令,之后进入下一轮迭代。
进一步的,所述步骤5包括:
E1.改变原有虚拟机恢复进程的执行顺序,将I/O状态的恢复移动到内存和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介绍本发明的一个实施例,该实施例以OpenVPN‑2.1.3作为建立虚拟化数据中心之间连接的工具,Gluster‑3.2.0作为每个虚拟化数据中心存储虚拟机镜像的文件系统,Xen‑4.1.0虚拟化平台为例,业务节点上的Dom0和存储节点上使用linux‑2.6.18.8内核Linux操作系统,展开实现一种跨虚拟化数据中心的虚拟机在线迁移方法的进一步说明。
图2A是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移方法流程图,图2B是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移实施过程中的虚拟化数据中心组织结构以及虚拟化数据中心之间的网路连接图。如图2A和图2B所示,该实施例具体实现步骤如下:
A.部署以图2B为例的两个虚拟化数据中心,每个虚拟化数据中心包括多个业务节点和存储节点,并属于同一逻辑局域网,虚拟机镜像文件模板template和Qcow存储于存储节点上的文件系统中。具体的一个实施步骤为:
A1.图2B中两个虚拟化数据中心Datacenter1和Datacenter2处于Internet中。Datacenter1中的所有节点属于Vlan1,每个节点的IP地址为11.11.11.X。Datacenter2中的所有节点属于Vlan2,每个节点的IP地址为12.12.12.X。每个Vlan中的节点通过交换机(Switch)相互连接。
步骤A1中所述“Vlan”为逻辑局域网。
A2.所有存储节点(Storage server)运行Glusterfs Server,并将所有存储节点通过Glusterfs的绑定功能形成统一的挂载接口,在其中创建两个Volume分别为Vol‑template和Vol‑vm。
步骤A2中所述“Glusterfs”为一种分布式文件系统。
A3.所有业务节点(APPserver)运行基于xen‑4.1.0的虚拟机管理器(VMM)虚拟化计算环境和Glusterfs Client,其中Dom0为linux‑2.6.18.8内核的操作系统,VM为虚拟机,PM为节点。并且挂载存储节点上的Vol‑template到本地路径/vm/template,挂载Vol‑vm到本地路径/home/vm下。
A4.Vol‑template中存储模板镜像template,Vol‑vm中存储用户私有数据文件Qcow。
B.两个Datacenter之间通过VPN建立虚拟专用的网络连接通道,使得连接后Vlan1和Vlan2中的所有节点可以通过原有IP地址通信。具体的一个实施步骤为:
B1.在Datacenter1和Datacenter2之外的广域网中选择一个节点作为VPNserver,IP地址为202.201.46.139。在其上生成自己建立服务和每个VPNclient请求连接时需要的认证文件,包括:.ca.Key,.crt,.crs,和.pem等文件。
本步骤中所述的认证文件,均由VPNserver生成,其.ca文件只有一个,VPNserver和VPNclient使用同一文件,.pem文件只为VPNserver使用,其余认证文件,每个节点之上都使用一套,且互不相同。
B2.在VPNserver中的配置文件中设置协议为TCP,tap0模式,tap0设备使用的虚拟IP地址为10.99.0.0,以及认证文件路径。启动服务。
步骤B2中所述“tap0”是指VPN创建的虚拟网络适配器。
B3.Datacenter1中选择一个节点作为VPNclient,该节点拥有两个网络适配器,其中eth0上IP为11.11.11.43地址属于VLan1,eth1上为广域网上的IP地址,将VPNserver生成的认证文件复制到该节点,同样在配置文件中设置VPNserver的IP地址为202.201.46.139,TCP协议,tap0设备,以及认证文件路径,启动服务。
步骤B3中所述“eth”是网络适配器名称。
B4.在Vlan1中的VPNclient上启动虚拟网桥vpnbr0,将其与tap0设备对接。并在eth0上设置到Datacenter2的net。
B5.虚拟化数据中心中除VPNclient之外的业务节点上的设置默认路由为11.11.11.43。
本步骤中B3‑B5以Datacenter1为例,Datacenter2同理实施。连接后两个虚拟化数据中心的节点可以相互通信。
C.把Datacenter1中的一个业务节点作为源节点,在Qemu‑dm进程中记录虚拟机I/O的写入磁盘的Block,并为Qemu‑dm进程创建迁移线程S_thread,S_thread负责接收xc_domain_save()发送的控制命令、Qcow文件的预迁移和Blcok监控记录的迁移。具体的一个实施步骤为:
C1.在源节点上被迁移虚拟机的Qemu‑dm进程中,写入的Block是由block.c中的bdrv_aio_write()函数执行,在该函数中通过数据结构structWrec wimg[]数组记录虚拟机的每一个I/O写入Block,对应的扇区号(secnum)和扇区个数(nb_sector)存入Wrec的字段中,不记录每次写入Block的具体内容,数组中每个元素记录一次I/O写操作。
步骤C1中所述“Qemu‑dm”是Xen‑4.1.0全虚拟化虚拟机使用的I/O驱动机制。
C2.为Qemu‑dm进程创建迁移线程(S_thread),在S_thread中建立UNIXSocket Server(UNSS),UNSS循环等待接收来自xc_domain_save()的两种控制命令,其一为Qcow文件预迁移命令,命令中包含虚拟机号(dom),其二为迁移Block监控记录的命令“read”。
C3.当UNSS接收到Qcow文件预迁移命令时,通过关键字dom在Xenstore中检索被迁移虚拟机的全部配置信息,在配置信息中查找“params”之后的信息为镜像文件路径和文件名,如/home/vm/dom500.img,解析完成后使用fopen()打开文件。
C4.将结构体struct Wrec wimg[]全部清零,重新开始监控。
C5.然后通过Socket Client发送Qcow文件的文件名和内容到目的节点。发送消息的格式是一个结构体struct fomt,该结构体包含四个字段,包括:int type为消息类型,signed long long sectaddr为扇区号,int sectnum为扇区个数,char buf[1024]为存储数据的缓冲区。发送文件路径时,type=1,将路径存入buf中,其他两个字段为零。当发送文件内容时,type=2,按顺序每次读取1024个字节大小的文件缓存在buf中。
C4.当UNSS接收到迁移Block监控记录的命令“read”时,在数据结构struct Wrec数组中从头开始扫描每一条监控记录,对每条记录的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()在源节点迭代拷贝内存信息和CPU状态,在xc_doamin_save()中建立UNIX socket client(UNSC),UNSC向UNSS发送命令,控制Qcow文件的预迁移和Block监控记录的迁移。
D1.在xc_domain_save()中使用文件/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()负责恢复虚拟机的运行,在其中创建恢复线程(R_thread),在R_thread中建立Socket Server接收源节点发送Qcow文件的预迁移和Block监控记录的迁移,并写入本地存储服节点的文件系统中。具体的一个实施步骤为:
E1.将xc_domain_restore()中orig_io_fd_flags=fcntl()函数移动到“out:”前一行。在xc_domain_restore()函数开始创建线程R_thread,并在R_thread中建立Socket Server。
E2.R_thread将接受到的数据格式化为C5步骤所述的struct fomt结构,并通过type字段的数值判断数据应写入的位置。
E3.当Socket Server接受到Qcow文件路径和文件名/hom/vm/dom500.img后,在本地存储节点的文件系统的对应路径下创建该文件,并打开dom500.img文件,等待接受文件内容。
E4.当Socket Server接收到的Qcow文件内容后,R_thread按顺序写入dom500.img中。
E5.当dom500.img的内容接收完成后,关闭该文件。用Qemu‑dm中的驱动打开文件。
E6.当Socket Server接收到的文件为Block监控记录时,先将其的数据格式化为三个部分,分别为:secnum,nb_sector和数据。
E7.由R_thread写入文件dom500.img中以secnum为起始地址的nb_sector个逻辑扇区中。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

一种跨虚拟化数据中心的虚拟机在线迁移方法.pdf_第1页
第1页 / 共15页
一种跨虚拟化数据中心的虚拟机在线迁移方法.pdf_第2页
第2页 / 共15页
一种跨虚拟化数据中心的虚拟机在线迁移方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种跨虚拟化数据中心的虚拟机在线迁移方法.pdf》由会员分享,可在线阅读,更多相关《一种跨虚拟化数据中心的虚拟机在线迁移方法.pdf(15页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103095834 A (43)申请公布日 2013.05.08 CN 103095834 A *CN103095834A* (21)申请号 201310016206.9 (22)申请日 2013.01.16 H04L 29/08(2006.01) H04L 12/46(2006.01) G06F 9/455(2006.01) (71)申请人 中国科学院计算技术研究所 地址 100190 北京市海淀区中关村科学院南 路 6 号 (72)发明人 杨鹏斐 杨坤 宋莹 赵霞 孙毓忠 (74)专利代理机构 北京律诚同业知识产权代理 有限公司 11006 代理人 祁建国 梁挥 。

2、(54) 发明名称 一种跨虚拟化数据中心的虚拟机在线迁移方 法 (57) 摘要 本发明提供一种跨虚拟化数据中心的虚拟机 在线迁移方法, 包括 : 步骤 1, 在广域网上部署多 个虚拟化数据中心, 每个虚拟机镜像分为模板和 用户私有数据文件 ; 步骤 2, 通过两层桥接模式的 虚拟专用网络连接虚拟化数据中心 ; 步骤 3, 源节 点上的虚拟机 I/O 驱动进程中监控每次写入磁盘 的脏块, 并为所述驱动进程创建迁移线程, 所述迁 移线程进行用户私有数据文件的预迁移和脏块监 控记录的迁移 ; 步骤 4, 源节点上所述虚拟机的迁 移进程控制所述 - 预迁移和监控记录的迁移 ; 步 骤 5, 改变所述虚。

3、拟机在目的节点恢复进程的执 行顺序, 为所述恢复进程创建恢复线程, 所述恢复 线程接收所述预迁移和所述监控记录迁移的信 息, 并将所述信息写入存储节点中。 本发明能在多 个虚拟化数据中心之间实现虚拟机和资源的动态 映射。 (51)Int.Cl. 权利要求书 2 页 说明书 9 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书9页 附图3页 (10)申请公布号 CN 103095834 A CN 103095834 A *CN103095834A* 1/2 页 2 1. 一种跨虚拟化数据中心的虚拟机在线迁移方法, 其特征在于, 包括 : 步骤 。

4、1, 在广域网上部署多个虚拟化数据中心, 其中每个虚拟化数据中心的业务节点运 行虚拟机, 每个虚拟化数据中心的存储节点保存虚拟机镜像 ; 步骤 2, 通过两层桥接模式的虚拟专用网络连接多个虚拟化数据中心 ; 步骤 3, 在源节点上的虚拟机 I/O 驱动进程中监控被迁移虚拟机每次写入磁盘的脏块, 并为所述虚拟机 I/O 驱动进程创建一个迁移线程, 所述迁移线程进行用户私有数据文件的 预迁移和脏块监控记录的迁移, 其中所述脏块是指虚拟机每次 I/O 操作的逻辑上连续的扇 区 ; 步骤 4, 源节点上虚拟机的迁移进程控制所述预迁移和脏块监控记录的迁移 ; 步骤 5, 改变所述虚拟机在目的节点恢复进程。

5、的执行顺序, 为所述恢复进程创建恢复线 程, 所述恢复线程接收所述预迁移和所述迁移的信息, 并将所述信息写入所述存储节点中。 2. 如权利要求 1 所述的虚拟机在线迁移方法, 其特征在于, 所述步骤 1 包括 : 步骤 11, 将所述每个虚拟化数据中心的所有硬件资源虚拟化, 以虚拟机的形式向用户 提供服务, 每个虚拟机依附所述存储节点中的一个虚拟机镜像文件 ; 步骤12, 将所述虚拟机镜像文件分为template和用户私有数据文件, 所述template中 包括业务运行的操作系统和应用系统, 虚拟机运行时不能改变此文件的内容 ; 步骤 13, 将所述 template 和所述用户私有数据文件存。

6、储于所述存储节点中。 3. 如权利要求 1 所述的虚拟机在线迁移方法, 其特征在于, 所述步骤 2 包括 : 步骤 21, 在虚拟化数据中心之外的广域网中随机选择一个节点作为 VPNserver, 每个 虚拟化数据中心选择一个节点作为 VPNclient, 所述 VPNserver 生成其建立服务和每个 VPNclient 请求连接时的认证文件, 其中所述 VPNserver 为 VPN 服务器, VPNclient 为 VPN 客户端 ; 步骤22, 在所述VPNserver的配置文件中设置参数, 包括 : TCP协议, tap设备, IP地址, 以及认证文件路径, 之后启动 VPNserv。

7、er 服务 ; 步骤 23, 所述每个虚拟化数据中心选择一个节点作为 VPNclient 后将所述认证文件 复制到该节点, 并在 VPNclient 的配置文件中设置参数, 包括 : VPNserver 的 IP 地址, TCP 协议, tap 设备, 以及认证文件路径, 之后启动 VPNclient 服务, 所述 VPNclient 服务与 VPNserver 服务连接 ; 步骤 24, 在所述每个 VPNclient 上启动虚拟网桥, 将所述虚拟网桥与所述 tap 设备对 接。 4. 如权利要求 1 所述的虚拟机在线迁移方法, 其特征在于, 所述步骤 3 包括 : 步骤 31, 记录所述虚。

8、拟机每次写入磁盘的脏块对应的扇区号和扇区个数 ; 步骤 32, 当所述迁移线程接收到所述用户私有数据文件的预迁移命令时, 通过所述预 迁移命令中携带的虚拟机号, 在 Xenstore 中解析所述用户私有数据文件的路径和文件名, 并将其发送到目的节点, 然后将脏块监控记录清零, 其中所述 Xenstore 是启动虚拟机后在 所述源节点之中保存虚拟机的所有信息 ; 步骤 33, 当所述迁移线程接收到所述脏块监控记录的迁移命令时, 扫描所述脏块监控 记录, 从扇区号和扇区个数中读取文件内容, 并将所述扇区号和扇区个数以及所述文件内 容发送到目的节点, 然后将监控记录清零。 权 利 要 求 书 CN 。

9、103095834 A 2 2/2 页 3 5. 如权利要求 1 所述的虚拟机在线迁移方法, 其特征在于, 所述步骤 4 包括 : 步骤 41, 源节点上所述虚拟机的迁移进程向所述迁移线程发送预迁移命令和被迁移虚 拟机的虚拟机号, 进行所述用户私有数据文件的预迁移, 所述用户私有数据文件预迁移成 功返回后进入迭代迁移 ; 步骤 42, 在每轮迭代迁移结束后向所述迁移线程发送脏块监控记录的迁移命令, 进行 所述脏块监控记录的迁移。 6. 如权利要求 1 所述的虚拟机在线迁移方法, 其特征在于, 所述步骤 5 包括 : 步骤 51, 先恢复所属虚拟机的内存和 CPU, 然后再恢复所属虚拟机的 I/。

10、O ; 步骤 52, 当所述恢复线程接收到的信息为用户私有数据文件的预迁移信息时, 在与所 述用户私有数据文件对应的路径下创建该文件, 并打开此文件, 将所述信息内容按顺序写 入该文件中, 写入完成后, 关闭该文件 ; 当所述恢复线程接收到的信息为脏块监控记录的迁移信息时, 将所述信息的数据格式 化后写入所述用户私有数据文件的逻辑扇区中。 权 利 要 求 书 CN 103095834 A 3 1/9 页 4 一种跨虚拟化数据中心的虚拟机在线迁移方法 技术领域 0001 本发明涉及涉及虚拟化数据中心的资源管理领域, 尤其涉及一种跨虚拟化数据中 心的虚拟机在线迁移方法。 背景技术 0002 传统的。

11、 IT 资源的拥有者以数据中心的方式向外界提供服务, 由分布在各地的拥 有大量计算或者存储资源的多个数据中心组成, 不同的用户之间共享数据中心的资源池。 在云计算模式下, 用户的应用复杂多样, 需求产生的位置各不相同, 不同的用户对应用的服 务质量有不同的要求。故 IT 企业面临着同时管理跨地域的多个数据中心的困难, 所以传统 数据中心的管理模式缺乏多个数据中心之间的资源动态调节方法, 以满足云计算环境中复 杂多样的应用与资源的映射管理。 0003 服务器虚拟化技术作为云计算的关键技术, 其发展为数据中心的资源管理带来 新的机遇。系统级虚拟化在硬件与软件之间设置一层虚拟机管理器 (Virtua。

12、l Machine Monitor, VMM) 软件, 把不同的硬件资源进行抽象, 为上层的软件系统提供多个虚拟计算环 境, 同时支持若干个独立执行的虚拟机 (Virtual Machine, VM), 通过对硬件资源进行划分, 让多个系统同时使用系统资源, 因而能够提高资源利用率。每个独立运行的虚拟机具有一 台物理机同样的功能, 并且他们之间较强的隔离性保障提供的服务质量。 0004 虚拟机在线迁移技术是在保持虚拟机运行的状态下, 把其从一台物理主机迁移到 另一台物理主机, 并在目的主机上恢复运行, 减少对业务运行的影响, 无缝的实现服务整 合。通过在线迁移, 可以更方便的实现服务器的在线维。

13、护、 在线升级、 负载均衡, 灾难恢复, 提供一种灵活有效的资源管理方法。 0005 现有虚拟机在线迁移机制中源节点和目的节点之间在同一虚拟化数据中心, 主要 有一下两个特点 :(1) 两个节点属于同一个 VLAN, 即同一虚拟化数据中心内, 节点之间网 络具有低延迟和高带宽。 (2) 两节点之间通过 SAN(storage area network)、 NAS(network network-attached storage) 等方式共享镜像文件信息, 迁移过程只发送迭代产生的内存 脏页和 CPU 状态等信息, 而不发送磁盘文件信息。 0006 在跨多个虚拟化数据中心的环境下, 由于各虚拟化。

14、数据中心在地理位置上的广泛 分布, 要实施在线的虚拟机迁移存在以下两个困难 : 0007 1) 虚拟化数据中心之间的网络的高延迟和低带宽连接两个虚拟化数据中心需要 经过多重路由和链路, 网络延迟大, 带宽相对较小, 增大了虚拟机迁移的总时间和宕机时 间, 影响运行在虚拟机中的业务, 而且将虚拟化数据中心直接连入 Internet 存在安全和管 理方面的隐患。现有技术设计数据中之间的专用通信网络, 通过专用网络将多个虚拟化数 据中心的迁移转变成逻辑上同一局域网内的虚拟机迁移。但存在以下问题 : 当虚拟机被迁 移至距离文件系统所在的虚拟化数据中心较远 (相对于文件系统在本地) 的业务节点时, 虚 。

15、拟机的 I/O 平均访问延迟和最大访问延迟均增大到原来的 2 倍以上, CPU 利用率也降低了 30%, 虚拟机迁移后不能完全恢复到原有的执行效率。 说 明 书 CN 103095834 A 4 2/9 页 5 0008 2) 跨虚拟化数据中心环境中的虚拟机迁移必须发送虚拟机的所有状态信息 (包 括 : CPU, 内存, 磁盘等) , 为了支持各种用户的不同需求, 现有技术中采用不同的磁盘迁移策 略, 虚拟机的磁盘空间较大 (10G以上) , 附加磁盘状态一致性过程中产生的脏扇区和内存迭 代产生的脏页信息, 使得整个迁移过程发送的数据量过大, 耗费过多网络带宽资源, 而且虚 拟机迁移时间和宕机。

16、时间过长。 发明内容 0009 为了解决上述问题, 本发明提供了一种跨虚拟化数据中心的虚拟机在线迁移方 法, 在原有虚拟机在线迁移方法中加入镜像的迁移, 使虚拟机能够在多个虚拟化数据中心 之间迁移, 从而实现在多个虚拟化数据中心之间实现虚拟机和资源的动态映射。 0010 为实现上述目的, 本发明提供了一种跨虚拟化数据中心的虚拟机在线迁移方法, 该方法包括 : 0011 步骤 1, 在广域网上部署多个虚拟化数据中心, 其中每个虚拟化数据中心的业务节 点运行虚拟机, 每个虚拟化数据中心的存储节点保存虚拟机镜像 ; 0012 步骤 2, 通过两层桥接模式的虚拟专用网络连接多个虚拟化数据中心 ; 00。

17、13 步骤 3, 在源节点上的虚拟机 I/O 驱动进程中监控被迁移虚拟机每次写入磁盘的 脏块, 并为所述虚拟机 I/O 驱动进程创建迁移线程, 所述迁移线程进行用户私有数据文件 的预迁移和脏块监控记录的迁移, 其中所述脏块是指虚拟机每次 I/O 操作的逻辑上连续的 扇区 ; 0014 步骤 4, 源节点上所述虚拟机的迁移进程控制所述用户私有数据文件的预迁移和 脏块监控记录的迁移 ; 0015 步骤 5, 改变所述虚拟机在目的节点恢复进程的执行顺序, 为所述恢复进程创建恢 复线程, 所述恢复线程接收所述预迁移和所述脏块监控记录迁移的信息, 并将所述信息写 入所述存储节点中。 0016 进一步的,。

18、 所述步骤 1 包括 : 0017 步骤 11, 将所述每个虚拟化数据中心的所有硬件资源虚拟化, 以虚拟机的形式提 供服务, 每个虚拟机依附所述存储节点中的一个虚拟机镜像文件。 ; 0018 步骤 12, 将所述虚拟机镜像文件分为 template 和用户私有数据文件, 所述 template 中包括业务运行的操作系统和应用系统, 虚拟机运行时不能改变此文件的内容 ; 0019 步骤 13, 将所述 template 和所述用户私有数据文件存储于所述存储节点中。 0020 进一步的, 所述步骤 2 包括 : 0021 步骤 21, 在虚拟化数据中心之外的广域网中随机选择一个节点作为 VPNse。

19、rver, 每个虚拟化数据中心选择一个节点作为 VPNclient, 所述 VPNserver 生成其建立服务和每 个VPNclient请求连接时的认证文件, 其中所述VPNserver为VPN服务器, VPNclient为VPN 客户端 ; 0022 步骤 22, 在所述 VPNserver 的配置文件中设置参数, 包括 : TCP 协议, tap 设备, IP 地址, 以及认证文件路径, 之后启动 VPNserver 服务 ; 0023 步骤 23, 所述每个虚拟化数据中心选择一个节点作为 VPNclient 后将所述认证 文件复制到该节点, 并在 VPNclient 的配置文件中设置参数。

20、, 包括 : VPNserver 的 IP 地址, 说 明 书 CN 103095834 A 5 3/9 页 6 TCP 协议, tap 设备, 以及认证文件路径, 之后启动 VPNclient 服务, 所述 VPNclient 服务与 VPNserver 服务连接 ; 0024 步骤24, 在所述每个VPNclient上启动虚拟网桥, 将所述虚拟网桥与所述tap设备 对接。 0025 进一步的, 所述步骤 3 包括 : 0026 步骤 31, 记录所述虚拟机每次写入磁盘的脏块对应的扇区号和扇区个数 ; 0027 步骤 32, 当所述迁移线程接收到所述用户私有数据文件的预迁移命令时, 通过所 。

21、述预迁移命令中携带的虚拟机号, 在 Xenstore 中解析所述用户私有数据文件的路径和文 件名, 并将其发送到目的节点, 然后将脏块的监控记录清零, 其中所述 Xenstore 是启动虚 拟机后在所述源节点之中保存虚拟机的所有信息 ; 0028 步骤 33, 当所述迁移线程接收到所述脏块监控记录的迁移命令时, 扫描所述脏块 监控记录, 从扇区号和扇区个数中读取文件内容, 并将所述扇区号和扇区个数以及所述文 件内容发送到目的节点, 然后将监控记录清零。 0029 进一步的, 所述步骤 4 包括 : 0030 步骤 41, 源节点上所述虚拟机的迁移进程向所述迁移线程发送所述用户私有数据 文件的预。

22、迁移命令和被迁移虚拟机的虚拟机号, 进行所述用户私有数据文件的预迁移, 所 述用户私有数据文件预迁移成功返回后进入迭代迁移 ; 0031 步骤 42, 在每轮迭代迁移结束后向所述迁移线程发送脏块监控记录的迁移命令, 进行所述脏块监控记录的迁移。 0032 进一步的, 所述步骤 5 包括 : 0033 步骤 51, 先恢复虚拟机的内存和 CPU, 然后再恢复虚拟机的 I/O ; 0034 步骤 52, 当所述恢复线程接收到的信息为用户私有数据文件的预迁移信息时, 在 与所述用户私有数据文件对应的路径下创建该文件, 并打开此文件, 将所述信息内容按顺 序写入该文件中, 写入完成后, 关闭该文件 ;。

23、 0035 当所述恢复线程接收到的信息为脏块监控记录的迁移信息时, 将所述信息格式化 后写入所述用户私有数据文件对应的逻辑扇区中。 0036 本发明的有益功效在于, 将广域网上分布的多个虚拟化数据中心通过 VPN 连接, 在原有 Xen 虚拟机迁移机制的基础上发明带镜像文件迁移的, 迁移镜像文件时不迁移 template, 只迁移用户私有数据文件和迁移过程中写入该文件的脏块, 减少发送的数据量, 降低迁移开销的同时提高迁移时间和宕机时间。 实现虚拟机在多个虚拟化数据中心之间的 在线迁移, 为虚拟化数据中心之间的资源动态管理提供方法, 具有良好的使用价值和市场 前景。 0037 以下结合附图和具。

24、体实施例对本发明进行详细描述, 但不作为对本发明的限定。 附图说明 0038 图 1 为本发明的跨虚拟化数据中心的虚拟机在线迁移方法流程图 ; 0039 图 2A 是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移方法流程图 ; 0040 图 2B 是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移实施过程中的 虚拟化数据中心组织结构以及虚拟化数据中心之间的网路连接图。 说 明 书 CN 103095834 A 6 4/9 页 7 具体实施方式 0041 图 1 为本发明的跨虚拟化数据中心的虚拟机在线迁移方法流程图。如图 1 所示, 该方法包括 : 0042 步骤 1, 在广域网上部署多个。

25、虚拟化数据中心, 其中每个虚拟化数据中心的业务节 点运行虚拟机, 每个虚拟化数据中心的存储节点保存虚拟机镜像 ; 0043 步骤 2, 通过两层桥接模式 (tap) 的虚拟专用网络 VPN 连接多个虚拟化数据中心 ; 0044 步骤 3, 在源节点上的虚拟机 I/O 驱动进程中监控被迁移虚拟机每次写入磁盘的 脏块(Block), 并为所述虚拟机I/O驱动进程创建一个迁移线程(S_thread), 所述迁移线程 进行用户私有数据文件的预迁移和脏块监控记录的迁移, 其中所述脏块是指虚拟机每次 I/ O 操作的逻辑上连续的扇区 ; 0045 步骤 4, 源节点上的虚拟机的迁移进程控制所述用户私有数据。

26、文件的预迁移和脏 块监控记录的迁移 ; 0046 步骤 5, 改变所述虚拟机在目的节点恢复进程的执行顺序, 为所述恢复进程创建恢 复线程 (R_thread), 所述恢复线程接收所述预迁移和所述脏块监控记录迁移的信息, 并将 所述信息写入所述存储节点中。 0047 进一步的, 所述步骤 1 包括 : 0048 A1. 每个虚拟化数据中心的所有节点属于同一逻辑局域网, 业务节点共享存储节 点之上的文件系统中。 0049 A2.使用虚拟化技术, 将虚拟化数据中心的所有硬件资源虚拟化。 以虚拟机的形式 向用户提供服务。 0050 A3. 将虚拟机镜像文件拆分为模板 (template) 和用户私有数。

27、据文件 (Qcow), 其 中每个虚拟化数据中心备份所有的 template, 每个虚拟化数据中心拥有的 template 相同, Qcow 文件在用户请求服务时动态生成。 0051 A4. 将 template 和 Qcow 分别存储于存储节点之上的 Volume 中。 0052 所述 “虚拟化数据中心” 是包含在同一逻辑局域网中的业务节点和存储节点, 能够 向外界提供计算和存储服务。 0053 所述 “虚拟机镜像文件” 在虚拟化数据中心以虚拟机的形式提供服务时, 保存在文 件系统中的一个文件, 其中包含操作系统、 应用软件和用户私有数据文件。 0054 所述 “template” 包括业务。

28、运行的操作系统和应用系统, 虚拟机运行时不能改变此 文件的内容。 0055 所述 “Qcow” 是依附 template 动态创建的文件, 用户将私有数据写入其中, 用户修 改 template 的内容时, 将其复制并改写后保存。 0056 所述 “Volume” 是分布式文件系统的一个卷。 0057 进一步的, 所述步骤 2 包括 : 0058 B1. 在 虚 拟 化 数 据 中 心 之 外 的 广 域 网 中 选 择 一 个 节 点 作 为 VPN 服 务 器 (VPNserver), 在其上生成自己建立服务和每个 VPNclient 请求连接时需要的认证文件。 0059 B2. 在 VP。

29、Nserver 的配置文件中设置参数 : 协议为 TCP、 tap 模式、 tap 设备使用的 虚拟 IP 地址、 以及认证文件路径, 之后启动 VPNserver 服务。 说 明 书 CN 103095834 A 7 5/9 页 8 0060 B3. 每个虚拟化数据中心选择一个节点作为 VPN 客户端 (VPNclient), 将 VPNserver 生成的认证文件复制到该节点, 在配置文件中设置参数 : VPNserver 的 IP 地址, TCP 协议, tap 设备, 以及认证文件路径, 启动 VPNclient 服务, 所述服务请求与 VPNserver 服务连接。 0061 B4.。

30、 在每个 VPNclient 上启动虚拟网桥, 将其与 tap 设备对接。并在 VPNclient 上 设置到其它虚拟化数据中心的 net。 0062 B5. 除 VPNclient 之外的业务节点上设置默认路由, 为本虚拟化数据中心 VPNclient 的 IP 地址。 0063 所述 “net” 是在 VPNclient 上设置其他虚拟化数据中心的路由, 使其具有转发数 据的功能。 0064 所述 “认证文件” 是由 VPNserver 生成的确认连接合法性的文件。 0065 进一步的, 所述步骤 3 包括 : 0066 C1. 在源节点上被迁移虚拟机 I/O 驱动进程中, 记录虚拟机的每。

31、一个 I/O 写入 Block 对应的扇区号和扇区个数。 0067 C2.S_thread接收xc_domain_save()发送的两种控制命令, 其一为Qcow文件预迁 移命令, 其二为迁移 Block 监控记录的命令。 0068 C3. 当 S_thread 接收到 Qcow 文件预迁移命令时, 通过命令中携带的虚拟机号, 在 Xenstore中解析Qcow文件的路径和文件名, 并将Block的监控记录清零, 重新开始监控, 然 后发送 Qcow 文件的文件名和内容到目的节点。 0069 C4. 当 S_thread 接收到迁移 Block 监控记录的命令时, 扫描每一条监控记录, 从 每。

32、个 (扇区号, 扇区个数) 位置读取文件内容, 将扇区号、 扇区个数和文件内容发送到目的节 点, 发送完成后将监控记录清零。 0070 C5.S_thread和I/O驱动进程共享Block监控记录, 故在修改位置监控记录加线程 锁, 使两者互斥修改。 0071 所述 “源节点” 是虚拟机在迁移之前依附的业务节点。 0072 所述 “目的节点” 是虚拟机迁移后依附的业务节点, 本发明中源节点和目的节点分 别属于不同的虚拟化数据中心。 0073 所述 “虚拟机 I/O 驱动” 是将虚拟机 I/O 请求转化为节点之上 I/O 请求的机制。 0074 所述 “Xenstore” 是启动虚拟机后在所述源。

33、节点之中保存虚拟机的所有信息的机 制。 0075 所述 “扇区号” 是指虚拟机写文件时存储在 Qcow 文件中的逻辑地址。 0076 进一步的, 所述步骤 4 包括 : 0077 D1. 在迁移进程初始化变量后向 S_thread 发送 Qcow 文件的预迁移命令和被迁移 虚拟机的虚拟机号, 等待由 S_thread 返回的消息, Qcow 文件预迁移成功返回后进入内存迭 代迁移。 0078 D2. 在每轮内存迭代结束后向 S_thread 发送 Block 监控记录的迁移命令, 之后进 入下一轮迭代。 0079 进一步的, 所述步骤 5 包括 : 0080 E1.改变原有虚拟机恢复进程的执行。

34、顺序, 将I/O状态的恢复移动到内存和CPU状 说 明 书 CN 103095834 A 8 6/9 页 9 态恢复之后。 0081 E2.当R_thread接受到Qcow文件路径和文件名后, 在本地文件系统的对应路径下 创建该文件, 并打开此空文件, 等待接受文件内容。 0082 E3. 将 R_thread 接受到的 Qcow 文件内容后按顺序写入该文件中。 0083 E4. 当 Qcow 文件接收完成后, 关闭该文件。用虚拟机 I/O 的驱动打开文件的方式 打开 Qcow 文件。 0084 E5.当R_thread接受到的文件为Block时, 先将接受到的数据格式化为三个部分, 分别为 。

35、: secnum, nb_sector 和数据。 0085 E6.由R_thread将E5步骤中的数据写入Qcow文件的以secnum为起始地址的nb_ sector 个逻辑扇区中。 0086 下面结合附图 2A 和 2B 介绍本发明的一个实施例, 该实施例以 OpenVPN-2.1.3 作 为建立虚拟化数据中心之间连接的工具, Gluster-3.2.0 作为每个虚拟化数据中心存储虚 拟机镜像的文件系统, Xen-4.1.0 虚拟化平台为例, 业务节点上的 Dom0 和存储节点上使用 linux-2.6.18.8 内核 Linux 操作系统, 展开实现一种跨虚拟化数据中心的虚拟机在线迁移 方。

36、法的进一步说明。 0087 图 2A 是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移方法流程图, 图 2B 是本发明的一实施例的跨虚拟化数据中心的虚拟机在线迁移实施过程中的虚拟化数 据中心组织结构以及虚拟化数据中心之间的网路连接图。如图 2A 和图 2B 所示, 该实施例 具体实现步骤如下 : 0088 A. 部署以图 2B 为例的两个虚拟化数据中心, 每个虚拟化数据中心包括多个业务 节点和存储节点, 并属于同一逻辑局域网, 虚拟机镜像文件模板template和Qcow存储于存 储节点上的文件系统中。具体的一个实施步骤为 : 0089 A1.图2B中两个虚拟化数据中心Datacenter。

37、1和Datacenter2处于Internet中。 Datacenter1 中的所有节点属于 Vlan1, 每个节点的 IP 地址为 11.11.11.X。Datacenter2 中的所有节点属于 Vlan2, 每个节点的 IP 地址为 12.12.12.X。每个 Vlan 中的节点通过交 换机 (Switch) 相互连接。 0090 步骤 A1 中所述 “Vlan” 为逻辑局域网。 0091 A2. 所有存储节点 (Storage server)运行 Glusterfs Server, 并将所有存储 节点通过 Glusterfs 的绑定功能形成统一的挂载接口, 在其中创建两个 Volume 。

38、分别为 Vol-template 和 Vol-vm。 0092 步骤 A2 中所述 “Glusterfs” 为一种分布式文件系统。 0093 A3. 所有业务节点 (APPserver) 运行基于 xen-4.1.0 的虚拟机管理器 (VMM) 虚拟 化计算环境和 Glusterfs Client, 其中 Dom0 为 linux-2.6.18.8 内核的操作系统, VM 为虚 拟机, PM 为节点。并且挂载存储节点上的 Vol-template 到本地路径 /vm/template, 挂载 Vol-vm 到本地路径 /home/vm 下。 0094 A4.Vol-template 中存储模板。

39、镜像 template, Vol-vm 中存储用户私有数据文件 Qcow。 0095 B. 两个 Datacenter 之间通过 VPN 建立虚拟专用的网络连接通道, 使得连接后 Vlan1 和 Vlan2 中的所有节点可以通过原有 IP 地址通信。具体的一个实施步骤为 : 说 明 书 CN 103095834 A 9 7/9 页 10 0096 B1. 在 Datacenter1 和 Datacenter2 之 外 的 广 域 网 中 选 择 一 个 节 点 作 为 VPNserver, IP 地址为 202.201.46.139。在其上生成自己建立服务和每个 VPNclient 请求 连接。

40、时需要的认证文件, 包括 : .ca.Key, .crt, .crs, 和 .pem 等文件。 0097 本步骤中所述的认证文件, 均由VPNserver生成, 其.ca文件只有一个, VPNserver 和 VPNclient 使用同一文件, .pem 文件只为 VPNserver 使用, 其余认证文件, 每个节点之上 都使用一套, 且互不相同。 0098 B2. 在 VPNserver 中的配置文件中设置协议为 TCP, tap0 模式, tap0 设备使用的虚 拟 IP 地址为 10.99.0.0, 以及认证文件路径。启动服务。 0099 步骤 B2 中所述 “tap0” 是指 VPN 。

41、创建的虚拟网络适配器。 0100 B3.Datacenter1 中选择一个节点作为 VPNclient, 该节点拥有两个网络适配 器, 其中 eth0 上 IP 为 11.11.11.43 地址属于 VLan1, eth1 上为广域网上的 IP 地址, 将 VPNserver 生成的认证文件复制到该节点, 同样在配置文件中设置 VPNserver 的 IP 地址为 202.201.46.139, TCP 协议, tap0 设备, 以及认证文件路径, 启动服务。 0101 步骤 B3 中所述 “eth” 是网络适配器名称。 0102 B4. 在 Vlan1 中的 VPNclient 上启动虚拟网。

42、桥 vpnbr0, 将其与 tap0 设备对接。并 在 eth0 上设置到 Datacenter2 的 net。 0103 B5. 虚拟化数据中心中除 VPNclient 之外的业务节点上的设置默认路由为 11.11.11.43。 0104 本步骤中 B3-B5 以 Datacenter1 为例, Datacenter2 同理实施。连接后两个虚拟 化数据中心的节点可以相互通信。 0105 C. 把 Datacenter1 中的一个业务节点作为源节点, 在 Qemu-dm 进程中记录虚拟机 I/O 的写入磁盘的 Block, 并为 Qemu-dm 进程创建迁移线程 S_thread, S_thr。

43、ead 负责接收 xc_domain_save() 发送的控制命令、 Qcow 文件的预迁移和 Blcok 监控记录的迁移。具体的 一个实施步骤为 : 0106 C1. 在源节点上被迁移虚拟机的 Qemu-dm 进程中, 写入的 Block 是由 block.c 中 的bdrv_aio_write()函数执行, 在该函数中通过数据结构structWrec wimg数组记录虚 拟机的每一个 I/O 写入 Block, 对应的扇区号 (secnum) 和扇区个数 (nb_sector) 存入 Wrec 的字段中, 不记录每次写入 Block 的具体内容, 数组中每个元素记录一次 I/O 写操作。 。

44、0107 步骤 C1 中所述 “Qemu-dm” 是 Xen-4.1.0 全虚拟化虚拟机使用的 I/O 驱动机制。 0108 C2. 为 Qemu-dm 进程创建迁移线程 (S_thread), 在 S_thread 中建立 UNIXSocket Server(UNSS) , UNSS 循环等待接收来自 xc_domain_save() 的两种控制命令, 其一为 Qcow 文件预迁移命令, 命令中包含虚拟机号 (dom) , 其二为迁移 Block 监控记录的命令 “read” 。 0109 C3. 当 UNSS 接收到 Qcow 文件预迁移命令时, 通过关键字 dom 在 Xenstore 。

45、中检索 被迁移虚拟机的全部配置信息, 在配置信息中查找 “params” 之后的信息为镜像文件路径和 文件名, 如 /home/vm/dom500.img, 解析完成后使用 fopen() 打开文件。 0110 C4. 将结构体 struct Wrec wimg 全部清零, 重新开始监控。 0111 C5. 然后通过 Socket Client 发送 Qcow 文件的文件名和内容到目的节点。发送 消息的格式是一个结构体 struct fomt, 该结构体包含四个字段, 包括 : int type 为消息类 型, signed long long sectaddr 为扇区号, int sectn。

46、um 为扇区个数, char buf1024 为 说 明 书 CN 103095834 A 10 8/9 页 11 存储数据的缓冲区。发送文件路径时, type=1, 将路径存入 buf 中, 其他两个字段为零。当 发送文件内容时, type=2, 按顺序每次读取 1024 个字节大小的文件缓存在 buf 中。 0112 C4. 当 UNSS 接收到迁移 Block 监控记录的命令 “read”时, 在数据结构 struct Wrec 数组中从头开始扫描每一条监控记录, 对每条记录的 secnum 和 nb_sector 使用 bdrv_ aio_read() 函数读取镜像中对应的信息, 缓存。

47、于 buffer 中。nb_sector 的大小不同, 每一 个扇区大小为 512 字节, 所以在发送时将 buffer 拆分为小于等于 1024 字节的片段。使用 Socket Client发送Qcow文件信息到目的节点, 信息格式为 : type=3, sectaddr, sectnum为 拆分后的扇区地址和扇区个数, buf 中存储拆分后对应的数据。发送完成后将 Wrec 全部清 零, 重新开始监控。 0113 C5.UNSS和Qemu-dm共享struct Wrec数组, 故在block.h中定义pthread_mutex_ t mut 线程锁变量, 写入和清零 Block 监控记录时。

48、加线程锁, 在修改 struct Wrec 时使用 pthread_mutex_lock(;)之前UNSC向UNSS发送Qcow文件预迁移命令 和 dom, 其中 dom 是虚拟机号。Qcow 文件内容发送完成后, 由 UNSS 向 UNSC 返回消息, 当返 回发送 Qcow 文件名和内容到目的节点的成功消息后进入内存迭代迁移的过程。 0117 D3.在每轮内存迭代结束后UNSC向UNSS发送迁移Block监控记录的命令, 之后进 入下一轮迭代。 0118 E.在Datacenter2中, 目的节点xc_domain_restore()负责恢复虚拟机的运行, 在 其中创建恢复线程 (R_th。

49、read) , 在 R_thread 中建立 Socket Server 接收源节点发送 Qcow 文件的预迁移和 Block 监控记录的迁移, 并写入本地存储服节点的文件系统中。具体的一 个实施步骤为 : 0119 E1. 将 xc_domain_restore() 中 orig_io_fd_flags=fcntl() 函数移动到 “out : ” 前一行。在 xc_domain_restore() 函数开始创建线程 R_thread, 并在 R_thread 中建立 Socket Server。 0120 E2.R_thread 将接受到的数据格式化为 C5 步骤所述的 struct fomt 结构, 并通过 type 字段的数值判断数据应写入的位置。 0121 E3.当Socket Server接受。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1