• 1
系统虚拟化过时 Containers主导未来?(2)

LXC将上述Linux内核机制结合在一起,提供了一个用户空间层面的container对象——一个轻量级的虚拟系统,对系统、应用的资源有完全的隔离和掌控。

如果以上内容听起来比较难以理解,CodeBox提供了一个更容易理解的解释:

一般说来,VM是指全虚拟化/半虚拟化,即传统意义上的虚拟机,其机制是虚拟出硬件来,guest os跑在这些虚拟硬件上。

而container是在OS级别的资源隔离和命名空间,本质上guest和host是一个OS。container 是namespace+cgroup,有些公司仅仅用cgroup做资源的隔离,比如说:

你在一台机器上同时运行MySQL和Apache,你又怕他们相互影响,所以用cgroup就可以很方便地设定MySQL用40%的cpu和2G的内存,Apache用60%的cpu和1G的内存。就是所谓的资源隔离。

相比系统虚拟化技术,Container技术的优势在于省资源。然而在2005年,这项技术在安全隔离和资源隔离方面还无法满足需求。根据David的描述,当时的chroot是这样的:

“nice”模式下,赢者恒赢,弱者拿不到资源。“fair”模式下,内核又太平等,饥饿的非重要任务往往和饥饿的重要任务分到了一样的资源。内存和文件描述符(file descriptor)提供的功能太简陋,在正常运行和崩溃之间完全没有缓冲区。

而与此同时:

当时的Linux如果想把80%的CPU分给应用A,20%的CPU分给应用B,VM是唯一的解决方案。内存、磁盘I/O、网络I/O和其他可分配资源也是同样。而且,VM在效率上一直在提升,现在使用VM造成的CPU消耗只有很少的几个百分点。

但是即使如此,VM毕竟还是会造成资源消耗,而且还有较长的OS启动的等待时间。比如,256MB的内存运行一个应用是足够了,但由于OS跟应用抢资源,导致RackSpace不得不放弃了256MB内存的实例。使用VM部署一个新的应用,平均需要5~10分钟的等待时间。

如果用container,256MB的内存就够用了,而且部署新应用的等待时间只有5~15秒。

David还表示,containers将进入下一个红帽企业级Linux的大版本,即RHEL 7。

应用方面,目前在国外,Heroku和Cloud Foundry都用到了containers:Heroku上的一个dyno实际上就是一个container,而Cloud Foundry则专门开发了Warden用于containers的管理。

国内的阿里、腾讯、搜狐等,也都已经开始在内部使用container构建云平台,尤其是阿里与腾讯,使用规模已经不小。根据章文嵩博士的介绍,2011年底开始建设的、基于container的阿里T4云,截止到2012年底已经部署了200台左右的物理机,instance的规模达到了两千以上。2013年,阿里T4的instance规模已经达到了四千,正计划将T4的规模继续扩大到千台以上规模的物理机,并逐渐将核心的交易、商品业务迁移到该平台上。

腾讯方面,其开放云PaaS平台CEE现在已经达到2000多个container实例。

来源:51cto.com