《武汉工程大学学报》  2010年07期 85-88   出版日期:2010-07-31   ISSN:1674-2869   CN:42-1779/TQ
KVM系统中远程虚拟存储的研究


0引言KVM系统的诞生能够解决机房管理中多服务器共享键盘(Keyboard) 、显示器(Video)及鼠标(Mouse)的应用问题,实现服务器主机的集中管理,而KVM单词的由来正是Keyboard、Video和Mouse简称[1].随着KVM技术的发展,特别是数字KVM系统的广泛应用,KVM over IP技术正成为一个研究的热点.KVM over IP技术是建立在IP网络环境下,能够通过网络访问远程控制KVM系统,由远程控制KVM系统通过VGA线和USB线和被控主机进行连接,客户端能通过Internet网络传输实现对远程控制KVM系统的控制,进一步实现远程管理服务器,实现SOHO、远程办公等多类应用.在远程控制领域,如何实现在KVM系统中对远程虚拟存储设备正是一个新的研究热点[2].由于USB设备能够进行热拔插,而且KVM系统中也能够连接USB设备并且支持USB设备的虚拟拔插控制,为此,本文通过研究在KVM系统中虚拟一个USB设备实现远程虚拟存储的功能,这样可以实现远程服务器与控制终端的设备共享,同时实现虚拟存储的功能.最后,给出了不同缓存环境下的测试结果和非远程控制环境中本地优盘设备的读写对比.1远程虚拟USB虚拟存储设备的系
统构造远程虚拟USB设备虚拟存储系统概念图如图1所示.图1虚拟USB设备虚拟存储系统概念图
Fig.1Remote virtual storage system
 based on KVM system在虚拟USB设备系统中,传统的USB设备由虚拟USB设备所替代,在远程端的服务器通过远程控制设备和网络来访问客户端的USB系统,实现对USB存储设备的远程虚拟访问,实现存储虚拟化功能.具体实现过程中,系统采用网络技术传输SCSI命令和数据,通过硬件和软件相结合的虚拟技术,实现远程USB设备虚拟至远程服务器,从而使得服务器中能够像操作本地USB存储设备一样来操作客户端的USB存储设备.在传统的USB系统,主机和USB设备通过SCSI总线直接相连,一个USB系统仅包括USB主机、HUB、USB设备.通过对比这两者的具体应用,我们发现在KVM系统环境下,通过KVM Over IP正好可以实现此类应用,并且可以进一步可以扩展KVM系统功能,实现云计算系统的远程机房管理.由此,KVM远程控制设备系统必需为虚拟USB设备提供相应的USB设备控制器硬件和相关的固件.一个USB设备控制器需要为连接实际的服务器端主机提供USB接口并且通过相应的固件实现USB规范[34].KVM远程控制设备系统从物理上和控制服务器主机连接,并通过网络为客户端USB系统软件进行通信.要实现设备控制器硬件在物理上和USB主机相连接,并相应的USB规范,固件中必需给以USB控制器硬件相应的功能要求,即:(1)侦查新进来的数据包.(2)把从数据链路上接收来的数据进行译码.(3)辨别目标地址,接受发给自己的事务处理.(4)对于默认端点0的事务处理,鉴别事务处理的类型:是Setup事务处理,IN事务处理还是OUT事务处理.并在该端点的模式寄存器设置相应的位来表示该事件的类型.KVM远程控制设备系统中的固件能够协同设备控制器硬件完成底层的传输,实现USB传输控制协议,以及对命令的处理方法.2虚拟USB设备系统的管道模型由于虚拟USB设备的限制,USB主机和USB设备不再是直接相连,而是通过远程控制设备的硬件和软件间接地被连载一起.那么KVM远程控制设备根据第2节的描述是起着桥梁的作用,为此USB系统的的管道和传统的通信方式会有所区别.以端点0方式为例,可以采取直接通信的传统的通信方式,只是在通信前端点0需要远程客户端传送的信息就从远程客户端传输.而其他的端点方式则可以从网络通信的客户/服务器的模型中进行新型管道结构构建.由此可以发现我们选择的是远程存储USB设备的虚拟可以简化部分管道模型,其虚拟USB设备系统管道模型如图2所示,通过在KVM远程控制设备系统的固件中,对于端点0使用的信息的重新构造和对其他端点的特殊处理,就能虚拟出一个U盘设备,并接着网络传输实现一个在远程控制端能真实再现访问U盘的方法.为此,在KVM远程控制设备中USB设备控制器的固件程序设计将主要围绕图2所示的系统管道模型来设计,这里给出KVM远程控制设备虚拟USB设备固件的几个主要方面:图2虚拟USB设备系统管道模型
Fig. 2Pipe model of virtual USB storage
 device in KVM over IP system第7期刘军,等:KVM系统中远程虚拟存储的研究
武汉工程大学学报第32卷
(1)KVM远程控制设备中关于设备的各种描述符的构造——固件首先根据发送请求向客户端发送描述符信息请求,由客户端软件根据实际U盘信息构造出这些描述符信息并通过网路发送到KVM远程控制设备中,远程控制设备根据这些描述符信息构造本地虚拟U盘的各种描述符.(2)对默认端点0的处理——默认端点0是所有设备必须支持的控制传输端点,主要用在设备枚举过程中和主机的交换(3)对其他端点的处理——和端点0有所区别,其他端点在传输方式上和命令处理的方式上都不同.一般来讲,端点零中断处理程序在远程控制设备中处理各种命令,而其它端点必须把这些命令传输到远程客户端中并且接收返回的数据,最后再返回给服务器主机.3虚拟USB设备系统中SCSI命令
传输处理流程在虚拟USB设备虚拟存储系统中,KVM中虚拟一个USB设备是由远程控制设备和客户端USB系统等两个部分组成.那么远程控制设备和客户端USB系统之间是通过网络传输SCSI命令和相应的数据或状态[5],其处理流程如图3所示.这里以读操作为示例说明虚拟USB设备虚拟存储系统如何实现SCSI命令传输处理流程:(1)KVM系统中,KVM控制的服务器主机通过CDB发送SCSI的读(READ)命令;(2)KVM远程控制设备接收到服务器的读请求,并且通过TCP/IP网络把包含SCSI命令的CDB传递给客户端USB系统;(3)客户端USB系统中的软件通过DeviceIoControl系统调用把SCSI命令传输给物理USB设备,由物理USB设备执行相应的命令;(4)客户端USB系统把执行命令后返回的的数据和状态通过TCP/IP网络传输给KVM远程控制设备;(5)KVM远程控制设备接收到远程传输过来的数据后,把这些数据构造成相应的数据包并返回给服务器主机;(6)在数据传输完成后,远程控制设备接收远程传来的状态信息并构造相应的状态信息包,向KVM控制的服务器主机传输状态信息包,完成一次SCSI命令的传输处理.在虚拟USB设备虚拟存储系统中,服务器主机访问虚拟的USB存储设备时,其SCSI命令处理流程和单机系统访问USB设备是一样的处理流程,需要经历不同的总线阶段,只是执行命令通过网络传送到了客户端USB系统中执行,并且返回数据和状态.因此,从这个意义上讲,其执行流程和KVM over IP的执行流程类似.图3虚拟USB设备系统中SCSI命令传输处理流程
Fig. 3The implementation of SCSI commands and
data transmission of virtual USB storage device
 in KVM over IP system4实验环境和实验分析为了测试本系统,系统采用如图4所示的测试环境,测试系统由客户端USB系统,集线器,KVM远程控制设备以及被控制的服务器等三部分构成.KVM远程控制设备通过一根USB接口线和一根VGA接口线和服务器相连,和服务器相连的USB接口线和VGA接口线用来从物理上获取服务的显示信息和鼠标信息,USB接口线也是用来虚拟USB设备的物理接口线,该接口线是本虚拟USB设备能够从底层虚拟USB设备的关键.同时远程控制设备通过一跟网线和集线器相连,物理USB系统中的主机也通过一根网线和集线器相连.在该局域网系统中,远程控制设备和物理USB系统中的主机IP地址要设置在同一个网段中,以使他们能够进行通信[6].图4虚拟USB设备系统物理测试环境
Fig. 4Test environment of virtual USB storage
device in KVM over IP system客户端USB系统采用一台安装有Windows XP SP3系统的Intel Core(TM)2 Duo处理器的PC机.KVM远程控制设备是基于ARM9处理器的KVM嵌入式设备,设备有USB接口,USB设备控制器,VGA接口,网络接口等和专用的嵌入式操作系统以及相应的应用程序.设备采用自由操作系统,并包含网络通信模块,其固件编程与调试采用smart ICE进行调试.为了确保测试的准确性,我们量取了网线长度,给出其物理网络连接的设备信息表如表1所示.表1物理网络尺度和相关设备信息说明表
Table 1Physical network equipment information
设备品牌说明集线器(交换机)Dlink DI504M
(10/100M自适应)实际设置按照
集线器模式设置KVM远程控制连接到
集线器(交换机)的网线100M以太网线5 m计算机与集线器
(交换机)的网线100M以太网线12 mUSB接口线ATEN0.2 mVGA接口线与KVM
专用接口连接线ATEN0.4 m为了测试虚拟U盘的读取性能,采用Iometer软件对单机系统中的U盘、在Windows系统中共享U盘和远程虚拟系统中的U盘分别进行了测试,为了删除测试系统中网络负载对测试数据的影响,整个测试环境只考虑网络无其他负载的情况,测试数据块大小从512B,4k,16k,32k,64k,128k,512k,至1m大小,分别进行了测试时间段为2分钟的顺序读取和随机读取两个方面,其对比结果如图4和图5所示,远程虚拟系统中的虚拟U盘的速率比本地U盘的速率要慢很多,显然经过网络传送后的数据和命令,其数据读写性能要远远差与实际单机系统中的真实U盘读取性能.通过对数据的分析,我们发现在局域网中,网络共享U盘和本地U盘性能差别不到,而虚拟U盘的综合性能在2MBps左右,由此分析局域网中网络对U盘的性能影响并不是主要因素,而嵌入式系统中ARM处理系统对虚拟U盘的计算性能在本次测试中影响最大的原因.一般且远程系统的数据读取一般而言也是小概率事件,传输文件大小多少情况也在10M以内,所以其基本性能还是能够接受的,毕竟远程系统控制的方便性可以减少客户赶赴现场的时间开销[7].图5顺序读取速率性能比较图
Fig. 5Sequential read rate performance test results图6随机读取速率性能比较图
Fig. 6Random read rate performance test results5结语为了解决机房中集中管理的问题,KVM系统发挥了相当重要的作用,而KVM over IP技术能够实现远程机房管理,正成为目前智能机房系统中最重要的一个部分.远程虚拟存储设备技术的兴起将为智能机房和远程控制,以及无人机房等应用将为这里机房管理的应用发挥更为重要的作用.本文从USB设备的虚拟和远程虚拟存储设备的角度出发,给出如何在KVM系统中设计实现一个远程虚拟存储设备方法,实现远程服务器与控制终端的设备共享,同时实现虚拟存储的功能.最后给出了相应的测试性能分析,说明本文给出的方法能够满足远程机房管理的基本应用.通过系统性能测试分析,发现数据传输还是在2MBps以内,而同对比网络共享U盘发现网络只是性能印象中的次要因素,因此,下一步的研究方案将逐步改进在网络系统环境中如何提高嵌入式系统性能从而提高虚拟U盘的数据传输率.