虚拟化
云计算的一个核心思想就是在服务器端提供集中的计算资源. 这些计算资源可以被分解成更小的单位去独立服务于不同的用户, 也就是在共享物理资源的同时, 为每个用户提供隔离, 安全, 可信的虚拟工作环境, 而这一切不可避免的要依赖于虚拟化技术.
这种硬件抽象层的虚拟化又被称为系统虚拟化, 是指将一台物理计算系统虚拟化为一台或多台虚拟计算机主机. 每个虚拟计算机系统 (简称虚拟机) 都拥有自己的虚拟硬件, 如内存, CPU, 网卡等设备, 并提供一个独立的虚拟机执行环境. 通过虚拟机监控器 (VMM, 也可以称为 Hypervisor) 的模拟, 虚拟机中的操作系统 (Guest OS, 客户机操作系统) 认为自己仍然是独占一个系统在运行. 在一台物理机上运行的每个虚拟机中的操作系统都是完全可以不同的, 并且它们的执行环境是完全独立的.
虚拟化的实现方式:
当前主流的虚拟化按照实现方式可以分为两种:
VMM 直接运行在硬件平台上, 控制所有硬件并管理客户操作系统. 客户操作系统运行在比 VMM 更高的级别.
VMM 运行在一个传统的操作系统里(第一层软件), 可以看作是第二层软件, 而客户机操作系统则是第三层软件层了. KVM 跟 VitualBOX 就是这种实现.
根据 VMM 所以提供的虚拟化平台类型又可以将 VMM 分为
无硬件辅助的全虚拟化
基于二进制翻译的全虚拟化
Hypervisor 运行在 Ring 0
Guest OS 运行在 Ring 1
机制: 异常, 捕获, 翻译
示例:
- VMware Workstation
- QEMU
- Virtual PC
运行方式: Hypervisor 模拟一个 CPU 给 VM, 来宾操作系统不需要做任何修改. Hypervisor 对来宾操作系统上的 ring0 上的一些指令进行翻译, 变成真正的 CPU 指令.
半虚拟化:
半虚拟化也称为: 超虚拟化, 操作系统辅助虚拟化
Hypervisor 运行在 Ring 0
Guest OS 不能直接运行在 Ring 0, 需要对 kernel 进行修改, 将运行在 Ring 0 上的, 指令转为调用 Hypervisor,guest 操作系统是直到自己运行在虚拟化平台的, 省去了全虚拟化的大量的捕获模拟等操作
Guest OS 上的 App 运行在 Ring 3
示例: Xen
硬件辅助的全虚拟化
Intel VT 和 AMD-V 创建一个新的 Ring -1 单独给 Hypervisor 使用
Guest OS 可以直接使用 Ring 0 而无需修改
示例:
- VMware Esxi
- Microsoft Hyper-V
- Xen3.0
- KVM
来源: http://www.bubuko.com/infodetail-2948679.html