1台DELL R710服务器,安装了VMware ESXi 6.0系统,创建的Windows Server 2008 R2的虚拟机,在该服务器上插上财务软件加密狗后,修改虚拟机配置,添加USB控制器、添加USB设备时,找不到ESXi主机上的USB加密狗,这种情况怎么办?
对于不能被ESXi识别的USB加密狗,可以将主机的USB接口以”直连”方式映射到虚拟机中,供虚拟机使用。虽然ESXi不能识别USB端口上的加密狗,但直接将加密狗所在的USB接口以PCI设备的方式分配给虚拟机使用,就可以使用该USB接口上的加密狗。下面介绍解决的方法。
(1)进入BIOS设置,注意”启用I/O MMU virtualization (AMD-Vi 或 Intel VT-d)”为选中状态,否则”直通”功能将不能使用,如图2-7-59所示。
图2-7-59 直通(说明,这是用的ASUS主板的截图,不是DELL服务器配置直通的截图)
(2)使用vSphere Client连接到ESXi主机,在”配置→高级设置”中,单击右侧的”编辑”按钮,如图2-7-60所示。
图2-7-60 编辑
(3)在”将设备标记为可直通”对话框中,选择所有的 USB控制器(因为我们不清楚,这些USB端口与服务器机箱上USB端口的对应关系,所以开始全部选中),如图2-7-61所示。
图2-7-61 将设备标记为可直通
(4)返回到vSphere Client,如图2-7-62所示。
图2-7-62 添加USB直通
(5)将正在运行的虚拟机关机,然后重新启动ESXi主机。
(6)等服务器启动之后,再次进入”配置→硬件→高级设置”中,可以看到列表中每个设备可以通过该主机上的虚拟机直接访问,如图2-7-63所示。
图2-7-63 DirectPath I/O配置
(7)关闭(想添加USB加密狗)虚拟机,修改虚拟机配置,单击”添加”按钮,如图2-7-64所示。
图2-7-64 修改虚拟机配置
(8)在”设备类型”中选择”PCI设备”,如图2-7-65所示。
图2-7-65 添加 PCI设备
(9)在”选择PCI设备”下拉列表中,选择要连接的PCI设备,如图2-7-66所示。
图2-7-66 可用于添加的PCI设备
(10)在”即将完成”对话框,单击”完成”按钮,如图2-7-67所示。
图2-7-67 添加设备完成
(11)返回到虚拟机属性对话框,从清单中可以看到,已经添加了一个PCI设备,如图2-7-68所示。
图2-7-68 添加了一个PCI设备
(12)因为我们不清楚PCI设备与USB端口的对应关系,在图2-7-68中,单击”添加”按钮,参照(9)~(11)步骤,添加3个PCI设备到虚拟机配置中。如图2-7-69所示。说明,每个PCI设备只能添加一次,并且只能添加给一个虚拟机。同一个PCI设备不能添加多次,也不能分配给多个虚拟机。或者说,这些PCI设备是”独占”式进行分配,不是”共享”式进行分配。添加设备完成后,单击”确定”按钮。
图2-7-69 添加所有PCI设备
【说明】一共6个PCI设备,对应服务器上的4个USB接口(应该有2个USB接口在主板上,没有用数据线接出来)。为了更快区分这6个PCI设备与服务器上4个USB接口的对应关系,可以按照如下顺序:
(a)在USB加密狗插在服务器后面的USB接口上。
(b)修改虚拟机添加,添加4个PCI设备,开机,看添加的这4个PCI设备是否包括第(1)步中的USB端口。
如果包括,则关闭虚拟机,删除其中的2个PCI设备,再次开机。
如果包括,则关机,删除其中一个设备。
如果包括,则找到对应的PCI设备。
如果不包括,则关闭虚拟机,删除当前的PCI设备,添加剩余一个设备。
如果不包括,则关机,删除当前的2个PCI设备,添加原来删除的2个PCI设备中的一个,开机。
如果包括,则找到对应的PCI设备。
如果不包括,则关闭虚拟机,删除当前的PCI设备,添加剩余一个设备。
如果不包括,则关闭虚拟机,删除这4个PCI设备,添加剩余的1个PCI设备,再次开机。
如果包括,则找到对应的PCI设备。
如果不包括,则关闭虚拟机,删除当前的PCI设备,添加剩余一个设备。
(13)将USB加密狗插到机箱后面的一个USB接口,然后打开虚拟机电源,进入”设备管理器”,在”通用串行总结控制器”中,可以看到添加的PCI设备(USB控制器),如图2-7-70所示。
图2-7-70 添加的USB设备
(14)此时系统已经检测到加密狗,管理系统可用,如图2-7-71所示。
图2-7-71 管理系统可用
当管理系统可用后,关闭虚拟机,删除2个PCI设备,再看USB加密狗是否可用。
如果不可用,请关闭虚拟机,删除当前的2个PCI设备,添加剩余的一个PCI设备。重新定位。
如果可用,请关闭虚拟机,删除其中一个PCI设备,检测剩余的一个PCI设备是否可用。
通过多次删除、添加,就可以找到当前USB加密狗对应的PCI设备编号,并且将其记录下来。