基于usb重定向实现usb设备网络共享的系统及方法

文档序号:9633750阅读:693来源:国知局
基于usb重定向实现usb设备网络共享的系统及方法
【技术领域】
[0001]本发明涉及虚拟化与云计算领域,具体是涉及一种基于USB重定向实现USB设备网络共享的系统及方法。
【背景技术】
[0002]在云计算虚拟化场景中,虚拟机通常运行在物理服务器上,物理服务器放置在中心机房,用户通过浏览器或客户端登录管理界面对虚拟机进行管理。为了简化系统维护管理,提高系统负载均衡,增强系统错误容忍度和优化系统电源管理,或者当服务器的硬件资源不足时,需要将当前服务器上的虚拟机,迀移到环境相同的另一台服务器上,保证虚拟机能正常使用,更希望不需要重新分配USB (Universal Serial BUS,通用串行总线)设备,虚拟机就能使用原来的USB设备。
[0003]目前的虚拟机只能使用其所在服务器上的USB设备,通过Passthrough模型将设备独占式地分配给指定的客户域,使该域具有最高的I/O (Input/Output,输入输出)访问性能。
[0004]Pass-through模型具有以下优点:
[0005](1)不需要模拟设备进行请求转换,故访问速度高;
[0006](2)客户机能根据最新硬件,加载对应驱动,可充分发挥新硬件功能;
[0007](3)客户机可以直接操纵硬件设备,提高I/O性能。
[0008]当把虚拟机从源服务器迀移到目的服务器后,如果虚拟机要使用源服务器上的USB设备,必须到机房把USB设备从源服务器上拔下来,插到当前虚拟机所在的服务器,再重新分配。现有的USB设备无法随虚拟机的迀移一起迀移,使得用户操作变得繁琐。
[0009]目前,业界一般是采用USB/IP方式来实现USB设备网络共享。参见图1所示,在client端,VHCI Driver相当于USB主机控制器,主要用于USB虚拟的attachment (分配)和detachment (移除),并能初始化远端的USB设备。在server端,Stub Driver相当于USB per-device driver。Stub driver可以将USB/IP请求解析为USB请求,并提交到真正的USB设备。
[0010]通常将插有USB设备的服务器当作server端,将目的虚拟机当成client端使用。这样,服务器就需要添加服务端的功能模块,虚拟机需要添加客户端的功能模块。而且服务端开启一个守护进程,等待客户端的连接,虚拟机的内核也要满足一定要求,这样就限制了USB设备网络共享的作用范围,而且增加了资源的损耗。
[0011]给每个节点添加支持USB/IP的所有功能模块,这样每个节点既能被当成服务端使用,也能被当成客户端使用。采用USB/IP方式实现USB设备网络共享,可以将USB设备从一个节点映射到另一个节点,然后通过USB本地共享(Passthrough)分配给节点下的虚拟机。
[0012]但是,发明人发现:通过USB/IP方式实现USB设备网络共享后,共享的USB设备不能再经过Passthrough分配给虚拟机使用,导致基于USB/IP实现USB设备网络共享的方法无法与Passthrough模型结合使用。

【发明内容】

[0013]本发明的目的是为了克服上述【背景技术】的不足,提供一种基于USB重定向实现USB设备网络共享的系统及方法,能够与现有的Passthrough模型结合使用,实现整个资源池中USB设备的网络共享,服务器上的USB设备不仅能被分配到当前节点下的虚拟机使用,而且能够被其他节点下的虚拟机使用,迀移虚拟机时,无需重新拔插和分配USB设备,操作简单方便。
[0014]本发明提供一种基于USB重定向实现USB设备网络共享的系统,该系统包括用户管理主机和虚拟化平台,虚拟化平台包括至少2个结构相同的节点,其中的一个节点作为控制节点,其余节点作为计算节点,每个计算节点设置有至少一台虚拟机;用户管理主机通过互联网与控制节点相连,控制节点通过内部网络与所有计算节点相连;所述虚拟化平台中的所有节点均用于模拟虚拟的USB设备,用作提供USB设备的服务端或接受USB设备的客户端,不再作为单一的服务端或客户端使用;某一节点下的USB设备不仅能通过Passthough模型分配给该节点下的虚拟机使用,而且还能通过网络共享到其他节点下的虚拟机,实现整个资源池中USB设备的共享;但是,同一时刻,一个USB设备只能被一台虚拟机占用。
[0015]在上述技术方案的基础上,所述虚拟化平台中的每个节点都包括USB重定向单元、虚拟化管理单元、内部通讯单元、USB设备处理单元,其中:
[0016]所述USB重定向单元用于实现对物理USB设备的直接管理,将USB设备重定向到不同的虚拟机;
[0017]所述虚拟化管理单元用于模拟虚拟机的设备,为虚拟机提供运行环境;
[0018]所述内部通讯单元包括内部通讯发送模块、内部通讯接收模块,内部通讯发送模块用于将本节点上的数据包发送至目标节点;内部通讯接收模块用于接收其他节点发送的数据包;
[0019]所述USB设备处理单元用于将USB设备映射到虚拟机上,使得虚拟机使用远端的USB设备就像使用本地的USB设备一样。
[0020]在上述技术方案的基础上,所述USB重定向单元的核心模块用于数据的真实传输、对USB读写事件的处理。
[0021]在上述技术方案的基础上,所述虚拟化管理单元模拟虚拟机的光驱、CPU、内存、磁盘。
[0022]在上述技术方案的基础上,所述控制节点通过交换机与所有计算节点相连。
[0023]本发明还提供一种基于USB重定向实现USB设备网络共享的方法,包括以下步骤:
[0024]S1、用户通过用户管理主机访问虚拟化平台,在用户管理主机的管理界面上看见资源池中的所有USB设备,选择要分配给客户端节点A下的虚拟机的USB设备,并向A节点发送需要分配USB设备到A节点下的虚拟机的请求;
[0025]S2、A节点接收到用户的请求,将请求发送至物理USB设备所在服务端节点B ;
[0026]S3、B节点收到A节点的请求,对USB设备进行直接管理:B节点采用固定的字符串做抬头,与当前时间生成的经过加密的字符串组合,作为虚拟USB设备在客户端的节点上的USB唯一标识;B节点准备好USB设备,将对USB设备的直接处理事件存放到队列中,准备用于信息传输的网络通信端口,等待A节点的连接,并将“USB设备已准备好”的消息返回到A节点;
[0027]S4、A节点接收到B节点返回的消息,A节点通过B节点的IP地址和指定的网络通信端口,找到B节点已经准备好的USB设备,向B节点发出连接请求;
[0028]S5、B节点收到A节点的连接请求后,将USB设备的实际信息传输到A节点上,A节点模拟出虚拟的USB设备,将虚拟的USB设备映射到A节点下的虚拟机,给A节点下的虚拟机使用,该虚拟机使用映射的USB设备就像在本地使用一样。
[0029]在上述技术方案的基础上,步骤S3中,B节点的内部通讯接收模块收到A节点的请求,将请求传达到B节点的USB重定向单元,B节点的USB重定向单元对USB设备进行直接管理:B节点采用固定的字符串做抬头,与当前时间生成的经过加密的字符串组合,作为虚拟USB设备在客户端的节点上的USB唯一标识;B节点的USB重定向单元准备好USB设备,将对USB设备的直接处理事件存放到队列中,准备用于信息传输的网络通信端口,等待A节点的连接,并将“USB设备已准备好”的消息传递给B节点的内部通讯发送模块,B节点的内部通讯发送模块将“USB设备已准备好”的消息返回到A节点;
[0030]步骤S5中,B节点收到A节点的连接请求后,B节点的USB重定向单元通过传输控制协议,将USB设备的实际信息传输到A节点上,A节点的USB设备处理单元模拟出虚拟的USB设备,将虚拟的USB设备映射到A节点下的虚拟机,给A节点下的虚拟机使用。
[0031]在上述技术方案的基础上,步骤S5中还包括以下步骤:每个节点都运行着一个实时检查、更新数据库中USB信息的服务,作为服务端的B节点在数据库中对USB唯一标识做记录,每次重定向时,B节点都进行相应的检查更新,删除不需要的记录,保证记录条数不达到上限,不影响后来的USB设备网络共享。
[0032]在上述技术方案的基础上,步骤S3中所述经过加密的字符串为消息摘要算法第五版M
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1