肖军 李春鸣 潘丹
摘 要:伴随着社会经济的快速发展,计算机技术得到了很大进步。用户数据的增多给计算机通信技术带来了很大压力,为了缓解这种压力提高通信的速度,我们采取虚拟机通信技术,而当前基于内存共享的虚拟机技术是不能够满足当前复杂的网络通信要求。对于这个问题,实现同一个计算机上多个虚拟机之间的通信,提出了支持在线迁移的虚拟机通信方法,通过引入加速内存模块以及改进现有的监控器,构造出了支持RLMCom的虚拟机系统。通过改进数据传输、系统关闭等方面来支持在线系统。与其他虚拟机系统相比,该系統具有很大的优势,不仅能够提高通信效率而且还能够保证通信的准确性。文章就针对这项技术进行相关研究,给该领域的人员提供一定的借鉴。
关键词:在线迁移;虚拟机间通信;共享内存;编程透明
1 RLMCom虚拟机系统结构和组成
1.1总体结构
由于一台计算机中可以存在多个虚拟机,这些虚拟机的通信方法是不同的,为了能够方便通信传输,整合多个虚拟机,文章提出了RLMCom的通信方法,该方法能够快速提高通信传输速度。为了能够让该系统在计算机上使用,需要对已经存在的虚拟机进行改进,直到能够支持RLMCom虚拟机系统。具体的结构图如图1。
1.2 系统组成
从构建支持RLMCom的虚拟机系统的角度,图1中主要模块的组成及其工作原理如下。
1.2.1 虚拟机监控器VMM。虚拟机组管理子模块将所有VM进行全局分组管理,具有相同组ID的VM构成一个虚拟机组,当通信双方VM在同一虚拟机组时,采用基于共享内存的加速方法来加速通信。在VM启动或关闭时调用通告管理子模块为虚拟机组创建或删除事件缓冲区。通告管理子模块在VM启动或关闭时被虚拟机组管理子模块调用为虚拟机组创建或回收事件缓冲区。通告管理子模块还登记和缓存来自VM的请求对应的事件,并通过通告加速模块的通告处理子模块向目标VM发送事件。在线迁移子模块保留Xen VMM在线迁移子模块的在线迁移功能,并添加迁移辅助处理功能到在线迁移子模块中。在通信加速内核模块被加载时,添加的迁移辅助处理功能被初始化子模块激活,生成VM的当前位置号(虚拟机系统中每个VM唯一的位置标志信息)并更新VMM的当前位置号表,调用通信加速内核模块的VM迁移支持子模块,使后者获取该VM当前位置号的一个拷贝,用于在数据传输和连接关闭时判断VM是否发生了迁移;在接收到外部在线迁移命令并通过原有在线迁移功能完成VM的迁移后,在线迁移子模块将当前VM迁移前所在物理计算机上的源VMM中保存的连接控制块、已发送和已接收字节数同步到迁移后的目标VMM中,目标VMM的在线迁移子模块生成被迁移VM的当前位置号,更新当前位置号表中的信息。
1.2.2 客户操作系统中通信加速内核模块
(1)初始化子模块。该模块一般都会在客户操作系统加载内核模块之后被系统,它会最先调用不同虚拟机之间的管理模块来创建并注册客户操作系统,然后会向内存共享模块发出请求,然后建立一个内存缓存区。之后还会调用在线迁移模块生成客户操作系统的位置号并更新整个位置号表。此外,还会调用客户操作系统中的迁移模块,并维护客户操作系统中位置号,同时还会拷贝这个位置号。在系统调用这些程序的时候还会调用分析器模块并进行加速通信的模式。初始化子模块能够为RLMCom系统提供一个开始环境。(2)系统调用分析器子模块。该系统模块主要是对不同的计算机客户操作系统间通信截获向系统调用请求,在这种情况下仍可以使用传统的处理机制,如果在同一个计算机里客户操作系统间的通信则通常会使用连接管控模块和数据传输模块进行关闭或者创建等操作。(3)连接管控子模块。这部分模块主要是负责网络通信之间的信息维护管理,为用户提供可控的数据结构并连接所有的组织控制模块。(4)通告处理子模块。该部分模块主要是中断事件注入模块以及通关管理模块,同时读取缓存区内的事件,并获取事件之间的相关性,根据具体的事件类型来唤醒客户操作系统接受数据,并关闭另一方的客户操作系统的网络连接。(5)数据传输管理子模块。这部分的模块主要是处理数据之间的接收和发送请求。通过客户操作系统中的迁移支持模块对在线迁移活动进行判断,一旦发生了迁移情况,那么就很容易出现丢失数据,需要重新连接数据,如果没发生迁移,那么就可以接到连接控制块的信息,进而能够共享缓存区的信息。
2 支持在线迁移的关键流程
2.1 主要数据结构
通过和管控模块连接主要是为了能够维护和管理好网络信息,能够为在同一计算机上的客户操作系统之间的网络信息建立起可控模块。连接控制块主要包括了通信双方的客户操作系统的IP地址、阻塞式和非阻塞式的标志位、发送缓存区和接受缓存区、等待发送的队列以及等待接受的队列。这些所有的部分相互链接就能够形成连接管控子模块,在这个模块中的每一项都会有一个连接的ID号。
2.2 基于共享内存的数据和控制信息
客户操作系统中的通信双方可以通过虚拟机系统内的共享内存进行信息的交互,使得通信双方通信更加便捷。客户操作系统中的一方发送的信息和另一方发送的信息都会存储在缓存区内并能够实现共享。在客户操作系统中的连接建立时就会自动创建连接控制块,这部分主要就是为了存储同一台计算机内的信息资源,当连接被关闭时信息也同时会被删除。客户操作系统双方是通过事件进行通信的,当事件被存储在缓存区内,客户操作系统中的信息处理模块就会自动读取缓存区内的事件。
2.3 接收到外部迁移命令时控制信息的同步和更新
当客户操作系统接收到来自外界用户输入的在线迁移命令之后,在线迁移模块就会自动完成客户操作系统的迁移,由迁移辅助处理系统则会把当前客户操作系统迁移之前的一些数据保存在连接控制块中,并对已经发送和已经同比的数据迁移到指定区域内,同时还会通知在线迁移模块生成客户操作系统当前的位置号码,并直接更新位置号码表中的信息。通过上面的这些操作就能够保证虚拟机接收到的信息和当前客户操作系统中在线迁移的信息保持一致,这也就能够提高数据的准确性。
2.4 关键流程
在客户操作系统实际应用的过程中,通信内核需要接受来自程序以及外部的系统命令的调用,然后转发给系统内部其他的应用模块,系统通过分析器能够先排除掉和用户需要的网络操作没有关系的调用,之后再对有关系的网络操作进行细致的分析和处理,之后会对一台计算机中每个虚拟机中的操作系统进行分享内存中的通信。假如当前的调用系统是网络连接,那么控制子模块就会先对计算机获得的客户操作系统ID以及计算机本身的地址,然后会再判断虚拟机之间的ID是否一样,如果不一样,那么就不用进行加速通信操作,就按照正常的网络连接操作处理;如果虚拟机之间的ID是一样的,那么就需要判断双方是不是真的在同一台计算机上,如果不处在同一台计算机内。那么就需要按照正常的网络连接处理,要不就需要进行初始化数据的操作流程。
3 结束语
文章通过对当前最为常用的一种支持在线迁移的虚拟机通信方法进行分析,进一步提高了数据通信技术。和其他通信方法相比,该方法不仅能够支持用户的透明数据,同时还能够实现在线迁移,而且无需修改操作内核。这种方法在通信领域中的应用能够提高虚拟机之间的通信速度,提高通信质量。