一种虚拟主机的输入输出重定向系统及其实现方法

文档序号:6366310阅读:168来源:国知局
专利名称:一种虚拟主机的输入输出重定向系统及其实现方法
技术领域
本发明涉及基于云计算基础设施环境的虚拟主机技术,具体涉及虚拟主机的输入输出重定向系统及其实现方法。
背景技术
随着云计算技术的不断发展和普遍推广,使得原来运行Windows和Linux的PC物理主机不断虚拟化,实现用户可以通过网络和不同终端设备使用虚拟主机。使用虚拟主机的一般方式有两种
一、如图1所示,在物理主机上安装虚拟主机软件(如VMWare、VirtualBox、XenServer 等),用虚拟主机软件创建出多个虚拟主机实例,如虚拟主机实例VMl,……,虚拟主机实例 VMnCn为大于0的自然数)。每一个虚拟主机实例都可以根据需求安装操作系统,如WINDOWS 或LINUX。每一个虚拟主机实例就如同一台物理主机一样,但其输入输出设备驱动都是虚拟化的(由于虚拟主机技术已十分成熟,就不在赘述了)。使用者可通过本地外围设备进行操作,在物理主机上的虚拟主机管理界面上进行登录使用,但一般只限于IT管理人员使用。二、如图2所示,用户通过PC或瘦客户机(ThinClient)与虚拟主机实例内部的远程桌面程序通讯,如RDP、ICA, PCoverPC, VNC等远程桌面程序,以虚拟主机实例的其中一个多用户身份使用虚拟主机实例。PC或瘦客户机可统称为远程终端。远程终端在远程操作时,由于不同虚拟主机实例的操作系统版本不同,远程虚拟桌面程序的处理能力和支持技术不同,以及需依赖第三方远程虚拟桌面程序去操作虚拟主机实例,造成了用户不能像使用本地物理主机一样流畅地、充分地使用虚拟主机实例的功能。

发明内容
为了克服现有技术的不足,本发明的目的在于提出一种虚拟主机的输入输出重定向系统及其实现方法,其是在虚拟主机软件的基础上增加的系统,其能改变现有的虚拟主机实例对于远程终端只能依赖虚拟主机实例内的远程虚拟桌面程序的控制方式,从而使远程终端完全、安全和灵活地使用和体验虚拟主机实例。为了达到上述目的,本发明所采用的技术方案如下
一种虚拟主机的输入输出重定向系统,其包括通讯模块、重定向连接模块;重定向连接模块包括重定向连接代理模块;远程终端通过通讯模块向重定向连接代理模块发送连接请求;重定向连接代理模块接收到连接请求后,向虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端;远程终端从虚拟主机实例信息列表中选择一个虚拟主机实例,并通过通讯模块向重定向连接代理模块对该虚拟主机实例提出控制请求;重定向连接代理模块接收到控制请求后,向虚拟主机软件查询该虚拟主机实例的运行状态,若该虚拟主机实例处于关机状态,则虚拟主机软件启动该虚拟主机实例,若该虚拟主机实例处于开机状态,则重定向连接代理模块从虚拟主机软件获取该虚拟主机实例的虚拟输入输出设备的驱动配置,并创建一个重定向模块;重定向模块包括数据编码模块、重定向输入模块、重定向输出模块以及各个虚拟设备驱动实例,各个虚拟设备驱动实例与该虚拟主机实例的虚拟输入输出设备的驱动相对应,数据编码模块用于分离或组合虚拟设备驱动实例的输入输出数据;虚拟输入输出设备的输出信息通过相应的虚拟设备驱动实例传输给重定向输出模块,重定向输出模块再把输出信息传输到数据编码模块,数据编码模块对输出信息进行编码后通过通讯模块传输给提出控制请求的远程终端; 远程终端的输入信息通过通讯模块传输给数据编码模块,数据编码模块对输入信息进行解码后发送给重定向输入模块,重定向输入模块再把已解码的输入信息通过相应的虚拟设备驱动实例传输给该虚拟主机实例。优选的,所述重定向模块还包括一重定向控制模块,当数据编码模块接收到的输入信息为虚拟主机实例状态控制指令时,数据编码模块通过重定向控制模块向虚拟主机软件发送虚拟主机实例状态控制指令;虚拟主机实例状态控制指令包括更改分辨率指令或关机指令或重启动指令或注销指令。更优选的,当虚拟主机软件接收到关机指令后,重定向连接代理模块关闭与该虚拟主机实例相应的重定向模块。优选的,所述重定向连接模块还包括认证授权模块;重定向连接代理模块接收到连接请求后,向虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端的过程中重定向连接代理模块接收到连接请求后,要求远程终端输入认证信息,远程终端输入用户信息后,重定向代理向认证授权模块发送用户信息, 用户信息通过认证授权模块的认证后,重定向连接代理模块从虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端。本发明还提出了一种实现上述虚拟主机的输入输出重定向系统的方法,其包括以下步骤
A.远程终端与通讯模块建立数据连接;
B.通讯模块向重定向连接代理模块报告一个连接请求;
C.重定向连接代理模块接收到连接请求后,向虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端;
D.远程终端从虚拟主机实例信息列表中选择一个虚拟主机实例,并通过通讯模块向重定向连接代理模块对该虚拟主机实例提出控制请求;
E.重定向连接代理模块接收到控制请求后,向虚拟主机软件查询该虚拟主机实例的运行状态若该虚拟主机实例处于关机状态,则虚拟主机软件启动该虚拟主机实例,使该虚拟主机实例进入开机状态;若该虚拟主机实例处于开机状态,则重定向连接代理模块从虚拟主机软件获取该虚拟主机实例的虚拟输入输出设备的驱动配置,并创建一个重定向模块; 所述重定向模块包括数据编码模块、重定向输入模块、重定向输出模块以及各个虚拟设备驱动实例,各个虚拟设备驱动实例与该虚拟主机实例的虚拟输入输出设备的驱动相对应, 数据编码模块用于分离或组合虚拟设备驱动实例的输入输出数据;
5F.虚拟输入输出设备的输出信息通过相应的虚拟设备驱动实例传输给重定向输出模块,重定向输出模块再把输出信息传输到数据编码模块,数据编码模块对输出信息进行编码后通过通讯模块传输给提出控制请求的远程终端;
G.远程终端向虚拟主机实例输入信息,远程终端的输入信息通过通讯模块传输给数据编码模块,数据编码模块对输入信息进行解码后发送给重定向输入模块,重定向输入模块再把已解码的输入信息通过相应的虚拟设备驱动实例传输给该虚拟主机实例。优选的,在步骤E中所述重定向模块还包括一重定向控制模块;在步骤G后还有步骤H:当数据编码模块接收到的输入信息为虚拟主机实例状态控制指令时,数据编码模块通过重定向控制模块向虚拟主机软件发送虚拟主机实例状态控制指令;虚拟主机实例状态控制指令包括更改分辨率指令或关机指令或重启动指令或注销指令。更优选的,在步骤H 中当虚拟主机软件接收到关机指令后,重定向连接代理模块关闭与该虚拟主机实例相应的重定向模块。优选的,步骤C具体为重定向连接代理模块接收到连接请求后,要求远程终端输入认证信息,远程终端输入用户信息后,重定向代理向认证授权模块发送用户信息,用户信息通过认证授权模块的认证后,重定向连接代理模块从虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端。本发明具有如下有益效果
(1)用户像在本地一样使用虚拟主机实例,那些不能在远程桌面上运行的程序,都可以在使用本方法实现的远程虚拟桌面上运行。(2)不用为虚拟主机实例里的操作系统准备不同的远程桌面程序,因为只是重定向了虚拟主机实例的输入输出接口,所以可以很方便地支持各种操作系统的虚拟主机实例,包括windows、1 inux,而不需要做特别的开发。(3)输入输出的数据可以采用任意方式压缩传输,而不受RDP、ICA、PCoverPC, VNC 等协议的限制,因此可以实现流畅地传输视频和音频。


图1为现有技术的在物理主机上使用虚拟主机实例的工作原理示意图; 图2为现有技术的在远程终端上使用虚拟主机实例的工作原理示意图3为本发明较佳实施例的在远程终端上使用虚拟主机实例的工作原理示意图; 图4为本发明较佳实施例的虚拟主机的输入输出重定向系统的结构原理示意图。
具体实施例方式下面,结合附图以及具体实施方式
,对本发明做进一步描述,以便于更清楚的理解本发明所要求保护的技术思想。如图3和图4所示,一种虚拟主机的输入输出重定向系统,其包括通讯模块、重定向连接模块;重定向连接模块包括重定向连接代理模块以及认证授权模块。远程终端通过通讯模块向重定向连接代理模块发送连接请求;重定向连接代理模块接收到连接请求后,要求远程终端输入认证信息,远程终端输入用户信息后,重定向代理向认证授权模块发送用户信息,用户信息通过认证授权模块的认证后,重定向连接代理模块从虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端,该虚拟主机实例信息列表包括虚拟主机实例的数量、名称以及目前的使用状态信息等(即虚拟主机实例VMl,……,虚拟主机实例VMn,n为大于0的自然数);远程终端从虚拟主机实例信息列表中选择一个虚拟主机实例,并通过通讯模块向重定向连接代理模块对该虚拟主机实例提出控制请求;重定向连接代理模块接收到控制请求后,向虚拟主机软件查询该虚拟主机实例的运行状态,若该虚拟主机实例处于关机状态,则虚拟主机软件启动该虚拟主机实例,若该虚拟主机实例处于开机状态,则重定向连接代理模块从虚拟主机软件获取该虚拟主机实例的虚拟输入输出设备的驱动配置,并创建一个重定向模块; 重定向模块包括数据编码模块、重定向输入模块、重定向输出模块、重定向控制模块以及各个虚拟设备驱动实例,各个虚拟设备驱动实例与该虚拟主机实例的虚拟输入输出设备的驱动相对应(即虚拟设备驱动实例的显示、鼠标、键盘、声音、USB等与虚拟主机实例的显示、鼠标、键盘、声音、USB等一一对应),数据编码模块用于分离或组合虚拟设备驱动实例的输入输出数据(即IO数据);虚拟输入输出设备的输出信息通过相应的虚拟设备驱动实例传输给重定向输出模块,重定向输出模块再把输出信息传输到数据编码模块,数据编码模块对输出信息进行编码后通过通讯模块传输给提出控制请求的远程终端;远程终端的输入信息通过通讯模块传输给数据编码模块,数据编码模块对输入信息进行解码后发送给重定向输入模块,重定向输入模块再把已解码的输入信息通过相应的虚拟设备驱动实例传输给该虚拟主机实例。当数据编码模块接收到的输入信息为虚拟主机实例状态控制指令时,数据编码模块通过重定向控制模块向虚拟主机软件发送虚拟主机实例状态控制指令;虚拟主机实例状态控制指令包括更改分辨率指令或关机指令或重启动指令或注销指令。当虚拟主机软件接收到关机指令后,重定向连接代理模块关闭与该虚拟主机实例相应的重定向模块。一种实现上述虚拟主机的输入输出重定向系统的方法,其包括以下步骤
A.物理主机开机后,启动“输入输出重定向系统”的公共部分,公共部分包括认证授权模块、重定向连接代理模块及通讯模块。远程终端通过指定IP地址或者服务器名的方式访问物理主机,与通讯模块建立TCP数据连接。B.通讯模块在与远程终端建立可靠连接后,通讯模块向重定向连接代理模块报告一个连接请求。C.重定向连接代理模块接收到连接请求后,要求远程终端输入认证信息,远程终端输入用户信息后,所述用户信息包括账号、账户、密码等信息,重定向代理向认证授权模块发送用户信息,用户信息通过认证授权模块的认证后,重定向连接代理模块从虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端。D.远程终端从虚拟主机实例信息列表中选择一个虚拟主机实例,并通过通讯模块向重定向连接代理模块对该虚拟主机实例提出控制请求。E.重定向连接代理模块接收到控制请求后,向虚拟主机软件查询该虚拟主机实例的运行状态若该虚拟主机实例处于关机状态,则虚拟主机软件启动该虚拟主机实例,使该虚拟主机实例进入开机状态;若该虚拟主机实例处于开机状态,则重定向连接代理模块从虚拟主机软件获取该虚拟主机实例的虚拟输入输出设备的驱动配置,并创建一个重定向模块;所述重定向模块包括数据编码模块、重定向输入模块、重定向输出模块以及各个虚拟设备驱动实例,各个虚拟设备驱动实例与该虚拟主机实例的虚拟输入输出设备的驱动相对应,数据编码模块用于分离或组合虚拟设备驱动实例的输入输出数据。F.虚拟输入输出设备的输出信息通过相应的虚拟设备驱动实例传输给重定向输出模块,重定向输出模块再把输出信息传输到数据编码模块,数据编码模块对输出信息进行编码后通过通讯模块传输给提出控制请求的远程终端。G.远程终端向虚拟主机实例输入信息,远程终端的输入信息通过通讯模块传输给数据编码模块,数据编码模块对输入信息进行解码后发送给重定向输入模块,重定向输入模块再把已解码的输入信息通过相应的虚拟设备驱动实例传输给该虚拟主机实例。H.当数据编码模块接收到的输入信息为虚拟主机实例状态控制指令时,数据编码模块通过重定向控制模块向虚拟主机软件发送虚拟主机实例状态控制指令;虚拟主机实例状态控制指令包括更改分辨率指令或关机指令或重启动指令或注销指令。当虚拟主机软件接收到关机指令后,重定向连接代理模块关闭与该虚拟主机实例相应的重定向模块。通过以上步骤,远程终端的显示器显示出虚拟主机实例的桌面,而远程终端的鼠标、键盘等输入信息也可以传输到虚拟主机实例,从而实现完整的虚拟桌面。在整个过程中,虚拟主机实例本身没有使用远程桌面协议及远程桌面程序与远程终端通讯,它只是在本地运行,其输入输出数据被本实施例的输入输出重定向系统截获并重定向远程终端。当另一台远程终端发起另一个连接的时候,重定向连接代理模块将会为它创建一个新的重定向模块。本实施例所述的通讯模块、重定向连接模块、重定向模块均为满足一定条件的计算机代码集合。此外,本实施例的输入输出重定向系统的公共部分可以安装在同一台物理主机上,也可以安装在不同的物理主机上。本实施例的输入输出重定向系统通过为虚拟主机实例生成并启动对应的重定向输入、重定向输出模块,来与虚拟设备驱动实例建立连接通讯,因此可以支持同一设备类型的不同虚拟驱动实例的连接通讯,实现诸如多屏幕显示、多HID输入输出设备等的支持。对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及变形,而所有的这些改变以及变形都应该属于本发明权利要求的保护范围之内。
权利要求
1.一种虚拟主机的输入输出重定向系统,其特征在于,包括通讯模块、重定向连接模块;重定向连接模块包括重定向连接代理模块;远程终端通过通讯模块向重定向连接代理模块发送连接请求;重定向连接代理模块接收到连接请求后,向虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端;远程终端从虚拟主机实例信息列表中选择一个虚拟主机实例,并通过通讯模块向重定向连接代理模块对该虚拟主机实例提出控制请求;重定向连接代理模块接收到控制请求后,向虚拟主机软件查询该虚拟主机实例的运行状态,若该虚拟主机实例处于关机状态,则虚拟主机软件启动该虚拟主机实例,若该虚拟主机实例处于开机状态,则重定向连接代理模块从虚拟主机软件获取该虚拟主机实例的虚拟输入输出设备的驱动配置,并创建一个重定向模块;重定向模块包括数据编码模块、重定向输入模块、重定向输出模块以及各个虚拟设备驱动实例,各个虚拟设备驱动实例与该虚拟主机实例的虚拟输入输出设备的驱动相对应, 数据编码模块用于分离或组合虚拟设备驱动实例的输入输出数据;虚拟输入输出设备的输出信息通过相应的虚拟设备驱动实例传输给重定向输出模块,重定向输出模块再把输出信息传输到数据编码模块,数据编码模块对输出信息进行编码后通过通讯模块传输给提出控制请求的远程终端;远程终端的输入信息通过通讯模块传输给数据编码模块,数据编码模块对输入信息进行解码后发送给重定向输入模块,重定向输入模块再把已解码的输入信息通过相应的虚拟设备驱动实例传输给该虚拟主机实例。
2.如权利要求1所述的虚拟主机的输入输出重定向系统,其特征在于,所述重定向模块还包括一重定向控制模块,当数据编码模块接收到的输入信息为虚拟主机实例状态控制指令时,数据编码模块通过重定向控制模块向虚拟主机软件发送虚拟主机实例状态控制指令;虚拟主机实例状态控制指令包括更改分辨率指令或关机指令或重启动指令或注销指令。
3.如权利要求2所述的虚拟主机的输入输出重定向系统,其特征在于,当虚拟主机软件接收到关机指令后,重定向连接代理模块关闭与该虚拟主机实例相应的重定向模块。
4.如权利要求1所述的虚拟主机的输入输出重定向系统,其特征在于,所述重定向连接模块还包括认证授权模块;重定向连接代理模块接收到连接请求后,向虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端的过程中重定向连接代理模块接收到连接请求后,要求远程终端输入认证信息,远程终端输入用户信息后,重定向代理向认证授权模块发送用户信息,用户信息通过认证授权模块的认证后,重定向连接代理模块从虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端。
5.一种根据权利要求1所述的虚拟主机的输入输出重定向系统的实现方法,其特征在于,包括以下步骤远程终端与通讯模块建立数据连接;通讯模块向重定向连接代理模块报告一个连接请求;重定向连接代理模块接收到连接请求后,向虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端;远程终端从虚拟主机实例信息列表中选择一个虚拟主机实例,并通过通讯模块向重定向连接代理模块对该虚拟主机实例提出控制请求;重定向连接代理模块接收到控制请求后,向虚拟主机软件查询该虚拟主机实例的运行状态若该虚拟主机实例处于关机状态,则虚拟主机软件启动该虚拟主机实例,使该虚拟主机实例进入开机状态;若该虚拟主机实例处于开机状态,则重定向连接代理模块从虚拟主机软件获取该虚拟主机实例的虚拟输入输出设备的驱动配置,并创建一个重定向模块;所述重定向模块包括数据编码模块、重定向输入模块、重定向输出模块以及各个虚拟设备驱动实例,各个虚拟设备驱动实例与该虚拟主机实例的虚拟输入输出设备的驱动相对应,数据编码模块用于分离或组合虚拟设备驱动实例的输入输出数据;虚拟输入输出设备的输出信息通过相应的虚拟设备驱动实例传输给重定向输出模块, 重定向输出模块再把输出信息传输到数据编码模块,数据编码模块对输出信息进行编码后通过通讯模块传输给提出控制请求的远程终端;远程终端向虚拟主机实例输入信息,远程终端的输入信息通过通讯模块传输给数据编码模块,数据编码模块对输入信息进行解码后发送给重定向输入模块,重定向输入模块再把已解码的输入信息通过相应的虚拟设备驱动实例传输给该虚拟主机实例。
6.如权利要求5所述的虚拟主机的输入输出重定向系统的实现方法,其特征在于,在步骤E中所述重定向模块还包括一重定向控制模块;在步骤G后还有步骤H:当数据编码模块接收到的输入信息为虚拟主机实例状态控制指令时,数据编码模块通过重定向控制模块向虚拟主机软件发送虚拟主机实例状态控制指令;虚拟主机实例状态控制指令包括更改分辨率指令或关机指令或重启动指令或注销指令。
7.如权利要求6所述的虚拟主机的输入输出重定向系统的实现方法,其特征在于,在步骤H中当虚拟主机软件接收到关机指令后,重定向连接代理模块关闭与该虚拟主机实例相应的重定向模块。
8.如权利要求1所述的虚拟主机的输入输出重定向系统的实现方法,其特征在于,步骤C具体为重定向连接代理模块接收到连接请求后,要求远程终端输入认证信息,远程终端输入用户信息后,重定向代理向认证授权模块发送用户信息,用户信息通过认证授权模块的认证后,重定向连接代理模块从虚拟主机软件获取虚拟主机实例信息列表,并把虚拟主机实例信息列表通过通讯模块反馈给远程终端。
全文摘要
本发明涉及虚拟主机的输入输出重定向系统及其实现方法。该系统包括通讯模块、重定向连接模块;重定向连接模块包括重定向连接代理模块。重定向连接代理模块接收到远程终端的连接请求后,向虚拟主机软件获取虚拟主机实例信息列表,远程终端从虚拟主机实例信息列表中选择一个虚拟主机实例,若该虚拟主机实例处于开机状态,则重定向连接代理模块从虚拟主机软件获取该虚拟主机实例的虚拟输入输出设备的驱动配置,并创建一个重定向模块;远程终端利用重定向模块的数据编码模块、重定向输入模块、重定向输出模块以及各个虚拟设备驱动实例对虚拟主机实例进行操作。本发明很方便地支持各种操作系统的虚拟主机实例,并实现流畅的视、音频传输。
文档编号G06F9/455GK102546837SQ201210066159
公开日2012年7月4日 申请日期2012年3月13日 优先权日2012年3月13日
发明者巫超, 章国锋, 马毅 申请人:广州辉远电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1