编者按:跟一些行业内朋友聊天,大家经常提到裸金属机的概念,实际上指的是物理机。与我理解的,如AWS等云厂商提到的,裸金属(Bare Metal)机,其实不是一回事。
那什么是裸金属机?以及物理机、虚拟机及裸金属机的优势劣势、区别和联系到底是什么?今天这篇文章,我们一起探讨。(注:本文提到的物理机、虚拟机和裸金属机,均指的是公有云场景下的相应云服务器。)
1 物理机的优势和劣势
物理机,顾名思义,是把物理的服务器完全交付给客户。物理机唯一的优势在于,所有的资源完全交付给客户。算力服务提供商不占用此服务器的硬件计算资源。
物理机的劣势,主要总结如下:
资源利用率低,成本高。没有资源共享,没有资源充分利用,资源浪费严重。多租户场景,需要实现租户之间的系统隔离;由于整台服务器都交付给了客户,因此隔离工作需要在外部交换机或其他主机上实现;额外的资源消耗成本较高,并且安全性较低。
2 虚拟机的优势和劣势
虚拟机,是公有云最常见的产品形态,没有之一。通过虚拟化技术,实现基于宿主机(Host)的虚拟机器,为客户提供更灵活更低成本的云主机服务。大体上,物理机的劣势,就是虚拟机的优势;反过来,物理机的优势,也即虚拟机的劣势。
虚拟(云)机的优势主要总结如下:
- 主机可控。虚拟机在宿主机侧都有完整的管理监控,以及网络、存储等I/O后台设备模拟和工作任务处理。整个虚拟机的运行情况处于可控状态,可以实时为客户虚拟机提供可能的服务,比如硬件出现问题的时候实时热迁移。支持高可用。如果服务器出现故障,运行于服务器的业务会自动热迁移到其他运行正常的服务器,业务客户对服务器硬件的故障无感。支持资源弹性。客户云主机,可以支持从1-N个弹性资源的选择,并且在主机创建之后仍可以对主机资源进行扩缩容。更低成本。通过虚拟化实现硬件资源的共享,通过自定义不同资源配比实现尽可能最高的资源利用率低,从而极致的均摊硬件成本,降低客户开销。此外,租户隔离不需要额外硬件配套,虚拟网络交换机在服务器本地,不额外消耗其他的硬件资源。
而虚拟机的劣势,则主要是性能的问题。虚拟机性能的额外损耗主要来源于两点:
- 虚拟化的损耗。虚拟化分为完全软件虚拟化、类虚拟化(也称之为半虚拟化)和完全硬件虚拟化。软件虚拟化CPU资源消耗较大,类虚拟化次之,完全硬件虚拟化几乎不需要额外的CPU消耗。目前,主流的CPU芯片都支持CPU处理器和内存的完全硬件虚拟化,网络和存储等I/O仍然是CPU软件虚拟化或类虚拟化。网络和存储两个主要I/O的后台工作任务的额外资源消耗。
(注:为了简化问题,这里仅涉及CPU,没有涉及GPU等业务加速处理器,下同。)
3 强强联合,物理机和虚拟机的优势合并
既然物理机和虚拟机都不完美,都存在这样或那样的问题。那么,能不能把两者的优势结合起来?使得物理机像虚拟机一样功能强大;同样的,虚拟机也能像物理机一样,没有额外的资源消耗,实现裸机级别的性能。答案是肯定的。
3.1 方案一,物理机实现虚拟机的强大能力,即真正的裸金属机
虚拟机的优势,如资源弹性、高可用等,主要是虚拟化系统提供的。要想物理机也实现这样的能力,则需要物理机也“支持”虚拟化。虚拟化系统主要分为两层:宿主机(Host)侧和客户机侧(Guest VM)。通过DPU,可以实现虚拟化系统宿主机侧所有任务的完全卸载。在传统虚拟机模式下,这部分工作是在CPU中完成,而在裸金属机的模式下,这部分工作卸载到了DPU中,并把性能敏感的任务进行了加速优化。
3.2 方案二,虚拟机实现物理机般极致的性能
前面我们分析过,虚拟机的性能损耗主要来自于非硬件虚拟化的CPU资源消耗,以及网络、存储两个主要I/O的后台工作任务(网络主要是VPC处理,存储主要存储虚拟化映射)的CPU资源消耗。
通过DPU,可以实现整个宿主机侧计算任务的卸载,这样就可以实现:
- I/O的完全硬件虚拟化(也可以理解为I/O模拟任务的卸载)。虚拟出来多个逻辑的硬件设备,直通到虚拟机中。这样,VM所在的Guest主机,实现所有计算机资源,即CPU处理器、内存和I/O设备,的完全硬件虚拟化(CPU核内存的硬件虚拟化由CPU芯片支持,I/O设备的硬件虚拟化由CPU和DPU共同支持)。实现完全接近物理裸机的性能。同时,网络和存储等工作负载实现从CPU到DPU的卸载和加速。在CPU中完全没有了这些“额外”的资源消耗,CPU完全交付给业务客户。
需要注意的是,在此种方案下,在CPU侧仍存在Hypervisor。这个Hypervisor比较轻量,主要是实现虚拟机的创建、销毁和迁移等操作。Hypervisor几乎不干扰虚拟机的稳定运行,也就几乎不会从Guest Mode切换到Host Mode,也就没有了额外的CPU资源消耗,从而实现虚拟机“独占”CPU。
4 更进一步,虚拟机和裸金属机的统一
既然可以实现物理机像虚拟机一样功能强大,虚拟机像物理机一样性能极致,那么接下来就会有一个新的问题:站在客户的视角,为什么要区分虚拟机和物理机?两者不可以统一吗?答案同样是肯定的。
系统可以自由的在虚拟机和裸金属机之间切换:
- 创建后的虚拟机,如果发现资源不够用,就可以在不改变系统环境的情况下,持续扩容,最终变成裸金属机。例如,在一台具有50核CPU的机器上,最开始申请了20个核的虚拟机。当发现资源不够用的时候,可以把此台主机扩容,扩容到30核、40核,知道50核。当达到50核的时候,就独占了此主机,也即从虚拟机形态变成了裸金属形态。但使用主机的客户,对此无感。同样的,裸金属的客户,在发现此主机业务跑不满的情况下,可以缩容,变成虚拟机。用同样的例子,客户申请了50个核的主机,此时为裸金属机,客户缩容到了40核,此刻给客户呈现的主机形态仍然没有变化。而技术上的来说,已经从裸金属机变更成了虚拟机。
统一虚拟机和裸金属机,可以实现客户业务使用和技术实现之间的隔离:从技术角度,实现底层实现和上层呈现之间的隔离,便利客户使用;l对客户来说,客户需要的是一个性能强劲、功能强大的云主机,用户不需要关心到底是物理机或虚拟机。
5 总结
物理机和虚拟机是两套独立的体系,独立的运维,物理机实例和虚拟机实例之间无法切换。这和我们一直讲的算力资源池化是相悖的。
因此,除了优化性能和优化功能之外,还需要统一平台,统一资源,简化运维,简化用户的使用。这样,我们可以简单划分云主机发展的三个阶段:
- 第一阶段,传统的物理机和虚拟机阶段。这个阶段,各自独立,物理机存在高可用等方面的问题,虚拟机存在性能方面的问题。第二阶段,增强优化阶段。物理机具备了高可用等传统虚拟机所具备的能力,虚拟机则优化了性能,实现了极致接近硬件实际的性能。第三阶段,物理机虚拟机统一形态阶段。给客户提供统一的云主机资源,在业务层次,不再区分虚拟机和物理机。
五种类型主机的特性总结,见下面表格。