虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理优化资源的解决方案。
一般的计算模型抽象成为一定的物理资源和运行于之上的计算元件,它们之间通过定义的物理资源接口进行交互。
虚拟化技术则是通过引入一个新的虚拟化层,对下管理真实的物理资源,对上提供虚拟的系统资源。
在实际应用中,资源可以表现为各种各样的形式。例如,如果把操作系统及其提供的系统调用作用资源,那么虚拟化就表现为操作系统虚拟化。Linux容器虚拟化技术就是在同样一份Linux操作系统之上,虚拟出多个同样的操作系统。再例如,如果把整个X86平台包括处理器、内存和外设作为资源,那么对应的虚拟化技术就是平台虚拟化,在同一个X86平台上面,可以虚拟多个X86平台,每个虚拟平台都可以运行自己独立完整的操作系统。
在X86平台虚拟化技术中,新引入的虚拟化层通常称为虚拟机监控器(Virtual Machine Monitor,VMM),也叫做Hypervisor。虚拟机监控器运行的环境,也就是真实的物理平台,称之为宿主机。而虚拟出来的平台通常称为客户机,里面运行的系统对应地也称为客户机操作系统。
实现虚拟化的重要一步就在于,虚拟化层必须能够截获计算元件对物理资源的直接访问,并将其重新定向到虚拟资源池中。根据虚拟化层是通过纯软件的方法,还是利用物理资源提供的机制来实现这种“截获并重定向”,我们可以把虚拟化划分成为软件虚拟化和硬件虚拟化两种。
常见的软件虚拟机如QEMU,它是通过纯软件来仿真X86平台处理器的取指、解码和执行,客户机的指令并不在物理平台上直接执行。
VMWare的软件虚拟化则使用了动态二进制翻译的技术。