首页 > 代码库 > 从VMWare到Openstack到FDIO
从VMWare到Openstack到FDIO
从VMWare到Openstack 到FDIO
——软件虚拟化和硬件虚拟化之结合
作者:廖恒
以VMWare为代表的软件虚拟化技术在企业IT中已是耳熟能详的不争现实。据在HPISS任职的好友告知,VMWare等Hypervisor在企业服务器的预装率已达70%-80%。采用虚拟化技术不光是为了把一台大的物理机切分成许多台小的虚拟机来使用,还有运维、系统升级、软件可靠性提升等许多我所不完全熟悉的原因。
最有趣的故事来自于一个已运营了二十多年的发电厂。它的管理终端采用的是早已绝种的IBMPC-AT(80286CPU)MS-DOS,还跑了Norvell网,采用的是ISA总线NE-2000的网卡。二十年前的发电厂依旧日复一日地烧燃料、产生电力,仿佛现实世界早已被凝固在投产的那一天。设计管控系统的供应商早已变身多次涅磐归西,但设备还得继续工作。它的键盘、显示器早已被替换多次,主机和备用的硬件也逐一坏损。好在当年的DOS还能在现代的PC上运行(感谢一贯努力的BIOS设计者维护了完美的前向兼容),但是,ISA网卡早已没有替换的配件,即使是有,也早已买不到带有这种总线的PC。当最后一台IBMAT报废之后,是否发电厂就会如世界末日来临一样停止发电,造成城市的瘫痪呢?这是一个有关恐龙的故事。现实世界里,IT设备有的停留在侏罗纪,有的却已提前进入了小灵通的未来世界,如何去跨越这个时代的鸿沟?——虚拟化!大家不用担心可怕的大停电事件。只要买台PC,装上一个Hypervisor,NE-2000的虚拟网卡Driver还在,EGA显卡模式也还在,所以一台2014年的Inteli7 CPU的PC就自动变身为一个1989年的 IBM-PC AT,带了NE2000网卡!
当5年前我开始定期对世界最大互联网数据中心开始一年两三轮的巡游遍历的时候,我惊呼到“几乎没有人在用Hypervisor!” 时至今日,这个现状除了提供公有云业务的数据中心之外,依然少有改变。到底是什么造成了企业IT和互联网数据中心之间如此大的不同?难道互联网数据中心不想得到企业IT管理员从虚拟化中得到的诸多好处吗?
利益——TCO,ROI,EPS,还是最根本的答案。以BAT、Google、Facebook为例的超大型数据中心,它们的应用几乎每一个都远远大于单个节点的计算和资源能力,因此一个以把一台物理机切分成更小的虚拟机、并在单机内部的虚拟机之间进行资源分配调度为主要技术基石的Hypervisor技术,对一个scale-out的机群调度有些力不从心,也没有多少必要。
另外,软件虚拟化技术在I/O资源访问上,存在必然引入的额外开销。因而,你跑了10G网络,跑上复杂的协调,可能就已损耗了一定比例的CPU资源,你最新的SSD通过虚拟化层,看到的延迟可能就不再是微秒级,IOPS不再接近百万次。因此,今天的虚拟机在分秒必争的互联网世纪就抵不过裸体的物理机(BareMetal),因为采用了影响效率的虚拟机,就需要部署更多硬件来支撑同样的业务负载,这就需要花费更多成本。
那虚拟化带来的额外开销是否可以避免呢?这一点并不是十分困难。SRIOV等硬件技术可以在虚拟机和硬件之间建立一个直通的路径,故此在I/Opath上可以消除虚拟机的影响。实际上从5年前开始,我们(PMC-Sierra)设计的SAS控制器、SSD控制器等,在硬件上就已经支持了SRIOV。但时至今日,却没有找到理由(BusinessCase)来打开这些功能。原因除了需要开发额外的软件(固件)来支持SRIOV,用户不愿意为这些新功能支付额外的价钱,再有,就是软硬(剑、气)二宗之间的互相争斗——Hypervisor如果放弃了I/OPath被直通透过,那Hypervisor就失去了在此通道上实现虚拟化高级功能的机会(如软件定义网络、软件定义存储),这在近期除了是个Revenue的问题,更是一个有关控制权的争夺。在此作者总结出了的一个有关体系结构软硬取舍定律:
凡是软件能实现的,就不需要硬件实现。再推进一步,凡是上层软件(应用)能实现的,就不需要系统软件来实现。凡是Driver能做的,就不需要固件。凡是通用技术能实现的就不需要专用技术。
因此,剑宗的弟子,不到万不得已是绝对不会学练气功的!这个定律,经笔者观察IT业多年的技术发展,几乎没有找到特例。
这里引入大发明家Thomas Edison的一句话:I will never inventsomething the mass do not need again!(我绝不再发明大众不需要的东西了!)
半导体业的发展故事就是硬件架构师们一次次的穷途末路,又一次次柳暗花明。公司轮替、改朝换代就时时发生,硬件之出路只能是:
“不断创造只有通过硬件手段才能达到的独特价值”。
回到超大规模互联网数据中心。前面提到的以公有云服务(Paas)为主的数据中心确实已经广泛部署了Hypervisor,并以虚拟机技术为核心,把虚拟机单位作为商品出售。最有名的要算AmazonAWS,Microsoft Azure,还有国内的阿里云。这些不同的实现具体采用的Hypervisor技术各有不同(Hyper-V, VMWare,Zen,KVM),但基本原理均相似。同时前面所述的性能开销也不同程度地存在于这些实现上。
有意思的是这三家巨头既提供云服务,本身又拥有大量的互联网服务(如Bing,Hotmail,Taobao,电商等),其他家作者没有直接的途径来确定,但微软多个Property(业务部门)的总架构师都一直告诉我,在公司集团内部,有明确的目标,要求各业务部门都把业务系统移植到Azure平台上。(即不采用各自独立、专有的数据中心系统的软硬件平台,而作为用户跑在统一的Azure平台上),这个过程是缓慢而缺少积极性的。五年过去了,终于有些业务逐渐跑到了虚拟化的Azure平台上,这也就是说总算有了些大型的互联网业务在基于虚拟化的Azure的云平台上)。不知阿里、亚马逊是否也有同样的中长期目标,使得集团数据中心的总体资源得到统一和整合。这个当前业务部门利益和集团长期利益之间的权衡,相信终会把互联网业务推向云平台。
故此,虚拟化技术作为主流互联网业务的运营平台,可以推测为中长期的趋势。
在Rack Space等云计算商家的推动下,Openstack作为一个开放式的虚拟化平台应运而生。目前,Openstack基于LinuxKVM虚拟化技术,可以对计算资源在机群上作协调管理,也有基于OVS的软件定义网络,以及相对原始低能的存储资源管理体系的建立。如果和VMware、AWS、Azure相比,可以说仍然处在学习和模仿的阶段。但作为一个完全开源的云平台(还有CloudStack等),它所吸引的IP资源是十分可观的。如果Linux在互联网完全击败其他商业OS的历史经验可借鉴的话,我们对Openstack取得的飞速进步和最终前景是十分乐观的。
再跨界回到硬件的体系中来看,Intel RSA、PMCFDIO、Facebook的OpenCompute等体系均着眼于以下共同的目标,即在Rack或POD级(几十到上百个服务器规模的机群)以硬件手段实现物理上相对分离的各种资源池,并在云平台软件的管控下对硬件资源之间实现动态的绑定(binding),这也就是说,整个机架成了一个全硬件的Hypervisor,实现物理机之间的动态资源分配和共享、迁移,这些硬件资源可完全呈现在软件的管理之下。
当单机内的软件虚拟化技术(KVM)和机群内物理机之间的硬件虚拟化(FDIO,RSA)再和云平台管控(cloudorchestration)的Openstack技术相结合,就会产生出新一代革命性的云软硬混合式的平台。这也是全软件定义数据中心的各门跨界架构师所追求之圣杯(HolyGrail),同时也是我们机架硬件体系的一个参考设计,即Openstack+FDIO实现机架内的物理资源完全池化和在整个机群上的虚拟机之间的不受限的自由分配、共享和迁移。
到此剑气二宗再度合一。