2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

评论

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

SpringBoot3集成ElasticSearch

Java elasticsearch 架构 springboot SpringBoot3

线上观看5万+,“芯”有灵“蜥”融合·创新!龙蜥社区走进 Intel MeetUp 回顾来了

OpenAnolis小助手

开源 芯片 intel Meetup 龙蜥社区

更多openEuler镜像加入AWS Marketplace!

openEuler

Linux 操作系统 AWS openEuler

华为云联创营CTO领航班第八期:探索AI大模型的创新之路

新消费日报

MySQL三个重要日志

数新网络官方账号

MySQL 数据库

Presto 设计与实现(一):开篇

冰心的小屋

数据湖 presto SQL引擎

jstat命令总结

java易二三

Java 程序员 JVM 计算机 科技

OpenSSL 3.0.0 设计(三)|FIPS 模块

铜锁开源密码库

算法 信息安全 密码学 openssl 铜锁

Serverless 应用托管助力企业加速创新

Serverless Devs

阿里云 Serverless 云原生 应用引擎

深度解读智能化编码的技术架构与实践案例

阿里云CloudImagine

云计算 编码 视频云

从“智能涌现”到“价值涌现”,讯飞星火又一次“登月”

脑极体

讯飞

电商订单履约-卖家发货演化史

得物技术

重构 业务架构 企业号 8 月 PK 榜 履约 业务身份

项目启动会的正确打开方式

老张

项目管理 项目启动

Nacos服务整合SpringBoot框架技术

java易二三

Java 程序员 Spring Boot 计算机 科技

SpringBoot使用spring.config.import多种方式导入配置文件

java易二三

Java spring 程序员 Spring Boot 计算机

【数据库原理 | MySQL】一文打通 DDL语句 - ARTS 打卡第 一 周

计算机魔术师

QT使用QML实现地图绘制虚线

芯动大师

锐炫无畏,助威亚运!英特尔锐炫显卡成为杭州亚运会官方指定图形处理器

E科讯

干货满满:多人语音聊天室源码开发解析

山东布谷网络科技

源码剖析

融云:以对话为场景本质,AIGC 将如何改变游戏规则

融云 RongCloud

人工智能 AI 算法 AIGC 通讯

文心一言 VS 讯飞星火 VS chatgpt (76)-- 算法导论7.3 1题

福大大架构师每日一题

福大大架构师每日一题

探索YesPMP平台:您的一站式软件外包解决方案

知者如C

ARTS 打卡第 6 天

自由

2022年移动游戏收入920亿美元,微信小游戏投放量增长五倍

没有用户名丶

20. 异常处理

茶桁

Python 异常

商业智能工具 bi工具是什么,瓴羊Quick BI能给企业主带来哪些优势?

对不起该用户已成仙‖

SpringBoot单元测试实践——配置隔离篇

java易二三

Java 程序员 Spring Boot 计算机

【5分钟背八股】ZooKeeper和Reids做分布式锁的区别?

java易二三

redis zookeeper 程序员 计算机 八股文

【Python】一键查询依赖生成文件 requirements.txt

ReturnTmp

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