“一项好的技术不会消亡,它只是会不断的以新的形式重新出现” -- 我自己


现如今流行的各种热门技术--云计算,大数据,深度学习,分布式存储,等等等等,其实都不是某一年突然从石头里面蹦出来的。一直关注学术界和产业界就会发现,它们都和早年的某些热门研究方向一脉相承,只是由于各种客观条件的不成熟,早期试图商业化的尝试失败或者无疾而终。而最终在这个年代,在人才,硬件,基础设施建设全面到位的条件下,终于瓜熟蒂落,结出硕果。


这一篇我打算从一个比较小的话题开始说起,那就是桌面虚拟化,也就是现在的常说的VDI。


早期的计算机只有专业人士使用,使用模式就是一台跑着UNIX的大型机带上数十台闪烁着绿色字符的终端。这应该是最早的桌面虚拟化--即计算完全由服务器端完成,用户端只负责处理输入和输出。后来随着DOS和Windows的发展,Novell Netware成了机房无盘工作站组网的最佳方案。Netware应该不算完全意义上的桌面虚拟化。Netware的工作站没有硬盘,但是有独立的计算能力,相当于服务器只负责存储这一块。


第一个真正尝试桌面虚拟化的是伟大的Sun公司的产品-SunRay,如图

谈谈桌面虚拟化_桌面虚拟化 VDI

SunRay实现了真正意义上的桌面虚拟化-即客户端只有简单的网络处理,图像显示和键鼠输入功能,图形化桌面的生成,计算完全由服务器端完成。更先进的事,一个桌面会话与一张智能卡绑定,当拔出智能卡查到另外的SunRay终端上,用户已经打开的窗口和正在处理的程序都会迁移到新的终端上显示出来。我就曾经试过在Sun中国的办公室打开文档,然后抽出智能卡,坐飞机到美国办公室之后,插入智能卡,所有打开的程序历历在目。


要知道,如今看来都显得这么时髦的模式,是什么时候推出的呢?它是Sun公司在颠峰时期的1999年推出的!只能说Sun公司的技术人员太有超前眼光和研发能力,却没有好的商业模式来将他们的创举变成金钱....


Sun的产品看起来很美好,但是为什么没有成功呢?主要有两个问题,第一是对桌面系统的兼容不够。早期的SunRay只能支持Solaris操作系统,桌面的美观易用程度和Windows乃至于Linux完全没法比。用户对Solaris系统的抵触造成了早期无法推广。后来,Sun收购VirtualBox以后,把虚拟机引入了SunRay。在终端上用户可以通过VirtualBox的客户端打开运行在服务器上的windows虚拟机桌面,如上图所示。但是,这样就引入了下一个问题--性能。


VirtualBox其实是一个相当初级和原始的虚拟机软件,不客气地说,它只能算是一个PC上的玩具。如果SunRay服务器所负载的用户全部都用windows桌面的话,每一个桌面在服务器端都要启动一个VirtualBox进程,而且各个VB直接互相独立。所占资源完全由用户自己控制。而服务器最底层的Solaris在资源分配调度方面完全无能为力。

谈谈桌面虚拟化_桌面虚拟化 VDI_02

而战胜Sun的,就是VDI概念的提出者--VMWare。VMWare的ESX在服务器端直接接管所有硬件统一管理,ESX之上即直接是各个用户的Guest OS,层次的减少带来了性能的提升。ESX在对CPU,内存和存储的管理方面又进行了大量的优化(内存的Ballooning漂移技术,存储的VMFS文件系统),再加上强大的快照和迁移技术,使得用户能迅速的付出较少学习代价的部署虚拟桌面。

谈谈桌面虚拟化_桌面虚拟化 VDI_03

从1999年Sun率先把SunRay推向市场,到被VMWare(当然还有其它对手比如Citrix)完胜,Sun在相当长时间内只想让市场接受它自己的设计,而完全没有根据市场的需求进行优化和革新,10年下来,SunRay产品和初期的产品看起来甚至于都没什么本质区别,这就是Sun失败的主要原因。


回到整个业界,VDI的面临的挑战和难题,公认的就在存储方面。多个GuestOS混杂的无序读写和大量GuestOS同时启动带来的海量的读操作,给虚拟存储带来巨大压力。目前已经有相当多的学术研究和产品致力于解决这类问题。例如,去年底刚成功IPO的Nimble Storage公司采用的CASL架构,以SSD做为读cache配以特殊的算法能在数倍乃至十倍提升读性能,将混杂无序的写操作归并,压缩,转换为顺序写操作,能在相当程度上提升写性能。


在美国目前桌面虚拟化已经想当成熟,很多大型机构都采用了虚拟化桌面来降低IT维护和管理成本。由此催生出对更高性能的追求,孕育了相当多有想法有能力的创业公司。反观国内,目前桌面虚拟化并不普及,乃至于相关产业链整体都不发达。希望有朝一日,国内也能诞生出有能力在巨型机构部署高性能桌面虚拟化方案的公司来。


(写字真累啊!)