1 虚拟化技术 #
虚拟化技术提供了一种供计算机(主机)在主机操作系统上运行另一个操作系统(Guest 虚拟机)的方式。
1.1 概述 #
SUSE Linux Enterprise Server 中包含最新的开源虚拟化技术:Xen 和 KVM。借助这些超级管理程序,可以使用 SUSE Linux Enterprise Server 在单个物理系统上供应、取消供应、安装、监视和管理多个虚拟机 (VM Guest)(有关详细信息,请参见超级管理程序)。SUSE Linux Enterprise Server 能够创建可运行经过修改、高度优化的半虚拟化操作系统,以及未经修改的全虚拟化操作系统的虚拟机。
操作系统中实现虚拟化的主要组件是超级管理程序(或虚拟机管理器),它是直接在服务器硬件上运行的软件层。超级管理程序控制着平台资源,并通过向每个 VM Guest 提供虚拟化的硬件接口,在多个 VM Guest 及其操作系统之间共享这些资源。
SUSE Linux Enterprise 是企业级 Linux 服务器操作系统,提供两种类型的超级管理程序:Xen 和 KVM。
包含 Xen 或 KVM 的 SUSE Linux Enterprise Server 充当虚拟化主机服务器 (VHS),支持具有各自 Guest 操作系统的 VM Guest。SUSE VM Guest 体系结构由一个超级管理程序以及多个管理组件组成,这些管理组件构成运行许多托管了应用程序的 VM Guest 的 VHS。
在 Xen 中,管理组件在通常称为 Dom0 的特权 VM Guest 中运行。在 Linux 内核充当超级管理程序的 KVM 中,管理组件直接在 VHS 上运行。
1.2 虚拟化的优点 #
虚拟化不仅能够提供与硬件服务器相同的服务,而且还具有许多优势。
首先,它降低了基础结构的成本。服务器主要用于向客户提供服务,而虚拟化的操作系统能够提供相同的服务,同时还具备以下优势:
更少的硬件:您可以在一台主机上运行多个操作系统,因此可以减轻总体硬件维护工作量。
更低的能耗/散热成本:更少的硬件意味着当您需要更多服务时,无需在电能、后备电源和散热方面投入更多成本。
节省空间:由于不需要更多的硬件服务器(服务器数量比运行的服务数量更少),因此可以节省数据中心的空间。
更少的管理工作:使用 VM Guest 可以简化基础结构的管理。
灵活性和工作效率:虚拟化提供迁移功能:实时迁移和快照。这些功能减少了停机时间,并且可以在不造成任何服务中断的情况下,让您轻松将服务从一个位置转移到另一个位置。
1.3 虚拟化模式 #
Guest 操作系统以全虚拟化 (FV) 模式或半虚拟 (PV) 模式托管在虚拟机上。每种虚拟化模式都各有其优缺点。
全虚拟化模式允许虚拟机运行未经修改的操作系统,例如 Windows* Server 2003。它可以使用二进制转换或硬件辅助虚拟化技术,例如 AMD* 虚拟化或 Intel* 虚拟化技术。在支持此功能的处理器上使用硬件辅助可以提高性能。
以全虚拟化模式托管的某些 Guest 操作系统可配置为使用 SUSE 虚拟机驱动程序包 (VMDP) 中的驱动程序,而不是源自操作系统的驱动程序。在 Windows Server 2003 这样的 Guest 操作系统上运行虚拟机驱动程序可以大幅提升性能。有关详细信息,请参见 附录 A “虚拟机驱动程序”。
要使 Guest 操作系统能够在半虚拟模式下运行,通常需要根据虚拟化环境对其进行修改。不过,以半虚拟模式运行的操作系统比全虚拟化模式下运行的操作系统的性能更佳。
当前已经过修改可在半虚拟模式下运行的操作系统称为半虚拟化操作系统,包括 SUSE Linux Enterprise Server 和 NetWare® 6.5 SP8。
1.4 I/O 虚拟化 #
VM Guest 不仅可以共享主机系统的 CPU 和内存资源,而且还能共享 I/O 子系统的此类资源。由于软件 I/O 虚拟化技术提供的性能低于裸机,因此最近开发了接近“本机”性能的硬件解决方案。SUSE Linux Enterprise Server 支持以下 I/O 虚拟化技术:
- 完全虚拟化
全虚拟化 (FV) 驱动程序会模拟受到广泛支持的真实设备,可以通过 VM Guest 中的现有驱动程序来使用这些设备。Guest 也称为硬件虚拟机 (HVM)。由于 VM 主机服务器上的物理设备可能不同于模拟的设备,超级管理程序需要先处理所有 I/O 操作,然后才能将其转交到物理设备。因此,所有 I/O 操作需要遍历两个软件层,这一过程不仅会显著影响 I/O 性能,而且还会消耗 CPU 时间。
- 半虚拟化
半虚拟化 (PV) 支持在超级管理程序与 VM Guest 之间直接通讯。与全虚拟化相比,它产生的开销更少,但性能却好很多。但使用半虚拟化技术时,无论是要支持半虚拟化 API 还是半虚拟化驱动程序,都必须修改 Guest 操作系统。有关支持半虚拟化的 Guest 操作系统列表,请参见第 7.4.1 节 “半虚拟化驱动程序的提供”。
- PVHVM
这种类型的虚拟化通过半虚拟化 (PV) 驱动程序以及 PV 中断和计时器处理增强了 HVM(请参见完全虚拟化)。
- VFIO
VFIO 是虚拟功能 I/O 的英文缩写,是适用于 Linux 的新式用户级驱动程序框架。它取代了传统的 KVM PCI 直通设备指派。VFIO 驱动程序会在受安全内存 (IOMMU) 保护的环境中向用户空间公开直接的设备访问。利用 VFIO,VM Guest 可以直接访问 VM 主机服务器上的硬件设备(直通),避免性能关键型路径中的模拟操作造成性能问题。此方法不允许共享设备 — 每个设备只能指派到一个 VM Guest。VFIO 需受 VM 主机服务器 CPU、芯片组和 BIOS/EFI 的支持。
与传统的 KVM PCI 设备指派相比,VFIO 具有以下优势:
资源访问与安全引导兼容。
设备会被隔离,并且其内存访问受到保护。
提供设备所有权模型更为灵活的用户空间设备驱动程序。
独立于 KVM 技术,不局限于 x86 体系结构。
在 SUSE Linux Enterprise Server 中,USB 和 PCI 直通设备指派方法被认为已过时,已由 VFIO 模型取代。
- SR-IOV
作为最新的 I/O 虚拟化技术,单根 I/O 虚拟化 (SR-IOV) 结合了上述技术的优点 — 在兼顾性能的同时还能与多个 VM Guest 共享设备。SR-IOV 要求使用特殊的 I/O 设备,这些设备必须能够复制资源,使它们看似是多个独立设备。每个这样的“伪”设备可由单个 Guest 直接使用。但对于网卡(举例而言),可使用的并发队列数有限,因此与半虚拟化驱动程序相比,SR-IOV 有可能会降低 VM Guest 的性能。在 VM 主机服务器上,SR-IOV 必须受 I/O 设备、CPU 和芯片组、BIOS/EFI 及超级管理程序的支持 — 有关设置说明,请参见第 14.12 节 “将主机 PCI 设备指派到 VM Guest”。
要能够使用 VFIO 和 SR-IOV 功能,VM 主机服务器需要满足以下要求:
需在 BIOS/EFI 中启用 IOMMU。
对于 Intel CPU,需在内核命令行上提供内核参数
intel_iommu=on
。有关详细信息,请参见 第 14.3.3.2 节 “。 选项卡”VFIO 基础结构需可用。装载内核模块
vfio_pci
即可做到这一点。有关详细信息,请参见 第 15.6.4 节 “装载内核模块”。