Docker理论— 虚拟化技术分类

news/2024/11/18 4:18:56/

虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层没有固定的墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在IT领域就叫做虚拟化技术。
(虚拟化的第二种阐释)
那么下面说说虚拟化的分类。

一、按照虚拟化的程度分类

1、完全虚拟化技术

完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,该模型使用虚拟机协调客户操作系统和原始硬件。这里"协调"是一个关键词,因为VMM在客户操作系统和裸硬件之间用于工作协调。一些受保护的指令必须由Hypervisor(汉译过来是“超级监督者”,也叫做VMM(Virtual Machine Monitor,虚拟机监视器。它不是一款具体的软件,而是一类软件的统称。)来捕获和处理。因为操作系统是通过Hypervisor来分享底层硬件。
hypervisor 可以划分为两大类。

  • 类型一: hypervisor 是直接运行在物理硬件之上的。
  • 类型二: hypervisor 运行在另一个操作系统(运行在物理硬件之上)中。

类型 1 hypervisor 的一个例子是基于内核的虚拟机(KVM —— 它本身是一个基于操作系统的 hypervisor)。
类型 2 hypervisor 包括 QEMU 和 WINE。
提示:
x86平台指令集分为4个特权模式:Ring0 、Ring1、Ring2、Ring3、OS工作在Ring0级别,应用软件工作在Ring3级别,驱动程序工作在Ring1和Ring2。

如何将虚拟机越级的指令使用进行隔离,1998年VMware首次找到了解决办法,通过虚拟化引擎,捕获虚拟机的指令,并进行处理,即全虚拟化方案。
在全虚拟化的情况下,VMM工作在Ring 0 ,Guest OS工作在Ring 1 ,应用程序工作在Ring 3,可是这时候Guest OS是不知道自己工作在虚拟机里的,认为自己还是工作在Ring 0 ,所以它还是按照Ring 0级别产特权生指令,Guest OS产生的每一条指令都会被VMM截取,并翻译成宿主机平台的指令,然后交给实际的物理平台执行,由于每一条指令都需要这么翻译一下,所以这种虚拟化性能比较差。
如下图:

解释说明:
完全虚拟化结构图如下:

完全虚拟化结构图

  • hardware是硬件
  • Guest Os宿主操作系统,这就是所谓的虚拟机了。
  • Hypervisor就相当于是Guest OS和hardware中间的一个翻译者的角色。
  • apps是在虚拟机上安装的应用程序。

我们看到的虚拟机是运行在宿主机之上的,这种虚拟化就直接工作在硬件之上。也就意味着Hypervisor是可以和硬件直接交互的。
当apps调用Guest Os的内核,内核通过参数或者指令,发送给Hypervisor,Hypervisor在把接受到的信息,翻译给硬件。硬件做出响应给Hypervisor,Hypervisor传递给Guest Os,Guest Os对应的资源给对应的apps。
这就是完全虚拟化的一个运行流程。

2、半虚拟化技术

半虚拟化技术,也叫做准虚拟化技术。它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这些API可以将客户操作系统发出的指令进行最优化,即不需要Hypervisor费一定的资源进行翻译操作,因此Hypervisor的工作负担变得非常的小,因此整体的性能也有很大的提高。
如下图:

提示:
半虚拟化是对Guest OS做相应修改,以便和VMM协同运作。在硬件辅助虚拟化兴起之前,半虚拟化性能胜过全虚拟化。在半虚拟化情况下,Guest OS知道自己并不是直接运行在硬件资源上,而是运行在虚拟化环境里,工作在非Ring 0,那么它原先在物理机上执行的一些特权指令,就会修改成其他方式(超级调用),这种方式是可以和VMM约定好的,半虚拟化不需要VMM层进行二进制翻译,所以性能较好,但是实现比较麻烦(要修改OS内核代码),典型的半虚拟化技术有xen。
如下图:

总结:
相当于在Hypervisor和Guest OS中间加了一层管理或者优化的过程。这样Hypervisor的工作效率的提高了。
这种半虚拟化是需要对Guest Os宿主操作系统进行优化的,增加一个优化层。生产环境中应用比较少,因为耗时和提升不成正比。

3、完全虚拟化与半虚拟化优缺点

完全虚拟化

  • 优点是客户机的操作系统内核不需要做特殊配置,部署便利,灵活,兼容性好。
  • 缺点是客户机操作系统的内核不能够直接管理底层硬件,内核通过hypervisor管理底层硬件需要有转换开销,性能比裸机操作要差。

半虚拟化

  • 优点是半虚拟化的虚拟机操作系统内核能够直接管理底层硬件,性能比全虚拟化技术更强。
  • 缺点是客户机操作系统内核需要事先进行修改,对于一些闭源的操作系统,例如Windows我们就无法使用半虚拟化技术,部署的便利性和灵活性都不够,兼容性不够好。

二、从虚拟化架构分类

在虚拟化环境下,物理服务器的CPU、内存、硬盘和网卡等硬件资源被虚拟化并受Hypervisor的调度,多个操作系统在Hypervisor的协调下可以共享这些虚拟化后的硬件资源,同时每个操作系统又可以保存彼此的独立性。
根据Hypervisor所处层次的不同和Guest OS对硬件资源的不同使用方式,Hypervisor虚拟化被分为两种类型:裸金属架构(“裸机”虚拟化)和寄居架构(基于操作系统的虚拟化,宿主型虚拟化)。

1、寄居架构

Hypervisor虚拟化层安装在传统的操作系统中,虚拟化软件以应用程序进程形式运行在Windows和Linux等主机操作系统中。典型的宿主型Hypervisor有VMware Workstation和VirtualBox。在Hypervisor虚拟化环境下,部署在物理服务器上的系统称为Host OS,而部署在Hypervisor上的虚拟机操作系统称为Guest OS。
Hypervisor的安装:在物理服务器上安装Linux操作系统然后在操作系统上安装Hypervisor,然后部署虚拟机(Guest OS)后通过Hypervisor来共享资源。
寄居架构如下图:
宿主操作系统自身上运行这一些应用程序,然后还有虚拟机程序,这就是我们之前认识的传统虚拟机。

  • 优点:简单,便于实现。
  • 缺点:
    (1)安装和运行应用程序依赖于主机操作系统对设备的支持。
    (2)宿主操作系统,和其上边运行的软件,都是无用的资源。
    (3)稳定性,一旦宿主操作系统出现问题,虚拟化软件在稳定也不行。

2、裸金属架构

Hypervisor虚拟化层,在虚拟化环境中无须完整的Host OS,直接将Hypervisor部署在裸机上,并将裸机服务器的硬件资源虚拟化,也可以将Hypervisor理解为仅对硬件资源进行虚拟和调度的薄操作系统,其并不提供常规Host OS的功能。常见的裸金属架构有IBM的PowerVM、VMware的ESX Sevrer、Citrix的XenServer、Microsoft的Hyper-V以及开源的KVM等虚拟化软件。
裸金属架构虚拟化图如下:

  • 优点:虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵活。
  • 缺点:虚拟层内核开发难度较大。

最好我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

1、学习思路和方法

这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习

2、想学习却无从下手,该如何学习?

这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....

4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

5、如何领取这些配套资料和学习思路图,以及项目实战源码。

这些资料都已经让我准备在一个php网页里面了,可以在里面领取扫码或者进Q群交流都可以暗号和备注是111哦

最后送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦


http://www.ppmy.cn/news/789582.html

相关文章

浅谈GPU虚拟化技术(三)GPU SRIOV及vGPU调度

本系列文章推送门: 阿里云郑晓:浅谈GPU虚拟化技术(第一章) GPU虚拟化发展史 阿里云郑晓:浅谈GPU虚拟化技术(第二章)GPU虚拟化方案之——GPU直通模式今天一个小伙伴我说:“你浅谈一下…

虚拟化技术的介绍

提到虚拟化技术,大家普遍想到的是虚拟机,脑海中很快飘过 Vmware[Vmware workstation],VirtualBox[Oracal VM VirtualBox],Qemu,Xen等,那么到底什么是虚拟机技术? 和虚拟机之前的关联是什么? 让我们来一一揭秘。 发展历史线 早在计算机还是庞然大物的上世纪60年代,虚拟化…

【翻译】ARM虚拟化软件和架构支持的设计,实现和评估

这是一篇论文:https://academiccommons.columbia.edu/doi/10.7916/D8D238J2/download 学习ARM虚拟化非常好的材料,这里翻译了其中几个章节。 -----------------------------------------------------------------------------------------------------…

浅谈GPU虚拟化技术(四)- GPU分片虚拟化

让各位久等了,阿里小二这就开始上新菜:“GPU分片虚拟化”。 对于“分片”的理解,相信大家已经不陌生了。此处的分片从两个维度上来定义:其一,是对GPU在时间片段上的划分,与CPU的进程调度类似,一…

Armv8架构虚拟化介绍

大家好,我是Peter, 今天分享个不错的虚拟化文章,先来看个虚拟化的demo。 【转自https://calinyara.github.io/technology/2019/11/03/armv8-virtualization.html】 1 综述 本文描述了Armv8-A AArch64的虚拟化支持。包括stage 2页表转换,虚拟异…

利用上虚拟化,说一下TLB,以及VHE

arm给出了基于虚拟化技术会产生的优势: 1. 隔离: 虚拟化的核心是在单个物理系统上运行的虚拟机之间提供隔离。这种隔离允许在互不信任的计算环境之间共享物理系统。例如,两个竞争对手可以共享一个数据中心中的同一台物理计算机&…

多cpu虚拟服务器,CPU内核越多,虚拟服务器性能越强?

决定虚拟服务器所需要的CPU核心数量是一件非常复杂的事情,但是综合考虑下面几个因素,相信管理员能够作出最适合于自己的决定。 看起来决定虚拟服务器所需要的单颗CPU核心数量是一件非常简单的事情,但事实上有很多复杂因素需要考虑。首先,在虚拟环境CPU的使用率通常非常低。…

Linux虚拟化KVM-Qemu分析(四)之CPU虚拟化

背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基说明: KVM版本:5.9.1 QEMU版本:5.0.0 工具:Source Insight 3.5, Visio1. 概述 本文围绕ARMv8 CPU的虚拟化展开&am…