CN104092661B - 虚拟机串口的通信方法及装置 - Google Patents
虚拟机串口的通信方法及装置 Download PDFInfo
- Publication number
- CN104092661B CN104092661B CN201410256595.7A CN201410256595A CN104092661B CN 104092661 B CN104092661 B CN 104092661B CN 201410256595 A CN201410256595 A CN 201410256595A CN 104092661 B CN104092661 B CN 104092661B
- Authority
- CN
- China
- Prior art keywords
- serial
- virtual machine
- agent
- physical host
- serial ports
- 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.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
本发明公开一种虚拟机串口的通信方法及装置,通过虚拟机各串口对应的串口代理程序及虚拟机运行的物理主机对应的主机代理程序实现虚拟机的串口通信。本发明实施例虚拟机之间的串口通信通过代理程序来实现,相较于现有技术中,虚拟机串口间通过socket、管道、文件等方式进行通信,本发明实施例无需关心串口客户端虚拟机及服务端虚拟机的问题,只需指定与之相连的串口代理程序即可,配置简单、操作便捷,且在物理主机对应的IP地址发生改变时,也丝毫不影响虚拟机之间的通信,提高虚拟机串口通信的便捷性、智能性和易维护性。
Description
技术领域
本发明涉及虚拟化技术,尤其涉及一种虚拟机串口的通信方法及装置。
背景技术
通过虚拟化技术一台物理主机可以虚拟出多台虚拟机,而虚拟机之间并不能使用数据线连接,但可以让两台虚拟机之间进行串口通信;目前常用的做法是将虚拟机串口重定向到一个通信管道、socket(插口)、真实串口等;但这种重定向的方式只能选择其中一个虚拟机作为服务端,另一个虚拟机为客户端,且服务端虚拟机必须先于客户端虚拟机启动;若客户端先启动,可能启动失败或无法与服务端建立通信;此时必须关闭客户端虚拟机,按先服务端虚拟机后客户端虚拟机的顺序重启虚拟机才能使用。当需要建立跨物理机上的虚拟机间串口通信时,需要指定物理机的IP地址;一旦物理机的IP地址发生变化则上述虚拟机之间将无法建立连接。且上述实现方式对于动态获取IP地址的物理机来说基本不可用。
因此可见,虚拟机之间直接重定向串口的通信方案配置困难,可用性很差;且跨物理主机的虚拟机之间进行串口通信时需要指定主机的IP地址,一旦主机的IP地址更改则无法进行通信,可维护性差。
发明内容
鉴于以上内容,有必要提供一种虚拟机串口的通信方法及装置,使得虚拟机之间的串口通信无需指定服务端虚拟机和客户端虚拟机且不受物理机IP地址的影响。
本发明实施例公开了一种虚拟机串口的通信方法,包括以下步骤:
第一串口代理程序在启动时从对应的配置参数中,识别与所述第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操作系统从所述第二串口读取所述串口数据。
优选地,所述根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,包括:
当识别出所述第二虚拟机与第一虚拟机运行在同一物理主机上时,所述第一串口代理程序将串口数据发送至同一物理主机对应的所述主机代理程序。
优选地,所述根据识别出的所述第二虚拟机运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序,包括:
当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,所述第一串口代理程序将串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程序;
所述第一主机代理程序接收所述串口数据,将所述串口数据以及包含用于识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机代理程序;
所述第二主机代理程序根据所述标识信息,将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序。
优选地,所述第一串口代理程序在启动时从对应的配置参数中,识别与所述第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机,之前还包括:
响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所述物理主机上所述虚拟机各串口分别对应的串口代理程序。
优选地,所述启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟机的同时启动对应的所述串口代理程序。
本发明实施例还公开一种虚拟机串口的通信装置,所述虚拟机串口的通信装置上运行有串口代理程序以及主机代理程序;
所述虚拟机串口的通信装置包括:
识别模块,用于在启动第一串口代理程序时,从对应的配置参数中识别与所述第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
发送模块,用于:
基于运行的第一串口代理程序,接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
基于所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操作系统从所述第二串口读取所述串口数据。
优选地,所述发送模块还用于:
当识别出所述第二虚拟机与第一虚拟机运行在同一物理主机上时,基于所述第一串口代理程序将串口数据发送至同一物理主机对应的所述主机代理程序。
优选地,所述发送模块还用于:
当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,基于所述第一串口代理程序将串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程序;
基于所述第一主机代理程序,接收所述串口数据,将所述串口数据以及包含用于识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机代理程序;
基于所述第二主机代理程序,根据所述标识信息,将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序。
优选地,所述虚拟机串口的通信装置还包括:
启动模块,用于响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所述物理主机上所述虚拟机各串口分别对应的串口代理程序。
优选地,所述启动模块还用于:
启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟机的同时启动对应的所述串口代理程序。
本发明实施例虚拟机之间的串口通信通过代理程序来实现,相较于现有技术中,虚拟机串口间通过socket、管道、文件等方式进行通信,本发明实施例无需关心串口客户端虚拟机及服务端虚拟机的问题,只需指定与之相连的串口代理程序即可,配置简单、操作便捷。
附图说明
图1是本发明虚拟机串口的通信方法第一实施例流程示意图;
图2是本发明虚拟机串口的通信方法第一实施例对应的虚拟机运行环境结构示例图;
图3是本发明虚拟机串口的通信方法第二实施例流程示意图;
图4是本发明虚拟机串口的通信方法第二实施例对应的串口间通信时序图;
图5是本发明虚拟机串口的通信方法第三实施例流程示意图;
图6是本发明虚拟串口的通信装置第一实施例功能模块示意图;
图7是本发明虚拟串口的通信装置第二实施例功能模块示意图。
本发明实施例目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明虚拟机串口的通信方法及装置中,所述虚拟机可以理解为通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,且一台高性能的物理主机上可以虚拟出多台虚拟机。所述虚拟机操作系统可以理解为所述虚拟机运行的系统,比如Guest系统等。所述串口即串行接口的简称,也成为串行通信接口,是采用串行通信方式的扩展接口比如常用的COM(Component Object Mode,组件对象模型)接口;串口可以应用于两台通信设备或者两台计算机之间的互联及数据传输,串口也可以通过直接电缆连接的方式实现双机互联。本发明下述实施例对以上内容均不再赘述。
本发明提供了一种虚拟机串口的通信方法第一实施例;本实施例中,基于串口进行通信的两台虚拟机运行在同一物理主机上;如图1所示,本发明虚拟机串口的通信方法包括以下步骤:
步骤S01、第一串口代理程序在启动时,从对应的配置参数中,识别与所述第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
本实施例中,将第一虚拟机操作系统、第一虚拟机、第一串口、第一串口代理程序分别对应简称为:虚拟机A操作系统、虚拟机A、串口A、串口A代理程序;同样地,将第二虚拟机操作系统、第二虚拟机、第二串口、第二串口代理程序分别对应简称为:虚拟机B操作系统、虚拟机B、串口B、串口B代理程序。
虚拟机A通过虚拟机A操作系统向串口A写入串口数据,并将写入的串口数据通过串口A发送至串口A代理程序;串口A代理程序在启动时,从对应的配置参数中可以识别出与该串口A进行通讯连接的虚拟机;比如,串口A识别出该虚拟机为虚拟机B,以及该虚拟机B所运行的物理主机、该虚拟机B所对应的串口B来接收对应的串口数据等信息。本实施例中所述的配置参数可以理解为:所述第一串口代理程序的启动参数,或者运行第一串口代理程序的第一虚拟机的配置参数。
步骤S02、第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
串口A代理程序接收虚拟机A操作系统通过该串口A发送的串口数据后,串口A代理程序根据识别出的所述第二虚拟机比如虚拟机B所运行的物理主机,将上述串口数据发送至虚拟机B所运行的物理主机对应的主机代理程序;本发明实施例以虚拟机A和虚拟机B运行在同一物理主机上为例进行描述;串口A代理程序根据识别出的虚拟机B所运行的物理主机与该虚拟机A运行的物理主机为同一物理主机上时,串口A代理程序将对应的串口数据发送至该物理主机的主机代理程序上。该主机代理程序将接收的所述串口数据转发至该虚拟机B对应的串口B代理程序。
本实施例中,串口A对应的串口A代理程序将对应的串口数据发送至串口A对应的物理主机的主机代理程序时,也可以一起将串口A代理程序在启动时所识别出的与该串口A通信连接的虚拟机B等对应的标识信息一同发送至串口A代理程序对应的主机代理程序上,便于所述主机代理程序根据上述标识信息转发对应的所述串口数据;比如,当串口A与串口B位于同一物理主机时,所述主机代理程序根据串口A代理程序发送的所述串口数据及对应的标识信息,将所述串口数据转发至对应的所述串口B代理程序。
步骤S03、所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操作系统从所述第二串口读取所述串口数据。
串口B代理程序接收主机代理程序发送的上述串口数据,并将该串口数据通过串口B发送至虚拟机B;或者,串口B代理程序直接将接收的该串口数据转发至串口B,由虚拟机B操作系统从该串口B中读取对应的串口数据。上述串口代理程序与主机代理程序之间的网络通信对于虚拟机来说是完全透明的。
本发明实施例虚拟机之间的串口通信通过代理程序来实现,相较于现有技术中,虚拟机串口间通过socket、管道、文件等方式进行通信,本发明实施例无需关心串口客户端虚拟机及服务端虚拟机的问题,只需指定与之相连的串口代理程序即可,配置简单、操作便捷。
下面以一具体的运行环境再次描述图1所示的虚拟机串口的通信过程。图2是本发明虚拟机串口的通信方法第一实施例对应的虚拟机运行环境结构示例图;如图2所示,虚拟机A操作系统通过串口A写入串口数据,并通过串口A将写入的串口数据发送至串口A对应的串口A代理程序,串口A代理程序将上述串口数据发送至虚拟机A运行的物理主机对应的主机代理程序,主机代理程序接收到串口数据后,根据串口数据携带的标识信息将所述串口数据发送至虚拟机B对应的串口B代理程序上,由串口B代理程序将上述串口数据通过串口B发送至虚拟机B;或者,虚拟机B操作系统通过串口B读取串口B代理程序上的串口数据;具有配置简单、操作便捷的有益效果,而无需执行客户端虚拟机及服务端虚拟机的繁琐配置。
本发明还提供了一种虚拟机串口的通信方法第二实施例;本实施例中,基于串口进行通信的两台虚拟机运行在不同的物理主机上;基于图1、图2所示实施例的描述,本发明虚拟机串口的通信方法中,可以将图1所述实施例中的步骤S02替换为本实施例中的步骤S21、S22和S23。
如图3所示,本发明虚拟机串口的通信方法中,图1所述的“步骤S02、第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序”可以替换为:
步骤S21、第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口数据,识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,所述第一串口代理程序将所述串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程序;
第一串口代理程序如串口A代理程序接收到虚拟机A操作系统通过串口A发送的串口数据时,串口A代理程序识别出第二虚拟机如虚拟机B与第一虚拟机如虚拟机A运行在不同的物理主机上时,串口A代理程序根据启动时识别出的与串口A通信连接的虚拟机B,以及识别出虚拟机B所运行的第二物理主机如物理主机B后,串口A代理程序将所述串口数据发送至该虚拟机A运行的第一物理主机如物理主机A对应的第一主机代理程序如主机A代理程序。
步骤S22、所述第一主机代理程序接收所述串口数据,将所述串口数据以及包含用于识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机代理程序;
步骤S23、所述第二主机代理程序根据所述标识信息,将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序。
主机A代理程序接收所述串口数据,将所述串口数据以及包含用于识别所述虚拟机B的标识信息转发至虚拟机B运行的物理主机B对应的主机B代理程序;本实施例中,主机A代理程序接收到对应的串口数据后,将包含串口A代理程序识别出的虚拟机B及所述虚拟机B所运行的物理主机B作为标识信息,同所述串口数据一起发送至所述物理主机B对应的主机B代理程序,便于所述主机B代理程序根据所述标识信息,识别出将所述串口数据发送至哪个串口代理程序,比如本实施例中,所述主机B代理程序根据所述标识信息,识别出将对应的所述串口数据发送至所述标识信息对应的串口B代理程序。
主机B代理程序接收到所述串口数据后,根据所述标识信息,识别出将所述串口数据发送至串口B代理程序时,所述主机B代理程序将接收到的所述串口数据转发至虚拟机B对应的串口B代理程序中,从而后续由串口B代理程序通过串口B将上述串口数据发送至虚拟机B。且上述串口代理程序与主机代理程序之间的网络通信、以及不同的主机代理程序之间的网络通信对于虚拟机来说都是完全透明的。
如图4所示,虚拟机A通过串口A发送串口数据至串口A代理程序,串口A代理程序将所述串口数据发送至虚拟机A运行的物理主机A对应的主机A代理程序上;主机A代理程序获取所述串口A代理程序在启动时从对应的配置参数中识别出的与所述串口A进行通信连接的虚拟机B以及所述虚拟机B所运行的物理主机B,将包含所述虚拟机B及所述物理主机B的标识信息与接收的所述串口数据转发至虚拟机B所运行的物理主机B对应的主机B代理程序,主机B代理程序接收到所述标识信息及串口数据后,根据所述标识信息,将接收到的所述串口数据转发至串口B代理程序,串口B代理程序将该串口数据转发至串口B。
本发明实施例对于串口通信的两台虚拟机没有运行在同一物理主机上的情况,仍可通过代理程序达到两台虚拟机通过串口进行通信的目的;且即使物理主机的IP地址发生变化,也丝毫不会影响该物理主机上运行的虚拟机与其他物理主机上运行的虚拟机之间的通信。
本发明还提供了虚拟机串口的通信方法第三实施;本实施例与图1或图3所述实施例的区别是,根据用户触发的操作指令,启动对应的代理程序;本发明实施例以与图1所述实施例的区别为例进行描述,与图3所述实施例的区别与之类似,在此不再赘述。
如图5所示,本发明虚拟机串口的通信方法图1所述的步骤S01之前还包括:
步骤S10、响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所述物理主机上所述虚拟机各串口分别对应的串口代理程序。
响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及该物理主机上运行的虚拟机各串口所分别对应的串口代理程序。
本发明实施例中,系统启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟机的同时启动对应的所述串口代理程序。
进一步地,在启动上述主机代理程序以及串口代理程序之前,基于用户触发的操作事件为虚拟机串口建立串口代理程序,将虚拟机串口作为服务端,串口代理程序作为客户端,在虚拟机启动时,启动串口代理程序,将串口代理程序作为后台进程连接虚拟机串口;此时,虚拟机串口的数据通过串口代理程序进行转发。另外,基于用户触发的操作事件为每台物理主机建立主机代理程序,主机代理程序负责物理主机间的数据通信,并将串口代理程序发送的串口数据转发到另一台物理主机对应的主机代理程序,另一台物理主机上的主机代理程序将收到的串口数据转发给指定的串口代理程序。
本发明实施例只需对应于物理主机创建主机代理程序、对应于虚拟机创建对应的串口代理程序,在启动物理主机及虚拟机时直接加载对应的上述代理程序,使得虚拟机的串口通信方式更加便捷和智能。
本发明还提供了一种虚拟串口的通信装置第一实施例;所述虚拟串口的通信装置上运行有串口代理程序及主机代理程序。
如图6所示,本发明虚拟串口的通信装置包括:识别模块01和发送模块02;本实施例以基于串口进行通信的两虚拟机运行在同一物理主机为例进行描述。
识别模块01,用于在启动第一串口代理程序时,从对应的配置参数中识别与所述第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
本实施例中,将第一虚拟机操作系统、第一虚拟机、第一串口、第一串口代理程序分别对应简称为:虚拟机A操作系统、虚拟机A、串口A、串口A代理程序;同样地,将第二虚拟机操作系统、第二虚拟机、第二串口、第二串口代理程序分别对应简称为:虚拟机B操作系统、虚拟机B、串口B、串口A代理程序。
请一并参照图2,虚拟机A通过虚拟机A操作系统向串口A写入串口数据,并将写入的串口数据通过串口A发送至运行串口A代理程序的识别模块01;串口A代理程序在启动时,所述识别模块01利用所述串口A代理程序从对应的配置参数中可以识别出于该串口A通讯连接的虚拟机;比如,所述识别模块01利用串口A代理程序识别出该虚拟机为虚拟机B,以及该虚拟机B所运行的物理主机、该虚拟机B所对应的串口B来接收对应的串口数据等信息。本实施例中所述的配置参数可以理解为:所述第一串口代理程序的启动参数,或者运行第一串口代理程序的第一虚拟机的配置参数。
发送模块02,用于:
基于运行的第一串口代理程序,接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
基于所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操作系统从所述第二串口读取所述串口数据。
发送模块02接收虚拟机A操作系统通过该串口A发送的串口数据后,根据识别模块01识别出的所述第二虚拟机比如虚拟机B所运行的物理主机,将上述串口数据发送至虚拟机B所运行的物理主机对应的主机代理程序;识别模块01基于运行的串口A代理程序根据识别出的虚拟机B所运行的物理主机与该虚拟机A运行的物理主机为同一物理主机上时,发送模块02基于运行的串口A代理程序将对应的串口数据发送至该物理主机的主机代理程序上。发送模块02基于运行的该主机代理程序将接收的所述串口数据转发至该虚拟机B对应的串口B代理程序。
本实施例中,发送模块02基于串口A对应的串口A代理程序将对应的串口数据发送至串口A对应的物理主机的主机代理程序时,也可以一起将串口A代理程序在启动时所识别出的与该串口A通信连接的虚拟机B等对应的标识信息一同发送至串口A代理程序对应的主机代理程序上,便于所述主机代理程序根据上述标识信息转发对应的所述串口数据;比如,当串口A与串口B位于同一物理主机时,所述发送模块02利用主机代理程序根据串口A代理程序发送的所述串口数据及对应的标识信息,将所述串口数据转发至对应的所述串口B代理程序。
发送模块02中所运行的串口B代理程序接收运行的主机代理程序发送的上述串口数据,并将该串口数据通过串口B发送至虚拟机B;或者,串口B代理程序直接将接收的该串口数据转发至串口B,由虚拟机B操作系统从该串口B中读取对应的串口数据。上述串口代理程序与主机代理程序之间的网络通信对于虚拟机来说是完全透明的。
本发明实施例虚拟机之间的串口通信通过代理程序来实现,相较于现有技术中,虚拟机串口间通过socket、管道、文件等方式进行通信,本发明实施例无需关心串口客户端虚拟机及服务端虚拟机的问题,只需指定与之相连的串口代理程序即可,配置简单、操作便捷。
请再次参照图6,本实施例描述在基于串口通信的两虚拟机运行在不同物理主机上时,所述虚拟串口的通信装置中发送模块02的工作过程。
本实施例中,所述发送模块02用于:
当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,基于所述第一串口代理程序将串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程序;
基于所述第一主机代理程序,接收所述串口数据,将所述串口数据以及包含用于识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机代理程序;
基于所述第二主机代理程序,根据所述标识信息,将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序。
请一并参照图4,识别模块01基于运行的第一串口代理程序如串口A代理程序接收到虚拟机A操作系统通过串口A发送的串口数据时,基于串口A代理程序识别出第二虚拟机如虚拟机B与第一虚拟机如虚拟机A运行在不同的物理主机上时,发送模块02基于运行的串口A代理程序根据启动时识别出的与串口A通信连接的虚拟机B,以及识别出虚拟机B所运行的第二物理主机如物理主机B后,发送模块02基于运行的串口A代理程序将所述串口数据发送至该虚拟机A运行的第一物理主机如物理主机A对应的第一主机代理程序如主机A代理程序。
发送模块02基于运行的主机A代理程序接收所述串口数据,将所述串口数据以及包含用于识别所述虚拟机B的标识信息转发至虚拟机B运行的物理主机B对应的主机B代理程序;本实施例中,基于主机A代理程序,所述发送模块02接收到对应的串口数据后,将包含串口A代理程序识别出的虚拟机B及所述虚拟机B所运行的物理主机B作为标识信息,同所述串口数据一起发送至所述物理主机B对应的主机B代理程序,便于所述主机B代理程序根据所述标识信息,识别出将所述串口数据发送至哪个串口代理程序,比如本实施例中,基于所述主机B代理程序,所述发送模块02根据所述标识信息,识别出将对应的所述串口数据发送至所述标识信息对应的串口B代理程序。
发送模块02基于运行的主机B代理程序接收到所述串口数据后,根据所述标识信息,识别出将所述串口数据发送至串口B代理程序时,基于所述主机B代理程序将接收到的所述串口数据转发至虚拟机B对应的串口B代理程序中,从而后续由串口B代理程序通过串口B将上述串口数据发送至虚拟机B。且上述串口代理程序与主机代理程序之间的网络通信、以及不同的主机代理程序之间的网络通信对于虚拟机来说都是完全透明的。
本发明实施例对于串口通信的两台虚拟机没有运行在同一物理主机上的情况,仍可通过代理程序达到两台虚拟机通过串口进行通信的目的;且即使物理主机的IP地址发生变化,也丝毫不会影响该物理主机上运行的虚拟机与其他物理主机上运行的虚拟机之间的通信。
本发明还提供一种虚拟串口的通信装置第二实施例;如图7所示,本发明虚拟串口的通信装置还包括:
启动模块03,用于响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所述物理主机上所述虚拟机各串口分别对应的串口代理程序。
启动模块03响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及该物理主机上运行的虚拟机各串口所分别对应的串口代理程序。
本发明实施例中,启动模块03启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟机的同时启动对应的所述串口代理程序。
进一步地,在启动上述主机代理程序以及串口代理程序之前,启动模块03基于用户触发的操作事件为虚拟机串口建立串口代理程序,将虚拟机串口作为服务端,串口代理程序作为客户端,在虚拟机启动时,启动模块03启动串口代理程序,将串口代理程序作为后台进程连接虚拟机串口;此时,虚拟机串口的数据由发送模块02通过串口代理程序进行转发。另外,启动模块03基于用户触发的操作事件为每台物理主机建立主机代理程序,主机代理程序负责物理主机间的数据通信,发送模块02基于运行的所述主机代理程序将串口代理程序发送的串口数据转发到另一台物理主机对应的主机代理程序,发送模块02基于运行的另一台物理主机上的主机代理程序将收到的串口数据转发给指定的串口代理程序。
本发明实施例只需对应于物理主机创建主机代理程序、对应于虚拟机创建对应的串口代理程序,在启动物理主机及虚拟机时直接加载对应的上述代理程序,使得虚拟机的串口通信方式更加便捷和智能。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种虚拟机串口的通信方法,其特征在于,物理主机创建有主机代理程序、虚拟机创建有对应的串口代理程序,包括以下步骤:
第一串口代理程序在启动时,从对应的配置参数中,识别与第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
第一串口代理程序接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操作系统从所述第二串口读取所述串口数据。
2.如权利要求1所述的方法,其特征在于,所述根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,包括:
当识别出所述第二虚拟机与第一虚拟机运行在同一物理主机上时,所述第一串口代理程序将串口数据发送至同一物理主机对应的所述主机代理程序。
3.如权利要求1所述的方法,其特征在于,所述根据识别出的所述第二虚拟机运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序,包括:
当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,所述第一串口代理程序将所述串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程序;
所述第一主机代理程序接收所述串口数据,将所述串口数据以及包含用于识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机代理程序;
所述第二主机代理程序根据所述标识信息,将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序。
4.如权利要求1或2或3所述的方法,其特征在于,所述第一串口代理程序在启动时,从对应的配置参数中,识别与所述第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机,之前还包括:
响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所述物理主机上所述虚拟机各串口分别对应的串口代理程序。
5.如权利要求4所述的方法,其特征在于,所述启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟机的同时启动对应的所述串口代理程序。
6.一种虚拟机串口的通信装置,其特征在于,物理主机创建有主机代理程序、虚拟机创建有对应的串口代理程序,所述虚拟机串口的通信装置上运行有串口代理程序以及主机代理程序;
所述虚拟机串口的通信装置包括:
识别模块,用于在启动第一串口代理程序时,从对应的配置参数中识别与第一串口通信连接的第二虚拟机以及所述第二虚拟机所运行的物理主机;
发送模块,用于:
基于运行的第一串口代理程序,接收第一虚拟机操作系统通过第一串口发送的串口数据,根据识别出的所述第二虚拟机所运行的物理主机,所述第一串口代理程序将串口数据发送至所述第二虚拟机运行的物理主机的主机代理程序,由所述主机代理程序将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序;
基于所述第二串口代理程序将所述串口数据发送至对应的第二串口,供第二虚拟机操作系统从所述第二串口读取所述串口数据。
7.如权利要求6所述的通信装置,其特征在于,所述发送模块还用于:
当识别出所述第二虚拟机与第一虚拟机运行在同一物理主机上时,基于所述第一串口代理程序将串口数据发送至同一物理主机对应的所述主机代理程序。
8.如权利要求6所述的装置,其特征在于,所述发送模块还用于:
当识别出所述第二虚拟机与第一虚拟机运行在不同物理主机上时,基于所述第一串口代理程序将串口数据发送至所述第一虚拟机运行的第一物理主机对应的第一主机代理程序;
基于所述第一主机代理程序,接收所述串口数据,将所述串口数据以及包含用于识别所述第二虚拟机的标识信息转发至所述第二虚拟机运行的第二物理主机对应的第二主机代理程序;
基于所述第二主机代理程序,根据所述标识信息,将接收的所述串口数据转发至所述第二虚拟机对应的第二串口代理程序。
9.如权利要求6或7或8所述的装置,其特征在于,还包括:
启动模块,用于响应用户触发的操作指令,启动物理主机对应的主机代理程序,以及所述物理主机上所述虚拟机各串口分别对应的串口代理程序。
10.如权利要求9所述的装置,其特征在于,所述启动模块还用于:
启动物理主机的同时启动对应的所述主机代理程序,启动所述虚拟机的同时启动对应的所述串口代理程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410256595.7A CN104092661B (zh) | 2014-06-10 | 2014-06-10 | 虚拟机串口的通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410256595.7A CN104092661B (zh) | 2014-06-10 | 2014-06-10 | 虚拟机串口的通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104092661A CN104092661A (zh) | 2014-10-08 |
CN104092661B true CN104092661B (zh) | 2017-09-26 |
Family
ID=51640343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410256595.7A Active CN104092661B (zh) | 2014-06-10 | 2014-06-10 | 虚拟机串口的通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104092661B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106650465B (zh) * | 2015-10-30 | 2021-01-29 | 阿里巴巴集团控股有限公司 | 应用于虚拟化场景的安全通信方法及设备 |
CN109933411B (zh) * | 2019-03-31 | 2021-03-30 | 山东超越数控电子股份有限公司 | 一种在线修改虚拟机内部配置系统及方法 |
CN112925604B (zh) * | 2019-11-20 | 2024-04-19 | 北京华耀科技有限公司 | 一种虚拟化管理平台及实现方法 |
CN111796914A (zh) * | 2020-07-20 | 2020-10-20 | 山东超越数控电子股份有限公司 | 设置物理串口的属性的方法、虚拟机及宿主机 |
CN114124949A (zh) * | 2021-09-28 | 2022-03-01 | 许继集团有限公司 | 一种串口代理装置及应用其的配电自动化电力系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7032129B1 (en) * | 2001-08-02 | 2006-04-18 | Cisco Technology, Inc. | Fail-over support for legacy voice mail systems in New World IP PBXs |
US8798056B2 (en) * | 2007-09-24 | 2014-08-05 | Intel Corporation | Method and system for virtual port communications |
US8739179B2 (en) * | 2008-06-30 | 2014-05-27 | Oracle America Inc. | Method and system for low-overhead data transfer |
CN101819564B (zh) * | 2009-02-26 | 2013-04-17 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN103780674B (zh) * | 2013-11-13 | 2017-05-31 | 南京中兴新软件有限责任公司 | 一种基于硬件模拟的虚拟机通信方法和装置 |
-
2014
- 2014-06-10 CN CN201410256595.7A patent/CN104092661B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104092661A (zh) | 2014-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104092661B (zh) | 虚拟机串口的通信方法及装置 | |
CN107346292B (zh) | 服务器系统及其计算机实现的方法 | |
CN110531987A (zh) | 基于Kubernetes集群的管理方法、装置及计算机可读存储介质 | |
CN103595790B (zh) | 设备远程访问的方法、瘦客户端和虚拟机 | |
CN106155264B (zh) | 管理存储子系统的电力消耗的计算机方法与计算机系统 | |
EP3021223B1 (en) | Method for enhancing memory fault tolerance | |
CN105338048A (zh) | 一种虚拟桌面基础架构下的文件传输方法和系统 | |
CN106878204A (zh) | 一种虚拟机的创建方法和装置 | |
US9967139B2 (en) | Remote zone management of JBOD systems | |
US20210111951A1 (en) | Hyper-converged infrastructure networking configuration system | |
CN110515762A (zh) | 数据恢复方法、装置、终端设备及存储介质 | |
CN105095103A (zh) | 用于云环境下的存储设备管理方法和装置 | |
CN108206750A (zh) | 虚拟机网卡的配置方法及装置 | |
US20160183401A1 (en) | Systems and methods for mounting and dismounting computing components | |
CN105453058A (zh) | 目录服务发现和/或学习 | |
CN114650223B (zh) | 一种Kubernetes集群的网络配置方法、装置及电子设备 | |
CN108874441A (zh) | 一种板卡配置方法、装置、服务器和存储介质 | |
CN103229480A (zh) | 分布式存储系统中的数据处理方法及设备、客户端 | |
CN106850554B (zh) | 双系统定向连接的方法和装置 | |
CN104219159A (zh) | 基于虚拟局域网的虚拟接口进行链路聚合方法和装置 | |
US20140359114A1 (en) | Computer-readable recording medium, usage mode data generation method, and usage mode data generation device | |
CN112887330B (zh) | 一种网络acl隔离浮动ip的实现装置及方法 | |
CN113285983A (zh) | 一种支持多虚拟化安防设备共享单加密卡的虚拟实验系统 | |
CN105144073A (zh) | 可移除存储设备身份和配置信息 | |
CN113296878A (zh) | 一种容器处理方法、装置、电子设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518000 No. 1001 Nanshan Chi Park building A1 layer Applicant after: SINFOR Polytron Technologies Inc Address before: 518052 room 410-413, science and technology innovation service center, No. 1 Qilin Road, Shenzhen, Guangdong, China Applicant before: Shenxinfu Electronics Science and Technology Co., Ltd., Shenzhen |
|
GR01 | Patent grant | ||
GR01 | Patent grant |