『现学现忘』Docker相关概念 — 6、虚拟化技术分类
虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层没有固定的墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在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。
如下图所示:
总结:
相当于在
Hypervisor
和Guest OS中间加了一层管理或者优化的过程。这样Hypervisor
的工作效率的提高了。这种半虚拟化是需要对Guest Os宿主操作系统进行优化的,增加一个优化层。生产环境中应用比较少,因为耗时和提升不成正比。
(3)完全虚拟化与半虚拟化优缺点
1)完全虚拟化
- 优点是客户机的操作系统内核不需要做特殊配置,部署便利,灵活,兼容性好。
- 缺点是客户机操作系统的内核不能够直接管理底层硬件,内核通过
Hypervisor
管理底层硬件需要有转换开销,性能比裸机操作要差。
2)半虚拟化
- 优点是半虚拟化的虚拟机操作系统内核能够直接管理底层硬件,性能比全虚拟化技术更强。
- 缺点是客户机操作系统内核需要事先进行修改,对于一些闭源的操作系统,例如Windows我们就无法使用半虚拟化技术,部署的便利性和灵活性都不够,兼容性不够好。
2、从虚拟化架构分类
在虚拟化环境下,物理服务器的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
等虚拟化软件。
裸金属架构虚拟化图如下:
- 优点:虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵活。
- 缺点:虚拟层内核开发难度较大。
参考:
『现学现忘』Docker相关概念 — 6、虚拟化技术分类的更多相关文章
- 『现学现忘』Docker相关概念 — 1、云计算概念
目录 1.云计算的概念 2.示例说明云计算 3.小故事说明云计算 "云计算"这个词,相信大家都非常熟悉. 作为信息科技发展的主流趋势,它频繁地出现在我们的眼前.伴随它一起出现的,还 ...
- 『现学现忘』Docker相关概念 — 8、虚拟化技术和容器技术的关系
目录 1.云计算中虚拟化技术和容器技术到的关系 2.虚拟机和容器对比 3.虚拟化技术和容器技术区别 1.云计算中虚拟化技术和容器技术到的关系 通过一个关于房间和住人的小问题,我们来初步的理解一下虚拟化 ...
- 『现学现忘』Docker相关概念 — 2、云计算的服务模式
目录 1.最底层的,就是IaaS 2.再往上,就是PaaS 3.继续往上,就是SaaS 4.IaaS.SaaS.PaaS三者之间的关系 上一篇文章详细介绍了什么是云计算: 云是一种服务,可以像使用水. ...
- 『现学现忘』Docker相关概念 — 3、IaaS、SaaS、PaaS服务模式补充
目录 1.IaaS服务模式 2.PaaS服务模式 (1)何时使用PaaS (2)PaaS的特点 (3)PaaS优势 3.SaaS服务模式 云计算通俗来说就是输入/输出和计算不在一个主机上.计算要用到计 ...
- 『现学现忘』Docker相关概念 — 4、虚拟化概念
目录 1.虚拟化的概念 2.为什么出现虚拟化 3.虚拟化技术 1.虚拟化的概念 虚拟化是指通过虚拟化技术将计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操 ...
- 『现学现忘』Docker基础 — 28、Docker容器数据卷介绍
目录 1.什么是Docker容器数据卷 2.数据卷的作用 3.数据卷的使用 1.什么是Docker容器数据卷 Docker容器数据卷,即Docker Volume(卷). 当Docker容器运行的时候 ...
- 『现学现忘』Docker基础 — 9、Docker简介
目录 1.什么是Docker? 2.Docker的出现解决了什么问题? 3.Docker的特别之处 4.Docker相关网站 1.什么是Docker? 2010年dotCloud公司在旧金山成立,PA ...
- 『现学现忘』Docker基础 — 10、Docker的安装
目录 1.前提 2.通过yum安装Docker (1)更新yum包 (2)移除旧的Docker版本 (3)安装必须的软件包 (4)设置稳定yum源仓库 (5)更新yum软件包索引 (6)开始安装Doc ...
- 『现学现忘』Docker基础 — 11、Docker安装的问题补充
目录 1.问题复现 2.解决冲突 3.重新安装docker-ce-selinux 4.安装Docker-ce 5.总结 通过yum安装Docker的时候,安装20版本的Docker没有出现问题,在安装 ...
随机推荐
- Lesson2——Pandas库下载和安装
pandas目录 简介 Python 官方标准发行版并没有自带 Pandas 库,因此需要另行安装.除了标准发行版外,还有一些第三方机构发布的 Python 免费发行版, 它们在官方版本的基础上开发而 ...
- Java 变量的声明及初始化
格式: 数据类型 变量名字1 , 变量名字2 ,--变量名字n ; 案例: int i 声明了一个整形的变量. double d 声明了一个double数据类型的变量 float f 声明了一个fl ...
- java 监听redis事件
第一步:利用RDM等redis连接工具查看相应事件,然后去网上搜索 一下,会有redis各种事件的说明,选择契合业务的事件: 第二步:创建监听处理类: 1 package com.lechuang.a ...
- 测试提高路线图_tester+
https://mp.weixin.qq.com/s/30ZT0w164Q3iLdPg4R8org
- 用Express 创建项目
1.Node.js Express 框架安装:npm install express --save在当前目录下创建一个node_modules 2.安装必要的中间件npm install body-p ...
- ScaleFlux CSD 2000 在携程的应用实践
一.业界背景与现状 近些年来,有三件事实在业界同时发生: 1. 业务的发展朝着"生产"和"使用"海量增长数据的方向演进. 2. 摩尔定律 的 ...
- tar压缩打包实用命令总结
一.tar常用命令参数 用法:tar [参数] [文件] -v 显示指令执行过程 -c 创建压缩文件 -x 解压文件 -z 通过gzip指令处理文件 -f 指定文件 -C 解压文件到指定目录 -t - ...
- MLHPC 2016 | Communication Quantization for Data-parallel Training of Deep Neural Networks
本文主要研究HPC上进行数据并行训练的可行性.作者首先在HPC上实现了两种通信量化算法(1 Bit SGD以及阈值量化),然后提出了自适应量化算法以解决它们的缺点.此外,发挥出量化算法的性能,作者还自 ...
- windbg调试系列教程:sos扩展的介绍和使用
SOS是什么? 直观来说,sos就是一个程序集文件.这个程序集的作用就是让我们在使用windbg分析.net进程时,更加方便快捷.通过sos,我们可以清晰的查看CLR运行时的各类信息,辅助我们去理解托 ...
- Java NIO Selector 的使用
之前的文章已经把 Java 中 NIO 的 Buffer.Channel 讲解完了,不太了解的可以先回过头去看看.这篇文章我们就来聊聊 Selector -- 选择器. 首先 Selector 是用来 ...