答案 0 :(得分:46)
这里的lmctfy开发人员之一。我将尝试从单行开始,稍后再介绍一些细节。
Linux内核支持用于资源隔离的cgroup(cpu,内存,块,网络等),不需要启动虚拟机。它还提供名称空间以完全隔离应用程序的操作环境视图(进程树,网络,用户ID,安装)。
LXC结合了cgroup和名称空间支持,为应用程序提供了一个独立的环境。 Docker构建在LXC之上,为其添加图像管理和部署服务。
lmctfy与LXC处于同一级别。当前版本以cgroup为基础,下一版本将添加命名空间支持。
鉴于Docker的工作水平较高,我只关注lmctfy和lxc之间的差异。
资源管理API:LXC API专为命名空间支持而构建,几乎透明地导出cgroup支持。 Linux cgroup API不稳定且难以处理。使用lmctfy,我们尝试提供基于意图的资源配置,而无需用户了解cgroup的详细信息。
优先级 - 过度使用和共享:lmctfy旨在为资源共享和过度使用批量工作负载的计算机提供支持,这些工作负载可以在计算机相对空闲时运行。所有应用程序都指定优先级和延迟要求。 lmctfy管理所有cgroup详细信息,以满足每项任务的优先级和延迟要求。
程序化界面:lmctfy是Google云端应用管理的最低区块。它可以与其他工具和程序一起使用。我们觉得在它上面构建更复杂的工具链会更好地指定和稳定。
自2007年以来,我们一直在管理Google的所有资源隔离需求。到目前为止,它已经被用于其他Google基础架构部分。在重新设计过程中,我们能够彻底地将这一层分开,并认为把它拿出来并回馈它会很有趣。
我在9月份发表了关于lmctfy的Linux管道工讲座。你可以查看那里的一些细节: http://www.linuxplumbersconf.org/2013/ocw/events/LPC2013/tracks/153
幻灯片:http://www.linuxplumbersconf.org/2013/ocw//system/presentations/1239/original/lmctfy%20(1).pdf