计算机网络中的服务器虚拟化类型
将物理服务器划分为多个小型虚拟服务器,每个运行不同操作系统,称为服务器虚拟化。它们被称为“客户操作系统”,它们在不同操作系统上运行,称为主操作系统。在这种设置中,同一主机上的其他客户对其他客户的存在是不可见的。为了实现这种透明度,使用了各种虚拟化技术。
服务器虚拟化类型:
1. 基于 hypervisor 的虚拟化
在操作系统和硬件之间有一个称为 hypervisor 或虚拟机监控程序 (VMM) 的层。它提供了多个操作系统高效运行所需的功能和服务。
除了处理硬件请求的排队、调度和返回之外,它还识别陷阱并响应特权 CPU 指令。在 hypervisor 之上是一个控制和管理虚拟机的主机操作系统。
2. Para 虚拟化
基础是 Hypervisor。该模型负责大部分软件实现的虚拟化中的仿真和陷阱开销。在安装到虚拟机之前,需要修改和重新编译客户操作系统。
由于修改后的客户操作系统与 hypervisor 直接通信并消除了仿真开销,因此性能得到了改善。
示例: 为了支持 Xen 主要使用的域 0 管理环境,使用了定制的 Linux 环境。
优势:
- 更简单,性能更好
- 不需要模拟
限制:
- 需要更改客户操作系统
3. 完全虚拟化
它和半虚拟化非常类似。必要时,它可以模拟底层硬件。操作系统的机器操作用于I/O和改变系统状态的操作被虚拟机监视器捕获。捕获后,这些操作会进行软件仿真,并且返回的状态代码与真实硬件产生的代码非常相似。因此,未修改的操作系统可以在虚拟机监视器上运行。
例如,VMWare ESX服务器就是采用这种方法。作为管理操作系统,Service Console是Linux的修改版本。与半虚拟化相比,它的速度较慢。
优势:
- 客户操作系统无需更改。
局限性:
- 仿真操作会使得复杂操作变慢。
- 新设备驱动程序的安装有一定挑战性。
4. 硬件辅助虚拟化
从功能上讲,它与完全虚拟化和半虚拟化类似,唯一的不同之处在于它需要硬件支持。通过依赖于x86体系结构的硬件扩展,辅助虚拟化在处理在客户操作系统中执行的I/O操作和状态指令时能够减少大部分半虚拟化器引起的开销。
可以使用未修改过的操作系统来处理硬件访问请求、特权和受保护操作,以及与虚拟机之间的通信,而使用硬件虚拟化支持。
支持虚拟化的硬件示例包括AMD的V Pacifica和Intel的VT Vanderpool。
优势:
- 客户操作系统无需更改。
- 虚拟化器的开销非常低。
局限性:
- 需要硬件支持。
5. 内核级虚拟化
它运行一个独立的Linux内核,并将相关的虚拟机视为物理主机上的用户空间进程,而不是使用虚拟化管理器。因此,在单个主机上管理多个虚拟机非常简单。为了在虚拟机和主Linux内核之间进行通信,使用了设备驱动程序。
虚拟化需要处理器支持(如Intel VT或AMD-v)。虚拟机的显示和执行容器是QEMU进程的修改版本。内核级虚拟化在许多方面类似于服务器虚拟化。
例如Kernel Virtual Machine和用户模式Linux(UML)(KVM)
优点:
- 不需要专门的管理软件。
- 几乎没有开销。
限制:
- 需要硬件支持。
6. 系统级或操作系统虚拟化
利用单个操作系统内核实例来运行多个逻辑上分离的环境。也被称为“共享内核方法”,因为主机操作系统内核被所有虚拟机共享。基于“chroot”更改根概念。
在引导过程中,开始chroot。根文件系统由内核用于加载驱动程序和执行其他早期系统初始化任务。在使用chroot命令将一个磁盘上的文件系统作为最终根文件系统挂载后,系统会在该文件系统中继续系统初始化和配置。
chroot机制扩展了系统级虚拟化的概念。通过这样做,系统能够启动具有独立进程集的虚拟服务器,这些进程集与它们自己的文件系统根目录相关联。
在系统级和服务器虚拟化之间,能够在不同的虚拟系统上运行不同的操作系统是主要区别。服务器虚拟化是指不同的服务器可以具有不同的操作系统,包括同一操作系统的不同版本,而不是系统级虚拟化,它要求所有虚拟服务器共享操作系统的同一副本。
例如FreeVPS,Linux Vserver和OpenVZ。
优点:
- 比完整的机器(包括内核)要轻得多。
- 可以容纳更多的虚拟服务器。
- 增强的安全性和隔离性。
- 操作系统虚拟化通常几乎没有开销。
- 操作系统虚拟化实现了实时迁移。
- 此外,它可以在节点和集群之间使用动态负载均衡来容纳容器。
- 操作系统虚拟化可以使用文件级写时复制(CoW)技术,该技术比块级写时复制方案更省空间,更容易缓存和备份数据。
限制:
- 内核或驱动程序问题可能导致所有虚拟服务器停止运行。