- 概念:
虚拟化是资源的逻辑表示,并不受物力资源所处的位置影响,通过物理硬件层之上添加虚拟化层,将硬件层的资源抽象成另一种形式的资源,把新的资源称为虚拟资源,从而提供给上层操作系统或应用使用。所以虚拟化实现了对底层硬件资源的抽象池化,从而通过虚拟化层来屏蔽底部硬件差异奥带来的影响。
- 分类:
-
根据应用场景
(1) 服务器虚拟化
(2) 网络虚拟化
(3) 存储虚拟化
(4) 桌面虚拟化
(5) 应用虚拟化 -
根据虚拟化层
(1) 全虚拟化
(2) 半虚拟化
(3) 硬件辅助虚拟化 -
根据计算虚拟化的实现方式
(1) CPU虚拟化
(2) 内存虚拟化
(3) IO虚拟化 -
根据系统
(1) 寄居虚拟化
(2) 裸金属虚拟化
(3) 操作系统虚拟化
(4) 函数库虚拟化
- 实质:
对硬件资源进行逻辑划分,形成对上层服务的资源池。
- CPU主要是有运算器、逻辑控制器、寄存器3部分组成。
- CPU有4个特权级(Ring0-3,最高级别Ring0)
- 系统中有一些操作和管理关键硬件资源的指令会被定为特权指令。这些特权指令只有在Ring0上才能够直接执行。
- 在引入虚拟化之后,位于客户机操作系统运行在非Ring0上,因此,原本需要在Ring0上执行的指令就不能直接执行,而是需要交友VMM处理后再执行,把这部分的指令称为敏感指令。所有的特权指令都是敏感指令,并不是所有的敏感指令都是特权指令(把这些指令称为临界指令:是敏感指令(在VMM上执行)而非特权指令)
- 为了使VMM完全控制硬件资源,不允许客户机操作系统直接执行敏感指令,则CPU虚拟化采用的使“特权解除”和“陷入-模拟”的方式。
- “陷入-模拟”的本质是保证影响VMM正确执行的执行都必须有VMM模拟执行。
- X86架构上有19 条这样的指令,称为临界指令,执行这些指令的时候不会自动陷入到VMM层捕获,从而阻碍了X86指令集的虚拟化,称其为“虚拟化的漏洞”。
- 缺陷漏洞的3种解决方案:
- 全虚拟化(支持动态二进制翻译)
(1)原理:把一种处理器懂行的二进制程序翻译到另外一种处理器上执行或在相同架构的处理器翻译执行。
(2)优点:动态完成敏感指令翻译,无需修改指令翻译,无需修改客户操作系统,因而支持多种操作系统。
(3)缺点:动态翻译的时候,需要下好VMM很大的资源开销(其实就是消耗大量的CPU开销),而且对VMM很依赖。
- 半虚拟化
(1)原理:通过次该客户机操作系统内核代码来解决虚拟化漏洞的问题。
(2)优点:虚拟机的性能几乎接近物理机,对VMM以来也减少,
(3)缺点:必须修改街护短操作刺痛内核来规避那19条指令,这也是为什么只支持Linux,而不支持Windows的原因,因为Linux石凯元产品,因为Linux开源产品可以任意修改源代码,而Windows是封闭系统。
- 硬件辅助虚拟化
(1)原理:通过与CPU硬件厂商进行联合来解决虚拟化漏洞问题
(2)优点:不需要修改客户机操作系统内核,而且也不需要有软件VMM来实现二进制翻译,减少了VMM开销。
(3)缺点:需要物理硬件支持。
- 基于位置的存储虚拟化
- 基于数据组织的存储虚拟化
- 虚拟网卡
- 虚拟交换技术
- 分类:
-
基于CPU实现的虚拟交换;
-
基于物理网卡实现的虚拟交换;
-
基于物理交换机实现的虚拟交换;
- 层叠网络
- 虚拟专用网络
- 虚拟二层延伸网络