lmctfy:Google的开源Linux容器
| 2013-10-04 20:45
Google刚刚发布了自己所用Linux容器系统的开源版本lmctfy,读音为lem-kut-fee。包括一个C++库(使用了C++11,文档可以参考头文件)和命令行界面。目前的版本是0.1,只提供了CPU与内存隔离。项目还在密集开发中。
GitHub上主要贡献者是工程师Victor Marmol,曾在卡内基梅隆大学机器人研究所做研究。
所谓Linux容器就是在一台机器上提供各种资源的隔离,从而支持多个应用同时运行,而从应用的角度看,自己似乎是独占这台机器的。应用本身还可以支持创建子容器。更多情况可以看Docker的这个演讲稿或者看这个网页版。IBM developerWorks的这篇介绍文章较全面。
Hacker News的评论指出,Linux容器正是业界一直关注的Google基础设施Borg和Omega的基础之一,基于之前Google开源的cgroup项目。Docker的负责人之一Solomon Hykes初步探索了代码后认为,lmctfy的一些代码功能非常底层,可以作为独立的库,有可能与Docker等容器项目配合使用。由于代码很干净,占用小,构建体验优秀,他正在考虑将其作为Docker的后端。
Cloud Foundry也有一个类似的项目叫Warden。
lmctfy本身是针对某些特定使用场景设计和实现的,目前拥有一台机器上所有容器时运行情况最好,不推荐与LXC和其他容器系统一起使用(虽然也可行)。已在Ubuntu 12.04+和Ubuntu 3.3与3.8内核上测试(具体的内核支持参见说明)。主要依赖的库有:
- Protocol Buffers
- gflags
- RE2
lmctfy系统由CL1和CL2两层组成。CL1负责创建和维护容器的抽象,完成上层CL2设置的策略,它直接与内核交互;CL2负责开发和设置策略。目前CL1只提供了CPU与内存隔离,CL2的代码还没有实现。按路线图,CL1还将提供磁盘IO和网络隔离,名字空间,根文件系统,磁盘映像,冻结层次和检查点恢复等;CL2的基本功能是合理分配系统资源,避免超用,规划还包括支持不同级别的服务质量,监控和统计功能等。