QCon 演讲火热征集中,快来分享你的技术实践与洞见! 了解详情
写点什么

系统虚拟化已过时,Containers 将主导未来的云架构?

  • 2013-07-03
  • 本文字数:2465 字

    阅读完需:约 8 分钟

近日,Linux Journal 上发布了一篇文章,“ Containers—Not Virtual Machines—Are the Future Cloud ”,引起了业内的广泛讨论。作者 David Strauss 是 Pantheon 公司(一家做 Drupal PaaS 服务的供应商)的 CTO,他认为,VM 的好处在于可以上下扩展,可控的计算资源,安全隔离,并可以通过 API 进行部署;但其缺点在于,每一台 VM 都消耗了一部分资源用于运转一个完整的操作系统。所以,另一种方式更适合一个云平台,就是 Linux Containers。

Containers 可以作为 OS 层面的虚拟化的一个替代方案,你可以在一个宿主机上运行多个隔离的系统。在单一的操作系统下运行 container 更加高效,因此,container 将会替代 VM,成为未来云计算基础架构中的主导技术。

Container 并不是一项新鲜技术。根据 2009 年在 IBMdW 上的“ LXC: Linux container tools ”一文当中的介绍:

Container 这项技术发展已久,Solaris Zones 和 BSD jails 都是非 Linux 系统上的 containers 实现。Linux 上的 container 技术也已经有很多实现,如 Linux-Vserver,OpenVZ 和 FreeVPS。虽然以上这些技术都进入了成熟期,但他们都没有打入 Linux 内核的 mainstream。

另一方面,由 IBM 开发者 Daniel Lezcano 研发并维护的 Linux Resource Containers 项目则通过大量努力进入了 Linux 内核的 mainstream,从而为更加成熟的 Linux container 解决方案提供了一个公共的支持平台。

Oracle Technology Network 上在 2012~2013 年间发布了一个系列文章, The Role of Oracle Solaris Zones and Linux Containers in a Virtualization Strategy ,内容比较新一些。其中对 Linux Containers 是这样介绍的:

Linux Containers 从根本上提供了原生的性能,你可以实时进行资源分配的管理。Linux Container 当中运行的二进制程序实际上是直接在宿主机的内核上运行的一个普通的进程,跟其他进程没什么两样。这同时也意味着 CPU 和 I/O 的规划更加公平,而且可以进行微调。Container 下拿到的磁盘 I/O 性能是系统虚拟化所无法比拟的(即使在 Xen 下使用 paravirt 模式也无法达到)。你可以在 Linux Container 当中运行磁盘 I/O 较重的应用,如数据库。

跟系统虚拟化和 Oracle Solaris Zones 不同的是,LXC 无法运行其他非 Linux 系统。不过,你可以在同一个宿主机内核下的不同 containers 里面运行不同的 Linux 发行版。

这个名为 lxc 的项目是这样描述自己的:

lxc Linux Containers

container namespace cgroup virtualisation

LXC 是针对 Linux Containers 的用户空间控制包。这是一个轻量级的系统虚拟化机制,有时被描述为“chroot on steroids”(类固醇上的 chroot,意思是功能类似 chroot,但比 chroot 提供了更多的隔离功能)

LXC 基于 chroot 实现了完整了系统虚拟化,并在 Linux 现有的进程管理架构上添加了资源管理和隔离的机制。

lxc 的实现为:

  • 通过 cgroup 实现的“进程管理组”进行资源管理
  • 通过为 clone(2) 系统请求添加的 flag 实现资源隔离,可以为 PID、网络路由等创建数种新的命名空间
  • 提供了数种不同的隔离机制,如 devpts 文件系统下可以使用“-o newinstance”的 flag

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 实例。


感谢 CodeBox,淘宝仲明,毕玄,淘宝正明和海洋之心为本文提供线索与帮助。

2013-07-03 03:1610290

评论

发布
暂无评论
发现更多内容

时序序列分类算法概述

云智慧AIOps社区

大数据 算法 时间序列 智能运维

潜藏在手机中的新威胁:免安装应用安全指北

安第斯智能云

安全 移动端

这可能是,Flutter 中最“强悍”的内存泄漏检测方案......

阿里巴巴终端技术

flutter ios android 内存泄漏

一图看懂 Apache ShardingSphere 5.0.0

SphereEx

数据库 开源 ShardingSphere

译文|选择 Apache Pulsar 而非 Kafka 的 10 个理由

Apache Pulsar

kafka 架构 云原生 中间件 Apache Pulsar

云小课 | 网站接入WAF失败怎么办?看这里就够了

华为云开发者联盟

华为云 Web应用防火墙 接入WAF失败 故障排查

CSS奇技淫巧之滤镜

Augus

CSS 11月日更

ETL和数据建模

大数据技术指南

11月日更

Go iota 原理和源码剖析

编程宝库

巅峰对话在线研讨 Q&A:Oracle Database 21c vs openGauss 2.0新特性解读和架构演进

墨天轮

数据库 oracle opengauss

博文推荐|Pulsar 存储空间不释放的问题分析与解决方法

Apache Pulsar

架构 云原生 Apache Pulsar 技术干货 BookKeeper 存储空间

AI运动:阿里体育端智能最佳实践

阿里巴巴终端技术

最佳实践 端智能

Black Hat Europe 2021议题解读:Wi-Fi Mesh中的安全攻击面

百度安全

Black Hat Wi-Fi Mesh

亿磐获评《新闻周刊》2021年度最受雇员喜爱工作场所

InfoQ_434670063458

亿磐 EPAM 新闻周刊

APP上运行小程序的混合移动研发模式

Speedoooo

容器 ios开发 APP开发

一个站点不够学?那就在用Python增加一个采集目标,一派话题广场+某金融论坛话题广场爬虫

梦想橡皮擦

11月日更

告诉你!操作系统是个大骗子!

博文视点Broadview

到底什么样的ABAP系统能运行Fiori应用

汪子熙

SAP abap Fiori 11月日更

纪念林徽因

containerd镜像层过大问题

ilinux

博文推荐 | 一文带你看懂 Pulsar 的消息保留和过期策略

Apache Pulsar

架构 云原生 中间件 干货 Apache Pulsar

She Builds Summit|邀您一同感受她的科技力量!

SphereEx

开源 AWS SphereEx 潘娟

论文解读丨无监督视觉表征学习的动量对比

华为云开发者联盟

视觉 无监督学习 无监督视觉 表征学习 动量对比

Kafka中的数据不丢失机制及CAP理论详解

五分钟学大数据

11月日更

Python 中的反转字符串:reversed()、切片等

华为云开发者联盟

Python 切片 反转字符串 reversed 反转

博文推荐|Pulsar 的消息存储机制和 Bookie 的 GC 机制原理

Apache Pulsar

存储 Apache Pulsar 消息中间件 Apache BookKeeper bookie

企业数字化转型与SAP云平台

汪子熙

SAP 11月日更 SAP数字化转型 SAP云平台

GaussDB NoSQL架构设计分享

华为云开发者联盟

nosql 云原生 GaussDB 超融合 多模数据库

虚拟机与容器的混合管理实践

安第斯智能云

Kubernetes 后端 云化底层的那些事

TDengine助力曲靖卷烟厂有效提升时序数据存取效率

TDengine

数据库 tdengine 后端

技术分享| 如何做一款容纳百人的视频会议?

anyRTC开发者

音视频 WebRTC 视频会议 实时通信 视频通话

系统虚拟化已过时,Containers将主导未来的云架构?_Linux_sai_InfoQ精选文章