CN105704217A - 一种透明的基于事件驱动的共生虚拟机动态发现方法 - Google Patents
一种透明的基于事件驱动的共生虚拟机动态发现方法 Download PDFInfo
- Publication number
- CN105704217A CN105704217A CN201610025913.8A CN201610025913A CN105704217A CN 105704217 A CN105704217 A CN 105704217A CN 201610025913 A CN201610025913 A CN 201610025913A CN 105704217 A CN105704217 A CN 105704217A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- symbiosis
- event
- client computer
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种透明的基于事件驱动的共生虚拟机动态发现方法,步骤包括:在宿主机和客户机中初始化建立事件链表和用于记录所在物理机节点的共生虚拟机信息的共生虚拟机列表;在客户机加入共生虚拟机集合时向宿主机注册以实现对客户机的注册动作监控,在客户机中监测该客户机对应的/control/shutdown节点以实现对客户机的迁移动作监控,在宿主机中监测每个客户机所对应域间共享存储系统的根目录节点以实现对客户机的关闭动作监控,根据监控结果向宿主机和客户机的事件链表中写入相应的事件,并由宿主机和客户机执行本地事件链表中动作相应事件的处理以更新所在物理机节点的共生虚拟机列表。本发明具有对虚拟机监控器和操作系统透明、开销小、效率高的优点。
Description
技术领域
本发明涉及云计算、操作系统及网络通信虚拟化技术,具体涉及一种透明的基于事件驱动的共生虚拟机动态发现方法。
背景技术
虚拟化技术已成为云计算环境IaaS(InfrastructureasaService)层的重要使能技术之一。通过虚拟机监控器(VirtualMachineMonitor,简称VMM)软件对物理计算机的I/O设备、内存、处理器等硬件设备进行虚拟化,在一台物理计算机(简称物理机)上虚拟出多个虚拟机(VirtualMachine,简称VM),每个虚拟机都运行一个客户机系统(GuestOS,客户机操作系统)和应用。虚拟化技术在虚拟机功能和性能隔离、在线迁移的负载均衡和系统容错、应用移植性、提高资源利用率、降低运维难度和成本等方面的优势使其被广泛应用于以Amazon为代表的大型数据中心和云计算环境的IaaS平台中,其典型应用涵盖高性能计算、大规模分布式计算、Web事务处理,等等,对于这类应用,网络通信是其负载的重要组成部分。
如图1所示,Xen虚拟化技术通过Xen虚拟机监控器对物理计算机的I/O设备、内存、处理器等硬件设备进行虚拟化,在一台物理机上虚拟出VM0~VM2三个虚拟机,每个虚拟机都运行一个客户机系统和应用;Xen虚拟机监控器与一个特权虚拟机域(Dom0或HostOS,宿主机)协调,保证位于同一物理计算机上的虚拟机之间的相互隔离,支持无需宕机的前提下将虚拟机从一台物理机在线迁移(LiveMigration)到另一台物理机。Xen虚拟机监控器直接运行在硬件层之上,宿主机和虚拟机都位于Xen虚拟机监控器之上,管理工具都位于宿主机中,用户通过宿主机的管理工具对Xen上的虚拟机进行管理,包括创建、删除、迁移等命令。
通常将位于同一物理机上的虚拟机称为共生虚拟机。如图2所示,在采用Xen作为虚拟机监控器的云计算集群中,不同物理机之间通过路由器相连,以物理机#1为例,物理机#1上的domU_11~domU_1n即为共生虚拟机。本方法研究的问题是如何使得处于同一物理节点的客户机动态感知对方的存在,以物理节点1为例,即对于物理节点#1,使得任一客户机domU_1i,能感知到domU_11~domU_1n的存在,当物理节点1上某客户机迁移到其他物理节点上或关闭掉,物理节点1上的客户机能感知到这些事件。大型数据中心及云计算环境中,网络I/O是系统负载的重要组成部分。为提高运行在虚拟机中的网络密集型应用的通信效率,通过优化共生虚拟机间通信来提高云计算集群网络通信效率已成为工业界和学术界的研究热点之一。一种普遍而又有效的方法是采用共享内存机制支持共生虚拟机间的通信,缩短通信路径,减少虚拟机与虚拟机监控器之间的切换和调用,从而提高通信效率;而对于位于不同物理机上非共生虚拟机,则采用传统的基于TCP/IP协议的通信机制。虚拟机在线迁移是虚拟化技术的重要特性。虚拟机在线迁移是指在不中断服务的前提下,将正在运行的虚拟机从一台物理机移植到另一台物理机上,该特性能够有效支持系统负载平衡、容错恢复、降低能耗及提高可管理性。为此,设计良好的共生虚拟机间通信优化机制需要支持虚拟机在线迁移,而虚拟机在线迁移意味着物理机上虚拟机的动态加入或退出,共生虚拟机关系会发生变化,有效的客户机动态感知共生虚拟机状态变化的方法是必不可少的。
当前,已有的支持虚拟机在线迁移的共生关系感知的虚拟机域间通信机制有XenLoop和MMNet。然而,XenLoop和MMNet中的共生虚拟机动态发现方法都是使用一种基于心跳机制的事后发现方法。Xenloop是采用一种基于心跳机制的事后发现方法,即宿主机定期扫描客户机所对应XenStore(Xen提供的域间共享存储系统)中的信息,获取所有客户机的信息(如domid:客户机的唯一标识号、MAC:客户机的数据链路层地址、IP地址:客户机的网络层地址),然后将所有客户机信息根据各个客户机的数据链路层地址逐个发送给每个客户机,客户机接收到所有客户机信息后,在客户机共生虚拟机列表逐个查找宿主机发来的客户机信息,若未查找到则将其加入到共生虚拟机列表,若查找到,则更新该客户机在共生虚拟机集合中对应的时间戳。最后客户机再整体扫描共生虚拟机列表,若发现某个共生虚拟机列表项的时间戳没有更新,则认为这一共生虚拟机列表项所对应共生虚拟机发生迁出、异常或关闭,然后将时间戳没有更新的共生虚拟机列表项从共生虚拟机列表中删除。如图3所示基于Xenloop的共生虚拟机动态发现方法中,某物理机上包括宿主机Dom0和共生虚拟机(包括DomU1~DomUn),其发现方法的步骤如下:(1)分别由各个客户机向虚拟机监控器的Xenstore数据库写入初始化状态,告诉宿主机Dom0的Discovery模块本客户机虚拟机使用的xenloop;(2)宿主机Dom0循环获取各虚拟机的xenloop状态以及MacAddr;(3)宿主机Dom0将共生虚拟机的DomID和MAC广播出去,及发送XENLOOP_DISCOVERY消息;(4)各个客户机将收到的共生虚拟机的DomID和Mac加入到Hash表里。
基于心跳机制的事后发现方法,即宿主机定期扫描客户机所对应XenStore中的信息,获取本物理机上所有客户机的信息(如客户机的唯一标识号domid、客户机的数据链路层MAC地址、客户机的网络层IP地址),然后将所有客户机信息根据各个客户机的数据链路层地址逐个发送给每个客户机,客户机接收到所有客户机信息后,在客户机共生虚拟机列表逐个查找宿主机发来的客户机信息,若未查找到则将其加入到共生虚拟机列表,若查找到,则更新该客户机在共生虚拟机集合中对应的时间戳。最后客户机再整体扫描共生虚拟机列表,若发现某个共生虚拟机列表项的时间戳没有更新,则认为这一共生虚拟机列表项所对应共生虚拟机发生迁出、异常或关闭,然后将时间戳没有更新的共生虚拟机列表项从共生虚拟机列表中删除。
这类基于心跳机制的事后发现方法存在以下缺点:
其一、开销过大。在云计算集群中,共生虚拟机状态变化通常并不频繁,而基于心跳机制的事后发现方法不管物理节点中的虚拟机状态是否发生变化,都要对整个XenStore目录树扫描一遍。设扫描周期为T,物理节点中客户机个数为n,宿主机每扫描XenStore中某一个客户机所对应的信息的开销是A,每次发送共生虚拟机集合的开销为B,则宿主机中每隔一个T周期需要以下开销:宿主机的开销为O(n),每个客户机收到宿主机发送过来的共生虚拟机信息都要进行查找和扫描时间戳,即使使用Hash查找方法,最小的开销也是O(n);对应整个物理节点所有客户机的开销是O(n2)。即每个时间T内,就需要O(n2)的开销用于动态感知共生虚拟机状态变更。
其二、会出现客户机不能及时发现共生虚拟机状态变更的情况。这类方法中,若将心跳周期减小,则在云计算集群中虚拟机状态变更很少的情况下带来太大不必要开销,若增大,当云计算集群中虚拟机状态发生变化时,其它客户机不能及时感知变化的可能性就会增加。因此,很难去确定一个合适的心跳周期,达到既能尽可能使得开销小,又能在物理节点中当某个虚拟机状态发生变更时及时地让该物理节点上所有客户机都能及时感知到。
综上所述,当前基于心跳机制的共生虚拟机动态发现方法的不足,即开销过大、客户机不能及时发现所在物理机中虚拟机状态变更。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种对虚拟机监控器和操作系统透明、开销小、效率高的基于事件驱动的共生虚拟机动态发现方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种透明的基于事件驱动的共生虚拟机动态发现方法,步骤包括:
1)预先在宿主机和客户机中初始化建立用于记录宿主机和客户机待处理事件的事件链表和用于记录所在物理机节点的共生虚拟机信息的共生虚拟机列表;
2)在客户机加入共生虚拟机集合时向宿主机注册以实现对客户机的注册动作监控,在客户机中监测该客户机对应的/control/shutdown节点以实现对客户机的迁移动作监控,在宿主机中监测每个客户机所对应域间共享存储系统的根目录节点以实现对客户机的关闭动作监控,根据监控结果向宿主机和客户机的事件链表中写入动作相应的事件,并由宿主机和客户机分别执行本地事件链表中动作相应事件的处理以更新所在物理机节点的共生虚拟机列表。
优选地,所述步骤1)中的事件链表均包括事件记录和用于指向第一个事件记录的事件链表头指针,所述事件记录包括事件类型、事件信息和指向下一个事件记录的列表头。
优选地,所述步骤1)中的共生虚拟机列表为包括哈希表表头和共生虚拟机列表项,所述哈希表表头包括多个表头项指针,每一个表头项指针指向一个共生虚拟机列表项,所述共生虚拟机列表项包括作为共生虚拟机的客户机在物理机上的唯一标识号、客户机的数据链路层地址和用于指向下一个共生虚拟机列表项的列表头,且所述宿主机中的共生虚拟机列表项还包含一项监测器指针,所述监测器指针指向宿主机用于监测客户机关闭事件的客户机根目录监测器。
优选地,所述步骤2)的详细步骤包括:
2.1)预先在各个客户机上添加用于监测客户机加入到共生虚拟机集合的共生虚拟机注册子模块、用于检测客户机迁移的自身迁移监测子模块;预先在宿主机上添加用于检测各个客户机根目录是否被删除的客户机根目录监视器;
2.2)通过共生虚拟机注册子模块监测客户机是否加入共生虚拟机集合,通过自身迁移监测子模块检测客户机的/control/shutdown节点是否被写为“suspend”,通过客户机根目录监视器监测各个客户机根目录是否被删除;当共生虚拟机注册子模块监测到客户机加入到共生虚拟机集合时,跳转执行步骤2.3);当自身迁移监测子模块检测到客户机的/control/shutdown节点是否被写为“suspend”时,跳转执行步骤2.8);当客户机根目录监视器监测到某一个客户机的根目录被删除时,跳转执行步骤2.18);
2.3)共生虚拟机注册子模块通过数据链路层消息向整个局域网段广播注册消息;
2.4)局域网中所有宿主机接收到注册消息,通过查找域间共享存储系统目录节点下客户机信息判断广播注册消息的客户机是否与本宿主机处于同一物理机,若是,则宿主机在本地的事件链表中插入客户机注册事件;
2.5)如果宿主机检测到本地的事件链表中插入客户机注册事件,则将注册的客户机添加到本地的共生虚拟机列表中,为注册的客户机根目录注册监测器,并将新的共生虚拟机列表通过数据链路层消息发送给新注册的客户机,为新注册的客户机添加客户机根目录事件监测函数,最后将共生虚拟机添加消息通过数据链路层消息广播给整个局域网段;
2.6)局域网中所有客户机收到共生虚拟机添加消息,判断消息源地址是否是所在物理机的宿主机,如果是,客户机则在本地的事件链表中插入共生虚拟机添加事件;
2.7)如果客户机检测到本地的事件链表中插入共生虚拟机添加事件,则将添加的共生虚拟机加入到本地的共生虚拟机列表,返回步骤2.2);
2.8)客户机的自身迁移监测子模块在本地的事件链表中插入自身预迁移事件;
2.9)如果客户机本地的事件链表中插入自身预迁移事件,则通过数据链路层向宿主机发出客户机迁移消息,再将自身预迁移事件从本地的事件链表中删除;
2.10)宿主机收到客户机迁移消息后,向本地的事件链表中插入客户机迁移事件;
2.11)如果宿主机检测到本地的事件链表中插入客户机迁移事件,则将迁移的客户机从本地的共生虚拟机列表中删除,再将客户机迁移事件从本地的事件链表中删除,然后向整个局域网段广播共生虚拟机迁移消息;
2.12)局域网中所有客户机接收到共生虚拟机迁移消息,根据共生虚拟机迁移消息的源地址判断来源是否是本客户机的宿主机,若是,则客户机向本地的事件链表中插入共生虚拟机迁移事件;
2.13)当客户机检测到本地的事件链表中插入共生虚拟机迁移事件时,则与迁移的客户机进行协商,且在协商完成后将迁移的客户机从本地的共生虚拟机列表中删除,并发送迁移协商完成消息给迁移的客户机;
2.14)迁移的客户机在收到所有共生虚拟机返回的迁移协商完成消息后,向本地的事件链表中插入迁移预处理完成事件;
2.15)当迁移的客户机检测到本地的事件链表中插入迁移预处理完成事件时,将自身迁移监测子模块唤醒,并由客户机操作系统和虚拟机监控器共同完成迁移的剩余步骤;
2.16)当客户机操作系统和虚拟机监控器共同完成迁移后,迁移的客户机对应域间共享存储系统目录节点/control/shutdown会重新变更为“”,当客户机监测对应域间共享存储系统目录节点/control/shutdown重新变更为“”后会向本地的事件链表中插入自身迁移完成事件;
2.17)当客户机检测到本地的事件链表中插入自身迁移完成事件后,跳转执行步骤2.3)以重新加入到共生虚拟机集合;
2.18)宿主机中的客户机根目录监视器向本地的事件链表中插入客户机关闭事件;
2.19)当宿主机检测到本地的事件链表中插入客户机关闭事件时,通过数据链路层向整个局域网段广播客户机关闭消息,再将关闭的客户机根目录监测器注销,然后将关闭的客户机从本地的共生虚拟机列表中删除;
2.20)局域网中所有客户机收到客户机关闭消息,查看消息源地址是否是本客户机所在物理机上的宿主机,如果是,则客户机向本地事件链表中插入共生虚拟机关闭事件;
2.21)当客户机检测到本地的事件链表中插入共生虚拟机关闭事件时,将关闭的客户机从本地的共生虚拟机列表中删除。
本发明透明的基于事件驱动的共生虚拟机动态发现方法具有下述优点:
1、本发明对虚拟机监控器和操作系统透明,所有功能以内核模块的方式被客户机和宿主机加载,并且不影响现有的客户机在线迁移功能。
2、本发明基于事件驱动机制,只有在出现某个事件时,系统才会进行响应,相比基于心跳机制的事后发现方法,有两大优点:(I)开销小。开销只跟云计算集群中虚拟机发生的事件个数相关,而不像基于心跳机制的事后发现方法中每个心跳周期都需要O(n2)的开销用于共生虚拟机动态发现,只有在共生虚拟机集合出现状态变更时才被触发以避免基于心跳机制共生虚拟机动态发现方法中开销过大的问题;(II)效率高。云计算集群中每出现某个事件使得共生虚拟机集合出现或将出现变化时,都能迅速做出响应,不存在基于心跳机制的事后发现方法中存在的云计算集群中各个客户机所维护的共生虚拟机集合成员信息更新滞后的情况,让客户机能及时动态发现当前物理机中共生虚拟机集合的变化,客户机发现共生虚拟机状态变更及时。
附图说明
图1为现有Xen虚拟化技术中宿主机和客户机的结构示意图。
图2为现有Xen虚拟化技术的云计算集群示意图。
图3为现有技术Xenloop的共生虚拟机动态发现方法示意图。
图4为本发明实施例方法的基本流程示意图。
图5为本发明实施例中事件链表和客户机事件链表的结构及事件类型示意图。
图6为本发明实施例中共生虚拟机列表的结构示意图。
图7为本发明实施例中的功能模块结构示意图。
具体实施方式
如图4所示,本实施例透明的基于事件驱动的共生虚拟机动态发现方法的步骤包括:
1)预先在宿主机和客户机中初始化建立用于记录宿主机和客户机待处理事件的事件链表和用于记录所在物理机节点的共生虚拟机信息的共生虚拟机列表;
2)在客户机加入共生虚拟机集合时向宿主机注册以实现对客户机的注册动作监控,在客户机中监测该客户机对应的/control/shutdown节点以实现对客户机的迁移动作监控,在宿主机中监测每个客户机所对应域间共享存储系统XenStore的根目录节点以实现对客户机的关闭动作监控,根据监控结果向宿主机和客户机的事件链表中写入动作相应的事件,并由宿主机和客户机分别执行本地事件链表中动作相应事件的处理以更新所在物理机节点的共生虚拟机列表。本实施例的基本思想是:客户机加入共生虚拟机集合时向宿主机注册,从而使得宿主机能够动态感知共生虚拟机集合的扩展(客户机的注册动作),在客户机中监测该客户机对应的/control/shutdown节点(通过xenbus_register_watch),从而动态感知自身迁移动作,并在感知虚拟机动态迁移事件时将事件以消息形式发送给宿主机,宿主机监测每个客户机所对应域间共享存储系统XenStore的根目录节点/local/domain/domid(domid即某个客户机的唯一标识号),当客户机出现异常或者关闭时,对应根目录会被删除,从而动态感知客户机关闭事件,根据监控结果向宿主机和客户机的事件链表中写入动作相应的事件,并由宿主机和客户机分别执行本地事件链表中动作相应事件的处理以更新所在物理机节点的共生虚拟机列表,从而实现基于事件驱动的共生虚拟机动态发现,使得共生虚拟机动态发现对虚拟机监控器和操作系统透明,所有功能以内核模块的方式被客户机和宿主机加载,并且不影响现有的客户机在线迁移功能,而且采用基于事件驱动机制,只有在出现某个事件时,系统才会进行响应,相比基于心跳机制的事后发现方法,具有开销小、效率高的优点。
如图5所示,步骤1)中的事件链表均包括事件记录和用于指向第一个事件记录的事件链表头指针,事件记录包括事件类型、事件信息和指向下一个事件记录的列表头list。
如图6所示,步骤1)中的共生虚拟机列表为包括哈希表表头和共生虚拟机列表项,哈希表表头包括多个表头项指针(表项~表项n),每一个表头项指针指向一个共生虚拟机列表项,共生虚拟机列表项包括作为共生虚拟机的客户机在物理机上的唯一标识号domid、客户机的数据链路层地址mac和用于指向下一个共生虚拟机列表项的列表头list,且宿主机中的共生虚拟机列表项还包含一项监测器指针,监测器指针指向宿主机用于监测客户机关闭事件的客户机根目录监测器。客户机根目录监测器用于宿主机监测客户机关闭事件,由于客户机没有该功能,因此客户机中共生虚拟机列表项中没有这一项。此外,共生虚拟机列表项还包括其他信息,其他信息是跟共生虚拟机动态发现机制具体应用场景相关,在此不再展开说明。
本实施例中,步骤2)的详细步骤包括:
2.1)预先在各个客户机上添加用于监测客户机加入到共生虚拟机集合的共生虚拟机注册子模块、用于检测客户机迁移的自身迁移监测子模块;预先在宿主机上添加用于检测各个客户机根目录是否被删除的客户机根目录监视器;
2.2)通过共生虚拟机注册子模块监测客户机是否加入共生虚拟机集合,通过自身迁移监测子模块检测客户机的/control/shutdown节点是否被写为“suspend”,通过客户机根目录监视器监测各个客户机根目录是否被删除;当共生虚拟机注册子模块监测到客户机加入到共生虚拟机集合时,跳转执行步骤2.3);当自身迁移监测子模块检测到客户机的/control/shutdown节点是否被写为“suspend”时,跳转执行步骤2.8);当客户机根目录监视器监测到某一个客户机的根目录被删除时,跳转执行步骤2.18);
2.3)共生虚拟机注册子模块通过数据链路层消息向整个局域网段广播注册消息;
2.4)局域网中所有宿主机接收到注册消息,通过查找域间共享存储系统XenStore目录节点下客户机信息判断广播注册消息的客户机是否与本宿主机处于同一物理机,若是,则宿主机在本地的事件链表中插入客户机注册事件;
2.5)如果宿主机检测到本地的事件链表中插入客户机注册事件,则将注册的客户机添加到本地的共生虚拟机列表中,为注册的客户机根目录注册监测器,并将新的共生虚拟机列表通过数据链路层消息发送给新注册的客户机,为新注册的客户机添加客户机根目录事件监测函数,最后将共生虚拟机添加消息通过数据链路层消息广播给整个局域网段;
2.6)局域网中所有客户机收到共生虚拟机添加消息,判断消息源地址是否是所在物理机的宿主机,如果是,客户机则在本地的事件链表中插入共生虚拟机添加事件;
2.7)如果客户机检测到本地的事件链表中插入共生虚拟机添加事件,则将添加的共生虚拟机加入到本地的共生虚拟机列表,返回步骤2.2);
2.8)客户机的自身迁移监测子模块在本地的事件链表中插入自身预迁移事件;
2.9)如果客户机本地的事件链表中插入自身预迁移事件,则通过数据链路层向宿主机发出客户机迁移消息,再将自身预迁移事件从本地的事件链表中删除;
2.10)宿主机收到客户机迁移消息后,向本地的事件链表中插入客户机迁移事件;
2.11)如果宿主机检测到本地的事件链表中插入客户机迁移事件,则将迁移的客户机从本地的共生虚拟机列表中删除,再将客户机迁移事件从本地的事件链表中删除,然后向整个局域网段广播共生虚拟机迁移消息;
2.12)局域网中所有客户机接收到共生虚拟机迁移消息,根据共生虚拟机迁移消息的源地址判断来源是否是本客户机的宿主机,若是,则客户机向本地的事件链表中插入共生虚拟机迁移事件;
2.13)当客户机检测到本地的事件链表中插入共生虚拟机迁移事件时,则与迁移的客户机进行协商,且在协商完成后将迁移的客户机从本地的共生虚拟机列表中删除,并发送迁移协商完成消息给迁移的客户机;
2.14)迁移的客户机在收到所有共生虚拟机返回的迁移协商完成消息后,向本地的事件链表中插入迁移预处理完成事件;
2.15)当迁移的客户机检测到本地的事件链表中插入迁移预处理完成事件时,将自身迁移监测子模块唤醒,并由客户机操作系统和虚拟机监控器共同完成迁移的剩余步骤;
2.16)当客户机操作系统和虚拟机监控器共同完成迁移后,迁移的客户机对应域间共享存储系统XenStore目录节点/control/shutdown会重新变更为“”,当客户机监测对应域间共享存储系统XenStore目录节点/control/shutdown重新变更为“”后会向本地的事件链表中插入自身迁移完成事件;
2.17)当客户机检测到本地的事件链表中插入自身迁移完成事件后,跳转执行步骤2.3)以重新加入到共生虚拟机集合;
2.18)宿主机中的客户机根目录监视器向本地的事件链表中插入客户机关闭事件;
2.19)当宿主机检测到本地的事件链表中插入客户机关闭事件时,通过数据链路层向整个局域网段广播客户机关闭消息,再将关闭的客户机根目录监测器注销,然后将关闭的客户机从本地的共生虚拟机列表中删除;
2.20)局域网中所有客户机收到客户机关闭消息,查看消息源地址是否是本客户机所在物理机上的宿主机,如果是,则客户机向本地事件链表中插入共生虚拟机关闭事件;
2.21)当客户机检测到本地的事件链表中插入共生虚拟机关闭事件时,将关闭的客户机从本地的共生虚拟机列表中删除。
如图7所示,本实施例在宿主机中构建共生虚拟机动态发现与发布模块,共生虚拟机动态发现与发布模块包括初始化子模块、客户机事件处理子模块、消息处理子模块和客户机根目录监测器;在客户机中构建共生虚拟机动态维护模块,共生虚拟机动态维护模块由共生虚拟机集合注册子模块、共生虚拟机事件处理子模块、消息处理子模块、虚拟机自身迁移监测子模块组成。
本实施例在宿主机中构建共生虚拟机动态发现与发布模块的过程如下:
S1.1)添加初始化子模块,初始化子模块用于将宿主机本地的事件链表和共生虚拟机列表初始化为空。
S1.2)添加客户机事件处理子模块。当宿主机本地的事件链表不为空时,则客户机事件处理子模块被触发,对客户机事件进行处理。客户机事件分为:(1)客户机注册事件,当出现该事件时,则将注册的客户机添加到共生虚拟机集合中,并将当前共生虚拟机集合通过数据链路层消息发送给该注册客户机。然后向系统为新注册的客户机根目录注册监视器,最后将共生虚拟机添加消息通过数据链路层消息广播给本物理机上所有共生虚拟机。(2)客户机迁移事件,当出现该事件时,则将客户机迁移事件通过数据链路层消息广播给所有客户机,然后将迁移客户机所对应的客户机根目录监测子模块注销(这样当客户机迁移完成后特权域不会感知客户机关闭事件),然后将迁移客户机对应元素从共生虚拟机集合中删除。(3)客户机关闭事件,当出现该事件时,则将客户机关闭事件广播给所有客户机,然后将关闭的客户机所对应元素从共生虚拟机集合中删除,再将关闭的客户机对应的根目录监视器注销。
S1.3)添加消息处理子模块。消息处理子模块用来接收客户机发来的消息,客户机发来的消息有:(1)“客户机注册消息”,由于客户机注册时并不知道对应的宿主机是哪个,因此会向整个局域网进行广播,宿主机收到“客户机注册消息”后,通过消息中的domid和MAC地址确定客户机是否与宿主机处于同一物理节点,如果是,则在事件队列中插入一个客户机注册事件。(2)客户机迁移消息,宿主机收到客户机迁移消息后,向事件队列插入一个客户机迁移事件。
本实施例在客户机中构建共生虚拟机动态维护模块的过程如下:
S2.1)添加共生虚拟机注册子模块21。共生虚拟机注册子模块在共生虚拟机动态维护模块第一次被动态加载时或每次迁移完成后被触发。共生虚拟机注册子模块通过数据链路层向整个局域网广播注册消息,当收到宿主机应答消息,获取共生虚拟机集合和宿主机MAC地址后,注册完成。
S2.2)添加共生虚拟机事件处理子模块。当共生虚拟机事件链表不为空时,共生虚拟机事件处理子模块被触发。共生虚拟机事件有:(1)共生虚拟机添加事件,当发现共生虚拟机添加事件,则将添加的共生虚拟机加入到共生虚拟机集合中,再将共生虚拟机添加事件从事件链表中删除。(2)共生虚拟机迁移事件,当发现共生虚拟机迁移事件,则进行迁移处理(具体处理方式跟具体使用情况相关),处理完成后,将迁移的共生虚拟机从共生虚拟机集合中删除,再将共生虚拟机迁移事件从事件链表中删除。(3)共生虚拟机关闭事件,当发现共生虚拟机关闭事件,则将关闭的共生虚拟机从共生虚拟机集合中删除,再将共生虚拟机关闭事件从事件链表中删除。(4)自身迁移事件,则向宿主机发送客户机迁移消息,等待迁移预处理完成。(5)迁移预处理完成事件,则唤醒自身迁移监测子模块。(6)自身迁移完成事件,则触发共生虚拟机注册子模块进行重新注册。
S2.3)添加消息处理子模块,消息处理子模块用于接收宿主机广播的共生虚拟机消息,每次收到广播的消息后,都要查看源地址是否是客户机所在物理机上宿主机的MAC地址(这是因为其它宿主机与其上各个客户机可能处于同一局域网段,而这里仅处理来自本物理机上宿主机和客户机的消息),若是,则进行处理。处理的共生虚拟机消息有:(1)共生虚拟机添加消息,则向事件链表中添加共生虚拟机添加事件,触发共生虚拟机事件处理子模块进行处理。(2)共生虚拟机迁移消息,则向事件链表中添加共生虚拟机迁移事件,触发共生虚拟机事件处理子模块进行处理。(3)共生虚拟机关闭消息,则向事件链表中添加共生虚拟机关闭事件,触发共生虚拟机事件处理子模块进行处理。
S2.4)添加自身迁移监测子模块24,自身迁移监测子模块对客户机的/control/shutdown目录节点进行监测,在虚拟机迁移前,会将该目录节点值变更为“suspend”,当虚拟机完成迁移后,会将该目录节点值变更为“”。每次节点值发生变化时,自身迁移子模块被触发,当发现值变更为“suspend”,则认为虚拟机发生迁移事件,向事件队列中插入自身迁移事件,然后阻塞,直到自身迁移预处理时间完成后被唤醒。当值重新变更为“”,则认为虚拟机迁移完成,向事件队列中插入自身迁移完成事件。
在宿主机中使用insmod命令动态加载共生虚拟机动态发现与发布模块,在客户机中使用insmod命令动态加载共生虚拟机动态维护模块。宿主机中的共生虚拟机动态发现与发布模块和客户机中共生虚拟机动态维护模块相互配合,完成基于事件驱动的共生虚拟机的动态发现,其具体过程如下:
S3.1)共生虚拟机添加,对于共生虚拟机添加事件,系统响应过程如下:
S3.1.1)某客户机加入到共生虚拟机集合,其共生虚拟机注册子模块通过数据链路层消息向整个局域网段广播注册消息。
S3.1.2)局域网中所有宿主机的共生虚拟机动态发现与发布模块中的消息处理子模块接收到注册消息,通过查找域间共享存储系统XenStore目录节点下客户机的MAC地址与domid配置信息判断注册客户机是否与宿主机处于同一物理机(MAC地址在局域网中唯一性确定,有且仅有一台宿主机能确定与注册客户机处于同一物理节点),若是,宿主机在事件链表中插入客户机注册事件。
S3.1.3)宿主机中客户机事件处理子模块对客户机注册事件进行处理,如1.2.1所述,将注册的客户机添加到共生虚拟机集合中,然后向系统为注册的客户机根目录注册监测器,并将当前共生虚拟机集合通过数据链路层消息发送给该注册客户机。然后,为新注册的客户机添加客户机根目录事件监测函数,最后将共生虚拟机添加消息通过数据链路层消息广播给局域网中所有客户机。
S3.1.4)局域网中所有客户机的共生虚拟机维护模块中消息处理子模块都会收到共生虚拟机添加消息,其消息处理子模块会判断消息源地址是否是所在物理机的宿主机(这保证了只有同所添加客户机存在共生关系的客户机才会进行进一步处理),如果是,客户机则在事件链表中插入共生虚拟机添加事件。
S3.1.5)客户机共生虚拟机维护模块中的事件处理子模块对共生虚拟机添加事件进行处理,将添加的共生虚拟机加入到共生虚拟机集合。
S3.2)共生虚拟机迁移,对于共生虚拟机迁移事件,系统响应过程如下:
S3.2.1)在客户机迁移完成前的时刻,系统会将客户机对应的/control/shutdown节点写为“suspend”,此时客户机中的共生虚拟机维护模块中的自身迁移监测子模块会被触发,在事件链表中插入一个自身预迁移事件,等待迁移预处理完成事件。
S3.2.2)客户机中事件处理子模块收到自身预迁移事件后,通过数据链路层向宿主机发出客户机迁移消息,再将自身预迁移事件从事件链表中删除。
S3.2.3)宿主机中消息处理子模块接收到客户机迁移消息后,向事件链表中插入一个客户机迁移事件。
S3.2.4)宿主机中事件处理子模块接收到客户机迁移事件后,将迁移的客户机从共生虚拟机集合中删除,再将客户机迁移事件从事件链表中删除,然后向局域网广播共生虚拟机迁移消息。
S3.2.5)局域网中所有客户机的共生虚拟机维护模块中的消息处理子模块接收到共生虚拟机迁移消息,根据消息源地址判断是否是本客户机的宿主机,若是,则向事件链表中插入共生虚拟机迁移事件。
S3.2.6)客户机的事件处理子模块收到共生虚拟机迁移事件后,与迁移的客户机进行协商(具体协商过程与具体应用相关),协商完成后,客户机将迁移的客户机从共生虚拟机集合中删除,并发送一个迁移协商完成消息给迁移的客户机。
S3.2.7)迁移的客户机的消息处理子模块收到所有共生虚拟机的迁移协商完成消息后,向事件链表中插入一个迁移预处理完成事件。
S3.2.8)迁移的客户机的事件处理子模块收到迁移预处理完成事件后,将自身迁移监测子模块唤醒,接下来交由客户机操作系统和虚拟机M共同完成迁移的剩余步骤。
S3.2.9)迁移完成后,迁移的客户机对应域间共享存储系统XenStore目录节点/control/shutdown会重新变更为“”,客户机自身迁移子模块监测到这一变化后会向事件链表中插入自身迁移完成事件。
S3.2.10客户机的事件处理子模块收到自身迁移完成事件后,向系统重新注册,接下来系统响应步骤如3.1所述。
S3.3)共生虚拟机关闭,对于共生虚拟机关闭事件,系统响应过程如下:
S3.3.1)当共生虚拟机关闭后,关闭的客户机所对应的根目录也会从域间共享存储系统XenStore中删除,此时宿主机共生虚拟机动态发现与发布模块中注册的客户机根目录监视器会监测到这一变化,向事件链表中插入客户机关闭事件。
3.3.2)宿主机中事件处理子模块收到这一事件后,通过数据链路层向整个局域网中广播客户机关闭消息,再将关闭的客户机根目录监测器注销,然后将关闭的客户机从共生虚拟机集合中删除。
S3.3.3)局域网中所有客户机的消息处理子模块都会收到客户机关闭的消息,通过查看消息源地址是否是本客户机所在物理机上的宿主机MAC地址来判断是否进一步处理,如果是,则向事件链表中插入一个共生虚拟机关闭事件。
S3.3.4)客户机的事件处理子模块收到共生虚拟机关闭事件,将关闭的共生虚拟机从共生虚拟机集合中删除。
若某个客户机停止使用该功能,则在客户机使用rmmod命令卸载共生虚拟机动态维护模块时发送客户机迁移消息给宿主机,处理过程同S3.2),不同点在于对于停止使用,不再重新注册。若整个系统需要停止使用本实施例的功能,则需要待所有客户机卸载共生虚拟机动态维护模块后,宿主机再使用rmmod命令卸载共生虚拟机动态发现与发布模块。
综上所述,本实施例通过监测客户机所对应域间共享存储系统XenStore中的目录节点,截获虚拟机状态变更,再通过一种在数据链路层自定义的消息协议,将事件广播给物理机上所有客户机,让其它客户机都能及时发现所在物理节点上客户机状态变更事件,只有在共生虚拟机集合出现状态变更时才被触发,克服了现有技术基于心跳机制共生虚拟机动态发现方法中开销过大的问题,让客户机能及时动态发现当前物理节点中共生虚拟机集合的变化。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种透明的基于事件驱动的共生虚拟机动态发现方法,其特征在于步骤包括:
1)预先在宿主机和客户机中初始化建立用于记录宿主机和客户机待处理事件的事件链表和用于记录所在物理机节点的共生虚拟机信息的共生虚拟机列表;
2)在客户机加入共生虚拟机集合时向宿主机注册以实现对客户机的注册动作监控,在客户机中监测该客户机对应的/control/shutdown节点以实现对客户机的迁移动作监控,在宿主机中监测每个客户机所对应域间共享存储系统的根目录节点以实现对客户机的关闭动作监控,根据监控结果向宿主机和客户机的事件链表中写入动作相应的事件,并由宿主机和客户机分别执行本地事件链表中动作相应事件的处理以更新所在物理机节点的共生虚拟机列表。
2.根据权利要求1所述的透明的基于事件驱动的共生虚拟机动态发现方法,其特征在于,所述步骤1)中的事件链表均包括事件记录和用于指向第一个事件记录的事件链表头指针,所述事件记录包括事件类型、事件信息和指向下一个事件记录的列表头。
3.根据权利要求2所述的透明的基于事件驱动的共生虚拟机动态发现方法,其特征在于,所述步骤1)中的共生虚拟机列表为包括哈希表表头和共生虚拟机列表项,所述哈希表表头包括多个表头项指针,每一个表头项指针指向一个共生虚拟机列表项,所述共生虚拟机列表项包括作为共生虚拟机的客户机在物理机上的唯一标识号、客户机的数据链路层地址和用于指向下一个共生虚拟机列表项的列表头,且所述宿主机中的共生虚拟机列表项还包含一项监测器指针,所述监测器指针指向宿主机用于监测客户机关闭事件的客户机根目录监测器。
4.根据权利要求1或2或3所述的透明的基于事件驱动的共生虚拟机动态发现方法,其特征在于,所述步骤2)的详细步骤包括:
2.1)预先在各个客户机上添加用于监测客户机加入到共生虚拟机集合的共生虚拟机注册子模块、用于检测客户机迁移的自身迁移监测子模块;预先在宿主机上添加用于检测各个客户机根目录是否被删除的客户机根目录监视器;
2.2)通过共生虚拟机注册子模块监测客户机是否加入共生虚拟机集合,通过自身迁移监测子模块检测客户机的/control/shutdown节点是否被写为“suspend”,通过客户机根目录监视器监测各个客户机根目录是否被删除;当共生虚拟机注册子模块监测到客户机加入到共生虚拟机集合时,跳转执行步骤2.3);当自身迁移监测子模块检测到客户机的/control/shutdown节点是否被写为“suspend”时,跳转执行步骤2.8);当客户机根目录监视器监测到某一个客户机的根目录被删除时,跳转执行步骤2.18);
2.3)共生虚拟机注册子模块通过数据链路层消息向整个局域网段广播注册消息;
2.4)局域网中所有宿主机接收到注册消息,通过查找域间共享存储系统目录节点下客户机信息判断广播注册消息的客户机是否与本宿主机处于同一物理机,若是,则宿主机在本地的事件链表中插入客户机注册事件;
2.5)如果宿主机检测到本地的事件链表中插入客户机注册事件,则将注册的客户机添加到本地的共生虚拟机列表中,为注册的客户机根目录注册监测器,并将新的共生虚拟机列表通过数据链路层消息发送给新注册的客户机,为新注册的客户机添加客户机根目录事件监测函数,最后将共生虚拟机添加消息通过数据链路层消息广播给整个局域网段;
2.6)局域网中所有客户机收到共生虚拟机添加消息,判断消息源地址是否是所在物理机的宿主机,如果是,客户机则在本地的事件链表中插入共生虚拟机添加事件;
2.7)如果客户机检测到本地的事件链表中插入共生虚拟机添加事件,则将添加的共生虚拟机加入到本地的共生虚拟机列表,返回步骤2.2);
2.8)客户机的自身迁移监测子模块在本地的事件链表中插入自身预迁移事件;
2.9)如果客户机本地的事件链表中插入自身预迁移事件,则通过数据链路层向宿主机发出客户机迁移消息,再将自身预迁移事件从本地的事件链表中删除;
2.10)宿主机收到客户机迁移消息后,向本地的事件链表中插入客户机迁移事件;
2.11)如果宿主机检测到本地的事件链表中插入客户机迁移事件,则将迁移的客户机从本地的共生虚拟机列表中删除,再将客户机迁移事件从本地的事件链表中删除,然后向整个局域网段广播共生虚拟机迁移消息;
2.12)局域网中所有客户机接收到共生虚拟机迁移消息,根据共生虚拟机迁移消息的源地址判断来源是否是本客户机的宿主机,若是,则客户机向本地的事件链表中插入共生虚拟机迁移事件;
2.13)当客户机检测到本地的事件链表中插入共生虚拟机迁移事件时,则与迁移的客户机进行协商,且在协商完成后将迁移的客户机从本地的共生虚拟机列表中删除,并发送迁移协商完成消息给迁移的客户机;
2.14)迁移的客户机在收到所有共生虚拟机返回的迁移协商完成消息后,向本地的事件链表中插入迁移预处理完成事件;
2.15)当迁移的客户机检测到本地的事件链表中插入迁移预处理完成事件时,将自身迁移监测子模块唤醒,并由客户机操作系统和虚拟机监控器共同完成迁移的剩余步骤;
2.16)当客户机操作系统和虚拟机监控器共同完成迁移后,迁移的客户机对应域间共享存储系统目录节点/control/shutdown会重新变更为“”,当客户机监测对应域间共享存储系统目录节点/control/shutdown重新变更为“”后会向本地的事件链表中插入自身迁移完成事件;
2.17)当客户机检测到本地的事件链表中插入自身迁移完成事件后,跳转执行步骤2.3)以重新加入到共生虚拟机集合;
2.18)宿主机中的客户机根目录监视器向本地的事件链表中插入客户机关闭事件;
2.19)当宿主机检测到本地的事件链表中插入客户机关闭事件时,通过数据链路层向整个局域网段广播客户机关闭消息,再将关闭的客户机根目录监测器注销,然后将关闭的客户机从本地的共生虚拟机列表中删除;
2.20)局域网中所有客户机收到客户机关闭消息,查看消息源地址是否是本客户机所在物理机上的宿主机,如果是,则客户机向本地事件链表中插入共生虚拟机关闭事件;
2.21)当客户机检测到本地的事件链表中插入共生虚拟机关闭事件时,将关闭的客户机从本地的共生虚拟机列表中删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610025913.8A CN105704217B (zh) | 2016-01-15 | 2016-01-15 | 一种透明的基于事件驱动的共生虚拟机动态发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610025913.8A CN105704217B (zh) | 2016-01-15 | 2016-01-15 | 一种透明的基于事件驱动的共生虚拟机动态发现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105704217A true CN105704217A (zh) | 2016-06-22 |
CN105704217B CN105704217B (zh) | 2018-09-25 |
Family
ID=56226622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610025913.8A Active CN105704217B (zh) | 2016-01-15 | 2016-01-15 | 一种透明的基于事件驱动的共生虚拟机动态发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105704217B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368369A (zh) * | 2017-06-27 | 2017-11-21 | 中国联合网络通信集团有限公司 | 分布式容器管理方法及系统 |
CN107566319A (zh) * | 2016-06-30 | 2018-01-09 | 中央大学 | 虚拟机器即时转移方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100175063A1 (en) * | 2009-01-05 | 2010-07-08 | International Business Machines Corporation | Detection and Management of Dynamic Migration of Virtual Environments |
CN104615485A (zh) * | 2015-03-02 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 一种虚拟机域间通信模式的动态透明切换方法 |
-
2016
- 2016-01-15 CN CN201610025913.8A patent/CN105704217B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100175063A1 (en) * | 2009-01-05 | 2010-07-08 | International Business Machines Corporation | Detection and Management of Dynamic Migration of Virtual Environments |
CN104615485A (zh) * | 2015-03-02 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 一种虚拟机域间通信模式的动态透明切换方法 |
Non-Patent Citations (3)
Title |
---|
YI REN等: "A Fast and Transparent Communication Protocol for Co-Resident Virtual Machines", 《8TH IEEE INTERNATIONAL CONFERENCE ON COLLABORATIVE COMPUTING (COLLABORATECOM2012)》 * |
YI REN等: "Residency-Aware Virtual Machine Communication Optimization_ Design Choices and Techniques", 《2013 IEEE SIXTH INTERNATIONAL CONFERENCE ON CLOUD COMPUTING》 * |
任怡等: "一种支持在线迁移的虚拟机间快速通信方法", 《解放军理工大学学报(自然科学版)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107566319A (zh) * | 2016-06-30 | 2018-01-09 | 中央大学 | 虚拟机器即时转移方法 |
CN107368369A (zh) * | 2017-06-27 | 2017-11-21 | 中国联合网络通信集团有限公司 | 分布式容器管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105704217B (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10255147B2 (en) | Fault tolerance for containers in a virtualized computing environment | |
Choudhary et al. | A critical survey of live virtual machine migration techniques | |
US10635558B2 (en) | Container monitoring method and apparatus | |
CN110865867B (zh) | 应用拓扑关系发现的方法、装置和系统 | |
US10990467B2 (en) | Accessing computing resource attributes of an external service provider | |
US9823842B2 (en) | Gang migration of virtual machines using cluster-wide deduplication | |
US8856585B2 (en) | Hardware failure mitigation | |
US9372726B2 (en) | Gang migration of virtual machines using cluster-wide deduplication | |
US10678583B2 (en) | Guest controlled virtual device packet filtering | |
US9582221B2 (en) | Virtualization-aware data locality in distributed data processing | |
US9489230B1 (en) | Handling of virtual machine migration while performing clustering operations | |
US9183046B2 (en) | Network address retrieval for live migration of a guest system in a virtual machine system | |
US11340807B2 (en) | Mounting a shared data store of a server cluster on a client cluster for use as a remote data store | |
CN107707622B (zh) | 一种访问桌面云虚拟机的方法、装置及桌面云控制器 | |
US20120159473A1 (en) | Early network notification in live migration | |
US20140044134A1 (en) | Duplicate mac address detection | |
US11409621B2 (en) | High availability for a shared-memory-based firewall service virtual machine | |
Jo et al. | Transparent fault tolerance of device drivers for virtual machines | |
US20190296962A1 (en) | Storage system for network information | |
Perkov et al. | High-availability using open source software | |
CN105704217A (zh) | 一种透明的基于事件驱动的共生虚拟机动态发现方法 | |
US8898314B2 (en) | Direct communication between applications in a cloud computing environment | |
Szalay et al. | Annabelladb: Key-value store made cloud native | |
Sano et al. | A cyber attack-resilient server inspired by biological diversity | |
Kawahara et al. | The Continuity of Out-of-band Remote Management across Virtual Machine Migration in Clouds |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |