虚拟化技术是云计算的基础,我们在各种云平台可以购买 IaaS(基础设施即服务) 的云服务器,包括但不局限于 ECS,VPS
等,这些云服务器可以自选配置,动态调整 cpu 核数、内存大小、甚至是硬盘大小、网卡数量等。他们底层的实现原理是虚拟化技术。
虚拟化技术的分类
根据虚拟的资源进行划分可以分为操作系统虚拟化和平台虚拟化:
- 操作系统虚拟化: 如果把操作系统及其提供的系统调用作为资源,那么虚拟化表现为操作系统虚拟化,比如docker。
- 平台虚拟化: 如果把整个 X86 平台包括处理器、内存、外设等硬件作为资源,在虚拟的 x86 平台之上可以安装完整的操作系统,比如 virtualbox。
虚拟化技术的实现也有很多种方式,比如软件虚拟化和硬件虚拟化。实现虚拟化的关键在于虚拟化层能够截获计算元件对物理资源的直接访问,并将它重新定位到虚拟资源池中。
- 软件虚拟化: 软件虚拟化是通过纯软件的方式在现有的物理平台实现对物理平台访问的截获和模拟,比如 QEMU 便支持软件虚拟化,它可以通过纯软件仿真 X86 平台处理器的取值、解码和执行,客户机所有的操作都由软件翻译后再执行到真实的物理平台。
- 硬件虚拟化: 物理平台本身提供了对特殊指令的截获和重定向的硬件支持,比如 intel 的 VT-x。
根据客户机是否需要进行特殊的改动可以分为部分虚拟化和完全虚拟化。
- 部分虚拟化(para-virtualization): 部分虚拟化实现上可能存在较大的性能损失,但如果改动客户机操作系统,让他知道自己运行在虚拟环境下,从而可以对部分操作(比如IO)优化与宿主机的通信,从而提升