区域是 Solaris 10 操作系统对应用程序和资源的一种管理功能。此功能使操作系统以独立且安全的虚拟操作系统环境(区域)的形式呈现给应用程序。这些区域具有操作系统独立性的优点,并实现了某种程度的集中化资源管理。因此,通过在不同的区域中安装和运行应用程序,可将应用程序彼此隔离开来,而同时又能够以集中的方式来分配和管理某些操作系统资源。
从支持多个区域的操作系统的角度来看,操作系统资源包括诸如进程管理、内存、网络配置、文件系统、软件包注册表、用户帐户、共享库等资源,在某些情况下还包括已安装的应用程序。
多区域环境包括一个全局区域(默认操作系统)以及一个或多个非全局区域。全局区域包含可由全局(区域)管理员在非全局区域之间分配的资源。非全局区域具有以下特性:
安全性。通过在非全局区域中运行分布式服务,可在发生安全违规时减少可能的损失。在某一区域内成功地利用了软件安全性缺陷的入侵者将被限定于该区域。在非全局区域内可用的权限是全局区域内可用权限的一部分。
运行时隔离。非全局区域允许将多个应用程序部署在同一台计算机上,即使这些应用程序要求不同等级的安全性、要求以独占方式访问全局资源或是要求个性化配置。例如,通过使用与各个非全局区域相关联的不同 IP 地址,可将运行在不同区域中的多个应用程序绑定到同一网络端口。这样,可防止应用程序监视或截取彼此的网络通信流量、文件系统数据或进程活动。
管理隔离。在虚拟化操作系统环境中,可以对每个非全局区域进行单独管理。区域管理员(区别于全局管理员)在非全局区域中执行的操作(如创建用户帐户、安装和配置软件以及管理进程)不会影响到其他区域。
有以下两种类型的非全局区域:完全根区域 (whole root zone) 和稀疏根区域 (sparse root zone):
完全根区域。包含全局区域中现有文件系统的读/写副本。创建一个完全根区域后,安装在全局区域中的所有软件包便全部可供该完全根区域使用:系统会创建一个软件包数据库,并将所有文件复制到该完全根区域中,专供该区域独立使用。
稀疏根区域。仅包含全局区域中部分文件系统的读/写副本(由此得名为稀疏根),而其他文件系统则是作为回送虚拟文件系统从全局区域以只读方式进行挂载的。创建稀疏根区域后,全局管理员会选择与稀疏根区域共享的文件系统(默认情况下,将 /usr、/lib、/sbin 和 /platform 目录作为只读文件系统进行共享)。系统会将全局区域中安装的所有软件包提供给稀疏根区域使用:系统会创建一个软件包数据库,并将已挂载文件系统中的所有文件与该区域共享。
是选择使用完全根非全局区域还是稀疏根非全局区域,需要在资源效率与管理控制之间进行权衡。完全根区域提供了最大化管理控制的能力(独立性和隔离),但要占用更多的内存和其他资源;而稀疏根区域会优化可执行文件和共享库的有效共享(占用更少的磁盘空间),但要以牺牲管理独立性为代价。目前尚未针对稀疏根区域优于完全根区域的性能加以衡量;这很可能要视具体软件而定。
安装在全局区域中的软件包(默认情况下)可供所有非全局区域使用:这一过程称为软件包传播。(为了能够进行传播,新建的非全局区域必须已经完全引导,即,处于运行状态。)传播为安装在全局区域中的软件包提供了本地(非全局)可见性和可用性。传播使得应用程序软件包生命周期管理(安装、升级、卸载)由全局管理员集中执行,而应用程序配置和运行时管理则由(非全局)区域管理员执行。
对于完全根区域,传播通过将已安装的文件从全局区域自动复制到完全根区域以及自动同步注册表信息来实现。对于稀疏根区域,传播通过在全局区域和稀疏根区域之间共享的只读文件系统以及自动同步注册表信息来实现。
软件包到非全局区域的传播是在软件包层级使用内部软件包属性来控制的。对于这些属性的某些值(至少是默认值),可以通过使用 pkgadd —G 选项(它会覆盖属性值)在安装时禁用传播。某软件包安装后,便无法修改它的传播行为,除非将其卸载并重新安装。例如,修补程序无法更改软件包的传播行为;事实上,必须依照修补程序所要升级的软件包的传播行为来应用这些修补程序。