1、虚拟化是什么:虚拟化是一种技术,是一种能够将物理资源转变为灵活使用的资源的技术。使用虚拟化技术,咱们能够在一台物理服务器上模拟出多个独立的服务器来一般,应用程序须要安装在操做系统上,而一台物理服务器只能同时 运行一个操做系统,使用了虚拟化之后,这些模拟出来的每一个服务器均可以有本身独立的操做系统。这样,至关于在一台服务器服务器上同时能够运行多个操做系统了。器上模拟出多个独立的服务器来
常见虚拟化名词:前端
虚拟化技术的核心——Hypervisor(虚拟机监视器),也能够被称为 VMM(Virtual Machine Manager)
在一个 Host Machine 之上能够创建并运行多个 Guest Machine。windows
2、计算虚拟化的分类:
根据 Hypervisor 的不一样类型,咱们将虚拟化分为 I 型和 II 型两种后端
3、虚拟化特色:不管是 I 型仍是 II 型虚拟化,都具有分区、隔离、封装和独立的特色。服务器
4、cpu虚拟化
1)CPU的分级保护域:
CPU 架构分红 4 个层级——Ring0、Ring一、Ring2 和 Ring3,Ring0 的权限最高,Ring3 最低。
Ring0 的权限能够直接操做硬件,通常只有操做系统和驱动会容许拥有此权限。Ring3 的权限最低,全部的应用程序均可以拥有此权限
2)操做系统通常发出的命令分为两种类型:特权指令和普通指令架构
CISC 架构的 CPU 指令集的特权指令和敏感指令并不彻底重合,具体来 说,基于 x86 的 CISC 指令集有 19 条敏感指令不属于特权指令的范畴,这部分敏感指令运行在 CPU 的 Ring 1 用户态上。这部分的命令不属于特权命令所以没法被VMM捕获,所以x86 没法使用“特权解除陷入模拟”的虚拟化技术。
所以架构师提出了三种新方法:全虚拟化、半虚拟化、硬件辅助虚拟化
全虚拟化(Vmware提出):将全部虚拟机发出的操做系统请求转发到虚拟机监视器(VMM)虚拟机监视器对指令进行二进制翻译若是指令是特权指令或敏感指令则进入VMM模拟执行,而后调度到 CPU 特权级别Ring0上执行,若是只是应用程序指令则直接在 CPU 非特权级别上执行
半虚拟化(Xen提出):经过修改虚拟机操做系统Guest OS 虚拟机操做系统会使用”(Hypercall)超级调用来替换虚拟化中的敏感指令 若是虚拟机发出的指令是这些用Hypercall 那就直接交给虚拟机监视器VMM ,虚拟机监视器在调度指令到硬件CPU上执行
硬件辅助虚拟化:即CPU 直接支持虚拟化功能,而且能够识别敏感指令
目前主流的 x86 主机的 CPU 都支持硬件虚拟化技术,Intel 研发VT-x 的 CPU,AMD 推出 AMD-V 的 CPU这两种技术都为 CPU 增长了新的执行模式 root 模式,可让虚拟化监视器 VMM 运 行在 root 模式下,而 root 模式位于 CPU 指令级别 Ring 0 的下面。特权和敏感指令自动在 Hypervisor 上执行ide
5、内存虚拟化:
一般状况下物理主机在使用内存地址空间时都是按照
一、内存地址都是从物理地址0开始的 二、内存地址空间都是连续分配的
引入虚拟化后出现了问题:首先是要求内存地址空间都从物理地址 0 开始,显然物理地址为0的内存地址空间只有一个,没法同时知足全部虚拟机内存使用都要从 0 开始的要求; 其次,地址连续分配问题。即便能够为虚拟机分配连续的物理地址,可是内存使用效率不高,缺少灵活性。
因此引入内存虚拟化技术,。内存虚拟化就是把物理机的真实物理 内存统一管理,包装成多份虚拟的内存给若干虚拟机使用。内存虚拟化技术的核心在于引入一层 新的地址空间——客户机物理地址空间,客户机(Guest)觉得本身运行在真实的物理地址空间 中,实际上它是经过 VMM 访问真实的物理地址的,在 VMM 中保存客户机地址空间和物理机 地址空间之间的映射表,操作系统
6、I/O虚拟化:
一、全虚拟化:经过 VMM 为虚拟机模拟出一个与真实设备相似 的虚拟 I/O 设备,当虚拟机对 I/O 设备发起 I/O 请求时,VMM 截获虚拟机下发的 I/O 访问请 求,再由 VMM 将真实的访问请求发送到物理设备进行处理
二、半虚拟化:它须要创建一个特权级别的 虚拟机,即特权虚拟机。半虚拟化方式要求各个虚拟机运行前端驱动程序,当须要访问 I/O 设备 时,虚拟机经过前端驱动程序把 I/O 请求发送给特权虚拟机,由特权虚拟机的后端驱动收集每一个 虚拟机所发出的 I/O 请求,再由后端驱动对多个 I/O 请求进行分时分通道处理。特权虚拟机运行 真实的物理 I/O 设备驱动,将 I/O 请求发送给物理 I/O 设备,I/O 设备处理完成后再将结果返回 给虚拟机。即主动让虚拟机把 I/O 请求发送给特权虚拟机,再由特权虚 拟机访问真实的 I/O 设备
Domain 0 就是特权虚拟机,Domain U 则为用户虚拟机翻译
3.硬件辅助虚拟化:硬件辅助虚拟化不一样于前面两种方式,它是直接将 I/O 设备驱动直接 安装在虚拟机操做系统中3d
7、主流的计算虚拟化:主流的虚拟化技术有不少,通常咱们会使用开源和闭源来进行分类。开源的包含 KVM 和 Xen,闭源的包括微软的 Hyper-v、VMware 的 vSphere、华为的 FusionSphereblog