0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是虚拟化技术

汽车电子技术 来源:码农与软件时代 作者:码农与软件时代 2023-02-15 10:14 次阅读

成本是永恒的话题

虚拟化的目标也是降低成本,体现为对IT资源的充分利用。

一、虚拟化发展脉络

20世纪50~70年代,大型机应用广泛。但也比较贵,如何节省成本成为考虑的因素。一种简单的想法,多个终端用户能够共享同一大型机。

从时间的角度来考虑,就是将CPU时间划分成非常小的时间片,每个时间片执行不同用户的工作任务,并通过轮询的方式进行调度。这样,表面上不同用户的任务在同一硬件资源上都得到了执行,本质上是后台是“分时共享”大型机。20世纪60年代,IBM在其System/360中实现了该分时系统,并在System/370正式命名为虚拟机。

20世纪80年代,硬件成本降低,虚拟化技术逐步被放弃。

20世纪90年代,Win-Intel联盟、Linux操作系统的发展,x86服务器架构应用广泛,成为服务器硬件设施的主流。但X86计算机架构,最早着眼于性能要求不高的场景,没有考虑对虚拟化技术的支持。

人们在使用x86服务器时,为了满足业务的需求,通常会对业务流程进行压测,得到业务所需的x86服务器配置,这种配置往往采用按照业务最高的要求。这样,在日常运行中,就会导致服务器的CPU利用率比较低,处于10%~30%之间,也就是服务器资源没有得到充分利用。

随后,各个公司推出了各种虚拟化解决方案:

  • VMware将虚拟化技术引入到x86服务器中,发布了ESX产品
  • Xen虚拟化平台由剑桥大学研究,成为开源虚拟化资源的代表。
  • 微软推出Hyper-V。
  • Intel硬件虚拟化VT-x方案。

二、虚拟化概念与架构

虚拟化是什么?

IBM公司给出的定义比较有代表性:“虚拟化是资源的逻辑表示,它不受物理限制的约束。”

简单地说,就将X86服务器硬件资源进行抽象,在其上构建一台台虚拟机。虚拟机与X86服务器没有什么不同,可以安装操作系统,部署用户APP并运行。

那么,如何实现虚拟化呢?

在硬件资源和虚拟机之间,需要有一个抽象层,向下对硬件进行抽象,向上提供人虚拟机,并确保这些虚拟机之间是独立且隔离的。这个抽象层称为虚拟机监控器(Virtual Machine Monitor,VMM)。

图片

通常情况下,将X86服务器上的操作系统称为Host OS(宿主),将虚拟机的操作系统称为Guest OS(客户)。

根据VMM是否直接部署在硬件上,又分为宿主型、裸机型和混合型。

  • 宿主型:硬件资源仍由Host OS来管理,VMM是OS的内核,体现为一个进程。
  • 裸机型:VMM直接部署并运行在硬件上。
  • 混合型:宿主型和裸机型的融合。

根据虚拟的资源类型来划分,虚拟化又可以分为计算虚拟化、存储虚拟化和网络虚拟化。

三、实现机制

前面提到,X86架构在初始设计时,并未考虑虚拟化的情况。这意味着后续硬件支持虚拟化时,必然采用打补丁的方式。

这里仅讨论CPU虚拟化。

在x86架构的CPU指令集中,有Ring0、Ring2、Ring2、Ring3四个状态,其中,Ring0权限最高,操作系统拥有此权限,能够直接管控所有资源。Ring3权限最低,应用程序拥有此权限。应用程序可以访问自己权限内的硬件资源,不能访问Ring0权限内的硬件资源。

图片

从运行态上来看,虚拟机是x86服务器上的进程,拥有Ring3权限。不具有Host OS的Ring0权限,无法访问整个硬件资源,此时如果直接访问,则会被Host OS捕捉到并触发异常,弹出警告窗口。

图片

那么,如何才能Guest OS拥有Ring0权限呢?从x86架构的原始设计来看,不可能。

退一步,让Guest OS自认为的拥有Ring0权限。这就需要底层VMM或者硬件做到“Guest OS自认为的权限”,以此来欺骗Guest OS。

先来看看VMM如何做?

一种方法是将欺骗进行到底。

Guest OS不做任何修改,依然是那个追风少年,VMM依然变成一个保姆,有求必应。但VMM也是有策略的:

针对一些不敏感的指令,VMM直接进行“翻译”,调用Host OS,为Guest OS模拟出它所需要的包括CPU、磁盘、内存、网卡、显卡等抽象硬件资源。

针对一些敏感指令,如reboot,VMM考虑到会影响整个x86服务器,则将进行“模拟”,转换为只针对特定Guest OS 的reboot指令。

另一种是认清现实,就是一个虚拟机。

告知Guest OS一些细节,Guest OS自身做一些调整,修改指令集中的敏感指令和核心态指令,使得Host OS能够判断出是谁要访问硬件资源,从而提供相应的硬件抽象。

再来看看,硬件如何做?

原来x86架构包含4个权限的指令集,现在打补丁。引入VMX新模式:也就是Virtual Machine eXtension,包括根操作模式(VMX Root Operation)和非根操作模式(VMX Non-Root Operation)。

图片

VMM运行在根操作模式,Guest OS运行在非根操作模式,具有Ring 0权限,可直接访问硬件资源,同时,对于reboot等敏感指令,则由硬件辅助,直接切换到 VMM 执行,转换为只针对特定Guest OS 的指令。

这就是Intel的VT-x方案基本思想。

四、实现技术

虚拟化有很多实现技术,如KVM、Xen、VMware、Virtual Box、Hyper-V 等,这里仅介绍KVM。

KVM(Kernal-based Virtual Machine)是基于Linux内核的开源虚拟化方案。KVM提供CPU虚拟化、内存虚拟化,而I/O部分,则借助于QEMU实现( QEMU早于KVM )。

KVM虚拟化方案使用的是VT-x的VMX模式。其技术架构如下:

图片

五、工具

针对众多的虚拟化实现技术,云计算IaaS平台通常采用兼容并包的策略,为了简化处理,引入了中间适配层:libvirt。libvirt支持界面和CLI命令行的方式,如virsh、virt-manager。

图片

事实上,现有的云计算框架平台使用了libvirt的API 来管理虚拟机,如 OpenStack。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6288

    浏览量

    121887
  • 虚拟机
    +关注

    关注

    1

    文章

    855

    浏览量

    27379
  • x86服务器
    +关注

    关注

    0

    文章

    6

    浏览量

    4143
收藏 人收藏

    评论

    相关推荐

    nuc 7i3bnb(i3-7100u)支持英特尔虚拟技术

    有谁知道nuc 7i3bnb(i3-7100u)是否支持英特尔虚拟技术? bios有这样的设置并被选中,但是当使用英特尔处理器识别实用程序进行检查时说不!当我尝试安装Andriod Studio
    发表于 11-14 11:47

    Linux上的虚拟技术历史回顾

    虚拟技术的应用十分广泛. 当前虚拟技术主要关注于服务器的
    发表于 07-22 07:18

    几种主要的虚拟技术有什么不同?

    虚拟技术作为建设绿色数据中心的一项重要技术,一直在不断发展完善,其应用领域包括操作系统、服务器、存储以及网络。网络的虚拟
    发表于 08-14 06:52

    ARM的虚拟技术是什么?如何去实现呢

    主流的操作系统都有一个假设,就是这个系统有一个特权模式之下的OS,之上在跑多个非特权模式的APP;而ARM的虚拟技术就是在同一个系统上共存多个操作系统,实现这种虚拟
    发表于 05-09 09:55

    【学习打卡】OpenHarmony的设备虚拟技术介绍

    DeviceVirtualization 可以通过选择性能最佳的外设,充分发挥各类型设备的独特优势,提升用户体验。虚拟技术提供了使逻辑服务器、存储和网络独立于所部署的物理基础设施资源的解决方案。在
    发表于 07-19 17:47

    虚拟机及虚拟技术

    虚拟机及虚拟技术给计算机应用注入了新的研究与开发点,同时也存在诸多不利因素。本文综述了虚拟机及虚拟
    发表于 09-07 10:15 13次下载

    什么是虚拟仪器技术

    什么是虚拟仪器技术虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。灵活高效的软件能帮助您创建完全自
    发表于 08-02 12:05 2703次阅读

    CPU虚拟技术

    CPU虚拟技术              虚拟化是一个
    发表于 12-24 10:58 626次阅读

    虚拟现实技术,虚拟现实技术是什么意思

    虚拟现实技术,虚拟现实技术是什么意思 三维虚
    发表于 03-06 15:35 2767次阅读

    什么是虚拟现实技术,虚拟现实技术的组成

    虚拟现实技术是利用计算机技术,对现实的运动进行模拟和声像演示。虚拟现实技术(简称VR),又称灵境技术
    发表于 03-06 15:39 1.1w次阅读

    虚拟技术在云计算中的发展

    虚拟技术 是云计算实现的关键技术,通过虚拟化可以为应用提供灵活可变、可扩展的服务。云计算的发展推动了虚拟
    发表于 06-10 16:54 33次下载
    <b class='flag-5'>虚拟</b>化<b class='flag-5'>技术</b>在云计算中的发展

    虚拟维修技术综述

    近年来,虚拟现实技术蓬勃发展,由此带来了装备维修领域的重大革新,即虚拟维修技术。在维修训练和维修性设计分析领域,虚拟维修
    发表于 11-07 15:48 46次下载
    <b class='flag-5'>虚拟</b>维修<b class='flag-5'>技术</b>综述

    虚拟测试技术

    第6章虚拟测试技术,有需要的朋友可以下来看看
    发表于 08-05 18:09 0次下载

    虚拟技术的应用

    虚拟技术具有可以减少服务器的过度提供、提高设备利用率、减少IT的总体投资、增强提供IT环境的灵活性、可以共享资源等优点,但虚拟技术在安全性能上较为薄弱,
    的头像 发表于 01-02 16:15 1.2w次阅读

    虚拟技术有哪些

    本视频主要详细介绍了虚拟技术有哪些,分别有CPU虚拟化、网络虚拟化、服务器虚拟化、存储虚拟化、
    的头像 发表于 01-02 16:25 3.7w次阅读