1.2 虚拟桌面技术发展
1.2.1 虚拟桌面技术的发端
1959年6月,在由联合国教科文组织于纽约举行的国际信息处理大会上,英国牛津大学教授克里斯托弗·斯特雷奇(Christopher Strachey)发表了题为《大型高速计算机中的时间共享》(Time Sharing in Large Fast Computers)的学术报告[1],被公认为是对虚拟化思想的最早论述,虚拟化技术由此发端。克里斯托弗在报告中提出了“多道程序”(Multiprogramming)的概念,多个程序可以同时运行而不需要等待外设,同时程序员还可以通过自己的控制台调试其程序。克里斯托弗的“多道程序”概念仍然以当前的核心批处理为中心,但又描述了如内存保护和共享中断这种架构要求。这种“多道程序”的概念把计算研究推动到一个新方向。后来,克里斯托弗写道:“当我在1959年写这篇论文时,和大家一样,我也不知道这会让编写软件来控制分时或多道程序产生什么样的困难。如果我知道的话,我真不该对它们这么热衷。”
1965年,IBM公司发布的IBM 7044计算机(图1-3)最早在商业系统上实现虚拟化。IBM 7044为主机创建多个虚拟镜像,为多个用户的程序提供了独立的计算环境,允许在一台主机上运行多个操作系统。每个镜像叫作7044/44X,多个用户能够通过虚拟镜像访问主机的内存和资源。从本质上来说,IBM7044定义了虚拟内存管理机制,应用程序可以运行在虚拟内存中。从用户的角度来看,这些虚拟内存就好像是一个个独立运行的“虚拟机”,分别供不同用户的程序来运行计算。
图1-3 IBM 7044计算机
1966年,剑桥大学教授Martin Richards开发了BCPL(Basic Combined Programming Language)语言,应用程序虚拟化最早用于BCPL。BCPL是一种命令式语言,是B语言的一个前身,后来该语言发展为我们现在使用的C语言。BCPL的第一个编译器是专为兼容分时系统(Compatible Time Sharing System)下的IBM7094系统编写的,该系统是开发的第一个分时操作系统之一[2]。
桌面虚拟化技术的前身是从虚拟化的不同领域产生、发展直至成熟,包括服务器虚拟化、应用虚拟化等,才使得现在的桌面虚拟化技术成为现实。
1.2.2 虚拟桌面技术的萌芽
处于虚拟桌面萌芽状态的技术包括远程桌面和本地桌面虚拟化。
(1)远程桌面。
对于从事IT技术的人来说,远程桌面可以说是一种家喻户晓的技术了。内置在Windows XP操作系统中的远程桌面使用了RDP协议,允许系统用户通过图形用户界面从其他的电脑上远程登录、访问与使用目标桌面,就好像在本地控制系统下使用一样。RDP技术的原理是将目标计算机上的运行界面图像传输到用户实际操作的计算机屏幕上,并将用户的键盘、鼠标等终端操作传输到目标计算机进行交互。在默认情况下,远程桌面协议的客户端代理内置在微软的操作系统中,服务器端从客户端代理接收请求,显示应用程序的图像或者通过客户端代理远程访问系统,服务端系统通过端口3389来监听来自客户端的RDP连接请求。
微软最早将RDP协议用于Windows服务器上的终端服务(Terminal Service)访问协议,实现了Windows服务器上的多用户模式,使得用户在本地不安装任何应用的条件下,能够远程访问和使用服务器上的各种应用程序。远程桌面可以用于发布、管理或者远程访问集中使用的应用程序,也常被管理员用来远程访问用户系统,以便协助排除故障。在虚拟化技术兴起之后,微软曾将Windows Server 2008上的终端服务重新定义为“演示虚拟化技术”,但无论采取何种定义,远程桌面仍然是当前桌面虚拟化的核心技术。
(2)本地桌面虚拟化。
所谓的本地桌面虚拟化,是指整个桌面环境在用户终端(如PC)上一个受保护的环境中执行,在一台计算机上同时运行多个操作系统。该虚拟化桌面运行在用户终端的底层硬件和主机操作系统之上,与安装在主机操作系统之上的其他应用的运行方式类似,但与已安装的其他应用是隔离的。Vmware Workstation和微软VPC(Windows Virtual PC)都属于此类产品。
从这个角度定义的虚拟桌面,可以看作是PC操作系统之上的桌面虚拟化解决方案,其主要解决的是不依赖于特定的硬件,将操作系统的安装环境与运行环境的分离来实现。但需要指出的是,本地桌面虚拟化是服务器虚拟化的重要雏形,而且当服务器虚拟化技术成熟之后,真正的桌面虚拟化技术才得以出现。
1.2.3 虚拟桌面技术的发展
自计算机诞生以来,计算机硬件系统性能的发展速度一直远远快于软件的发展速度。根据摩尔定律,集成电路上的元器件数目,每隔18~24个月便会增加一倍,性能也将提升一倍。随着集成电路的集成度越来越高,计算机硬件的体积越来越小。但与此同时,系统资源的利用率却没有提高多少。据统计,UNIX服务器的中央处理器(CPU)平均利用率不足29%,而基于Windows的服务器CPU更是不到13%[3]。一方面,服务器的计算资源未能得到有效利用,造成极大的浪费;而另一方面,用户却无法利用服务器的剩余计算资源构建自己独立、完整、与其他用户互不干扰的桌面操作系统环境。因此,随着服务器计算和存储能力的日益增强以及服务器虚拟化技术的逐渐成熟,服务器可以提供多台桌面操作系统的计算能力,在同一个独立的计算机硬件平台上同时安装并运行多个操作系统的桌面虚拟化技术便应运而生。也有人将这种虚拟桌面称为第一代虚拟桌面,其核心要素是每个终端用户的桌面操作系统都集中在服务器上以一个虚拟机的形式运行,终端用户可以通过多种方式和设备访问自己的桌面。
虚拟桌面技术将远程桌面的访问能力与虚拟操作系统结合起来,极大地提高了计算机资源的利用率。物理机器使用虚拟化技术后,一台服务器可以支持几十甚至几百个桌面系统同时运行,服务器的平均资源利用率可提高到90%[3],基本上已达到单个计算机最优的饱和工作量,而且减少了整个系统的成本,大幅度降低了能耗。应用桌面虚拟化技术后,单台服务器的成本投入需要适当增加,即高配置的服务器要比低配置的服务器更适于部署虚拟化系统,但另一方面也能获得更显著的效益,例如虚拟桌面技术可能使得2倍的硬件投入产生4倍甚至更多的收益。而管理成本的降低、安全性的增强等因素还未被计算在内。因此可以说,是服务器虚拟化技术,使得虚拟桌面技术实现大规模应用。
当然,如果只是将原来运行在用户终端上的操作系统转变成为运行在服务器上的虚拟机,如果用户无法访问,那肯定是没有任何意义的。因此,虚拟桌面的核心,不是在后台服务器虚拟化的基础上实现桌面虚拟化,而是让用户能够在任何时间和任何地点,利用任何设备,以任何方式访问到自己的专属桌面,也就是虚拟桌面必须具备远程网络访问功能。而远程网络访问能力是通过远程访问协议实现的,远程访问协议性能对于最终的用户体验甚至整个虚拟桌面技术的成败都是至关重要的。目前,比较成功的远程访问协议主要有三个:一是最早由Citrix开发,后被微软收购并集成在Windows中的RDP协议,微软桌面虚拟化产品使用这种协议,后来Vmware研发推出的Sun Ray等硬件产品,也都是使用RDP协议;二是由Citrix公司开发的、自己独有的ICA协议,这种协议主要应用到Citrix的应用虚拟化产品和桌面虚拟化产品中;三是VMware推出的、其自有的PCoIP协议,用于提供高质量的虚拟桌面用户体验。
从目前官方的文档记录与实际测试来看,通常情况下,ICA协议的性能要高于RDP协议,需要30~40kbps的带宽,而RDP的带宽需要约在60kbps,这些都不包括视频、游戏以及3D制图状态下的带宽占用率。一般情况下,在LAN环境下,一般的应用RDP和ICA都能正常运行,只不过是尽管RDP协议造成网络带宽占用较多,对于性能还不至于产生很大影响,但是在广域网甚至是互联网上,RDP协议基本不可用。在视频观看、Flash播放、3D设计等应用上,即使在局域网环境下,RDP的性能也会受到较大影响,但是采用ICA协议的用户体验会好得多。VMware view 5.0产品声称其进一步提高了PCoIP协议的性能,将带宽占用率降低了75%。需要指出的是,微软、Citrix和Vmware这三家公司分别推出了自己研发的服务器虚拟化技术产品,比如Hyper-v是微软公司的,XenServer是Citrix公司的,而VMware Esxi毫无疑问是Vmware公司的。
1.2.4 虚拟桌面技术的成熟
正如天下大势,分久必合,合久必分,IT系统技术架构的历史变化亦是如此。从最早主机-终端模式,到PC分布式模式,再到今天的虚拟桌面模式,其实体现了计算使用权与管理权的分离发展。在主机模式下是集中管理,但是应用必须到机房去使用;PC分布式时代,所有计算都在PC上进行,随之IT的运维管理也变成分布式的,这同时也给IT部门的运维管理带来巨大压力,需要分别管理所有的用户PC机,导致管理成本大幅度上升。
1.2.5 虚拟桌面技术的未来
虚拟桌面未来将何去何从?有观点认为,桌面即服务(Desktop as a Service,DaaS)可能是虚拟桌面未来的发展方向之一。随着云计算的兴起和普及,作为基础设施即服务(Infrastructure as a Service,IaaS)的一部分,虚拟桌面和IaaS结合,将桌面资源作为一种服务分发给最终用户,从而进化为一种信息服务——“桌面云”。虚拟桌面托管在云端,使用某种远程显示协议,提供对这些虚拟机的远程访问。用户无须额外安装软件、硬件,无须施行桌面和应用程序生命周期管理,无须指定专门人员进行运行和维护,云端软件自动升级、打补丁,故障时能够快速恢复。用户几乎可以使用任何设备(包括智能手机、平板电脑等移动设备)办公,可以在任何时间、任何地点创建、存储、检索、编辑和更新文件,只要能够上网连接到云端即可。
但是,桌面即服务模式仍然面临三大挑战。
首先,DaaS的许可方式无疑是其发展的最大挑战。微软目前的许可政策使得许可桌面操作系统在云端运行即便不是不可能,至少也是非常困难的。虽然可以通过使用不同的底层平台,例如运行Windows Server 2008 R2而不是Windows 7来避免这一问题,但却会损害虚拟桌面本身所具有的个性化配置功能。
其次,DaaS的安全性问题是其面临的第二大挑战。对于大多数企业来说,数据都被视为最宝贵的资产之一。正是由于这个原因,许多企业仍不情愿把自己全部的机密信息托管在位于某个地方的、并非完全归自己控制的一个共享设施里。从理论上说,集中托管的桌面云位于专业的数据中心,企业更容易确保其安全性。但另一方面,安全常常取决于第三方,由于全球各地每天都在发生众多的数据泄密事件,让企业将机密信息托管在其他地方仍是采用DaaS面临的一大挑战。这一挑战不仅与企业文化有关,还与需要遵守的地方法律法规有关。
最后,提供对数据随时、随地的实时访问是DaaS面临的又一挑战。对于任何“桌面即服务”解决方案来说,对数据的访问至关重要。为了给托管桌面提供更加稳定的连接性,企业可以创建某些应用程序的本地拷贝,以访问这些数据。不过,这又带来了另一个挑战:确保数据同步和安全。
总而言之,虚拟桌面产品要想完全转型为DaaS服务,仍然有许多问题需要解决。