zhane0 2011-06-16
Linux conatiners (LXC) 是在Linux平台上基于容器的虚拟化技术的未来标准,它和传统的解决方案如<font face="Courier New">Linux-VServer</font>
和<font face="Courier New">OpenVZ</font>
有所区别。最初的LXC技术是由IBM研发的,目前已经进入Linux内核主线,这意味着LXC技术将是目前最有竞争力的轻量级虚拟容器技术,相比较传统的VServer和OpenVZ轻量级虚拟技术(两者都需要对标准内核进行补丁),发展潜力更大。
一直以来,我对Solaris平台的轻量级虚拟技术Container非常喜欢,因为Container虚拟技术不仅带来了完全隔离的完整虚拟平台,而且由 于是基于应用的虚拟化,所以每个虚拟机仅是主机系统的一个进程,不需要完全模拟硬件,资源占用非常少。这样Container虚拟技术是那种不需要完全模 拟硬件(不直接操作磁盘硬件)的虚拟环境的良好选择,轻量级并且速度快,能够在一台主机上运行成百上千的虚拟容器。
这种容器虚拟化技术特别适合测试环境,测试各种应用平台,对系统硬件要求也极低。以往我尝试使用的<font face="Courier New">Linux-VServer</font>
就是我用来测试各种应用软件的平台,使用非常满意。不过,传统的容器虚拟化技术存在一个根本限制,就是代码没有进入到Linux内核发行中,每次都需要针对新发布的内核进行补丁,这对系统稳定带来很大隐患,并且也不利于长期跟踪和应用。
目前,LXC技术也正处于起步阶段,管理工具LXC的版本尚只达到0.7.2。
从网上中文资料来看,主要发源于IBM developer网站(IBM是LXC的开源发起者,中文资料是从英文网站翻译过来的):
中文版:
英文版:
LXC英文参考资料相对较多,用Google还是能够找到很多资料的。
我也是最近开始接触LXC虚拟技术,对于原理性的资料尚搜集不多,以下仅仅是简单罗列一些,有待今后不断学习补充。
技术以实践为主,很快我会提供一些我的实践记录,给喜欢虚拟技术的同好参考。
容器虚拟化技术是非常快速和高效的。它的原理基于操作系统内核对不同的运行进程提供了不同的系统视图。这种隔离可以用于确保在保证安全和效率的情况下授权访问硬件资源,如CPU和IO带宽。
在unix系列操作系统,容器虚拟化起源于1982年发布的chroot工具,这是一个特殊居于容器虚拟的文件系统子系统,最早由Sun公司创始人Bill Joy开发并且作为BSD 4.2的组成进行发布。
以后,大量的开发带来了以下一些强劲的容器虚拟化技术:
然而,这些技术都没有被Linux内核所接受。相反Linus已经选择了一个更具伸缩性,更长远的技术来达到相同目标,即使用一系列新的内核特性。lxc就是使用这些新特性的下一代容器虚拟化技术。
完全虚拟化也称为paravirtual虚拟化解决方案。和lxc这种容器虚拟化技术不同,完全虚拟化通常允许运行任何操作系统,因为完全虚拟化模拟了硬件。最流行的完全虚拟化技术有,VMWare,KVM和Xen。
使用lxc可以有效管理资源分配,并且可以使用相同内核的不同容器中运行不同的Linux发行版本。
但是和完全虚拟化技术不同,不能运行其他种类操作系统,也不能运行不同的内核。
此外,可以使用libvirt的虚拟化管理API进行开发。
lxc使用了两个新型的、少有人知的内核特性 control groups 和 POSIX file capabilities。
Control Groups是多层次,多子系统资源管理和控制框架。
简单的说,这意味着和陈旧的chroot工具限制文件系统访问不同,control groups允许定义一个包括一个或多个进程(例如,sshd、apache等),然后设置一系列资源控制和记账选项来控制该组和其他子系统分离,例如:
POSIX文件能力是一种分配权限给一个进程允许更多的特定安全控制而不是传统的’root’对应’user’的常规unix操作系统权限分离。