虚拟化技术——计算虚拟化

计算虚拟化

介绍

把物理主机上物理资源(CPU,内存,IO外设),通过虚拟化层抽象成超量、等量的逻辑资源(虚拟CPU,虚拟内存,虚拟IO设备),然后重新组合形成新的虚拟主机。
在这里插入图片描述

实现方式

全虚拟化

靠虚拟化引擎实现

半虚拟化

靠修改虚拟机内核引擎实现

硬件辅助虚拟化

靠硬件辅助实现

对象

CPU

用户态和内核态

资源管控、安全
在这里插入图片描述

部署虚拟化后的用户态和内核态

在这里插入图片描述

发现问题

不同操作系统的虚拟机(linux,Windows等)指令集存在差异化,有些虚拟机的请求指令,物理机操作系统内核无法识别。

其实CPU虚拟化做的事情就是“翻译”。

解决问题

软件翻译法(全虚拟化)
  • 说明
    设计一个翻译器,即VMM,虚拟机通过运行在内核态的VMM程序,实现指令集翻译,然后进行调用。
    在这里插入图片描述
  • 缺点
    在这里插入图片描述
软件翻译法(半虚拟化)
  • 说明
    不通过VMM进行指令集翻译,而是在Guest OS内修改,然后直接访问物理机内核,调用外设。
    在这里插入图片描述
  • 缺点
    在这里插入图片描述
硬件翻译法(硬件辅助虚拟化)
  • 说明
    通过外部硬件模块来实现指令集翻译,然后调用外设,提升运算兴性能。
    在这里插入图片描述
    在这里插入图片描述
  • 缺点
    在这里插入图片描述

内存

传统物理机内存机制

在这里插入图片描述

部署虚拟化后的内存访问机制

在这里插入图片描述

发现问题

虚拟化后转换过程变成:
虚拟机进程内存逻辑地址-》虚拟机物理内存地址;
虚拟机物理内存地址(物理机进程逻辑地址)-》物理机物理内存地址

解决问题

一层映射表法(全虚拟化)

在这里插入图片描述
新建一个软件映射表,由VMM主动负责和虚拟机沟通,实现虚拟机内进程逻辑地址和物理机物理地址直接映射,实现高效转换。

一层映射表法(半虚拟化)

在这里插入图片描述
修改虚拟机内核,让虚拟机可以直接访问物理机映射表,实现高效转换。

两层映射表法(硬件辅助虚拟化)

在这里插入图片描述
在虚拟机内部的地址转换,通过硬件支持,提高转换效率。各大厂商相继推出了硬件辅助的内存虚拟化技术,如Intel的EPT(Extended Page Table)和AMD的NPT(Nested Page Table)。

IO设备

全虚拟化

VMM模拟IO设备,和硬件无关,可以模拟任意硬件设备;即,模拟虚拟机中的IO设备,又需要调度物理机中的IO设备,性能低。

半虚拟化(不概述)

把VMM工作细化,实现流水线作业
后端:VMM只负责调度物理机中的IO资源
前端:虚拟机中的IO设备模拟交由专门驱动负责

硬件辅助虚拟化

IO设备自身支持虚拟化,不需要VMM实现,性能高
注:在虚拟化中有一种直通设备,只给某一个VM来用(独享,比如VMWARE的直通设备)

实现技术(虚拟化引擎)

VMWare
Xen
hyper-v
KVM
qume

资源规划

CPU虚拟化

在这里插入图片描述

  • 公式
  • 不考虑损耗公式(估算)
    在这里插入图片描述
  • 考虑损耗公式
    在这里插入图片描述

CPU超分配规划建议

  • 建议一
    在这里插入图片描述
  • 建议二
    在这里插入图片描述

内存虚拟化

公式
在这里插入图片描述

内存超分配规划建议

在这里插入图片描述

存储虚拟化

猜你喜欢

转载自blog.csdn.net/qq_37907454/article/details/132612169