最近常有朋友问起服务器虚拟化能否兼容USB加密狗一类的外部设备。
 
其实这是两个问题:
1,服务器虚拟化支持哪些外部设备的重定向。
2,服务器是否支持重定向加密狗到虚拟机。
 
第一部分:虚拟化环境对各种外设的支持
 
关于第一个问题,我们先来看看最牛X的服务器虚拟化软件VMware vSphere对外设的支持情况,下图告诉我们,建立在vSphere上的虚拟机所支持的虚拟硬件类型和数量限制:
 
 
请注意,虚拟机上可以添加的是虚拟硬件,虚拟硬件可能是物理硬件的映射,也可能不是,所以这里需要详细说明一下:
 
CPU,虚拟的CPU对应物理CPU的核,如果支持超线程,则一个核可以当成两个核来用。
 
RAM,这个就是容量的分配了,虚拟化层有很多技术支持虚拟机超量使用物理内存。
 
显卡,你不能为虚拟机添加显卡,它也不是物理显卡的映射,它是纯虚拟的,你可以设置它的一些属性。
 
IDE接口,也是虚拟的,可用于光驱等低速设备,基本上不存在兼容性问题。
 
并口,可以映射Host的并口。
 
串口,可以映射Host的串口。
 
USB控制器,可以映射Host上的USB设备。一个USB设备在任一时刻都只能映射给某一个虚拟机。有人问我能否将一个USB设备,如加密狗,同时映射到多个虚拟机之中,我知道他想做什么,可惜,虚拟化软件帮不了他。
关于vSphere对USB设备的支持,VMware官方有文档进行了说明:
 
软驱,可以映射Host的软驱或软盘映像文件.flp
 
鼠标与键盘,映射Host上的各种类型的鼠标和键盘。
 
网卡,虚拟的,分为多种类型,性能不同,兼容性也不同,E1000模拟Intel 82545EM 千兆网卡,操作系统基本都支持;Vlance模拟AMD 79C970 PCnet32 LANCE 网卡,是一种较旧的10M网卡,除非其它类似的网卡有兼容性问题或没有驱动,否则不推荐使用;VMXNET分为1,2,3代,性能一代比一代强,推荐使用,需要在虚拟机内安装VMware Tools才能使用。详细介绍参见 http://kb.vmware.com/kb/1001805
虚拟网卡和物理网卡之间通过虚拟交换机相连接,可以是多对一的绑定关系。
 
SCSI卡,可以映射Host上的SCSI设备到虚拟机,也可以用于连接硬盘等虚拟设备,共有四种类型,早期的BusLogic和LSI Logic,都是并口的,以及Version 7才支持的LSI Logic SAS和VMWare准虚拟PVSCSI(高吞吐低CPU占用),vSphere的SCSI虚拟化还支持SCSI总线共享,在构建集群时非常有用。
 
所有设备映射,都只能将物理主机上的设备映射到运行在它上面的虚拟机,所以,虚拟机漂移的时候,可能失去对设备的访问能力,直到人工干预,因为设备停留在原物理主机上,不能随虚拟机一起漂移。
 
第二部分 虚拟机对加密狗的支持
 
加密狗,英文为Softdog或Software protection dongle,以前多采用并口连接计算机,现在多采用USB接口。也许是因为中国软件盗版率较高,也许是中国的软件厂商太小家子气,反正这东西在中国软件业,特别是行业软件业,应用广泛。
 
加密狗设备连接到物理主机上之后,可能无法正常映射到虚拟机之中使用,即使映射成功了,因为它不能随虚拟机漂移,也会影响高级功能的应用,如Vmotion,HA,DRS等。
 
VMware的USB Pass-through技术所支持的USB设备列表:
 
只有一部分设备在这个列表中,最好的解决办法是采用USB Over IP的解决方案将USB设备映射到虚拟机之中,分为软件和硬件解决方案:
 
软件解决方案的例子:
USB@anywhere
USB Over Network
你需要将USB设备连接到一台没有做虚拟化的物理主机,然后在它上面安装USB Over IP Server端软件,然后在虚拟机里安装USB Over IP Client软件,就行了。
 
硬件解决方案的例子:
类似于HUB或交换机,前面是USB口,后边是网口,同样要在虚拟机内安装软件。
 
 
对于那些老的基于并口的加密狗,目前没有太好的解决办法,如果哪位朋友有办法,不妨告之,在此先谢过。