《KVM实战原理、进阶与性能调优》一1.2 虚拟化技术

网友投稿 574 2022-05-29

1.2 虚拟化技术

1.2.1 什么是虚拟化

维基百科关于虚拟化的定义是:“In computing, virtualization refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources。”(在计算机领域,虚拟化指创建某事物的虚拟(而非实际)版本,包括虚拟的计算机硬件平台、存储设备,以及计算机网络资源)可见,虚拟化是一种资源管理技术,它将计算机的各种实体资源(CPU、内存、存储、网络等)予以抽象和转化出来,并提供分割、重新组合,以达到最大化利用物理资源的目的。

广义来说,我们一直以来对物理硬盘所做的逻辑分区,以及后来的LVM(Logical Volume Manager),都可以纳入虚拟化的范畴。

结合图1-4来看,在没有虚拟化以前(我们抽掉Virtualization层),一个物理的主机(Sever、Storage、Network层)上面只能支持一个操作系统及其之上的一系列运行环境和应用程序;有了虚拟化技术,一个物理主机可以被抽象、分割成多个虚拟的逻辑意义上的主机,向上支撑多个操作系统及其之上的运行环境和应用程序,则其资源可以被最大化地利用。

《KVM实战:原理、进阶与性能调优》一1.2 虚拟化技术

如图1-5所示的Virtual Machine Monitor(VMM,虚拟机监控器,也称为Hypervisor)层,就是为了达到虚拟化而引入的一个软件层。它向下掌控实际的物理资源(相当于原本的操作系统);向上呈现给虚拟机N份逻辑的资源。为了做到这一点,就需要将虚拟机对物理资源的访问“偷梁换柱”—截取并重定向,让虚拟机误以为自己是在独享物理资源。虚拟机监控器运行的实际物理环境,称为宿主机;其上虚拟出来的逻辑主机,称为客户机。

虚拟化技术有很多种实现方式,比如软件虚拟化和硬件虚拟化,再比如准虚拟化和全虚拟化。下面将针对每种实现方式做一个简单的介绍。

1.2.2 软件虚拟化和硬件虚拟化

1.软件虚拟化技术

软件虚拟化,顾名思义,就是通过软件模拟来实现VMM层,通过纯软件的环境来模拟执行客户机里的指令。

最纯粹的软件虚拟化实现当属QEMU。在没有启用硬件虚拟化辅助的时候,它通过软件的二进制翻译仿真出目标平台呈现给客户机,客户机的每一条目标平台指令都会被QEMU截取,并翻译成宿主机平台的指令,然后交给实际的物理平台执行。由于每一条都需要这么操作一下,其虚拟化性能是比较差的,同时其软件复杂度也大大增加。但好处是可以呈现各种平台给客户机,只要其二进制翻译支持。

2.硬件虚拟化技术

硬件虚拟化技术就是指计算机硬件本身提供能力让客户机指令独立执行,而不需要(严格来说是不完全需要)VMM截获重定向。

以x86架构为例,它提供一个略微受限制的硬件运行环境供客户机运行(non-root mode),在绝大多数情况下,客户机在此受限环境中运行与原生系统在非虚拟化环境中运行没有什么两样,不需要像软件虚拟化那样每条指令都先翻译再执行,而VMM运行在root mode,拥有完整的硬件访问控制权限。仅仅在少数必要的时候,某些客户机指令的运行才需要被VMM截获并做相应处理,之后客户机返回并继续在non-root mode中运行。可以想见,硬件虚拟化技术的性能接近于原生系统,并且,极大地简化了VMM的软件设计架构。

Intel从2005年就开始在其x86 CPU中加入硬件虚拟化的支持—Intel Virtualization Technology,简称Intel VT。到目前为止,在所有的Intel CPU中,都可以看到Intel VT的身影。并且,每一代新的CPU中,都会有新的关于硬件虚拟化支持、改进的feature加入。也因如此,Intel x86平台是对虚拟化支持最为成熟的平台,本书将以Intel x86平台为例介绍KVM的虚拟化。

应用性能调优 KVM 虚拟化

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:AI视觉组基于ESP32的裁判系统第一版本设计要求
下一篇:云合同电子合同助力全国旅游监管服务平台
相关文章