主要介绍虚拟化技术的历史演进过程和KVM虚拟化的一些特点。
0、简介
虚拟化技术的演变过程可以分为软件模拟、虚拟化层翻译、容器虚拟化三个大的阶段。其中,虚拟化层翻译又可以分为:软件捕获翻译(软件全虚拟化)、**改造虚拟机系统内核加虚拟化层翻译(半虚拟化)和硬件支持的虚拟化层翻译(硬件支持的全虚拟化)**三种。
1、软件模拟
软件模拟是通过软件完全模拟CPU、芯片组、磁盘、网卡等计算机硬件。因为是软件模拟,所以理论上可以模拟任何硬件,甚至是不存在的硬件。但是因为这种方式全部是软件模拟硬件,所以非常低效,性能很差,因此一般只用于研究测试的场景。采用这种技术的典型产品有Bochs、QEMU等。
2、虚拟化层翻译
X86平台指令集划分为4个特权模式:Ring 0、Ring 1、Ring 2、Ring 3。操作系统一般使用Ring 0级别,应用程序使用Ring 3级别,驱动程序使用Ring 1和Ring 2级别。X86平台在虚拟化方面的一个难点就是如何将虚拟机越级的指令使用进行隔离。
2.1 软件全虚拟化
VMware公司首先想到了通过虚拟化引擎,捕获虚拟机的指令,并进行处理的解决方法。
通过虚拟化引擎VMM来对虚拟机上的指令进行捕获并解释执行,就可以有效地隔离开虚拟机和物理机上的操作,最常见的表现就是关闭虚拟机并不会关闭物理