您的位置:首页 > 运维架构 > Linux

虚拟机技术简介之三 — 操作系统层虚拟机技术

2008-04-02 09:15 351 查看
一个典型的应用程序运行环境包括:操作系统、用户函数库、文件系统、环境设置等。如果一个运行环境包含了所有这些关键组件,应用程序自身是无法区分是运行在物理系统内,还是运行在虚拟系统中。操作系统层虚拟化技术的主要思想就在于此,即在宿主操作系统上动态复制软件运行环境,以此来创建多个虚拟系统。
Jail[1, 2]是FreeBSD上的操作系统层虚拟机技术。它把操作系统划分成多个独立的环境,称之为Jail。每个Jail都可以独立管理典型的操作系统资源,如进程、文件系统、网络资源等。而用户对资源的访问范围则被限制在该用户所在Jail的内部。Jail是通过Jail系统调用创建的,Jail 内的第一个进程的所有子进程都属于该Jail,任何一个进程不能同时属于多个Jail。Jail虚拟化技术在隔离应用程序方面有一定的应用价值。
Solaris操作系统提供的区域(Zone)技术 [3, 4]也采用了类似的机制。区域是指在 Solaris 操作系统的单个实例中创建的一个虚拟的操作系统环境,是一种用于虚拟化操作系统服务的分区技术,目的是提供安全的隔离环境以便承载和运行各种应用程序。区域有两种类型:全局区域(global zone)和非全局区域 (non-global zone)。通过系统硬件引导的 Solaris安装过程所安装的即是全局区域,一个系统中只能运行一个全局区域。全局区域管理员可使用 zonecfg和zoneadm来创建非全局区域。全局区域控制所有非全局区域的安装、维护、操作和损毁。Solaris 区域功能可为在非全局区域中运行的进程提供虚拟服务和名称空间隔离。它可以将在某个非全局区域中运行的进程与在其他区域中运行的进程隔离开,这种隔离可防止在某个非全局区域中运行的进程监视或影响在其他区域中运行的进程。对于在非全局区域中运行的进程,即使具有超级用户权限也不能查看或影响其他区域中的活动。区域还提供一个抽象层,用以分隔应用程序与部署应用程序的计算机的物理属性,例如物理设备路径和网络接口名称等。
Virtual Private Server(VPS)[5]技术把服务器的操作系统环境分割成多个彼此隔离的虚拟运行容器,称之为VPS。管理员可以为每个VPS分配指定数量的内存、磁盘、网络带宽等资源,还能够在物理服务器与虚拟环境或物理服务器之间进行客户虚拟系统的迁移。VPS技术在网站的服务器整合,提高资源利用率等方面有很好的应用。



图2.4  User Mode Linux体系结构
         UML(User Mode Linux)[6-8]是让一个Linux作为一个独立进程运行在另一个Linux(宿主Linux)之上的开源项目,它是一种在同一时刻运行多 Linux 的虚拟化方式。UML不需要额外的虚拟化软件,它只需要在Linux内核源码上打上相关的补丁。UML的补丁把Linux标准内核转化成一个可以作为独立进程执行的操作系统。当运行UML内核时,需要为其分配一个完整的文件系统。新的系统内核作为一个用户态的应用程序运行。UML体系结构如图2.4所示,UML内核接收来自应用程序的系统调用请求,然后发送到宿主Linux内核进行处理。由于UML的内核和用户态进程在同一地址空间内,因此,需要把内核的代码和数据段放在UML进程通常不会使用的地方。为了让UML之间共享内核数据,UML内核被映射到一个文件,然后将这个文件映射到UML进程中。目前,UML主要被用于系统软件的调试和测试。
 参考文献


[1] Kamp P H, Watson R N. Jails: Confining the omnipotent root[C]. 2nd International System Administration and Network Engineering Conference (SANE'00), 2000. 2000: 1-15.

[2] Evan S. Securing freeBSD using jail[J]. Sys Admin. 2001, 10(5): 31-37.

[3] Price D, Tucker A. Solaris Zones: Operating System Support for Consolidating Commercial Workloads[C]. USENIX 18th Large Installation System Administration Conference (LISA'04), 2004. 2004: 241-254.

[4] Tucker A, Comay D. Solaris Zones: Operating System Support for Server Consolidation[C]. USENIX 3rd Virtual Machine Research and Technology Symposium (VM'04), 2004. 2004: 1-2.

[5] Linux-VServer, http://linux-vserver.org[Z].
[6] Dike J. A User-mode Port of the Linux Kernel[C]. Proceedings of the 4th Annual Linux Showcase & Conference, Atlanta, Georgia, USA, 2000. Atlanta, Georgia, USA: 2000: 7-16.

[7] Hoxer H J, Buchacker K, Sieh V. Implementing a User-Mode Linux with Minimal Changes from Original Kernel[C]. Proceedings of the 2002 International Linux System Technology Conference, 2002. 2002: 72-82.

[8] Jeff D. User Mode Linux[M]. Prentice Hall, 2006.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息