Full Virtualization(全虚拟化) V.S.Paravirtualization(半虚拟化)


关键词

Guest OS

Guest OS 的相对概念是 Host OS 也就是主机操作系统,如果我们买了一套实体电脑,那么电脑上安装的操作系统,比如 Win10 就是 Host OS. Host OS 在硬件上操作,Guest OS 在虚拟机上操作,它们都是操作系统,有的 Guest OS 知道自己是来宾操作系统(半虚拟化上),有的不知道(完全虚拟化上)。

主机操作系统是安装在计算机上以与硬件交互的软件,而客户机操作系统是安装在虚拟机上并在虚拟机上运行的软件。

Guest OS与 Host OS 共享资源时,两者相互独立运行。这些各种操作系统可以同时运行,但是主机操作系统必须首先启动。

虚拟化

虚拟化本质目的就是共享资源,比如将计算机比喻为一块地皮,这块地皮上只修了一个别墅,住者一家人,这就是我们日常使用的电脑&内部的操作系统。 但是这样,很明显,别墅的土地利用率是很低的,如果在地皮上修成公寓,里面分割出几十户家庭来,此时空间利用率变高了,这种形式就是虚拟化。

通过虚拟化,单个物理服务器可以成为多个虚拟机。

硬件虚拟化

硬件虚拟化(英语:Hardware virtualization)是一种对计算机或操作系统的虚拟。

硬件虚拟化的本质在于,硬件厂商,也提供了一些方案,帮助虚拟化的实现,比如 Intel & AMD. 当虚拟机要执行一条特权指令时,会引发一个中断,虚拟机会被挂起并且CPU会分配给VMM。接下来会检查引发虚拟机中断的指令,并根据被挂起时所保存的信息,CPU硬件模仿虚拟机的状态并执行相应特权指令,操作完毕后VMM会恢复虚拟机的状态并继续执行。原本是软件进行的操作,通过硬件模拟实现,极大的分担了虚拟化层的压力。

在平行虚拟化(paravirtualization)中,虚拟机不需要模拟硬件,而是提供只能被特制的客户机操作系统(或特制的驱动程序)使用的API。KVM、VMware、Hyper-V都支持平行虚拟化,如KVM的VirtIO。

物理机 & 虚拟机

物理机和虚拟机在组成上是相同的,都由CPU/内存/I/O设备等一组资源构成,只不过物理机对应的是真实地硬件,而虚拟机对应地是虚拟的。

虚拟化分为完全虚拟化(full virtualization)和准虚拟化(para-virtualization)两种,完全虚拟化意思是,guest OS不需要进行任何定制,就可以在hypervisor中运行,例如KVM、VirtualBox;准虚拟化则表示guest OS必须进行定制,把一些硬件操作替换成对VMM的调用,例如XEN。

虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层没有固定的墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在IT领域就叫做虚拟化技术。 -启迪云

完全虚拟化:使用虚拟机协调客户操作系统和原始硬件。 半虚拟化:在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化。

在虚拟化技术刚刚出现的时候,大家依旧遵循“模拟”二字。尽可能的用软件模拟一个物理主机所需要的硬件设备。当虚拟机要执行一行代码时,VMM会将此指令拦截,拦截之后会将此指令发送至BT翻译器(也叫二进制翻译器)。经过翻译的指令这样一来,每个虚拟机的特权指令都需要VMM进行翻译,虚拟机的隔离和封装性得到了保证。但是翻译过程会很耗费物理机的计算资源,效率很低。人们开始想办法提高CPU利用的效率。这时候就出现了基于半虚拟化的CPU虚拟化。

为了解决全虚拟化开销较大的问题,半虚拟化技术应用而生。

重点:

  1. 容器化区别于虚拟机,少了一层 guest OS, 同时Hypervisor会对硬件资源进行虚拟化,docker直接使用硬件资源
  2. 硬件虚拟化可以理解为,把硬件充分的利用,一会儿跑一下这个虚拟机的,一会儿跑一下另一个虚拟机的,因为时间短,大家都不耽误。

参考文档:

  1. Difference between Full Virtualization and Paravirtualization
  2. Para virtualization vs Full virtualization vs Hardware assisted Virtualization
  3. docker容器与虚拟机有什么区别?
  4. whats-the-difference-host-vs-guest-os