虚拟机串口的通信方法及装置制造方法

文档序号:7805892阅读:187来源:国知局
虚拟机串口的通信方法及装置制造方法
【专利摘要】本发明公开一种虚拟机串口的通信方法及装置,通过虚拟机各串口对应的串口代理程序及虚拟机运行的物理主机对应的主机代理程序实现虚拟机的串口通信。本发明实施例虚拟机之间的串口通信通过代理程序来实现,相较于现有技术中,虚拟机串口间通过socket、管道、文件等方式进行通信,本发明实施例无需关心串口客户端虚拟机及服务端虚拟机的问题,只需指定与之相连的串口代理程序即可,配置简单、操作便捷,且在物理主机对应的IP地址发生改变时,也丝毫不影响虚拟机之间的通信,提高虚拟机串口通信的便捷性、智能性和易维护性。
【专利说明】虚拟机串口的通信方法及装置

【技术领域】
[0001] 本发明涉及虚拟化技术,尤其涉及一种虚拟机串口的通信方法及装置。

【背景技术】
[0002] 通过虚拟化技术一台物理主机可以虚拟出多台虚拟机,而虚拟机之间并不能使用 数据线连接,但可以让两台虚拟机之间进行串口通信;目前常用的做法是将虚拟机串口重 定向到一个通信管道、socket(插口)、真实串口等;但这种重定向的方式只能选择其中一 个虚拟机作为服务端,另一个虚拟机为客户端,且服务端虚拟机必须先于客户端虚拟机启 动;若客户端先启动,可能启动失败或无法与服务端建立通信;此时必须关闭客户端虚拟 机,按先服务端虚拟机后客户端虚拟机的顺序重启虚拟机才能使用。当需要建立跨物理机 上的虚拟机间串口通信时,需要指定物理机的IP地址;一旦物理机的IP地址发生变化则上 述虚拟机之间将无法建立连接。且上述实现方式对于动态获取IP地址的物理机来说基本 不可用。
[0003] 因此可见,虚拟机之间直接重定向串口的通信方案配置困难,可用性很差;且跨物 理主机的虚拟机之间进行串口通信时需要指定主机的IP地址,一旦主机的IP地址更改则 无法进行通信,可维护性差。


【发明内容】

[0004] 鉴于以上内容,有必要提供一种虚拟机串口的通信方法及装置,使得虚拟机之间 的串口通信无需指定服务端虚拟机和客户端虚拟机且不受物理机IP地址的影响。
[0005] 本发明实施例公开了一种虚拟机串口的通信方法,包括以下步骤:
[0006] 第一串口代理程序在启动时从对应的配置参数中,识别与所述第一串口通信连接 的第二虚拟机以及所述第二虚拟机所运行的物理主机;
[0007] 第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口数据,根据 识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所 述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数 据转发至所述第二虚拟机对应的第二串口代理程序;
[0008] 所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操 作系统从所述第二串口读取所述串口数据。
[0009] 优选地,所述根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代 理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,包括:
[0010] 当识别出所述第二虚拟机与第一虚拟机运行在同一物理主机上时,所述第一串口 代理程序将串口数据发送至同一物理主机对应的所述主机代理程序。
[0011] 优选地,所述根据识别出的所述第二虚拟机运行的物理主机,所述第一串口代理 程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理 程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序,包括 :
[0012] 当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,所述第一串口 代理程序将串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程 序;
[0013] 所述第一主机代理程序接收所述串口数据,将所述串口数据以及包含用于识别所 述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机代 理程序;
[0014] 所述第二主机代理程序根据所述标识信息,将接收的所述串口数据转发至所述第 二虚拟机对应的第二串口代理程序。
[0015] 优选地,所述第一串口代理程序在启动时从对应的配置参数中,识别与所述第一 串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机,之前还包括 :
[0016] 响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所述物理主 机上所述虚拟机各串口分别对应的串口代理程序。
[0017] 优选地,所述启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟 机的同时启动对应的所述串口代理程序。
[0018] 本发明实施例还公开一种虚拟机串口的通信装置,所述虚拟机串口的通信装置上 运行有串口代理程序以及主机代理程序;
[0019] 所述虚拟机串口的通信装置包括:
[0020] 识别模块,用于在启动第一串口代理程序时,从对应的配置参数中识别与所述第 一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
[0021] 发送模块,用于:
[0022] 基于运行的第一串口代理程序,接收第一虚拟机操作系统通过第一串口发送的串 口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口 数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收 的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
[0023] 基于所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟 机操作系统从所述第二串口读取所述串口数据。
[0024] 优选地,所述发送模块还用于:
[0025] 当识别出所述第二虚拟机与第一虚拟机运行在同一物理主机上时,基于所述第一 串口代理程序将串口数据发送至同一物理主机对应的所述主机代理程序。
[0026] 优选地,所述发送模块还用于:
[0027] 当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,基于所述第一 串口代理程序将串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代 理程序;
[0028] 基于所述第一主机代理程序,接收所述串口数据,将所述串口数据以及包含用于 识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二 主机代理程序;
[0029] 基于所述第二主机代理程序,根据所述标识信息,将接收的所述串口数据转发至 所述第二虚拟机对应的第二串口代理程序。
[0030] 优选地,所述虚拟机串口的通信装置还包括:
[0031] 启动模块,用于响应用户触发的操作指令,启动物理主机对应的主机代理程序,以 及所述物理主机上所述虚拟机各串口分别对应的串口代理程序。
[0032] 优选地,所述启动模块还用于:
[0033] 启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟机的同时启动 对应的所述串口代理程序。
[0034] 本发明实施例虚拟机之间的串口通信通过代理程序来实现,相较于现有技术中, 虚拟机串口间通过socket、管道、文件等方式进行通信,本发明实施例无需关心串口客户端 虚拟机及服务端虚拟机的问题,只需指定与之相连的串口代理程序即可,配置简单、操作便 捷。

【专利附图】

【附图说明】
[0035] 图1是本发明虚拟机串口的通信方法第一实施例流程示意图;
[0036] 图2是本发明虚拟机串口的通信方法第一实施例对应的虚拟机运行环境结构示 例图;
[0037] 图3是本发明虚拟机串口的通信方法第二实施例流程示意图;
[0038] 图4是本发明虚拟机串口的通信方法第二实施例对应的串口间通信时序图;
[0039] 图5是本发明虚拟机串口的通信方法第三实施例流程示意图;
[0040] 图6是本发明虚拟串口的通信装置第一实施例功能模块示意图;
[0041] 图7是本发明虚拟串口的通信装置第二实施例功能模块示意图。
[0042] 本发明实施例目的的实现、功能特点及优点将结合实施例,参照附图做进一步说 明。

【具体实施方式】
[0043] 以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此 处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0044] 本发明虚拟机串口的通信方法及装置中,所述虚拟机可以理解为通过软件模拟的 具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,且一台高性能 的物理主机上可以虚拟出多台虚拟机。所述虚拟机操作系统可以理解为所述虚拟机运行的 系统,比如Guest系统等。所述串口即串行接口的简称,也成为串行通信接口,是采用串行 通信方式的扩展接口比如常用的COM (Component Object Mode,组件对象模型)接口;串口 可以应用于两台通信设备或者两台计算机之间的互联及数据传输,串口也可以通过直接电 缆连接的方式实现双机互联。本发明下述实施例对以上内容均不再赘述。
[0045] 本发明提供了一种虚拟机串口的通信方法第一实施例;本实施例中,基于串口进 行通信的两台虚拟机运行在同一物理主机上;如图1所示,本发明虚拟机串口的通信方法 包括以下步骤:
[0046] 步骤S01、第一串口代理程序在启动时,从对应的配置参数中,识别与所述第一串 口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
[0047] 本实施例中,将第一虚拟机操作系统、第一虚拟机、第一串口、第一串口代理程序 分别对应简称为:虚拟机A操作系统、虚拟机A、串口 A、串口 A代理程序;同样地,将第二虚 拟机操作系统、第二虚拟机、第二串口、第二串口代理程序分别对应简称为:虚拟机B操作 系统、虚拟机B、串口 B、串口 B代理程序。
[0048] 虚拟机A通过虚拟机A操作系统向串口 A写入串口数据,并将写入的串口数据通 过串口 A发送至串口 A代理程序;串口 A代理程序在启动时,从对应的配置参数中可以识别 出与该串口 A进行通讯连接的虚拟机;比如,串口 A识别出该虚拟机为虚拟机B,以及该虚 拟机B所运行的物理主机、该虚拟机B所对应的串口 B来接收对应的串口数据等信息。本 实施例中所述的配置参数可以理解为:所述第一串口代理程序的启动参数,或者运行第一 串口代理程序的第一虚拟机的配置参数。
[0049] 步骤S02、第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口 数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数 据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的 所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
[0050] 串口 A代理程序接收虚拟机A操作系统通过该串口 A发送的串口数据后,串口 A 代理程序根据识别出的所述第二虚拟机比如虚拟机B所运行的物理主机,将上述串口数据 发送至虚拟机B所运行的物理主机对应的主机代理程序;本发明实施例以虚拟机A和虚拟 机B运行在同一物理主机上为例进行描述;串口 A代理程序根据识别出的虚拟机B所运行 的物理主机与该虚拟机A运行的物理主机为同一物理主机上时,串口 A代理程序将对应的 串口数据发送至该物理主机的主机代理程序上。该主机代理程序将接收的所述串口数据转 发至该虚拟机B对应的串口 B代理程序。
[0051] 本实施例中,串口 A对应的串口 A代理程序将对应的串口数据发送至串口 A对应 的物理主机的主机代理程序时,也可以一起将串口 A代理程序在启动时所识别出的与该串 口 A通信连接的虚拟机B等对应的标识信息一同发送至串口 A代理程序对应的主机代理程 序上,便于所述主机代理程序根据上述标识信息转发对应的所述串口数据;比如,当串口 A 与串口 B位于同一物理主机时,所述主机代理程序根据串口 A代理程序发送的所述串口数 据及对应的标识信息,将所述串口数据转发至对应的所述串口 B代理程序。
[0052] 步骤S03、所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二 虚拟机操作系统从所述第二串口读取所述串口数据。
[0053] 串口 B代理程序接收主机代理程序发送的上述串口数据,并将该串口数据通过串 口 B发送至虚拟机B ;或者,串口 B代理程序直接将接收的该串口数据转发至串口 B,由虚拟 机B操作系统从该串口 B中读取对应的串口数据。上述串口代理程序与主机代理程序之间 的网络通信对于虚拟机来说是完全透明的。
[0054] 本发明实施例虚拟机之间的串口通信通过代理程序来实现,相较于现有技术中, 虚拟机串口间通过socket、管道、文件等方式进行通信,本发明实施例无需关心串口客户端 虚拟机及服务端虚拟机的问题,只需指定与之相连的串口代理程序即可,配置简单、操作便 捷。
[0055] 下面以一具体的运行环境再次描述图1所示的虚拟机串口的通信过程。图2是本 发明虚拟机串口的通信方法第一实施例对应的虚拟机运行环境结构示例图;如图2所示, 虚拟机A操作系统通过串口 A写入串口数据,并通过串口 A将写入的串口数据发送至串口 A 对应的串口 A代理程序,串口 A代理程序将上述串口数据发送至虚拟机A运行的物理主机 对应的主机代理程序,主机代理程序接收到串口数据后,根据串口数据携带的标识信息将 所述串口数据发送至虚拟机B对应的串口 B代理程序上,由串口 B代理程序将上述串口数 据通过串口 B发送至虚拟机B ;或者,虚拟机B操作系统通过串口 B读取串口 B代理程序上 的串口数据;具有配置简单、操作便捷的有益效果,而无需执行客户端虚拟机及服务端虚拟 机的繁琐配置。
[0056] 本发明还提供了一种虚拟机串口的通信方法第二实施例;本实施例中,基于串口 进行通信的两台虚拟机运行在不同的物理主机上;基于图1、图2所示实施例的描述,本发 明虚拟机串口的通信方法中,可以将图1所述实施例中的步骤S02替换为本实施例中的步 骤 S21、S22 和 S23。
[0057] 如图3所示,本发明虚拟机串口的通信方法中,图1所述的"步骤S02、第一串口代 理程序接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别出的所述第二虚 拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的 物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚 拟机对应的第二串口代理程序"可以替换为:
[0058] 步骤S21、第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口 数据,识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,所述第一串口代理 程序将所述串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程 序;
[0059] 第一串口代理程序如串口 A代理程序接收到虚拟机A操作系统通过串口 A发送的 串口数据时,串口 A代理程序识别出第二虚拟机如虚拟机B与第一虚拟机如虚拟机A运行 在不同的物理主机上时,串口 A代理程序根据启动时识别出的与串口 A通信连接的虚拟机 B,以及识别出虚拟机B所运行的第二物理主机如物理主机B后,串口 A代理程序将所述串 口数据发送至该虚拟机A运行的第一物理主机如物理主机A对应的第一主机代理程序如主 机A代理程序。
[0060] 步骤S22、所述第一主机代理程序接收所述串口数据,将所述串口数据以及包含用 于识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第 二主机代理程序;
[0061] 步骤S23、所述第二主机代理程序根据所述标识信息,将接收的所述串口数据转发 至所述第二虚拟机对应的第二串口代理程序。
[0062] 主机A代理程序接收所述串口数据,将所述串口数据以及包含用于识别所述虚拟 机B的标识信息转发至虚拟机B运行的物理主机B对应的主机B代理程序;本实施例中,主 机A代理程序接收到对应的串口数据后,将包含串口 A代理程序识别出的虚拟机B及所述 虚拟机B所运行的物理主机B作为标识信息,同所述串口数据一起发送至所述物理主机B 对应的主机B代理程序,便于所述主机B代理程序根据所述标识信息,识别出将所述串口数 据发送至哪个串口代理程序,比如本实施例中,所述主机B代理程序根据所述标识信息,识 别出将对应的所述串口数据发送至所述标识信息对应的串口 B代理程序。
[0063] 主机B代理程序接收到所述串口数据后,根据所述标识信息,识别出将所述串口 数据发送至串口 B代理程序时,所述主机B代理程序将接收到的所述串口数据转发至虚拟 机B对应的串口 B代理程序中,从而后续由串口 B代理程序通过串口 B将上述串口数据发 送至虚拟机B。且上述串口代理程序与主机代理程序之间的网络通信、以及不同的主机代理 程序之间的网络通信对于虚拟机来说都是完全透明的。
[0064] 如图4所示,虚拟机A通过串口 A发送串口数据至串口 A代理程序,串口 A代理程 序将所述串口数据发送至虚拟机A运行的物理主机A对应的主机A代理程序上;主机A代 理程序获取所述串口 A代理程序在启动时从对应的配置参数中识别出的与所述串口 A进行 通信连接的虚拟机B以及所述虚拟机B所运行的物理主机B,将包含所述虚拟机B及所述物 理主机B的标识信息与接收的所述串口数据转发至虚拟机B所运行的物理主机B对应的主 机B代理程序,主机B代理程序接收到所述标识信息及串口数据后,根据所述标识信息,将 接收到的所述串口数据转发至串口 B代理程序,串口 B代理程序将该串口数据转发至串口 B〇
[0065] 本发明实施例对于串口通信的两台虚拟机没有运行在同一物理主机上的情况,仍 可通过代理程序达到两台虚拟机通过串口进行通信的目的;且即使物理主机的IP地址发 生变化,也丝毫不会影响该物理主机上运行的虚拟机与其他物理主机上运行的虚拟机之间 的通信。
[0066] 本发明还提供了虚拟机串口的通信方法第三实施;本实施例与图1或图3所述实 施例的区别是,根据用户触发的操作指令,启动对应的代理程序;本发明实施例以与图1所 述实施例的区别为例进行描述,与图3所述实施例的区别与之类似,在此不再赘述。
[0067] 如图5所示,本发明虚拟机串口的通信方法图1所述的步骤S01之前还包括:
[0068] 步骤S10、响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所 述物理主机上所述虚拟机各串口分别对应的串口代理程序。
[0069] 响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及该物理主机 上运行的虚拟机各串口所分别对应的串口代理程序。
[0070] 本发明实施例中,系统启动物理主机的同时启动对应的所述主机代理程序,启动 所述虚拟机的同时启动对应的所述串口代理程序。
[0071] 进一步地,在启动上述主机代理程序以及串口代理程序之前,基于用户触发的操 作事件为虚拟机串口建立串口代理程序,将虚拟机串口作为服务端,串口代理程序作为客 户端,在虚拟机启动时,启动串口代理程序,将串口代理程序作为后台进程连接虚拟机串 口;此时,虚拟机串口的数据通过串口代理程序进行转发。另外,基于用户触发的操作事件 为每台物理主机建立主机代理程序,主机代理程序负责物理主机间的数据通信,并将串口 代理程序发送的串口数据转发到另一台物理主机对应的主机代理程序,另一台物理主机上 的主机代理程序将收到的串口数据转发给指定的串口代理程序。
[0072] 本发明实施例只需对应于物理主机创建主机代理程序、对应于虚拟机创建对应的 串口代理程序,在启动物理主机及虚拟机时直接加载对应的上述代理程序,使得虚拟机的 串口通信方式更加便捷和智能。
[0073] 本发明还提供了一种虚拟串口的通信装置第一实施例;所述虚拟串口的通信装置 上运行有串口代理程序及主机代理程序。
[0074] 如图6所示,本发明虚拟串口的通信装置包括:识别模块01和发送模块02 ;本实 施例以基于串口进行通信的两虚拟机运行在同一物理主机为例进行描述。
[0075] 识别模块01,用于在启动第一串口代理程序时,从对应的配置参数中识别与所述 第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
[0076] 本实施例中,将第一虚拟机操作系统、第一虚拟机、第一串口、第一串口代理程序 分别对应简称为:虚拟机A操作系统、虚拟机A、串口 A、串口 A代理程序;同样地,将第二虚 拟机操作系统、第二虚拟机、第二串口、第二串口代理程序分别对应简称为:虚拟机B操作 系统、虚拟机B、串口 B、串口 A代理程序。
[0077] 请一并参照图2,虚拟机A通过虚拟机A操作系统向串口 A写入串口数据,并将写 入的串口数据通过串口 A发送至运行串口 A代理程序的识别模块01 ;串口 A代理程序在启 动时,所述识别模块01利用所述串口 A代理程序从对应的配置参数中可以识别出于该串口 A通讯连接的虚拟机;比如,所述识别模块01利用串口 A代理程序识别出该虚拟机为虚拟 机B,以及该虚拟机B所运行的物理主机、该虚拟机B所对应的串口 B来接收对应的串口数 据等信息。本实施例中所述的配置参数可以理解为:所述第一串口代理程序的启动参数,或 者运行第一串口代理程序的第一虚拟机的配置参数。
[0078] 发送模块02,用于:
[0079] 基于运行的第一串口代理程序,接收第一虚拟机操作系统通过第一串口发送的串 口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口 数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收 的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
[0080] 基于所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟 机操作系统从所述第二串口读取所述串口数据。
[0081] 发送模块02接收虚拟机A操作系统通过该串口 A发送的串口数据后,根据识别模 块01识别出的所述第二虚拟机比如虚拟机B所运行的物理主机,将上述串口数据发送至虚 拟机B所运行的物理主机对应的主机代理程序;识别模块01基于运行的串口 A代理程序 根据识别出的虚拟机B所运行的物理主机与该虚拟机A运行的物理主机为同一物理主机上 时,发送模块02基于运行的串口 A代理程序将对应的串口数据发送至该物理主机的主机代 理程序上。发送模块02基于运行的该主机代理程序将接收的所述串口数据转发至该虚拟 机B对应的串口 B代理程序。
[0082] 本实施例中,发送模块02基于串口 A对应的串口 A代理程序将对应的串口数据发 送至串口 A对应的物理主机的主机代理程序时,也可以一起将串口 A代理程序在启动时所 识别出的与该串口 A通信连接的虚拟机B等对应的标识信息一同发送至串口 A代理程序 对应的主机代理程序上,便于所述主机代理程序根据上述标识信息转发对应的所述串口数 据;比如,当串口 A与串口 B位于同一物理主机时,所述发送模块02利用主机代理程序根据 串口 A代理程序发送的所述串口数据及对应的标识信息,将所述串口数据转发至对应的所 述串口 B代理程序。
[0083] 发送模块02中所运行的串口 B代理程序接收运行的主机代理程序发送的上述串 口数据,并将该串口数据通过串口 B发送至虚拟机B ;或者,串口 B代理程序直接将接收的 该串口数据转发至串口 B,由虚拟机B操作系统从该串口 B中读取对应的串口数据。上述串 口代理程序与主机代理程序之间的网络通信对于虚拟机来说是完全透明的。
[0084] 本发明实施例虚拟机之间的串口通信通过代理程序来实现,相较于现有技术中, 虚拟机串口间通过socket、管道、文件等方式进行通信,本发明实施例无需关心串口客户端 虚拟机及服务端虚拟机的问题,只需指定与之相连的串口代理程序即可,配置简单、操作便 捷。
[0085] 请再次参照图6,本实施例描述在基于串口通信的两虚拟机运行在不同物理主机 上时,所述虚拟串口的通信装置中发送模块02的工作过程。
[0086] 本实施例中,所述发送模块02用于:
[0087] 当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,基于所述第一 串口代理程序将串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代 理程序;
[0088] 基于所述第一主机代理程序,接收所述串口数据,将所述串口数据以及包含用于 识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二 主机代理程序;
[0089] 基于所述第二主机代理程序,根据所述标识信息,将接收的所述串口数据转发至 所述第二虚拟机对应的第二串口代理程序。
[0090] 请一并参照图4,识别模块01基于运行的第一串口代理程序如串口 A代理程序接 收到虚拟机A操作系统通过串口 A发送的串口数据时,基于串口 A代理程序识别出第二虚 拟机如虚拟机B与第一虚拟机如虚拟机A运行在不同的物理主机上时,发送模块02基于运 行的串口 A代理程序根据启动时识别出的与串口 A通信连接的虚拟机B,以及识别出虚拟机 B所运行的第二物理主机如物理主机B后,发送模块02基于运行的串口 A代理程序将所述 串口数据发送至该虚拟机A运行的第一物理主机如物理主机A对应的第一主机代理程序如 主机A代理程序。
[0091] 发送模块02基于运行的主机A代理程序接收所述串口数据,将所述串口数据以及 包含用于识别所述虚拟机B的标识信息转发至虚拟机B运行的物理主机B对应的主机B代 理程序;本实施例中,基于主机A代理程序,所述发送模块02接收到对应的串口数据后,将 包含串口 A代理程序识别出的虚拟机B及所述虚拟机B所运行的物理主机B作为标识信息, 同所述串口数据一起发送至所述物理主机B对应的主机B代理程序,便于所述主机B代理 程序根据所述标识信息,识别出将所述串口数据发送至哪个串口代理程序,比如本实施例 中,基于所述主机B代理程序,所述发送模块02根据所述标识信息,识别出将对应的所述串 口数据发送至所述标识信息对应的串口 B代理程序。
[0092] 发送模块02基于运行的主机B代理程序接收到所述串口数据后,根据所述标识信 息,识别出将所述串口数据发送至串口 B代理程序时,基于所述主机B代理程序将接收到的 所述串口数据转发至虚拟机B对应的串口 B代理程序中,从而后续由串口 B代理程序通过 串口 B将上述串口数据发送至虚拟机B。且上述串口代理程序与主机代理程序之间的网络 通信、以及不同的主机代理程序之间的网络通信对于虚拟机来说都是完全透明的。
[0093] 本发明实施例对于串口通信的两台虚拟机没有运行在同一物理主机上的情况,仍 可通过代理程序达到两台虚拟机通过串口进行通信的目的;且即使物理主机的IP地址发 生变化,也丝毫不会影响该物理主机上运行的虚拟机与其他物理主机上运行的虚拟机之间 的通信。
[0094] 本发明还提供一种虚拟串口的通信装置第二实施例;如图7所示,本发明虚拟串 口的通信装置还包括:
[0095] 启动模块03,用于响应用户触发的操作指令,启动物理主机对应的主机代理程序, 以及所述物理主机上所述虚拟机各串口分别对应的串口代理程序。
[0096] 启动模块03响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及 该物理主机上运行的虚拟机各串口所分别对应的串口代理程序。
[0097] 本发明实施例中,启动模块03启动物理主机的同时启动对应的所述主机代理程 序,启动所述虚拟机的同时启动对应的所述串口代理程序。
[0098] 进一步地,在启动上述主机代理程序以及串口代理程序之前,启动模块03基于用 户触发的操作事件为虚拟机串口建立串口代理程序,将虚拟机串口作为服务端,串口代理 程序作为客户端,在虚拟机启动时,启动模块03启动串口代理程序,将串口代理程序作为 后台进程连接虚拟机串口;此时,虚拟机串口的数据由发送模块02通过串口代理程序进行 转发。另外,启动模块03基于用户触发的操作事件为每台物理主机建立主机代理程序,主 机代理程序负责物理主机间的数据通信,发送模块02基于运行的所述主机代理程序将串 口代理程序发送的串口数据转发到另一台物理主机对应的主机代理程序,发送模块02基 于运行的另一台物理主机上的主机代理程序将收到的串口数据转发给指定的串口代理程 序。
[0099] 本发明实施例只需对应于物理主机创建主机代理程序、对应于虚拟机创建对应的 串口代理程序,在启动物理主机及虚拟机时直接加载对应的上述代理程序,使得虚拟机的 串口通信方式更加便捷和智能。
[0100] 需要说明的是,在本文中,术语"包括"、"包含"或者其任何其他变体意在涵盖非排 他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而 且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有 的要素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并不排除在包括 该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0101] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0102] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方 法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下 前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做 出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质 (如R0M/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机, 服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0103] 以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明 说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领 域,均同理包括在本发明的专利保护范围内。
【权利要求】
1. 一种虚拟机串口的通信方法,其特征在于,包括以下步骤: 第一串口代理程序在启动时,从对应的配置参数中,识别与所述第一串口通信连接的 第二虚拟机以及所述第二虚拟机所运行的物理主机; 第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别 出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第 二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转 发至所述第二虚拟机对应的第二串口代理程序; 所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操作系 统从所述第二串口读取所述串口数据。
2. 如权利要求1所述的方法,其特征在于,所述根据识别出的所述第二虚拟机所运行 的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的 主机代理程序,包括: 当识别出所述第二虚拟机与第一虚拟机运行在同一物理主机上时,所述第一串口代理 程序将串口数据发送至同一物理主机对应的所述主机代理程序。
3. 如权利要求1所述的方法,其特征在于,所述根据识别出的所述第二虚拟机运行的 物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主 机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第 二串口代理程序,包括: 当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,所述第一串口代理 程序将所述串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程 序; 所述第一主机代理程序接收所述串口数据,将所述串口数据以及包含用于识别所述第 二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机代理程 序; 所述第二主机代理程序根据所述标识信息,将接收的所述串口数据转发至所述第二虚 拟机对应的第二串口代理程序。
4. 如权利要求1或2或3所述的方法,其特征在于,所述第一串口代理程序在启动时, 从对应的配置参数中,识别与所述第一串口通信连接的第二虚拟机以及所述第二虚拟机所 运行的物理主机,之前还包括: 响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所述物理主机上 所述虚拟机各串口分别对应的串口代理程序。
5. 如权利要求4所述的方法,其特征在于,所述启动物理主机的同时启动对应的所述 主机代理程序,启动所述虚拟机的同时启动对应的所述串口代理程序。
6. -种虚拟机串口的通信装置,其特征在于,所述虚拟机串口的通信装置上运行有串 口代理程序以及主机代理程序; 所述虚拟机串口的通信装置包括: 识别模块,用于在启动第一串口代理程序时,从对应的配置参数中识别与所述第一串 口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机; 发送模块,用于: 基于运行的第一串口代理程序,接收第一虚拟机操作系统通过第一串口发送的串口数 据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据 发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所 述串口数据转发至所述第二虚拟机对应的第二串口代理程序; 基于所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操 作系统从所述第二串口读取所述串口数据。
7. 如权利要求6所述的通信装置,其特征在于,所述发送模块还用于: 当识别出所述第二虚拟机与第一虚拟机运行在同一物理主机上时,基于所述第一串口 代理程序将串口数据发送至同一物理主机对应的所述主机代理程序。
8. 如权利要求6所述的装置,其特征在于,所述发送模块还用于: 当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,基于所述第一串口 代理程序将串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程 序; 基于所述第一主机代理程序,接收所述串口数据,将所述串口数据以及包含用于识别 所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机 代理程序; 基于所述第二主机代理程序,根据所述标识信息,将接收的所述串口数据转发至所述 第二虚拟机对应的第二串口代理程序。
9. 如权利要求6或7或8所述的装置,其特征在于,还包括: 启动模块,用于响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所 述物理主机上所述虚拟机各串口分别对应的串口代理程序。
10. 如权利要求9所述的装置,其特征在于,所述启动模块还用于: 启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟机的同时启动对应 的所述串口代理程序。
【文档编号】H04L29/06GK104092661SQ201410256595
【公开日】2014年10月8日 申请日期:2014年6月10日 优先权日:2014年6月10日
【发明者】谢鸿钊 申请人:深圳市深信服电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1