依照虚机(Guest OS)对硬件虚拟化程度的高低,可分为完全虚拟化(Full virtualization)与半虚拟化(Paravirtualization)

完全虚拟化:就是指虚拟系统完全是透过软件来模拟一个虚拟的硬件环境,并透过转译命令方式,来处理虚拟硬件与实体硬件之间沟通的桥梁。虚拟系统上的虚机其性能非常不好,例如 VMware Workstation 版本,就属于此类。

半虚拟化:就是指以修改虚机(Guest OS)内核的方式,简化了 CPU 与周边设备操作指令转译的复杂度,以提升虚机性能,如早期的 Xen 就属于半虚拟化系统。

依照虚拟平台,可分为寄居架构、原生架构
寄居架构:
是在操作系统(Host OS)之上,再运行虚机,完全虚拟化就这种类型,好处是硬件相容性高,缺点是操作系统宕机,上面所有虚机都无法使用(早期 VMware Workstation)
原生架构:
存在一个管理程序叫做(Hypervisor),管理所有虚机的运作。如 VMware vSphere(ESXi)、Linux LVM(kernel-bases virtual machine)实体机器的 CPU 必须支持 Intel VT-x 或 AMD-V。这些虚拟系统就像安装操作系统一样,是直接安装在硬件上。
上面提到完全虚拟化和半虚拟化,由于 CPU 对于虚拟化的辅助,使得虚拟系统可以不需要通过任何内核指令转换的动作,就可以直接与下达 CPU 的指令,而在半虚拟化的阶段,还需要搭配虚机内核的修改,才能提升硬件沟通与虚机电脑运作的性能,而现在,因为 CPU 虚拟化的支持,已经不在需要用修改核心的方式来提升性能,硬件本身就可以完全支持虚拟化技术,有极佳的性能。在这样情况下,也就再也没有完全虚拟化和半虚拟化的分别了。虚拟系统采用原生架构。

Linux KVM 是一套原生架构,不需要像半虚拟化技术与修改虚机电脑的系统内核,也不需要如完全虚拟化,模拟所有的硬件设备给虚拟电脑使用,而是能直接通过实体 CPU,以模块方式来执行核心指令,提升性能。至于周边设备(网卡、显卡等)的虚拟化,则是透过 QEMU 这套开放软件来作为虚拟周边设备与实体周边设备沟通的桥梁。

名词说明:
虚拟系统:如 VMware Workstation、Xen、Hyper-V 与 Linux KVM 等。
虚机:Guest OS
ESXi:Host


VT-x 与 VT-d

VT-x:CPU 支持 Intel VT-x 或 AMD-V,就有支持虚拟化的能力。
VT-d:则代表的是周边设备虚拟化技术的支持,指的并不是网卡或显卡等设备,而是沟通与传递这些周边设备信息的主板。
说主板支持 VT-d,不太正确,应该是主板上的芯片组有无支持 VT-d 的功能。



a