六种主流虚拟化技术全解析:OpenStack、KVM、Hyper-V、VMware、Xen及Docker
秒懂虚拟化(一):从概念到网络、存储虚拟化全解析,通俗解读版-CSDN博客
秒懂虚拟化(二):服务器虚拟化、操作系统虚拟化、服务虚拟化全解析,通俗解读版_hostos和guestos-CSDN博客
秒懂虚拟化(三):桌面拟化、用户体验虚拟化、应用程序虚拟化全解析,通俗解读版-CSDN博客 秒懂虚拟化(四):虚拟化技术优劣、技术原理、CPU虚拟化和内存虚拟化全解析,通俗解读版-CSDN博客
前面4篇文章详细介绍了虚拟化的概念及虚拟化的各种类型,现介绍常用的6种虚拟化解决方案。
1、OpenStack
OpenStack是一个意义非凡的自由软件和开放源代码项目,由NASA(美国国家航空航天局)和Rackspace携手合作研发并发起。它是一款备受瞩目的开源云平台,在云计算领域占据着重要地位。
OpenStack主要通过相应的API与驱动来实现对虚拟机的管理,其兼容性极佳,几乎能够支持市面上所有类型的虚拟化环境。需要注意的是,OpenStack自身并不具备虚拟化功能,虚拟化功能由VMM(虚拟机监视器)来提供,而OpenStack则依据相应的API对VMM进行管理,同时负责云平台的搭建以及周边功能的完善工作。
OpenStack在设计之初就充分考虑到分布式应用的架构需求。在这个平台中,应用的组件可以跨越多个物理设备或虚拟设备。并且,这类应用还被设计成能够随着规模的扩大,通过添加应用实例或者重新平衡应用实例间的负载来灵活应对,其目标是打造一个实施过程简单、可大规模扩展、功能丰富且标准统一的云计算管理平台。
(1)逻辑组成部分
从逻辑层面来看,OpenStack主要由三个核心部分构成:
①控制模块:作为整个平台的控制中枢,负责协调和管理各个组件的运行,对平台的整体运行状态进行把控。
②网络模块:在网络方面发挥关键作用,负责网络的配置、管理以及保障网络通信的顺畅,确保各个组件之间能够实现高效的数据传输。
③计算模块:承担着计算任务的执行工作,为用户提供计算资源和服务,是实现云计算功能的重要基础。
(2)组成模块
OpenStack 由多个可分布式部署的模块构成,各模块协同运作。Nova 负责计算资源管理,创建、管理和销毁虚拟机实例;Keystone 处理认证与授权,保障平台安全;Ceilometer 监控资源与系统运行;Horizon 提供 Web 管理平台;Glance 管理镜像文件;Neutron 搭建和虚拟化网络环境;Cinder 提供块存储服务;Swift 负责数据对象存储和备份,还能备份 Cinder 的数据。
(3)获取方式
①DevStack安装脚本:可通过
git clone https://opendev.org/openstack/devstack
获取,这是OpenStack的开发工具包,适合开发者用于搭建和测试OpenStack开发环境。
②Cirros镜像文件:可从https://download.cirros-cloud.net/下载,常被用于测试OpenStack的功能。
2、KVM
基于内核的虚拟机(Kernel-based Virtual Machine,KVM)是开源软件。
KVM(https://www.linux-kvm.org/page/Main_Page) 是一款基于 X86 架构,且硬件支持虚拟化技术的 Linux 全虚拟化解决方案。硬件支持虚拟化技术由 CPU 厂商提供,目前市面上有两种技术方案,Intel-VT 与 AMD-V。KVM首次被并入Linux的内核版本为 2.6.20,在rhel 5.4中推出,并于 2007 年 2 月 5 日正式发布。只要硬件支持Intel-VT 或 AMD-V 就可以使用KVM。可以通过命令grep –E “vmx|svm” /proc/cpuinfo来确定当前硬件平台的支持情况,如下图所示。
3、Hyper-V
Hyper-V是微软推出的虚拟化技术,最初内置于 Windows Server 2008中。与VMWare ESXi、Xen一样采用裸金属架构,直接运行在硬件之上。
Hyper-V(https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/)设计的目的是为广大的用户提供更为熟悉以及成本效益更高的虚拟化基础设施软件,这样可以降低运作成本、提高硬件利用率、优化基础设施并提高服务器的可用性。Hyper-V采用微内核的架构,兼顾了安全性和性能的要求。
由于Hyper-V底层的Hypervisor代码量很小,不包含任何第三方的驱动,非常精简,安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。Hyper-V采用基于VMBUS(Virtual Machine Bus)的高速内存总线架构,所有来自虚拟机的硬件请求,都可以直接经虚拟化服务客户机(Virtualization Service Consumer,VSC),通过VMBUS总线发送到根分区的虚拟化服务提供者(Virtualization Service Provider,VSP),VSP则调用对应的设备驱动直接访问硬件,中间不再需要通过Hypervisor的管理。在Hyper-V中运行Linux操作系统也是没有问题的,只需要安装与Linux相关的组件即可。 Hyper-V 可以采用半虚拟化和全虚拟化两种模拟方式创建虚拟机。
(1)半虚拟化方式要求虚拟机与物理主机的操作系统(通常是版本相同的Windows)相同,以使虚拟机具备高性能;
(2)全虚拟化方式要求 CPU 支持全虚拟化功能,如 Inter-VT 或 AMD-V,以便能够创建使用不同的操作系统的虚拟机,如Linux或者Mac OS。
4、VMware
VMware(https://www.vmware.com/)旗下有很多虚拟化产品,对不同的需求有不同的产品系列,如VMware ESX/ESXi、VMware Workstation、VMware Player等。
(1)VMware ESXi VMware ESXi前身为VMware ESX(Elastic Sky X),是一款企业级虚拟化产品。
Vmware Esxi 是为管理与运行客户虚拟机而开发的直接运行在裸机(硬件)上的虚拟化产品。Vmware ESXi 不是一个可以安装到操作系统中的软件,它本身包含并集成了相应的操作系统组件,如内核。在4.1 版本后,ESX 正式更名为 ESXi。ESXi 将之前的 ESX的相关组件进行了替换,替换后的组件更像是一个完整的操作系统。目前,ESX/ESXi在VMware 虚拟化基础框架软件套件中占有很重要的位置。 ESXi 与 VMware 的其他产品不一样,它是直接运行在裸机上(无操作系统)的,有自己的一套内核。启动时,最先启动Linux内核,之后则开始加载一系列特殊的虚拟化组件,当然也包括 ESX 本身的核心模块(VMkernel)。但是从 4.1 版本后,ESXi 不再集成 Linux 内核,它将 VMkernel 进行了更新,更像是一个完整的微内核了,它本身就提供了各种接口,最重要的是与硬件的接口,与客户操作系统的接口以及与服务终端的接口。
(2)VMware WorkStation VMware Workstation是一款功能强大的桌面虚拟计算机软件,它不能运行在裸机上,必须要有操作系统的支持才行,所以它是寄居架构类型的虚拟化产品。VMware Workstation可以让用户在单一的桌面上同时运行不同的操作系统,可以模拟完整的网络环境,管理多台虚拟机。
(3)VMware Player VMware Player与VMware Workstation的功能是一样的,但它是免费的。VMware Player在同一时刻只能运行一台虚拟机,但可以管理多台虚拟机。
5、Xen
Xen(https://xenproject.org/)是剑桥大学的开源项目,是最早的开源虚拟化引擎,现在由Linux基金组织开发。Xen采用的架构是裸金属架构,它是直接运行在硬件之上,使用微内核实现。它支持在同一台设备上同时并行执行多个不同的操作系统实例。Xen 支持 IA-32、X86-64 以及 ARM 平台。目前来说,Xen 是市面上唯一一款裸金属架构的开源虚拟化引擎。它最常被用到的地方是服务器虚拟化、基础设施即服务(IaaS)。 Xen的特点与优势是非常显著的:
1)内核非常小,接口也少。
2)Xen 支持各种各样的操作系统。
3)驱动隔离。
4)半虚拟化。
Xen 以高性能、占用资源少著称,赢得了IBM、AMD、HP、Red Hat和Novell等众多世界级软硬件厂商的高度认可和大力支持,已被国内外众多企事业用户用来搭建高性能的虚拟化平台。
6、Docker
Docker(https://www.docker.com/)是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,其主要项目代码在 GitHub 上进行维护。
Docker 是一个开源的应用容器引擎(软件盒子),在容器里面运行的实例都是相互独立的,属于操作系统虚拟化的一种。
对于开发者来说,Docker 特别方便。比如你开发了一个应用,还有这个应用运行所需要的各种 “小零件”(依赖包),你可以把它们一股脑打包放进这个 “盒子” 里,这个 “盒子” 就是一个可移植的容器。然后不管是什么流行的操作系统,你都能把这个 “盒子” 放上去运行。而且这个 “盒子” 很厉害,它不挑语言、框架,也不依赖特定的系统。
还有个概念叫镜像,你可以把镜像想象成一个轻量级的、独立的 “打包文件”,这个文件里已经装好了运行时需要的所有东西,像软件、库、环境设置以及配置文件等等。而容器就是这个 “打包文件” 在运行时的样子,就像把这个 “打包文件” 放进内存里开始工作了。这个运行起来的 “盒子” 和电脑主机的环境是隔开的,它除了能访问主机的文件和端口,和主机就没别的联系了。
Docker 用起来和部署起来都很简单,几乎不会影响电脑的性能。你可以很轻松地把它安装在自己的电脑上,也可以部署到数据中心里,因为它是直接在本地主机的内核上面运行的。
☀容器与虚拟机的对比有什么不同呢?
对于虚拟机框架来说,如果要运行不同操作系统的应用程序,则在此框架上是完全没有问题的。因为 VMM 可以根据需要为每个虚拟机模拟相应的硬件,并安装相应的操作系统,最后再将应用程序安装到此操作系统中并运行。因为虚拟机的特性,所以不管是什么类型的应用程序都是可以运行的。
对于容器来说,它们都在同一个内核框架之上,因此就不能运行不同操作系统的应用程序。对于容器来说,由于它们不需要虚拟机,所以使用的内存更少,运行速度更快。
原文地址:https://blog.csdn.net/ALISHENGYA/article/details/145164622
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!