虚拟化技术
转载:https://blog.csdn.net/HzSunshine/article/details/70759343
一 虚拟化简介
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机(对计算机物理资源的抽象,实现资源的模拟、隔离和共享)。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,降低成本,加快部署,极大增强系统整体安全性和可靠性。使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
二 虚拟化和云计算的关系
虚拟化重点对资源的虚拟,比如把一台大型的服务器虚拟成多台小定的服务器。一个侧重虚拟的这种技术。
云计算的重点是对资源池(可以是经过虚拟化之后)进行统一的管理和调度。一种侧重对虚拟化之后的资源进行管理和调度。
三 虚拟化架构
1.寄居虚拟化架构
寄居虚拟化架构指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。(类似 Vmware Workstation 的程序)
2.裸金属虚拟化架构
裸金属虚拟化架构指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。
4.混合虚拟化架构
混合虚拟化架构将一个内核级驱动器插入到宿主操作系统内核。这个驱动器作为虚拟硬件管理器来协调虚拟机和宿主操作系统之间的硬件访问。
虚拟化具体技术:
计算虚拟化技术
CPU虚拟化
内存虚拟化
把物理机的真实物理内存统一管理,包装成多份虚拟的内存给若干虚拟机使用。
IO虚拟化
存储虚拟化技术
存储虚拟化的概念
存储虚拟化是在存储设备上加入一个逻辑层,通过逻辑层访问存储资源
对管理员来说,可以很方便的调整存储资源,提高存储利用率
对终端用户来说,集中的存储设备可以提供更好的性能和易用性
存储虚拟化的实现方式
裸设备+逻辑卷
存储设备虚拟化
主机存储虚拟化+文件系统
网络虚拟化技术
5.虚拟化类型
全虚拟化(Full Virtualization)
全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,Hypervisor(VMM)在guest操作系统和裸硬件之间用于工作协调,VMM完整模拟硬件的方式提供所有全部接口,模拟特权指令,guset操作系统认为自己还是直接处于原始硬件上,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理。(VirtualBox,KVM,VMware Workstation和VMware ESX)(腾讯云采用的是KVM)
全虚拟化模型
优点:Guest OS 无需修改,速度和功能非常不错,使用简单。
缺点:中间层Hypervisor需占用一定的资源。
半虚拟化(Para Virtualization)(准虚拟化)
半虚拟化是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码,guest OS能配合Hypervisor来协作实现虚拟化。(guest操作系统意识到自己是处于虚拟化环境)(Xen)(阿里云采用的是Xen)
半虚拟化模型
优点:与全虚拟化相比,架构更精简,整体速度会有一定优势。
缺点:需要对Guest OS修改,所以用户体验比较麻烦。
硬件辅助虚拟化(Hardware Assisted Virtualization)
Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派。(VMware Workstation,VirtualBox,KVM,VMware ESX和Xen)
优点:通过引入硬件技术,使虚拟技术更接近物理机速度。
操作系统级虚拟化技术(Operating System Level Virtualization)
通过对服务器操作系统进行简单地隔离来实现虚拟化,他们的特点是一个单一的节点运行着唯一的操作系统实例。通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器是一个虚拟的操作系统,被称为虚拟环境(即VE,VirtualEnvironment),也被称为虚拟专用服务器(即VPS,Virtual Private Server)。
在操作系统虚拟化技术中,每个节点上只有唯一的系统内核,不虚拟任何硬件设备。此外,多个虚拟环境以模板的方式共享一个文件系统,性能得以大幅度提升。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者运行上百个VE/VPS。所以,操作系统虚拟化技术是面向生产环境、商业运行环境的技术。
操作系统虚拟化模型
优点:对操作系统进行直接修改,所以成本低而且性能不错。
缺点:在资源隔离方面表现不佳。所有虚拟服务器必须运行同一操作系统。
硬件分区技术
硬件分区技术如下图所示:硬件资源被划分成数个分区,每个分区享有独立的CPU、内存,并安装独立的操作系统。在一台服务器上,存在有多个系统实例,同时启动了多个操作系统。
硬件分区模型
优点:完全的电气化隔离在不同的操作系统之间提供最大程度的保护。
缺点:缺乏很好的灵活性,不能对资源做出有效调配。成本高,不易统一管理。
虚拟化还可分为服务器虚拟化,桌面虚拟化,应用虚拟化
服务器虚拟化 (服务的是服务器型上层应用)
数量少的情况推荐使用ESXI,XenServer
数量大的情况推荐使用KVM,RHEV(并不开源),oVirt,Openstack,Vmvare vshpere
桌面虚拟化 (服务的是终端用户)
桌面虚拟化依赖于服务器虚拟化,在数据中心的服务器上进行服务器虚拟化,生成大量的独立的桌面操作系统(虚拟机或者虚拟桌面),同时根据专有的虚拟桌面协议发送给终端设备。用户终端通过以太网登陆到虚拟主机上,只需要记住用户名和密码及网关信息,即可随时随地的通过网络访问自己的桌面系统,从而实现单机多用户。多用于IP外包,呼叫中心,银行办公、移动桌面。
应用虚拟化
技术原理是基于应用/服务器计算A/S架构,采用类似虚拟终端的技术,把应用程序的人机交互逻辑(应用程序界面、键盘及鼠标的操作、音频输入输出、读卡器、打印输出等)与计算逻辑隔离开来。在用户访问一个服务器虚拟化后的应用时,用户计算机只需要把人机交互逻辑传送到服务器端,服务器端为用户开设独立的会话空间,应用程序的计算逻辑在这个会话空间中运行,把变化后的人机交互逻辑传送给客户端,并且在客户端相应设备展示出来,从而使用户获得如同运行本地应用程序一样的访问感受。
五 虚拟化常用几种技术
KVM
KVM是集成到linux内核的系统虚拟化模块,使用linux自身调度器进行管理,工作在X86架构且需支持硬件辅助虚拟化技术(Intel VT和AMD-V)。使用全虚拟化技术,采用混合虚拟化架构。
KVM由两部分组成:KVM模块和QEMU。
QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。
KVM是Linux kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去做事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件QEMU。它的特点是可虚拟不同的CPU。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。
Xen
Xen是第一类运行再裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,属于裸金属架构。Xen支持hypervisor和虚拟机互相通讯。Xen最重要的优势在于半虚拟化,此外未经修改的操作系统也可以直接在xen上运行,能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。
VMWare ESX或vSphere(升级)
vSphere是完全虚拟化,属于裸金属架构。独立安装和运行在祼机上的系统,因此与VMware Workstation软件不同的是它不再依存于宿主操作系统之上。vSphere将应用程序和操作系统从底层硬件分离出来,从而简化了IT操作。用户现有的应用程序可以看到专有资源,而服务器则可以作为资源池进行管理。因此,用户的业务将在简化但恢复能力极强的IT环境中运行。
Dcker
Docker内部使用的是Linux容器技术(LXC),属于操作系统轻量级的虚拟化。Docker定义了一套容器构建(build)、分发(ship)和执行(run)的标准化体系,开创了容器云+端开放平台(Docker Hub + Docker Engine)的模式,极大地提高了开发部署效率;从生态圈的角度看,Docker过去一年之所以开始普及,主要是在云计算产业迅速发展的环境下,Docker作为虚拟化的补充甚至替代技术而被人们所关注。
Docker技术与虚拟化技术(传统)有何区别?
从虚拟化层面来看,传统虚拟化技术是对硬件资源的虚拟,容器技术则是对进程(操作系统内核)的虚拟,从而可提供更轻量级的虚拟化,实现进程和资源的隔离。(所有容器都必须使用同样的操作系统和内核)
从架构来看,Docker比虚拟化少了两层,取消了hypervisor层和GuestOS层,使用Docker Engine进行调度和隔离,所有应用共用主机操作系统,因此在体量上,Docker较虚拟机更轻量级,在性能上优于虚拟化,接近裸机性能。(调优的容器系统,可以在同一硬件上拥有数量比使用Xen虚拟机或KVM虚拟机多出四到六倍的服务器应用实例(Bottomley))从应用场景来看,Docker和虚拟化则有各自擅长的领域,在软件开发、测试场景和生产运维场景中各有优劣。