转:从桌面虚拟化谈起

导读:此文主要对当前桌面虚拟化架构作了简要的介绍,笔者非这个领域的专家,抱着学习的态度,根据一些公开的资料,希望整理出一些有价值的东西出来,做抛砖引玉之用。由于本文非学术性文章,故一定不够严谨,望各位读者海涵。

IT产业的革命是迅速的, 从第一台计算机诞生[1](1946年2月14日) 到现在(2012年3月),不过经历了短短的66年,按照中国传统的天干地支历法,不过是一个甲子左右的时间。在此之间,我们走过了大型机时代, PC时代,网络时代,跨入了“云计算”时代。人类的追求和渴望永远没有尽头, 在计算机没有普及的时候,人们渴望拥有一台自己的PC;当进入网络时代后, 人们渴望能够自由地在网上冲浪。 有了计算机和网络,人们渴望追求更好的服务。于是大型数据中心越来越多!似曾相识又不尽相同,哲学上好像把这个称做螺旋式上升。

为了提供高质量的服务并减少成本,新兴技术出现了,一些老技术也耐不住寂寞,改头换面后,再次登上了闪亮的舞台, 虚拟化技术就是其中的翘楚。诞生于大型机时代的虚拟化技术,用于PC机(以X86为主)以后呼风唤雨,成为了云计算的基石。虚拟化的革命继服务器(server), 网络(network),存储(storage)等之后 ,熊熊战火已然蔓延到桌面(desktop)领域,诸IT公司群雄逐鹿,各显神通。那么究竟什么是桌面虚拟化呢?让我们进入正题。

桌面虚拟化简介

根据维基百科(wikipedia) 上面的定义[2],桌面虚拟化又名客户端虚拟化,主要利用CS (client-server)计算模型,把用户个人的桌面计算环境和具体的物理机器分离开来。回想曾经在高校学习之时,曾经使用过相关的技术,有一个熟悉的名字叫做远程桌面。每次我在寝室懒得跑机房之时,就会在机房的机器配置一下远程桌面服务。在windows系统上 一般使用RDP(remote desktop protocol)[3]协议;linux上一般使用vnc[4](virtual network computing)软件,使用的是RFB(remote framebuffer)协议 [5]。这样想使用远端机器的一些资源,就没必要奔波于寝室和机房之间,反之亦然。另外如果有些操作系统能支持多用户同时登陆(现在一般的操作系统都支持),不同的远程用户就可以同时共享一些资源。诸如多个用户可以同时使用不同的账号使用ssh登陆Linux 服务器,当然前提是Linux已经开设了SSH server并且指定了多用户的模式。可见在没有虚拟化技术之前, 桌面虚拟化技术是存在的,服务器在OS的管理下,能够同时服务不同的用户,并且能够做到一定程度的隔离。 这样的服务,在大型机时代是非常流行的,但是用户个人桌面的计算环境似乎还没有完全和服务器剥离开来,用户的个性化也没有得到很好的满足。

出现了虚拟化技术以后,事情变得有那么点不一样了。我们知道,虚拟化能够高效的管理一台服务器,装上了某个虚拟化软件(VMM 或者hypervisor)后,一台服务器可运行多个虚拟机。如果每一个用户独立使用某个虚拟机,那么隔离的粒度和以前相比就有很大区别。在OS中,用户之间的隔离基本是基于角色的安全控制,所使用的是基于角色所分配的各类资源;引入虚拟化后,隔离的粒度可以虚拟机为单位。这样,每个用户可对虚拟机做定制。此外虚拟化提供了一个动态迁移(live migration)的特性,那么 用户的虚拟机可以从服务器之间迁移,这样虚拟机和真实的物理机器就是一个松耦合的关系。 把虚拟化技术和原有的远程桌面技术相结合,诞生了一个新的技术——虚拟桌面基础机构(virtual desktop infrastructure), 简称VDI。在VMware公司的一个VDI相关的文档中[6],VDI 是这么被定义的:用户的操作系统和应用运行在集中管理的数据中心的虚拟机中,这个环境被称为虚拟桌面。然后用户使用个人电脑等thin client通过远程显示协议访问这些虚拟桌面。

出现VDI 后,客户端不再需要是一个thick client,变成thin client即可。其主要作用是进行展示和人机交互。用户 通过可访问的虚拟桌面,控制远端数据中心或者服务器所分配的各种资源(包括计算,内存,存储资源), 最终的计算等行为都由服务器端完成。

举个简单的例子来讲, 在现在主流的企业办公环境下,每个员工都配置了一台笔记本或者台式机。那么企业内部对这些机器有管理的需求。从员工的角度来讲,自然希望完全掌控所拥有的机器。 从企业的角度来讲,主要可能有以下两点需求:(1)希望此机器能被“正确”使用,即做工作相关的事情;(2)数据安全性。涉及公司重要的数据不能被被员工或者黑客带走。诸如防止员工使用各种外部存储工具,例如USB盘盗走用户的数据,于是OS被配置成不识别USB盘或者不提供USB接口,并加载监控系统;防止员工使用网络上传各种数据,于是禁止各种端口,监控机器网络出口。为防止外部黑客的攻击,则每台机器上需要安装一些杀毒或者病毒防范软件,确保不会给病毒感染。当然病毒库时不时地要被更新一下。种种需求,导致企业内部的IT管理变得复杂且高成本。VDI的出现,似乎能解决这样的问题。在VDI 模式下,员工可能不再被配置计算能力强大的laptop或者台式机,物理机器上也不被安装复杂的操作系统。只会配置一个相对简单的客户端,员工利用客户端即可访问服务器上的VDI实例(虚拟机)。呈现给用户的是一个和物理机器完全分离的计算环境,员工甚至不知道相应的VDI在哪台服务器上,或者自己的VDI实例和和谁在共享某台物理服务器。 在这样的模式下, 雇主的需求(1)和(2)能相对容易的被满足,管理的代价也降低了。唯一苦恼的可能是员工,失去了所谓的“自由”。

不过VDI 也可用于移动计算(mobile computing )中,给用户带来极大的便利。众所周知,移动设备已经越来越智能。例如主流的手机:CPU的计算频率越做越高甚至出现多核,内存和外存(一般是flash)的容量也越来越大。用户可安装的软件也越来越多, 手机似乎变成了laptop。这样手机势必变得非常臃肿,另外引入更多的安全问题。那么解决方案是什么呢? 给手机提供一个VDI客户端,当用户需要某些服务的时候,通过VDI客户端直接操控远程的个人计算桌面(可对应一个虚拟机)。这样的好处在于,手持设备上不必安全过多的软件,安全也得到了有效的保障。随着软件的减少,病毒防范变得简单,保障VDI客户端进程的安全性,使VDI的信息不被外泄即可。那么在云计算时代中,客户端两大安全问题(用户认证,客户端软件安全)中的后者就能被较为容易的解决。

我们可以看到VDI 也有一些变种,在维基百科上被定义了4种[2]: Hosted, Centralized, Remote synchronization, client-Hosted.   从笔者看来,实际只有两种。 主要根据VDI实例的位置:(1)  完全在服务器端;(2)可在服务器和客户端之间复制或者同步。最近出现了一种叫做IDV(intelligent desktop virtualization)的技术,  于此相关的产品有NxTop Enterprise 和NxTop express[7]。其核心主要是对laptop虚拟化,运行hypervisor,使得laptop能够支持多个虚拟机。其中某个虚拟机可安装一个NxTop的client,然后访问VDI相关的服务。用户需要的VDI实例(某虚拟机) 可被直接被下载到用户的机器上。 当然这些虚拟机是需要被管理的。 尽管IDV 号称,性能要比VDI 好,但是从笔者看来,IDV主要是对客户端实施虚拟化,可包含在笔者所提的第二类中。IDV的最重要意义在于, 在网络访问有问题的时候,把相关的虚拟桌面下载下来,当然前提是客户端必须部署虚拟化环境。

主流虚拟桌面产品

前面花了比较大的篇幅,介绍了一下桌面虚拟化。在这一个部分,我们来简要介绍一下业界主流的虚拟化产品,看看有何异同。表1列出了一些著名IT公司的桌面虚拟化产品,但不是全部,仅供参考:

主流虚拟桌面产品对比

从表1中可以看出,桌面虚拟化的主要推动者以从事虚拟化技术的公司为主。VMware的Hypervisor立足于ESX(i) server,Citrix的是Xen,Microsoft 有Hyper-V等,服务器端虚拟化的成功,使得他们在VDI方面要比其他公司稍微领先一些。 在这里,笔者准备介绍一下VMware和Citrix两家公司的VDI 产品,然后进行一些比较。

VMware view 的后端由vSphere所管理的一群ESX(i) 服务器组成, 每个服务器上运行用户的虚拟机,客户端只要安装一个基于PCoIP的thin client,就能访问在服务器端的VDI service。 PCoIP协议的全称是PC-over-IP, 发明者是Teradici[15] 和VMware。PCoIP 的实现基于传输层的UDP协议,提供了三个重要的特性:

a) 服务器端渲染技术(Host rendering)。那么从服务器传送到客户端的数据只是一些加密的像素,客户端只需要有解码的能力即可, 无需知道服务器端究竟运行了什么样的程序.

b) 对不同图像采用不同的编解码方式。 PCoIP对不同类型的图像进行分析,然后采用最合适的编码方法,对图像或者像素进行压缩。基于多种算法的智能图像分解和优化编码使得传输和解码更有效,并且减少了对带宽的消耗.

c) 感知网络,及时调整图像质量。由于PCoIP 不传输文件,只传输像素。那么在进行实时监控网络后,可随时调整图像的编解码方法,通过改变图像的像素,来保证用户体验。 为此和RDP协议相比,PCoIP的协议在WAN上的网络延迟要要小一些。

Citrix的XendeskTop主要采用了HDX(High definition experience)[11,16]。 Citrix原来有一套叫做ICA(Independent computing architecture)[17]的协议,但是随着微软对RDP协议的改进以及VMware的PCoIP的出现,Citrix为了应对压力,改善用户体验,使用了一系列HDX标识相关的特性。在HDX的主页[11]中,我们可以看到8种带HDX标识的特性:

1) HDXTM MediaStream。针对音频和视屏内容,达到在本地欣赏多媒体内容的效果。服务器端直接传送压缩过的媒体内容,然后利用客户端的设备对内容进行渲染。

2) HDXTM  Realtime。增强实时合作性。使得终端用户可以连接外部音频设备然后更好的和数据中心的VDI 或者应用程序交互。

3) HDXTM Broadcast。 在任何网络之间保障可靠,高性能的连接,利用ICA协议。

4) HDXTM SmartAccess. 保障用户在任何地方,使用任何设备访问VDI 实例。

5) HDXTM Plug-n-play。 使得用户可以任用任何本机资源,包括USB, 多屏幕显示,打印机等。

6) HDXTM RichGraphics with RemoteFX。 使用Microsoft的RemoteFX技术,提高2D或者3D应用的质量。

7) HDXTM WAN Optimization。使用压缩,缓存,流量有限等技术提高在广域网中的用户体验。

8) HDXTM Adaptive orchestration。看起来是一个综合解决方案,根据用户的设备,网络,应用程序来动态平衡性能,安全性以及数据中心桌面基础机构代价等因素。

比较VMware和Citrix的相关技术,  我们可以看出他们的目标是一样的,都是提高VDI的用户体验,但是他们的解决方案有所不同。在图像压缩和传输方面,VMware使用的PCoIP技术是在服务器端完成渲染,对客户端的要求非常低,只要能够解码就行。而Citrix的方案会利用客户端的一些硬件,在某些场景下,甚至对客户端有一定的要求。在网络传输方面,PCoIP构建在UDP协议之上,Citrix的HDX 依赖于TCP 协议。底层究竟使用UDP 还是TCP好,在[18]中有人作了详细的论述。毫无疑问的是,UDP非常适用于audio或者video等multimedia,因为不在乎少量的丢包。对于一些重要信息的传输,TCP 在传输层的确比较有优势,不过UDP被包装后亦可在用户层实现传输的可靠性。

桌面虚拟化的背后

以上内容大多数属于客观性的描述, 这一部分笔者想谈谈个人的看法,仅供一笑。VDI不算一个特别革命性的技术,但是贯彻了一个非常强的理念: 计算或者数据应该放在服务器端,客户端的主要作用是数据的展示和进行简单的人机交互(人类主要主要通过5感中的视觉,听觉,触觉)。当年VDI技术的主要目的是使得交互更加的自然,达到和本地机器差不多的效果。当然一旦用户的数据都在服务端,那么用户所能得到的可能远大于过于的情况。 这样的理念无疑是正确的,用流行的话语是现在是一个云计算的时代,但更客观的描述应该是IT as a service 的时代。从曾经流行的Grid Computing到现在Cloud Computing, 随着需要解决的问题的难度增加, 必须使用大规模的计算(例如分布式计算)加上可控的管理(数据的安全性)。有个理念叫做,数据最好在计算资源附近。当你本地计算能力不够的时候,你就要诉诸于更为强大的组织帮你解决。有时候你的问题是没有输入数据的,当你有输入数据的时候,数据就必须上传,这样就涉及到数据的安全性问题了。这么看来,VDI 似乎给用户构建了一个和大规模数据中心交互的接口,当然以前的各种客户端软件也是一个接口,不过他们只是针对单一的服务。 但是VDI 不同,它是一个统一的接口,当你通过这个接口,就可以找到“一切”。虽然VDI的前身是远程桌面,现在的VDI也许是老瓶装新酒,不过它是一个必须的存在。

VDI的服务器端,实际代表了服务商数据中心的能力。如果没有强大的实力,VDI的效果显然是比较差的。 就以VMware 的实现为例,我们假设用户的VDI 对应一个虚拟机,那么我们需要分析一下,为了提供高质量的服务,什么样的技术是必须的呢?(我来随便列几点,仅供参考):

1) 虚拟机动态迁移技术。这一技术的本意是为了对服务器之间的资源进行动态平衡。但是对VDI用户来讲也是需要的。我们假设一个用户经常在全球各地飞来飞去,当他(她)使用VDI 客户端进行远程桌面访问的时候,假设对应的虚拟机一直驻留在某地,那么服务会如何呢,网络访问速度一定让人满意呢?如果不行,是不是应该让虚拟机从某个子数据中心迁移到另外一地呢?如果确实需要这样的功能,那么数据中心就必须支持WAN之间的虚拟机迁移。这就涉及到了虚拟机的迁移的两大难题,存储迁移和IP重定向的解决方案。在这个问题上,VMware, Cisco,EMC等做了相当大的工作。

2) 数据共享技术。虽然用户的虚拟机可以定制的,但是对于一些必要的软件,大多数用户都是必须。那么我们是不是要尽量减少相同数据存储所带来的问题。那么这里就有一个共享数据的需求, 还涉及到了数据去重复技术(de-duplication)。

3) 可信计算技术。当用户有个疑问,怎么可以确信个人数据在数据中心是被合理授权使用的。尤其是怎么确保虚拟桌面计算环境是完全隔离的,它不能被恶意攻击者攻破,甚至不能被数据中心的管理员访问。那么服务商如何去保证呢?前者需要服务商提供一些病毒扫描和预防软件,甚至需要支持虚拟机中OS 或者软件的动态更新。后者需要可信计算技术的支撑 ,从硬件到软件构建一个可被度量的信任关系,确保各层次的软件都是可控的。

4) 大数据分析的能力。用户通过VDI 连入数据中心,势必是希望得到在本地不能得到的服务。在这个时代,大规模数据分析成为了一个普遍的需求。所谓的科学计算,倒是成为了小众群体。为此数据中心必须有大规模数据分析的能力,比如拥有大规模的分布式数据分析集群(e.g., Map-Reduce cluster)。

结语

本文简单介绍了桌面虚拟化相关的技术,各位读者如有兴趣,可阅读笔者所列出的一些链接,进行更系统化的学习,希望能对大家有所帮助。

[参考资料]

[1] http://www.wst.net.cn/history/2.14/0214_1.htm

[2] http://en.wikipedia.org/wiki/Desktop_virtualization

[3] http://en.wikipedia.org/wiki/Remote_Desktop_Protocol

[4] http://en.wikipedia.org/wiki/Virtual_Network_Computing

[5] http://en.wikipedia.org/wiki/RFB_protocol

[6] http://www.vmware.com/pdf/virtual_desktop_infrastructure_wp.pdf

[7]  http://www.virtualcomputer.com/nxtop-enterprise

[8] http://www.teradici.com/pcoip/pcoip-technology.php

[9] http://www.vmware.com/files/pdf/VMware-View-PCoIP-Network-Sizing-Guide-IG-EN.pdf

[10]http://www.citrix.com/English/ps2/products/product.asp?contentID=163057&ntref=mainxdvanityurl

[11] http://hdx.citrix.com/

[12] http://technet.microsoft.com/en-us/library/ff817578(v=ws.10).aspx

[13] http://www.oracle.com/us/technologies/virtualization/secure-global-desktop-ds-068717.pdf

[14] http://www.oracle.com/us/technologies/virtualization/sgd-dist-dev-403755.pdf

[15] http://www.teradici.com/teradici.php

[16] http://searchvirtualdesktop.techtarget.com/news/1370602/What-is-Citrix-HDX

[17] http://en.wikipedia.org/wiki/Independent_Computing_Architecture

[18] http://searchvirtualdesktop.techtarget.com/feature/The-Layer-4-protocols-behind-PCoIP-and-HDX-which-is-better-for-VDI

关于作者

转:从桌面虚拟化谈起

杨子夜 EMC中国研究院云基础构架实验室高级研究员,毕业于复旦大学,关注系统虚拟化,操作系统,系统安全,文件系统等。

你可能感兴趣的:(虚拟化)