虚拟化概念详解

虚拟化的定义

虚拟化技术可以认为是一种对物理资源抽象化,进而形成虚拟化的版本的技术
在这里插入图片描述

虚拟化的目的

物理资源组成庞大的资源池,然后可以按需分配,随意切割物理资源
在这里插入图片描述

虚拟化资源分类

  • 服务器虚拟化
    服务器虚拟化就是将虚拟化技术应用于服务器,将一台服务器虚拟成若干虚拟服务器,在该服务器上可以支持多个操作系统同时运行
  • 网络虚拟化
    将一个物理网络逻辑拆分为多个逻辑网络的方法(VLAN)
  • 存储虚拟化
    存储设备的能力、接口协议等差异性很大,存储虚拟化技术可以将不同存储设备进行格式化,将各种存储资源转化为统一管理的数据存储资源,可以用来存储虚拟机磁盘、虚拟机配置信息、快照等信息
  • 桌面虚拟化
    桌面虚拟化(Desktop Virtualization)是指将计算机的终端系统(也称作桌面)进行虚拟化,以达到桌面使用的安全性和灵活性。可以通过任何设备,在任何地点,任何时间通过网络访问属于我们个人的桌面系统。

特权级别

大部分的现代计算机体系结构都有两个或两个以上的特权级别,用来分隔内核和应用软件。以x86为例,为了得到更高的保护控制,在x86的保护模式下定义了当前特权级别(Current Previleged Level,简称CPL),一共有四个特级层次(0 to 3)被定义,我们一般称之为Ring。Ring后面的数字越大特权越小,我们的操作系统一般都运行在Ring0上,而Ring1和2一般用来支持设备驱动,Ring3上面跑的就是应用软件了。而在现在的x86处理器中,64位架构已经非常普遍,64位CPU因为必须支持页表模式,所以只有两个特权级别,我们可以简单理解为Ring0和Ring3(实际上另有明确定义),这种模型我们常称为0/3模型。

系统中有一些关键操作指令只能在最高特权级别上执行,它们一般被称为特权指令,特权指令仅仅在当前的特权级别为零时(CPL=0)才会执行。如果在非特权级别上试图执行特权指令,将生成一个一般保护异常(这通常会生成一个应用程序错误),而非特权指令则可以在任何一个权限级别执行。

敏感指令:在虚拟化世界的VMM模型中,我们可以看到所有的客户机操作系统都运行在非特权模式下,即非Ring0级。因为Guest OS已经不处在特权级别,所以存在一部分原本应该在特权级别执行但现在因为层级权限不够必须转交VMM进行处理的指令,这部分指令就叫敏感指令。
在这里插入图片描述

虚拟化技术分类

VMM(virtual machine monitor,虚拟机管理层),统一管理虚拟机,对虚拟机的请求进行集中调度,虚拟操作系统与硬件通信必须经过VMM层

全虚拟化

优点:不需要修改虚拟机OS

VMM(虚拟化层)用来统一管理上层虚拟机,工作在Ring 0级别,对虚拟机的请求进行集中调度

全虚拟化中客户操作系统没有做任何修改,虚拟机中的CPU指令集与工作在物理机上的CPU指令集一致

客户操作系统工作在Ring 1级别,那么如果客户操作系统发出Ring 0级别的指令就会导致异常(权限不够),这里的这个异常会被VMM层捕获。VMM层将捕获的异常进行翻译找出客户操作系统发出的什么样的高权限指令,然后模拟这个指令并将结果反馈给客户操作系统。
全虚拟化中每个请求都要经过异常捕获、翻译、模拟、反馈四个步骤,所以其性能比较低

在这里插入图片描述
典型产品:VMware Workstation、Virtual PC、QEMU

扫描二维码关注公众号,回复: 14220992 查看本文章

半虚拟化(操作系统辅助虚拟化)

需要对客户操作系统的内核做修改

对操作系统的内核进行修改,使客户机工作在Ring 0级别,此时VMM不需要监控异常,只需要在客户操作系统发出Ring 0级别的指令时,在VMM层提供超级调用接口,将指令转发到计算机系统硬件即可。

半虚拟化需要对内核进行修改,但是windows的内核是不开源的,不能进行修改,所以windows不能使用半虚拟化技术,linux内核是开源的,可以使用半虚拟化技术
不能跨平台,操作系统发出的指令相当于通过超级调用转发到硬件,那么OS发出的指令必须与硬件匹配

在这里插入图片描述

硬件辅助全虚拟化

硬件本身支持虚拟化技术,引入了Root模式和非Root模式

客户操作系统直接工作在Ring 0,此时不需要对OS做任何修改,发出的CPU指令不会出现异常

VMM工作在Ring 0层以下,通过超级调用转发客户操作系统的指令
在这里插入图片描述
典型产品:VMware EXSI、Xen3.0及以后的产品、MicroSoft Hyper-V、KVM

虚拟化体系架构

宿主模型(OS-Hosted VMM)

物理服务器上需要安装如Windows、Linux等操作系统,这些传统操作系统并不是为虚拟化而设计的,因此本身并不具备虚拟化功能,所有的虚拟化功能都由VMM来提供
VMM通常是宿主机操作系统独立的内核模块(工作在Ring 0层),有些实现中还包括用户态进程,如负责I/O虚拟化的用户态设备模型。VMM通过调用宿主机操作系统的服务来获得资源,实现处理器、内存和I/O设备的虚拟化
VMM层依托于宿主机

原生架构模型(Hypervisor VMM)

只需要Hypervisor VMM层,底层不需要原始的操作系统,但要调动硬件需要各种接口以及各种硬件的驱动。
在原生架构模型(Hypervisor VMM)中,VMM首先可以被看作是一个完备的操作系统,与传统操作系统不同的是,VMM是为虚拟化而设计的,因此其本身就具备虚拟化功能。
从架构上看,首先所有的物理资源如处理器、内存和I/O设备等都归于VMM所有,因此,VMM承担着管理物理资源的责任;其次,VMM需要向上提供虚拟机用于运行客户机操作系统,因此,VMM还负责虚拟环境的创建和管理。

混合模型(Hybrid VMM)

混合模型(Hybrid VMM)是上述两种模式的混合体。VMM依然位于最底层,拥有所有的物理资源,包括处理器、内存和I/O设备等。与Hypervisor模型不同的是,VMM会腾让出大部分I/O设备的控制权,将他们交由一个运行在特权虚拟机中的特权操作系统来控制,相应的,VMM虚拟化的职责也会被分担。处理器、内存虚拟化依然由VMM来完成,I/O设备虚拟化则由VMM和特权操作系统共同来完成

猜你喜欢

转载自blog.csdn.net/shn111/article/details/124836719