云计算虚拟化技术与开发——-虚拟化技术应用第二章内容(CPU虚拟机X86要解决的问题、VT-x、VMX、vCPU、EPT、VT-d)

目录

第二章:虚拟化实现技术架构

CPU虚拟机要解决的问题(x86处理器结构漏洞)及软硬件解决方案

intel VT-x的技术特点,VMX(非根操作)的操作模式及操作流程

vCPU的组成和基本操作

内存虚拟化的地址映射问题

Intel EPT的基本概念及地址转换实现过程

Intel VT-d的技术特点以及DMA重映射过程

 TUN/TAP设备的工作原理

KVM的系统框架结构、QEMU和KVM的关系

KVM的初始化过程


  • 第二章:虚拟化实现技术架构

CPU虚拟机要解决的问题(x86处理器结构漏洞)及软硬件解决方案

        要解决的问题在x86体系结构中实现虚拟化,需要客户机系统一下加入虚拟化层,来实现物理资源的共享。因此,这个虚拟化层应该运行在 Ring0 级别,而客户机操作系统只能运行在 Ring0 的以上的级别。但是,客户机操作系统中的特权指令,如果不运行在 Ring0 级别,将会有不同的 语义,产生不同的效果,或者根本不起作用,这是处理器结构在虚拟化设计上存在的缺陷,这 些缺陷会直接导致虚拟化漏洞。为了弥补这种漏洞,在硬件还未提供足够的支持之前,在半虚拟化中,客户机操作系统和虚拟花平合必须兼容,否则虚拟机无法有效操 作宿主机。x86 系统结构下处理器虚拟化如图 2-1 所示。

        解决方法基于软件:基于软件的虚拟化技术就已经先给出了两种可行的解决方案:全虚拟化和半虚拟化。全虚拟化可以采 用二进制代码动态翻译技术(Dynamic Binary Translation)来解决客户机的特权指令问题,这 种方法的优点在于代码的转换工作是动态完成的,无须修改客户机操作系统,因而可以支持多 种操作系统。而半虚拟化通过修改客户机操作系统来解决虚拟机执行蛙权拼令的问题。被虚拟 化平台托管的客户机操作系统需要修改其操作系统,将所有敏感指令替换为对底层虚拟化平台的超级调用。

        解决方法基于硬件:目前,Intel和AMD公司分别推出了硬件辅助虚拟化技术Intel VT和AMD SVM来更高效,更容易的实现虚拟化.

intel VT-x的技术特点,VMX(非根操作)的操作模式及操作流程

 VT-x的技术特点:能够降低(甚至消除)多个虚拟机操作系统之间的资源争夺和限制,从硬件上极大地改善虚拟机的安全性和性能,有助于提高基于软件的虚拟化解决方案的灵活性与稳定性。. IntelVT-x技术可以消除VMM(VirtualMachineMonitor虚拟机监视器)参与虚拟机“中断”请求的处理与特定指令的执行.

 VMX的操作模式及操作流程:

        有两种VMX操作模式:VMX 根操作(root operation) 与VMX 非根操作(non-root operation)。操作流程如下:

  1. 通过CPUID指令判断VMX功能是否被当前处理器支持;
  2. 如果当前处理器支持VMX功能,那么通过设置CR4.VMXE [bit13] = 1来打开VMX功能;
  3. 通过VMXON指令开启VMX功能,并且激活VMM;
  4. 在VMX中可以通过VM Entry和VM Exit来进入客户虚拟机或者返回到VMM中,即切换到VMX非根操作模式或者切换到VMX根操作模式,也可以利用此操作来切换运行的客户虚拟机;
  5. 通过VMXOFF来关闭VMX功能,从而终止VMX的操作。

vCPU的组成和基本操作

         vCPU的组成部分一般可以分为两部分:一是VMCS结构,其中存储的是由硬件使用和更新的内容,这主要是虚拟寄存器;二是VMCS没有保存而由VMM使用和更新的内容,主要是VCMS以外的部分。

        vCPU的具体操作如下:

(1)vCPU 的创建:创建 VCPU 实际上是创建 vCPU 描述符。由于 vCPU 描述符是一个结构体,因  此创建 vCPU 描述符就是分配相应大小的内存。vCPU 描述符在创建之后,需要进一步初 始化才能使用。

( 2)vCPU 的运行:vCPU 创建并初始化好之后,就会被调度程序调度运行,调度程 序会根据一定的策略算法来选择 vCPU 运行。

(3)vCPU 的退出:和进程一样,vCPU 作为调度单位不可能永远运行,总会因为各种原因退出,例如执行了特权指令、发生了物理中断等,这种退出在 VT-x 中表现为发生 VM-Exit。对 vCPU 退出的处理是 VMM 进行 CPU虚拟化的核心,例如模拟各种特权指令。

(4)vCPU 的再运行:指 VMM 在处理完 vCPU 的退出后,会负责将 vCPU 投入再运行。

内存虚拟化的地址映射问题

 包含了两个问题:

(1)实现地址空间的虚拟化,维护宿主机物理地址和客户机物理地址之间的映射关系。

(2)解惑宿主机对客户及物理地址的访问,并根据所记录的映射关系,将其转换成宿主机物理地址。

解决方案:解决第一个问题inert公司提供了EPT技术,AMD公司提供了AMD NPT技术直接在硬件上支持GVA到GPA到HPA的两次地址转换,大大降低了内存虚拟化的难度。解决第二个问题最简单的解决方法就是让客户及对宿主机物理地址空间的每一次访问都触发异常,由VMM查询地址传唤表模仿其访问,但是这种性能很差

Intel EPT的基本概念及地址转换实现过程

 

 Intel EPT的基本概念:EPT是intel为内存虚拟化而设计的一种硬件机制,主要是是为了实现Guest对于物理内存的访问控制

为了简化内存虚拟化的实现,以及提升内存虚拟化的性能,Intel推出了EPT(Enhanced Page Table)技术,即在原有的页表基础上新增了EPT页表实现另一次映射。这样,GVA-GPA-HPA两次地址转换都由CPU硬件自动完成。

转换实现过程:

通过EPT的GVA和HPA大概翻译的过程:

  1. 处于非根模式的CPU加载guest进程的gCR3;
  2. gCR3是GPA,cpu需要通过查询EPT页表来实现GPA->HPA;
  3. 如果没有,CPU触发EPT Violation, 由Hypervisor截获处理;
  4. 假设客户机有m级页表,宿主机EPT有n级,在TLB均miss的最坏情况下,会产生MxN次内存访问,完成一次客户机的地址翻译;

Intel VT-d的技术特点以及DMA重映射过程

         Intel VT-d是IOMMU技术在intel上的实现,全称是Intel Virtualization Technology for Direct I/O,它是Intel虚拟化技术的一部分,主要针对的是I/O子系统,它的实现主要是通过在硬件上引入重定向单元,该硬件重定向单元用于对I/O子系统的DMA操作和中断传递进行重定向,从而辅助VMM(Virtual Machine Monitor)实现I/O子系统的虚拟化。

        DMA重映射过程:

 TUN/TAP设备的工作原理

 Tun/Tap驱动程序工作原理 在计算机网络中,TUN与TAP是 操作系统内核 中的虚拟 网络设备 。 不同于普通靠硬件网路 板卡 实现的设备,这些虚拟的 网络设备 全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能。

KVM的系统框架结构、QEMU和KVM的关系

KVM的系统框架结构如下:

1.  kvm 驱动  现在已经是Linux内核的一个模块了,它的作用主要是负责虚拟机的创建,虚拟内存的分配 虚拟CPU寄存器的读写和虚拟cpu的运行

2.  另一个组件是 Qemu    QEMU是一个通用的开源机器模拟器和虚拟器,其主要的功能是用于模拟虚拟机的用户空间组件,提供io 设备模型,访问外设的途径

QEMU和KVM的关系:

 从QEMU角度来看,虚拟机运行期间,QEMU通过KVM模块提供的系统调用接口进行内核设置,由KVM模块负责将虚拟机置于处理器的特殊模式运行。

KVM的初始化过程

 (1)初始化 CPU 硬件。KVM 是基于硬件进行虚拟化,CPU 必须支持虚拟化技术。 KVM 会首先检测当前系统的 CPU,确保 CPU 支持虚拟化。当 KVM 模块被加载时,KVM 模块会先初始化内部数据结构。KVM 的内核部分是作为可动态加载内核模块运行在宿主 机中的,其中一个模块是和平台无关的实现虚拟化核心基础架构的 kvm 模块,另一个是 与硬件平台相关的 kvm_intel 模块或者是 kvm_amd 模块。

( 2)打开 CPU 控制寄存器 CR4 中的虚拟化模式开关,并通过执行特定指令将宿主机 操作系统置于虚拟化模式中的根模式。

(3)KVM 模块创建特殊设备文件/devkvm,并等待来自用户空间的命令(例如,是 否创建虚拟客户机,创建什么样的虚拟客户机等)。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>