虚拟化和云计算的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
虚拟化和云计算的区别
虚拟化和云计算的区别
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
⼀.云计算(CLOUD COMPUTING)概述
云计算是⼀种能够跨⽹络、按需提供基础架构、服务、平台和应⽤的交付⽅式,正在快速取代原本通过硬布线连接进⾏资源共享的⽅式。
云计算是指在云中运⾏⼯作负载,⽽云是⼀种能够抽象、汇集和共享整个⽹络中的可扩展资源的IT环境。
云计算和云本⾝都不属于技术的范畴。
(1)云计算是指在云中运⾏⼯作负载的功能;
(2)⽽云是⼀种环境,是运⾏应⽤的地⽅;
(3)技术则是指⽤于构建和使⽤云的软件和硬件;
云计算主要分为4种类型:私有云、公共云、混合云和多云。
同时,云计算服务主要有3种:基础架构即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
云服务是指由第三⽅提供商托管的基础架构、平台或软件,可通过互联⽹提供给⽤户。
怎么选择云类型或云服务,取决于您的实际需求。
世界上没有⼀模⼀样的两个云(即使它们的类型相同),也没有两个云服务解决的是同⼀个问题。
但是,通过了解它们的相似之处,您可以更加清楚每种云计算类型和云服务可能会如何影响到您
推荐阅读:
https:///zh/topics/cloud
https:///zh/topics/cloud-computing/what-are-cloud-services
https:///zh/topics/cloud-computing/public-cloud-vs-private-cloud-and-hybrid-cloud
https:///zh/topics/cloud-computing/what-is-iaas
https:///zh/topics/cloud-computing/what-is-paas
https:///zh/topics/cloud-computing/what-is-saas
https:///zh/topics/cloud-native-apps/what-is-faas
https:///zh/topics/cloud-computing/what-is-caas
https:///zh/topics/cloud-native-apps/what-is-serverless
1>.云计算类型
公共云:
⼀种利⽤⾮最终⽤户所有的资源创建的云环境,可重新分发给其他租户。
全球规模最⼤的公共云提供商如:阿⾥云、Amazon Web Services(AWS)、Google云、IBM Cloud及Microsoft Azure等等。
公共云是⼀个虚拟资源池,可⾃动部署并通过⾃助服务界⾯在多个客户端间进⾏分配,其中的虚拟资源来⾃归第三⽅公司所有和管理的硬件设备。
当⼯作负载出现意外需求波动时,可直接通过公共云进⾏横向扩展。
如今,公共云通常不会作为独⽴的基础架构解决⽅案来部署,⽽是被作为异构混合环境的⼀部分部署,这样即可以提⾼安全性和性能,降低成本,还可以改进基础架构、服务和应⽤的可⽤性。
私有云:
可⼴义地定义为:⼀种专为最终⽤户⽽创建,⽽且通常位于⽤户的防⽕墙内(有时也是内部部署)的云环境。
私有云是⼀种专为最终⽤户⽽创建,⽽且通常位于⽤户的防⽕墙内的云环境。
尽管传统上私有云在内部运⾏,但现在许多企业构建的私有云位于供应商租赁的外部数据中⼼(IDC)内。
如果底层 IT 基础架构归某个拥有完全独⽴访问权限的客户专有,那这种云就是私有云。
混合云:
⼀种具有⼀定程度的⼯作负载可移植性以及编排和管理能⼒的多云环境。
混合云是⼀种IT架构,在两个或更多环境中进⾏某种程度的⼯作负载移植、编排和管理。
混合云中的环境因企业⽽异,可能包括:
(1)⾄少1个私有云与⾄少1个公共云;
(2)含2个或多个相互连接的私有云;
(3)含2个或多个公共云;
(4)连接⾄少⼀个公共云或私有云的裸机或虚拟环境;
这些不同的要求源于云计算的早期阶段,那时,公共云与私有云之间的差异可通过位置和所有权明确区分。
但是,现在的云类型更加复杂,因为位置和所有权⽐较抽象。
这是因为很多云服务商为了节省成本,并不会⾃建机房,⽽是托管到ID
多云:
⼀个含有多个云环境(公共云或私有云)的IT系统,云与云之间可能联⽹也可能不联⽹。
多云是⼀种云架构,由多个云供应商提供的多个云服务组合⽽成,既可以是公共云,也可以是私有云。
参考链接:
https:///zh/topics/cloud-computing/what-is-public-cloud
https:///zh/topics/cloud-computing/what-is-private-cloud
https:///zh/topics/cloud-computing/what-is-hybrid-cloud
https:///zh/topics/cloud-computing/what-is-multicloud
2>.云计算服务类型
在没有云计算服务之前,如果您是运维⼯程师,或者公司要成⽴信息化部门,需要您管理以下⼏种环境:
⽹络(Networking):
相互连接的⽹络组件可实现内部和外部系统之间的⽹络操作、管理和通信。
⽹络由互联⽹连接、⽹络⽀持、防⽕墙与安全防护,以及路由器、交换机和电缆等硬件组成。
存储(Storage):
解决公司数据的存储,⽐如是否考虑使⽤NAS类的存储设备。
服务器(Servers):
服务器的选型,包括品牌,硬件配置等。
虚拟化技术(Virtualization):
为了节省成本,您可能考虑使⽤虚拟化技术,将⼀台服务器虚拟出多台服务器来使⽤。
操作系统(Operating System):
需要您选择合适的操作系统,⽐如⽬前主流的Unix,Linux,Windows三⼤派系的选型。
中间件(Middleware):
需要您考虑是否要使⽤中间件服务,⽐如数据库服务,消息队列服务等。
运⾏环境(Runtime):
需要考虑是否要部署好相应的运⾏环境,⽐如Java,Python,Golang,Perl,PHP编程语⾔开发的运⾏时环境可能各有不同,这些都需要您来负责处理。
数据(Data):
要考虑数据的处理,⽐如随着时间的推移,本地磁盘空间使⽤快占满时应该及时处理这些数据的存储,处理,以及迁移等问题。
应⽤程序(Applications):
这就是针对应⽤程序的维护,⽐如⼤数据平台运维,Web集群运维,数据库运维,容器运维等。
综上所述,发现如果让我们⾃⼰来维护以上所有内容,可能会耗费相当多的⼈⼒,财⼒,物⼒。
为了给企业节省上⾯提到的成本,衍⽣了云计算服务类型,⼤致分为以下三种:
基础设施即服务(英⽂名称为:"Infrastructure-as-a-Service",下⾯简称"IaaS"):
IaaS表⽰将由云服务提供商通过互联⽹连接为您管理基础架构,包括实际的服务器、⽹络、虚拟化和数据存储。
⽤户可通过 API 或控制⾯板进⾏访问,并且基本上是租⽤基础架构。
诸如操作系统、应⽤和中间件等内容由⽤户管理,⽽提供商则负责硬件、⽹络、硬盘驱动器、数据存储和服务器,并负责处理中断、维修及硬件问题。
这是云存储提供商的典型部署模式。
平台即服务(英⽂名称为:"Platform-as-a-Service",下⾯简称"PaaS"):
PaaS表⽰硬件和应⽤软件平台将由外部云服务提供商来提供和管理,⽽⽤户将负责平台上运⾏的应⽤以及应⽤所依赖的数据。
PaaS主要⾯向开发⼈员和编程⼈员,旨在为⽤户提供⼀个共享的云平台,⽤于进⾏应⽤的开发和管理(DevOps 的⼀个重要组成部分),⽽⽆需构建和维护通常与该流程相关联的基础架构。
软件即服务(英⽂名称为:"Software-as-a-Service",下⾯简称"SaaS"):
SaaS是将云服务提供商管理的软件应⽤交付给⽤户的服务。
通常,SaaS应⽤是⼀些⽤户可通过⽹页浏览器访问的Web应⽤或移动应⽤。
该服务会为⽤户完成软件更新、错误修复及其他常规软件维护⼯作,⽽⽤户将通过控制⾯板或 API 连接⾄云应⽤。
此外,SaaS还消除了在每个⽤户计算机上本地安装应⽤的必要性,从⽽使群组或团队可使⽤更多⽅法来访问软件。
参考链接:
https:///zh/topics/cloud-computing/what-is-it-infrastructure
https:///zh/topics/cloud-computing/what-is-iaas
https:///zh/topics/cloud-computing/what-is-paas
https:///zh/topics/cloud-computing/what-is-saas
3>.CaaS与FaaS
容器即服务(英⽂名称为:"Container-as-a-Service",下⾯简称"CaaS"):
CaaS是⼀种云服务计算的模型,它允许⽤户使⽤内部数据中⼼或云,通过基于容器的抽象来部署和管理应⽤。
提供商会提供在其上部署和管理容器的框架或编排平台,⽽正是通过此编排,才得以实现关键 IT 功能的⾃动化。
对于要开发更安全且可扩展的容器化应⽤的开发⼈员⽽⾔,CaaS 尤为有⽤。
⽤户只需购买他们想要的资源(调度功能、负载平衡等),从⽽节省资⾦并提⾼效率。
容器可以创建⼀致的环境,以便快速开发和交付可在任何地⽅运⾏的云原⽣应⽤。
在云服务范畴内,CaaS被认为是基础架构即服务(IaaS)的⼀种⼦集,介于IaaS和平台即服务(PaaS)之间。
"功能即服务"(英⽂名称为:"Function-as-a-Service",下⾯简称"FaaS"):
FaaS是⼀种在⽆状态容器中运⾏的事件驱动型计算执⾏模型,这些功能将利⽤服务来管理服务器端逻辑和状态。
它允许开发⼈员以功能的形式来构建、运⾏和管理这些应⽤包,⽆需维护⾃⼰的基础架构。
FaaS是⼀种实现⽆服务器计算的⽅法,藉此开发⼈员可以编写业务逻辑,然后在完全由平台管理的Linux容器中执⾏这些业务逻辑。
需要注意的是,FaaS 基础架构通常是按需计量的,主要通过事件驱动型执⾏模型进⾏,因此它会随时待命,但不需要任何服务器进程在后台持续运⾏(这⼀点与平台即服务(PaaS)不同)。
参考链接:
https:///zh/topics/cloud-computing/what-is-caas
https:///zh/topics/cloud-native-apps/what-is-faas
https:///zh/topics/cloud-native-apps/what-is-serverless
⼆.虚拟化(Virtualization)概述
1>.什么是虚拟化
借助虚拟化技术,⽤户能以单个物理硬件系统为基础创建多个模拟环境或专⽤资源。
⼀款名为"Hypervisor"(虚拟机监控程序)的软件可直接连接到硬件,从⽽将⼀个系统划分为不同的、单独安全环境,即虚拟机(virtual machine)。
虚拟机监控程序能够将计算机资源与硬件分离并适当分配资源,这⼀功能对虚拟机⼗分重要。
虚拟化可以帮助您充分利⽤先前所做的投资。
2>.虚拟机主机("Host")与客户机("Guest")
配备了虚拟机监控程序(Hypervisor)的物理硬件叫做"主机"(以下统称为"Host"),⽽使⽤其资源的虚拟机则被称为虚拟客户机(它也被称为"宿主机",以下统称为"Guest")。
这些虚拟客户机将计算资源(如CPU、内存和存储器)视为⼀组可进⾏重新分配的资源。
操作员可以控制CPU、内存、存储器和其他资源的虚拟实例,以便虚拟客户机能在需要时收到所需资源。
3>.虚拟化技术分类-不同抽象层次的虚拟化技术
在计算机系统中,从底层⾄⾼层依次可分为:硬件层、操作系统层、函数库层、应⽤程序层。
在对某层实施虚拟化时,该层和上⼀层之间的接⼝不发⽣变化,⽽只变化该层的实现⽅式。
从使⽤虚拟资源的Guest的⾓度来看,虚拟化可发⽣在上述四层中的任⼀层。
应当注意,在对Guest的某⼀层进⾏虚拟化时,并未对Host在哪⼀层实现它作出要求,这⼀点是时常引起混淆的地⽅。
关于计算机不同抽象层次的虚拟化技术分为以下四类:
(1)硬件抽象层上的虚拟化
是指通过虚拟硬件抽象层来实现虚拟机,为客户机操作系统呈现和物理硬件相同或相近的硬件抽象层,⼜称为指令集级虚拟化,实现在此层的虚拟化粒度是最⼩的。
(2)操作系统层上的虚拟化
是指操作系统的内核可以提供多个互相隔离的⽤户态实例。
这些⽤户态实例(经常被称为容器)对于它的⽤户来说就像是⼀台真实的计算机,有⾃⼰独⽴的⽂件系统、⽹络、系统设置和库函数等。
(3)库函数层上的虚拟化
操作系统通常会通过应⽤级的库函数提供给应⽤程序⼀组服务,例如⽂件操作服务、时间操作服务等。
这些库函数可以隐藏操作系统内部的⼀些细节,使得应⽤程序编程更为简单。
不同的操作系统库函数有着不同的服务接⼝,例如Linux的服务接⼝是不同于Windows的。
库函数层上的虚拟化就是通过虚拟化操作系统的应⽤级库函数的服务接⼝,使得应⽤程序不需要修改,就可以在不同的操作系统中⽆缝运⾏,从⽽提⾼系统间的互操作性。
例如,Wine就是在Linux上模拟了Windows的库函数接⼝,使得⼀个Windows应⽤程序能够在Linux上正常运⾏。
(4)编程语⾔层上的虚拟化
另⼀⼤类编程语⾔层上的虚拟机称为语⾔级虚拟机,例如JVM(Java Virtual Machine),PVM(Python Virtual Machine)和微软的CLR(Common Language Runtime)。
这⼀类虚拟机运⾏的是进程级的作业,所不同的是这些程序所针对的不是⼀个硬件上存在的体系结构,⽽是⼀个虚拟体系结构。
这些程序的代码⾸先被编译为针对其虚拟体系结构的中间代码,再由虚拟机的运⾏时⽀持系统翻译为硬件的机器语⾔进⾏执⾏。
引⽤链接:
https:///mumuriyue/article/details/85714900#_Toc27374
4>.虚拟化技术分类-系统级虚拟化
系统级虚拟化即硬件抽象层上的虚拟化、指令集级虚拟化,是最早被提出和研究的⼀种虚拟化技术,当前存在多种此种技术的具体实现⽅案,在介绍它们之前,有必要先了解实现系统级虚拟化可采取的途径。
在每台虚拟机中都有属于它的虚拟硬件,通过虚拟化层的模拟,虚拟机中的操作系统认为⾃⼰仍然是独占⼀个系统在运⾏,这个虚拟化层被称为虚拟机监控器(Virtual Machine Monitor,VMM)。
VMM对物理资源的虚拟可以归结为三个主要任务:处理器虚拟化、内存虚拟化和I/O虚拟化。
其中,处理器虚拟化是VMM中最核⼼的部分,因为访问内存或进⾏I/O本⾝就是通过⼀些指令来实现的。
可虚拟化架构和不可虚拟化架构
在系统级虚拟化中,虚拟计算机系统和物理计算机系统可以是两个完全不同ISA(Instruction Set Architecture,指令集架构)的系统,例如,可以在⼀个x86的物理计算机上运⾏⼀个安腾的虚拟计算机。
但是,不同的ISA使得虚拟机的每⼀条指令都需要在物理机上模拟执⾏,从⽽造成性能上的极⼤下降。
总⽽⾔之,判断⼀个架构是否可虚拟化,其核⼼就在于该结构对敏感指令的⽀持上。
如果⼀个架构中所有敏感指令都是特权指令,则称其为可虚拟化架构,否则称为不可虚拟化架构。
系统级虚拟化有许多不同的具体实现⽅案,按照实现⽅法的不同,可划分为如下⼏个类别。
(1)模拟/仿真(Emulator)
我们已经知道,通过陷⼊再模拟敏感指令的执⾏来实现虚拟机的⽅法是有前提条件的:所有的敏感指令必须都是特权指令。
如果⼀个体系结构上存在敏感指令不属于特权指令,那么其就存在虚拟化漏洞,可以采⽤⼀些⽅法来填补或避免这些漏洞。
最简单直接的⽅法是,所有指令都采⽤模拟来实现,就是取⼀条指令,就模拟出这条指令执⾏的效果。
这种⽅法称作仿真。
使⽤这种⽅式的典型实现代表有: PearPC,Bochs,QEMU。
(2)完全虚拟化(Full virtualization)
在客户操作系统看来,完全虚拟化的虚拟平台和现实平台是⼀样的,客户机操作系统察觉不到是运⾏在⼀个虚拟平台上,这样的虚拟平台可以运⾏现有的操作系统,⽆须对操作系统进⾏任何修改,因此这种⽅式被称为完全虚拟化。
进⼀步说,客户机的⾏为是通过执⾏反映出来的,因此VMM需要能够正确处理所有可能的指令。
在实现⽅式上,以x86架构为例,完全虚拟化经历了两个阶段:软件辅助的完全虚拟化和硬件辅助的完全虚拟化。
软件实现的完全虚拟化:
在x86虚拟化技术的早期,没有在硬件层次上对虚拟化提供⽀持,因此完全虚拟化只能通过软件实现。
⼀个典型的做法是⼆进制代码翻译(Binary Translation)。
⼆进制代码翻译的思想是,通过扫描并修改客户机的⼆进制代码,将难以虚拟化的指令转化为⽀持虚拟化的指令。
VMM通常会对操作系统的⼆进制代码进⾏扫描,⼀旦发现需要处理的指令,就将其翻译成为⽀持虚拟化的指令块 这些指令块可以与VMM合作访问受限的虚拟资源,或者显式地触发异常让VMM进⼀步处理。
这种技术虽然能够实现完全虚拟化,但很难在架构上保证其完整性。
因此,x86⼚商在硬件上加⼊了对虚拟化的⽀持,从⽽在硬件架构上实现了虚拟化。
硬件辅助完全虚拟化
可以预料,如果硬件本⾝加⼊⾜够的虚拟化功能,可以截获操作系统对敏感指令的执⾏或者对敏感资源的访问,从⽽通过异常的⽅式报告给VMM,这样就解决了虚拟化的问题。
硬件虚拟化时⼀种完备的虚拟化⽅法,因⽽内存和外设的访问本⾝也是由指令来承载,对处理器指令级别的截获就意味着VMM可以模拟⼀个与真实主机完全⼀样的环境。
Intel的VT-x和AMD的AMD-V是这⼀⽅向的代表。
以VT-x为例,其在处理器上引⼊了⼀个新的执⾏模式⽤于运⾏虚拟机,当虚拟机执⾏在这个特殊模式中时,它仍然⾯对的是⼀套完整的处理器寄存器集合和执⾏环境,只是任何敏 在当前的系统级虚拟化解决⽅案中,全虚拟化应⽤得⾮常普遍,典型的有知名的产品有Oracle VirtualBox、RedHat KVM、VMware Workstation和VMware ESX(它在其4.0版,被改名为VMware vSphere)、Parallels Desktop、X
(3)类/半虚拟化(Para-Virtualization)
这样的虚拟平台需要对所运⾏的客户机操作系统进⾏或多或少的修改使之适应虚拟环境,因此客户机操作系统知道其运⾏在虚拟平台上,并且会去主动适应。
这种⽅式被称为类虚拟化,有时也称作半虚拟化。
另外,值得指出的是,⼀个VMM可以既提供完全虚拟化的虚拟平台,⼜提供类虚拟化的虚拟平台。
类虚拟化是通过在源代码级别修改指令以回避虚拟化漏洞的⽅式来使VMM能够对物理资源实现虚拟化。
上⾯谈到x86存在⼀些难以虚拟化的指令,完全虚拟化通过Binary Translation在⼆进制代码级别上来避免虚拟化漏洞。
类虚拟化采取的是另⼀种思路,即修改操作系统内核的代码,使得操作系统内核完全避免这些难以虚拟化的指令。
既然内核代码已经需要修改,类虚拟化进⼀步可以被⽤于优化I/O。
也就是说,类虚拟化不是去模拟真实世界中的设备,因为太多的寄存器模拟会降低性能.相反,类虚拟化可以⾃定义出⾼度优化的协议I/O。
这种I/O协议完全基于事务, 这种虚拟技术以Xen为代表,微软的Hyper-V所采⽤技术和Xen类似,也可以把Hyper-V归属于半虚拟化。
在系统级虚拟化的实现中,VMM是⼀个关键⾓⾊,前⾯已介绍过VMM的组成部分。
从Host实现VMM的⾓度出发,还可以将当前主流的虚拟化技术按照实现结构分为如下三类。
Hypervisor模型:
Hypervisor这个术语是在20世纪70年代出现的,在早期计算机界,操作系统被称为Supervisor,因⽽能够在其他操作系统上运⾏的操作系统被称为Hypervisor。
在Hypervisor模型中,VMM⾸先可以被看做是⼀个完备的操作系统,不过和传统操作系统不同的是,VMM是为虚拟化⽽设计的,因此还具备虚拟化功能。
从架构上来看,⾸先,所有的物理资源如处理器、内存和I/O设备等都归VMM所有,因此,VMM承担着管理物理资源的责任;其次,VMM需要向上提供虚拟机⽤于运⾏客户机操作系统,因此,VMM还负责虚拟环境的创建和管理。
由于VMM同时具备物理资源的管理功能和虚拟化功能,因此,物理资源虚拟化的效率会更⾼⼀些。
在安全⽅⾯,虚拟机的安全只依赖于VMM的安全。
Hypervisor模型在拥有虚拟化⾼效率的同时也有其缺点。
由于VMM完全拥有物理资源,因此,VMM需要进⾏物理资源的管理,包括设备的驱动。
我们知道,设备驱动开发的⼯作量是很⼤的。
因此,对于Hypervisor模型来说这是个很⼤的挑战。
事实上,在实际的产品中,基于Hypervisor模型的VMM通常会根据产品定位,有选择地挑选⼀些I/O设备来⽀持,⽽不是⽀持所有的I/O设备。
采⽤这种模型的典型是⾯向企业级应⽤的VMware vSphere。
宿主模型
与Hypervisor模型不同。
在宿主模型中,物理资源由宿主机操作系统管理。
宿主机操作系统是传统操作系统,如Windows 、Linux等,这些传统操作系统并不是为虚拟化⽽设计的,因此本⾝并不具备虚拟化功能,实际的虚拟化功能由VMM来提供。
VMM通常是宿主机操作系统独⽴的内核模块,有些实现中还包括⽤户态进程,如负责I/O虚拟化的⽤户态设备模型。
VMM通过调⽤宿主机操作系统的服务来获得资源,实现处理器、内存和I/O设备的虚拟化。
VMM创建出虚拟机之后,通常将虚拟机作为宿主机操作系统的⼀个进程参与调度。
宿主模型的优缺点和Hypervisor模型恰好相反。
宿主模型最⼤的优点是可以充分利⽤现有操作系统的设备驱动程序,VMM⽆须为各类I/O设备重新实现驱动程序,可以专注于物理资源的虚拟化。
考虑到I/O设备种类繁多,千变万化,设备驱动程序开发的⼯作量⾮常⼤,因此,这个优点意义重⼤。
此外,宿主模型也可以利⽤宿主机操作系统的其他功能,例如调度和电源管理等,这些都不需要VMM重新实现就可以直接使⽤。
宿主模型当然也有缺点,由于物理资源由宿主机操作系统控制,VMM得要调⽤宿主机操作系统的服务来获取资源进⾏虚拟化,⽽那些系统服务在设计开发之初并没有考虑虚拟化的⽀持,因此,VMM虚拟化的效率和功能会受到⼀定影响 此外,在安全⽅⾯,由于VMM是宿主机操作系统内核的⼀部分,因此,如果宿主机操作系统内核是不安全的,那么,VMM也是不安全的,相应地运⾏在虚拟机之上的客户机操作系统也是不安全的。
换⾔之,虚拟机的安全不仅依赖于VMM的安全,也依赖于宿主机操作系统的安全。
采⽤这种模型的典型是KVM、VirtualBox和VMware Workstation。
混合模型
混合模型是上述两种模式的汇合体。
VMM依然位于最低层,拥有所有的物理资源。
与Hypervisor模式不同的是,VMM 会主动让出⼤部分I/O设备的控制权,将它们交由⼀个运⾏在特权虚拟机中的特权操作系统控制。
相应地,VMM 虚拟化的职责也被分担.处理器和内存的虚拟化依然由VMM来完成,⽽I/O的虚拟化则由VMM和特权操作系统共同合作来完成。
I/O设备虚拟化由VMM和特权操作系统共同完成,因此,设备模型模块位于特权操作系统中,并且通过相应的通信机制与VMM合作。
混合模型集中了上述两种模型的优点。
VMM可以利⽤现有操作系统的I/O设备驱动程序,不需要另外开发。
VMM直接控制处理器、内存等物理资源,虚拟化的效率也⽐较⾼。
在安全⽅⾯,如果对特权操作系统的权限控制得当,虚拟机的安全性只依赖于VMM。
当然,混合模型也存在缺点。
由于特权操作系统运⾏在虚拟机上,当需要特权操作系统提供服务时,VMM需要切换到特权操作系统,这⾥⾯就产⽣上下⽂切换的开销。
当切换⽐较频繁时,上下⽂切换的开销会造成性能的明显下降。
出于性能⽅⾯的考虑,很多功能还是必须在VMM 中实现,如调度程序和电源管理等。
采⽤这种模型的典型是Xen。
引⽤链接:
https:///mumuriyue/article/details/85714900#_Toc27422
5>.虚拟化技术分类-操作系统级虚拟化
在操作系统虚拟化技术中,每个节点上只有唯⼀的系统内核,不虚拟任何硬件设备。
通过使⽤操作系统提供的功能,多个虚拟环境之间可以相互隔离。
通常所说的容器(Container)技术,如⽬前为⽌最流⾏的容器系统Docker,即属于操作系统级 此外,在不同的场景中,隔离出的虚拟环境也被称作虚拟环境(即VE,Virtual Environment)或虚拟专⽤服务器(即VPS,Virtual Private Server)。
以容器技术为例,它有⾃⼰独特的优点,它的出现,⼀⽅⾯解决了传统操作系统所忽视和缺乏的应⽤程序间的独⽴性问题,另⼀⽅⾯,它避免了相对笨重的系统级虚拟化,是⼀种轻量级的虚拟化解决⽅案。
操作系统领域⼀直以来⾯临的⼀个主要挑战来⾃于应⽤程序间存在的相互独⽴性和资源互操作性之间的⽭盾,即每个应⽤程序都希望能运⾏在⼀个相对独⽴的系统环境下,不受到其他程序的⼲扰,同时⼜能以⽅便快捷的⽅式与其他程序交换和共 当前通⽤操作系统更强调程序间的互操作性,⽽缺乏对程序间相对独⽴性的有效⽀持,然⽽对于许多分布式系统如Web服务、数据库、游戏平台等应⽤领域,提供⾼效的资源互操作同保持程序间的相对独⽴性具有同等重要的意义。
主流虚拟化产品VMware和Xen等均采⽤Hypervisor模型(Xen采⽤的混合模型与Hypervisor模型差别不⼤,可统称为Hypervisor模型)。
该模型通过将应⽤程序运⾏在多个不同虚拟机内,实现对上层应⽤程序的隔离。
但由于Hypervisor模型倾向于每个虚拟机都拥有⼀份相对独⽴的系统资源,以提供更为完全的独⽴性,这种策略造成处于不同虚拟机内的应⽤程序间实现互操作⾮常 例如,即使是运⾏在同⼀台物理机器上,如果处于不同虚拟机内,那么应⽤程序间仍然只能通过⽹络进⾏数据交换,⽽⾮共享内存或者⽂件。
⽽如果使⽤容器技术,由于各容器共享同⼀个宿主操作系统,能够在满⾜基本的独⽴性需求的同时提供 容器技术还可以更⾼效地使⽤系统资源,由于容器不需要进⾏硬件虚拟以及运⾏完整操作系统等额外开销,相⽐虚拟机技术,⼀个相同配置的主机,往往可以运⾏更多数量的应⽤。
此外,容器还具有更快速的启动时间,传统的虚拟机技术启动应⽤服务往往需要数分钟,⽽对于容器由于,直接运⾏于宿主内核,⽆需启动完整的操作系统,因此可以做到秒级、甚⾄毫秒级的启动时间,⼤⼤的节约了应⽤开发、测试、部署的时
引⽤链接:
https:///mumuriyue/article/details/85714900#_Toc18928
推荐阅读:
https:///yinzhengjie2020/p/14013388.html
三.虚拟化和云计算的区别
还记得上⾯提到的云计算服务类型吗,是否已经发现了Virtualization是在IaaS层呢?
由于两者的核⼼理念都是从硬件中分离资源,以创建可⽤的环境,所以很容易被混为⼀谈。
虚拟化有助于创建云,但它并⾮实现云计算的决定性技术。
你可以这样理解:
(1)虚拟化是⼀种将功能与硬件分离的技术
(2)⽽云计算并不仅仅是依赖于这种分离的解决⽅案
美国国家标准与技术协会这样描述云计算的5种功能:⼀个⽹络、池化资源、⼀个⽤户界⾯、置备功能、⾃动化资源控制/分配。
虽然虚拟化可以创建⽹络和池化资源,但还需要其他管理和操作系统软件来创建⽤户界⾯、部署虚拟机、控制/分配资源。
推荐阅读:
https:///zh/topics/virtualization
https:///zh/topics/cloud-computing/cloud-vs-virtualization
https:///en/resources/resources-evolving-beyond-virtualization-open-hybrid-cloud-html。