『现学现忘』Docker相关概念|『现学现忘』Docker相关概念 — 6、虚拟化技术分类
目录
- 1、按照虚拟化的程度分类
- (1)完全虚拟化技术
- (2)半虚拟化技术
- (3)完全虚拟化与半虚拟化优缺点
- 2、从虚拟化架构分类
- (1)寄居架构
- (2)裸金属架构
虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层没有固定的墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在IT领域就叫做虚拟化技术。
(虚拟化的第二种阐释)
那么下面说说虚拟化的分类。
1、按照虚拟化的程度分类 (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。如下图所示:
文章图片
总结:(3)完全虚拟化与半虚拟化优缺点
【『现学现忘』Docker相关概念|『现学现忘』Docker相关概念 — 6、虚拟化技术分类】相当于在Hypervisor
和Guest OS中间加了一层管理或者优化的过程。这样Hypervisor
的工作效率的提高了。
这种半虚拟化是需要对Guest Os宿主操作系统进行优化的,增加一个优化层。生产环境中应用比较少,因为耗时和提升不成正比。
1)完全虚拟化
- 优点是客户机的操作系统内核不需要做特殊配置,部署便利,灵活,兼容性好。
- 缺点是客户机操作系统的内核不能够直接管理底层硬件,内核通过
Hypervisor
管理底层硬件需要有转换开销,性能比裸机操作要差。
- 优点是半虚拟化的虚拟机操作系统内核能够直接管理底层硬件,性能比全虚拟化技术更强。
- 缺点是客户机操作系统内核需要事先进行修改,对于一些闭源的操作系统,例如Windows我们就无法使用半虚拟化技术,部署的便利性和灵活性都不够,兼容性不够好。
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)稳定性,一旦宿主操作系统出现问题,虚拟化软件在稳定也不行。
Hypervisor
虚拟化层,在虚拟化环境中无须完整的Host OS,直接将Hypervisor
部署在裸机上,并将裸机服务器的硬件资源虚拟化,也可以将Hypervisor
理解为仅对硬件资源进行虚拟和调度的薄操作系统,其并不提供常规Host OS的功能。常见的裸金属架构有IBM
的PowerVM
、VMware
的ESX Sevrer
、Citrix
的XenServer
、Microsoft
的Hyper-V
以及开源的KVM
等虚拟化软件。裸金属架构虚拟化图如下:
文章图片
- 优点:虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵活。
- 缺点:虚拟层内核开发难度较大。
参考:
- https://blog.csdn.net/ygh3110001606/article/details/103146570
- https://blog.csdn.net/u014007037/article/details/50453853
- https://www.jianshu.com/p/b9900b9dec34
推荐阅读
- 『现学现忘』Docker相关概念|『现学现忘』Docker相关概念 — 4、虚拟化概念
- ASP.NetCore+VUE|ASP.NetCore+VUE 实现学生成绩管理系统(一)
- 『现学现忘』Docker相关概念|『现学现忘』Docker相关概念 — 3、IaaS、SaaS、PaaS服务模式补充
- 『现学现忘』Docker相关概念|『现学现忘』Docker相关概念 — 2、云计算的服务模式
- 『无为则无心』Python日志|『无为则无心』Python日志 — 65、日志模块logging的使用
- 『无为则无心』Python基础|『无为则无心』Python基础 — 63、Python中的生成器
- 『无为则无心』Python面向对象|『无为则无心』Python面向对象 — 59、魔法方法
- 『无为则无心』Python面向对象|『无为则无心』Python面向对象 — 58、类方法和静态方法
- python如何攻击网站_GitHub - wuhuanyan/buy_pig_plan_python: 用Python写的『电话攻击,电话轰炸,电话炸弹』...
- 『无为则无心』Python面向对象|『无为则无心』Python面向对象 — 57、类属性和实例属性