目录
一、什么是虚拟化
虚拟化是一种能够更有效地利用物理计算机硬件的过程,是云计算的基础。
虚拟化技术使用软件,在计算机硬件上创建一个抽象层,能够将单台计算机的硬件元素(处理器、内存、存储等)分成多个虚拟计算机(通常称为虚拟机 (VM))。 每个虚拟机都会运行自己的操作系统 (OS),其行为就像一台独立的计算机,即使它只在一部分实际底层计算机硬件上运行。
由此可见,虚拟化可以更高效地利用物理计算机硬件,提高组织在硬件投资方面的投资回报率。
如今,虚拟化已成为企业 IT 架构的标准实践。 它也是推动云计算经济发展的技术。 虚拟化使云提供商能够使用他们现有的物理计算机硬件为用户提供服务; 它使云用户能够在需要时仅购买所需的计算资源,并随着工作负载的增长经济实惠地扩展这些资源。
二、虚拟化的优点
虚拟化为数据中心运营商和服务提供商带来诸多好处:
- 资源效率:在虚拟化出现之前,每个应用服务器都需要自己的专用物理 CPU — IT 人员为想要运行的每个应用购买和配置单独的服务器。 (出于可靠性原因,IT 人员更倾向于在每台计算机上配置一个操作系统 (OS),运行一个应用。) 因此,每台物理服务器都不可避免地得不到充分利用。 相反,服务器虚拟化能够在单一物理计算机(通常是 x86 服务器)上运行多个应用,每个应用都在自己的 VM 上运行,使用自己的操作系统,而且不会牺牲可靠性。 这样就能够最大程度地利用物理硬件的计算能力。
- 管理更加轻松:通过用软件定义的 VM 取代物理计算机,可以更轻松地使用和管理用软件编写的策略。 这有助于创建自动化的 IT 服务管理工作流程。 例如,自动化部署和配置工具使管理员能够以软件模板的形式将一组虚拟机和应用定义为服务。 这意味着他们能够以统一方式重复安装这些服务,而无需繁琐耗时 而且容易出错的人工设置过程。 管理员可以根据虚拟机的角色使用虚拟化安全策略,以强制实施某些安全配置。 策略甚至可通过淘汰未使用的虚拟机以节省空间和计算能力,提高资源效率。
- 最大程度减少宕机:操作系统和应用崩溃会导致宕机,对用户生产力造成影响。 管理员可以同时运行多个冗余虚拟机,当出现问题时,可在它们之间进行故障转移。 运行多台冗余物理服务器的成本比较高。
- 配置速度更快:为每个应用购买、安装和配置硬件非常耗时。 如果硬件已部署,那么配置虚拟机以运行所有应用的速度要快得多。 甚至可以使用管理软件自动进行配置,并将其构建到现有工作流程中。
三、Hypervisor
3.1 Hypervisor概述
hypervisor:一种运行在物理服务器和操作系统之间的中间层软件,可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统,可以协调访问服务器上的所有物理设备和虚拟机,所以又称为虚拟机监视器(virtual machine monitor)。hypervisor是所有虚拟化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。
3.2 Hypervisor 分类
- 一类是 Type1 裸机型,Hypervisor 直接运行在硬件设备上的,也叫做 Bare-Metal Hardware Virtualization(裸机虚拟化环境);
- 一类是 Type2 主机托管型,也叫做 Hosted Virtualization (主机虚拟化环境)。
如图展示了两种 Hypervisor 的分层架构。
Type2 型 Hypervisor 需要借助宿主操作系统来管理 CPU、内存、网络等资源,由于 Hypervisor 和硬件之间存在一个宿主操作系统,Hypervisor 及 VM 的所有操作都要经过宿主操作系统,所以就不可避免地会存在延迟、性能损耗,同时宿主操作系统的安全缺陷及稳定性问题都会影响到运行在之上的 VM(虚拟机),所以 , Type-2 型 Hypervisor 主要用于对性能和安全要求不高的场合,比如 : 个人 PC 系统。
Type1 型的 Hypervisor 不依赖主机操作系统,其自身具备操作系统的基础功能。设计上更简洁,直接运行于硬件之上,整体代码量和架构更为精简,对内存和存储资源要求更少。
3.3 Hypervisor 与虚拟机协作技术路线
(1) 全虚拟化
最初的虚拟化是通过软件模拟具有完整硬件系统功能的、运行在一个隔离环境中的计算机系统,即通过软件虚拟硬件设备提供给 GuestOS 使用,优点是 GuestOS 不感知外部真实硬件环境、不用改动。
由于 Guest OS 中每次访问全虚拟化硬件都要陷入到 Hypervisor 中,直接导致该方式虚拟的硬件性能较差,一般只用来模拟如串口等比较简单的硬件。
操作系统上安装kvm,kvm即Hypervisor,它会 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。除此之外:VirtualBox 和 VMWare Workstation 都属于这个类型。
(2) 硬件辅助虚拟化
Intel 最早提出硬件辅助虚拟化技术,由硬件直接提供共享功能,支持多 GuestOS 的访问,减少软件虚拟技术带来的延时和性能损耗。
Intel 提出了分别针对处理器 & 内存、IO、网络的 Intel VT-x、Intel VT-d 和 Intel VT-c 技术等。随着 ARM 算力提升,从移动端向边缘、甚至云算力中心发展,ARM 也在不断增强其硬件辅助虚拟化技术,比如 stage 2 页表转换、虚拟异常等。
(3) 半虚拟化
在硬件辅助虚拟化技术不完善、不强大的发展阶段,或者对于某些复杂外设的共享复用,为避免全虚拟化的性能问题,可以采用 GuestOS 与 Hypervisor 协作的半虚拟化技术。
这种技术一般应用于 IO 设备虚拟化,采用前后端的方式来实现 IO 设备虚拟化,在 Guest OS 中实现前端驱动,在 Hypervisor 或 Host OS 中实现后端驱动,前后端一般按照 VirtIO 标准来实现,后端驱动作为硬件的实际访问方。
Guest OS 中前端驱动通过 Virt Queue 等通信机制与后端驱动进行通信,前端驱动将 Guest OS 的请求传递给后端驱动,后端驱动将请求发送给硬件驱动,处理完后将结果再传回给前端驱动。半虚拟化相对全虚拟化实现的硬件性能较好,且可实现相对比较复杂的硬件,比如 : 块设备,网卡,显示设备等。