虚拟化技术揭秘系列(二):虚拟化的前世今生
之乎者也子路  2024-10-18 11:11   published in China

文章来源:华为数据存储FusionCube超融合基础设施2024专刊


虚拟化,按照维基百科的定义,是一种资源管理技术,是将计算机的各种实体资源,包括CPU、内存、磁盘空间、网络适配器等,予以抽象、转换后呈现出来并可供分割、组合为一个或多个计算机配置环境,由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些计算机硬件资源。


一般来说,我们认为虚拟化的产生可以追溯到1959年,牛津大学的计算机教授,克里斯•托弗在国际信息处理大会上发表了一篇名为《大型高速计算机中的时间共享》(Time Sharing in Large Fast Computer)的学术报告,首次提出了“虚拟化”的基本概念。在教授看来,虚拟化首先是一种时分技术,通过划分出若干时间片,实现不同应用程序或者是程序的不同线程在计算机中的并行处理,而要实现时分复用,最关键的是将计算机的硬件资源以时间片的维度来进行虚拟化处理。文章还前瞻性提出 了虚拟化的几个大的挑战,如隔离性(Isolation),怎么保证不同进程之间使用计算机资源时不会互相干扰;又如,效率性(Efficiency),如何避免虚拟化之后硬件资源使用效率下降等。


可以看到,虚拟化最初服务于大型计算机系统。当时,计算资源非常昂贵且稀缺,为了更好的利用计算资源,也为了更方便的使用计算资源,虚拟化应运而生。1972年,IBM发布了用于创建灵活大型主机的虚拟机(Virtual Machine,缩写为VM)技术,它可以根据用户动态的应用需求来调整和支配资源,使昂贵的大型机资源得到尽可能的充分利用,虚拟化由此进入了大型机时代IBM System 370系列就通过一种叫虚拟机监控器(Virtual Machine Monitor,缩写为VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机实例,从而使虚拟机开始流行起来。


x86架构的出现,打破了大型机的垄断,也使得计算资源的使用成本大幅下降,但是,单一x86服务器的能力是有限,一般要将多台服务器集合起来,才能达到并超过大型机的能力。怎么将多台x86服务器组合成为一个x86集群?成为x86集群后,资源怎么管理?虚拟化技术再次发挥关键作用,通过软件的方式来定义、分配和管理硬件资源,从这个角度上来说,虚拟化类似于操作系统,如果说操作系统是对一台计算机的资源管理,虚拟化就是对一个计算机集群的资源管理,所以也可以认为虚拟化就是集群的操作系统。

VMware的发展

VMware是x86时代虚拟化当之无愧的霸主,他定义了一个虚拟化产业,建立了一个广泛的生态,包括众多南向的硬件厂商和北向的应用厂商,共同构建了一个虚拟化的商业帝国。1999年,VMware公司率先针对x86平台推出了可以流畅运行的商业虚拟化软件VMware Workstation。2006年,VMware推出服务器虚拟化第一款产品—GSX,基于类型 II(寄居Hypervisor模型)寄居式虚拟化模型设计,故GSX需要先在宿主物理机上安装操作系统,再将VMware GSX作为应用程序安装在宿主机上,VMware通过宿主操作系统进行资源和操作系统的管理。寄居式虚拟化最大的问题是过度的依赖于宿主操作系统。2009年,VMware推出ESX,直接将ESX安装在物理计算机上,这种安装方式称为裸机安装。但是ESX并不能完全地摒弃宿主操作系统,他的解决方法是将虚拟化程序和操作系统整合到一起,也就是说,他将虚拟化主程序写入到Linux的操作系统内核中。ESX有效解决了对宿主操作系统过于依赖的问题,但是这种架构依然有他自身的缺陷:首先,由于虚拟化程序中包含Linux操作系统,故Linux操作系统中非虚拟化部分的进程会占用主机上的部分资源,造成资源的浪费;其次,在进行资源和虚拟机的管理时,只能通过脚本和代理,非常不方便。


2011年,VMware推出了ESXi,其与vCenter Server、其他功能组件一起,组成VMware vSphere虚拟化产品,此即为当前应用最广泛的虚拟化产品。同样,ESXi也是裸机安装在物理计算机上的,他做的改进是将虚拟化层中繁杂的Linux层剔除,只保留了VMkernel虚拟化内核对资源进行管理。这样便大大额降低了虚拟化层的大小,同时也减小了虚拟化层对物理化层的资源开销。ESXi做的第二大改进便是将控制台从虚拟化程序中移除,变成一个独立的组件,即Vsphere Client,使得管理工作更加的轻松便捷。ESXi体系结构独立于通用的操作系统运行,从而简化了虚拟化管理程序管理并提高了安全性。

EXSi基本奠定了VMware虚拟化霸主的地位,基于ESXi的vSphere支撑了VMware长达十年的高速增长。


XEN的发展

另一个虚拟化流派来自于开源的XEN,XEN最初是剑桥大学Xensource的一个开源研究项目,2003年9月发布了首个版本Xen 10,2007年Xen被Citrix公司收购,并成为了Citrix桌面虚拟化能力的一部分。

Xen是半虚拟化(Para-Virtualization)技术的典型代表。所谓半虚拟化,就是Hypervisor不对I/O设备作模拟,而仅仅对CPU和内存做模拟,由一个专门的管理VM负责整个硬件平台上的所有输入输出设备的虚拟化。半虚拟化最大的优势是,能让虚拟机能直接感知到Hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。相对于VMwareESX/ESXi来说,Xen支持更广泛的CPU架构,前者只支持CISC的X86/X86_64 CPU架构,Xen除此之外还支持RISC CPU架构,如IA64、ARM等。XEN的缺点是需要特定内核的操作系统,XEN需要修改操作系统内核,Windows操作系统由于其封闭性,不能被Xen的半虚拟化所支持。

开源的XEN虚拟化,大大降低了虚拟化的技术门槛,使得有更多企业能够参与到虚拟化技术的研发中来,中国的虚拟化产业也由此起步。2013年,华为推出了第一个基于XEN的虚拟化版本FusionCompute3.0,成为中国虚拟化的开山鼻祖。

RedHat不愿意缺席虚拟化的盛宴,2006年10月的Linux内核的邮件列表中,出现了KVM(Kernel-based Virtual Machine,基于内核的虚拟机),2008年,原创KVM的以色列公司Qumranet被RedHat所收购,KVM正式成为Linux内核的一部分,并仍然保持在在Linux的社区开源。

0074020241010142719447.png

与VMware ESXi和Xen等虚拟化产品不同,KVM的思想是在Linux内核的基础上添加虚拟机管理模块,重用Linux内核中已经完善的进程调度、内存管理、IO管理等代码,使之成为一个可以支持运行虚拟机的Hypervisor。因此,KVM并不是一个完整的模拟器,而只是一个提供了虚拟化功能的内核插件,具体的模拟器工作需要借助QEMU来完成。



KVM是基于硬件辅助虚拟化技术(Intel的VT-x或者AMD-V)的虚拟化解决方案,Guest OS能够不经过修改直接在KVM的虚拟机中运行,每一台虚拟机能够享有独立的虚拟硬件资源,如网卡、磁盘、GPU图形适配器等。


Linux原生的支持KVM对XEN的打击是致命的,因为广大Linux的用户使用操作系统的原生的虚拟化能力是最方便的,加之Citrix战略转向桌面虚拟化,对XEN社区的投入大幅下降。在这轮技术竞争中,XEN逐步处于下风,国内大多数厂商也纷纷从XEN架构切到KVM架构,华为在2018,推出了基于KVM的虚拟化版FusionCompute 6.3。其他厂商如H3C和SXF也纷纷走向KVM架构。


应当看到,中国的虚拟化产业并没有止步于开源版本的商用化,尤其是华为,通过多年的技术积累和商用考验,目前已逐步推出了国产自研的虚拟化软件,并在中国的虚拟化市场对VMware实现了超越。


0c409202410101445212468.png

Replies(
Sort By   
Reply
Reply