我是lmctfy的开发人员之一。我将尝试从一句话开始,并稍后加入更多细节。
Linux内核支持cgroups进行资源隔离(cpu、内存、块io、网络等),无需启动虚拟机。它还提供了命名空间,完全隔离应用程序对操作环境的视图(进程树、网络、用户ID、挂载点)。
LXC结合cgroup和命名空间支持,为应用程序提供了一个隔离的环境。Docker在LXC的基础上构建了镜像管理和部署服务。
lmctfy与LXC处于同一级别。当前版本基于cgroups构建,下一个版本将添加命名空间支持。
考虑到Docker工作在更高的级别上,我将重点关注lmctfy和lxc之间的区别。
资源管理API:LXC API是为命名空间支持构建的,几乎透明地导出了cgroup支持。Linux cgroup API不稳定且难以处理。通过lmctfy,我们尝试提供基于目的的资源配置,而无需用户理解cgroup的细节。
优先级——超额分配和共享:lmctfy旨在为具有批量工作负载的机器提供资源共享和超额分配支持,这些负载可以在机器相对闲置时运行。所有应用程序都指定了优先级和延迟要求。lmctfy管理所有cgroup细节,以满足每个任务的优先级和延迟要求。
编程接口:lmctfy是谷歌云端的最底层应用程序管理块。它被构建为与其他工具和程序一起使用。我们认为它的规范和稳定性更适合在其上构建更复杂的工具链。
自2007年以来,我们一直在使用lmctfy来管理谷歌的所有资源隔离需求。到目前为止,它已经混合到谷歌基础设施的其他部分中。在重新设计期间,我们能够将这个层分离出来,并认为将其放出并回馈社区是有趣的。
我在9月份进行了有关lmctfy的Linux Plumbers演讲。您可以在那里查看一些细节:
http://www.linuxplumbersconf.org/2013/ocw/events/LPC2013/tracks/153是有关it技术的内容,该页面包括幻灯片和其他内容。你可以通过http://www.linuxplumbersconf.org/2013/ocw//system/presentations/1239/original/lmctfy%20(1).pdf链接查看幻灯片。