通过虚拟化,网络、存储和计算资源被抽象化,使应用程序、服务和功能减少对物理硬件的依赖。IT管理员可以在自己的环境(包括操作系统、支持软件、网络和存储资源)中提供应用程序、服务和功能,这种环境不太容易受相同基础资源上运行其他工作负载问题的影响。或者它们可以共享资源以降低成本,并提高整体利用率和性能。
从标准基于服务器的虚拟化的早期开始(不包括IBM长期存在的大型机虚拟化功能),管理员就开始创建虚拟机,其中包含运行工作负载所需的一切,包括操作系统的完整副本、所有支持软件和模拟系统,例如作为网络接口卡。有些IT部门正在转向较小的方法,例如容器化,在这种方法中,工作负载被最小化到一个数据包中,该数据包位于虚拟化资源之上并共享操作系统功能。
计算资源虚拟化以多种方式进行,包括基于硬件的虚拟化、管理程序和基于软件的虚拟化。因此,管理员必须谨慎选择虚拟化方法。
硬件虚拟化
在这种情况下,该系统通过将CPU的一部分分配给不同的工作负载来提供虚拟化。这是IBM Power架构的主要方面,其中核心的部分或者整个核心可以分割,为工作负载创建专用平台,并根据需要动态分配额外资源。这样,不同工作负载可提供给专用环境,并可随工作负载的需要而扩展和缩减,并且任何单个工作负载的不良行为都不会影响其他工作负载。
硬件虚拟化还支持需要更高可用性的工作负载(例如 VPN 或防病毒引擎),让它们拥有专用资源,其他工作负载无法调用。英特尔和AMD不太关注完整的硬件虚拟化,而是分别在硬件辅助方法中使用Intel Virtualization Technology和 AMD Virtualization。
硬件辅助虚拟化
对于硬件辅助虚拟化,操作系统和其他软件可以完成繁重的工作,但软件需要硬件功能来提供优化的虚拟化,同时将性能损失降至最低。API将调用从应用层传递到硬件,绕过大量侵入性仿真和代码执行路径中的调用处理。
硬件辅助虚拟化通常被认为是基于管理程序的虚拟化的功能,结合底层可用CPU。
基于虚拟管理程序的虚拟化
基于管理程序的虚拟化是企业数据中心中最常见的虚拟化形式。Type 1管理程序,也称为裸机管理程序,包括VMware vSphere/ESXi、Microsoft Hyper-V和Linux KVM。通过使用Type 1管理程序,虚拟化在操作系统真正启动之前发挥作用,创建虚拟化硬件平台,主机操作系统的多个实例可以通过该管理程序层进行交互。
Type 2管理程序,也称为托管管理程序,在主机操作系统之上。通常用于桌面以支持来宾操作系统,与服务器虚拟化方法相反,Type 2管理程序示例包括Oracle VM VirtualBox、Parallels Desktop和VMware Fusion。
半虚拟化
完全虚拟化是指虚拟化环境中的工作负载没有察觉自己没有直接运行在物理平台。半虚拟化采用稍微不同的方法。半虚拟化没有模拟硬件环境—每个工作负载都运行自己的隔离域。
Xen等产品同时支持全虚拟化和半虚拟化,Oracle VM for x86和IBM LPAR使用经过修改的操作系统,该操作系统了解半虚拟化层并优化功能,例如从工作负载到硬件的特权调用等功能。
操作系统级虚拟化
操作系统级虚拟化(也称为容器化)在过去几年中得到很多人的青睐。容器化使不同的工作负载能够以互不信任的方式共享相同的底层资源:由一个工作负载引起的任何问题都不会影响共享相同底层资源的其他工作负载。但情况并非总是如此。Docker的早期实例允许来自一个容器的特权调用干扰物理环境,从而导致多米诺骨牌效应的容器损坏。现在,默认情况下对受保护底层资源的特权调用被禁用。
与硬件辅助虚拟化一样,随着直接对底层操作系统调用,而无需任何仿真,性能得以优化。随着Docker的出现,可简单地创建工作负载,以从一个平台移动到另一个平台,同时最大限度地减少用于提供虚拟化的资源量,操作系统级虚拟化被嵌入到很多云平台中,并得到大多数DevOps系统的支持。其他提供操作系统级虚拟化的平台包括Linux Containers 和IBM Workload Partitions for AIX。
云平台倾向于使用基于管理程序或操作系统级别的虚拟化,或者将操作系统级别的虚拟化功能置于基于管理程序的平台之上。
虚拟化类型的选择取决于支持来宾OS的需求、安装和管理的工作负载数量、所需的总体性能以及总体成本,当你试图虚拟化包含数百个操作系统的整个平台时,许可费用可能很高。