手册页部分 5: 标准、环境和宏

退出打印视图

更新时间: 2014 年 7 月
 
 

zones (5)

名称

zones - Solaris 应用程序容器

描述

Solaris 中的区域工具提供了用于运行应用程序的隔离环境。在区域中运行的进程可以免受系统中其他活动的监视或干扰。对其他进程、网络接口、文件系统、设备和进程间通信设备的访问受到限制,防止不同区域中的进程之间相互交互。

在区域中可用的权限受到限制,以防止操作造成系统范围的影响。请参见 privileges(5)

可以使用 zoneadm(1M)zonecfg(1M) 实用程序配置和管理区域。可以为区域指定配置详细信息,在区域中安装文件系统内容(包括软件包)以及管理区域的运行时状态。可以重新配置区域而无需将其重新引导。可以使用 zlogin(1)在活动区域中运行命令。您不需要通过基于网络的登录服务器(例如 in.rlogind(1M)sshd(1M))进行登录,即可执行此操作。

区域的自动引导可以通过 FMRI 标识的区域服务来启用和禁用:

svc:/system/zones:default

请参见 zoneadm(1M)。请注意,区域有一个 autoboot 属性,该属性可以设置为 true(始终自动引导)。不过,如果禁用了区域服务,将不发生自动引导,而无论指定区域的 autoboot 属性设置如何。在正常关闭全局区域期间,此服务将关闭、停止或挂起每个区域,具体取决于服务的 autoshutdown 属性。请参见 zonecfg(1M)

每个活动区域使用一个字母数字名称和一个数字 ID 来标识。字母数字名称是使用 zonecfg(1M) 实用程序配置的。数字 ID 是在引导区域时自动分配的。zonename(1) 实用程序可以报告当前区域名称,而 zoneadm(1M) 实用程序可用于报告已配置区域的名称和 ID。

区域可以处于多种状态之一:

CONFIGURED

指示区域配置已完全指定并且已提交到稳定的存储设备。

INCOMPLETE

指示区域正在安装或卸载过程中,或者已在此类转换期间中断。

INSTALLED

指示区域配置已在系统上实例化:软件包已安装在区域的根路径下。

READY

指示区域的“虚拟平台”已建立。例如,文件系统已挂载,设备已配置,但尚未启动任何与区域关联的进程。

RUNNING

指示正在运行与区域应用程序环境关联的用户进程。

SHUTTING_DOWN
DOWN

指示正在停止区域。如果区域无法退出应用程序环境状态(例如已挂载的文件系统),或者无法销毁虚拟平台的某个部分,则区域会在其中一个状态中挂起。在这些情况下,需要操作者进行干预。

UNAVAILABLE

指示已安装区域但无法引导。出现以下情况时区域会进入无法使用的状态:区域的存储不可用而 svc:/system/zones:default 正在联机,或区域尝试引导;成功提取归档文件之后基于归档文件的安装失败;区域的软件与全局区域的软件不兼容(如不正确的强制附加之后)。

进程访问限制

在区域(不包括全局区域)中运行的进程对其他进程拥有受限的访问权限。只有相同区域中的进程才能通过 /proc(请参见 proc(4))或者通过接受进程 ID 的系统调用接口(例如 kill(2)priocntl(2))来查看。尝试访问存在于其他区域(包括全局区域)中的进程时将失败,并且出现与当指定进程不存在时发布的错误代码相同的错误代码。

权限限制

在非全局区域中运行的进程被限制为拥有一部分权限,从而防止某个区域能够执行可能会影响其他区域的操作。这组权限限制了区域中的特权用户(例如超级用户或 root 用户)的能力。可以使用 ppriv(1) 实用程序显示某个区域中可用的权限列表。有关权限的详细信息,请参见 privileges(5)

设备限制

对区域中可用的一组设备进行了限制,以防止某个区域中的进程干扰在其他区域中运行的进程。例如,某个区域中的进程应该无法使用 /dev/kmem 修改内核内存或修改根磁盘的内容。因此,缺省情况下,只有一些被认为可安全在区域中使用的 pseudo 设备可用。在特定区域内,可使用 zonecfg(1M) 实用程序使其他设备变得可用。

设备和权限限制对于可在非全局区域中运行的实用程序产生重大影响。例如,eeprom(1M)prtdiag(1M)prtconf(1M) 实用程序无法在区域中使用,因为它们依赖于通常不可用的设备。

标记

在最初创建区域时,会向该区域分配一个标记。标记区域中的软件与在全局区域中发现的软件不匹配。软件可以包括以不同方式配置或布局的 Solaris 软件。这种特定的软件集合称为“标记”(请参见 brands(5))。在安装后,除非首先卸载区域,否则无法更改区域的标记。solaris-kz 标记具有更高的灵活性,可改变此处提到的许多限制。

文件系统

每个区域都有自己的文件系统分层结构部分,根目录称为区域 root。区域中的进程只能访问分层结构的该部分中的文件,即位于区域根路径下的文件。这样可以防止一个区域中的进程损坏或检查与另一个区域关联的文件系统数据。chroot(1M) 实用程序可以在区域中使用,但只能将进程限制为区域中可访问的根路径。

为了保留文件系统空间,可以使用 lofs(7FS) 文件系统的只读选项,将文件系统部分挂载到一个或多个区域中。这样可以在多个区域中共享相同的文件系统数据,同时保留区域提供的安全保证。

在区域中建立的 NFS 和 autofs 挂载是该区域的本地挂载;它们不能从其他区域(包括全局区域)中访问。在停止或重新引导区域时,将删除挂载。

委托给某个区域的 ZFS 数据集可以在该区域中进行管理。在委托数据集中可以创建子数据集。在委托数据集中创建的数据集是自我委托的。可以销毁除顶级委托数据集之外的委托数据集。大多数属性都可以在委托数据集上设置,但并不是所有属性都可以。有关详细信息,请参见 zfs(1M)

每个区域都有一个顶级委托数据集,该数据集又包含 ROOT,并且可能包含其他数据集,例如 .../export.../export/home。存在于 ROOT 数据集下方的数据集构成了区域的引导环境。只应使用 zoneadm(1M)beadm(1M) 命令来创建或销毁引导环境数据集。

联网

区域对于 TCP、UDP 和 SCTP 应用程序使用自己的端口号范围,通常有一个或多个单独的 IP 地址(不过,某些 Trusted Extensions 配置在区域之间共享 IP 地址)。

对于 IP 层(IP 路由、ARP、IPsec、IP 过滤器等),区域可以与全局区域共享配置和状态(共享 IP 区域),也可以具有独特的 IP 层配置和状态(独占 IP 区域)。

如果区域将连接到相同的数据链接,即与全局区域相同的 IP 子网,该区域适合使用共享 IP 实例。

如果区域必须在网络上的 IP 层中隔离(例如连接到与全局区域和其他非全局区域不同的 VLAN 或不同的 LAN),出于隔离原因,区域应该具有其专用 IP。

共享 IP 区域无法在网络中执行某些操作(例如更改 IP 地址或者发送欺骗性 IP 或 Ethernet 包),而与连接到相同网络接口的单独主机在网络中执行的功能相比,独占 IP 区域具有或多或少的相同功能。特别是,这种区域中的超级用户可以更改 IP 地址和发送欺骗性 ARP 包。

zonecfg(1M) 中,会向共享 IP 的区域分配一个或多个网络接口名称和 IP 地址。网络接口名称还必须在全局区域中配置。

zonecfg(1M) 中,会向独占 IP 的区域分配一个或多个网络接口名称。网络接口名称必须专门分配给该区域,即名称不能分配给其他某个正在运行的区域,也无法由全局区域使用。

以 DHCP 客户机、IPsec 和 IP 过滤器形式提供的完整 IP 级别功能在独占 IP 的区域中可用,而在共享 IP 的区域中不可用。

主机标识符

区域能够模拟 32 位主机标识符,该标识符可以通过 zonecfg(1M) 针对系统整合目的进行配置。如果区域模拟主机标识符,在区域上下文中执行的 hostid(1)sysdef(1M) 等命令以及 sysinfo(2)gethostid(3C) 等 C 接口将显示或返回区域的模拟主机标识符,而不是主机计算机的标识符。

日志记录

区域的控制台输出记录到 /var/log/zones/console.<zonename>。其他运行时信息记录到 /var/log/zones/messages.<zonename>。每个日志会使用 logadm(1M) 定期轮转。

实时区域重新配置

可以重新配置正在运行的区域而无需将其重新引导。还可以检查正在运行的区域的实时配置。可以使用 zonecfg(1M) 检索和检查实时配置,进行所需的更改,并将它们暂时应用于正在运行的区域。使用 zonecfg(1M) 可以根据保存的区域配置,永久地重新配置正在运行的区域。有关更多信息,请参见 zonecfg(1M)

区域配置包含 zonecfg(1M) 手册页中定义的资源和资源属性。在实时重新配置区域时,仅支持 zonecfg(1M) 已知并且关联的标记也允许的资源和资源属性。

对于选定的标记,要了解实时区域重新配置支持的资源和资源属性的列表,请参见特定于标记的手册页。但是,存在一些适用于所有标记的限制。

对于所有标记,实时区域重新配置都不支持以下资源和属性:

brand
zonename
zonepath
ip-type
rootzpool

对列出的资源和资源属性所做的任何更改如果应用于正在运行的区域,将导致实时区域重新配置失败。

下面列出的资源和资源属性不会直接影响正在运行的区域。因此,可以随时在持久配置中修改这些资源和资源属性。但是,在实时配置中更改它们的任何尝试都会被拒绝。这种限制适用于所有标记。

attr
autoboot
autoshutdown
bootargs

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

hostid(1)zlogin(1)zonename(1)beadm(1M)in.rlogind(1M)logadm(1M)solaris-kz(5)sshd(1M)sysdef(1M)zfs(1M)zoneadm(1M)zonecfg(1M)kill(2)priocntl(2)sysinfo(2)gethostid(3C)getzoneid(3C)ucred_get(3C)proc(4)attributes(5)brands(5)privileges(5)crgetzoneid(9F)