虚拟化技术的过去现在和未来




看似题目比较大,其实谈论的东西不多,只想借机感慨下软硬件技术的进步速度,这也是为啥搞IT的人都必须持续学习持续进步的原因之一,新东西太多,一不小心就落后时代了。。。

最开始的时候是VMware搞的全软件模拟的全虚拟化技术,性能不好,开销大,但开了x86虚拟化的技术先河,所以VMware是虚拟化技术的老前辈

后来Intel看到了商机,就想着把软件虚拟化遇到的困难用硬件来搞定,于是VT技术就诞生了

搞定了CPU之后,开始解决内存虚拟化问题,搞定了内存,开始解决网卡、显卡等传统硬件不支持硬件虚拟化问题

总而言之,虚拟化技术的发展过程,其实就是以Intel为代表的硬件芯片公司逐步解决硬件虚拟化缺陷的技术进化过程

当今虚拟化技术基本已经把内存、CPU硬件虚拟化技术实现的比较完美(10%以内的性能损耗),但在网卡、显卡虚拟化技术方面,还有很大的提升空间,尤其是显卡虚拟化,到目前为止还没有完善成熟的解决方案

但网络的虚拟化,其实更多的企业是用软件方式解决的,所谓的软件定义网络技术(SDN),基于openvswitch、openflow等软件交换机、相关协议来搞定,也已经有很大规模的现实应用,性能方面一般来说可以满足需求,尤其是在性价比方面,SDN技术更具优势,当然在这方面,Intel也不是毫无作为,他搞了SRIOV、DPDK等技术,来分别从硬件、软件两个方面提升网络虚拟化的性能

但是显卡虚拟化确实还有很大的改进空间,NVIDIA等公司也在努力

KVM、Xen、VMware等虚拟化技术平台,就是针对各种硬件虚拟化技术进行封装的,所以各家的性能来对比,基本不会有太大的差距,所不同的是软件的稳定程度和生态圈的成熟度

说完了传统的虚拟化技术,我们再聊聊最近很火的容器虚拟化技术

容器也是很老的一个概念了,最近之所以能火起来,还是因为docker这个东西,它给我们带来的最大的好处就是服务或者业务部署的标准化和便利性,你如果要发布一个应用,几乎不用再用传统的打包(deb、rpm等)、自动化运维(puppet等)等技术来去部署或者说发布你的应用,二是只需要一个简单的符合一定格式的文本文件即可

更重要的是,官方还提供了一个镜像市场(当然也有很多非官方的),你可以免费的从里面挑选适合你的各种镜像或者说服务发布文本,从而方便的部署你想要的应用或业务,这里我们可以对比下手机操作系统(Android、IOS、WP),为啥IOS能率先成功,Android能紧随其后,而WP却始终不能流行起来,原因很大程度上都是因为应用市场的活跃度

docker等容器技术的有点有很多,除了上面提到的标准化和便利性之外,还有高性能这个同样十分讨论人喜欢的优点,它能做到几乎与原生系统一致的性能

但它的缺点也是很让人郁闷的,那就是隔离性比较差,虽然Linux内核一直在优化改进,但毕竟还和KVM等完整虚拟化技术有很大的差距,于是aws、阿里云等云计算巨头也不得不采用折中方案,把docker等容器技术跑在用户自己的虚拟机里面,来解决隔离性问题

由此可见,传统技术和新兴技术都各有优劣,硬件巨头Intel为了体现其硬件的能力,开始在相关技术改进上发力,正在试验性的推出Clear Linux和Clear Container技术,分别改进传统虚拟化技术的性能、资源占用问题和容器技术的安全性问题,大有一统天下之势,其实目前也只有Intel有实力做到这点

但是国人也不甘示弱,从另外的角度来融合传统虚拟化和新兴容器技术,结合彼此的优势来打造无短板的虚拟化技术,这就是https://hyper.sh/,从技术上来说,hyper.sh没有特别高深,其原理简单来说就是把kvm虚拟化技术所用到的引导系统(BIOS)从传统的引导比较耗时的BIOS系统改为十分迅速的qboot,并且把guest os的内核(也就是虚拟机镜像的操作系统)简化到极致,基本上就是专门为docker主机而打造的内核,其他无关的东西统统裁剪掉,做到了启动速度和guest os本身资源占用的大幅降低,具体数据可以参考他们官网的文档资料。更难能可贵的是,这个技术是国人提出并实现的。

Clear Linux和hyper的区别可以参考infoq的这篇采访记录:http://www.infoq.com/cn/news/2015/06/Hyper-Hypervisor-Docker

从功能上来讲,hyper方案只能支持docker,相比Intel的Clear Linux,适用场景明显受到很大限制,但至少他做到了速度、性能和安全的相对均衡。

上述两种技术基本都可以做到在常见的服务器上,不到1s启动一台虚拟机,基本可以达到人类可感知的普通用户态进程的启动速度。相比我们当前普通云主机动辄几十秒甚至几分钟的速度而言,是一个质的飞跃。

就我个人而言,我比较看好Intel的Clear Linux技术,如果后续能后做到与当前kvm虚拟化技术一样稳定成熟,其应用前景不可限量。

而对于docker技术,也将有他的一席之地,但肯定不会一统天下,因为他的适用场景还是受限的,如果做到适应所有场景,又失去了其与kvm技术对比的优势,尤其是一旦Clear Linux技术成熟后,docker的速度优势将不复存在。

但docker的服务发布能力却是Clear Linux所不具备的,也是他征服开发者的一把利器,这也是他能在未来的虚拟化江湖占有一席之地的本钱,除非Intel也做出一套类似的东西并且更加优秀才能与之抗衡,不过我相信这不是Intel的发展战略方向,而且即使他真的做了,估计也会跟windows phone的结局一般让人惋惜,有时候技术的niubility并不能决定他的流行程度和生死,更多的要考虑人的因素,就像docker还不能被很多公司的技术、运维人员接受一样。