写点什么

系统虚拟化已过时,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:1610236

评论

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

云原生:详解|容器云平台应用解析

息之

容器安全 容器应用

秒过!度目智慧通行让常态化防疫更高效

百度开发者中心

人工智能

如何更快上手使用 OceanBase 社区版?

OceanBase 数据库

数据库 直播 课程 OceanBase 开源

大规模 K8s 集群管理经验分享 · 上篇

尔达Erda

程序员 云原生 k8s K8s 多集群管理 经验分享、

架构实战营模块五作业

spark99

架构实战营

云原生:Docker实战之容器命令解析(附视频教程)

息之

Docker 视频课 解析

区块链应用食品溯源,为食品安全保驾护航

电微13828808271

打造全新批流融合:详解 Apache Flink 1.14.0 发布的 Pulsar Flink Connector

Apache Pulsar

Java 大数据 分布式 云原生 Apache Pulsar

区块链IM社交系统开发,区块链即时通讯直播系统搭建

电微13828808271

浪潮云说直播间-云溪数据库之ClickHouse原理解析今晚开讲

云计算,

四步做好Code Review

百度开发者中心

Code Review

Linux/CentOS/Ubuntu查看文件内容命令总结

入门小站

Linux

官宣!yMatrix 完成A轮融资,打造超融合时序数据库!

YMatrix 超融合数据库

智慧社区服务平台搭建,智慧安防社区建设方案

电微13828808271

云原生:详解|容器核心技术解析

息之

Docker 镜像 技术优势

【量化】股市技术分析利器之TA-Lib(二)

恒生LIGHT云社区

量化投资 量化

科技热点周刊|PHP 基金会成立、Rust 内讧、Amazon Linux 2022 预览版发布

青云技术社区

云计算

《鱿鱼游戏》中的 AI 是绝对公平的吗?

澳鹏Appen

人工智能 人脸识别

社区知识库|常见问答 FAQ 集合第 1 期

Apache Pulsar

Java 开源 Apache Pulsar 代码人生 社区

云原生:详解|K8s核心对象技术

息之

k8s pod service Deployment

ZEGO 即构科技首发适配鸿蒙系统的 Express SDK 1.0 版本,并正式启动公测!(内附源码)

ZEGO即构

音视频 HarmonyOS 鸿蒙开发 即构科技

贝壳Flutter调试工具-FDB

贝壳大前端技术团队

flutter 调试工具 内存监控

Istio 实践手册 | 迎接新一代微服务架构

xcbeyond

istio 服务网格 28天写作 12月日更 Istio 实践手册

WeTest小程序质量专项方案推出,小程序异常监控内测招募中

WeTest

搭建企业级实时数据融合平台难吗?Tapdata + ES + MongoDB 就能搞定

tapdata

使用 @Transactional 时常犯的N种错误

程序猿DD

spring Spring Boot 事务

高层与基层思考上的差异与解决办法

光环PMO社群

项目管理

如何设置Activity背景颜色与ProgressBar进度条颜色

Changing Lin

12月日更

年末冲刺!坚持就是胜利,12月日更来啦~

InfoQ写作社区官方

12月日更 热门活动

【有奖征文】第一届 OceanBase 技术征文大赛来啦!

OceanBase 数据库

数据库 开源 征文大赛 oceanbase

[架构实战营] 模块五作业

张祥

架构实战营

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