问题
某些特殊应用程序可能依赖于加密狗等专用硬件
当程序运行的时候,需要在服务器的USB端口(或者串口、并口)上插上相关硬件
在这种场景下,虚拟化的VPS内如何调用这些特殊硬件呢?
解决方案
1.首先将设备连接到硬件节点,并正确安装驱动
本文中的例子是一个USB的加密狗
登陆到硬件节点,打开设备管理器,看USB设备中,是否出现了USBDOG设备(一定要正确配置驱动)
如果硬件节点本身不能识别这个设备,那么VPS内也就无法使用。
2.查询设备的DeviceID
登陆到硬件节点,执行命令:vzdevctldevtree
执行结果会返回几十个硬件设备,从中找到要挂载的设备
例如下边是显示出来的usbdog设备
Device:USB\VID_08E2
Status:Started
Disableable
Removable
Class:USB
Name:MicroDogUSBDevice
Connected:No
Commanddevtreeissuccessfullyfinished
C:\>
从这个命令返回中,可以看到deviceid,即“USB\VID_08E2
3.创建虚拟的硬件设备
命令格式vzdevctladd ——deviceid"设备id"——alias别名——connect——onboot
将其中的vpsid替换为要绑定的vpsid,设备id替换为上个步骤查询出来的编号
alias别名任意取一个即可,例如dog
完整命令如下:
C:\>vzdevctladd736——deviceid"USB\VID_08E2——aliasdog——connect——onboot
DeviceUSB\VID_08E2alreadysharedforVPS736
C:\>
4.挂载设备
上一步仅仅是共享设备,但还没挂载,下边的命令是挂载设备:
C:\DocumentsandSettings\Administrator>vzdevctlconnect736——deviceid"USB\VID_08E2
Commandconnectissuccessfullyfinished
C:\DocumentsandSettings\Administrator>
命令中的deviceid就是设备编号
如果挂载成功,应该返回提示信息successfullyfinished
5.确认是否挂载成功,再次运行vzdevctldevtree
从返回的设备列表中,再次找到刚才的设备
Device:USB\VID_08E2
Status:Started
Disableable
Removable
Class:USB
Name:MicroDogUSBDevice
Connected:Yes
VPS:736
State:Active
Commanddevtreeissuccessfullyfinished
可以看到,一开始这个设备显示为Connected:No
而现在挂载完毕后,显示Yes了,并显示挂载到VPS736上
6.登陆到VPS中,打开VPS自己的设备管理器,应该可以看到刚才挂载的设备
现在可以正常使用这个设备了
————————————
注意:本文的方法只对串口、并口、USB接口三种形式的接口有效
对硬盘光驱等设备的挂载,请使用相关的对应方法,请查阅相应文档。