前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >虚拟化技术概念学习总结

虚拟化技术概念学习总结

原创
作者头像
tyrionchen
发布于 2021-01-31 08:54:16
发布于 2021-01-31 08:54:16
3.4K0
举报
文章被收录于专栏:WebRTCWebRTC

过去一直在做客户端的开发工作,过程中多少了解和使用过虚拟化技术产品,但对虚拟化技术和实现原理没有一个系统性的认识。这两天抽空学习相关材料,对整体有个印象,这里做一下总结。

虚拟化技术本身很广泛,加上各大公司不同的虚拟化产品越来越受欢迎,在各技术领域影响也越来越大,虚拟化技术就更难界定了。总体来说,任何一种把资源抽象成另外一种形式的技术都是虚拟化技术,包括计算机的虚拟内存、进程,PC上使用的虚拟机软件,Android上的虚拟机,他们用到的技术都是虚拟化技术,只是抽象的粒度不同。

一、分类

    为了对虚拟化技术有一个整体上的认识,需要先了解虚拟化技术的分类。不同的人和组织对虚拟化技术的分类不同,维基百科上对于虚拟化技术有两种分类方法,分别是按虚拟对象分类、按抽象程度分类。也有人按计算机系统的分层来分类,感觉这种分类更容易理解一些,这里梳理一下,从计算机系统分层上来看,虚拟化技术可以分成以下几类:

计算机系统分层
计算机系统分层

硬件抽象层的虚拟化

通过软件来模拟不同架构的处理器、内存、总线、磁盘IO等硬件设备,被模拟的机器上可以安装不同的系统。运行时,软件会将虚拟机所发出的指令,转换成物理机能够执行的指令,在物理机上执行。这种级别的虚拟化对于模拟相同架构的平台有很好的兼容性,因为相同架构的指令集是相同的,但如果模拟的是不同架构,运行时的开销会比较大。 从历史发展的角度看,虚拟化源于大型机操作系统的分页概念,之后才有论文提出怎样的系统结构是虚拟化系统结构。1979年Unix引入了chroot机制,允许进程和子进程把一个目录指定为根目录,所有的文件系统操作都只能在这个目录内执行,这样就分离了每个进程的访问权限。这样的思路为虚拟化和容器技术奠定了基础,之后开创者们更进一步,各种解决了进程隔离和网络空间隔离的技术都陆续出现。

早期实现的系统虚拟化技术,靠的是纯软件方法。实现复杂且开销大,后来业界逐渐意识到,更好的实现方式必须从体系结构入手。2006年之后Intel和AMD陆续推出了支持硬件虚拟化的CPU,例如Intel的vt技术,AMD的svm技术。之后为了完善虚拟化生态系统,计算机系统的各个层次都开始支持虚拟化,如Intel在芯片组中提供针对IO虚拟化功能的VT-d技术,在网卡中提供支持网络虚拟化的VMDq技术,在云游戏使用的显卡虚拟化技术GVT。

发展到今天,市面上已经有很多优秀的虚拟化应用,这里截取维基百科词条上的一部分

https://zh.wikipedia.org/wiki/%E8%99%9B%E6%93%AC%E6%A9%9F%E5%99%A8
https://zh.wikipedia.org/wiki/%E8%99%9B%E6%93%AC%E6%A9%9F%E5%99%A8

操作系统层的虚拟化

即我们常说的容器化,由操作系统提供支持,运行多个用户态的实例,每个实例有自己的运行环境,拥有自己的文件系统、CPU、内存、磁盘等,但不是一个完整的操作系统,只是一个被隔离的进程。这种技术目前最热门的应用就是Docker,比起虚拟机,Docker资源占用少、体积小、启动快,能够动态伸缩扩容,方便组建微服务架构,在持续集成上常用来提供构建环境。

函数库层面的虚拟化

应用软件最终都是使用系统库函数完成功能的,不同的操作系统有不同的函数接口,函数库的虚拟化就是虚拟操作系统的函数接口,从而实现让软件不需要修改就能运行在原本没有库函数的操作系统上。这一技术的典型应用就是Wine,他能够在linux上运行windows程序。

进程层面的虚拟化

教材上叫编程语言层面的虚拟化,本质上是系统的一个进程,是模拟出来的一台抽象计算机,被设计用来在平台无关的环境中执行程序指令,有处理器、堆栈、寄存器等,但和硬件上的计算机体系结构不同,它是另外一套体系结构。这一类的应用有Java的JVM,Andriod上的Dailvik和ART等。

二、系统虚拟机相关技术概念

虚拟机监控器

硬件抽象层虚拟化使得虚拟机提供了运行整个操作系统所需的功能,虚拟化的具体实现称为虚拟机监控器VMM(Virtual Machine Monitor),也叫Hypervisor,它以软件的形式实现物理机资源。

1974年的一篇文章Formal requirements for virtualizable third generation architectures 将Hypervisor按实现结构分成了两种类型,这个划分方法影响至今.

第一种Hypervisor是直接跑在宿主机上面作为操作系统的,特点是需要硬件支持、程序作为操作系统运行、效率高。客户机操作系统跑在上面对底层资源的访问都会被Hypervisor拦截,由它代为操作并返回结果,从而实现对系统资源的隔离。采用这种类型的虚拟机软件有VMware ESXi、 Xen等。

第二种Hypervisor是作为应用程序跑在操作系统上的,客户端机操作系统跑在他上面所有访问也会被拦截,由于Hypervisor不直接访问硬件资源,因此运行效率通常比第一种低。采用这种类型的虚拟机软件有VMware Workstation、VirtualBox等。

以下是维基百科上的分类,第一种是”原生虚拟化“、第二种是”需要宿主操作系统“的虚拟化

https://zh.wikipedia.org/wiki/%E8%99%9B%E6%93%AC%E5%8C%96
https://zh.wikipedia.org/wiki/%E8%99%9B%E6%93%AC%E5%8C%96

KVM

从前面的分类列表里可以看到KVM属于原生虚拟化程序,起初是单独的程序,后来被合并到Linux内核2.6.20中,使得Linux在内核层面支持虚拟机,让每一个虚拟机实例能够作为不同的Linux进程运行。

KVM需要CPU支持虚拟化,例如Intel的VT和AMD-V,它以可加载内核模块的形式存在,并且只负责CPU和内存的虚拟化,其他设备如IO虚拟化需要用户空间负责。例如截图中提到的QEMU,早期是纯软件实现的虚拟机,模拟了CPU、内存、IO、网卡、声卡等全部的硬件设备,等到KVM开发时直接在QEMU的基础上进行开发,把CPU和内存的虚拟化放到了KVM中实现,而IO等模块的虚拟化依然放在了QEMU。

以上内容和图表分别参考和引用自以下材料:

虚拟化技术

Docker入门教程

虚拟机

Java虚拟机

Linux云计算底层技术之 KVM 初探

《系统虚拟化: 原理与实现》

Intel虚拟化技术

Linux虚拟化KVM-QMUE分析

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
虚拟化技术总览
虚拟化本质上是软/硬件层的抽象 说起虚拟化,相信大家应该都不陌生,像虚拟内存、Java 虚拟机、Android 模拟器这些都是虚拟化技术的体现,为什么这样说,这个就要回到虚拟化技术的本质上——虚拟化就
Linux云计算网络
2018/01/11
2.1K0
虚拟化技术总览
虚拟化技术概述
虚拟化简单讲,就是把一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,每个逻辑系统都是独立的存在,这样就可以充分利用物理硬件的资源,而且还可以自由分配资源。
端碗吹水
2020/09/23
2.4K0
虚拟化技术概述
kvm虚拟化介绍
一、虚拟化分类 1、虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互相不影响,从而显著提高计算机的工作效率。
用户8851537
2021/07/21
1.5K0
Intel 虚拟化技术(Intel® VT):CPU 虚拟化与内存虚拟化
目前主要的 CPU 虚拟化技术是 Intel 的 VT-x/VT-i 和 AMD 的 AMD-V 这两种技术。
Flowlet
2023/08/11
3.7K0
Intel 虚拟化技术(Intel® VT):CPU 虚拟化与内存虚拟化
内核级虚拟化技术
这篇可能讲的有一点点的无聊,因为基本上是概念性的东西,我也是理解了很久才慢慢的搞懂的。 一、虚拟化与虚拟化技术   1.1、虚拟化的定义   虚拟化主要指的是特殊的技术,通过隐藏特定计算平台的实际物理
用户1195962
2018/01/18
2K0
内核级虚拟化技术
虚拟化基础入门介绍
Tips : CPU 处理器的主要参数主频、核数、LLC(三级缓存)、制造工艺。发展趋势主频(GHz)越来越高,核心数越来越多,LLC(高速缓存)越来越大,CPU的制程(nm)越来越小。
全栈工程师修炼指南
2022/09/28
6350
虚拟化基础入门介绍
KVM之CPU虚拟化
虚拟化技术是指在x86的系统中,一个或以上的客操作系统(Guest Operating System,简称:Guest OS)在一个主操作系统(Host Operating System,简称:Host OS)下运行的一种技术。这种技术只要求对客操作系统有很少的修改或甚至根本没有修改。x86处理器架构起先并不满足波佩克与戈德堡虚拟化需求(Popek and Goldberg virtualization requirements),这使得在x86处理器下对普通虚拟机的操作变得十分复杂。在2005年与2006年,英特尔与AMD分别在它们的x86架构上解决了这个问题以及其他的虚拟化困难。
惨绿少年
2018/12/28
3.1K0
虚拟化分类与 I/O 虚拟化技术概述
虚拟化技术是实现云计算的基石,虚拟化技术主要由三项关键技术构成:CPU 虚拟化、内存虚拟化和 I/O 虚拟化。I/O 虚拟化作为计算、网络与存储的技术交织点,其重要性与复杂性不言而喻。
通信行业搬砖工
2023/09/06
7520
虚拟化分类与 I/O 虚拟化技术概述
云计算——ACA学习 虚拟化技术产品介绍
虚拟化解决方案除了KVM之外,还有很多成熟的解决方案,包括XEN,VM,hyperV等。
网络豆
2023/12/21
2760
云计算——ACA学习 虚拟化技术产品介绍
【虚拟化】虚拟化简介 | Hypervisor介绍
一、什么是虚拟化 虚拟化是一种能够更有效地利用物理计算机硬件的过程,是云计算的基础。
张哥编程
2024/12/07
4310
大数据开发:虚拟化技术与Docker
众所周知,人们为了提高系统及硬件资源的利用率而引入了虚拟化技术。虚拟化是一种资源管理技术,它可以各种实体资源抽像后再分隔,从而打破实体结构的限制,最大程度的提高资源的利用率。从实现形式来分,虚拟化技术分为硬件虚拟化技术和软件虚拟化技术。而Docker属于软件虚拟化技术中的操作系统层虚拟化技术,它是基于LXC实现的一个应用容器引擎,Docker让开发者可以打包他们的应用及依赖环境到一个可移植的容器中,然后可以将这个容器快速部署开发、测试或生产环境中。本篇文章将具体对虚拟化技术与Docker进行分析。
成都加米谷大数据
2021/02/23
7330
大数据开发:虚拟化技术与Docker
虚拟化的分类
虚拟化是云计算的底层支撑技术。以前一台主机的各种硬件设备只能被操作系统管理、使用。有了虚拟化技术(VMM/Hypervisor 虚拟机监控器、QEMU、Intel-VT...),一台主机的各种硬件设备可以“分割成”几个部分分别被运行在主机上的不同的(Guest)操作系统使用。
dhyuan
2022/05/30
5430
虚拟化技术发展编年史
我已经想不起来是从什么时候开始的,突然就对计算机历史产生了浓厚的兴趣。于是我想着,要不以后所有系列文章的开篇都先和大家聊聊历史吧。其实说来挺有意思,看过去到底是为了看未来,因为历史总是惊人的相似,几乎所有的问题都能够在历史长河中寻得答案。可惜的是,但凡历史,最是难写,笔者碍于能力有限,还望大家多指点一二。
SammyLiu
2019/09/02
6.5K0
虚拟化技术发展编年史
智能汽车虚拟化技术(下)
上篇内容主要介绍了虚拟化技术本身的基本概念,以及车载虚拟化技术的一些特点。而本篇的内容则主要围绕一些虚拟化的技术路线以及行业内的部分应用来展开,同时也带来我们的虚拟机管理器产品(Photon Hypervisor)的介绍。
刘盼
2023/12/13
8170
智能汽车虚拟化技术(下)
【重识云原生】计算第2.4节——主流虚拟化技术之KVM
KVM:Kernel-based Virtual Machine,是基于Linux内核的开源虚拟化解决方案,从2.6.20版本开始被合入kernel主分支维护。最初只支持X86平台的上支持VMX或者SVM的CPU,不久后被确认为标准Linux内核的虚拟化方案并逐步支持S390、IA64和PowerPC等体系架构;KVM本身只提供部分的虚拟化功能(虚拟CPU和内存),而由经过特殊改造后的Qemu(Qemu-kvm)来帮助下提供完整的平台虚拟化功能。
江中散人_Jun
2022/04/08
3K0
【重识云原生】计算第2.4节——主流虚拟化技术之KVM
CentOS7 KVM虚拟化技术
虚拟化:是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互相不影响,从而显著提高计算机的工作效率。
用户9615083
2022/12/25
6060
CentOS7 KVM虚拟化技术
虚拟化技术(1)——介绍
什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 几种虚拟化软件介绍 RedHat KVM 虚拟化方式:完全虚拟化 架构:寄居架构(linux内核);祼金属架构RHEV-H 特点:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能。 I/
cloudskyme
2018/03/20
1.9K0
虚拟化技术(1)——介绍
KVM虚拟化技术基础框架
KVM简介 KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是一种内建于Linux中的开源虚拟机啊技术。具体而言,KVM可帮助用户将Linux转变成虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟客户机或虚拟机(VM)。 KVM是Linux的一部分,Linux2.6.20或者更新版本包括KVM。KVM于2006年首次公布,并在一年后合并到主流Linux内核版本中。由于KVM属于现有的Linux代码,因此它能够立即享受每一项新的Linux功能、修复和发展,无需进行额外工程。
宝耶需努力
2022/12/13
6460
智能汽车虚拟化技术(上)
随着数字智能化技术的发展,汽车功能呈现多样化和集中化的特点,架构上从分散式架构到域融合架构,再到中央计算平台,集中化的演进趋势已成为行业共识。
刘盼
2023/12/13
6230
智能汽车虚拟化技术(上)
CPU 虚拟化
前面 虚拟化技术总览 中从虚拟平台 VMM 的角度,将虚拟化分为 Hypervisor 模型和宿主模型,如果根据虚拟的对象(资源类型)来划分,虚拟化又可以分为计算虚拟化、存储虚拟化和网络虚拟化,再细一些,又有中断虚拟化,内存虚拟化,字符/块设备虚拟化,网络功能虚拟化等。 我会将此作为一个系列来写,本文先看 CPU 虚拟化。在这之前,我们先来笼统看下虚拟化的本质是什么,它到底是如何做到将 Host 的硬件资源虚拟化给 Guest 用,我这里用两个词来定义,intercept 和 virtualize,中文翻译
Linux云计算网络
2018/01/11
2.1K0
CPU  虚拟化
相关推荐
虚拟化技术总览
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档