首页 资讯频道 互联频道 智能频道 网络 数据频道 安全频道 服务器频道 存储频道

「深度剖析」什么是虚拟化?

2020-03-19 14:16:48 来源 : 今日头条

1、什么是虚拟化

虚拟化和云计算不一样。虚拟化是一种技术,使用虚拟化我们可以在一台物理服务器上模拟出多个独立的服务器来。

虚拟化的本质就是将原先的物理设备进行逻辑化,转化成一个文件夹或文件 ,实现软硬件的解耦。耦合,资源共享,资源动态分配等等。

虚拟机里具体有哪些东西:

包含两部分,一部分用来记录虚拟机的配置信息,另一部分用来保存用户数据的磁盘文件。

2、虚拟化的好处

1、使用虚拟化后每台物理机上可以同时运行多个虚拟机 每个虚拟机上又可以运行一个操作系统,硬件资源利用率得到了有效提高,减少了硬件资源的浪费。

2、并且由于虚拟化技术实现了软硬件的解耦合,虚拟化可以摆脱当前服务器的禁锢,允许在集群范围内实现带着业务的动态迁移,并且迁移过程中可以做到业务无中断、用户无感知。

虚拟机的动态迁移就带来了高可用性HA 、动态资源调度 DRS 和分布式电源管理 DPM等高级特性。为企业数据中心实现了业务的可移动性、降低运行成本、减少管理费用、整合服务器、容错容灾等优势。

3、虚拟化的历史

1964 年,“蓝色巨人” IBM 就开始尝试在大型机上实现虚拟化,甚至在 1961 年, IBM 的 709 机就已经实现了分时系统,将 CPU 占用切分为多个极短 时间片,每一个时间片都执行着不同的任务。通过对这些时间片的轮询,这样就可以将一个 CPU 虚拟化或者伪装成为多个 CPU。

1999 年, VMware 推出了最早的能在 x86 架构上运行的虚拟化产品 。

20 世纪 90 年代,伦敦剑桥大学的 L an Pratt 和Keir Fraser 在一个叫做 Xenoserver 的研究项目中,开发了 Xen 虚拟机。作为 Xenoserver 的核心, Xen 虚拟机负责管理和分配系统资源,并提供必要的统计功能。在那个年代, x 86 的处理器还不具备对虚拟化技术的硬件支持,所以 Xen 从一开始是作为一个准虚拟化的解决方案(半虚拟化)出现的。因此,为了支持多个虚拟机,内核必须针对 Xen 做出特殊的修改才可以运行(必须是开源的系统)。

另外一个就是大名鼎鼎的 KVM ,最初是由一个以色列的创业公司 Qumranet 开发的,作为他们的 VDI Virtual Desktop Infrastructure 产品的虚拟机。为了简化开发,KVM 的开发人员并没有选择从底层开始新写一个 Hypervisor ,而是选择了基于 Linux kernel ,通过加载新的模块从而使 Linux Kernel 本身变成一个Hypervisor。Redhat 公司出人意料地出资 1 亿 700 百万美金,收购了KVM。

2010 年 11 月, Redhat 公司推出了新的企业版 Linux RHEL 6 ,在这个发行版中集成了最新的 KVM 虚拟机,而去掉了在RHEL 5.x 系列中集成的 Xen 。

IBM 以340 亿美元收购 RedHat(红帽)。Dell完成对EMC、Vmware收购。

4、计算虚拟化中的重要概念

Guest OS:虚拟机操作系统

Guest Machine:虚拟出来的虚拟机

Hypervisor:虚拟化软件层/虚拟机监控机

(Virtual Machine Monitor虚拟机监控器,VMM)

Host OS:运行在物理机之上的OS

Host Machine:物理机

Hypervisor/VMM (虚拟化操作系统)主要实现两个基本功能:首先是识别、捕获和响应虚拟机所发出的 CPU 特权指令或保护指令 (特权指令和保护指令在 C PU 虚拟化中介绍));其次,它负责处理虚拟机队列和调度,并将物理硬件的处理结果返回给相应的虚拟机。

也就是说, Hypervisor 将负责管理所有的资源和虚拟环境。VMM 可以看作一个为虚拟化而生的完整操作系统,掌控有所有资源( CPU 、内存和 I/O 设备)。

5、计算虚拟化的分类

根据Hypervisor的不同类型,我们将虚拟化分为I型和II型两种,又叫裸金属虚拟化和寄居虚拟化。

I型虚拟化,也被称为裸金属虚拟化, Hypervisor 直接调用硬件资源,不需要底层 Host OS ,或者说在 I 型虚拟化中,可以将 Hypervisor 看做一个定制的 Host OS ,除了起到 VMM的作用外,一般不能在其上安装其它的应用。

VMM 承担管理资源的重任,其还需向上提供虚拟机 VM 用于运行 Guest OS ,因此 VMM 还负责虚拟环境的创建和管理。 采用该结构的虚拟化产品主要有:VMWare ESX Server 、 Citrix XenServer 和FusionCompute 等。

I型虚拟化中 H ypervisor 啥也不干,就专门负责将物理的硬件资源转换为虚拟资源供 Guest OS 使用 Guest OS 就像直接运行在物理硬件上一样,所以称为裸金属 。

优点:虚拟机不依赖于操作系统,支持多种操作系统,多种应用。

缺点:虚拟层内核开发难度大 。

II型虚拟化 也被称 为宿主型虚拟化/寄居虚拟化 ,此模型的物理资源由 Host OS管理,实际的虚拟化功能由 VMM 提供,而 VMM 作为底层操作系统( Windows或 Linux 等)上的一个普通应用程序,然后通过其再创建相应的虚拟机,共享底层服务器资源。VMM 通过调用 Host OS 的服务来获得资源,实现 CPU 、内存和 I/O 设备的虚拟化。VMM 创建出虚拟机 VM 后,通常将 VM 作为 Host OS 的一个进程参与调度。采用该虚拟化产品主要有: VMware Workstation 、 Virtual PC 等。

II 型虚拟化有以下特点:

· 优点:简单、易于实现 。

· 缺点:安装和运行应用程序依赖于主 机操作系统对设备的支持。管理开销较大,性能损耗大。

VMM/ Hypervisor(虚拟监控器),华为的叫法CNA(计算节点代理),虚拟化的操作系统。

VRM是管理CAN的一台管理虚拟机,提供Web界面。

6、虚拟化的特点

分区:虚拟化层为多个虚拟机划分服务器资源的能力;每个虚拟机可以同时运行一个单独的操作系统(相同或不同的操作系统)

作用:每个分区划分资源配额,防止虚拟化超配额使用资源;每个虚拟机单独安装操作系统,彼此互不影响。

隔离:通过分区所建立的多个虚拟机之间采用逻辑隔离措施,防止相互影响。

封装:封装意味着将整个虚拟机(硬件配置、 BIOS 配置、内存状态、磁盘状态、 CPU状态)储存在独立于物理硬件的一小组文件中。只需复制几个文件就可以随时随地根据需要复制、保存和移动虚拟机。

相对硬件独立:虚拟机在封装为独立文件后,虚拟机迁移只需要把虚拟机设备文件和配置文件或磁盘文件复制到另一台主机上运行即可,而不用关心底层的硬件类型是否兼容,这就是相对硬件的独立性。

7、CPU虚拟化

Ring 0 、 Ring 1 、 Ring 2 和 Ring 3, Ring 0 的权限最高 Ring 1 次之 Ring 2

再次之 Ring 3 最低 。Ring 0 的权限可以直接操作硬件 一般只有操作系统和驱动会允许拥有此权限 。Ring 3 的权限最低 所有的程序都可以 拥有此权限 。为了保护 计算机,一些危险的指令只能由操作系统执行,防止一些恶意软件随意地调用硬件资源,比如某个程序需要开启摄像头就必须向 Ring 0 的驱动程序请求开启。

特权指令:是指用于操作和管理关键系统资源的指令,这些指令只有在最高特权级上才能够运行,即必须在 Ring 0 级别上才能运行的指令。

·普通指令:与特权指令相对的是普通指令,这些指令在 CPU 普通权限级别上就能够运行,即在 Ring 3 级别上就可以运行的指令。

敏感指令:是指修改虚拟机的运行模式或宿主机状态的指令,也就是说是将 Guest OS 中原本需要在 Ring 0 模式下才能运行的特权指令剥夺特权后,交给 VMM 所执行的指令。

实现虚拟化的经典方法:特权解除(取消OS原有的Ring 0级别)、陷入模拟(Guest os需要将核心指令交给VMM,由VMM交给硬件执行)没有任何问题,所有的敏感指令都是特权指令都能被VMM捕获执行。

CISC架构指令集,复杂指令集计算机有19条指令敏感指令不是特权指令,不能被VMM捕获。这个就叫X86缺陷!!简单的来说就是X86的CPU不能通过特权,特权解除和陷入模拟来实现虚拟化。

如何解决:

架构师想出了解决这个问题的方法,而且还是三种方法。它们分别是:全虚拟化、半虚拟化以及硬件厂商提出的硬件辅助虚拟化

全虚拟化:有一种类似于“宁可错杀三千,绝不放过一个”的思路,也就是说将所有虚拟机发出的操作系统请求转发到虚拟机监视器( VMM ),虚拟机监视器对请求进行二进制翻译 ,如果发现是特权指令或敏感指令,则陷入到 VMM 模拟执行,然后调度到 CPU特权级别上执行;如果只是应用程序指令则直接在 CPU 非特权级别上执行。这种方法由于需要过滤所有虚拟机发出的请求指令,因而被称为全虚拟化方式。

全虚拟化方式的优点是:不修改虚拟机操作系统,虚拟机的可移植性和兼容性较强,支持广泛的操作系统;但缺点是运行时修改Guest OS 二进制代码,性能损耗较大,并且引入了新的复杂性,导致虚拟机监视器VMM开发难度较大。

这个方案中虚拟机知道自己是虚拟机嘛????

半虚拟化方案:虚拟化漏洞的问题来源于19 条敏感指令,如果我们可以修改虚拟机操作系统 Guest OS 规避虚拟化漏洞,则问题就容易解决了。

修改虚拟机操作系统Guest OS ,让虚拟机系统 Guest OS 能够意识到自己 是被虚拟化的,虚拟机操作系统会通过 “超级调用” 用 Hypervisor 层来替换虚拟化中的敏感指令,从而实现虚拟化。

半虚拟化所具有的优点是:半虚拟化 中的 Guest OS 可以同时能支持多个不同的操作系统 ,虚拟化提供了与原始系统相近的性能。但缺点是:半虚拟化 中的 Host OS 只有针对开源的系统才能支持被修改 如 Linux ,而对于未开源的诸如 Windows 系统,则无法实现半虚拟化。

硬件辅助虚拟化:

虚拟化漏洞问题的解决,无论全虚拟还是半虚拟,都默认一个前提,即物理硬件是不具备虚拟化识别功能的,因此必须识别出这 19 条敏感指令,并通过虚拟化监视器 VMM 进行陷入执行。如果物理CPU 直接支持虚拟化功能,并且可以识别敏感指令, 那么 CPU 虚拟化方式就将发生革命性的变革。

幸运的是,目前主流的x86 主机的 CPU 都支持硬件虚拟化技术,即 Intel 推出 VT x 的CPU AMD 也推出了 AMD V 的 CPU

8、内存虚拟化

内存使用原则:

1、内存地址都是从物理地址 0 开始的。

2、内存地址空间都是连续分配的。

解决内存共享问题的思路就在于引入内存虚拟化技术。内存虚拟化就是把物理机的真实物理内存统一管理,包装成多份虚拟的内存给若干虚拟机使用。内存虚拟化技术的核心在于引入一层新的地址空间客户机物理地址空间。

内存虚拟化的内存地址转换涉及到三种内存地址,即虚拟机内存地址(Virtual MemoryAddress ,即 VA )、物理内存地址 Physical Memory Address ,即 PA )和机器内存地址(Machine Memory Address ,即 MA )。

9、I/O虚拟化

由于计算虚拟化的出现,物理服务器上会创建出许许多多的虚拟机,并且每台虚拟机都需要访问物理主机的 IO 设备。但 I/O 设备的数量毕竟是有限的,为了满足多个虚拟机共同使用 I/O设备的需求,就需要虚拟化监视器 VMM 参与。VMM 用于截获虚拟机对 I/O 设备的访问请求,再通过软件去模拟 真实的 I/O 设备,进而响应 I/O 请求。从而让多个虚拟机访问有限的 I/O 资源。实现 I/O 虚拟化的方式主要有三种:全虚拟化、半虚拟化和硬件辅助虚拟化,其中硬件辅助虚拟化技术是目前 I/O 虚拟化的主流技术。

全虚拟化:通过 VMM 为虚拟机模拟出一个与真实设备类似的虚拟 I/O 设备,当虚拟机对 I/O 设备发起 I/O 请求时, VMM 截获虚拟机下发的 I/O 访问请求,再由 VMM 将真实的访问请求发送到物理设备进行处理。优点在于:虚拟机无论使用任何类型的操作系统,操作系统都不需要为 I/O 虚拟化做任何修改,就可以让多个虚拟机直接使用物理服务器的 I/O 设备。缺陷也在于,VMM 需要实时截获每个虚拟机下发的 I/O 请求,截获请求后模拟到真实的 I/O 设备中。实时监控和模拟的操作都是通过C PU 运行软件程序来实现的,因此会对服务器带来较严重的性能损耗。QEMU就是这种虚拟化。

半虚拟化:半虚拟化方式与全虚拟化方式的明显区别在于,它需要建立一个特权级别的虚拟机,即特权虚拟机。半虚拟化方式要求各个虚拟机运行前端驱动程序,当需要访问 I/O 设备时,虚拟机通过前端驱动程序把 I/O 请求发送给特权虚拟机,由特权虚拟机的后端驱动收集每个虚拟机所发出的 I/O 请求,再由后端驱动对多个 I/O 请求进行分时分通道处理。XEN技术就是这种虚拟化。

硬件辅助虚拟化:硬件辅助虚拟化不同于前面两种方式,它是直接将 I/ O 设备驱动直接安装在虚拟机操作系统中,不需要对操作系统做任何改动即可使用。这种方式和我们熟悉的传统PC 主机操作系统直接访问硬件是相同的。SR-IOV就是这种虚拟化。

相关文章

最近更新
详谈虚拟化技术发展 2020-03-18 11:32:57
桌面虚拟化是什么? 2020-03-13 11:26:49