首页 理论教育 虚拟机与容器:云计算下的大数据处理

虚拟机与容器:云计算下的大数据处理

时间:2023-10-17 理论教育 版权反馈
【摘要】:Hypervisor负责服务器硬件资源管理,根据要求直接分配给不同虚拟机。传统虚拟机方式运行10个不同的应用就要建立10个虚拟机,而Docker只需要启动10个隔离的应用即可。

虚拟机与容器:云计算下的大数据处理

提到虚拟化技术大家肯定会想到虚拟机,也会想到VMware、XEN、KVM、Hyper-V这些产品。这种虚拟化我们可以简称为VM(Virtual Machine)虚拟化,就是以虚拟机为产物的虚拟化方案。还有一种虚拟化方案称为容器(Container)虚拟化方案,Container是一种轻量级虚拟化方案,开销比VM虚拟化小,操作粒度也比VM虚拟化小。在云计算流行之前很多IDC的主机托管/租赁服务都是基于容器的方案。随着云计算对应用环境快速部署和对效率的要求不断提高,轻量级的容器虚拟化方案又重新获得青睐,当然相应的技术也经历了演进和革新。

(一)VM 虚拟化与Container虚拟化

VM虚拟化技术有3种:全虚拟化、半虚拟化、硬件虚拟化。全虚拟化由Hypervisor截获并翻译所有虚拟机特权指令(比如VMware的BT);半虚拟化通过修改虚拟机内核,将部分特权指令替换成与Hypervisor(也称VMM)通信(比如XEN的para-virtualizaiton)的指令;硬件虚拟化借助服务器硬件虚拟化功能,Hypervisor不需要截获虚拟机特权指令,虚拟机也不需要修改内核(比如Intel VT和AMD-V)。Hypervisor负责服务器硬件资源管理,根据要求直接分配给不同虚拟机。Hypervisor直接运行在服务器硬件上(半虚拟化/硬件虚拟化),也可以运行在一个操作系统上(全虚拟化模式)。

Container虚拟化,又称操作系统级虚拟化,要求在一个操作系统实例里,将系统资源按照类型和需求分割给多个对象独立使用,对象之间保持隔离。系统资源通常指CPU、内存、网卡、磁盘等。以Linux Cgroup为例,Cgroup是Linux内核的一种文件系统,需要内核支持,和其他文件系统一样,Cgroup在使用之前需要在VFS注册。用户可以直接使用mount命令挂载Cgroup,通过echo命令修改Cgroup配置参数,跟环境变量一样,子进程可以继承父进程配置。Cgroup提供Linux系统里进程的资源分配、资源使用情况统计。

VM虚拟化与Container虚拟化各有优势,同时也存在着如下区别。

两者目标不同,VM虚拟化的对象是虚拟机,把一台物理机虚拟成多台虚拟子机:Container的操作对象是进程,为每个进程分配不同系统资源,进程与进程之间独立。

VM虚拟化组件可以直接运行在硬件之上,Container只能运行在操作系统之上。

VM虚拟组件负责管理物理机或虚拟子机的硬件资源;Container环境中,硬件资源由操作系统自身负责管理。

(二)Docker

Docker是一个开源的应用容器引擎,其目标是实现轻量级的操作系统虚拟化解决方案。Rocker的基础是Linux容器(LXC)等技术。在LXC的基础上Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。

作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。首先,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Docker容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行10个不同的应用就要建立10个虚拟机,而Docker只需要启动10个隔离的应用即可。具体来说,Docker在如下几个方面具有较大的优势。

1.更快速的交付和部署(www.xing528.com)

对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器很轻很快,容器的启动时间是秒级的,大量地节约了开发、测试、部署的时间。

2.更高效的虚拟化

Docker容器的运行不需要额外的Hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

3.更轻松的迁移和扩展

Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。

4.更简单的管理

使用Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

5.对比传统虚拟机总结(见表7-3)

表7-3 对比传统虚拟机

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈