立即注册
查看: 383|回复: 0

[转载] NFV关键技术:计算虚拟化概述

已绑定手机
发表于 2021-11-29 11:25:45 | 显示全部楼层 |阅读模式 来自 广东省深圳市
所谓计算虚拟化,从狭义角度可理解为对单个物理服务器的虚拟化,主要包括对服务器上的CPU、内存、I/O设备进行虚拟化,目的就是实现多个虚拟机能各自独立、相互隔离地运行于一个服务器之上。从广义角度还可延伸到云资源池下,各类资源池组网场景下的CPU、内存、I/O设备等资源进行整合、抽象和虚拟化。

1、服务器虚拟化平台概念
我们介绍虚拟化基础的一些基本概念,这里我们按照服务器平台虚拟化后的一个分层结构来简单回顾下。如下:
1.jpg
一个完整的服务器虚拟化平台从下到上包括以下几个部分:
●底层物理资源:包括网卡、CPU、内存、存储设备等硬件资源,一般将包含物理资源的物理机称为宿主机(Host)。
●虚拟机监控器(Virtual Machine Monitor,VMM):VMM是位于虚拟机与底层硬件设备之间的虚拟层,直接运行于硬件设备之上,负责对硬件资源进行抽象,为上层虚拟机提供运行环境所需资源,并使每个虚拟机都能够互不干扰、相互独立地运行于同一个系统中。
●抽象化的虚拟机硬件:即虚拟层呈现的虚拟化的硬件设备。虚拟机能够发现哪种硬件设施,完全由VMM决定。虚拟设备可以是模拟的真实设备,也可以是现实中并不存在的虚拟设备,如VMware的vmxnet网卡。
●虚拟机:相对于底层提物理机,也称为客户机(Guest)。运行在其上的操作系统则称为客户机操作系统(Guest OS)。每个虚拟机操作系统都拥有自己的虚拟硬件,并在一个独立的虚拟环境中执行。通过VMM的隔离机制,每个虚拟机都认为自己作为一个独立的系统在运行。

2、x86平台虚拟化面临的问题与挑战
基于x86的操作系统在一开始就被设计为能够直接运行在裸机硬件环境之上,所以自然拥有整个机器硬件的控制权限。为确保操作系统能够安全地操作底层硬件,x86平台使用了特权模式和用户模式的概念对内核程序与用户应用程序进行隔离。在这个模型下,CPU提供了4个特权级别,分别是Ring0、1、2和3。如下图所示:
2.jpg
Ring 0是最高特权级别,拥有对内存和硬件的直接访问控制权。Ring 1、2和3权限依次降低, 无法执行操作讷河系统级别的指令集合。相应的,运行于Ring 0的指令称为“特权指令”;运行于其他级别的称为“非特权指令”。常见的操作系统如Linux与Windows都运行于Ring 0,而用户级应用程序运行于Ring 3。如果低特权级别的程序执行了特权指令,会引起“ 陷入”(Trap)内核态,并抛出一个异常。

当这种分层隔离机制应用于虚拟化平台,为了满足VMM的“资源可控” 特征,VMM必须处于Ring 0级别控制所有的硬件资源,并且执行最高特权系统调用。而虚拟机操作系统Guest OS则要被降级运行在Ring 1级别,故Guest OS在执行特权指令时都会引起”陷入“。如果VMM能够正常捕获异常,模拟Guest OS发出的指令并执行,就达到了目的。这就是IBM的Power系列所采用的特权解除和陷入模拟的机制,支持这种特性的指令集合通常被认为是“可虚拟化的”。

但是x86平台的指令集是不虚拟化的。为什么这么说?首先我们来看下x86平台指令集分类,x86平台的指令集大致分为以下4类:
●访问或修改机器状态的指令。
●访问或修改敏感寄存器或存储单元的指令, 比如访问时钟寄存器和中断寄存器。
●访问存储保护系统或内存、地址分配系统的指令(段页之类)。
●所有I/O指令。

其中,1~4在x86平台都属于敏感指令,第1、4类指令属于敏感指令中的特权指令,由操作系统内核执行,Guest OS在执行两类指令时,因为不处于Ring 0级别,所以会陷入,并抛出异常,这个异常会被VMM捕获,然后模拟Gust OS去执行,并将执行结果返回给Guest OS。到此为止,一切都OK。但是,第2、3类指令属于非特权指令,可以由应用程序调用,也就是可以在Ring 3级别执行,并调用Guest OS内核进程来完成。当应用程序调用这些指令时,由于要修改内存和内部寄存器,这些状态修改需要由Guest OS完成,而Guse OS此时运行在Ring 1级别,虽然也会发生陷入,但是不会抛出异常,这样VMM就捕获不到,也就无法模拟完成。因此,当Guest OS执行这些指令就会导致虚拟机状态异常,甚至影响服务器的状态。在x86平台下,这类指令共有19个,我自己称之为x86平台敏感指令中的边界指令。

就是因为x86平台指令集有上述缺陷,所以为了计算虚拟化技术在x86平台应用,各大虚拟化厂商推出了五花八门的虚拟化技术,其目的都是围绕“如何捕获模拟这19条边界指令”这一命题来设计。在很长一段时间,都是通过软件的方式来解决这个问题,其中包括无需修改内核的全虚拟化与需要修改内核的半虚拟化。尽管半虚拟化要求修改Guest OS内核的方式在一定程度上并不满足“ 等价性”要求,但是在性能上却明显优于全虚拟化。直到2005年Intel与AMD公司分别推出了VT-d与AMD-V,能够在芯片级别支持全虚拟化时,虚拟化技术才得到彻底完善,这就是现在称之为的硬件辅助虚拟化技术。

更多详细内容请下载附件查看
2021-11-29 11:25 上传
文件大小:
273.15 KB
下载次数:
0
本地下载

16RD supports Paypal , Payment is calculated at the exchange rate of the day. Unable to download please contact 18902843661 (WhatsApp OR wechat number)

关于一牛网在微软浏览器(Microsoft Edge、IE浏览器)警报通告&解决方案!(无法下载直接更换浏览器即可)

*附件为作者发布,与本站无关,如有侵权,请联系客服删除


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表