- 1 -
中国科技论文在线
基于容器虚拟化技术研究
吴义鹏*
作者简介:吴义鹏(1987-),男,研究生,计算机网络与仿真、系统虚拟化
(北京邮电大学计算机学院,北京 100876)
摘要:基于容器的虚拟化技术通过借鉴资源容器的核心思想,将系统中的资源主体从运行主
体中剥离出来,从而达到在虚拟化技术上对系统资源进行精确和高效控制的目的。本文在详
细介绍和分析了资源容器和安全容器的基础上提出了虚拟化容器技术的系统架构并和原有
的 Hypervisor 模型进行对比,充分肯定了它在系统资源共享方面的优势,同时指出了其潜
在的安全隐患。
关键词:计算机系统结构;资源容器;安全容器虚;虚拟化技术
中图分类号:TP316
The Container-based virtualization technology
Wu Yipeng
(Department of Computer Science and Technology,Beijing University of Posts and
Telecommunications, Beijing 100876)
Abstract: The Container-based virtualization technology through reference the core ideas of resource
container, the system's resources subject was spun off from running in the main body so as to achieve
accuracy and efficient control of the system resources on the virtual technical level. This paper details
and analyzes the security container and the resources container, and proposed system architecture of
the container virtualization technology then compared the original Hypervisor model. In the end, fully
endorsed the sharing of resources in the system's advantages, also pointed out its potential security
risks.
Keywords:Computer Architecture;Resource Container;Security Container;Virtualization
0 引言
操作系统领域一直以来面临的一个主要挑战来自于应用程间存在的相互独立性和资源
互操作性之间的矛盾,即每个应用程序都希望能运行在一个相对独立系统环境下,不受其他
程序的干扰,同时又能以方便快捷的方式与其他程序交换和共享系统资源[4]。当前面向个人
计算机的通用操作系统更强调程序间的互操作性,而缺乏对程序间相对独立性的有效支持。
虚拟化技术因其具有同时运行多个相对独立操作系统的能力而被用来克服上述挑战。
VMware和 Xen等虚拟化主流产品均采用 Hypervisor模型。该模型通过将应用程序运行在多
个不同虚拟机内,实现对上层应用程序的隔离[2]。但由于 Hypervisor模型更倾向于每个虚拟
化都拥有一份相对独立的系统资源,提供相对完全的独立性支持,这种策略造成处于不同虚
拟机内的应用程序间实现互操作非常困难。例如,即使是运行在同一台物理机器上,如果处
于不同虚拟机内,那么应用程序间仍然只能通过网络进行数据交换,而非共享内存或者文件。
Hypervisor模型这种强独立性保障策略在一定程度上牺牲系统的执行效率。对于高性能
计算、web服务、数据库、游戏平台和分布式系统等许多应用领域,提供高效的资源互操作
性同保持程序间的相对独立性具有同等重要的意义[4]。因此就提出了一种基于资源与安全器
概念的虚拟化技术,能够在满足基本的独立性需求的同时提供高效的系统资源共享支持。
- 2 -
中国科技论文在线
1 资源容器
当前比较流行的高性能服务器程序通常是一个资源主体对应多个资源消费者的模式,如
事件触发模式(Event-Driver),或者是多个资源主题对应多个资源消费者的模式,如 CGI
程序。这样造成准确估算出单个资源消费者所使用的资源量变得非常困难,从而无法很好的
进行资源管理和控制。例如,在多线程服务器上,一个应用实例对应于一个可以执行多种独
立行为的进程,这个进程拥有所有属于它的资源。但在使用线程完成单个任务时,其所使用
到的资源往往只是这个进程所属资源的一个子集。由于对资源的控制粒度只能细化到进程级
别,因此不可能对单个线程进行独立的资源控制。而对需要多线程协作完成的任务进行资源
的统计和控制就更加的难以实现[3]。其他主要的限制来自于资源控制范围、线程调度策略和
任务涉及线程差异等在内的多个方面。例如,系统很少对网络资源的使用进行控制,必然造
成对涉及网络使用的进程的资源统计数据的变差,进面造成资源调度的不准确。
为此提出了延时处理机制,将进程视为完成某个任务的核心,将网络等资源的使用和进
程相联系起来,从而提高了资源统计的精确度。但该机制仍然无法彻底解决线程不是资源控
制和统计单元的问题。
资源容器的概念最早出现在 1999 年 等发表的论文中[7],主要是为了提高应用
程序对系统资源的控制和管理能力。基于资源容器的系统可以把系统中的资源主体从运行主
体即进程中剥离出来,从而达到对系统资源进行更精确和高效控制的目的,作为抽象的操作
系统载体,资源容器可以拥有一个或多个进程在完成某个任务过程中所使用的所有资源。因
此,资源主体不再静态地绑定到进程。进程及其产生的线程与资源主体的关系是动态的、可
调整的。甚至来自多个不同进程的线程也可以同时属于一个资源容器。资源容器与任务相对
应,记录下任务在执行过程中所消耗的所有的资源,包括 CPU、内存和网络等。这样就可
以根据这些信息实现对资源的全理调度和控制[1]。资源容器通过引入子资源容器概念可以将
任务分解并归类以容器组进行管理,子资源依照一定的规则实现资源的共享,提高灵活性。
图 1 基于容器的系统架构
Fig. 1 System architecture based on container
- 3 -
中国科技论文在线
2 安全容器
克服资源共享带来的安全隐患的有效方法,是采用一套可靠的访问控制机制来防止非法
的资源共享。强制访问控制(MAC)是早期较有影响的访问控制机制,它通过在所有的系统对
象上添加有管理员制定的安全策略来限制正在执行的程序的访问权限,从而阻止恶意程序破
坏的传播。该方法存在许多限制,首先由于采用了基于安全分级的安全机制,因此只能实现
一些普遍的安全策略,无法针对单个程序提出不同的安全策略。其次,它对数据和程序的完
整性,以及程序的职能范围无法进行有效的控制。在此基础上提出一种名为 Flask的MAC[6]
架构,实现了将安全策略逻辑与安全机制的分离,从而能够提供更加便捷的安全策略设置和
调整,以满足不同程序对安全策略的要求。通过引入域、角色和类型等概念实现对安全策略
的细化和精确定制。虚拟化技术因其卓越的进程和系统资源隔离能力在发展的初期就被用来
实现对应用程序的访问控制,将应用程序置于相对独立的运行环境中,由虚拟机监控依照管
理员制定的策略实现程序间的访问控制。
上述这些访问控制机制的实现,往往都依赖于操作系统本身提供的基于保障机密性和完
整性的信息隔离机制。但是,这种信息隔离机制却可能被不法程序通过特殊手段绕过,使得
访问机制形同虚设,而直接对上层应用程序实施篡改和攻击。造成这些潜在威胁的根源在于
访问控制机制未能从操作系统中剥离出来。
通过对资源容器的借鉴,提出了安全容器的概念。其核心思想在于将访问控制机制从操
作系统中剥离出来独立于运行环境,依据不同的安全策略形成虚拟的安全容器。在资源容器
的基础上,对包括系统进程、文件系统、网络和进程间通信等在仙的系统资源进行访问控制。
每个应用程序被置于一个独立的运行环境中,各自拥有自己独立的文件系统(整个文件系统
的一个子集),网络和设备则根据需要虚拟出来,进程间的通信也被严格地控制。各个程序
就像运行在一个安全的容器里面,具有较强的访问控制能力。
3 基于容器的虚拟化技术
基于容器的系统需要一个共享的虚拟操作系统镜像。镜像中包括一个唯一的根文件系
统,一系列可执行系统文件和库文件,以及其他建立虚拟机所需的资源。任意一个虚拟机都
可以像单机的操作系统一样进行重启、关机等操作。
如图 1所示,基于容器的系统架构由两个平台组成:宿主平台和虚拟平台。宿主平台主
要由一个共享的操作系统镜像和一个特权级虚拟机组成。管理员通过特权级虚拟机对客户虚
拟机进行管理。虚拟平台由若干个客户虚拟机组成,在客户虚拟机平台上运行的程序与直接
运行在物理机上的程序在行为上没有本质差别。上面所述的一些基于容器的系统特性和
Hypervisor 模型下的虚拟机的系统特性类似,而它们的主要区别在于实现程序独立性的方
法。基于容器的系统在实现安全独立性时直接使用了操作系统的内部对象(如 PID、UID等)。
如何安全地使用这些对象需要遵循以下两个要点:命名空间的分开;控制访问(如使用过滤
器)。在实现“命名空间分开”上,全局的标识符保存在完全不同的空间内,并且各自虚拟
机空间独立的标识符。对于“控制访问”的实现,主要依靠对虚拟机访问内核对象权限进行
动态检查。在 Hypervisor系统中安全独立性的实现也是通过命名空间和访问控制来实现的,
但更多的是基于包括虚拟内存空间、PCI总线地址和特权指令等在内的硬件层。基于容器的
系统和基于 Hypervisor模型的系统在资源独立性的实现上大致一致,都需要将诸如 CPU周
期、I/O带宽等物理资源进行虚拟产生多份虚拟资源[5]。Hypervisor系统比较有代表性的 Xen
- 4 -
中国科技论文在线
虚拟机监控系统和基于容器系统的 Linux-VServer系统都是通过宿主虚拟机来管理网络和硬
盘 I/O的,两个系统的差别仅仅在于它们如何映射资源。
4 结论
基于容器的虚拟化技术借鉴了安全容器的思想,在使用资源容器实现资源共享的基础上
通过安全容器技术实现对共享资源的有效访问控制。按照不同的安全对象,诸如域、应用程
序和虚拟机等分配不同的可访问资源形成虚拟的安全容器,防止其他对象对其资源进行恶意
的、未授权的访问。同时它也借鉴资源容器的核心思想,将系统中的资源主体(即虚拟机)
中剥离出来,从而达到在虚拟化技术上对系统资源进行精确和高效控制的目的。虚拟机监控
器负责对系统中所有的资源容器进行管理和控制,根据用户配置以及系统资源使用的实际情
况进行合理分配和回收,实现跨虚拟机的进程间资源共享。但这样的资源控制机制仍然存在
安全隐患。
5 致谢(可选)
应向对论文有帮助的有关人士或单位表示谢意。
[参考文献] (References)
[1] 孙世昶,李忠明. XEN虚拟机系统直接 IPO访问机制的研究与实现[J]. 大连民族学院学报, 2007, 38(3):
30~33.
[2] 董向军,张恩刚,张沛,等. 桌面虚拟化技术研究[J]. 中国信息界, 2010, 140(4): 50~52.
[3] 胡冷非,李小勇. 基于Xen的 I/O准虚拟化驱动研究[J]. 计算机工程, 2009, 35(23): 258~262.
[4] 黄景昌. Xen虚拟化技术简述[J]. 软件园科技浪潮, 2007, 57(6): 43~45.
[5] 李勇,胡伟. 虚拟机 xen体系结构分析[J]. 科技风, 2009, 43(6): 73.
[6] 鲁松. 计算机虚拟化技术及应用[M]. 北京:机械工业出版社,2008.
[7] 金海. 计算机虚拟化-原理及应用[M]. 北京:清华大学出版社,2008.