基于SPICE协议的USB设备重定向设计与实现
扫描二维码
随时随地手机看文章
引 言
随着云计算和虚拟化技术的发展,虚拟桌面也不断应用到各行各业中。桌面虚拟化技术通过虚拟化技术和云计算技术相结合,将用户桌面环境和计算环境分离,不仅可为用户提供便捷的桌面办公环境和较好的用户体验,还能将用户的虚拟资源进行集中化管理,提高远程服务器虚拟资源的利用率[1]。
基于SPICE 协议的虚拟桌面不支持USB 设备的自动重定向,限制了用户在客户端对远程服务器资源的操作,包括数据的拷贝、上传等功能。
本文基于 OpenStack 平台设计和实现的远程虚拟资源服务器,然后设计和部署了基于SPICE 协议的虚拟桌面客户端, 用户通过客户端灵活访问远程服务器的虚拟资源集群[2]。用户在客户端插入USB 设备,就可以对远程服务器资源池进行访问和控制。通过大量对比测试,本设计方案可以实现基于SPICE 协议的虚拟桌面的USB 设备自动重定向功能。
1 虚拟桌面设计框架
基于SPICE 协议的虚拟桌面是基于KVM 虚拟机实现的, 在SPICE 框架中,VDI 后端在QEMU 中实现,提供对虚拟设备的模拟,VDI 前端在服务端中实现,通过VDI 接口与虚拟设备进行交互[3]。
虚拟化技术能够在一台计算机上运行多个操作系统 [4], 在每个操作系统上运行自己独立的应用软件,可以对这些系统进行有效隔离,对资源进行按需分配,从而保证每一个操作系统的安全性和性能。对服务器进行扩展,实现服务器的虚拟化[5]。
在OpenStack云平台上构建云桌面系统的服务端,采用KVM 虚拟化技术,实现本地用户对物理服务器的远程访问, 使用户能够共享相同的物理服务设备[6]。图 1 为虚拟桌面的整体设计框架。
来自客户端、台式机、笔记本的用户发出连接请求,通 过对应的 SPICE 服务连接云实验室的客户端,客户端首先向 服务端建立一个主要接口的连接请求,创建工作线程并等待 远程服务端的消息,云实验室服务端完成初始化后,客户端 继续进行后面的初始化工作 [7]。
在虚拟桌面的服务端,能够满足用户的多种资源申请需 求,管理员能够统一管理和分配虚拟资源。管理员根据用户 的请求分配虚拟机资源,在分配过程中附带虚拟资源的地址 和端口,方便客户端用户直接使用地址和端口登录虚拟桌面 [8]。 图 2 所示为服务器虚拟资源分布图。
用户在虚拟桌面的登陆界面中输入在远程服务器中分配 的地址和端口,即可进入到远程服务器进行虚拟桌面的操作 和管理。认证成功的用户能访问远程服务器的虚拟资源,保证整个虚拟桌面的安全。用户通过虚拟桌面客户端的用户操作 界面实现对远程服务器集群资源的访问和操作 [9]。图 3 为虚 拟桌面客户端登录界面。
2 USB 重定向实现
针对基于 SPICE 协议的虚拟桌面无法自动完成 USB 设备 重定向功能,提出一种 USB 设备重定向实现方法。首先设计 和实现基于 SPICE 协议的虚拟桌面,通过客户端用户能够访 问远程虚拟资源池,提高服务器的利用率 [10]。用户在终端设 备插入优盘,能够自动重定向到远程虚拟服务器,实现数据 的管理操作。图 4 所示为 USB 重定向设计框架。
首先在制作虚拟桌面客户端的 Fedora 系统中,编译安装 Usbredir软件,它通过网络连接发送USB设备流量的网络协议, spice-gtk 是为 SPICE 远程桌面服务提供数据库和图形工具包 的软件,在编译安装过程中,需要添加 Usbredir 功能,最后 通过安装和编译 virt-viewer,完成虚拟桌面的客户端。
在服务器远程资源中,通过 WDK 软件重新编译 libwdi、 libusbk 和 libusb-win32-bin,产生 libwdi.dll,将 libwdi.dll 文件拷贝到 windows 虚拟机中的 c :\windows\system32 位置。 重新启动虚拟机,使用虚拟机客户端重新连接,插入USB 设 备后能实现自动重定向到远程虚拟机。
3 测试
当插入USB 设备后,会自动识别 USB 驱动,图 5 为选择 USB 设备。
选择对应的 USB 设备后,出现对应的设备驱动。图 6 所 示为 USB 设备驱动界面,图 7 为 USB 的磁盘管理界面。
4 结 语
基于SPICE协议的虚拟桌面不能实现USB设备的重定向, 用户不能对远程服务器虚拟资源进行复制粘贴等功能,影响 用户体验 QoS。本文的设计方案能够实现 USB 设备的自动重 定向功能。