android hypervisor原理 hypervisor软件_docker


image.png


什么是Hypervisor

Hypervisor,又称虚拟机监视器(英语:virtual machine monitor,缩写为 VMM),是用来建立与执行虚拟机器的软件、固件或硬件。

被Hypervisor用来执行一个或多个虚拟机器的电脑称为主体机器(host machine),这些虚拟机器则称为客体机器(guest machine)。hypervisor提供虚拟的作业平台来执行客体操作系统(guest operating systems),负责管理其他客体操作系统的执行阶段;这些客体操作系统,共同分享虚拟化后的硬件资源。

特点

Hypervisor有如下优点:
  1. 提高主机硬件的使用效率。
    因为一个主机可以运行多个虚拟机,这样主机的硬件资源能被高效充分的利用起来。
  2. 虚拟机移动性强。
    传统软件强烈捆绑在硬件上,转移一个软件至另一个服务器上耗时耗力(比如重新安装);然而,虚拟机与硬件是独立的,这样使得虚拟机可以在本地或远程虚拟服务器上低消耗转移。
  3. 虚拟机彼此独立。
    一个虚拟机的奔溃不会影响其他分享同一硬件资源的虚拟机,大大提升安全性。
  4. 易保护,易恢复。
    Snapshot技术可以记录下某一时间点下的虚拟机状态,这使得虚拟机在错误发生后能快速恢复。
Hypervisor的种类:
  1. bare-metal hypervisors:直接部署在主机硬件上,以管理硬件和guest machine。

  2. android hypervisor原理 hypervisor软件_java_02

  3. image.png
    尽管近年来有着诸如Docker、Kubernetes这样的基于容器技术的虚拟化技术让人眼前一亮,但是,要知道,这些容器均是部署在云中的Hypervisor之上的。
  4. hosted hypervisors:作为软件层部署在主机操作系统上,现在常用的VMware Player和VirtualBox就是这种类型。

  5. android hypervisor原理 hypervisor软件_docker_03

  6. image.png

虚拟机监视器 (VMM) 和设备模型

Hypervisor可以分解为两部分: 虚拟机监视器 (VMM) 和设备模型。

VMM 响应设置虚拟机和掌控由客户操作系统执行诸如I/O访问的特权指令引发的陷阱(即虚拟机出口)。

设备模型,负责实现所有设备(如网卡,存储设备等)的 I/O 接口。

Hypervisor的体系结构如下图所示:


android hypervisor原理 hypervisor软件_linux_04


image.png


发展历史

在上世纪 70 年代,VMM的陷入 - 模拟模式被得到了正式的认可(Popek and Goldberg, 1973),但直到 90 年代中期才流行起来,用于在多核的机器上运行商业操作系统(Bugnion et al., 1997)。然而,当年更受欢迎的机器架构是英特尔的 X86,是没有虚拟化功能的,因为其在一些特权声明没有陷入(trap)功能。

在 1999 年,一家叫做VMware的公司做了一款Hypervisor, 它的目标就是在 X86下运行虚拟化。但是它实现的方式是使用二进制翻译,而不是指令的陷入,同时仍然直接在物理CPU上运行无特权的指令,解决了x86的虚拟化问题(Adams and Agesen, 2006),这使得VMware虚拟机管理程序可以在虚拟机的 x86 硬件上运行未修改的商业操作系统,而不会影响性能。

在 2003 年,又出现了叫做Xen的Hypervisor,它使用了完全不同的方法来解决X86的虚拟化问题,放弃了二进制翻译的做法,而是修改了客户操作系统的源代码来陷入到Hypervisor 中,以代替执行非陷入特权指令。

随后,英特尔和AMD分别在 2005 和 2006 年先后发布了带有虚拟化扩展的 X86架构的CPU,这又使得经典的陷入 - 模拟模式成为了可能。而且又一项技术出现了,那就是KVM,最初是为Linux而开发的,其作为Linux内核的一个子系统,与QEMU的设备模式协作,共同构成了完整的Hypervisor。最初,KVM项目提供的基于软件的设备模式从而模拟完整的硬件设备,后来又引入了virtio机制,从而实现了半虚拟化I/O设备模型。

参考

百度百科什么是HypervisorHypervisor的演化史及未来展望