系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones

第 2 部分 Zones

此部分介绍 Solaris Zones 软件分区技术,该技术提供了一种虚拟化操作系统服务以创建运行应用程序的隔离环境的方法。这种隔离可阻止在一个区域中运行的进程监视或影响在其他区域中运行的进程。

第 16 章 Solaris Zones 介绍

Solaris 操作系统中的 Solaris Zones 功能提供了一个隔离环境,可在其中运行系统上的应用程序。Solaris Zones 是 Solaris Container 环境的一个组件。

本章包含以下主题:

如果您可以开始在系统上创建区域,请跳至第 17 章

区域概述

Solaris Zones 分区技术用于虚拟化操作系统服务,提供安全的隔离环境以便运行应用程序。区域就是在 Solaris 操作系统的某个实例中创建的一个虚拟的操作系统环境。创建区域时,便创建了一个应用程序执行环境,其中的进程与系统的其余部分相隔离。这种隔离阻止了在一个区域中运行的进程监视或影响在其他区域中运行的进程。即使运行的进程具有超级用户凭证,也不能查看或影响其他区域中的活动。

区域还提供了一个抽象层,用于分隔应用程序和部署这些应用程序的计算机的物理属性。这些属性的示例包括物理设备路径。

可以在任何至少运行 Solaris 10 发行版的计算机上使用区域。系统上区域数量的上限为 8192。单个系统上可有效托管区域的数量由所有区域中运行的应用程序软件的总资源需求确定。

在 Solaris 10 发行版中,有两种类型的非全局区域根文件系统模型:稀疏根和完全根。稀疏根区域 (sparse root zone) 模型优化对象共享。完全根区域 (whole root zone) 模型提供最大配置能力。这些概念在第 18 章中介绍。

Solaris 10 9/10:已安装的产品称为系统资产,通过自动注册功能进行控制。安装期间,用户会提供凭证或匿名注册。系统重新引导时,新产品的服务标签将上载到 My Oracle Support 服务器。此功能仅在全局区域中可用。有关更多信息,请参见《系统管理指南:基本管理》

关于标记区域

标记区域 (Branded zone, BrandZ) 提供了用来创建包含运行时行为的备用集的容器的框架。标记可以指各种操作环境。例如,非全局区域可以模仿 Solaris 8 操作系统或 Linux 等操作环境。

标记定义了可在区域中安装的操作环境并确定系统在该区域内的行为方式,以便在该区域中安装的软件可以正常运行。此外,区域的标记可用于在应用程序启动时识别正确的应用程序类型。所有标记区域管理都通过扩展标准区域命令来执行。所有区域的大多数管理步骤都相同。

在运行 Solaris 10 8/07 操作系统或更高 Solaris 10 发行版的 SPARC 计算机上支持以下两个标记:

在 Solaris 10 OS 上支持的其他标记包括:

虽然可以在启用了标签的 Trusted Solaris 系统上配置和安装标记区域,但不能在此系统配置中引导标记区域。

何时使用区域

对于将多个应用程序整合在一个服务器中的环境而言,使用区域是明智之举。管理大量计算机所带来的成本和复杂性促使在更大、更具伸缩性的服务器上整合多个应用程序。

下图显示了具有四个区域的系统。在整合环境样例中,appsuserswork 这几个区域运行的工作负荷都与其他区域的工作负荷无关。此示例说明:为了符合整合要求,不同版本的同一应用程序可以在不同区域中运行,而不会造成负面影响。每个区域都可提供一组自定义的服务。

图 16–1 区域服务器整合示例

不同版本的同一应用程序可以在不同区域中运行,而不会造成负面影响。

使用区域,可以更有效地利用系统上的资源。使用动态资源重新分配,可以根据需要将未使用的资源转移到其他容器。故障和安全隔离意味着运行欠佳的应用程序不需要一个未充分利用的专用系统。使用区域,可以将这些应用程序与其他应用程序进行整合。

使用区域,可以在维护整体系统安全的同时委托某些管理功能。

区域如何工作

可以将一个非全局区域想象为一个盒子。一个或多个应用程序可在这个盒子中运行,而不与系统的其余部分交互。Solaris 区域使用灵活、软件自定义的边界将各软件应用程序或服务分隔开来。然后,便可分别管理在 Solaris 操作系统的同一实例中运行的应用程序。因此,为了符合配置要求,不同版本的同一应用程序可以在不同区域中运行。

指定给某区域的进程可以处理、监视指定给同一区域的其他进程,并可直接与这些进程进行通信。进程不能对指定给系统中其他区域的进程执行这些功能,也不能对未指定给区域的进程执行这些功能。指定给不同区域的进程只能通过网络 API 进行通信。

从 Solaris 10 8/07 开始,IP 网络可按两种不同的方式进行配置,具体用哪种方式取决于该区域是具有其自己的专用 IP 实例还是将 IP 层配置和状态与全局区域共享。有关区域中 IP 类型的更多信息,请参见区域网络接口。有关配置信息,请参见如何配置区域

每个 Solaris 系统都包含一个全局区域。全局区域具有双重功能。全局区域既是系统的缺省区域,也是用于在整个系统中实施管理控制的区域。如果全局管理员未创建任何非全局区域(简称为区域),则所有进程都在全局区域中运行。

只能从全局区域配置、安装、管理或卸载非全局区域。只有全局区域才可从系统硬件进行引导。只能在全局区域中进行系统基础结构(如物理设备)的管理、共享 IP 区域中的路由或动态重新配置 (dynamic reconfiguration, DR)。全局区域中运行的具有适当权限的进程可以访问与其他区域关联的对象。

全局区域中的非特权进程可以执行非全局区域中不允许特权进程执行的操作。例如,全局区域中的用户可以查看有关系统中每个进程的信息。如果此功能会使站点出现问题,则可以限制对全局区域进行访问。

包括全局区域在内的每个区域都会被指定一个区域名称。全局区域始终命名为 global。每个区域还具有唯一的数字标识符,这是引导区域时由系统指定的。全局区域始终映射到 ID 0。区域名称和数字 ID 在使用 zonecfg 命令中介绍。

每个区域还具有节点名称,此名称完全独立于区域名称。节点名称由区域管理员指定。有关更多信息,请参见非全局区域节点名称

每个区域都具有一个与全局区域根目录相对的根目录路径。有关更多信息,请参见使用 zonecfg 命令

缺省情况下,非全局区域的调度类设置为系统的调度类。有关在区域中设置调度类的方法讨论,请参见区域中的调度类

您可以使用 priocntl(1) 手册页中所述的 priocntl,在不更改缺省调度类和不重新引导的情况下将正在运行的进程移至其他调度类。

区域功能总结

下表总结了全局区域和非全局区域的特征。

区域类型 

特征 

全局 

 

  • 由系统指定 ID 0

  • 提供正在系统上运行的可引导的 Solaris 内核的单个实例

  • 包含 Solaris 系统软件包的完整安装

  • 可以包含其他软件包或未通过软件包安装的其他软件、目录、文件以及其他数据

  • 提供一个完整一致的产品数据库,该数据库包含安装在全局区域中的所有软件组件的有关信息

  • 仅存放特定于全局区域的配置信息,如全局区域主机名和文件系统表

  • 是识别所有设备和所有文件系统的唯一区域

  • 是识别非全局区域存在和配置的唯一区域

  • 是可以从中配置、安装、管理或卸载非全局区域的唯一区域

非全局 

 

  • 引导区域时由系统指定区域 ID

  • 共享从全局区域引导的 Solaris 内核下的操作

  • 包含完整 Solaris 操作系统软件包中已安装的一部分

  • 包含从全局区域共享的 Solaris 软件包

  • 可以包含未从全局区域共享的其他已安装的软件包

  • 可以包含在非全局区域上创建的,未通过软件包安装或者未从全局区域共享的其他软件、目录、文件以及其他数据

  • 具有一个完整一致的产品数据库,该数据库包含安装在非全局区域中的所有软件组件的有关信息,无论这些组件存在于非全局 区域上还是从全局区域中只读共享

  • 不识别其他任何区域的存在

  • 无法安装、管理或卸载其他区域,包括其本身

  • 仅具有特定于非全局区域的配置信息,例如非全局区域主机名和文件系统表

  • 可以具有自己的时区设置

如何管理非全局区域

全局管理员具有超级用户权限或主管理员角色。当全局管理员登录到全局区域时,可以将系统作为一个整体进行监视和控制。

区域管理员可以管理非全局区域。全局管理员为区域管理员指定区域管理配置文件。区域管理员的权限仅限于某个非全局区域。

如何创建非全局区域

全局管理员使用 zonecfg 命令,通过为区域虚拟平台和应用程序环境指定各种参数来配置区域。然后,全局管理员安装区域,使用区域管理命令 zoneadm 将软件包中的软件安装到为区域建立的文件系统分层结构。全局管理员可以使用 zlogin 命令登录到已安装的区域。首次登录时,会完成区域的内部配置。然后使用 zoneadm 命令引导区域。

有关区域配置的信息,请参见第 17 章。有关区域安装的信息,请参见第 19 章。有关区域登录的信息,请参见第 21 章

非全局区域状态模型

非全局区域可以处于以下六种状态之一:

已配置

区域配置已完成并提交到稳定存储器。但是,那些必须在初始引导之后指定的区域应用程序环境元素还不存在。

未完成

在安装或卸载操作期间,zoneadm 将目标区域的状态设置为未完成。成功完成操作之后,便将状态设置为正确的状态。

已安装

已在系统上实例化区域配置。zoneadm 命令用于检验是否可以在指定的 Solaris 系统上成功使用配置。软件包安装在区域的根路径下。在此状态下,区域没有关联的虚拟平台。

就绪

已建立区域的虚拟平台。已由内核创建 zsched 进程,已设置网络接口且可用于该区域,已挂载文件系统,并且已配置设备。系统会指定唯一的区域 ID。在此阶段,没有启动与区域关联的进程。

正在运行

正在运行与区域应用程序环境关联的用户进程。创建了与应用程序环境关联的第一个用户进程 (init) 之后,区域便会立即进入正在运行状态。

正在关闭和关闭

这两种状态是停止区域时出现的过渡状态。但是,因某种原因无法关闭的区域将会在这两种状态下停止。

第 20 章zoneadm(1M) 手册页介绍了如何使用 zoneadm 命令在这些状态之间进行转换。

表 16–1 影响区域状态的命令

当前区域状态 

适用的命令 

已配置 

zonecfg -z zonename verify

zonecfg -z zonename commit

zonecfg -z zonename delete

zoneadm -z zonename attach

zoneadm -z zonename verify

zoneadm -z zonename install

zoneadm -z zonename clone

您还可以使用 zonecfg 重命名处于已配置或已安装状态的区域。

未完成 

zoneadm -z zonename uninstall

已安装 

zoneadm -z zonename ready(可选)

zoneadm -z zonename boot

zoneadm -z zonename uninstall 可从系统中卸载指定区域的配置。

zoneadm -z zonename move path

zoneadm -z zonename detach

zonecfg -z zonename 可用于添加或删除 attrbootargscapped-memorydatasetdedicated-cpudevicefsip-typelimitprivnetrctlscheduling-class 属性。您还可以重命名处于已安装状态的区域。无法更改 inherit-pkg-dir 资源。

就绪 

zoneadm -z zonename boot

zoneadm halt 加上系统重新引导可使区域从就绪状态恢复为已安装状态。

zonecfg -z zonename 可用于添加或删除 attrbootargscapped-memorydatasetdedicated-cpudevicefsip-typelimitprivnetrctlscheduling-class 属性。无法更改 inherit-pkg-dir 资源。

正在运行 

zlogin options zonename

zoneadm -z zonename reboot

zoneadm -z zonename halt 可使就绪区域恢复为已安装状态。

zoneadm halt 加上系统重新引导可使区域从正在运行状态恢复为已安装状态。

zonecfg -z zonename 可用于添加或删除 attrbootargscapped-memorydatasetdedicated-cpudevicefsip-typelimitprivnetrctlscheduling-class 属性。无法更改 zonepathinherit-pkg-dir 资源。


注 –

通过 zonecfg 更改的参数不会影响正在运行的区域。必须重新引导区域才能使更改生效。


非全局区域特征

区域提供的隔离几乎可细化到您所需的任何程度。区域不需要专用的 CPU、物理设备或部分物理内存。可以在单个域或系统中运行的多个区域之间复用这些资源,也可借助操作系统中可用的资源管理功能为每个区域分别分配这些资源。

每个区域都可提供一组自定义的服务。要执行基本进程隔离,一个进程只能看到同一区域中的各个进程,或向这些进程发送信号。区域间的基本通信是通过每个区域的 IP 网络连接来完成的。在某个区域中运行的应用程序看不到其他区域的网络流量。即使各个软件包的流使用同一物理接口,也会维护这种隔离。

每个区域都在文件系统分层结构中拥有一个位置。因为每个区域都只限于文件系统分层结构中的一个子树,所以在某一特定区域中运行的工作负荷不能访问在其他区域中运行的另一个工作负荷的盘上数据。

命名服务使用的文件驻留在区域本身的根文件系统视图中。因此,不同区域的命名服务之间相互分离并可单独配置。

将资源管理功能用于非全局区域

如果您使用资源管理功能,则应当使此功能可以完全控制区域范围。通过指定上述控制范围,可以创建更完整的虚拟机模型,可对其中的名称空间访问、安全隔离和资源使用情况进行完全控制。

对于将各种资源管理功能用于区域的任何特殊要求,将在本手册中介绍这些功能的各章节中介绍。

非全局区域提供的功能

非全局区域可提供以下功能:

安全

一旦将进程放入全局区域之外的区域,此进程或其后续子进程便不能更改区域。

可以在区域中运行网络服务。通过在区域中运行网络服务,可限制出现安全违规时可能引起的损坏。如果入侵者成功利用了区域中运行的软件中的安全缺陷,则此入侵者只能在此区域中执行一部分可能的操作。区域中可用的权限是整个系统中可用权限的一部分。

隔离

使用区域,可以在同一计算机上部署多个应用程序,即使这些应用程序运行在不同的信任域中,需要独占访问全局资源或者全局配置出现问题也是如此。例如,使用与每个区域关联的特定 IP 地址或通配符地址,可以将同一系统的不同共享 IP 区域中运行的多个应用程序绑定到同一网络端口。应用程序还无法监视或拦截其他应用程序的网络流量、文件系统数据或进程活动。

网络隔离

如果需要在网络上的 IP 层隔离某个区域,例如,将其连接到与全局区域和其他非全局区域不同的 VLAN 或不同的 LAN,此时出于安全原因考虑,该区域可以有一个专用 IP。专用 IP 区域可用于整合必须在不同子网(这些子网位于不同的 VLAN 或不同的 LAN)上通信的应用程序。

也可以将区域配置为共享 IP 区域。这些区域将连接到与全局区域相同的 VLAN 或相同的 LAN,并与全局区域共享 IP 路由配置。共享 IP 区域具有单独的 IP 地址,但共享 IP 的其他部分。

虚拟化

区域提供了一个虚拟环境,此环境可以在应用程序中隐藏详细信息(例如物理设备、系统的主 IP 地址以及主机名)。可以在不同的物理计算机上维护同一应用程序环境。通过虚拟环境,可以单独管理每个区域。区域管理员在非全局区域中执行的操作不会影响系统的其余部分。

粒度

区域提供的隔离几乎可细化到任何程度。有关更多信息,请参见非全局区域特征

环境

区域不更改应用程序的执行环境,但为实现安全和隔离目标而必须更改的情况除外。区域不显示应用程序必须连接的新 API 或 ABI。相反,区域提供具有某些限制的标准 Solaris 接口和应用程序环境。这些限制主要影响尝试执行特权操作的应用程序。

无论是否配置其他区域,全局区域中的应用程序始终会运行而无需修改。

在系统上设置区域(任务图)

下表简要介绍了首次在系统上设置区域所涉及的任务。

任务 

说明 

参考 

标识您要在区域中运行的应用程序。 

查看正在系统上运行的应用程序: 

  • 确定对您的业务目标至关重要的应用程序。

  • 评估正在运行的应用程序对系统的要求。

如有必要,请参阅您的业务目标和系统文档。 

确定要配置的区域数。 

评估: 

  • 您要在区域中运行的应用程序的性能要求

  • 建议每个区域安装 100 MB 可用磁盘空间的可用性

 

请参见评估当前的系统设置

确定是否将资源池与区域结合使用,以便创建容器。 

如果您还要在系统上使用资源管理功能,则需要使资源管理范围能够覆盖这些区域。请在配置区域之前配置资源池。 

请注意,从 Solaris 10 8/07 发行版开始,您可以使用 zonecfg 属性将区域范围的资源控制和池功能快速添加到区域中。

请参见如何配置区域第 13 章

执行预配置任务。 

确定区域名称和区域路径。确定此区域是共享 IP 区域还是专用 IP 区域,然后获取 IP 地址或数据链路名称。确定每个区域的必需文件系统和设备。确定用于区域的调度类。确定在标准缺省权限集不充足的情况下,应为区域内的进程设置的权限集。请注意,有些 zonecfg 设置会自动添加权限。例如,ip-type=exclusive 会自动添加配置和管理网络栈所需的多个权限。

有关区域名称和路径、IP 类型、IP 地址、文件系统、设备、调度类以及权限的信息,请参见第 17 章评估当前的系统设置。有关缺省权限和可在非全局区域中配置的权限的列表,请参见非全局区域中的权限。有关 IP 功能可用性的信息,请参见共享 IP 非全局区域中的联网Solaris 10 8/07:专用 IP 非全局区域中的联网

开发配置。 

配置非全局区域。 

请参见配置、检验并提交区域zonecfg(1M) 手册页。

以全局管理员身份检验和安装已配置的区域。 

必须在登录之前检验和安装区域。 

请参见第 19 章第 20 章

以全局管理员身份,使用带有 -C 选项的 zlogin 命令登录到每个非全局区域,或将 sysidcfg 文件放置到区域的 /etc 目录中。

 

请参见第 21 章第 22 章

以全局管理员身份引导非全局区域。 

引导每个区域以将区域置于运行状态。 

请参见第 19 章第 20 章

为生产使用准备新区域。 

创建用户帐户,添加其他软件,并自定义区域配置。 

请参阅用于设置新安装的计算机的文档。本指南中介绍了适用于区域环境的特殊注意事项。 

第 17 章 非全局区域配置(概述)

本章介绍非全局区域配置。

本章包含以下主题:

了解区域配置之后,请转至第 18 章以配置要在系统上安装的非全局区域。

有关 lx 标记区域配置的信息,请参见第 32 章第 33 章

本章新增内容

Solaris 10 6/06: 添加了对 ZFS 文件系统的支持,包括在本地非全局区域中添加数据集资源的功能。有关更多信息,请参见资源类型属性

Solaris 10 11/06: 添加了对可配置权限的支持。请参见Solaris 10 11/06 及更高版本:可配置的权限

Solaris 10 8/07:zonecfg 命令中添加了对以下功能的支持:

Solaris 10 10/08: defrouter 属性已添加到共享 IP 非全局区域的 zonecfg 实用程序中的 net 资源中。您可以通过此属性为网络接口设置缺省路由器。

有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

关于区域中的资源

包含资源管理功能的区域称为容器。可以在容器中控制的资源包括:

预安装配置过程

在系统上安装非全局区域并使用它之前,必须先配置该区域。

zonecfg 命令用于创建配置,并确定指定的资源和属性是否在虚拟系统上有效。zonecfg 对给定配置执行的检查将检验以下内容:

有关 zonecfg 命令的更多信息,请参见 zonecfg(1M) 手册页。

区域组件

本节讨论可以配置的必需区域组件和可选区域组件。区域配置数据中还提供了附加信息。

区域名称和路径

必须为区域选择名称和路径。

区域自动引导

autoboot 属性设置决定在引导全局区域时是否自动引导区域。区域服务,svc:/system/zones:default 也必须启用。

资源池关联

如果按第 13 章所述在系统中配置了资源池,则可在配置区域时使用 pool 属性将该区域与其中一个资源池相关联。

从 Solaris 10 8/07 发行版开始,如果尚未配置资源池,您仍可以使用 dedicated-cpu 资源指定在非全局区域运行时将系统处理器的某个子集专用于该非全局区域。系统将动态创建一个临时池,以便在区域运行时使用。根据 zonecfg 的指定,池配置将在迁移期间进行传播。


注 –

使用通过 pool 属性设置的永久池的区域配置与通过 dedicated-cpu 资源配置的临时池不兼容。只能设置这两个属性中的其中一个。


Solaris 10 8/07:dedicated-cpu 资源

dedicated-cpu 资源可指定在非全局区域运行时应将系统处理器的某个子集专用于该非全局区域。在引导区域时,系统将动态创建一个临时池,以便在区域运行时使用。

根据 zonecfg 的指定,池设置将在迁移期间进行传播。

dedicated-cpu 资源可为 ncpus 以及 importance(可选)设置限制。

ncpus

指定 CPU 数目或指定一个范围(如 2–4 个 CPU)。如果指定一个范围(因为需要动态资源池行为),则还应执行以下操作:

importance

如果使用 CPU 范围来获取动态行为,还要设置 importance 属性。importance 属性是可选属性,用来定义池的相对重要性。仅当为 ncpus 指定了范围并且使用由 poold 管理的动态资源池时,才需要此属性。如果 poold 未运行,则会忽略 importance。如果 poold 正在运行并且未设置 importance,那么 importance 将缺省设置为 1。有关更多信息,请参见pool.importance 属性约束


注 –

capped-cpu 资源与 dedicated-cpu 资源不兼容。cpu-shares rctl 与 dedicated-cpu 资源不兼容。


Solaris 10 5/08:capped-cpu 资源

capped-cpu 资源对某一项目或区域可占用的 CPU 资源量设立绝对的细粒度限制。在与处理器集结合使用时,CPU 上限将限制某一处理器集内的 CPU 使用。capped-cpu 资源有一个 ncpus 属性,该属性是一个正小数,小数点右侧有两位。该属性与 CPU 的单位相对应。此资源不接受范围值,但接受小数。指定 ncpus 时,值为 1 表示某个 CPU 的 100%。值为 1.25 表示 125%,因为 100% 对应于系统中的一个 CPU。


注 –

capped-cpu 资源与 dedicated-cpu 资源不兼容。


区域中的调度类

可以使用公平份额调度器 (fair share scheduler, FSS),根据区域中各工作负荷的重要性控制可用 CPU 资源在区域之间的分配。这种工作负荷重要性通过您为每个区域分配的 CPU 资源份额数来表示。即使您没有使用 FSS 来管理区域之间的 CPU 资源分配,您也可以将区域的调度类设置为使用 FSS,以便您可为区域中的项目设置份额。

在显式设置 cpu-shares 属性时,公平份额调度器 (fair share scheduler, FSS) 将用作该区域的调度类。但是,在此情况下使用 FSS 的首选方法是通过 dispadmin 命令将 FSS 设置为系统缺省的调度类。这样,所有区域都将从获取系统 CPU 资源的公平份额中受益。如果未为区域设置 cpu-shares,区域将使用系统缺省的调度类。以下操作可为区域设置调度类:

请注意,您可以使用 priocntl(1) 手册页中所述的 priocntl,在不更改缺省调度类和不重新引导的情况下将正在运行的进程移至其他调度类。

Solaris 10 8/07:物理内存控制和 capped-memory 资源

capped-memory 资源可为 physicalswaplocked 内存设置限制。每个限制均为可选项,但至少要设置一个限制。


注 –

应用程序通常不会锁定大量内存,但是如果已知道区域的应用程序会锁定内存,则您可能会决定设置锁定内存。如果区域信任是一个需要关注的问题,还可以考虑将锁定内存上限设为系统物理内存的百分之十,或区域物理内存上限的百分之十。


有关更多信息,请参见第 10 章第 11 章如何配置区域。要临时为区域设置资源上限,请参见如何为区域指定临时资源上限

区域网络接口

引导区域时,将在其中自动设置并放置通过 zonecfg 命令配置的用于提供网络连接的区域网络接口。

Internet 协议 (Internet Protocol , IP) 层可接受和传送网络包。该层包括 IP 路由、地址解析协议 (Address Resolution Protocol, ARP)、Internet 协议安全体系结构 (Internet Protocol Security Architecture, IPsec) 和 IP 过滤器。

可用于非全局区域的 IP 类型有两种:共享 IP 和专用 IP。共享 IP 区域可共享网络接口,专用 IP 区域必须具有一个专用网络接口。

有关每种类型中 IP 功能的信息,请参见共享 IP 非全局区域中的联网Solaris 10 8/07:专用 IP 非全局区域中的联网

共享 IP 非全局区域

共享 IP 区域是缺省类型。该区域必须有一个或多个专用 IP 地址。共享 IP 区域可与全局区域共享 IP 层配置和状态。如果以下两个条件同时成立,则区域应该使用共享 IP 实例:

使用 zonecfg 命令可为共享 IP 区域分配一个或多个 IP 地址。数据链路名称也必须在全局区域中配置。

这些地址与逻辑网络接口关联。可以从全局区域中使用 ifconfig 命令来在运行的区域中添加或删除逻辑接口。有关更多信息,请参见共享 IP 网络接口

Solaris 10 8/07:专用 IP 非全局区域

在专用 IP 区域中可使用 IP 级别的全部功能。

专用 IP 区域具有其自己的与 IP 相关的状态。

这包括可以在专用 IP 区域中使用下列功能:

使用 zonecfg 命令可为专用 IP 区域分配其自己的数据链路集合。使用 net 资源的 physical 属性,可为该区域指定一个数据链路名称,如 xge0e1000g1bge32001。没有设置 net 资源的 address 属性。

注意,通过分配的数据链路,可使用 snoop 命令。

可以将 dladm 命令与 show-linkprop 子命令一起使用,以显示正在运行的专用 IP 区域的数据链路分配。可以将 dladm 命令与 set-linkprop 子命令一起使用,以将其他数据链路分配给正在运行的区域。有关用法示例,请参见Solaris 10 8/07:在专用 IP 非全局区域中管理数据链路

在正在运行的专用 IP 区域内,ifconfig 命令可用于配置 IP,包括添加或删除逻辑接口。通过使用 sysidcfg(4) 中所述的 sysidtools,可以按全局区域的设置方式对区域中的 IP 配置进行设置。


注 –

专用 IP 区域的 IP 配置仅可在全局区域中使用 zlogin 命令进行查看。以下是一个示例。


global# zlogin zone1 ifconfig -a

共享 IP 非全局区域和专用 IP 非全局区域之间的安全差异

在共享 IP 区域中,此区域中的应用程序(包括超级用户)不能发送带有源 IP 地址的包,只能发送通过 zonecfg 实用程序分配给该区域的包。此类型的区域不能发送和接收任意数据链路(第 2 层)包。

但是,对于专用 IP 区域,zonecfg 会将指定数据链路的一切权限都授予该区域。因此,专用 IP 区域中的超级用户可以通过这些数据链路发送欺骗型包,就像可以在全局区域中发送一样。

同时使用共享 IP 和专用 IP 非全局区域

共享 IP 区域总是与全局区域共享 IP 层,而专用 IP 区域总是有其自己的 IP 层实例。共享 IP 区域和专用 IP 区域都可在同一计算机中使用。

在区域中挂载的文件系统

通常,在区域中挂载的文件系统包括:

例如,这可以包括以下文件系统:

将对在应用程序环境中执行的挂载设定特定限制。这些限制可防止区域管理员拒绝为系统的其余部分提供服务,或者对其他区域产生不良影响。

在区域中挂载特定的文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。有关更多信息,请参见文件系统和非全局区域

区域中的已配置设备

zonecfg 命令使用与规则匹配的系统来指定应在特定区域中出现的设备。与其中一个规则匹配的设备包括在区域的 /dev 文件系统中。有关更多信息,请参见如何配置区域

区域中的主机 ID

您可以设置非全局区域的 hostid 属性,该属性与全局区域的 hostid 属性不同。这将在使用物理转换为虚拟功能将物理计算机整合到区域时完成。现在,位于区域内的应用程序可能取决于原始 hostid,并且可能无法更新应用程序配置。有关更多信息,请参见资源和属性类型

设置区域范围的资源控制

全局管理员可以为区域设置区域范围的特权资源控制。区域范围的资源控制可限制区域内所有进程实体总的资源使用情况。

使用 zonecfg 命令同时为全局区域和非全局区域指定这些限制。请参见如何配置区域

从 Solaris 10 8/07 发行版开始,设置区域范围资源控制的首选的、更简单的方法是使用属性名称,而不是使用 rctl 资源。

Solaris 10 5/08: zone.cpu-cap 资源控制用于对某个区域可占用的 CPU 资源量设置绝对限制。值 100 表示将一个 CPU 的 100% 用作 project.cpu-cap 设置。值 125 表示 125%,因为在使用 CPU 上限时,100% 对应于系统中的一个 CPU。


注 –

设置 capped-cpu 资源时,可以使用小数来表示单位。该值对应于 zone.capped-cpu 资源控制,但设置减小 100 倍。设置为 1 等效于资源控制设置 100


zone.cpu-shares 资源控制可以对区域的公平份额调度器 (fair share scheduler, FSS) CPU 份额数设置限制。CPU 份额首先分配给区域,然后在区域内的项目之间进一步分配,如 project.cpu-shares 项中所述。有关更多信息,请参见在安装了区域的 Solaris 系统上使用公平份额调度器。此控制的全局属性名称是 cpu-shares

zone.max-locked-memory 资源控制对可用于区域的锁定物理内存量加以限制。区域中各项目之间的锁定内存资源分配可通过 project.max-locked-memory 资源控制来控制。有关更多信息,请参见表 6–1

zone.max-lwps 资源控制通过禁止一个区域中有过多 LWP 影响其他区域,来增强资源隔离功能。对此区域中项目的 LWP 资源的分配可使用 project.max-lwps 资源控制进行控制。有关更多信息,请参见表 6–1。此控制的全局属性名称是 max-lwps

zone.max-msg-idszone.max-sem-idszone.max-shm-idszone.max-shm-memory 资源控制可用于限制区域中的所有进程使用的 System V 资源。对区域中项目的 System V 资源的分配可使用这些资源控制的项目版本来进行控制。这些控制的全局属性名称是 max-msg-idsmax-sem-idsmax-shm-idsmax-shm-memory

zone.max-swap 资源控制可限制区域中的用户进程地址空间映射和 tmpfs 挂载所占用的交换空间。prstat -Z 的输出将显示一个 SWAP 列。报告的交换是区域进程和 tmpfs 挂载所使用的总交换量。此值有助于监视每个区域预留的交换空间,可用于选择适当的 zone.max-swap 设置。

表 17–1 区域范围的资源控制

控制名称 

全局属性名称 

说明 

缺省单位 

所用值 

zone.cpu-cap

 

Solaris 10 5/08:此区域可用的 CPU 资源量的绝对限制。

数量(CPU 数目),以百分比表示 


注 –

设置 capped-cpu 资源时,可以使用小数来表示单位。


 

zone.cpu-shares

cpu-shares

此区域的公平份额调度器 (fair share scheduler, FSS) CPU 份额数。 

数量(份额) 

 

zone.max-locked-memory

 

区域可用的锁定物理内存的总量 

如果将 priv_proc_lock_memory 指定给某个区域,请考虑同时设置此资源控制,以防止该区域锁定所有内存。

大小(字节) 

capped-memorylocked 属性.

zone.max-lwps

max-lwps

此区域可同时使用的最大 LWP 数。 

数量 (LWP) 

 

zone.max-msg-ids

max-msg-ids

此区域允许的最大消息队列 ID 数。 

数量(消息队列 ID) 

 

zone.max-sem-ids

max-sem-ids

此区域允许的最大信号量 ID 数。 

数量(信号量 ID) 

 

zone.max-shm-ids

max-shm-ids

此区域允许的最大共享内存 ID 数。 

数量(共享内存 ID) 

 

zone.max-shm-memory

max-shm-memory

此区域允许的系统 V 共享内存总量。 

大小(字节) 

 

zone.max-swap

 

可用于此区域的用户进程地址空间映射和 tmpfs 挂载的交换空间总量

大小(字节) 

capped-memoryswap 属性

可以使用 prctl 命令为正运行的进程指定这些限制。如何使用 prctl 命令在全局区域中设置 FSS 份额中还提供了一个示例。通过 prctl 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。

Solaris 10 11/06 及更高版本:可配置的权限

引导区域时,配置中包括安全权限的缺省集合。这些权限被视为安全权限,因为它们可以阻止区域中的特权进程影响系统中其他非全局区域或全局区域中的进程。您可使用 zonecfg 命令执行以下操作:


注 –

目前,有些权限不能从区域的缺省权限集中删除,还有一些权限不能添加到缺省权限集中。


有关更多信息,请参见非全局区域中的权限如何配置区域privileges(5)

包含区域注释

您可以使用 attr 资源类型为区域添加注释。有关更多信息,请参见如何配置区域

使用 zonecfg 命令

可以使用 zonecfg(1M) 手册页中所述的 zonecfg 命令配置非全局区域。在 Solaris 10 8/07 发行版中,此命令还可以用来为全局区域持久指定资源管理设置。

zonecfg 命令可以在交互模式、命令行模式或命令文件模式下使用。可以使用此命令执行以下操作:

zonecfg 提示符的格式如下:


zonecfg:zonename>

当您配置特定的资源类型(例如文件系统)时,此资源类型也包含在提示符中:


zonecfg:zonename:fs>

有关更多信息,包括显示如何使用本章中所述的各种 zonecfg 组件的过程,请参见第 18 章

zonecfg 模式

范围的概念用于用户界面。范围可以是全局的,也可以是资源特定的。缺省范围为全局。

在全局范围内,add 子命令和 select 子命令用于选择特定资源。然后范围更改为此资源类型。

然后范围恢复为全局。

某些子命令(例如 addremoveset)在每个范围中都有不同的语义。

zonecfg 交互模式

在交互模式中,支持以下子命令。有关用于这些子命令的语义和选项的详细信息,请参见 zonecfg(1M) 手册页中有关选项的内容。对于可能会导致破坏性操作或所做工作丢失的任何子命令,系统均要求用户在继续之前进行确认。您可以使用 -F(强制)选项,跳过此项确认操作。

help

列显一般帮助,或者显示有关给定资源的帮助。


zonecfg:my-zone:inherit-pkg-dir> help
create

开始为指定的新区域配置内存中的配置,以实现以下用途之一:

  • 将缺省设置应用于新的配置。此方法为缺省方法。

  • -t template 选项一起使用时,用于创建与指定模板相同的配置。区域名称从模板名称更改为新区域名称。

  • -F 选项一起使用时,用于覆写现有配置。

  • -b 选项一起使用时,用于创建其中未设置任何内容的空配置。

export

采用可以在命令文件中使用的格式,在标准输出或指定输出文件中列显配置。

add

在全局范围中,将指定的资源类型添加到配置。

在资源范围中,添加具有给定名称和给定值的属性。

有关更多信息,请参见如何配置区域和 zonecfg(1M) 手册页。

set

将给定属性名称设置为给定属性值。请注意,某些属性(例如 zonepath)为全局属性,而其他属性则为资源特定的属性。因此,此命令适用于全局范围和资源范围。

select

仅适用于全局范围。选择与给定属性名称-属性值对的修改条件相匹配的给定类型资源。将范围更改为此资源类型。您必须为要唯一标识的资源指定足够数量的属性名称-值对。

clear

Solaris 10 8/07: 清除可选设置的值。不能清除必需设置。但可以通过指定新值来更改某些必需设置。

remove

在全局范围中,删除指定的资源类型。您必须为要唯一标识的资源类型指定足够数量的属性名称-值对。如果没有指定属性名称-值对,则会删除所有实例。当存在多个属性名称-值对时,如果未使用 -F 选项,则需要进行确认。

在资源范围中,从当前资源中删除指定的属性名称-属性值。

end

仅适用于资源范围。结束资源指定。

然后,zonecfg 命令将检验是否完全指定当前资源。

  • 如果资源完全指定,则可以将其添加到内存中的配置,并且范围将恢复为全局。

  • 如果未完全指定,则系统将显示一条描述需要执行何种操作的错误消息。

cancel

仅适用于资源范围。结束资源指定并将范围重置为全局。系统不会保留任何未完全指定的资源。

delete

销毁指定的配置。从内存和稳定存储器中删除配置。您必须将 -F(强制)选项与 delete 一起使用。


注意 – 注意 –

此操作为即时操作。不需要提交,并且无法恢复已删除的区域。


info

显示有关当前配置或全局资源属性 zonepathautobootpool 的信息。如果指定了资源类型,则仅显示有关此类型资源的信息。在资源范围中,此子命令仅应用于要添加或修改的资源。

verify

检验当前配置是否正确。确保所有资源都指定了所有必需的属性。

commit

将当前配置从内存提交到稳定存储器。在提交内存中的配置之前,可以使用 revert 子命令删除更改。必须提交配置以供 zoneadm 使用。完成 zonecfg 会话时,便会自动尝试此操作。由于仅可提交正确的配置,因此,提交操作将自动进行检验。

revert

将配置恢复到上次提交时的状态。

exit

退出 zonecfg 会话。您可以将 -F(强制)选项与 exit 一起使用。

如果需要,会自动尝试 commit。请注意,也可以使用 EOF 字符退出会话。

zonecfg 命令文件模式

在命令文件模式中,输入来自文件。可以使用zonecfg 交互模式中所述的 export 子命令生成此文件。可以在标准输出中列显配置,也可以使用 -f 选项指定输出文件。

区域配置数据

区域配置数据由两种类型的实体组成:资源和属性。每个资源都有一种类型,并且每个资源还可以有一个包含一个或多个属性的集合。属性具有名称和值。属性集取决于资源类型。

资源和属性类型

资源和属性类型如下所述:

区域名称

区域名称用于标识配置实用程序的区域。以下规则适用于区域名称:

  • 每个区域必须具有唯一的名称。

  • 区域名称区分大小写。

  • 区域名称必须以字母数字字符开头。

    名称可以包含字母数字字符、下划线 (_)、连字符 (-) 和句点 (.)。

  • 名称不能超过 64 个字符。

  • 名称 global 和所有以 SUNW 开头的名称均保留,不能使用。

zonepath

zonepath 属性是包含区域根目录的路径。每个区域都有一个位于全局区域文件系统中 zonepath 路径下的 root 目录。安装区域时,zonepath 目录分层结构将以正确的所有者和模式进行创建。zonepath 目录必须为 root 所拥有,并且模式为 700

非全局区域的根路径低一个级别。区域的根目录与全局区域中的根目录 (/) 具有相同的拥有权和权限。区域目录必须由 root 拥有,并且模式为 755。这些目录是使用正确的权限自动创建的,并且不需要区域管理员进行检验。此分层结构可防止全局区域中的非特权用户遍历非全局区域的文件系统。

路径 

说明 

/home/export/my-zone

zonecfg zonepath

/home/export/my-zone/root

区域的根目录 

/home/export/my-zone/dev

为区域创建的设备目录 

有关此问题的进一步讨论,请参见遍历文件系统


注 –

有关此发行版的 ZFS 限制,请参见Solaris 10 6/06、Solaris 10 11/06、Solaris 10 8/07 和 Solaris 10 5/08:不要将非全局区域的根文件系统放置在 ZFS 上


autoboot

如果此属性设置为 true,则引导全局区域时会自动引导区域。请注意,如果禁用了区域服务 svc:/system/zones:default,则无论如何设置此属性,区域都不会自动引导。您可以使用 svcadm(1M) 手册页中所述的 svcadm 命令来启用区域服务:


global# svcadm enable zones
bootargs

Solaris 10 8/07: 此属性用于为区域设置引导参数。除非被 rebootzoneadm bootzoneadm reboot 命令覆盖,否则将应用该引导参数。请参见Solaris 10 8/07:区域引导参数

pool

此属性用于将区域与系统中的资源池相关联。多个区域可以共享一个池的资源。另请参见Solaris 10 8/07:dedicated-cpu 资源

limitpriv

Solaris 10 11/06 及更高版本: 此属性用于指定缺省权限集之外的权限掩码。请参见非全局区域中的权限

通过指定权限名称可添加权限,权限名称中可包含或不包含前导 priv_。在权限名称前添加破折号 (-) 或感叹号 (!) 可以排除权限。权限值以逗号分隔,并放在引号 (") 内。

priv_str_to_set(3C) 中所述,特殊权限集 noneallbasic 对其标准定义进行了扩展。由于区域配置在全局区域内进行,因此不能使用特殊权限集 zone。由于常见用法是通过添加或删除某些权限来更改缺省权限集,因此特殊权限集 default 将映射为缺省权限集。当 default 出现在 limitpriv 属性开头时,它将扩展为缺省权限集。

以下条目增加了使用 DTrace 程序的功能,该程序只要求区域中具有 dtrace_procdtrace_user 权限:


global# zonecfg -z userzone
zonecfg:userzone> set limitpriv="default,dtrace_proc,dtrace_user"

如果区域的权限集包含不允许的权限、缺少必需权限或包含未知权限,则检验、准备或引导该区域的尝试都将失败,并将显示错误消息。

scheduling-class

Solaris 10 8/07: 此属性可为区域设置调度类。有关其他信息和提示,请参见区域中的调度类

ip-type

Solaris 10 8/07: 仅当区域是专用 IP 区域时,才需要设置此属性。请参见Solaris 10 8/07:专用 IP 非全局区域如何配置区域

dedicated-cpu

Solaris 10 8/07: 此资源可在某个区域运行时使系统处理器的某个子集专用于该区域。dedicated-cpu 资源可为 ncpus 以及 importance(可选)提供限制。有关更多信息,请参见Solaris 10 8/07:dedicated-cpu 资源

capped-cpu 资源

Solaris 10 5/08: 此资源对区域在运行时可占用的 CPU 资源量设置限制。此资源可为 ncpus 提供限制。

capped-memory 资源

Solaris 10 8/07: 此资源可对为区域设置内存上限时使用的属性分组。capped-memory 资源可为 physicalswaplocked 内存提供限制。至少必须指定其中一个属性。

dataset

Solaris 10 6/06: 通过添加 ZFS 文件系统数据集资源,可以将存储管理委托给非全局区域。区域管理员可以在此数据集中创建和销毁文件系统、创建和销毁克隆以及修改此数据集的属性。区域管理员无法影响尚未添加到区域的数据集,也无法超过对指定给区域的数据集设置的任何顶层配额。

可以按以下方式将 ZFS 数据集添加到区域中。

  • 作为一个 lofs 挂载文件系统(在目标单独与全局区域共享空间时)

  • 作为一个委托数据集

请参见《Oracle Solaris ZFS 管理指南》中的第 10  章 “Oracle Solaris ZFS 高级主题”文件系统和非全局区域

有关数据集问题的信息,另请参见第 30 章

fs

当区域从已安装状态转换为就绪状态时,每个区域都可以拥有已挂载的各种文件系统。文件系统资源指定文件系统挂载点的路径。有关在区域中使用文件系统的更多信息,请参见文件系统和非全局区域

inherit-pkg-dir

不应在完全根区域中配置此资源。

在稀疏根区域中,inherit-pkg-dir 资源用于表示包含非全局区域与全局区域共享的软件包的目录。

非全局区域以只读模式继承传送到 inherit-pkg-dir 目录的软件包内容。区域的打包数据库将更新,以反映软件包。使用 zoneadm 安装区域之后,便不能修改或删除这些资源。


注 –

配置中包含四种缺省 inherit-pkg-dir 资源。这些目录资源表示哪些目录应从全局区域中继承关联的软件包。资源通过只读回送文件系统挂载来实现。

  • /lib

  • /platform

  • /sbin

  • /usr


net

网络接口资源是接口名称。当区域从已安装状态转换为就绪状态时,每个区域都可以具有可以设置的网络接口。

device

设备资源是与设备匹配的说明符。当区域从已安装状态转换为就绪状态时,每个区域都具有应配置的设备。

rctl

rctl 资源用于区域范围的资源控制。当区域从已安装状态转换为就绪状态时,将启用这些控制。

hostid

可以设置与全局区域的 hostid 不同的 hostid

attr

此通用属性可用于用户注释或其他子系统。attrname 属性必须以字母数字字符开头。name 属性可以包含字母数字字符、连字符 (-) 和句点 (.)。以 zone. 开头的属性名称将保留,以供系统使用。

资源类型属性

资源也有要配置的属性。以下属性与所示的资源类型关联。

dedicated-cpu

ncpusimportance

Solaris 10 8/07:指定 CPU 个数以及池的相对重要性(可选)。以下示例指定了供区域 my-zone 使用的 CPU 范围,还设置了 importance


zonecfg:my-zone> add dedicated-cpu
zonecfg:my-zone:dedicated-cpu> set ncpus=1-3
zonecfg:my-zone:dedicated-cpu> set importance=2
zonecfg:my-zone:dedicated-cpu> end
capped-cpu

ncpus

指定 CPU 数目。以下示例指定了供区域 my-zone 使用的 CPU 的 CPU 上限为 3.5 个。


zonecfg:my-zone> add capped-cpu
zonecfg:my-zone:capped-cpu> set ncpus=3.5
zonecfg:my-zone:capped-cpu> end
capped-memory

physicalswaplocked

为区域 my-zone 指定内存限制。每个限制均为可选项,但至少要设置一个限制。


zonecfg:my-zone> add capped-memory
zonecfg:my-zone:capped-memory> set physical=50m
zonecfg:my-zone:capped-memory> set swap=100m
zonecfg:my-zone:capped-memory> set locked=30m
zonecfg:my-zone:capped-memory> end
fs

dirspecialrawtypeoptions

fs 资源参数提供的值可确定如何以及在何处挂载文件系统。fs 参数定义如下:

dir

为文件系统指定挂载点

special

指定要从全局区域挂载的特殊块设备名称或目录

raw

指定在挂载文件系统之前运行 fsck 所在的原始设备

type

指定文件系统类型

options

指定挂载选项,这些选项类似于使用 mount 命令找到的挂载选项

以下示例的几行代码指定全局区域中的 /dev/dsk/c0t0d0s2 将作为要配置的区域中的 /mnt 进行挂载。raw 属性指定一个在尝试挂载文件系统之前运行 fsck 命令的可选设备。所使用的文件系统类型为 UFS。添加了选项 nodeviceslogging


zonecfg:my-zone> add fs
zonecfg:my-zone:fs> set dir=/mnt
zonecfg:my-zone:fs> set special=/dev/dsk/c0t0d0s2
zonecfg:my-zone:fs> set raw=/dev/rdsk/c0t0d0s2
zonecfg:my-zone:fs> set type=ufs
zonecfg:my-zone:fs> add options [nodevices,logging]
zonecfg:my-zone:fs> end

有关更多信息,请参见-o nosuid 选项安全限制和文件系统行为以及 fsck(1M)mount(1M) 手册页。另请注意,有关专用于特定文件系统的挂载选项的信息可以在 1M 手册页部分中找到。这些手册页名称的格式为 mount_filesystem


注 –

要使用 fs 资源属性添加 ZFS 文件系统,请参见《Oracle Solaris ZFS 管理指南》中的“向非全局区域中添加 ZFS 文件系统”


dataset

name

以下示例的几行代码指定数据集 sales 将在非全局区域中可见并在该区域中进行挂载,但在全局区域中不再可见。


zonecfg:my-zone> add dataset
zonecfg:my-zone> set name=tank/sales
zonecfg:my-zone> end
inherit-pkg-dir

dir

以下示例的几行代码指定 /opt/sfw 从全局区域中进行回送挂载。


zonecfg:my-zone> add inherit-pkg-dir
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:my-zone:inherit-pkg-dir> end
net

addressphysicaldefrouter


注 –

对于共享 IP 区域,可以同时指定 IP 地址和设备,或者设置缺省路由器。

  • 非全局区域位于未在全局区域中配置的子网上时,defrouter 属性可用于设置缺省路由。

  • 设置了 defrouter 属性的任何区域必须位于未在全局区域中配置的子网上。

当共享 IP 区域位于不同的子网上时,请不要在全局区域中配置数据链接。

对于专用 IP 区域,只能指定物理接口。物理属性可为 VNIC。


在以下针对共享 IP 区域的示例中,IP 地址 192.168.0.1 将添加到该区域中。hme0 卡用于物理接口。要确定所使用的物理接口,请在系统上键入 ifconfig -a。每一个输出行(回送驱动程序行除外)都以系统上安装的卡的名称开头。说明中包含 LOOPBACK 的行不适用于卡。


zonecfg:my-zone> add net
zonecfg:my-zone:net> set physical=hme0
zonecfg:my-zone:net> set address=192.168.0.1
zonecfg:my-zone:net> end

在专用 IP 区域的以下示例中,bge32001 链接用于物理接口。要确定哪些数据链路可用,请使用命令 dladm show-link。只有 GLDv3 数据链路才能用于专用 IP 区域,非 GLDv3 数据链路在 dladm show-link 输出中显示为 type: legacy。请注意,还必须指定 ip-type=exclusive


zonecfg:my-zone> set ip-type=exclusive
zonecfg:my-zone> add net
zonecfg:my-zone:net> set physical=bge32001
zonecfg:my-zone:net> end
device

match

在以下示例中,/dev/pts 设备包括在区域中。


zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/pts*
zonecfg:my-zone:device> end
rctl

namevalue

Solaris 10 8/07: 此发行版的新增资源控制包括 zone.max-locked-memoryzone.max-msg-idszone.max-sem-idszone.max-shm-idszone.max-shm-memoryzone.max-swap

以下是可用的区域范围的资源控制:

  • zone.cpu-shares(首选:cpu-shares

  • zone.max-locked-memory

  • zone.max-lwps(首选: max-lwps

  • zone.max-msg-ids(首选: max-msg-ids

  • zone.max-sem-ids(首选: max-sem-ids

  • zone.max-shm-ids(首选: max-shm-ids

  • zone.max-shm-memory(首选: max-shm-memory

  • zone.max-swap

注意,设置区域范围资源控制的首选的、更简单的方法是使用属性名称,而不是使用 rctl 资源,如如何配置区域中所示。如果区域中的区域范围资源控制条目是使用 add rctl 配置的,则其格式与 project 数据库中的资源控制条目不同。在区域配置中,rctl 资源类型由三个名称/值对组成。名称分别是 privlimitaction。每个名称都有一个简单值。


zonecfg:my-zone> add rctl
zonecfg:my-zone:rctl> set name=zone.cpu-shares
zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none)zonecfg:my-zone:rctl> end

zonecfg:my-zone> add rctl
zonecfg:my-zone:rctl> set name=zone.max-lwps
zonecfg:my-zone:rctl> add value (priv=privileged,limit=100,action=deny)
zonecfg:my-zone:rctl> end

有关资源控制和属性的一般信息,请参见第 6 章在非全局区域中使用的资源控制

attr

nametypevalue

在以下示例中,添加了有关区域的注释。


zonecfg:my-zone> add attr
zonecfg:my-zone:attr> set name=comment
zonecfg:my-zone:attr> set type=string
zonecfg:my-zone:attr> set value="Production zone"
zonecfg:my-zone:attr> end

可以使用 export 子命令在标准输出中列显区域配置。通过可以在命令文件中使用的格式保存配置。

Tecla 命令行编辑库

配置中提供了 Tecla 命令行编辑库,可与 zonecfg 命令一起使用。此库为命令行历史记录和编辑支持提供了一种机制。

Tecla 命令行编辑库在以下手册页中进行介绍:

第 18 章 规划和配置非全局区域(任务)

本章介绍在系统上配置区域之前需要执行的操作,同时还介绍了如何在系统上配置区域、修改区域配置以及删除区域配置。

有关区域配置过程的介绍,请参见第 17 章

规划和配置非全局区域(任务图)

在将系统设置为使用区域之前,必须先收集信息并决定如何配置区域。以下任务图概括了如何规划和配置区域。

任务 

说明 

参考 

规划区域策略。 

  • 评估在系统上运行的应用程序,并确定需要在区域中运行的应用程序。

  • 评估磁盘空间的可用性,以便可以保存区域内特有的文件。

  • 如果您也使用资源管理功能,请确定如何使资源管理范围能够覆盖整个区域。

请参阅历史使用情况。另请参见磁盘空间需求区域中使用的资源池

确定区域名称。 

基于命名约定决定区域的名称。 

请参见区域配置数据区域主机名

确定区域路径。 

每个区域都具有一个与全局区域根目录相对的根目录路径。 

请参见区域配置数据

如果没有配置资源池,请评估是否需要进行 CPU 限制。 

查看您的应用程序要求。 

请参见Solaris 10 8/07:dedicated-cpu 资源

如果计划使用全局区域中的 rcapd 来为区域设置内存上限,请评估是否需要进行内存分配。

查看您的应用程序要求。 

请参见第 10 章第 11 章Solaris 10 8/07:物理内存控制和 capped-memory 资源

将 FSS 设置为系统中的缺省调度程序。 

为每个区域指定 CPU 份额,以控制区域访问 CPU 资源的权利。FSS 保证为各个区域公平地分配 CPU 资源,这种公平分配基于已分配的份额。 

第 8 章区域中的调度类

确定区域是共享 IP 区域,还是专用 IP 区域。 

对于共享 IP 区域(缺省区域),可获取或配置区域的 IP 地址。根据配置的不同,您必须为需要网络访问的每个非全局区域获取至少一个 IP 地址。 

对于专用 IP 区域,请确定要分配给该区域的数据链路。该区域需要独占访问一个或多个网络接口。该接口可以是单独的 LAN(如 bge1),也可以是单独的 VLAN(如bge2000)。数据链路必须是 GLDv3。 GLDv3 的数据链路在 dladm show-link 命令的输出中会被标识为 type: legacy

请参见确定区域主机名并获取网络地址如何配置区域《系统管理指南:IP 服务》

有关 GLDv3 接口的更多信息,请参见《系统管理指南:IP 服务》中的“Oracle Solaris : 接口类型”

确定要在区域内挂载的文件系统。 

查看您的应用程序要求。 

有关更多信息,请参见在区域中挂载的文件系统

确定应使哪些网络接口可在区域中使用。 

查看您的应用程序要求。 

有关更多信息,请参见共享 IP 网络接口

确定是否必须更改缺省的非全局区域权限集。 

检查权限集: 缺省权限集、可以添加和删除的权限,以及目前不能使用的权限。 

请参见非全局区域中的权限

确定每个区域中应该配置的设备。 

查看您的应用程序要求。 

有关应用程序的信息,请参阅相关文档。 

配置区域。 

使用 zonecfg 可以创建区域的配置。

请参见配置、检验并提交区域

检验并提交已配置的区域。 

确定指定的资源和属性是否在虚拟系统上有效。 

请参见配置、检验并提交区域

评估当前的系统设置

可以在任何运行 Solaris 10 发行版的计算机上使用区域。以下主要的计算机注意事项与区域的使用相关联。

磁盘空间需求

对区域可以使用的磁盘空间量没有任何限制。全局管理员负责限制空间。全局管理员必须确保本地存储足以保存非全局区域的根文件系统。即使小型单处理器系统也可支持同时运行多个区域。

全局区域中安装的软件包的性质影响所创建的非全局区域的空间需求。软件包的数量和空间需求为相关因素。

稀疏根区域

在 Solaris 10 发行版本中,拥有 inherit-pkg-dir 资源的非全局区域称为稀疏根区域。

稀疏根区域模型通过以下方法优化对象共享:

在该模型中,所有的软件包都安装在非全局区域中。将完整安装不向只读回送挂载文件系统提供内容的软件包。无需安装提供给只读回送挂载文件系统的内容,因为这些内容可以从全局区域中继承(并可见)。

建议每个区域再增加 40 MB 的 RAM,如果计算机有足够的交换空间则不作此要求。

完全根区域

完全根区域模型提供最大配置能力。所有需要的和任何选定的可选 Solaris 软件包都安装到此区域的专用文件系统中。该模型的优势之一是全局管理员可以自定义其区域文件系统布局。例如,可以执行此操作来添加任意非绑定的软件包或第三方软件包。

该模型的磁盘需求由当前安装在全局区域中的软件包使用的磁盘空间决定。


注 –

如果您创建包含以下 inherit-pkg-dir 目录的稀疏根区域,则必须在安装区域之前从非全局区域配置中删除这些目录,以拥有一个完全根区域:

请参见如何配置区域


限制区域大小

可以使用以下选项限制区域大小:

确定区域主机名并获取网络地址

您必须确定区域的主机名。然后,如果要使区域具有网络连接,则必须为其指定一个 IPv4 地址,或手动配置并指定一个 IPv6 地址。

区域主机名

您为区域选择的主机名必须在 hosts 数据库或 /etc/inet/hosts 数据库(在全局区域中的 /etc/nsswitch.conf 文件中指定)中定义。网络数据库是指提供网络配置信息的文件。nsswitch.conf 文件指定要使用的命名服务。

如果将本地文件用于命名服务,则 hosts 数据库将保留在 /etc/inet/hosts 文件中。区域网络接口的主机名从 /etc/inet/hosts 中的本地 hosts 数据库解析而来。或者,可以在配置区域时直接指定 IP 地址,从而不需要对任何主机名进行解析。

有关更多信息,请参见《系统管理指南:IP 服务》中的“TCP/IP 配置文件”《系统管理指南:IP 服务》中的“网络数据库和 nsswitch.conf 文件”

共享 IP 区域网络地址

需要网络连接的每个共享 IP 区域都有一个或多个专有 IP 地址。同时支持 IPv4 和 IPv6 地址。

IPv4 区域网络地址

如果您使用的是 IPv4,则获取地址并将该地址指定到区域。

也可以指定 IP 地址前缀的长度。该前缀的格式为 address/prefix-length,例如 192.168.1.1/24。因此,要使用的地址是 192.168.1.1,要使用的网络掩码是 255.255.255.0,或者是前 24 位为 1 的掩码。

IPv6 区域网络地址

如果您使用的是 IPv6,则必须手动配置地址。通常情况下,必须至少配置以下两种地址类型:

链路本地地址

链路本地地址的格式为 fe80::64-bit interface ID/10/10 表明前缀长度为 10 位。

由子网上配置的全局前缀构成的地址

全局单点传送地址基于管理员为每个子网配置的 64 位前缀以及一个 64 位接口 ID。在配置为使用 IPv6 的同一子网上的任何系统上运行带有 -a6 选项的 ifconfig 命令,也可以获得该前缀。

64 位接口 ID 通常是从系统的 MAC 地址派生而来。为了便于区域使用,可使用如下方式从全局区域的 IPv4 地址中派生出唯一的备用地址:

16 bits of zero:upper 16 bits of IPv4 address:lower 16 bits of IPv4 address:a zone-unique number

例如,如果全局区域的 IPv4 地址是 192.168.200.10,则对于使用 1 作为区域专有数字的非全局区域,适合的链路本地地址是 fe80::c0a8:c80a:1/10。如果在该子网中使用的全局前缀是 2001:0db8:aabb:ccdd/64,则同一非全局区域的唯一全局单点传送地址是 2001:0db8:aabb:ccdd::c0a8:c80a:1/64。请注意,在配置 IPv6 地址时,您必须指定前缀长度。

有关链路本地地址和全局单点传送地址的更多信息,请参见 inet6(7P) 手册页。

专用 IP 区域网络地址

在专用 IP 区域内,可按照在全局区域中的方式来配置地址。请注意,可使用 DHCP 和 IPv6 无状态地址自动配置配置地址。

有关更多信息,请参见 sysidcfg(4)

文件系统配置

在设置虚拟平台时,您可以指定一些要执行的挂载。使用回送虚拟文件系统 (loopback virtual file system, LOFS) 回送挂载到区域的文件系统应使用 nodevices 选项挂载。有关 nodevices 选项的信息,请参见文件系统和非全局区域

使用 LOFS,您可以创建一个新的虚拟文件系统,以便使用一个备用的路径名称访问文件。在非全局区域中,使用回送挂载可以使文件系统的分层结构看起来在区域根目录下是重复的。在该区域中,使用以区域的根目录开头的路径名,可以访问所有文件。LOFS 挂载将保留文件系统名称空间。

图 18–1 回送挂载的文件系统

图显示了回送挂载的文件系统。

有关更多信息,请参见 lofs(7S) 手册页。

创建、修订和删除非全局区域配置(任务图)

任务 

说明 

参考 

配置非全局区域。 

使用 zonecfg 命令可以创建区域、检验并提交该配置。

您也可以使用脚本在系统上配置和引导多个区域。可以使用 zonecfg 命令来显示非全局区域的配置。

配置、检验并提交区域配置多个区域的脚本

修改区域配置。 

使用此过程可以修改区域配置中的资源类型,或在区域中添加专用设备。 

使用 zonecfg 命令修改区域配置

恢复或删除区域配置。 

使用 zonecfg 命令可以撤消对区域配置所做的资源设置,或删除区域配置。

使用 zonecfg 命令恢复或删除区域配置

删除区域配置。 

使用带有 delete 子命令的 zonecfg 命令可以从系统中删除区域配置。

如何删除区域配置

配置、检验并提交区域

使用 zonecfg(1M) 手册页中所述的 zonecfg 命令可执行以下操作。

也可以使用 zonecfg 命令永久指定全局区域的资源管理设置。

当使用 zonecfg 实用程序配置区域时,您可以使用 revert 子命令来撤消资源设置。请参见如何恢复区域配置

在系统上配置多个区域的脚本在配置多个区域的脚本中提供。

有关如何显示非全局区域配置,请参见如何显示非全局区域的配置

Procedure如何配置区域

请注意,创建本地非全局区域的必需元素只有 zonenamezonepath 属性。其他资源和属性都是可选的。有些可选资源还需要在备选项之间进行选择,例如决定使用 dedicated-cpu 资源还是 capped-cpu 资源。有关可用的 zonecfg 属性和资源的信息,请参见区域配置数据

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 用所选的区域名称来设置区域配置。

    此示例过程中使用名称 my-zone


    global# zonecfg -z my-zone
    

    如果是第一次配置该区域,则可以看到以下系统消息:


    my-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. 创建新的区域配置。

    此过程使用缺省设置。


    zonecfg:my-zone> create
    
  4. 设置区域路径,在此过程中为 /export/home/my-zone


    zonecfg:my-zone> set zonepath=/export/home/my-zone
    

    对于 Solaris 10 10/08 发行版之前的发行版,不要为 ZFS 设置 zonepath

  5. 设置自动引导值。

    如果设置为 true,则在引导全局区域时将自动引导该区域。请注意,要自动引导区域,还必须启用区域服务 svc:/system/zones:default。缺省值为 false


    zonecfg:my-zone> set autoboot=true
    
  6. 为区域设置持久引导参数。


    zonecfg:my-zone> set bootargs="-m verbose"
    
  7. 指定一个 CPU 专用于该区域。


    zonecfg:my-zone> add dedicated-cpu
    
    1. 设置 CPU 数量。


      zonecfg:my-zone:dedicated-cpu> set ncpus=1-2
      
    2. (可选)设置重要性。


      zonecfg:my-zone:dedicated-cpu> set importance=10
      

      缺省值为 1

    3. 结束指定。


      zonecfg:my-zone:dedicated-cpu> end
      
  8. 修改缺省权限集。


    zonecfg:my-zone> set limitpriv="default,sys_time"
    

    该行添加了将系统时钟设置为缺省权限集的功能。

  9. 将调度类设置为 FSS


    zonecfg:my-zone> set scheduling-class=FSS
    
  10. 添加内存上限。


    zonecfg:my-zone> add capped-memory
    
    1. 设置内存上限。


      zonecfg:my-zone:capped-memory> set physical=50m
      
    2. 设置交换内存上限。


      zonecfg:my-zone:capped-memory> set swap=100m
      
    3. 设置锁定内存上限。


      zonecfg:my-zone:capped-memory> set locked=30m
      
    4. 结束内存上限指定。


      zonecfg:my-zone:capped-memory> end
      
  11. 添加文件系统。


    zonecfg:my-zone> add fs
    
    1. 设置文件系统的挂载点,在此过程中为 /usr/local


      zonecfg:my-zone:fs> set dir=/usr/local
      
    2. 指定全局区域中的 /opt/zones/my-zone/local 将要在所配置的区域中挂载为 /usr/local


      zonecfg:my-zone:fs> set special=/opt/zones/my-zone/local
      

      在非全局区域中,/usr/local 文件系统是可读写的。

    3. 指定文件系统类型,在此过程中为 lofs


      zonecfg:my-zone:fs> set type=lofs
      

      此类型指明了内核与文件系统的交互方式。

    4. 结束文件系统指定。


      zonecfg:my-zone:fs> end
      

    可多次执行此步骤来添加多个文件系统。

  12. (可选)设置 hostid


    zonecfg:my-zone> set hostid=80f0c086
    
  13. 在存储池 tank 中添加一个名为 sales 的 ZFS 数据集。


    zonecfg:my-zone> add dataset
    
    1. 指定指向 ZFS 数据集 sales 的路径。


      zonecfg:my-zone> set name=tank/sales
      
    2. 结束 dataset 指定。


      zonecfg:my-zone> end
      
  14. (仅用于稀疏根区域)添加一个从全局区域回送挂载的共享文件系统。

    要执行此步骤来创建一个没有任何共享文件系统的完全根区域。请参见磁盘空间需求中对完全根区域的讨论。


    zonecfg:my-zone> add inherit-pkg-dir
    
    1. 指定在正在配置的区域中以只读模式挂载全局区域中的 /opt/sfw


      zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw
      

      注 –

      区域的打包数据库将更新,以反映软件包。使用 zoneadm 安装区域之后,便不能修改或删除这些资源。


    2. 结束 inherit-pkg-dir 指定。


      zonecfg:my-zone:inherit-pkg-dir> end
      

    可多次执行此步骤来添加多个共享文件系统。


    注 –

    如果要创建一个完全根区域,并且已经使用 inherit-pkg-dir 添加了缺省的共享文件系统资源,则必须使用 zonecfg 删除这些缺省的 inherit-pkg-dir 资源,才能安装区域:

    • zonecfg:my-zone> remove inherit-pkg-dir dir=/lib

    • zonecfg:my-zone> remove inherit-pkg-dir dir=/platform

    • zonecfg:my-zone> remove inherit-pkg-dir dir=/sbin

    • zonecfg:my-zone> remove inherit-pkg-dir dir=/usr


  15. (可选)如果要创建一个专用 IP 区域,请设置 ip-type


    zonecfg:my-zone> set ip-type=exclusive
    

    注 –

    add net 步骤中只会指定物理设备类型。


  16. 添加网络接口。


    zonecfg:my-zone> add net
    
    1. (仅共享 IP)设置网络接口的 IP 地址,在此过程中为 192.168.0.1


      zonecfg:my-zone:net> set address=192.168.0.1
      
    2. 设置网络接口的物理设备类型,在此过程中为 hme 设备。


      zonecfg:my-zone:net> set physical=hme0
      
    3. Solaris 10 10/08:(可选,仅共享 IP)在此过程中,为网络接口设置缺省路由器 10.0.0.1


      zonecfg:my-zone:net> set defrouter=10.0.0.1
      
    4. 结束指定。


      zonecfg:my-zone:net> end
      

    可多次执行此步骤来添加多个网络接口。

  17. 添加设备。


    zonecfg:my-zone> add device
    
    1. 设置设备匹配,在此过程中为 /dev/sound/*


      zonecfg:my-zone:device> set match=/dev/sound/*
      
    2. 结束设备指定。


      zonecfg:my-zone:device> end
      

    可多次执行此步骤来添加多个设备。

  18. 使用属性名称添加区域范围的资源控制。


    zonecfg:my-zone> set max-sem-ids=10485200
    

    可多次执行此步骤来添加多个资源控制。

  19. 使用 attr 资源类型来添加注释。


    zonecfg:my-zone> add attr
    
    1. 将名称设置为 comment


      zonecfg:my-zone:attr> set name=comment
      
    2. 将类型设置为 string


      zonecfg:my-zone:attr> set type=string
      
    3. 将值设置为说明区域的注释。


      zonecfg:my-zone:attr> set value="This is my work zone."
      
    4. 结束 attr 资源类型指定。


      zonecfg:my-zone:attr> end
      
  20. 检验区域的配置。


    zonecfg:my-zone> verify
    
  21. 提交区域的配置。


    zonecfg:my-zone> commit
    
  22. 退出 zonecfg 命令。


    zonecfg:my-zone> exit
    

    请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit

在命令行中使用多个子命令

提示 –

zonecfg 命令还支持通过同一个 shell 调用多条子命令,这些子命令放在引号中并用分号进行分隔。


global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone"

下一步执行的操作

请参见安装和引导区域来安装已提交的区域配置。

配置多个区域的脚本

可以使用此脚本在系统中配置和引导多个区域。此脚本采用以下参数:

要执行此脚本,您必须是全局区域中的全局管理员。全局管理员在全局区域中拥有超级用户权限或承担主管理员角色。


#!/bin/ksh
#
# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#ident	"%Z%%M%	%I%	%E% SMI"

if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
		echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir>"
		exit 2
fi

if [[ ! -d $3 ]]; then
		echo "$3 is not a directory"
		exit 1
fi

nprocs=`psrinfo | wc -l`
nzones=$1
prefix=$2
dir=$3

ip_addrs_per_if=`ndd /dev/ip ip_addrs_per_if`
if [ $ip_addrs_per_if -lt $nzones ]; then
		echo "ndd parameter ip_addrs_per_if is too low ($ip_addrs_per_if)"
		echo "set it higher with 'ndd -set /dev/ip ip_addrs_per_if <num>"
		exit 1
fi

i=1
while [ $i -le $nzones ]; do
	zoneadm -z $prefix$i list > /dev/null 2>&1
	if [ $? != 0 ]; then
		echo configuring $prefix$i
		F=$dir/$prefix$i.config
		rm -f $F
		echo "create" > $F
		echo "set zonepath=$dir/$prefix$i" >> $F
		zonecfg -z $prefix$i -f $dir/$prefix$i.config 2>&1 | \
		    sed 's/^/    /g' 
	else
		echo "skipping $prefix$i, already configured"
	fi
	i=`expr $i + 1`
done

i=1
while [ $i -le $nzones ]; do
	j=1
	while [ $j -le $nprocs ]; do
		if [ $i -le $nzones ]; then
			if [ `zoneadm -z $prefix$i list -p | \
			    cut -d':' -f 3` != "configured" ]; then
				echo "skipping $prefix$i, already installed"
			else
				echo installing $prefix$i
				mkdir -pm 0700 $dir/$prefix$i
				chmod 700 $dir/$prefix$i
				zoneadm -z $prefix$i install > /dev/null 2>&1 &
				sleep 1	# spread things out just a tad
			fi
		fi
		i=`expr $i + 1`
		j=`expr $j + 1`
	done
	wait
done

i=1
while [ $i -le $nzones ]; do
	echo setting up sysid for $prefix$i
	cfg=$dir/$prefix$i/root/etc/sysidcfg
	rm -f $cfg
	echo "network_interface=NONE {hostname=$prefix$i}" > $cfg
	echo "system_locale=C" >> $cfg
	echo "terminal=xterms" >> $cfg
	echo "security_policy=NONE" >> $cfg
	echo "name_service=NONE" >> $cfg
	echo "timezone=US/Pacific" >> $cfg
	echo "root_password=Qexr7Y/wzkSbc" >> $cfg  # 'l1a'
	i=`expr $i + 1`
done

i=1
para=`expr $nprocs \* 2`
while [ $i -le $nzones ]; do
	date
	j=1
	while [ $j -le $para ]; do
		if [ $i -le $nzones ]; then
			echo booting $prefix$i
			zoneadm -z $prefix$i boot &
		fi
		j=`expr $j + 1`
		i=`expr $i + 1`
	done
	wait
done

Procedure如何显示非全局区域的配置

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 显示区域配置。


    global# zonecfg -z zonename info
    

使用 zonecfg 命令修改区域配置

也可使用 zonecfg 命令执行以下操作:

Procedure如何修改区域配置中的资源类型

可以选择一个资源类型并修改该资源的指定。

请注意,在使用 zoneadm 安装区域之后,不能修改或删除 inherit-pkg-dir 目录中软件包的内容。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 选择要修改的区域,在此过程中为 my-zone


    global# zonecfg -z my-zone
    
  3. 选择要更改的资源类型,例如,资源控制。


    zonecfg:my-zone> select rctl name=zone.cpu-shares
    
  4. 删除当前值。


    zonecfg:my-zone:rctl> remove value (priv=privileged,limit=20,action=none)
    
  5. 添加新值。


    zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none)
    
  6. 结束修改后的 rctl 的指定。


    zonecfg:my-zone:rctl> end
    
  7. 提交区域的配置。


    zonecfg:my-zone> commit
    
  8. 退出 zonecfg 命令。


    zonecfg:my-zone> exit
    

    请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit

    zonecfg 提交的更改在下次引导区域时生效。

ProcedureSolaris 10 8/07:如何清除区域配置中的属性类型

使用此过程可以重置一个独立属性。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 选择要修改的区域,在此过程中为 my-zone


    global# zonecfg -z my-zone
    
  3. 清除要更改的属性,在此过程中为现有的池关联。


    zonecfg:my-zone> clear pool
    
  4. 提交区域的配置。


    zonecfg:my-zone> commit
    
  5. 退出 zonecfg 命令。


    zonecfg:my-zone> exit
    

    请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit

    zonecfg 提交的更改在下次引导区域时生效。

ProcedureSolaris 10 3/05 至 Solaris 10 11/06:如何修改区域配置中的属性类型

使用此过程可以重置一个独立属性,该独立属性没有其他相关属性要配置。例如,要删除现有的池关联,您可以将 pool 资源重置为 null

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 选择要修改的区域,在此过程中为 my-zone


    global# zonecfg -z my-zone
    
  3. 重置要更改的属性,在此过程中为现有的池关联。


    zonecfg:my-zone> set pool=""
    
  4. 提交区域的配置。


    zonecfg:my-zone> commit
    
  5. 退出 zonecfg 命令。


    zonecfg:my-zone> exit
    

    请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit

    zonecfg 提交的更改在下次引导区域时生效。

ProcedureSolaris 10 8/07:如何重命名区域

可以使用此过程对处于已配置状态或已安装状态的区域进行重命名。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 选择要重命名的区域,在此过程中为 my-zone


    global# zonecfg -z my-zone
    
  3. 例如,将区域名称更改为 newzone


    zonecfg:my-zone> set zonename=newzone
    
  4. 提交更改。


    zonecfg:newzone> commit
    
  5. 退出 zonecfg 命令。


    zonecfg:newzone> exit
    

    zonecfg 提交的更改在下次引导区域时生效。

Procedure如何在区域中添加专用设备

以下过程说明如何在非全局区域配置中放置扫描设备。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 添加设备。


    zonecfg:my-zone> add device
    
  3. 设置设备匹配,在此过程中为 /dev/scsi/scanner/c3t4*


    zonecfg:my-zone:device> set match=/dev/scsi/scanner/c3t4*
    
  4. 结束设备指定。


    zonecfg:my-zone:device> end
    
  5. 退出 zonecfg 命令。


    zonecfg:my-zone> exit
    

Procedure如何在全局区域中设置 zone.cpu-shares

可以使用此过程在全局区域中永久设置共享。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用 zonecfg 命令。


    # zonecfg -z global
    
  3. 为全局区域设置 5 个份额。


    zonecfg:global> set cpu-shares=5
    
  4. 退出 zonecfg


    zonecfg:global> exit
    

使用 zonecfg 命令恢复或删除区域配置

使用 zonecfg(1M) 中所述的 zonecfg 命令可以恢复或删除区域配置。

Procedure如何恢复区域配置

当使用 zonecfg 实用程序配置区域时,请使用 revert 子命令来撤消对区域配置执行的资源设置。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在配置名为 tmp-zone 的区域时,键入 info 查看您的配置:


    zonecfg:tmp-zone> info
    

    配置的 net 资源段显示如下:


    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    net:
            address: 192.168.0.1
            physical: eri0
    device
            match: /dev/pts/*
    .
    .
    .
  3. 删除网络地址:


    zonecfg:tmp-zone> remove net address=192.168.0.1
    
  4. 检验 net 条目是否已被删除。


    zonecfg:tmp-zone> info
    

    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    device
            match: /dev/pts/*
    .
    .
    .
  5. 键入 revert


    zonecfg:tmp-zone> revert
    
  6. 对下面的问题回答是:


    Are you sure you want to revert (y/[n])? y
    
  7. 检验网络地址是否再次出现:


    zonecfg:tmp-zone> info
    

    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    net:
            address: 192.168.0.1
            physical: eri0
    device
            match: /dev/pts/*
    .
    .
    .

Procedure如何删除区域配置

使用带有 delete 子命令的 zonecfg,可以从系统中删除区域配置。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用以下两种方法之一来删除区域 a-zone 的配置:

    • 使用 -F 选项强制执行操作:


      global# zonecfg -z a-zone delete -F
      
    • 对系统提示回答是,从而以交互方式删除区域:


      global# zonecfg -z a-zone delete
      Are you sure you want to delete zone a-zone (y/[n])? y
      

第 19 章 关于安装、停止、克隆和卸载非全局区域(概述)

本章介绍如何在您的 Solaris 系统上安装区域,同时还介绍管理虚拟平台和应用程序环境的两个进程,zoneadmdzsched。此外,还提供了有关停止、重新引导、克隆和卸载区域的信息。

本章包含以下主题:

有关如何克隆、安装和引导非全局区域,或者停止或卸载非全局区域,请参见第 20 章

有关 lx 标记区域安装的信息,请参见第 34 章第 35 章

本章新增内容

Solaris 10 11/06: 现在可以克隆非全局区域。请参见Solaris 10 11/06:在同一系统中克隆非全局区域

Solaris 10 8/07: 还添加了有关引导参数的信息。请参见Solaris 10 8/07:区域引导参数

Solaris 10 5/09:已实现了 ZFS 克隆。当源 zonepath 和目标 zonepath 都驻留在 ZFS 上并且位于同一个池中,zoneadm clone 命令会自动使用 ZFS 来克隆区域。如果两个 zonepath 都是非 ZFS,或者如果一个是 ZFS,另一个是非 ZFS,代码将会使用现有的复制技术。

区域安装和管理概念

zoneadm(1M) 手册页中所述的 zoneadm 命令是用于安装和管理非全局区域的主要工具。必须从全局区域运行使用 zoneadm 命令的操作。可以使用 zoneadm 命令执行以下任务:

有关区域安装和检验过程,请参见第 20 章zoneadm(1M) 手册页。有关 zoneadm list 命令支持的选项,另请参阅 zoneadm(1M) 手册页。有关区域配置过程,请参见第 18 章zonecfg(1M) 手册页。区域状态在非全局区域状态模型中介绍。

如果您打算为区域生成 Solaris 审计记录,请在安装非全局区域之前先阅读在区域中使用 Solaris 审计

区域构建

本节适用于初始区域构建,不适用于现有区域的克隆。

在配置了非全局区域之后,应检验是否可以在系统配置中安全安装此区域。然后您可以安装此区域。区域的根文件系统所需的文件由系统安装在区域的根路径下。

非全局区域是使用开放式网络配置 (generic_open.xml) 安装的。网络配置类型在《系统管理指南:基本管理》中的第 19  章 “管理服务(任务)”中进行了介绍。区域管理员可以使用 netservices 命令将区域切换到受限的网络配置 (generic_limited_net.xml)。可通过使用 SMF 命令启用或禁用特定服务。

成功安装了区域之后,便可进行初始登录和引导。

在 Solaris 安装中用于初始安装软件包的方法也可用于填充非全局区域。

全局区域必须包含填充非全局区域所需的所有数据。填充区域包括创建目录、复制文件以及提供配置信息。

从全局区域中填充区域时,只会使用在全局区域中通过软件包创建的信息或数据。有关更多信息,请参见 pkgparam(1)pkginfo(4) 手册页。

安装区域时,不引用或复制以下数据:

此外,以下信息类型(如果在全局区域中存在)也不会复制到正在安装的区域:

如果使用 Solaris 审计,则可能需要对从全局区域复制的审计文件进行修改。有关更多信息,请参见在区域中使用 Solaris 审计

不能在非全局区域中配置以下功能:

当区域从已安装状态转换为就绪状态时,便会添加在配置文件中指定的资源。系统会指定唯一的区域 ID。将挂载文件系统,设置网络接口并配置设备。转换为就绪状态之后,虚拟平台便可开始运行用户进程。在就绪状态下,会启动 zsched zoneadmd 进程来管理虚拟平台。

处于就绪状态的区域中不存在任何正在执行的用户进程。就绪区域与正在运行的区域之间的主要差异在于,正在运行的区域中至少有一个进程正在执行。有关更多信息,请参见 init(1M) 手册页。

zoneadmd 守护进程

区域管理守护进程 zoneadmd 是管理区域虚拟平台的主要进程。此守护进程还负责管理区域引导和关闭。对于系统上的每个活动(就绪、正在运行或正在关闭)区域,都有一个 zoneadmd 进程在运行。

zoneadmd 守护进程将按照区域配置中指定的方式设置区域。此过程包括以下操作:

除非 zoneadmd 守护进程已经运行,否则它会由 zoneadm 自动启动。因此,如果此守护进程因某种原因没有运行,则调用 zoneadm 来管理区域时将重新启动 zoneadmd

zoneadmd 守护进程的手册页为 zoneadmd(1M)。

zsched 区域调度程序

活动区域是指处于就绪状态、正在运行状态或正在关闭状态的区域。每个活动区域都有一个关联的内核进程 zsched。代表区域执行操作的内核线程由 zsched 所拥有。通过 zsched 进程,区域子系统可跟踪每个区域的内核线程。

区域应用程序环境

zoneadm 命令用于创建区域应用程序环境。

在首次引导非全局区域之前,必须创建区域的内部配置。内部配置指定要使用的命名服务、缺省语言环境 (locale) 和时区、区域的超级用户口令,以及应用程序环境的其他方面。通过响应出现在区域控制台上的一系列提示来建立应用程序环境,如内部区域配置中所述。请注意,可以独立于全局设置来配置区域的缺省语言环境和时区。

关于停止、重新引导和卸载区域

本节概述了停止、重新引导和卸载区域的过程,还提供了区域在需要时无法停止的疑难解答提示。

停止区域

zoneadm halt 命令用于删除区域的应用程序环境和虚拟平台。然后,区域便恢复为已安装状态。将中止所有进程,取消设备配置,销毁网络接口,卸载文件系统,以及销毁内核数据结构。

halt 命令在区域内运行任何关闭脚本。要关闭区域,请参见如何使用 zlogin 关闭区域

停止操作失败时,请参见区域无法停止

重新引导区域

zoneadm reboot 命令用于重新引导区域。区域将停止,然后再次引导。重新引导区域之后,区域 ID 会更改。

Solaris 10 8/07:区域引导参数

区域支持用于 zoneadm bootreboot 命令的以下引导参数:

以下定义适用:

-i altinit

选择一个备用可执行文件作为第一个进程。altinit 必须是可执行文件的有效路径。缺省的第一个进程在 init(1M) 中进行了介绍。

-m smf_options

控制 SMF 的引导行为。有两类选项:恢复选项和消息选项。消息选项可确定启动期间显示的消息类型和数量。服务选项可确定用于引导系统的服务。

恢复选项包括:

debug

打印标准的每个服务的输出以及所有要记录的 svc.startd 消息。

milestone=milestone

引导至由给定里程碑定义的子图。合法里程碑包括 nonesingle-usermulti-usermulti-user-serverall

消息选项包括:

quiet

打印标准的每个服务的输出以及需要管理员介入的错误消息。

verbose

打印标准的每个服务的输出以及提供更多信息的消息。

-s

仅引导至里程碑 svc:/milestone/single-user:default。此里程碑相当于 init 级别 s

有关用法示例,请参见如何引导区域如何在单用户模式下引导区域

有关 Solaris 服务管理工具 (service management facility, SMF) 和 init 的信息,请参见《系统管理指南:基本管理》中的第 18  章 “管理服务(概述)”svc.startd(1M)init(1M)

区域 autoboot

如果您在区域配置中将 autoboot 资源属性设置为 true,则引导全局区域时便会自动引导此区域。缺省设置为 false

请注意,要自动引导区域,还必须启用区域服务 svc:/system/zones:default

卸载区域

zoneadm uninstall 命令用于卸载区域根文件系统下的所有文件。除非还使用了 -F(强制)选项,否则该命令会提示您确认此操作以继续执行。使用 uninstall 命令时应谨慎,因为此操作是无法恢复的。

Solaris 10 11/06 及更高版本:关于克隆非全局区域

通过克隆可以复制系统上现有的已配置和已安装区域,从而在同一系统上快速置备新区域。请注意,对于在不同的区域中不能相同的组件,必须至少要为其重置属性和资源。因此,zonepath 必须总是变化的。此外,对于共享 IP 区域,任何网络资源中的 IP 地址必须不同。对于专用 IP 区域,任何网络资源的物理属性必须不同。

Solaris 10 5/09:当源 zonepath 和目标 zonepath 都驻留在 ZFS 上并且位于同一个池中时,zoneadm clone 命令会自动使用 ZFS 来克隆区域。使用 ZFS 克隆时,在数据被修改前并不实际复制数据。因此,初始克隆只需极少的时间。zoneadm 命令会捕获源 zonepath 的 ZFS 快照,并设置目标 zonepath。系统将快照命名为 SUNWzoneX,其中 X 是用于区分多个快照的唯一 ID。目标区域的 zonepath 用于命名 ZFS 克隆。将执行软件清点,以使系统可对将来使用的快照进行验证。为了多次克隆源区域,zoneadm 命令允许您指定应使用现有快照。系统将验证现有快照在目标中是否可用。

不能使用手动快照,例如《Oracle Solaris ZFS 管理指南》中的“创建和销毁 ZFS 快照”中介绍的类型。这种类型的快照缺少用于执行验证的数据。

可能需要克隆源区域许多次,但并不需要针对每个克隆创建新快照。使用 clone 子命令的 -s 参数,您可以指定应该使用从先前的克隆捕获的现有快照。请参见Solaris 10 5/09:如何从现有快照克隆区域

由于快照的内容表示过去某个时间点的区域的信息,因此有可能自捕获快照以来系统已经以某种方式进行了更新,例如通过进行修补或升级。区域已升级的事实可能会导致该快照不能有效用作目前系统上的区域。


注 –

可以指定复制 ZFS zonepath 而不是进行 ZFS 克隆(尽管可按这种方式来克隆源)。


有关更多信息,请参见Solaris 10 11/06:在同一系统中克隆非全局区域

第 20 章 安装、引导、停止、卸载和克隆非全局区域(任务)

本章介绍如何安装和引导非全局区域,并提供了使用克隆在同一系统上安装区域的方法。此外,还介绍了与安装相关的其他任务(例如停止、重新引导和卸载区域),同时提供了从系统中完全删除区域的过程。

有关区域安装和相关操作的常规信息,请参见第 19 章

有关 lx 标记区域安装和克隆的信息,请参见第 34 章第 35 章

区域安装(任务图)

任务 

说明 

参考 

(可选)在安装区域之前检验已配置的区域。 

确保区域满足安装要求。如果您跳过此过程,则会在安装区域时自动执行检验。 

(可选)如何在安装已配置的区域之前检验该区域

安装已配置的区域。 

安装处于已配置状态的区域。 

如何安装已配置的区域

Solaris 8/07: 获取区域的通用唯一标识符 (universally unique identifier, UUID)。 

在安装区域时指定的这个单独的标识符是标识区域的另一种方法。 

Solaris 10 8/07:如何获取已安装的非全局区域的 UUID

(可选)将已安装的区域转换为就绪状态。 

如果您要引导区域并立即使用,则可以跳过此过程。 

(可选)如何将已安装区域转换为就绪状态

引导区域。 

引导区域时会将此区域置于运行状态。既可以从就绪状态引导区域,也可以从已安装状态引导区域。请注意,首次在引导后登录到区域时,必须执行内部区域配置。 

如何引导区域内部区域配置执行初始内部区域配置

在单用户模式下引导区域。 

仅引导至里程碑 svc:/milestone/single-user:default。此里程碑相当于 init 级别 s。请参见 init(1M)svc.startd(1M) 手册页。

如何在单用户模式下引导区域

安装和引导区域

使用 zoneadm(1M) 手册页中所述的 zoneadm 命令可以为非全局区域执行安装任务。要执行区域安装,您必须是全局管理员。本章中的示例使用在配置、检验并提交区域中建立的区域名称和区域路径。

Procedure(可选)如何在安装已配置的区域之前检验该区域

可以在安装区域之前对其进行检验。如果您跳过此过程,则会在安装区域时自动执行检验。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用 -z 选项、区域名称和 verify 子命令检验名为 my-zone 的已配置区域。


    global# zoneadm -z my-zone verify
    

    将显示以下有关区域路径检验的消息:


    Warning: /export/home/my-zone does not exist, so it cannot be verified.
    When 'zoneadm install' is run, 'install' will try to create
    /export/home1/my-zone, and 'verify' will be tried again,
    but the 'verify' may fail if:
    the parent directory of /export/home/my-zone is group- or other-writable
    or
    /export/home1/my-zone overlaps with any other installed zones.

    但是,如果显示错误消息并且无法检验区域,请执行消息中指定的更正操作,并再次尝试执行此命令。

    如果未显示错误消息,则可以安装区域。

Procedure如何安装已配置的区域

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -z install 选项的 zoneadm 命令安装已配置的区域 my-zone


    global# zoneadm -z my-zone install
    

    当区域的根文件系统所需的文件和目录安装在区域的根路径下时,您将看到各种消息。

  3. (可选)如果显示错误消息并且无法安装区域,请键入以下命令来获取区域状态:


    global# zoneadm -z my-zone list -v
    
    • 如果显示为已配置状态,请执行消息中指定的更正操作,并再次尝试执行 zoneadm install 命令。

    • 如果显示为未完成状态,请首先执行以下命令:


      global# zoneadm -z my-zone uninstall
      

      然后执行消息中指定的更正操作,并再次尝试执行 zoneadm install 命令。

  4. 当安装完成时,使用带有 -i-v 选项的 list 子命令来列出已安装的区域并检验状态。


    global# zoneadm list -iv
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /export/home/my-zone           native     shared
故障排除

如果区域安装中断或失败,则此区域会处于未完成状态。请使用 uninstall -F 将此区域重置为已配置状态。

接下来的操作

缺省情况下,此区域安装时使用了《系统管理指南:基本管理》中的第 19  章 “管理服务(任务)”中介绍的开放式网络配置。在登录到该区域后,可以切换到开放式网络配置,或者启用或禁用个别服务。有关详细信息,请参见将非全局区域切换到其他网络服务配置

ProcedureSolaris 10 8/07:如何获取已安装的非全局区域的 UUID

安装区域时,会为其指定一个通用唯一标识符 (universally unique identifier, UUID)。通过将 zoneadmlist 子命令和 -p 选项一起使用,可以获取 UUID。UUID 是显示的第五个字段。

  1. 查看已安装区域的 UUID。


    global# zoneadm list -p
    

    将显示以下类似信息:


    0:global:running:/:
    6:my-zone:running:/export/home/my-zone:61901255-35cf-40d6-d501-f37dc84eb504

示例 20–1 如何在命令中使用 UUID


global# zoneadm -z my-zone -u 61901255-35cf-40d6-d501-f37dc84eb504 list -v

如果 -u uuid-match-z zonename 都存在,则先根据 UUID 执行匹配。如果找到具有指定 UUID 的区域,则使用该区域并忽略 -z 参数。如果找不到具有指定 UUID 的区域,则系统将按区域名称进行搜索。


关于 UUID

可以卸载区域,然后以相同的名称重新安装,但内容不同。也可以对区域进行重命名,而不更改内容。由于以上原因,UUID 比区域名称更可靠。

另请参见

有关更多信息,请参见 zoneadm(1M)libuuid(3LIB)

ProcedureSolaris 10 8/07:如何将已安装的非全局区域标记为未完成

如果对系统的管理性更改导致区域不可用或不一致,则可以将已安装区域的状态更改为未完成。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 将区域 testzone 标记为未完成。


    global# zoneadm -z testzone mark incomplete
    
  3. 使用带有 -i 选项和 -v 选项的 list 子命令检验状态。


    global# zoneadm list -iv
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /export/home/my-zone           native     shared
     -  testzone incomplete   /export/home/testzone          native     shared
将区域标记为未完成

-R root 选项可以与 zoneadmmarklist 子命令结合使用以指定备用引导环境。有关更多信息,请参见 zoneadm(1M)


注 –

将区域标记为未完成的操作是无法恢复的。可对标记为未完成的区域执行的唯一操作是卸载该区域,使其返回已配置状态。请参见如何卸载区域


Procedure(可选)如何将已安装区域转换为就绪状态

转换为就绪状态可使虚拟平台做好开始运行用户进程的准备。处于就绪状态的区域中没有执行任何用户进程。

如果您要引导区域并立即使用,则可以跳过此过程。引导区域时便会自动从就绪状态进行转换。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -z 选项、区域名称 my-zone 以及 ready 子命令的 zoneadm 命令将区域转换为就绪状态。


    global# zoneadm -z my-zone ready
    
  3. 在提示符下,使用带有 -v 选项的 zoneadm list 命令来检验状态。


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     1  my-zone  ready        /export/home/my-zone           native     shared

    请注意,系统已指定唯一的区域 ID 1

Procedure如何引导区域

引导区域会将该区域置于运行状态。既可以从就绪状态引导区域,也可以从已安装状态引导区域。处于已安装状态的区域经透明引导,会从就绪状态转换为正在运行状态。允许登录到处于正在运行状态下的区域。


提示 –

请注意,首次登录到区域时,即会执行内部区域配置。这在内部区域配置中介绍。

如果您打算使用 /etc/sysidcfg 文件来执行初始区域配置(如如何使用 /etc/sysidcfg 文件执行初始区域配置中所述),请创建 sysidcfg 文件并将其放入区域的 /etc 目录中,然后再引导区域。


要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -z 选项、区域名称 my-zone 以及 boot 子命令的 zoneadm 命令引导区域。


    global# zoneadm -z my-zone boot
    
  3. 当引导完成时,使用带有 -v 选项的 list 子命令来检验状态。


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     1  my-zone  running      /export/home/my-zone           native     shared

示例 20–2 为区域指定引导参数

使用 -m verbose 选项引导区域:


global# zoneadm -z my-zone boot -- -m verbose

使用 -m verbose 引导选项重新引导区域:


global# zoneadm -z my-zone reboot -- -m verbose

区域管理员使用 -m verbose 选项重新引导区域 my-zone


my-zone# reboot -- -m verbose

故障排除

如果显示一条消息,指出系统找不到要用于在区域配置中指定的 IP 地址的网络掩码,请参见引导区域时显示 netmasks 警告。请注意,此消息只是警告,而命令已成功执行。

Procedure如何在单用户模式下引导区域

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在单用户模式下引导区域。


    global# zoneadm -z my-zone boot -s
    

下一步执行的操作

有关如何登录到区域并执行初始内部配置,请参见第 21 章第 22 章

停止、重新引导、卸载、克隆和删除非全局区域(任务图)

任务 

说明 

参考 

停止区域。 

停止过程用于删除区域的应用程序环境和虚拟平台。此过程可将区域从就绪状态返回到已安装状态。有关如何干净地关闭区域,请参见如何使用 zlogin 关闭区域

如何停止区域

重新引导区域。 

重新引导过程会停止区域,然后再次引导它。 

如何重新引导区域

卸载区域。 

删除区域根文件系统中的所有文件。请慎重使用本过程。此操作无法撤消。

如何卸载区域

根据同一系统中某个现有区域的配置置备新的非全局区域。 

克隆区域是安装区域的另外一种更快速的方法。在安装新区域之前,仍然需要先对其进行配置。 

Solaris 10 11/06:在同一系统中克隆非全局区域

从系统中删除非全局区域。 

此过程将从系统中完全删除区域。 

从系统中删除非全局区域

停止、重新引导和卸载区域

Procedure如何停止区域

停止过程用于删除区域的应用程序环境和虚拟平台。有关如何干净地关闭区域,请参见如何使用 zlogin 关闭区域

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 列出系统上正在运行的区域。


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     1  my-zone  running      /export/home/my-zone           native     shared
  3. 使用带有 -z 选项、区域名称(例如 my-zone)以及 halt 子命令的 zoneadm 命令停止给定区域。


    global# zoneadm -z my-zone halt
    
  4. 再次列出系统上的区域来检验是否已停止 my-zone


    global# zoneadm list -iv
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /export/home/my-zone           native     shared
  5. 如果您要重新启动区域,请引导它。


    global# zoneadm -z my-zone boot
    
故障排除

停止操作失败时,请参见区域无法停止以获得疑难解答提示。

Procedure如何重新引导区域

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 列出系统上正在运行的区域。


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     1  my-zone  running      /export/home/my-zone           native     shared
  3. 使用带有 -z reboot 选项的 zoneadm 命令来重新引导区域 my-zone


    global# zoneadm -z my-zone reboot
    
  4. 再次列出系统上的区域来检验是否已重新引导 my-zone


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     2  my-zone  running      /export/home/my-zone           native     shared

    提示 –

    请注意,my-zone 的区域 ID 已更改。区域 ID 通常会在重新引导后更改。


Procedure如何卸载区域


注意 – 注意 –

使用此过程时应谨慎。删除区域根文件系统中的所有文件的操作是无法恢复的。


区域不能处于正在运行状态。uninstall 操作对于正在运行的区域无效。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 列出系统上的区域。


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /export/home/my-zone           native     shared
  3. 使用带有 -z uninstall 选项的 zoneadm 命令来删除区域 my-zone

    您还可以使用 -F 选项强制执行操作。如果未指定此选项,则系统将提示进行确认。


    global# zoneadm -z my-zone uninstall -F
    
  4. 再次列出系统上的区域来检验是否不再列出 my-zone


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
故障排除

如果区域卸载中断,则此区域停留在未完成状态。请使用 zoneadm uninstall 命令将此区域重置为已配置状态。

使用 uninstall 命令时应谨慎,因为此操作是无法恢复的。

Solaris 10 11/06:在同一系统中克隆非全局区域

克隆用于通过从源 zonepath 向目标 zonepath 复制数据来在系统上置备新区域。

从 Solaris 10 5/09 开始,当源 zonepath 和目标 zonepath 都驻留在 ZFS 上并且位于同一个池中时,zoneadm clone 命令会自动使用 ZFS 来克隆区域。但您可以指定,复制 ZFS zonepath 但不进行 ZFS 克隆。

Procedure如何克隆区域

在安装新区域之前,必须先对其进行配置。传递给 zoneadm create 子命令的参数是要克隆的区域名称。必须停止此源区域。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 停止要克隆的源区域,在此过程中该区域为 my-zone


    global# zoneadm -z my-zone halt
    
  3. 通过将源区域 my-zone 的配置导出到文件(例如 master),开始配置新区域。


    global# zonecfg -z my-zone export -f /export/zones/master
    

    注 –

    也可以通过使用如何配置区域中的过程而不是通过修改现有配置来创建新区域配置。如果使用此方法,请在创建区域后,直接跳到步骤 6。


  4. 编辑文件 master。对于在不同的区域中不能相同的组件,请为其设置不同的属性和资源。例如,您必须设置新的 zonepath。对于共享 IP 区域,必须更改任何网络资源中的 IP 地址。对于专用 IP 区域,必须更改任何网络资源的物理属性。

  5. 通过使用文件 master 中的命令创建新区域 zone1


    global# zonecfg -z zone1 -f /export/zones/master
    
  6. 通过克隆 my-zone 安装新区域 zone1


    global# zoneadm -z zone1 clone my-zone
    

    系统将显示:


    Cloning zonepath /export/home/my-zone...

    从 Solaris 10 5/09 开始,如果源 zonepath 位于 ZFS 池(例如 zeepool)中,系统会显示:


    Cloning snapshot zeepool/zones/my-zone@SUNWzone1
    Instead of copying, a ZFS clone has been created for this zone.
  7. 列出系统上的区域。


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /export/home/my-zone           native     shared
     -  zone1    installed    /export/home/zone1             native     shared
Solaris 10 5/09:克隆 ZFS 文件系统上的源 zonepath

如果 zoneadm 命令克隆位于自己的 ZFS 文件系统上的源 zonepath,则会执行以下操作:

ProcedureSolaris 10 5/09:如何从现有快照克隆区域

可以从克隆区域时最初捕获的现有快照多次克隆源区域。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 配置区域 zone2

  3. 指定要使用现有快照来创建 new-zone2


    global# zoneadm -z zone2 clone -s zeepool/zones/my-zone@SUNWzone1 my-zone
    

    系统将显示:


    Cloning snapshot zeepool/zones/my-zone@SUNWzone1

    zoneadm 命令从快照 SUNWzone1 中验证软件并克隆快照。

  4. 列出系统上的区域。


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /zeepool/zones/my-zone         native     shared
     -  zone1    installed    /zeepool/zones/zone1           native     shared
     -  zone2    installed    /zeepool/zones/zone2           native     shared

ProcedureSolaris 10 5/09:如何使用复制代替 ZFS 克隆

可以使用此过程指定复制 zonepath,从而阻止在 ZFS 文件系统上自动克隆区域。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 指定复制 ZFS 上的 zonepath 而不是进行 ZFS 克隆。


    global# zoneadm -z zone1 clone -m copy my-zone
    

从系统中删除非全局区域

本节中所述的过程会从系统中完全删除区域。

Procedure如何删除非全局区域

  1. 关闭区域 my-zone


    global# zlogin my-zone shutdown -y -g0 -i0
    
  2. 删除 my-zone 的根文件系统。


    global# zoneadm -z my-zone uninstall -F
    
  3. 删除 my-zone 的配置。


    global# zonecfg -z my-zone delete -F
    
  4. 列出系统上的区域来检验是否不再列出 my-zone


    global# zoneadm list -iv
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared

第 21 章 非全局区域登录(概述)

本章介绍如何从全局区域登录到区域。

本章包含以下主题:

有关过程和用法的信息,请参见第 22 章

zlogin 命令

安装区域之后,您必须登录到该区域来完成应用程序环境的配置。您还可以登录到区域来执行管理任务。除非使用 -C 选项连接到区域控制台,否则使用 zlogin 登录到区域会启动新任务。一个任务不能跨两个区域。

使用 zlogin 命令,可以从全局区域登录到任何处于正在运行状态或就绪状态的区域。


注 –

只能使用带有 -C 选项的 zlogin 命令登录到不处于运行状态的区域。


如何使用非交互模式访问区域中所述,可以通过提供要在区域内部运行的命令,在非交互模式下使用 zlogin 命令。但是,该命令或它所作用的所有文件都不能驻留在 NFS 上。如果命令的任意打开的文件或其地址空间的任意部分驻留在 NFS 上,则此命令将失败。地址空间包括可执行的命令本身以及命令的链接库。

只有全局区域中的全局管理员才能使用 zlogin 命令。有关更多信息,请参见 zlogin(1) 手册页。

内部区域配置

安装后,区域处于未配置状态。此时区域没有进行命名服务的内部配置,未设置语言环境和时区,也尚未执行各种其他的配置任务。因此,首次使用区域控制台登录时,会运行 sysidtool 程序。有关更多信息,请参见 sysidtool(1M) 手册页。

可以使用以下两种方法执行所需的配置:

非全局区域登录方法

本节介绍登录区域的方法。

区域控制台登录

每个区域都维护一个虚拟控制台 /dev/console。在控制台上执行操作称为控制台模式。区域控制台非常类似于系统上的串行控制台。即使重新引导区域,控制台的连接也仍然保持。有关如何区分控制台模式与登录会话(例如 telnet),请参见远程登录

可以使用带有 C 选项和 -zonenamezlogin 命令来访问区域控制台。区域不必处于运行状态。

区域内的进程可以打开并将消息写入控制台。如果 zlogin -C 进程退出,则其他进程便可访问控制台。

用户登录方法

要使用用户名登录到区域,请使用带有 l 选项、用户名以及 -zonenamezlogin 命令。例如,全局区域管理员可以通过为 zlogin 指定 -l 选项,以普通用户身份在非全局区域中登录:


global# zlogin -l user zonename

要以用户 root 身份登录,请使用不带选项的 zlogin 命令。

故障安全模式

如果出现登录问题,并且您无法使用 zlogin 命令或带有 -C 选项的 zlogin 命令访问区域,则可以选择另外一种方法。您可以使用带有 -S(安全)选项的 zlogin 命令来进入区域。仅当其他登录方式不成功时,才使用此模式来恢复损坏的区域。在这个最小环境中,可以诊断区域登录失败的原因。

远程登录

远程登录区域的能力取决于您确定的网络服务选择。缺省情况下,通过 rloginsshtelnet 的登录可正常运行。有关这些命令的更多信息,请参见 rlogin(1)ssh(1)telnet(1)

交互模式与非交互模式

zlogin 命令还提供了其他两种方法来访问区域以及在区域内部执行命令。这两种方法为交互模式和非交互模式。

交互模式

在交互模式下,会分配新的伪终端,以供在区域内使用。与允许独占访问控制台设备的控制台模式不同,在交互模式下,可以随时打开任意数量的 zlogin 会话。未提供要执行的命令时,便会激活交互模式。需要终端设备的程序(例如编辑器)在此模式下可正常运行。

非交互模式

非交互模式用于运行可管理区域的 shell 脚本。非交互模式不会分配新的伪终端。当您提供了要在区域内部运行的命令时,便会启用非交互模式。

第 22 章 登录到非全局区域(任务)

本章提供用于完成已安装区域的配置、从全局区域登录到某个区域以及关闭区域的过程。同时还介绍如何使用 zonename 命令来列显当前区域的名称。

有关区域登录进程的介绍,请参见第 21 章

初始区域引导与区域登录过程(任务图)

任务 

说明 

参考 

执行内部配置。 

登录到区域控制台或使用 /etc/sysidcfg 文件来执行初始区域配置。

执行初始内部区域配置

登录到区域。 

您可以使用交互模式分配伪终端或提供要在区域中运行的命令,通过控制台登录到区域。提供要运行的命令不会分配伪终端。当指向区域的连接被拒绝时,您还可以使用故障安全模式进行登录。 

登录到区域

退出非全局区域。 

从非全局区域断开。 

如何退出非全局区域

关闭区域。 

使用 shutdown 实用程序或脚本来关闭区域。

如何使用 zlogin 关闭区域

列显区域名称。 

列显当前区域的区域名称。 

列显当前区域的名称

执行初始内部区域配置

您必须使用以下方法之一来配置区域:


提示 –

执行完内部配置之后,最好复制非全局区域的配置。将来您可以使用此备份来恢复区域。以超级用户或主管理员的身份,将区域 my-zone 的配置列显到文件。以下示例使用名为 my-zone.config 的文件。


global# zonecfg -z my-zone export > my-zone.config

有关更多信息,请参见如何恢复单个非全局区域


Procedure如何登录到区域控制台以执行内部区域配置

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -C 选项和区域名称(在此过程中为 my-zone)的 zlogin 命令。


    global# zlogin -C my-zone
    
  3. 从其他终端窗口中引导区域。


    global# zoneadm -z my-zone boot
    

    将在 zlogin 窗口中显示以下类似信息:


    [NOTICE: Zone booting up]
  4. 首次登录到控制台时,系统会提示您回答一系列问题。将显示以下类似信息:


    SunOS Release 5.10 Version Generic 64-bit
    Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
    Use is subject to license terms.
    
    Hostname: my-zone
    Loading smf(5) service descriptions:
    Select a Language
    
         1. English
         2. es
         2. fr
    Please make a choice (0 - 1), or press h or ? for help:
    
    Select a Locale
    
          1. English (C - 7-bit ASCII)
          2. Canada (English) (UTF-8)
          4. U.S.A. (UTF-8)
          5. U.S.A. (en_US.ISO8859-1)
          6. U.S.A. (en_US.ISO8859-15)
          7. Go Back to Previous Screen
    Please make a choice (0 - 9), or press h or ? for help:
    
    What type of terminal are you using?
          1) ANSI Standard CRT
          2) DEC VT52
          3) DEC VT100
          4) Heathkit 19
          5) Lear Siegler ADM31
          6) PC Console
          7) Sun Command Tool
          8) Sun Workstation
          9) Televideo 910
          10) Televideo 925
          11) Wyse Model 50
          12) X Terminal Emulator (xterms)
          13) CDE Terminal Emulator (dtterm)
          14) Other
    Type the number of your choice and press Return:
    13
    .
    .
    .

    有关必须回答的问题的完整列表,请参见内部区域配置

  5. (可选)如果未按步骤 3 所述使用两个窗口,则可能已错过关于配置信息的初始提示。如果您在区域登录时看到的不是提示而是以下系统消息:


    [connected to zone zonename console]

    请按回车键再次显示提示。

    如果输入错误响应并尝试重新启动配置,则可能会在再次尝试此过程时遇到问题。这是因为 sysidtools 可以存储先前的响应。

    如果发生这种情况,请在全局区域中使用以下解决方法来重新启动配置过程。


    global# zlogin -S zonename /usr/sbin/sys-unconfig
    

    有关 sys-unconfig 命令的更多信息,请参见 sys-unconfig(1M) 手册页。

Procedure如何使用 /etc/sysidcfg 文件执行初始区域配置

Solaris 10 8/07: 添加了关键字nfs4_domain。示例文件显示此关键字。如果运行早期的发行版,下面的步骤 4 显示其他步骤。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在全局区域中,转到非全局区域的 /etc 目录:


    global# cd /export/home/my-zone/root/etc
    
  3. 创建 sysidcfg 文件并将其放入此目录中。

    将显示以下类似信息:

    • 对于共享 IP 区域:


      system_locale=C
      terminal=dtterm
      network_interface=primary {
      	        hostname=my-zone
      }
      security_policy=NONE
      name_service=NIS {
      	        domain_name=special.example.com
      	        name_server=bird(192.168.112.3)
      }
      nfs4_domain=domain.com
      timezone=US/Central
      root_password=m4qtoWN
    • 对于带有静态 IP 配置的专用 IP 区域:


      system_locale=C
      terminal=dtterm
      network_interface=primary {
               hostname=my-zone
               default_route=10.10.10.1
               ip_address=10.10.10.13
               netmask=255.255.255.0
      }
      nfs4_domain=domain.com
      timezone=US/Central
      root_password=m4qtoWN
    • 对于带有 DHCP 和 IPv6 选项的专用 IP 区域:


      system_locale=C
      terminal=dtterm
      network_interface=primary {
      	        dhcp protocol_ipv6=yes
      }
      security_policy=NONE
      name_service=DNS {
               domain_name=example.net
               name_server=192.168.224.11,192.168.224.33
      }
      nfs4_domain=domain.com
      timezone=US/Central
      root_password=m4qtoWN
  4. 如果运行 Solaris 10 8/07 之前的发行版,在 sysidcfg 文件中将没有关键字 nfs4_domain。缺省情况下,单独的模块将请求 nfsmapid 命令使用的 NFSv4 域参数。要完成脱离手动干预的初始区域配置,请编辑文件 default/nfs,取消对 NFSMAPID_DOMAIN 参数的注释,并将域设置为所需的 NFSv4 域:


    global# vi default/nfs
    		.
    		.
    		.
    		NFSMAPID_DOMAIN=domain
    

    在此目录中创建文件 .NFS4inst_state.domain,以表明已经设置 NFSv4 域:


    global# touch .NFS4inst_state.domain
    

    有关 NFSv4 域参数的更多信息,请参见 nfsmapid(1M) 手册页。

  5. 引导区域。

另请参见

有关更多信息,请参见 sysidcfg(4) 手册页。

登录到区域

使用 zlogin 命令,可以从全局区域登录到任何处于正在运行状态或就绪状态的区域。有关更多信息,请参见 zlogin(1) 手册页。

如以下过程中所述,您可以通过多种方法登录到区域。您还可以远程登录,如远程登录中所述。

Procedure如何登录到区域控制台

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -C 选项和区域名称(例如 my-zone)的 zlogin 命令。


    global# zlogin -C my-zone
    

    注 –

    如果您在发出 zoneadm boot 命令之后立即启动 zlogin 会话,则会显示区域的引导消息:


    SunOS Release 5.10 Version Generic 64-bit
    Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
    Use is subject to license terms.
    starting rpc services: rpcbind done.
    syslog service starting.
    The system is ready.

  3. 当显示区域控制台时,以 root 身份登录,按回车键,并在提示时键入超级用户口令。


    my-zone console login: root
    Password:

Procedure如何使用交互模式访问区域

在交互模式下,会分配新的伪终端以在区域内部使用。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 从全局区域登录到某个区域,例如 my-zone


    global# zlogin my-zone
    

    将显示以下类似信息:


    [Connected to zone 'my-zone' pts/2]
    Last login: Wed Jul  3 16:25:00 on console
    Sun Microsystems Inc. SunOS 5.10 Generic June 2004
  3. 键入 exit 关闭连接。

    将显示以下类似消息:


    [Connection to zone 'my-zone' pts/2 closed]

Procedure如何使用非交互模式访问区域

当用户提供要在区域内部运行的命令时,便会启用非交互模式。非交互模式不会分配新的伪终端。

请注意,命令或运行命令的所有文件都不能驻留在 NFS 上。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 从全局区域登录到 my-zone 区域并提供命令名称。

    在此使用命令 zonename


    global# zlogin my-zone zonename
    

    您会看到以下输出:


    my-zone

Procedure如何退出非全局区域

  1. 要从非全局区域断开连接,请使用下列方法之一。

    • 要退出区域非虚拟控制台:


      zonename# exit
      
    • 要从区域虚拟控制台断开连接,请使用波浪号 (~) 字符和句点:


      zonename# ~.
      

      将显示以下类似信息:


      [Connection to zone 'lx-zone' pts/6 closed]
另请参见

有关 zlogin 命令选项的更多信息,请参见 zlogin(1)

Procedure如何使用故障安全模式进入区域

当指向区域的连接被拒绝时,可以使用带有 -S 选项的 zlogin 命令进入区域的最小环境。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在全局区域中,使用带有-S 选项的 zlogin 命令来访问区域(例如 my-zone)。


    global# zlogin -S my-zone
    

Procedure如何使用 zlogin 关闭区域


注 –

如果在全局区域中运行 init 0 干净地关闭 Solaris 系统,也会在系统上的每个非全局区域中运行 init 0。请注意,init 0 在系统关闭之前不会警告本地和远程用户注销。


使用此过程可以干净地关闭区域。有关如何在不运行关闭脚本的情况下停止区域,请参见如何停止区域

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 登录到要关闭的区域,例如 my-zone,并将 shutdown 指定为实用程序的名称,将 init 0 指定为状态。


    global# zlogin my-zone shutdown -y -g0 -i 0
    

    您的站点可能具有自己的适用于特定环境的关闭脚本。

在非交互模式下使用 shutdown

当前,不能在非交互模式下使用 shutdown 命令将区域置于单用户状态。有关更多信息,请参见 CR 6214427。

您可以使用如何使用交互模式访问区域中介绍的交互式登录。

将非全局区域切换到其他网络服务配置

此区域安装时使用了《系统管理指南:基本管理》中的第 19  章 “管理服务(任务)”中介绍的开放式网络配置。您可以将区域切换到受限的网络配置,也可以在区域中启用或禁用个别服务。

Procedure如何将区域切换到受限的网络服务配置

  1. 从全局区域登录到某个区域(例如 my-zone)。


    global# zlogin my-zone
    
  2. 运行 netservices 命令,将区域切换到受限的网络配置。


    my-zone# /usr/sbin/netservices limited
    

    将显示以下类似信息。输入 y 响应提示,以重新启动 dtlogin


    restarting syslogd
    restarting sendmail
    dtlogin needs to be restarted. Restart now? [Y] y
    restarting dtlogin

Procedure如何在区域中启用特定服务

  1. 从全局区域登录到某个区域(例如 my-zone)。


    global# zlogin my-zone
    
  2. 运行 svcadm 命令,以使用资源上限设置守护进程启用物理内存控制。


    my-zone# svcadm enable svc:/system/rcap:default
    
  3. 列出服务,以验证是否已启用 rcapd


    my-zone# svcs -a
    .
    .
    .
    online    14:04:21 svc:/system/rcap:default
    .
    .
    .
    

列显当前区域的名称

zonename(1) 手册页中所述的 zonename 命令可列显当前区域的名称。以下示例显示了在全局区域中使用 zonename 时的输出。


# zonename
global

第 23 章 移动和迁移非全局区域(任务)

本章为 Solaris 10 11/06 发行版的新增内容。后续发行版中还添加了其他功能。

本章介绍如何:

从 Solaris 10 10/08 发行版开始,如果新主机具有相同版本或更高版本的与区域有关的软件包及关联修补程序,则使用带有 -u 选项的 zoneadm attach 可更新软件包的最小集合以使非全局区域在新主机上可用。如果新主机同时具有与源主机相比较高版本和较低版本的修补程序,那么在附加操作中不允许更新。

带有 -u 选项的 zoneadm attach 也启用了计算机类之间的迁移,例如从 sun4usun4v

从 Solaris 10 9/10 发行版开始,使用带有 -U 选项的 zoneadm attach 可更新区域的所有软件包,以便这些软件包匹配在此主机上新安装的非全局区域中查看的信息。任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并保留原样。此选项也可启用计算机类之间的自动迁移,例如从 sun4usun4v

作为正常修补的备选,该区域可在全局区域修补时分离,然后使用 -U 选项重新附加,以匹配全局区域的修补程序级别。

有关移动和迁移 lx 标记区域的信息,请参见第 37 章

Solaris 10 11/06:移动非全局区域

此过程用于通过更改 zonepath 将区域移动到同一系统上的新位置。必须停止该区域。新 zonepath 必须位于本地文件系统中。需要满足资源和属性类型中介绍的标准 zonepath 条件。

Procedure如何移动区域

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 停止要移动的区域,在此过程中为 db-zone


    global# zoneadm -z db-zone halt
    
  3. 使用带有 move 子命令的 zoneadm 命令将区域移动到新 zonepath,即 /export/zones/db-zone


    global# zoneadm -z db-zone move /export/zones/db-zone
    
  4. 检验路径。


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /export/home/my-zone           native     shared
     -  db-zone  installed    /export/zones/db-zone          native     shared

Solaris 10 11/06:将非全局区域迁移到其他计算机

请注意,使用 Solaris 10 5/08 发行版时,可以在将区域实际移动到其他计算机之前执行区域迁移试验。有关更多信息,请参见Solaris 10 5/08:关于在执行迁移之前验证区域迁移

关于迁移区域

自 Solaris 10 11/06 发行版以来,本节添加了新信息。

zonecfgzoneadm 命令可用于将现有的非全局区域从一个系统迁移到另一个系统。需要停止区域并使其与当前主机分离。zonepath 将移动到它所附加的目标主机。

以下限制适用于区域迁移:

要检验 Solaris 发行版本和计算机体系结构,请键入:


#uname -m

zoneadm detach 进程用于创建在其他系统上附加区域所需的信息。zoneadm attach 进程用于检验目标计算机是否具有托管区域所需的正确配置。

由于可以通过多种方式来使 zonepath 在新主机上可用,因此 zonepath 从一个系统到另一个系统的实际移动是由全局管理员执行的手动进程。

在附加到新系统时,区域处于已安装状态。

Procedure如何迁移非全局区域

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 停止要迁移的区域,在此过程中为 my-zone


    host1# zoneadm -z my-zone halt
    
  3. 分离该区域。


    host1# zoneadm -z my-zone detach
    

    分离的区域现在处于已配置状态。

  4. my-zonezonepath 移动到新主机。

    有关更多信息,请参见如何将 zonepath 移动到新主机

  5. 在新主机上,对该区域进行配置。


    host2# zonecfg -z my-zone
    

    您会看到以下系统消息:


    my-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  6. 要在新主机上创建区域 my-zone,请使用带有 -a 选项以及新主机上的 zonepathzonecfg 命令。


    zonecfg:my-zone> create -a /export/zones/my-zone
    
  7. (可选)查看配置。


    zonecfg:my-zone> info
    zonename: my-zone
    zonepath: /export/zones/my-zone
    autoboot: false
    pool:
    inherit-pkg-dir:
             dir: /lib
    inherit-pkg-dir:
             dir: /platform
    inherit-pkg-dir:
             dir: /sbin
    inherit-pkg-dir:
             dir: /usr
    net:
             address: 192.168.0.90
             physical: bge0
  8. 对配置进行所需的任何调整。

    例如,新主机上的网络物理设备有所不同,或者属于配置组成部分的设备在新主机上可能具有不同的名称。


    zonecfg:my-zone> select net physical=bge0
    zonecfg:my-zone:net> set physical=e1000g0
    zonecfg:my-zone:net> end
    
  9. 提交配置并退出。


    zonecfg:my-zone> commit
    zonecfg:my-zone> exit
    
  10. 使用下列方法之一在新主机上附加区域。

    • 附加区域,并进行验证检查。


      host2# zoneadm -z my-zone attach
      

      当发生下列一种或两种情况时,将向系统管理员通知所需执行的操作:

      • 新计算机中不存在所需软件包和修补程序。

      • 计算机之间的软件级别不同。

    • Solaris 10 10/08:附加区域,并进行验证检查,更新区域以匹配运行更高版本的相关软件包或在附加时具有不同计算机类的主机。


      host2# zoneadm -z my-zone attach -u
      

      提示 –

      Solaris 10 10/08:如果源系统运行的是较旧版本的 Solaris 系统,分离区域后它可能不会生成正确的软件包列表。要确保在目标上生成正确的软件包列表,必须从 zonepath 中删除 SUNWdetached.xml 文件。删除此文件将造成新软件包列表由目标系统生成。

      在 Solaris 10 5/09 及更高发行版中,则不必这样做。


    • Solaris 10 9/10:附加区域,并进行验证检查,同时更新该区域的所有软件包,以便这些软件包匹配在此主机上新安装的非全局区域中查看的信息。任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并保留原样。


      host2# zoneadm -z my-zone attach -U
      
    • Solaris 10 5/09 及更高版本:也会在附加过程中使用 -b 选项来回退指定的修补程序(正式或 IDR)。


      host2# zoneadm -z my-zone attach -u -b IDR246802-01 -b 123456-08
      

      请注意,可以独立于 -u- U 选项来使用 -b 选项。

    • 强制执行附加操作,而不执行验证。


      host2# zoneadm -z my-zone attach -F
      

      注意 – 注意 –

      -F 选项可以在不进行验证的情况下强制执行 attach。这在某些情况下(例如在群集环境中或在执行备份和恢复操作时)很有用,但要求对系统进行托管区域所需的正确配置。不正确的配置以后可能会导致未定义的行为。


Procedure如何将 zonepath 移动到新主机

创建 zonepath 的归档的方法有很多种。例如,可以使用cpio(1)pax(1) 手册页中所述的 cpiopax 命令。

将归档传送至新主机的方法也有很多种。用于将 zonepath 从源主机传送到目标主机的机制取决于本地配置。在某些情况下(如 SAN),zonepath 数据实际上可能未移动。可能只需对 SAN 进行重新配置,便可在新主机上显示 zonepath。在其他情况下,可能要将 zonepath 写入磁带,再将磁带邮寄至新站点。

由于上述原因,此步骤不能自动执行。系统管理员必须选择最合适的方法来将 zonepath 移动到新主机。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. zonepath 移动到新主机。您可以使用本过程中介绍的方法,也可以使用您选择的其他方法。


示例 23–1 使用 tar 命令归档和移动 zonepath

  1. host1 上创建 zonepathtar 文件,并使用 sftp 命令将其传送到 host2


    host1# cd /export/zones
    host1# tar cf my-zone.tar my-zone
    host1# sftp host2
    Connecting to host2...
    Password:
    sftp> cd /export/zones
    sftp> put my-zone.tar
    Uploading my-zone.tar to /export/zones/my-zone.tar
    sftp> quit
    
  2. host2上,解压缩 tar 文件。


    host2# cd /export/zones
    host2# tar xf my-zone.tar
    

有关更多信息,请参见 sftp(1)tar(1)


故障排除

有关以下问题的疑难解答信息,请参见使用 zoneadm attach 操作解决问题

接下来的操作

如果已复制数据而未重新配置 SAN,那么即使该区域现在处于已配置状态,zonepath 数据在源主机上也仍然可见。您可以在将数据移动到新主机后从源主机上手动删除 zonepath,也可以将该区域重新附加到源主机,并使用 zoneadm uninstall 命令删除 zonepath

Solaris 10 5/08:关于在执行迁移之前验证区域迁移

可以在将区域移动到新计算机之前使用“不执行”选项 -n 执行试验。

zoneadm detach 子命令与 -n 选项结合使用,可在运行的区域上生成清单,而不实际分离该区域。源系统中区域的状态不会改变。区域清单会被发送到 stdout。全局管理员可以将此输出定向到某一文件,或将此输出传输到远程命令以便立即在目标主机上进行验证。zoneadm attach 子命令与 -n 选项结合使用,可读取该清单并检验目标计算机是否具有托管区域所需的正确配置,而不实际执行附加。

在执行试验性附加之前,必在新主机上配置目标系统中的区域。

ProcedureSolaris 10 5/08:如何在执行迁移之前验证区域迁移

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用以下方法之一。

    • my-zone 的源主机上生成清单,并将输出传输到将立即验证目标主机的远程命令:


      global# zoneadm -z my-zone detach -n | ssh remotehost zoneadm attach -n -
      

      行尾的连字符 () 为路径指定 stdin

      验证结果是源主机屏幕的输出,为 stdout

    • my-zone 的源主机上生成清单,并将输出定向到某一文件:


      global# zoneadm -z my-zone detach -n > filename
      

      如何将 zonepath 移动到新主机中所述将清单复制到新主机系统,并执行验证:


      global# zoneadm attach -n path_to_manifest
      

      路径可以是 ,以便指定 stdin

从不可用的计算机上迁移区域

托管本地 Solaris 区域的计算机可能会变得不可用。但是,如果该区域所在的存储器(如 SAN)仍然可用,那么仍可以将区域成功迁移到新主机。可将区域的 zonepath 移动到新主机。在某些情况下(如 SAN),zonepath 数据实际上可能未移动。可能只需对 SAN 进行重新配置,便可在新主机上显示 zonepath。由于没有正确分离区域,因此必须首先使用 zonecfg 命令在新主机上创建该区域。完成此操作后,在新主机上附加该区域。尽管新主机将告知没有正确分离区域,但系统仍将尝试附加。

执行此任务的过程在如何迁移非全局区域的步骤 4 到 8 中介绍。另请参见如何将 zonepath 移动到新主机

将附加时更新 (Update on Attach) 用作修补解决方案

开发用于将区域迁移到不同系统的附加时更新还可以用于修补区域。此方法使全局区域能够更快可用。然后,系统管理员可以控制先进行更新的区域,并使这些区域在更新和引导重要性较低的区域之前运行。

以下过程更新所有修补程序以便这些区域如同系统上新安装的区域一样。

  1. 将修补程序包应用到全局区域之前,请分离所有的非全局区域。

  2. 将修补程序包应用到全局区域。

  3. 在应用修补程序包并重新引导系统后,请使用带有 -U 选项的 zoneadm attach 命令,以使非全局区域达到与全局区域相同的修补程序级别。

任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并且没有影响。

有关使用 patchadd 实用程序的快速修补解决方案的信息,请参见Solaris 10 10/09:可减少修补时间的区域并行修补

第 24 章 Solaris 10 9/10:将物理 Solaris 系统迁移到一个区域(任务)

可以使用“物理转换为虚拟 (physical-to-virtual, P2V)”功能将现有 Solaris 系统直接迁移到目标系统上的本地区域。

访问要迁移的系统

根据原始系统所执行的服务,全局管理员可能需要在安装区域后手动自定义区域。例如,分配给区域的权限可能需要进行修改。此操作无法自动完成。此外,由于所有系统服务都不在区域内工作,因此并非每个物理系统都是迁移到区域的良好候选。

请注意,如果要通过 P2V 安装的系统映像比目标主机操作系统的版本新,安装将会失败。

Procedure如何收集系统信息

从源系统收集所需的信息。

  1. 获取 hostname


    # hostname
    
  2. 获取 hostid


    # hostid
    

    另请参见主机 ID 仿真

  3. 获取 root 用户口令。

  4. 查看系统中正在运行的软件:


    # ps -eaf
    
  5. 检查系统网络配置:


    # ifconfig -a
    
  6. 查看使用的存储,例如查看 /etc/vfstab 的内容。

  7. 查看已被占用的本地磁盘存储量,该值可确定归档文件的大小:


    # df -k
    
  8. 确定系统中的软件包和修补程序:有关更多信息,请参见 pkginfo(1)

  9. 检查 /etc/system 的内容。

创建用于将 Solaris 系统直接迁移到区域的映像

可以使用 Flash Archiving 工具创建能够迁移到区域中的已安装系统的映像。

创建映像之前,可对系统进行完全配置,以包含将在区域中运行的所有软件。然后,安装区域时,安装程序将使用此映像。


注意 – 注意 –

如果在使用 ZFS 根的 Solaris 10 系统中创建了 Solaris Flash 归档文件或 flar,则在缺省情况下,flar 将成为实际的 ZFS 发送流,它可用于重新创建根池。此映像无法用于安装区域。您必须在系统拥有 ZFS 根的情况下使用显式的 cpiopax 归档文件创建 flar

使用带有 -L archiver 选项的 flarcreate 命令,指定 cpiopax 作为归档文件的方法。请参见下一过程中的步骤 4。


Procedure如何使用 flarcreate 创建映像

使用 flarcreate(1M) 手册页中所述 flarcreate 命令可创建系统映像。此示例过程使用 NFS 将 Flash 归档文件放到目标 Solaris 系统上,不过您可以使用任何方法移动该文件。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

  2. 登录要进行归档的源系统。

  3. 转到 root 目录。


    # cd /
    
  4. 使用 flarcreate 在源系统上创建名为 s10-system 的 Flash 归档映像文件,并将该归档文件放到目标系统上:


    source-system # flarcreate -S -n s10-system -L cpio /net/target/export/s10-system.flar
    Determining which filesystems will be included in the archive...
    Creating the archive...
    cpio: File size of "etc/mnttab" has
    increased by 435
    2068650 blocks
    1 error(s)
    Archive creation complete.

    目标计算机必须具有对 /export 文件系统的 root 写入访问权限。根据主机系统中文件系统的大小,归档文件可能达到几千兆字节大小,因此目标系统应提供足够的可用空间。


    提示 –

    在某些情况下,flarcreate 可能显示 cpio 命令的错误。通常,这些错误是诸如 File size of etc/mnttab has increased by 435 之类的消息。当这些消息与日志文件或反映系统状态的文件有关时,可将其忽略。请务必要彻底查看所有的错误消息。


创建归档文件的其他方法

您可以使用其他方法创建归档文件。安装程序可以接受以下归档文件格式:

请注意,安装程序只能接受使用归档实用程序创建的文件的目录,该实用程序可以保存和恢复文件权限、所有者和链接。

有关更多信息,请参见 cpio(1)pax(1)、bzip2(1)、gzip(1) 和 ufsdump(1M) 手册页。


注 –

如果使用除 Flash 归档文件以外的方法创建 P2V 的归档文件,则必须卸载源系统上依赖于处理器的 libc.so.1 挂载 lofs 的 (hwcap) 硬件功能库,然后才能创建归档文件。否则,安装有归档文件的区域在目标系统中可能无法引导。创建归档文件后,您可以在 /lib/libc.so.1 之上通过使用 lofs 和挂载 -O 选项重新挂载适当的硬件功能库。


source-system# unmount /lib/libc.so.1
source-system# mount -O -F lofs /lib/libc.so.1 

主机 ID 仿真

如果将应用程序从物理 Solaris 系统迁移到新系统上的区域,hostid 将更改为新计算机的 hostid

在某些情况下,应用程序会依赖原始的 hostid,从而不能更新应用程序配置。这种情况下,可以将区域配置为使用原始系统的 hostid。通过设置 zonecfg 属性来指定 hostid 即可实现这一目的,如如何配置区域中所述。使用的值应该是在原始系统上运行 hostid 命令时的输出。要查看已安装区域中的 hostid,也可以使用 hostid 命令。

有关主机 ID 的更多信息,请参见 hostid(1)

配置区域

通过使用如何配置区域过程,在目标系统上创建新的区域配置。


提示 –

如果您将要使用 CD 或 DVD 在新区域中安装应用程序,请在最初配置标记区域时,使用 add fs 在全局区域内添加对 CD 或 DVD 介质的只读访问权限。然后可以使用 CD 或 DVD 在标记区域中安装产品。有关更多信息,请参见如何在非全局区域中添加对 CD 或 DVD 介质的访问权限


安装区域

第 2 部分, Zoneszoneadm(1M) 手册页中所述 zoneadm 命令是用于安装和管理非全局区域的主要工具。使用 zoneadm 命令的操作必须从目标系统上的全局区域中运行。

除了从归档文件解压缩文件外,安装过程还会执行检查、必需的后处理以及其他功能,以确保将区域优化为在主机上运行。

可以使用 Solaris 系统的映像,因为该映像已进行过完全配置,具有要在区域中运行的所有软件。请参见创建用于将 Solaris 系统直接迁移到区域的映像

如果利用现有系统创建了 Solaris 系统归档文件,并在安装区域时使用 -p(保留 sysidcfg)选项,该区域将与用于创建映像的系统具有相同的标识。

如果在目标上安装区域时使用 -u (sys-unconfig) 选项,则生成的区域将不会配置主机名或名称服务。


注意 – 注意 –

必须指定 -p 选项或 -u 选项,否则会产生错误。


安装程序选项

选项 

说明 

-a

从中复制系统映像的归档文件位置。支持完整 Flash 归档文件以及 cpiogzip 压缩的 cpiobzip 压缩的 cpio 和级别 0 的 ufsdump。请参阅 SUNWsfman 软件包中提供的 gzip 手册页。

-d path

从中复制系统映像的目录位置。 

-d

-d 选项与破折号参数一起使用可指示要在 zonepath 中使用的现有目录布局。因此,如果管理员在安装前手动设置 zonepath 目录,则 -d 选项可用于指示该目录已经存在。

-p

保留系统标识。 

-s

无提示安装。 

-u

对区域执行 sys-unconfig

-v

详细输出。 

-a-d 选项相互排斥。-p-s-u-v 选项仅当提供 -a-d 时允许使用。

Procedure如何安装区域

  1. 成为超级用户或承担主管理员角色。

  2. 通过将 zoneadm 命令与 install -a 选项和归档文件路径结合使用,来安装已配置区域 s-zone


    global# zoneadm -z s-zone install -u -a /net/machine_name/s-system.flar
    

    安装完成时,将显示多条消息。这可能需要一些时间。

    当安装完成时,使用带有 -i-v 选项的 list 子命令来列出已安装的区域并检验状态。

故障排除

如果安装失败,请查看日志文件。如果成功,则日志文件位于区域内的 /var/log 中。如果失败,则日志文件位于全局区域内的 /var/tmp 中。

如果区域安装中断或失败,则此区域会处于未完成状态。请使用 uninstall -F 将此区域重置为已配置状态。

引导区域

Procedure如何引导区域

要执行此过程,您必须是全局区域中的全局管理员。

如果使用 -u 选项,则还必须使用 zlogin 命令访问区域控制台并按照执行初始内部区域配置中所述执行系统配置。

  1. 成为超级用户或承担主管理员角色。

  2. 使用带有 -z 选项、区域名称 s-zone 以及 boot 子命令的 zoneadm 命令引导区域。


    global# zoneadm -z s-zone boot
    
  3. 当引导完成时,使用带有 -v 选项的 list 子命令检验状态。


    global# zoneadm list -v
    

第 25 章 关于安装了区域的 Solaris 系统上的软件包和修补程序(概述)

Solaris 10 1/06: 对本章进行了彻底修订。

本章介绍如何在安装区域后维护 Solaris 操作系统。提供了有关在全局区域和所有已安装的非全局区域中向操作系统添加软件包和修补程序的信息,同时还包含有关删除软件包和修补程序的信息。本章中的材料是对现有 Solaris 安装和修补程序文档的补充。有关更多信息,请参见 Solaris 10 Release and Installation Collection - Simplified Chinese 和《系统管理指南:基本管理》

本章包含以下主题:

安装区域时打包和修补方面的新增功能

Solaris 10 1/06: 从 Solaris 10 开始,为了记录安装了非全局区域的系统上的软件包命令和修补程序命令的当前行为,重新编写了本章内容。

Solaris 10 6/06: 有关 SUNW_PKG_ALLZONESSUNW_PKG_HOLLOWSUNW_PKG_THISZONE 软件包参数的信息已修订。请参见打包工具和修补程序工具概述软件包参数信息

Solaris 10 6/06 及更高发行版:有关如何注册系统或如何使用 Sun Connection(以前称为 Sun Update Connection)来管理软件更新的信息,请访问 BigAdmin 站点中的 Sun Connection 信息中心

Solaris 10 8/07 及更高发行版:

Solaris 10 5/08 及更高的更新发行版: PatchPro 的 EOF。对 PatchPro 的支持于 2007 年 9 月结束。PatchPro 曾使用修补程序数据库和修补程序工具修补全局和非全局区域中安装的软件。有关最新进程的信息,请参见 Sun xVM Ops Center

Solaris 10 5/08: 尽管是在 Solaris 10 5/08 发行版中添加了此信息,但此信息适用于所有 Solaris 10 系统。

要注册您的 Solaris 系统,请转到 https://inventory.sun.com/inventory/。有关如何使用 Sun Inventory 注册硬件、软件和操作系统的信息,请参见 Sun Inventory 信息中心

如果使用 Sun xVM Ops Center 在数据中心中置备、更新和管理系统,请参见 Sun xVM 信息中心,了解有关如何向 Sun xVM Ops Center 注册软件的信息。

Solaris 10 10/09:区域并行修补是标准 Solaris 10 修补实用程序的一种增强功能。对于 Solaris 10 10/09 之前的发行版,该修补程序是在修补实用程序的修补程序 119254-66 或更高版本 (SPARC) 以及 119255-66 或更高版本 (x86) 中提供的。请参见Solaris 10 10/09:可减少修补时间的区域并行修补Solaris 10 10/09:如何以并行方式修补非全局区域。另请参见将附加时更新 (Update on Attach) 用作修补解决方案,这是用于快速更新系统区域的修补程序的建议方法。

有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

打包工具和修补程序工具概述

Solaris 打包工具用于管理区域环境。全局管理员可以将系统升级到新版本的 Solaris,此操作会同时更新全局区域和非全局区域。

Solaris Live Upgrade、标准 Solaris 交互式安装程序或自定义 JumpStart 安装程序可用于在全局区域中对包含非全局区域的系统进行升级。以下限制适用于在 ZFS 上具有 zonepath 的区域:

有关更多信息,请参见《Oracle Solaris ZFS 管理指南》中的“使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统 (Solaris 10 10/08)”

在本文档介绍的限制范围之内,区域管理员可以使用打包工具来管理安装在非全局区域中的任何软件。

安装区域时,将应用以下一般原则:


注 –

当执行某些软件包和修补程序操作时,将针对此类型的其他操作暂时锁定区域。系统也可能会在继续执行请求的操作之前向管理员确认。


关于软件包和区域

当安装非全局区域时,仅会完全复制全局区域中安装的部分 Solaris 软件包。例如,很多包含 Solaris 内核的软件包在非全局区域中是不需要的。所有非全局区域隐含共享全局区域中的同一 Solaris 内核。但是,即使非全局区域不需要或者不使用软件包的数据,非全局区域也可能需要在全局区域中安装软件包的信息。利用此信息,可以通过全局区域正确解析非全局区域中软件包的相关性。

软件包的参数可以控制软件包内容的分发方式,并使这些内容在安装了非全局区域的系统上可见。SUNW_PKG_ALLZONESSUNW_PKG_HOLLOWSUNW_PKG_THISZONE 软件包参数定义安装了区域的系统上的软件包的特征。如果需要,在区域环境中应用或删除软件包时,系统管理员可以检查这些软件包参数的设置,以检验软件包的适用性。可以使用 pkgparam 命令查看这些参数的值。有关参数的更多信息,请参见软件包参数信息。有关使用说明,请参见在安装了区域的系统上检查软件包参数设置

有关软件包特征和参数的信息,请参见 pkginfo(4) 手册页。有关显示软件包参数值的信息,请参见 pkgparam(1) 手册页。

针对软件包生成的修补程序

针对任何软件包生成修补程序时,必须将参数设置为与原始软件包相同的值。

交互式软件包

任何必须为交互式的软件包(这意味着该软件包具有请求脚本)仅添加到当前区域。软件包不会传播到其他任何区域。如果将交互式软件包添加到全局区域中,则对该软件包的处理类似于使用带有 -G 选项的 pkgadd 命令进行添加。有关此选项的更多信息,请参见关于在区域中添加软件包

保持区域同步

最好使非全局区域中安装的软件与全局区域中安装的软件尽可能保持同步。此做法可最大限度地降低管理安装了多个区域的系统的难度。

要实现此目标,在全局区域中添加或删除软件包时,软件包工具会强制执行以下规则。

全局区域中可能的软件包操作

如果软件包当前既没有安装在全局区域中,也没有安装在任何非全局区域中,则可将其安装在以下位置:

如果软件包当前仅安装在全局区域中:

如果软件包当前安装在全局区域和仅部分非全局区域中:

如果软件包当前安装在全局区域和所有非全局区域中,则该软件包可以从全局区域和所有非全局区域中删除。

这些规则可以确保以下情况:

非全局区域中可能的软件包操作

任何非全局区域中可能的软件包操作包括:

区域状态对修补程序和软件包操作有何影响

下表介绍了在非全局区域处于各种状态的系统中使用 pkgaddpkgrmpatchaddpatchrm 命令时将发生的情况。

请注意,已针对 Solaris 10 5/08 发行版修订了此表中已安装状态的说明。

区域状态 

对软件包和修补程序操作的影响 

已配置 

修补程序和软件包工具可以运行。尚未安装任何软件。 

已安装 

修补程序和软件包工具可以运行。在修补或打包操作期间,系统会将区域从已安装状态移至称为已挂载的新内部状态。完成修补后,区域将恢复为已安装状态。 

请注意,在执行完 zoneadm -z zonename install 后,区域也会立即移至已安装状态。处于已安装状态并且从未引导的区域不能进行修补,也不能运行打包命令。至少要将该区域引导至正在运行状态一次。在至少引导一次区域、然后通过 zoneadm halt 再返回已安装状态后,便可运行修补程序和打包命令。

就绪 

修补程序和软件包工具可以运行。 

正在运行 

修补程序和软件包工具可以运行。 

未完成 

zoneadm 正在安装或删除区域。无法使用软件包和修补程序工具。这些工具不能使区域进入使用工具所需的相应状态。

关于在区域中添加软件包

使用 pkgadd(1M) 手册页中所述的 pkgadd 系统实用程序,可以在安装了区域的 Solaris 系统上添加软件包。

在全局区域中使用 pkgadd

pkgadd 实用程序可以在全局区域中与 -G 选项一起使用,以仅向全局区域中添加软件包。软件包不会传播到其他任何区域。请注意,如果 SUNW_PKG_THISZONE=true,则不必使用 -G 选项。如果 SUNW_PKG_THISZONE=false,则 -G 选项会将其覆盖。

在全局区域中运行 pkgadd 实用程序时,将会进行以下操作。

添加软件包到全局区域和所有非全局区域

要将软件包添加到全局区域和所有非全局区域,请在全局区域中执行 pkgadd 实用程序。以全局管理员的身份,运行不带 -G 选项的 pkgadd

可以将软件包添加到全局区域和所有非全局区域中,而不用考虑受其影响的区域。

pkgadd 实用程序会执行以下步骤:

仅向全局区域中添加软件包

要仅向全局区域中添加软件包,请在全局区域中以全局管理员身份执行仅带有 -G 选项的 pkgadd 实用程序。

如果以下情况成立,则可以将软件包添加到全局区域中:

pkgadd 实用程序会执行以下步骤:

向所有非全局区域中添加安装在全局区域中的软件包

要向所有非全局区域中添加已安装在全局区域中的软件包,当前必须从全局区域中删除该软件包,然后在所有区域中重新安装。

以下是用于向所有非全局区域中添加已安装在全局区域中的软件包的步骤:

  1. 在全局区域中,使用 pkgrm 删除软件包。

  2. 在不使用 -G 选项的情况下添加软件包。

在非全局区域中使用 pkgadd

要在指定的非全局区域中添加软件包,请以区域管理员身份执行不带任何选项的 pkgadd 实用程序。需要满足以下条件:

pkgadd 实用程序会执行以下步骤:

关于在区域中删除软件包

pkgrm(1M) 手册页中所述的 pkgrm 实用程序支持在安装了区域的 Solaris 系统上删除软件包。

在全局区域中使用 pkgrm

在全局区域中使用 pkgrm 实用程序时,将进行以下操作。

请注意,只有在以下情况成立时,才能由非全局区域中的区域管理员将软件包从该区域中删除。

从全局区域和所有非全局区域中删除软件包

要从全局区域和所有非全局区域中删除软件包,请以全局管理员的身份在全局区域中执行 pkgrm 实用程序。

可以从全局区域和所有非全局区域中删除软件包,而不用考虑受其影响的区域。

pkgrm 实用程序会执行以下步骤:

在非全局区域中使用 pkgrm

以区域管理员身份在非全局区域中使用 pkgrm 实用程序来删除软件包。将应用以下限制:

pkgrm 实用程序会执行以下步骤:

软件包参数信息

设置区域的软件包参数

SUNW_PKG_ALLZONESSUNW_PKG_HOLLOWSUNW_PKG_THISZONE 软件包参数定义安装了区域的系统上的软件包的特征。必须设置这些参数,以便可在安装了非全局区域的系统上管理软件包。

下表列出了设置软件包参数的四种有效组合。如果您选择的设置组合未在下表中列出,则这些设置无效并且将无法安装软件包。

请确保您已设置了全部三个软件包参数。可以将这三个软件包参数保留为空。软件包工具会将缺少的区域软件包参数解释成设置为 false,但是绝对不建议不设置这些参数。通过设置全部三个软件包参数,可以指定安装或删除软件包时,软件包工具应当表现的确切行为。

表 25–1 有效的软件包参数设置

SUNW_PKG_ALLZONES 设置

SUNW_PKG_HOLLOW 设置

SUNW_PKG_THISZONE 设置

软件包说明 

false 

false 

false 

此为软件包的缺省设置,该设置不会指定所有区域软件包参数的值。 

具有这些设置的软件包既可安装在全局区域中,也可安装在非全局区域中。  

  • 如果在全局区域中运行 pkgadd 命令,则会将软件包安装在全局区域和所有非全局区域中。

  • 如果在非全局区域中运行 pkgadd 命令,则仅将软件包安装在非全局区域中。

在这两种情况下,软件包的所有内容都会在其安装所在的所有区域中可见。 

false 

false 

true 

具有这些设置的软件包既可安装在全局区域中,也可安装在非全局区域中。如果在安装软件包之后创建新的非全局区域,则软件包不会传播到这些新的非全局区域。 

  • 如果在全局区域中运行 pkgadd 命令,则仅将软件包安装在全局区域中。

  • 如果在非全局区域中运行 pkgadd 命令,则仅将软件包安装在非全局区域中。

在这两种情况下,软件包的所有内容都会在其安装所在的区域中可见。 

true 

false 

false 

具有这些设置的软件包只能安装在全局区域中。运行 pkgadd 命令时,会将软件包安装在全局区域和所有非全局区域中。软件包的所有内容在所有区域中可见。


注 –

任何将软件包安装在非全局区域中的尝试都会失败。


true 

true 

false 

具有这些设置的软件包只能由全局管理员安装在全局区域中。运行 pkgadd 命令时,软件包的内容会全部安装在全局区域中。如果软件包的软件包参数设置为这些值,则不会在任何非全局区域中提供软件包内容本身。非全局区域中仅会安装使软件包显示为已安装状态所必需的软件包安装信息。这将安装依赖于该软件包的要安装的其他软件包。

为了检查软件包的相关性,该软件包显示为已安装在所有区域中。 

  • 在全局区域中,该软件包的所有内容均可见。

  • 在完全根非全局区域中,该软件包的所有内容均不可见。

  • 当非全局区域从全局区域中继承文件系统时,安装在该文件系统中的软件包在非全局区域中可见,而该软件包所提供的所有其他文件在非全局区域中均不可见。

    例如,稀疏根非全局区域 (sparse root non-global zone) 与全局区域共享某些目录。这些目录为只读目录。稀疏根非全局区域与其他区域共享 /platform 文件系统。另一个示例为软件包提供仅与引导硬件有关的文件。


注 –

任何将软件包安装在非全局区域中的尝试都会失败。


SUNW_PKG_ALLZONES 软件包参数

可选的 SUNW_PKG_ALLZONES 软件包参数说明软件包的区域范围。此参数定义了以下内容:

SUNW_PKG_ALLZONES 软件包参数有两个允许的值。这些值为 truefalse。缺省值为 false。如果未设置此参数或将其设置为除 truefalse 以外的值,则会使用值 false

对于在所有区域中必须是同一软件包版本并属于同一修补程序修订版级别的软件包,应将 SUNW_PKG_ALLZONES 参数设置为 true。对于所提供的功能依赖于某个特定 Solaris 内核(例如 Solaris 10)的任何软件包,应将此参数设置为 true。任何用于软件包的修补程序都必须将 SUNW_PKG_ALLZONES 参数值设置为与正在修补的已安装软件包中设置的值相同。对于将此参数设置为 true 的任何软件包,其修补程序修订版级别在所有区域中都必须相同。

对于所提供的功能不依赖于某个特定 Solaris 内核(例如第三方软件包或 Sun 编译器)的软件包,应将此参数设置为 false。对于将此参数设置为 false 的软件包,其修补程序也必须将此参数设置为 false。对于任何将此参数设置为 false 的软件包,其软件包版本或修补程序修订版级别在不同区域中可以不同。例如,两个非全局区域可以安装不同版本的 Web 服务器。

下表描述了 SUNW_PKG_ALLZONES 软件包的参数值。

表 25–2 SUNW_PKG_ALLZONES 软件包参数值

值 

说明 

false

该软件包仅能从全局区域安装到全局区域,或从全局区域安装到全局区域和所有非全局区域。该软件包还可以从任何非全局区域安装到同一非全局区域。 

  • 全局管理员仅能将软件包安装在全局区域中。

  • 全局管理员可以将软件包安装在全局区域和所有非全局区域中。

  • 区域管理员可将软件包安装在非全局区域中。

如果将软件包从全局区域中删除,则不会将其从其他区域中删除。可以将软件包从单个非全局区域中删除。 

  • 不要求将软件包安装在全局区域中。

  • 不要求将软件包安装在任何非全局区域中。

  • 不要求软件包在所有区域中均相同。各区域可以有不同版本的软件包。

  • 软件包提供的软件不在所有区域中隐含共享。这意味着软件包并不是操作系统特定的。大多数应用程序级的软件都属于这一类别。例如 StarSuite 产品或 Web 服务器。

true

如果将软件包安装在全局区域中,则还必须将其安装在所有非全局区域中。如果将软件包从全局区域中删除,则还必须将其从所有非全局区域中删除。 

  • 如果安装软件包,必须将其安装在全局区域中。然后,该软件包会自动安装在所有非全局区域中。

  • 软件包的版本在所有区域中均必须相同。

  • 软件包提供的软件在所有区域中隐含共享。软件包依赖于在所有区域中隐含共享的软件版本。软件包应当在所有非全局区域中可见。例如内核模块。

    利用这些软件包,非全局区域可以通过获取所有非全局区域中安装的整个软件包,来解析安装在全局区域中的软件包的相关性。

  • 仅有全局管理员才能安装软件包。区域管理员不能在非全局区域中安装软件包。

SUNW_PKG_HOLLOW 软件包参数

SUNW_PKG_HOLLOW 软件包参数定义了在要求将软件包安装在所有区域中并且在所有区域内均相同的情况下,该软件包是否应当在任何非全局区域中可见。

SUNW_PKG_HOLLOW 软件包参数有两个允许的值 truefalse

下表描述了 SUNW_PKG_HOLLOW 软件包的参数值。

表 25–3 SUNW_PKG_HOLLOW 软件包参数值

值 

说明 

false

这不是“空”软件包: 

  • 如果将软件包安装在全局区域中,则必须在所有非全局区域中提供软件包的内容和安装信息。

  • 该软件包提供的软件应在所有非全局区域中可见。例如提供 truss 命令的软件包。

  • SUNW_PKG_ALLZONES 软件包参数的当前设置的限制以外,未定义其他限制。

true

这是“空”软件包: 

  • 任何非全局区域中均未显示软件包的内容。但是,要求在所有非全局区域中提供软件包的安装信息。

  • 软件包提供的软件不应在所有非全局区域中可见。例如仅在全局区域中运行的内核驱动程序和系统配置文件。利用该设置,非全局区域可以解析仅安装在全局区域中的软件包的相关性,而无需实际安装软件包数据。

  • 为了使依赖于正在安装的软件包的其他软件包进行相关性检查,该软件包识别为安装在所有区域中。

  • 该软件包设置包括针对将 SUNW_PKG_ALLZONES 设置为 true 所定义的所有限制。

  • 在全局区域中,软件包识别为已安装,并且安装了该软件包的所有组件。安装软件包时,会创建目录、安装文件,并相应地运行类操作和其他脚本。

  • 在非全局区域中,软件包识别为已安装,但是未安装该软件包的任何组件。安装软件包时,不创建任何目录、不安装任何文件,也不运行任何类操作或其他安装脚本。

  • 从全局区域中删除软件包时,系统会将该软件包识别为已完全安装。删除软件包时,会删除相应的目录和文件、运行类操作或其他安装脚本。

SUNW_PKG_THISZONE 软件包参数

SUNW_PKG_THISZONE 软件包参数定义了是否必须将软件包仅安装在当前区域(全局或非全局区域)中。SUNW_PKG_THISZONE 软件包参数有两个允许的值。这些值为 truefalse。缺省值为 false

下表描述了 SUNW_PKG_THISZONE 软件包的参数值。

表 25–4 SUNW_PKG_THISZONE 软件包参数值

值 

说明 

false

  • 如果在非全局区域中运行 pkgadd,则软件包仅安装在当前区域中。

  • 如果在全局区域中运行 pkgadd,则软件包会安装在全局区域以及所有当前安装的非全局区域中。此外,软件包将传播到所有将来新安装的非全局区域。

true

  • 软件包仅安装在当前区域中。

  • 如果将软件包安装在全局区域中,则不会将该软件包添加到任何当前现有的或待创建的非全局区域中。这与将 -G 选项指定到 pkgadd 时出现的行为相同。

软件包信息查询

pkginfo(1) 手册页中所述的 pkginfo 实用程序支持查询安装了区域的 Solaris 系统上的软件包数据库。有关该数据库的信息,请参见产品数据库

可以在全局区域中使用 pkginfo 实用程序来查询仅位于全局区域中的软件包数据库。可以在非全局区域中使用 pkginfo 实用程序来查询仅位于非全局区域中的软件包数据库。

关于在区域中添加修补程序

通常,修补程序由以下几个部分组成:

使用 patchadd 命令应用修补程序时,修补程序信息用于确定该修补程序是否适用于当前正在运行的系统。如果确定不适用,则不应用该修补程序。还会针对系统上的所有区域检查修补程序的相关性。如果不满足任一所需的相关性,则不应用该修补程序。这可能包括已安装更高版本的修补程序的情况。

修补程序所包含的每个软件包都会进行检查。如果任何区域中都没有安装软件包,则会跳过软件包,不对其进行修补。

如果满足所有相关性,则会使用任何区域中安装的修补程序内的所有软件包来修补系统。软件包和修补程序数据库也会进行更新。


注 –

Solaris 10 3/05 至 Solaris 10 11/06:如果软件包是使用 pkgadd -G 安装的,或者其 pkginfo 设置为 SUNW_PKG_THISZONE=true,则只能使用 patchadd -G 修补该软件包。Solaris 8/07 发行版中已取消此限制。


Solaris 10 8/07:延迟激活修补

从修补程序 119254-41 和 119255-41 开始,对 patchaddpatchrm 修补程序安装实用程序进行了修改,从而改变了某些修补程序提供功能的处理方式。此修改将影响上述修补程序在任何 Solaris 10 发行版上的安装。这些延迟激活的修补程序能够更好地处理功能修补程序(例如与 Solaris 10 3/05 发行版之后的 Solaris 10 发行版相关联的内核修补程序)中提供的大范围更改。

延迟激活的修补使用回送文件系统 (loopback file system, lofs) 来确保正在运行的系统的稳定性。将修补程序应用于正在运行的系统时,lofs 可以保持修补过程中的稳定性。这些较大的内核修补程序始终需要重新引导,但现在所需的重新引导将激活 lofs 所做的更改。修补程序 README 提供了有关哪些修补程序需要重新引导的说明。

如果正在运行非全局区域或已禁用 lofs,请在安装或删除延迟激活的修补程序时考虑以下几点:


注 –

使用 Solaris Live Upgrade 管理修补可避免与修补正在运行的系统相关联的问题。Solaris Live Upgrade 可减少与修补相关的停机时间,并且可在发生问题时提供回退功能来遏制风险。当系统仍在生产时,可以修补非活动引导环境;当在新的 BE 中发现问题时,可以引导回退至初始引导环境 (boot environment, BE)。请参见《Oracle Solaris 10 9/10 安装指南:Solaris Live 升级和升级规划》中的“使用软件包或修补程序升级系统”


Solaris 10 10/09:可减少修补时间的区域并行修补

区域并行修补是标准 Solaris 10 修补实用程序的一种增强功能,此功能构成了在 Solaris 10 系统上修补非全局区域的支持方法。此功能通过以并行方式修补非全局区域改进了区域修补性能。

对于 Solaris 10 10/09 之前的发行版,该功能是在修补实用程序的修补程序 119254-66 或更高版本 (SPARC) 以及 119255-66 或更高版本 (x86) 中提供的。

patchadd 的新配置文件 /etc/patch/pdo.conf 中,对以并行方式进行修补的非全局区域的最大数量进行了设置。该修补程序的修订版 66 或更高版本适用于所有 Solaris 10 系统以及诸如 Sun xVM Ops Center 等的更高级别自动修补工具。

仍然先修补全局区域。完成对全局区域的修补后,将按 num_proc= 中设置的非全局区域数量对非全局区域一起进行修补。最大数量为联机 CPU 数量的 1.5 倍,最多为系统中的实际非全局区域数量。

举例如下:

如果系统中有超过该数量的非全局区域,则将以并行方式修补前 6 个非全局区域,当进程完成第一组修补时,再修补剩余的非全局区域。

使用 Solaris Live Upgrade 和新的修补程序管理修补可在发生问题时提供回退功能。当系统仍在工作时,可以修补非活动引导环境;当在新的 BE 中发现问题时,可以引导回退至初始引导环境 (boot environment, BE)。

另请参见Solaris 10 10/09:如何以并行方式修补非全局区域


注 –

要快速更新区域的所有软件包,以便这些软件包匹配在主机上新安装的非全局区域中查看的信息,可在修补全局区域时分离这些区域,然后使用 -U 选项重新附加以匹配全局区域的级别。有关更多信息,请参见将附加时更新 (Update on Attach) 用作修补解决方案


在安装了区域的 Solaris 系统上应用修补程序

在全局区域级别上应用的所有修补程序会在所有区域中应用。安装非全局区域后,该区域与全局区域处于同一修补程序级别。修补全局区域时,会对所有非全局区域进行类似的修补。此操作保持所有区域中的修补程序级别相同。

使用 patchadd(1M) 手册页中所述的 patchadd 系统实用程序,可以在安装了区域的系统上添加修补程序。

在全局区域中使用 patchadd

要向全局区域和所有非全局区域中添加修补程序,请以全局管理员身份在全局区域中运行 patchadd

在全局区域中使用 patchadd 时,将应用以下条件:

在向全局区域和所有非全局区域中添加修补程序时,不必考虑该修补程序是否会影响从全局区域共享的区域。

patchadd 实用程序会执行以下步骤:

在非全局区域中使用 patchadd

当区域管理员在某个非全局区域中使用 patchadd 时,此实用程序仅能将修补程序添加到该区域中。在以下情况下,可将修补程序添加到非全局区域中:

patchadd 实用程序会执行以下步骤:

安装有区域的系统上的 patchadd -Gpkginfo 变量之间的交互

以下列表指定在全局和非全局区域中添加修补程序时 -G 选项和 SUNW_PKG_ALLZONES 变量之间的交互。

全局区域,已指定 -G

如果任意软件包具有 SUNW_PKG_ALLZONES=TRUE 设置,则将产生错误且不执行任何操作。

如果任何软件包都不具有 SUNW_PKG_ALLZONES=TRUE 设置,则修补程序仅应用于全局区域中的软件包。

全局区域,未指定 -G

如果任意软件包具有 SUNW_PKG_ALLZONES=TRUE 设置,则修补程序将应用于所有区域中的相应软件包。

如果任意软件包不具有 SUNW_PKG_ALLZONES=TRUE 设置,则修补程序将应用于所有相应区域中的这些软件包。仅用于全局区域的软件包将只在全局区域中安装。

非全局区域,已指定或未指定 -G

如果任意软件包具有 SUNW_PKG_ALLZONES=TRUE 设置,则将产生错误且不执行任何操作。

如果任何软件包都不具有 SUNW_PKG_ALLZONES=TRUE 设置,则修补程序仅应用于非全局区域中的软件包。

在安装了区域的 Solaris 系统上删除修补程序

使用 patchrm(1M) 手册页中所述的 patchrm 系统实用程序,可以在安装了区域的系统上删除修补程序。

在全局区域中使用 patchrm

您可以在全局区域中以全局管理员身份使用 patchrm 实用程序来删除修补程序。patchrm 实用程序不能仅从全局区域中删除修补程序,也不能从部分非全局区域中删除它们。

在非全局区域中使用 patchrm

您可以在非全局区域中以区域管理员身份使用 patchrm 实用程序仅从该非全局区域中删除修补程序。修补程序不能影响共享的区域。

产品数据库

每个区域各自的软件包、修补程序和产品注册表数据库都详细介绍了区域中可用的所有已安装软件。安装附加软件或修补程序时要执行所有相关性检查,但不会访问其他任何区域的数据库,除非正在全局区域和一个或多个非全局区域中安装或删除软件包或修补程序。在这种情况下,必须访问相应的非全局区域数据库。

有关数据库的更多信息,请参见 pkgadm(1M) 手册页。

第 26 章 在安装了区域的 Solaris 系统上添加和删除软件包和修补程序(任务)

Solaris 10 1/06: 在此发行版中,对本章进行了彻底修订。本章介绍安装了非全局区域的系统上的最新软件包和修补程序过程。

Solaris 10 6/06:如何仅将软件包添加到全局区域过程中添加了一条注释。

Solaris 10 8/07:如何仅将修补程序应用于全局区域任务中删除了一条注释。

有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

本章介绍如何在安装了区域的系统上添加和删除软件包和修补程序,还介绍了与管理软件包和修补程序关联的其他任务(例如,检查软件包参数设置和获取软件包信息)。有关安装了区域的系统上的修补和打包概念的概述,请参见第 25 章

在安装了区域的 Solaris 系统上添加和删除软件包和修补程序(任务图)

任务 

说明 

参考 

添加软件包。 

在安装了区域的系统上添加软件包。 

在安装了区域的 Solaris 系统上添加软件包

检查软件包信息。 

在安装了区域的系统上检查软件包信息。 

在安装了区域的 Solaris 系统上检查软件包信息

删除软件包。 

在安装了区域的系统上删除软件包。 

从安装了区域的 Solaris 系统中删除软件包

应用修补程序。 

在安装了区域的系统上应用修补程序。 

将修补程序应用于安装了区域的 Solaris 系统

删除修补程序。 

在安装了区域的系统上删除修补程序。 

在安装了区域的系统上删除修补程序

(可选)检查软件包参数设置。 

当添加或删除软件包时,检验软件包参数的设置是否支持您要执行的操作。 

在安装了区域的系统上检查软件包参数设置

在安装了区域的 Solaris 系统上添加软件包

您可以使用 pkgadd(1M) 手册页中所述的 pkgadd 系统实用程序执行以下任务:

要添加软件包,SUNW_PKG_ALLZONESSUNW_PKG_HOLLOW 软件包参数设置必须匹配正确的值(truefalse)。否则,不会获得所需的结果。有关这些软件包参数设置的影响的更多信息,请参见关于软件包和区域。有关如何检查这些软件包参数设置的更多信息,请参见在安装了区域的系统上检查软件包参数设置

Procedure如何仅将软件包添加到全局区域

要仅将软件包添加到全局区域,必须将 SUNW_PKG_ALLZONES 软件包参数设置为 false

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在全局区域中,运行后跟软件包位置、-G 选项以及软件包名称的 pkgadd -d 命令。

    • 如果从 CD-ROM 安装软件包,请键入:


      global# pkgadd -d /cdrom/cdrom0/directory -G package_name
      
    • 如果从已将软件包复制到其中的某个目录安装软件包,请键入:


      global# pkgadd -d disk1/image -G package_name
      

      其中,disk1 为软件包的复制位置。


    注 –

    如果在没有 -G 选项和 SUNW_PKG_THISZONE=true 的情况下运行 pkgadd 实用程序,则缺省情况下会将指定的软件包添加到当前(全局)区域。


Procedure如何将软件包添加到全局区域和所有非全局区域

请不要在此过程中使用 pkgadd 选项 -G

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在全局区域中,运行后跟软件包位置和软件包名称的 pkgadd -d 命令。

    • 如果从 CD-ROM 安装软件包,请键入:


      global# pkgadd -d /cdrom/cdrom0/directory package_name
      
    • 如果从已将软件包复制到其中的某个目录安装软件包,请键入:


      global# pkgadd -d disk1/image package_name
      

      其中,disk1 为软件包的复制位置。

Procedure如何将已安装在全局区域中的软件包添加到所有非全局区域

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在全局区域中,使用 pkgrm 删除软件包。

  3. 在不使用 -G 选项的情况下添加软件包。

Procedure如何仅将软件包添加到指定的非全局区域

要仅将软件包添加到指定的非全局区域,必须将 SUNW_PKG_ALLZONES 软件包参数设置为 false。请不要在此过程中使用 pkgadd 选项 -G,否则操作会失败。

要执行此过程,您必须是非全局区域中的区域管理员。

  1. 以区域管理员的身份登录到非全局区域。

  2. 在非全局区域(此过程中为 my-zone)中,运行后跟软件包位置和软件包名称的 pkgadd -d 命令。

    • 如果从 CD-ROM 安装软件包,请键入:


      my-zone# pkgadd -d /cdrom/cdrom0/directory package_name
      
    • 如果从已将软件包复制到其中的某个目录安装软件包,请键入:


      my-zone# pkgadd -d disk1/image package_name
      

      其中,disk1 为软件包的复制位置。

在安装了区域的 Solaris 系统上检查软件包信息

您可以使用 pkginfo 命令,查询全局区域和非全局区域的软件包数据库。有关此命令的更多信息,请参见 pkginfo(1) 手册页。

Procedure如何仅在全局区域中检查软件包信息

  1. 要仅检查全局区域的软件包数据库,请使用后跟软件包名称的 pkginfo


    global% pkginfo package_name
    

示例 26–1 在全局区域中使用 pkginfo 命令


global% pkginfo SUNWcsr SUNWcsu
system      SUNWcsr Core Solaris, (Root)
system      SUNWcsu Core Solaris, (Usr)

Procedure如何仅在指定的非全局区域中检查软件包信息

  1. 要在特定的非全局区域中检查软件包数据库,请登录到该非全局区域,并使用后跟软件包名称的 pkginfo


    my-zone% pkginfo package_name
    

示例 26–2 在非全局区域中使用 pkginfo 命令


my-zone% pkginfo SUNWcsr SUNWcsu
system      SUNWcsr Core Solaris, (Root)
system      SUNWcsu Core Solaris, (Usr)

从安装了区域的 Solaris 系统中删除软件包

您可以使用 pkgrm(1M) 手册页中所述的 pkgrm 系统实用程序执行以下任务:

要删除软件包,SUNW_PKG_ALLZONESSUNW_PKG_HOLLOW 软件包参数设置必须匹配正确的值(truefalse)。否则,不会获得所需的结果。有关这些软件包参数设置的影响的更多信息,请参见关于软件包和区域。有关如何检查这些软件包参数设置的更多信息,请参见在安装了区域的系统上检查软件包参数设置

Procedure如何从全局区域和所有非全局区域中删除软件包

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在全局区域中,运行后跟软件包名称的 pkgrm 命令。


    global# pkgrm package_name
    

Procedure如何仅从指定的非全局区域中删除软件包

要仅从指定的非全局区域中删除软件包,必须将 SUNW_PKG_ALLZONES 软件包参数设置为 false

要执行此过程,您必须是非全局区域中的区域管理员。

  1. 以区域管理员的身份登录到非全局区域。

  2. 在非全局区域(此过程中为 my-zone)中,运行后跟软件包名称的 pkgrm 命令。


    my-zone# pkgrm package_name
    

将修补程序应用于安装了区域的 Solaris 系统

您可以使用 patchadd(1M) 手册页中所述的 patchadd 系统实用程序执行以下任务:

Procedure如何仅将修补程序应用于全局区域


注 –

Solaris 10 3/05 至 Solaris 10 11/06:如果要修补使用带有 -G 选项的 pkgadd 命令添加的软件包,则必须使用带有 -G 选项的 patchadd 命令修补该软件包。Solaris 8/07 发行版中已取消此限制。


要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 执行后跟 -G 选项和修补程序 ID 的 patchadd 命令。


    global# patchadd -G patch_id
    

Procedure如何将修补程序应用于全局区域和所有非全局区域

要执行此过程,您必须是全局区域中的全局管理员。

另请参见Solaris 10 10/09:可减少修补时间的区域并行修补Solaris 10 10/09:如何以并行方式修补非全局区域

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 执行后跟修补程序 ID 的 patchadd 命令。


    global# patchadd patch_id
    

Procedure如何仅将修补程序应用于指定的非全局区域

要仅将修补程序应用于指定的非全局区域,必须将修补程序集中所有软件包的 SUNW_PKG_ALLZONES 软件包参数设置为 false

要执行此过程,您必须是非全局区域中的区域管理员。

  1. 以区域管理员的身份登录到非全局区域。

  2. 在非全局区域(此过程中为 my-zone)中,执行后跟修补程序 ID 的 patchadd 命令。


    my-zone# patchadd patch_id
    

ProcedureSolaris 10 10/09:如何以并行方式修补非全局区域

patchadd 的配置文件 /etc/patch/pdo.conf 中设置要以并行方式修补的非全局区域的数量。当完成全局区域的修补后,将按 num_proc= 中设置的非全局区域数量对非全局区域一起进行修补。

如果运行的是 Solaris 10 10/09 之前的发行版,请下载修补程序 119254-66 或更高修订版 (SPARC) 或者 119255-66 或更高修订版 (x86)。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. (可选,仅适用于 Solaris 10 10/09 之前的发行版)下载修补程序 119254-66 (SPARC) 或 119255-66 (x86)。

  3. /etc/patch/pdo.conf 文件中,对具有 4 个联机 CPU 的系统设置 6 个以并行方式一起修补的非全局区域。


    num_proc=6

    如果系统中的非全局区域多于六个,则将以并行方式修补前六个非全局区域,当进程完成对前六个非全局区域的修补后,再修补剩余的非全局区域。

在安装了区域的系统上删除修补程序

您可以使用 patchrm(1M) 手册页中所述的 patchrm 系统实用程序执行以下任务:

Procedure如何从全局区域和所有非全局区域中删除修补程序

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 执行后跟修补程序 ID 的 patchrm 命令。


    global# patchrm patch_id
    

Procedure如何仅从指定的非全局区域中删除修补程序

要仅从指定的非全局区域中删除修补程序,必须将修补程序集中所有软件包的 SUNW_PKG_ALLZONES 软件包参数设置为 false

要执行此过程,您必须是非全局区域中的区域管理员。

  1. 以区域管理员的身份登录到非全局区域。

  2. 在非全局区域(此过程中为 my-zone)中,执行后跟修补程序 ID 的 patchrm 命令。


    my-zone# patchrm patch_id
    

在安装了区域的系统上检查软件包参数设置

在添加或删除软件包之前,您可以使用 pkgparam 命令来检查软件包参数设置。此步骤是可选的。在解决无法按预期方式添加或删除软件包的问题时,也可以执行此检查。有关显示软件包参数值的信息,请参见 pkgparam(1) 手册页。

Procedure(可选)如何检查系统上已安装的软件包的设置

  1. 要检查已安装在全局区域或非全局区域中的软件包的软件包参数设置,请使用后跟软件包名称和参数名称的 pkgparam


    my-zone% pkgparam package_name SUNW_PKG_ALLZONES
    true
    my-zone% pkgparam package_name SUNW_PKG_HOLLOW
    false

Procedure(可选)如何检查 CD-ROM 上软件中软件包的设置

  1. 要检查 CD-ROM 上软件中未安装软件包的参数设置,请使用后跟 CD-ROM 路径、软件包名称以及参数名称的 pkgparam -d


    my-zone% pkgparam -d /cdrom/cdrom0/directory package_name SUNW_PKG_ALLZONES
    true
    my-zone% pkgparam -d /cdrom/cdrom0/directory package_name SUNW_PKG_HOLLOW 
    false 

第 27 章 Solaris Zones 管理(概述)

本章介绍以下常规区域管理主题:

有关 lx 标记区域的信息,请参见第 3 部分, lx 标记区域

本章新增内容

Solaris 10 1/06: 新增了在区域中卸载文件系统一节。

Solaris 10 1/06: 新增了有关区域备份和恢复过程的几节内容。请参见关于备份安装了区域的 Solaris 系统

Solaris 10 6/06: ZFS 条目已添加到在区域中挂载文件系统中的表内。

Solaris 10 8/07: 以下信息是此发行版中的新增或更新内容:

有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

全局区域可见性和访问权限

全局区域既可作为系统的缺省区域,也可作为在系统范围内实施管理控制的区域。这种双重角色会引起管理问题。由于全局区域内的应用程序有权访问其他区域中的进程和其他系统对象,因此,管理操作的影响范围会比预期的范围更广。例如,服务关闭脚本通常使用 pkill 来通知退出具有给定名称的进程。在全局区域中运行此脚本时,将通知退出系统中所有区域内的所有此类进程。

通常需要将整个系统作为考虑范围。例如,要监视系统范围内的资源使用情况,必须查看整个系统中的进程统计信息。如果仅查看全局区域活动,则会遗漏系统中可能正在共享部分或全部系统资源的其他区域的相关信息。在没有使用资源管理功能对系统资源(如 CPU)进行严格分区的情况下,此类查看尤为重要。

因此,全局区域中的进程可以查看非全局区域中的进程和其他对象。这样,此类进程便可查看整个系统范围的内容。控制信号或将信号发送到其他区域中进程的功能由权限 PRIV_PROC_ZONE 加以限制。此权限类似于 PRIV_PROC_OWNER,因为它允许进程覆盖对非特权进程设定的限制。在这种情况下,所谓的限制是指全局区域中的非特权进程无法向其他区域中的进程发送信号或控制这些进程。即使进程的用户 ID 相匹配或者正在运行的进程拥有 PRIV_PROC_OWNER 权限,也会存在上述限制。可以删除其他特权进程的 PRIV_PROC_ZONE 权限,以将操作限制为仅对全局区域有效。

有关使用 zoneidlist 匹配进程的信息,请参见 pgrep(1)pkill(1) 手册页。

区域中的进程 ID 可见性

只有同一区域中的进程才能通过使用进程 ID 的系统调用接口(例如 killpriocntl 命令)进行查看。有关信息,请参见 kill(1)priocntl(1) 手册页。

区域中的系统可查看性

ps 命令进行了以下修改:

有关更多信息,请参见 ps(1) 手册页。

已将 -z zonename 选项添加到以下 Solaris 实用程序。可以使用此选项将信息过滤为仅包括指定的一个或多个区域。

有关对命令所做的更改的完整列表,请参见表 27–5

非全局区域节点名称

区域管理员可以设置 /etc/nodename 中由 uname -n 返回的节点名称。节点名称必须是唯一的。

文件系统和非全局区域

本节介绍有关安装了区域的 Solaris 系统上文件系统问题的相关信息。每个区域都有自己的文件系统分层结构部分,根目录称为区域 root。区域中的进程仅可访问区域根目录下的分层结构部分中的文件。chroot 实用程序可以在区域中使用,但是仅用于将进程限制在区域内的根路径。有关 chroot 的更多信息,请参见 chroot(1M)

-o nosuid 选项

mount 实用程序的 -o nosuid 选项具有以下功能:

所有可使用 mount 实用程序(如 mount(1M) 手册页中所述)挂载的 Solaris 文件系统都可以使用这一特定于文件系统的选项。在本指南中,这些文件系统在在区域中挂载文件系统中列出。同时也对挂载功能进行了说明。有关 -o nosuid 选项的更多信息,请参见《系统管理指南:网络服务》中的“访问网络文件系统(参考)”。

在区域中挂载文件系统

从区域中挂载文件系统时,将应用 nodevices 选项。例如,如果区域被授予访问对应于 UFS 文件系统的块设备 (/dev/dsk/c0t0d0s7) 和原始设备 (/dev/rdsk/c0t0d0s7) 的权限,则从区域中挂载此文件系统时,会自动使用 nodevices 选项挂载。此规则不适用于通过 zonecfg 配置指定的挂载。

下表介绍用于在非全局区域中挂载文件系统的选项。其他挂载方法过程在配置、检验并提交区域在正在运行的非全局区域中挂载文件系统中介绍。

对于未在此表中列出的任意文件系统类型,如果它在 /usr/lib/fstype/mount 中具有挂载二进制命令,则可以在配置中指定此文件系统类型。

文件系统 

非全局区域中的挂载选项 

AutoFS 

不能使用 zonecfg 挂载,不能从全局区域中手动挂载到非全局区域。可以在区域中挂载。

CacheFS 

不能在非全局区域中使用。 

FDFS 

可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。

HSFS 

可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。

LOFS 

可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。

MNTFS 

不能使用 zonecfg 挂载,不能从全局区域中手动挂载到非全局区域。可以在区域中挂载。

NFS 

不能使用 zonecfg 挂载。当前区域所支持的版本 V2、V3 和 V4 可以在区域中挂载。

PCFS  

可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。

PROCFS 

不能使用 zonecfg 挂载,不能从全局区域中手动挂载到非全局区域。可以在区域中挂载。

TMPFS 

可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。

UDFS 

可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。

UFS 

可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。

XMEMFS 

可以使用 zonecfg 挂载,可以从全局区域中手动挂载到非全局区域,可以在区域中挂载。

在未来的发行版中,将从 Solaris 系统中删除对此文件系统的支持。 

ZFS 

可以使用 zonecfg datasetfs 资源类型进行挂载。

有关更多信息,请参见如何配置区域在正在运行的非全局区域中挂载文件系统mount(1M) 手册页。

在区域中卸载文件系统

卸载文件系统的能力将取决于执行初始挂载的人员。如果使用 zonecfg 命令将文件系统指定为区域配置的一部分,则全局区域将拥有此挂载,而非全局区域的区域管理员无法卸载该文件系统。如果在非全局区域中挂载文件系统(例如指定区域 /etc/vfstab 文件中的挂载),则非全局区域的区域管理员可以卸载该文件系统。

安全限制和文件系统行为

在区域中挂载某些文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。已修改的文件系统列表如下。

AutoFS

Autofs 是一项可自动挂载相应文件系统的客户端服务。当客户机尝试访问目前未挂载的文件系统时,AutoFS 文件系统会拦截请求并调用 automountd 以挂载请求的目录。在区域中建立的 AutoFS 挂载对于此区域而言是本地挂载。不能从其他区域(包括全局区域)访问这些挂载。在停止或重新引导区域时,将删除挂载。有关 AutoFS 的更多信息,请参见《系统管理指南:网络服务》中的“Autofs 如何工作”

每个区域都运行自己的 automountd 副本。自动映射和超时由区域管理员控制。不能跨越非全局区域的 AutoFS 挂载点从全局区域触发其他区域中的挂载。

触发其他挂载时,便会在内核中创建某些 AutoFS 挂载。此类挂载不能使用常规 umount 接口删除,因为它们必须作为一个组进行挂载或卸载。请注意,提供此功能是为了关闭区域。

MNTFS

MNTFS 是一款虚拟文件系统,可提供本地系统中已挂载文件系统表的只读访问权限。在非全局区域中使用 mnttab 可查看的一组文件系统是该区域中已挂载的一组文件系统和一个根 (/) 项。具有无法在区域中访问的特殊设备的挂载点(例如 /dev/rdsk/c0t0d0s0)都将其特殊设备的挂载点设置为与此挂载点相同。系统中的所有挂载都可从全局区域的 /etc/mnttab 表中查看。有关 MNTFS 的更多信息,请参见《系统管理指南:设备和文件系统》中的第 19  章 “挂载和取消挂载文件系统(任务)”

NFS

在区域中建立的 NFS 挂载对于此区域而言是本地挂载。不能从其他区域(包括全局区域)访问这些挂载。在停止或重新引导区域时,将删除挂载。

mount_nfs(1M) 手册页中所述,NFS 服务器不应尝试挂载自己的文件系统。因此,区域不应对由全局区域导出的文件系统执行 NFS 挂载。区域不能是 NFS 服务器。在区域中,NFS 挂载如同使用 nodevices 选项进行挂载。

nfsstat 命令输出仅与运行此命令的区域有关。例如,如果在全局区域中运行此命令,则仅报告有关此全局区域的信息。有关 nfsstat 命令的更多信息,请参见 nfsstat(1M)

如果 zlogin 命令的打开文件或其地址空间的任意部分驻留在 NFS 上,此命令将失败。有关更多信息,请参见zlogin 命令

PROCFS

/proc 文件系统(或 PROCFS)提供进程可见性和访问限制,同时还提供有关进程的区域关联的信息。通过 /proc 只能查看同一区域中的进程。

全局区域中的进程可以查看非全局区域中的进程和其他对象。这样,此类进程便可查看整个系统范围的内容。

在区域中,procfs 挂载如同使用 nodevices 选项进行挂载。有关 procfs 的更多信息,请参见 proc(4) 手册页。

LOFS

通过 LOFS 进行挂载的范围被限制为区域中可见的文件系统部分。因此,对区域中的 LOFS 挂载没有任何限制。

UFS、UDFS、PCFS 以及其他基于存储的文件系统

使用 zonecfg 命令配置具有 fsck 二进制命令的基于存储的文件系统(例如 UFS)时,区域管理员必须指定 raw 参数。该参数指明原始(字符)设备,如 /dev/rdsk/c0t0d0s7zoneadmd 在挂载文件系统之前,会自动以非交互、仅检查的模式 (fsck -m) 在此设备上运行 fsck 命令。如果 fsck 失败,则 zoneadmd 无法使区域达到就绪状态。由 raw 指定的路径不能是相对路径。

对于没有在 /usr/lib/ fstype/fsck 中提供 fsck 二进制代码的文件系统,不能为 fsck 指定设备。如果此文件系统具有 fsck 二进制命令,则必须为 fsck 指定设备。

有关更多信息,请参见zoneadmd 守护进程fsck(1M)

ZFS

可以使用带有 add dataset 资源的 zonecfg 命令将 ZFS 数据集添加到非全局区域。此数据集将在非全局区域中进行挂载并显示,并且在全局区域中不再可见。区域管理员可以在此数据集中创建和销毁文件系统、创建和销毁克隆对象以及修改此数据集的属性。

zfszoned 属性指明是否已将数据集添加到非全局区域。


# zfs get zoned tank/sales
NAME          PROPERTY    VALUE      SOURCE
tank/sales    zoned       on         local

如果要共享全局区域中的数据集,可以使用具有 add fs 子命令的 zonecfg 命令来添加通过 LOFS 方式挂载的 ZFS 文件系统。全局管理员负责设置和控制数据集的属性。

有关 ZFS 的更多信息,请参见《Oracle Solaris ZFS 管理指南》中的第 10  章 “Oracle Solaris ZFS 高级主题”

作为 NFS 客户机的非全局区域

区域可以是 NFS 客户机。支持版本 2、版本 3 和版本 4 协议。有关这些 NFS 版本的信息,请参见《系统管理指南:网络服务》中的“NFS 服务的功能”

缺省版本为 NFS 版本 4。可以使用以下方法之一在客户机上启用其他 NFS 版本:

在区域中禁止使用 mknod

请注意,不能使用 mknod(1M) 手册页中所述的 mknod 命令在非全局区域中创建特殊文件。

遍历文件系统

区域的文件系统名称空间是可从全局区域访问的名称空间的子集。可以通过以下方式,防止全局区域中的非特权进程遍历非全局区域的文件系统分层结构:

请注意,尝试访问为其他区域挂载的 AutoFS 节点将失败。全局管理员不必具有向下派生到其他区域的自动映射。

从全局区域中访问非全局区域的限制

安装了非全局区域之后,除了系统备份实用程序之外,此区域永远不能通过其他任何命令从全局区域中直接访问。此外,当非全局区域向未知环境公开之后,便不再将其视为安全区域。例如放置在可公共访问的网络上的区域,这种情况下可能会危及区域的安全并且可能会改变其文件系统的内容。如果存在任何危及区域安全的可能性,全局管理员便应将此区域视为不可信区域。

任何可通过 -R-b 选项(或等效选项)接受备用根的命令,在以下情况成立时得使用:

例如通过非全局区域根路径在全局区域中运行的 pkgadd 实用程序的 -R root_path 选项。

以下是通过备用根路径使用 -R 的命令、程序和实用程序的列表:

以下是通过备用根路径使用 -b 的命令和程序的列表:

共享 IP 非全局区域中的联网

在安装了区域的 Solaris 系统上,区域可通过网络相互通信。所有区域都有单独的绑定或连接,并且所有区域都可运行自己的服务器守护进程。这些守护进程可以侦听相同的端口号而不会引起冲突。IP 栈通过分析传入连接的 IP 地址来解决冲突。IP 地址标识区域。

共享 IP 区域分区

在支持区域的系统中,IP 栈对区域之间的网络通信流量执行隔离。接收 IP 通信流量的应用程序只能接收发送到同一区域的通信流量。

系统上的每个逻辑接口都属于特定的区域,缺省情况下属于全局区域。借助 zonecfg 实用程序指定给区域的逻辑网络接口用于在网络上进行通信。每个流和连接都属于打开它的进程所在的区域。

上层流和逻辑接口之间的绑定会受到限制。流只能与同一区域中的逻辑接口建立绑定。同样,来自逻辑接口的包只能传递到此逻辑接口所在区域中的上层流。

每个区域都有自己的一组绑定。每个区域都可以运行侦听同一端口号的相同应用程序,而且绑定不会失败,因为地址已处于使用状态。每个区域都可以运行自己版本的以下服务:

除全局区域之外的区域拥有受限的网络访问权限。标准 TCP 和 UDP 套接字接口均可用,但是 SOCK_RAW 套接字接口被限制为网际控制报文协议 (Internet Control Message Protocol, ICMP)。ICMP 是检测和报告网络错误状态或使用 ping 命令时所必需的。

共享 IP 网络接口

每个需要网络连接的非全局区域都有一个或多个专用 IP 地址。这些地址与可以使用 ifconfig 命令放入区域中的逻辑网络接口关联。引导区域时,将在其中自动设置并放置通过 zonecfg 配置的区域网络接口。运行区域时,可使用 ifconfig 命令添加或删除逻辑接口。只有全局管理员才能修改接口配置和网络路由。

在非全局区域内,只有此区域的接口才能通过 ifconfig 进行查看。

有关更多信息,请参见 ifconfig(1M)if_tcp(7P) 手册页。

同一计算机上共享 IP 区域之间的 IP 通信

在同一计算机上的两个区域之间,仅当转发表中的目标和区域具有“匹配的路由”时,才允许传送包。

匹配信息按如下方式执行:

共享 IP 区域中的 Solaris IP 过滤器

Solaris IP 过滤器可提供有状态包过滤和网络地址转换 (network address translation, NAT) 功能。有状态包过滤器可以监视活动连接的状态,并使用获得的信息确定允许哪些网络包通过防火墙。Solaris IP 过滤器还包括无状态包过滤以及创建和管理地址池的功能。有关其他信息,请参见《系统管理指南:IP 服务》中的第 25  章 “Oracle Solaris : IP 过滤器(概述)”

在非全局区域中,可以通过打开回送过滤来启用 Solaris IP 过滤器,如《系统管理指南:IP 服务》中的第 26  章 “yaraOracle Solaris : IP 过滤器(任务)”所述。

Solaris IP 过滤器是从开放源代码的 IP 过滤器软件衍生而来的。

共享 IP 区域中的 IP 网络多路径

IP 网络多路径 (IP network multipathing, IPMP) 为在同一 IP 链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能。IPMP 还为具有多个接口的系统提供了包负荷分配。

所有网络配置均在全局区域中完成。可以在全局区域中配置 IPMP,然后将功能扩展到非全局区域。当配置非全局区域时,将此区域的地址放入 IPMP 组中即可实现功能扩展。此后,如果全局区域中有一个接口出现故障,则非全局区域地址将迁移到其他网络接口卡。共享 IP 区域可拥有多个 IP 地址,它可以是多个 IPMP 组的组成部分,而且多个共享的 IP 区域可使用指定的同一 IPMP 组。

在给定的非全局区域中,只有与此区域关联的接口才能通过 ifconfig 命令进行查看。

请参见如何将 IP 网络多路径功能扩展到共享 IP 非全局区域。区域配置过程在如何配置区域中介绍。有关 IPMP 功能、组件和用法的信息,请参见《系统管理指南:IP 服务》中的第 30  章 “IPMP 介绍(概述)”

Solaris 10 8/07:专用 IP 非全局区域中的联网

专用 IP 区域具有自己的与 IP 相关的状态和调节变量。配置该区域时,系统会为该区域分配其自己的数据链路集合。

有关可在专用 IP 非全局区域中使用的功能的信息,请参见Solaris 10 8/07:专用 IP 非全局区域。有关调节 IP ndd 变量的信息,请参见《Oracle Solaris Tunable Parameters Reference Manual》

专用 IP 区域分区

专用 IP 区域具有单独的 TCP/IP 栈,因此可以隔离数据链路层及其上的所有层。全局管理员可以将一个或多个数据链路名称(可以是 NIC 或 NIC 上的 VLAN)分配给一个专用 IP 区域。区域管理员可以配置这些数据链路上的 IP,其灵活性和选项与全局区域中的相同。

专用 IP 数据链路接口

必须以独占方式将一个数据链路名称分配给单个区域。

可以使用 dladm show-link 命令显示分配给正在运行的区域的数据链路。

有关更多信息,请参见 dladm(1M)

同一计算机上专用 IP 区域之间的 IP 通信

专用 IP 区域之间不存在 IP 数据包内部回送。所有包都向下发送到数据链路。通常,这意味着包通过网络接口发出。然后,类似以太网交换机或 IP 路由器的设备可将包转发到其目的地,该目的地可能位于发送者所用的同一台计算机上的不同区域。

专用 IP 区域中的 Solaris IP 过滤器

在专用 IP 区域中可以使用在全局区域中使用的相同 IP 过滤器功能。而且在专用 IP 区域中配置 IP 过滤器的方法与在全局区域中使用的方法相同。

专用 IP 区域中的 IP 网络多路径

IP 网络多路径 (IP network multipathing, IPMP) 为在同一 IP 链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能。除了容错功能以外,IPMP 还为具有多个接口的系统提供了包负荷分配。

数据链路配置在全局区域中完成。首先,使用 zonecfg 将多个数据链路接口分配给某个区域。这些数据链路接口必须连接到相同的 IP 子网。然后,区域管理员便可在专用 IP 区域内配置 IPMP。多个 IPMP 组可分配给指定的专用 IP 区域,但这些 IPMP 组无法与其他区域共享。

非全局区域中的设备使用

对区域中可用的一组设备进行了限制,以防止某个区域中的进程干扰在其他区域中运行的进程。例如,区域中的进程不能修改内核内存,也不能修改根磁盘的内容。因此,缺省情况下,只提供被视为可以在区域中安全使用的特定伪设备。在特定区域内,可使用 zonecfg 实用程序使其他设备变得可用。

/dev/devices 名称空间

Solaris 系统使用 devfs(7FS) 手册页中所述的 devfs 文件系统来管理 /devices。此名称空间中的每个元素都表示指向硬件设备、伪设备或 nexus 设备的物理路径。名称空间是设备树的一种表现形式。同样,文件系统由目录和特定于设备的文件分层结构填充。

现在作为 /(根)文件系统一部分的 /dev 文件分层结构由指向 /devices 中的物理路径的符号链接或逻辑路径组成。应用程序引用指向 /dev 中设备的逻辑路径。/dev 文件系统使用只读挂载回送挂载到区域。

/dev 文件分层结构由以下列出的组件所组成的系统进行管理:


注意 – 注意 –

在建立 /dev 路径名之前,依赖于 /devices 路径名的子系统不能在非全局区域中运行。


专用设备

可能拥有需要指定给特定区域的设备。允许非特权用户访问块设备可能会导致通过使用这些设备造成系统出现紧急情况、总线复位或其他不良影响。在进行此类指定之前,请考虑以下问题:

设备驱动程序管理

在非全局区域中,可以使用 modinfo(1M) 手册页中所述的 modinfo 命令来检查已装入的内核模块的列表。

大多数与内核、设备和平台管理相关的操作都不能在非全局区域内部执行,因为修改平台硬件配置会破坏区域安全模型。这些操作包括:

在非全局区域中无法使用或者修改的实用程序

无法在非全局区域中使用的实用程序

以下实用程序无法在区域中使用,因为它们所依赖的设备通常不存在:

SPARC: 修改为可在非全局区域中使用的实用程序

eeprom 实用程序可用于查看区域中的设置,但不能用于更改设置。有关更多信息,请参见 eeprom(1M)openprom(7D) 手册页。

在非全局区域中运行应用程序

通常,所有应用程序均可在非全局区域中运行。但是,以下应用程序类型可能不适用于此环境:

在非全局区域中使用的资源控制

有关在区域中使用资源管理功能的其他信息,另请参阅本指南第 1 部分中介绍此功能的章节。

资源管理章节中所述的任何资源控制和属性都可以在全局和非全局区域 /etc/project 文件、NIS 映射或 LDAP 目录服务中设置。给定区域的设置仅影响此区域。在不同区域中独立运行的项目可以在每个区域中分别设置控制。例如,项目 A 在全局区域中可以设置 project.cpu-shares=10,而在非全局区域中可以设置 project.cpu-shares=5。系统中可能同时运行若干个 rcapd 实例,而每个实例都仅在自己的区域中运行。

某个区域中用于在该区域中控制项目、任务和进程的资源控制和属性还要满足其他与池和区域范围资源控制相关的要求。

“一个区域,一个池”规则适用于非全局区域。多个非全局区域可以共享一个池的资源。但是,全局区域中的进程可以由拥有足够权限的进程绑定到任意池。资源控制器 poold 仅在全局区域中运行,它可以在其中的多个池中运行。在非全局区域中运行的 poolstat 实用程序仅显示与该区域关联的池的相关信息。在非全局区域中运行的不带参数的 pooladm 命令仅显示与此区域关联的池的相关信息。

区域范围的资源控制在 project 文件中设置时不会生效。区域范围的资源控制通过 zonecfg 实用程序设置。

安装了区域的 Solaris 系统上的公平份额调度器

本节介绍如何在区域中使用公平份额调度器 (fair share scheduler, FSS)。

非全局区域中的 FSS 份额分配

区域的 FSS CPU 份额是分层的。全局和非全局区域的份额由全局管理员通过区域范围的资源控制 zone.cpu-shares 设置。然后,可以为该区域中的每个项目定义 project.cpu-shares 资源控制,以便进一步细分通过区域范围的控制设置的份额。

要使用 zonecfg 命令分配区域份额,请参见如何在全局区域中设置 zone.cpu-shares。有关 project.cpu-shares 的更多信息,请参见可用的资源控制。有关说明如何设置临时份额的示例过程,另请参见在安装了区域的 Solaris 系统上使用公平份额调度器

区域之间的份额平衡

可以使用 zone.cpu-shares 为全局区域和非全局区域分配 FSS 份额。如果 FSS 是您系统中的缺省调度程序,并且尚未分配份额,则缺省情况下,会分配给每个区域(包括全局区域)一个份额。如果系统上有一个非全局区域,则将通过 zone.cpu-shares(定义非全局区域将相对于全局区域接到的 CPU 比例)为此区域提供两个份额。这两个区域之间的 CPU 比例为 2:1。

安装了区域的 Solaris 系统上的扩展记帐

当扩展记帐子系统在全局区域中运行时,它会收集和报告整个系统(包括非全局区域)的信息。全局管理员还可以确定每个区域的资源占用情况。

扩展记帐子系统允许每个区域针对基于进程和基于任务的记帐具有不同的记帐设置和文件。对于进程,exacct 记录可以使用区域名称 EXD PROC ZONENAME 进行标记;对于任务,则可以使用区域名称 EXD TASK ZONENAME 进行标记。记帐记录将写入全局区域的记帐文件以及每个区域的记帐文件。EXD TASK HOSTNAMEEXD PROC HOSTNAMEEXD HOSTNAME 记录包含用于执行进程或任务的区域的 uname -n 值,而不是全局区域的节点名称。

有关 IPQoS 流记帐的信息,请参见 《系统管理指南:IP 服务》中的第 36  章 “使用流记帐和统计信息收集功能(任务)”

非全局区域中的权限

仅允许进程拥有部分权限。权限限制可防止某个区域执行可能会影响其他区域的操作。通过权限设置,可以限制区域内特权用户的功能。要显示区域内可用权限的列表,请使用 ppriv 实用程序。

下表列出了所有 Solaris 权限以及相对于区域每个权限的状态。缺省权限集不包含可选权限,但可以通过 limitpriv 属性指定它们。最终的权限集中必须包含必需权限。最终的权限集中不能包含禁止权限。

从 Solaris 10 11/06 发行版开始,limitpriv 属性就已经可用了。

表 27–1 区域中权限的状态

权限 

状态 

说明 

cpc_cpu

可选 

访问某些 cpc(3CPC) 计数器的权限

dtrace_proc

可选 

fasttrappid 提供器;plockstat(1M)

dtrace_user

可选 

profilesyscall 提供器

graphics_access

可选 

访问 agpgart_io(7I) 的 ioctl(2)

graphics_map

可选 

访问 agpgart_io(7I) 的 mmap(2)

net_rawaccess

在共享 IP 区域中为可选。 

在专用 IP 区域中为缺省值。 

原始 PF_INET/PF_INET6 包访问权限

proc_clock_highres

可选 

使用高精度计时器 

proc_priocntl

可选 

调度控制;priocntl(1)

sys_ipc_config

可选 

增加 IPC 消息队列缓冲区大小 

sys_time

可选 

系统时间处理;xntp(1M)

dtrace_kernel

禁止 

当前不支持 

proc_zone

禁止 

当前不支持 

sys_config

禁止 

当前不支持 

sys_devices

禁止 

当前不支持 

sys_linkdir

禁止 

当前不支持 

sys_net_config

禁止 

当前不支持 

sys_res_config

禁止 

当前不支持 

sys_suser_compat

禁止 

当前不支持 

proc_exec

必需,缺省 

用于启动 init(1M)

proc_fork

必需,缺省 

用于启动 init(1M)

sys_mount

必需,缺省 

需要用于挂载必需的文件系统 

sys_ip_config

在专用 IP 区域中为必需、缺省权限。 

在共享 IP 区域中为禁止权限。 

在专用 IP 区域中需要用于引导和初始化 IP 联网 

contract_event

缺省值 

供合约文件系统使用 

contract_observer

缺省值 

合约调查,不考虑 UID 

file_chown

缺省值 

文件所有权更改 

file_chown_self

缺省值 

拥有文件的属主/组更改 

file_dac_execute

缺省值 

执行访问权限,不考虑模式/ACL 

file_dac_read

缺省值 

读取访问权限,不考虑模式/ACL 

file_dac_search

缺省值 

搜索访问权限,不考虑模式/ACL 

file_dac_write

缺省值 

写入访问权限,不考虑模式/ACL 

file_link_any

缺省值 

链接访问权限,不考虑属主 

file_owner

缺省值 

其他访问权限,不考虑属主 

file_setid

缺省值 

更改 setidsetgidsetuid 文件的权限

ipc_dac_read

缺省值 

IPC 读取访问权限,不考虑模式 

ipc_dac_owner

缺省值 

IPC 写入访问权限,不考虑模式 

ipc_owner

缺省值 

IPC 其他访问权限,不考虑模式 

net_icmpaccess

缺省值 

ICMP 包访问权限: ping(1M)

net_privaddr

缺省值 

绑定到特权端口 

proc_audit

缺省值 

生成审计记录 

proc_chroot

缺省值 

更改 root 目录

proc_info

缺省值 

检查进程 

proc_lock_memory

缺省值 

锁定内存;shmctl(2) 和 mlock(3C)

如果系统管理员要将此权限分配给非全局区域,请同时考虑设置 zone.max-locked-memory 资源控制以防止区域锁定所有内存。

proc_owner

缺省值 

控制进程,不考虑属主 

proc_session

缺省值 

控制进程,不考虑会话 

proc_setid

缺省值 

任意设置用户/组 ID 

proc_taskid

缺省值 

将任务 ID 分配给调用方 

sys_acct

缺省值 

记帐管理 

sys_admin

缺省值 

简单的系统管理任务 

sys_audit

缺省值 

审计管理 

sys_nfs

缺省值 

NFS 客户端支持 

sys_resource

缺省值 

资源限制处理 

下表列出了区域中所有 Solaris Trusted Extensions(高可靠扩展版)权限,以及每个权限的状态。缺省权限集不包含可选权限,但可以通过 limitpriv 属性指定它们。


注 –

仅当使用 Solaris Trusted Extensions(高可靠扩展版)配置了系统时,才会解释这些权限。


表 27–2 区域中 Solaris Trusted Extensions(高可靠扩展版)权限的状态

Solaris Trusted Extensions(高可靠扩展版)权限 

状态 

说明 

file_downgrade_sl

可选 

将文件或目录的敏感度标签设置为不影响现有敏感度标签的敏感度标签 

file_upgrade_sl

可选 

将文件或目录的敏感度标签设置为影响现有敏感度标签的敏感度标签 

sys_trans_label

可选 

转换优先级低于敏感度标签的标签 

win_colormap

可选 

颜色映射限制覆盖 

win_config

可选 

配置或销毁 X 服务器永久保留的资源 

win_dac_read

可选 

从非客户机用户 ID 拥有的窗口资源中进行读取 

win_dac_write

可选 

写入或创建非客户机用户 ID 拥有的窗口资源 

win_devices

可选 

在输入设备上执行操作。 

win_dga

可选 

使用直接图形访问 X 协议扩展;需要帧缓冲权限 

win_downgrade_sl

可选 

将窗口资源的敏感度标签更改为优先级低于现有标签的新标签 

win_fontpath

可选 

添加其他字体路径 

win_mac_read

可选 

从其标签优先级高于客户机标签的窗口资源中进行读取 

win_mac_write

可选 

写入其标签优先级与客户机标签优先级不同的窗口资源 

win_selection

可选 

请求移动数据,而无需确认者介入 

win_upgrade_sl

可选 

将窗口资源的敏感度标签更改为优先级不低于现有标签的新标签 

net_bindmlp

缺省值 

允许绑定到多级端口 (MLP) 

net_mac_aware

缺省值 

允许通过 NFS 向下读取 

要在配置非全局区域过程中更改权限,请参见配置、检验并提交区域

要检查权限集,请参见使用 ppriv 实用程序。有关权限的更多信息,请参见 ppriv(1) 手册页和《系统管理指南:安全性服务》。

在区域中使用 IP 安全体系结构

可提供 IP 数据报保护的 Internet 协议安全体系结构 (Internet Protocol Security Architecture, IPsec) 将在《系统管理指南:IP 服务》中的第 19  章 “IP 安全体系结构(概述)”进行介绍。Internet 密钥交换 (Internet Key Exchange, IKE) 协议用于自动管理进行验证和加密所需的加密材料。

有关更多信息,请参见 ipsecconf(1M)ipseckey(1M) 手册页。

共享 IP 区域中的 IP 安全体系结构

IPsec 可以在全局区域中使用。但是,非全局区域中的 IPsec 不能使用 IKE。因此,您必须在全局区域中使用 Internet 密钥交换 (Internet Key Exchange, IKE) 协议来为非全局区域管理 IPsec 密钥和策略。请使用对应于要配置的非全局区域的源地址。

Solaris 10 8/07:专用 IP 区域中的 IP 安全体系结构

IPsec 可以在专用 IP 区域中使用。

在区域中使用 Solaris 审计

Solaris 审计将在《系统管理指南:安全性服务》中的第 27  章 “Solaris 审计(概述)”进行介绍。有关与审计关联的区域注意事项,请参见以下各节:

审计记录用于介绍事件,例如登录到系统或写入文件。记录由作为审计数据集合的标记组成。使用 zonename 标记,可以配置 Solaris 审计来标识每个区域的审计事件。使用 zonename 标记,可以生成以下信息:

在全局区域中配置审计

Solaris 审计跟踪在全局区域中配置。审计策略在全局区域中设置并应用于所有区域中的进程。审计记录可以使用发生事件的区域名称进行标记。要在审计记录中包括区域名称,必须在安装任何非全局区域之前编辑 /etc/security/audit_startup 文件。区域名称选择区分大小写。

要在全局区域中将审计配置为包括所有区域审计记录,请将以下行添加到 /etc/security/audit_startup 文件:


/usr/sbin/auditconfig -setpolicy +zonename

以全局区域中全局管理员的身份执行 auditconfig 实用程序:


global# auditconfig -setpolicy +zonename

有关其他信息,请参见 audit_startup(1M)auditconfig(1M) 手册页以及《系统管理指南:安全性服务》中的“配置审计文件(任务列表)”。

在非全局区域中配置用户审计特征

安装了非全局区域之后,便可将全局区域中的 audit_control 文件和 audit_user 文件复制到此区域的 /etc/security 目录。这些文件可能需要进行修改以反映此区域的审计需求。

例如,可以将每个区域配置为以不同的方式审计某些用户。要按用户应用不同的预选条件,必须编辑 audit_controlaudit_user 文件。如有必要,还可能需要修改非全局区域中的 audit_user 文件以反映区域的用户基础。由于可以针对审计用户以不同的方式配置每个区域,因此,audit_user 文件可能为空。

有关其他信息,请参见 audit_control(4)audit_user(4) 手册页。

为特定的非全局区域提供审计记录

通过如在全局区域中配置审计中所述包括 zonename 标记,可以按区域对 Solaris 审计记录进行分类。然后,可以使用 auditreduce 命令收集来自不同区域的记录,从而为特定区域创建日志。

有关更多信息,请参见 audit_startup(1M)auditreduce(1M) 手册页。

区域中的核心转储文件

coreadm 命令用于指定因异常终止进程而生成的核心转储文件的名称和位置。通过指定 %z 变量,可以生成核心转储文件路径,此路径包括执行进程的区域的 zonename。路径名相对于区域的根目录。

有关更多信息,请参见 coreadm(1M)core(4) 手册页。

在非全局区域中运行 DTrace

只需要 dtrace_procdtrace_user 权限的 DTrace 程序可以在非全局区域中运行。要将这些权限添加到非全局区域中的可用权限的集合中,请使用 zonecfg limitpriv 属性。有关说明,请参见如何使用 DTrace

通过 dtrace_proc 支持的提供器是 fasttrappid。通过 dtrace_user 支持的提供器是 profilesyscall。DTrace 提供器和操作的范围限制在区域内。

有关更多信息,请参见非全局区域中的权限

关于备份安装了区域的 Solaris 系统

可以在单个非全局区域中执行备份,也可以在全局区域中备份整个系统。

备份回送文件系统目录

由于许多非全局区域通过使用回送文件系统只读挂载(通常为 /usr/lib/sbin/platform)与全局区域共享文件,因此,必须使用全局区域备份方法来备份 lofs 目录。


注意 – 注意 –

请不要在非全局区域中备份与全局区域共享的 lofs 文件系统。如果非全局管理员尝试从非全局区域中恢复 lofs 文件系统,则可能会导致严重问题。


在全局区域中备份系统

在以下情况下,可能会选择在全局区域中执行备份:

在系统上备份单个非全局区域

在以下情况下,可能会决定在非全局区域内执行备份。

确定在非全局区域中备份的内容

可以在非全局区域中备份所有内容,或者,如果区域的配置更改并不频繁,也可以仅对应用程序数据执行备份。

仅备份应用程序数据

如果应用程序数据保存在文件系统的特定部分,则可以决定仅对此数据执行常规备份。可以不必经常备份区域的根文件系统,因为其更改并不频繁。

必须确定应用程序放置其文件的位置。可以存储文件的位置如下:

假设应用程序管理员知道数据的存储位置,则可以创建一个系统,其中每个区域均可使用其各自的可写目录。然后,每个区域可以存储自己的备份数据,并且全局管理员可以将此位置作为系统上的备份位置之一。

常规数据库备份操作

如果数据库应用程序数据不在自己的目录下,则应用以下规则:

磁带备份

每个非全局区域都可以对自己的专用文件系统捕获快照,前提是此区域便于执行快照并且应用程序处于暂时静止状态。随后,全局区域可以备份每个快照,并在应用程序再次使用之后将备份放置在磁带上。

此方法具有如下优点:

关于恢复非全局区域

如果恢复在全局区域中执行的备份,则全局管理员可以重新安装受影响的区域,然后恢复该区域的文件。请注意,上述情况以下面的假设为前提:

否则,恢复操作可能会覆写某些应手动合并的文件。

例如,如果全局区域在备份之后和恢复非全局区域之前已进行修补,则可能需要手动合并文件。在这种情况下,恢复已备份的区域文件时必须谨慎,因为备份文件可能与新安装的区域(此区域在将修补程序应用到全局区域之后生成)不兼容。在这种情况下,必须逐个检查文件并将它们与新安装的区域中的副本进行比较。在多数情况下,会发现可以直接在区域中复制文件,但在某些情况下,必须将最初对文件所做的更改合并到区域中新安装或修补的副本中。


注 –

如果全局区域中的所有文件系统均已丢失,则只要备份非全局区域各自的根文件系统,恢复全局区域中的所有内容时也会恢复非全局区域。


在安装了区域的 Solaris 系统上使用的命令

表 27–3 中列出的命令提供了区域功能的主要管理接口。

表 27–3 用于管理区域的命令

命令参考 

说明 

zlogin(1)

登录到非全局区域 

zonename(1)

显示当前区域的名称 

zoneadm(1M)

管理系统上的区域 

zonecfg(1M)

用于设置区域配置 

getzoneid(3C)

用于在区域 ID 和区域名称之间进行映射 

zones(5)

提供区域功能的说明 

zcons(7D)

区域控制台设备驱动程序 

zoneadmd 守护进程是管理区域虚拟平台的主要进程。zoneadmd 守护进程的手册页为 zoneadmd(1M)。此守护进程并没有构成编程接口。

下表中的命令可与资源上限设置守护进程结合使用。

表 27–4 用于 rcapd 的命令

命令参考 

说明 

rcapstat(1)

监视具有上限的项目的资源利用率。 

rcapadm(1M)

配置资源上限设置守护进程,显示已配置的资源上限设置守护进程的当前状态,以及启用或禁用资源上限设置。还可用于设置临时内存上限。 

rcapd(1M)

资源上限设置守护进程。 

下表中介绍的命令已被修改为可在安装了区域的 Solaris 系统上使用。这些命令具有的选项特定于区域或者以不同的方式显示信息。这些命令将在手册页中列出。

表 27–5 修改为可在安装了区域的 Solaris 系统上使用的命令

命令参考 

说明 

ipcrm(1)

添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。

ipcs(1)

添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。

pgrep(1)

添加了 -z zoneidlist 选项。只有在全局区域中执行命令时,此选项才有用。

ppriv(1)

添加了表达式 zone,以便与 -l 选项一起使用来列出当前区域中的所有可用权限。还可以在 zone 后使用选项 -v 来获取详细输出。

priocntl(1)

可以在 idlist-i idtype 中使用区域 ID 来指定进程。在非全局区域中,可以使用 priocntl -i zoneid 命令将正在运行的进程移至其他调度类。

proc(1)

仅向 ptree 中添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。

ps(1)

向与 -o 选项一起使用的已识别 format 名称的列表中添加了 zonenamezoneid

添加了 -z zonelist 以便仅列出指定区域中的进程。可以通过区域名称或区域 ID 指定区域。只有在全局区域中执行命令时,此选项才有用。

添加了 -Z 以便显示与进程关联的区域的名称。区域名称在另一个列标题 ZONE 下显示。

renice(1)

向与 -i 选项一起使用的有效参数的列表中添加了 zoneid

sar(1)

如果在启用了池功能的非全局区域中执行,则 -b-c-g-m-p-u-w-y 选项仅针对绑定有区域的池的处理器集中的处理器显示值。

auditconfig(1M)

添加了 zonename 标记。

auditreduce(1M)

添加了 -z zone-name 选项。新增了获取区域审计日志的功能。

coreadm(1M)

添加了变量 %z 以便标识执行进程的区域。

df(1M)

添加了 -Z 选项以便显示所有可见区域中的挂载。

ifconfig(1M)

添加了 zone 选项以用于全局区域(缺省设置),添加了 -zone zonename 以用于非全局区域。

iostat(1M)

如果在启用了池功能的非全局区域中执行,则仅针对绑定有区域的池的处理器集中的那些处理器提供信息。 

kstat(1M)

如果在全局区域中执行,将针对所有区域显示 kstat。如果在非全局区域中执行,则只显示具有匹配 zoneidkstat

mpstat(1M)

如果在启用了池功能的非全局区域中执行,则命令仅针对绑定有区域的池的处理器集中的处理器显示行。 

ndd(1M)

在全局区域中使用时,会显示所有区域的信息。在专用 IP 区域中,对 TCP/IP 模块执行的 ndd 只显示该区域的信息。

netstat(1M)

仅显示当前区域的信息。 

nfsstat(1M)

仅显示当前区域的统计信息。 

poolbind(1M)

添加了 zoneid 列表。有关使用具有资源池的区域的信息,另请参见区域中使用的资源池

prstat(1M)

添加了 -z zoneidlist 选项。还添加了 -Z 选项。

如果在启用了池功能的非全局区域中执行,则仅针对绑定有区域的池的处理器集中的处理器显示进程所用最近 CPU 时间的百分比。 

-a-t-T-J-Z 选项的输出显示 SWAP,而不是 SIZE 列。报告的交换是区域进程和 tmpfs 挂载所使用的总交换量。此值有助于监视每个区域预留的交换空间,可用于选择合理的 zone.max-swap 设置。

psrinfo(1M)

如果在非全局区域中执行,则仅显示有关区域可见的处理器的信息。 

traceroute(1M)

用法更改。在非全局区域中指定时,-F 选项不起作用,因为始终设置了“不要分段”位。

vmstat(1M)

在启用了池功能的非全局区域中执行时,仅针对绑定有区域的池的处理器集中的处理器报告统计信息。应用于 -p 选项以及 pagefaultscpu 等报告字段的输出。

auditon(2)

添加了 AUDIT_ZONENAME 以便生成每个审计记录的区域 ID 标记。

priocntl(2)

添加了 P_ZONEID id 参数。

processor_info(2)

如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 

p_online(2)

如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 

pset_bind(2)

添加了 P_ZONEID 作为 idtype。添加了区域作为可能的 P_MYID 规范选项。向 EINVAL 错误说明中的有效 idtype 列表中添加了 P_ZONEID

pset_info(2)

如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 

pset_list(2)

如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 

pset_setattr(2)

如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 

sysinfo(2)

PRIV_SYS_CONFIG 更改为 PRIV_SYS_ADMIN

umount(2)

如果 file 指向的文件不是绝对路径,则会返回 ENOENT

getloadavg(3C)

如果调用方位于非全局区域中并且启用了池功能,则此行为相当于使用 PS_MYIDpsetid 进行调用。

getpriority(3C)

向可以指定的目标进程中添加了区域 ID。向 EINVAL 错误说明中添加了区域 ID。

priv_str_to_set(3C)

针对调用方区域内的所有可用权限的集合添加了 "zone" 字符串。 

pset_getloadavg(3C)

如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 

sysconf(3C)

如果调用方位于非全局区域中并且启用了池功能,则 sysconf(_SC_NPROCESSORS_CONF)sysconf(_SC_NPROCESSORS_ONLN) 将返回绑定有区域的池的处理器集中的处理器数。

ucred_get(3C)

添加了 ucred_getzoneid() 函数,此函数将返回处理器的区域 ID 或 -1(如果未提供区域 ID)。

core(4)

添加了 n_type: NT_ZONENAME。此项包含一个描述运行进程的区域名称的字符串。

pkginfo(4)

现在,提供了可选参数和一个环境变量来支持区域。 

proc(4)

添加了获取区域中所运行进程的相关信息的功能。 

audit_syslog(5)

添加了在设置 zonename 审计策略时使用的 in<zone name > 字段。

privileges(5)

添加了 PRIV_PROC_ZONE,它允许某个进程跟踪其他区域中的进程或向这些进程发送信号。请参见 zones(5)。

if_tcp(7P)

添加了区域 ioctl() 调用。

cmn_err(9F)

添加了区域参数。 

ddi_cred(9F)

添加了 crgetzoneid(),它将从 cr 指向的用户证书中返回区域 ID。

第 28 章 Solaris Zones 管理(任务)

本章介绍一般管理任务并提供用法示例。

本章新增内容

本节列出新增产品功能以及本指南中的新增内容。

有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

本章中针对 Solaris 10 1/06 的新增内容

添加了一种访问介质的新过程。请参见如何在非全局区域中添加对 CD 或 DVD 介质的访问权限

添加了一种在区域中备份和恢复文件的新过程。请参见备份安装了区域的 Solaris 系统恢复非全局区域

本章中针对 Solaris 10 6/06 的新增内容

添加了一些新过程。请参见如何将文件系统从全局区域挂载到非全局区域如何在非全局区域中的 /usr 下添加可写目录

本章中针对 Solaris 10 8/07 的新增内容

添加了一些新过程。请参见如何使用 DTraceSolaris 10 8/07:在专用 IP 非全局区域中管理数据链路检查非全局区域中的 SMF 服务的状态

使用 ppriv 实用程序

使用 ppriv 实用程序可以显示区域的权限。

Procedure如何列出全局区域中的 Solaris 权限

可使用 ppriv 实用程序的 -l 选项列出该系统中可用的权限。

  1. 在提示符下,键入 ppriv -l zone 报告区域中的一组可用权限。


    global# ppriv -l zone
    

    将显示以下类似信息:


    contract_event
    contract_observer
    cpc_cpu
    .
    .
    .

Procedure如何列出非全局区域的权限集

可以使用带有 -l 选项和表达式 zoneppriv 实用程序列出区域的权限。

  1. 登录到非全局区域。此示例使用名为 my-zone 的区域。

  2. 在提示符下,键入 ppriv -l zone 报告区域中的一组可用权限。


    my-zone# ppriv -l zone
    

    将显示以下类似信息:


    contract_event
    contract_observer
    file_chown
    
    .
    .
    .

Procedure如何列出带有详细输出的非全局区域的权限集

可以使用带有 -l 选项、表达式 zone,以及 -v 选项的 ppriv 实用程序列出区域的权限。

  1. 登录到非全局区域。此示例使用名为 my-zone 的区域。

  2. 在提示符下,键入 ppriv -l -v zone 报告区域中的一组可用权限,同时给出每个权限的说明。


    my-zone# ppriv -l -v zone
    

    将显示以下类似信息:


    contract_event
            Allows a process to request critical events without limitation.
            Allows a process to request reliable delivery of all events on
            any event queue.
    contract_observer
            Allows a process to observe contract events generated by
            contracts created and owned by users other than the process's
            effective user ID.
            Allows a process to open contract event endpoints belonging to
            contracts created and owned by users other than the process's
            effective user ID.
    file_chown
            Allows a process to change a file's owner user ID.
            Allows a process to change a file's group ID to one other than
            the process' effective group ID or one of the process'
            supplemental group IDs.
    .
    .
    .

在非全局区域中使用 DTrace

执行以下步骤,以使用在非全局区域中运行 DTrace中所述的 DTrace 功能。

Procedure如何使用 DTrace

  1. 使用 zonecfg limitpriv 属性添加 dtrace_procdtrace_user 权限。


    global# zonecfg -z my-zone
    zonecfg:my-zone> set limitpriv="default,dtrace_proc,dtrace_user"
    zonecfg:my-zone> exit
    

    注 –

    可以根据需要添加其中一个权限或同时添加这两个权限。


  2. 引导区域。


    global# zoneadm -z my-zone boot
    
  3. 登录到区域。


    global# zlogin my-zone
    
  4. 运行 DTrace 程序。


    my-zone# dtrace -l
    

检查非全局区域中的 SMF 服务的状态

要检查本地非全局区域中的 SMF 服务的状态,请使用 zlogin 命令。

Procedure如何从命令行检查 SMF 服务的状态

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在命令行中键入以下内容,以显示所有服务,包括禁用的服务。


    global# zlogin my-zone svcs -a
    
另请参见

有关更多信息,请参见第 22 章svcs(1)

Procedure如何从区域内检查 SMF 服务的状态

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 登录到区域。


    global# zlogin my-zone
    
  3. 运行带有 -a 选项的 svcs 命令,以显示所有服务,包括禁用的服务。


    my-zone# svcs -a
    
另请参见

有关更多信息,请参见第 22 章svcs(1)

在正在运行的非全局区域中挂载文件系统

可以在正在运行的非全局区域中挂载文件系统。包括以下过程。

Procedure如何使用 zonecfg 导入原始设备和块设备

此过程使用 lofi 文件驱动程序,此驱动程序可以将文件导出为块设备。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 转到 /usr/tmp 目录。


    global# cd /usr/tmp
    
  3. 创建一个新的 UFS 文件系统。


    global# mkfile 10m fsfile
    
  4. 将文件作为块设备进行连接。

    如果没有创建其他 lofi 设备,则会使用第一个可用插槽 /dev/lofi/1


    global# lofiadm -a `pwd`/fsfile
    

    您也将获得所需的字符设备。

  5. 将设备导入区域 my-zone


    global# zonecfg -z my-zone
    zonecfg:my-zone> add device
    zonecfg:my-zone:device> set match=/dev/rlofi/1
    zonecfg:my-zone:device> end
    zonecfg:my-zone> add device
    zonecfg:my-zone:device> set match=/dev/lofi/1
    zonecfg:my-zone:device> end
    
  6. 重新引导区域。


    global# zoneadm -z my-zone boot
    
  7. 登录到区域并检验设备是否成功导入。


    my-zone# ls  -l /dev/*lofi/*
    

    将显示以下类似信息:


    brw-------   1 root     sys      147,  1 Jan  7 11:26 /dev/lofi/1
    crw-------   1 root     sys      147,  1 Jan  7 11:26 /dev/rlofi/1
另请参见

有关更多信息,请参见 lofiadm(1M)lofi(7D) 手册页。

Procedure如何手动挂载文件系统

要执行此过程,您必须是区域管理员并且拥有区域管理配置文件。此过程使用在 newfs(1M) 手册页中介绍的 newfs 命令。

  1. 成为超级用户,或者在您的配置文件列表中具有区域管理权限配置文件。

  2. 在区域 my-zone 中,在磁盘上创建一个新的文件系统。


    my-zone# newfs /dev/lofi/1
    
  3. 出现提示时回答是。


    newfs: construct a new file system /dev/rlofi/1: (y/n)? y
    

    将显示以下类似信息:


    /dev/rlofi/1:   20468 sectors in 34 cylinders of 1 tracks, 602 sectors
            10.0MB in 3 cyl groups (16 c/g, 4.70MB/g, 2240 i/g)
    super-block backups (for fsck -F ufs -o b=#) at:
     32, 9664, 19296,
  4. 检查文件系统是否有错误。


    my-zone# fsck -F ufs /dev/rlofi/1
    

    将显示以下类似信息:


    ** /dev/rlofi/1
    ** Last Mounted on 
    ** Phase 1 - Check Blocks and Sizes
    ** Phase 2 - Check Pathnames
    ** Phase 3 - Check Connectivity
    ** Phase 4 - Check Reference Counts
    ** Phase 5 - Check Cyl groups
    2 files, 9 used, 9320 free (16 frags, 1163 blocks, 0.2% fragmentation)
  5. 挂载文件系统。


    my-zone# mount -F ufs /dev/lofi/1 /mnt
    
  6. 检验挂载。


    my-zone# grep /mnt /etc/mnttab
    

    将显示以下类似信息:


    /dev/lofi/1     /mnt    ufs
    rw,suid,intr,largefiles,xattr,onerror=panic,zone=foo,dev=24c0001
    1073503869

Procedure如何将文件系统放入 /etc/vfstab 以在引导区域时挂载

此过程用于在文件系统路径 /mnt 上挂载块设备 /dev/lofi/1。块设备包含一个 UFS 文件系统。将使用以下选项:

  1. 成为超级用户,或者在您的配置文件列表中具有区域管理权限配置文件。

  2. 在区域 my-zone中,向 /etc/vfstab 添加以下行:


    /dev/lofi/1 /dev/rlofi/1  /mnt   ufs  2  yes logging

Procedure如何将文件系统从全局区域挂载到非全局区域

假设区域中有 zonepath /export/home/my-zone。您需要将磁盘 /dev/lofi/1 从全局区域挂载到非全局区域中的 /mnt

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 要将磁盘挂载到非全局区域中的 /mnt,请在全局区域中键入以下内容:


    global# mount -F ufs /dev/lofi/1 /export/home/my-zone/root/mnt
    
另请参见

有关 lofi 的信息,请参见 lofiadm(1M) 和 lofi(7D) 手册页。

在全局区域中添加非全局区域对特定文件系统的访问权限

Procedure如何在非全局区域中添加对 CD 或 DVD 介质的访问权限

借助此过程,您可以在非全局区域中添加对 CD 或 DVD 介质的只读访问权限。在全局区域中,使用 Volume Management 文件系统来挂载介质。然后可以使用 CD 或 DVD 在非全局区域中安装产品。此过程使用名为 jes_05q4_dvd 的 DVD。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 确定 Volume Management 文件系统是否正在全局区域中运行。


    global# svcs volfs
    STATE          STIME    FMRI
    online         Sep_29   svc:/system/filesystem/volfs:default
  3. (可选)如果 Volume Management 文件系统没有在全局区域中运行,则启动它。


    global# svcadm volfs enable
    
  4. 插入介质。

  5. 检查驱动器中的介质。


    global# volcheck
    
  6. 测试 DVD 是否自动挂载。


    global# ls /cdrom
    

    将显示以下类似信息:


    cdrom   cdrom1   jes_05q4_dvd
  7. 在非全局区域中使用选项 ro,nodevices(只读并且无设备)来回送挂载文件系统。


    global# zonecfg -z my-zone
    zonecfg:my-zone> add fs
    zonecfg:my-zone:fs> set dir=/cdrom
    zonecfg:my-zone:fs> set special=/cdrom
    zonecfg:my-zone:fs> set type=lofs
    zonecfg:my-zone:fs> add options [ro,nodevices]
    zonecfg:my-zone:fs> end
    zonecfg:my-zone> commit
    zonecfg:my-zone> exit
    
  8. 重新引导非全局区域。


    global# zoneadm -z my-zone reboot
    
  9. 使用带有 -v 选项的 zoneadm list 命令来检验状态。


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     1  my-zone  running      /export/home/my-zone           native     shared
  10. 登录到非全局区域。


    global# zlogin my-zone
    
  11. 检验 DVD-ROM 挂载。


    my-zone# ls /cdrom
    

    将显示以下类似信息:


    cdrom   cdrom1   jes_05q4_dvd
  12. 按照产品安装指南中的介绍安装产品。

  13. 退出非全局区域。


    my-zone# exit
    

    提示 –

    您可能需要在非全局区域中保留 /cdrom 文件系统。挂载始终反映 CD-ROM 驱动器的当前内容,如果驱动器为空,则反映为一个空目录。


  14. (可选)如果想要从非全局区域中删除 /cdrom 文件系统,请使用以下过程。


    global# zonecfg -z my-zone
    zonecfg:my-zone> remove fs dir=/cdrom
    zonecfg:my-zone> commit
    zonecfg:my-zone> exit
    

Procedure如何在非全局区域中的 /usr 下添加可写目录

在稀疏根区域中,/usr 从全局区域挂载为只读状态。可以使用此过程添加一个可写目录,如区域中 /usr 下的 /usr/local

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在全局区域中创建目录 /usr/local


    global# mkdir -p /usr/local
    
  3. 在全局区域中指定一个目录作为该区域中 /usr/local 目录的后备存储。


    global# mkdir -p /storage/local/my-zone
    
  4. 编辑区域 my-zone 的配置。


    global# zonecfg -z my-zone
    
  5. 添加回送挂载的文件系统。


    zonecfg:my-zone> add fs
    zonecfg:my-zone:fs> set dir=/usr/local
            zonecfg:my-zone:fs> set special=/storage/local/my-zone
            zonecfg:my-zone:fs> set type=lofs
            zonecfg:my-zone:fs> end
            zonecfg:my-zone> commit
            zonecfg:my-zone> exit
    
  6. 引导区域。

Procedure如何将全局区域中的起始目录导出到非全局区域

此过程用于将起始目录或其他文件系统从全局区域导出到同一系统上的非全局区域。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 添加回送挂载的文件系统。


    global# zonecfg -z my-zone
    zonecfg:my-zone> add fs
    zonecfg:my-zone:fs> set dir=/export/home
    zonecfg:my-zone:fs> set special=/export/home
    zonecfg:my-zone:fs> set type=lofs
    zonecfg:my-zone:fs> set options=nodevices
    zonecfg:my-zone:fs> end
    zonecfg:my-zone> commit
    zonecfg:my-zone> exit
    
  3. 向区域的 /etc/auto_home 文件添加以下行:


    $HOST:/export/home/&

在安装了区域的 Solaris 系统上使用 IP 网络多路径

ProcedureSolaris 10 8/07:如何在专用 IP 非全局区域中使用 IP 网络多路径

可以按在全局区域中的配置方式在专用 IP 区域中配置 IP 网络多路径 (IP Network Multipathing, IPMP)。

您可以将一个或多个物理接口配置到一个 IP 多路径组或 IPMP 组中。配置 IPMP 后,系统将自动监视 IPMP 组中的接口是否出现故障。如果该组中的接口出现故障或被删除以进行维护,则 IPMP 会自动迁移或故障转移故障接口的 IP 地址。这些地址的接收者是故障接口的 IPMP 组中的工作接口。IPMP 的故障转移功能可以保持连接并防止断开任何现有连接。此外,通过自动在 IPMP 组中的一组接口中分配网络通信流量,IPMP 提高了总体网络性能。此过程称作负荷分配。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 按照《系统管理指南:IP 服务》中的“配置 IPMP 组”中的说明配置 IPMP 组。

Procedure如何将 IP 网络多路径功能扩展到共享 IP 非全局区域

使用此过程可以在全局区域中配置 IPMP,并将 IPMP 功能扩展到非全局区域。

当您配置区域时,每个地址或逻辑接口都应当与非全局区域相关联。有关说明,请参见使用 zonecfg 命令如何配置区域

此过程将实现以下内容:

在正在运行的区域中,可以使用 ifconfig 命令来建立关联。请参见共享 IP 网络接口ifconfig(1M) 手册页。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在全局区域中,按照《系统管理指南:IP 服务》中的“配置 IPMP 组”中的说明配置 IPMP 组。

  3. 使用 zonecfg 命令配置区域。当您配置 net 资源时,请将地址 192.168.0.1、物理接口 bge0 和缺省路由器设置添加到区域 my-zone


    zonecfg:my-zone> add net
    zonecfg:my-zone:net> set address=192.168.0.1
    zonecfg:my-zone:net> set physical=bge0
    zonecfg:my-zone:net> set defrouter=10.0.0.1
    zonecfg:my-zone:net> end
    

    在非全局区域 my-zone 中只有 bge0 可见。

如果 bge0 随后出现故障

如果 bge0 随后出现故障,并且 bge0 数据地址故障转移到全局区域中的 hme0,则 my-zone 地址也会迁移。

如果地址 192.168.0.1 移至 hme0,此时在非全局区域 my-zone 中只有 hme0 可见。该卡将与地址 192.168.0.1 相关联,并且 bge0 将不再可见。

Solaris 10 8/07:在专用 IP 非全局区域中管理数据链路

在全局区域中可使用 dladm 命令管理数据链路。

Procedure如何使用 dladm show-linkprop

可以将 dladm 命令与 show-linkprop 子命令一起使用,以显示正在运行的专用 IP 区域的数据链路分配。

要管理数据链路,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 显示系统中数据链路的分配。


    global# dladm show-linkprop
    

示例 28–1 将 dladmshow-linkprop 子命令一起使用

  1. 在第一个屏幕中,没有引导分配了 bge0 的区域 49bge


    global# dladm show-linkprop
    LINK         PROPERTY        VALUE          DEFAULT        POSSIBLE
    bge0         zone            --             --             --
    ath0         channel         6              --             --
    ath0         powermode       ?              off            off,fast,max
    ath0         radio           ?              on             on,off
    ath0         speed           11             -- 
    1,2,5.5,6,9,11,12,18,24,36,48,54
    ath0         zone            --             --             --
  2. 引导区域 49bge


    global# zoneadm -z 49bge boot
    
  3. 再次运行 dladm show-linkprop 命令。请注意,bge0 链路现在分配给了 49bge


    global# dladm show-linkprop
    LINK         PROPERTY        VALUE          DEFAULT        POSSIBLE
    bge0         zone            49bge          --             --
    ath0         channel         6              --             --
    ath0         powermode       ?              off            off,fast,max
    ath0         radio           ?              on             on,off
    ath0         speed           11             -- 
    1,2,5.5,6,9,11,12,18,24,36,48,54
    ath0         zone            --             --             --

Procedure如何使用 dladm set-linkprop

可以将 dladm 命令与 set-linkprop 子命令一起使用,以临时向正在运行的专用 IP 区域分配数据链路。必须使用 zonecfg 命令进行持久性分配。

要管理数据链路,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -tdladm set-linkpropbge0 添加到正在运行的名为 excl 的区域。


    global# dladm set-linkprop -t -p zone=excl bge0
    LINK         PROPERTY        VALUE          DEFAULT        POSSIBLE
    bge0         zone            excl           --             --

    提示 –

    -p 选项会生成一个显示内容,其格式为稳定的机器可解析格式。


Procedure如何使用 dladm reset-linkprop

可以将 dladm 命令与 reset-linkprop 子命令一起使用,以将 bge0 链路值重置为未分配状态。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -tdladm reset-linkprop 撤消 bge0 设备的区域分配。


    global# dladm reset-linkprop -t -p zone=excl bge0
    LINK         PROPERTY        VALUE          DEFAULT        POSSIBLE
    bge0         zone            excl           --             --

    提示 –

    -p 选项会生成一个显示内容,其格式为稳定的机器可解析格式。


故障排除

如果正在运行的区域在使用该设备,则重新分配将失败,并显示一条错误消息。请参见专用 IP 区域正在使用设备,因此 dladm reset-linkprop 失败

在安装了区域的 Solaris 系统上使用公平份额调度器

通过 prctl 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。要在区域中设置永久性份额,请参见如何配置区域如何在全局区域中设置 zone.cpu-shares

Procedure如何使用 prctl 命令在全局区域中设置 FSS 份额

缺省情况下,为全局区域提供一个份额。可以使用此过程来更改缺省分配。请注意,只要重新引导系统,就必须重置通过 prctl 命令分配的份额。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用 prctl 实用程序为全局区域分配两个份额:


    # prctl -n zone.cpu-shares -v 2 -r -i zone global
    
  3. (可选)要检验为全局区域分配的份额数,请键入:


    # prctl -n zone.cpu-shares -i zone global
    
另请参见

有关 prctl 实用程序的更多信息,请参见 prctl(1) 手册页。

Procedure如何在区域中动态更改 zone.cpu-shares 的值

此过程可用于任何区域,而不仅仅是全局区域。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建角色并将角色指定给用户的信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用 prctl 命令为 cpu-shares 指定一个新值。


    # prctl -n zone.cpu-shares -r -v value -i zone zonename
    

    idtypezonenamezoneidvalue 为新值。

在区域管理中使用权限配置文件

本节包含与在非全局区域中使用权限配置文件关联的任务。

Procedure如何分配区域管理配置文件

区域管理配置文件授予用户管理系统上所有非全局区域的权力。

要执行此过程,您必须是全局区域中的全局管理员。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 创建一个包括区域管理权限配置文件的角色并将其指定给用户。

示例-结合使用配置文件 Shell 和区域命令

可以使用 pfexec 程序在配置文件中执行区域命令。该程序使用 exec_attr 数据库中的用户配置文件指定的属性执行命令。该程序由配置文件 shell pfkshpfcshpfsh 进行调用。

使用 pfexec 程序可以登录到区域(例如 my-zone)。


machine$ pfexec zlogin my-zone

备份安装了区域的 Solaris 系统

以下过程可以用于在区域中备份文件。同时,请记住还要备份区域的配置文件。

Procedure如何使用 ufsdump 命令执行备份

可以使用 ufsdump 命令执行完整备份或增量备份。此过程将区域 /export/my-zone 备份到 /backup/my-zone.ufsdump,其中 my-zone 将被替换为您的系统上的区域的名称。您可能需要一个单独的文件系统(例如,在 /backup 上挂载的文件系统),来保存备份。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. (可选)关闭区域以使其处于停顿状态,从而避免创建共享文件系统的备份。


    global# zlogin -S my-zone init 0
    
  3. 查看区域状态。


    global# zoneadm list -cv
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /export/home/my-zone           native     shared
  4. 执行备份。


    global# ufsdump 0f /backup/my-zone.ufsdump /export/my-zone
    

    将显示以下类似信息:


    DUMP: Date of this level 0 dump: Wed Aug 10 16:13:52 2005
    DUMP: Date of last level 0 dump: the epoch
    DUMP: Dumping /dev/rdsk/c0t0d0s0 (bird:/) to /backup/my-zone.ufsdump. 
    DUMP: Mapping (Pass I) [regular files]
    DUMP: Mapping (Pass II) [directories]
    DUMP: Writing 63 Kilobyte records
    DUMP: Estimated 363468 blocks (174.47MB).
    DUMP: Dumping (Pass III) [directories]
    DUMP: Dumping (Pass IV) [regular files]
    DUMP: 369934 blocks (180.63MB) on 1 volume at 432 KB/sec
    DUMP: DUMP IS DONE
  5. 引导区域。


    global# zoneadm -z my-zone boot
    

Procedure如何使用 fssnap 创建 UFS 快照

此方法使用 fssnap 命令,此命令会创建用于备份操作的文件系统的临时映像。

此方法只能用于提供一个全新、一致的区域文件备份,并且可以在区域运行时执行。但是,最好在创建快照时暂停或检查正在更新文件的活动应用程序。在创建快照时更新文件的应用程序可能会使这些文件内部不一致、被截断或不可用。

在下面的示例过程中,请注意以下内容:

开始之前

目标备份为 /backup/my-zone.ufsdump。您必须在 / 下创建目录 backup

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 创建快照。


    global# fssnap -o bs=/export /export/home
    

    将显示以下类似信息:


    dev/fssnap/0
  3. 挂载快照。


    global# mount -o ro /dev/fssnap/0 /mnt
    
  4. 通过快照备份 my-zone


    global# ufsdump 0f /backup/my-zone.ufsdump /mnt/my-zone
    

    将显示以下类似信息:


    DUMP: Date of this level 0 dump: Thu Oct 06 15:13:07 2005
       DUMP: Date of last level 0 dump: the epoch
       DUMP: Dumping /dev/rfssnap/0 (pc2:/mnt) to /backup/my-zone.ufsdump.
       DUMP: Mapping (Pass I) [regular files]
       DUMP: Mapping (Pass II) [directories]
       DUMP: Writing 32 Kilobyte records
       DUMP: Estimated 176028 blocks (85.95MB).
       DUMP: Dumping (Pass III) [directories]
       DUMP: Dumping (Pass IV) [regular files]
       DUMP: 175614 blocks (85.75MB) on 1 volume at 2731 KB/sec
       DUMP: DUMP IS DONE
  5. 卸载快照。


    global# umount /mnt
    
  6. 删除快照。


    global# fssnap -d /dev/fssnap/0
    

    请注意,快照也会在重新引导系统时从系统中删除。

Procedure如何使用 findcpio 执行备份

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 转到根目录。


    global# cd /
    
  3. 备份没有回送挂载到 /backup/my-zone.cpiomy-zone 文件。


    global# find export/my-zone -fstype lofs -prune -o -local
     | cpio -oc -O /backup/my-zone.cpio type as one line
    
  4. 检验结果。


    global# ls -l backup/my-zone.cpio
    

    将显示以下类似信息:


    -rwxr-xr-x   1 root     root     99680256 Aug 10 16:13 backup/my-zone.cpio

Procedure如何列显区域配置的副本

您应当创建非全局区域配置的备份文件。如有必要,将来可以使用备份来重新创建区域。在您首次登录到区域,并回答了 sysidtool 的问题之后,创建区域配置的副本。此过程使用名为 my-zone 的区域和名为 my-zone.config 的备份文件来显示过程。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 将区域 my-zone 的配置列显到名为 my-zone.config 的文件。


    global# zonecfg -z my-zone export > my-zone.config
    

恢复非全局区域

Procedure如何恢复单个非全局区域

如有必要,可以使用非全局区域配置的备份文件来恢复非全局区域。此过程使用名为 my-zone 的区域和名为 my-zone.config 的备份文件来说明恢复区域的过程。

  1. 成为超级用户或承担主管理员角色。

    有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 指定 my-zone.config 作为 zonecfg 命令文件来重新创建区域 my-zone


    global# zonecfg -z my-zone -f my-zone.config
    
  3. 安装区域。


    global# zoneadm -z my-zone install
    
  4. 为了防止系统显示在初始登录区域时出现的 sysidtool 问题,请删除文件 zonepath/root/etc/.UNCONFIGURED,例如:


    global# rm /export/home/my-zone/root/etc/.UNCONFIGURED
    
  5. 如果您需要恢复任何区域特定的文件(例如应用程序数据),请将这些文件从备份手动恢复(并可能手动合并)到新创建的区域根文件系统。

第 29 章 升级安装了非全局区域的 Solaris 10 系统

本章提供有关如何在运行 Solaris Zones 时将 Solaris 10 系统升级到更高发行版的信息,同时还提供指向相应 Solaris 安装文档的链接。

本章中针对 Solaris 10 8/07 的新增内容

安装了区域的系统现在支持 Solaris Live Upgrade。zonepath 无法位于 ZFS 上。

本章中针对 Solaris 10 10/08 的新增内容

Solaris Live Upgrade 对 ZFS 上带有 zonepath 的系统的支持始于此发行版。对于 ZFS 上具有 zonepath 的区域,仅 Solaris Live Upgrade 可用于升级此系统。

您可使用 the Solaris Live Upgrade 功能将您的区域迁移到 ZFS 根文件系统。在 UFS 根文件系统迁移到 ZFS 根文件系统时,非共享文件系统中的区域会自动迁移。如果区域位于共享 UFS 文件系统,那么必须像在之前的 Solaris 发行版一样升级区域。有关更多信息,请参见《Oracle Solaris ZFS 管理指南》中的“将 UFS 根文件系统迁移到 ZFS 根文件系统 (Oracle Solaris Live Upgrade)”

在执行升级之前备份系统

在执行升级之前,您应该对 Solaris 系统上的全局区域和非全局区域进行备份。有关信息,请参见关于备份安装了区域的 Solaris 系统备份安装了区域的 Solaris 系统

将安装了区域的系统升级到 Solaris 10 8/07 及更高的更新发行版

您可以使用 Solaris Live Upgrade(标准 Solaris 交互式安装程序)或自定义 JumpStart 安装程序来升级安装了区域的 Solaris 系统。有关信息,请参见《Solaris 10 8/07 Installation Guide: Planning for Installation and Upgrade》中的“Upgrading With Non-Global Zones”。当 zonepath 位于 ZFS 上时,另请参见本章中针对 Solaris 10 8/07 的新增内容本章中针对 Solaris 10 10/08 的新增内容

将 Solaris Live Upgrade 用于 Solaris Zones 的原则

在安装了区域的系统上使用 Live Upgrade 时有许多注意事项。在 lucreatelumount 操作期间应避免区域状态转换,这一点很关键。

由于非全局区域管理员和全局区域管理员均可控制非全局区域,因此在 lucreatelumount 操作期间最好停止所有区域。

当 Live Upgrade 操作正在执行时,非全局区域管理员的参与很关键。升级会影响管理员的工作,管理员将忙于处理因升级而带来的各种变化。区域管理员应确保任何本地软件包在整个操作序列期间都保持稳定,处理所有升级后任务(如配置文件调整),通常还应针对系统故障做出安排。

将安装了区域的系统升级到 Solaris 10 6/06 或 Solaris 10 11/06

升级系统前,请阅读具有以 lofs 类型定义的 fs 资源的区域无法升级到 Solaris 10 11/06 发行版

您可以使用标准 Solaris 交互式安装程序或自定义 JumpStart 安装程序来升级安装了区域的 Solaris 系统。此发行版不支持 Solaris Live Upgrade。有关信息,请参见《Solaris 10 11/06 Installation Guide: Solaris Live Upgrade and Upgrade Planning》《Solaris 10 11/06 Installation Guide: Custom JumpStart and Advanced Installations》

第 30 章 各种 Solaris Zones 问题的故障排除

本章为 Solaris 10 6/06 发行版的新增内容。

有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

Solaris 10 6/06、Solaris 10 11/06、Solaris 10 8/07 和 Solaris 10 5/08:不要将非全局区域的根文件系统放置在 ZFS 上

对于这些发行版,非全局区域的 zonepath 不应该驻留在 ZFS 上。此操作可能会导致修补问题,并可能会阻止系统升级到更高的 Solaris 10 更新发行版。

请注意,从 Solaris 10 10/08 发行版开始,非全局区域的根文件系统可以驻留在的 ZFS 上。Solaris Live Upgrade 现在可用于升级系统。

专用 IP 区域正在使用设备,因此 dladm reset-linkprop 失败

如果显示以下错误消息:


dladm: warning: cannot reset link property 'zone' on 'bge0': operation failed

则表明尝试使用 dladm reset-linkprop 失败,请参阅如何使用 dladm reset-linkprop。正在运行的区域 excl 在使用该设备,这是在区域内通过执行 ifconfig bge0 plumb 分配的。

要重置值,请在区域内执行 ifconfig bge0 unplumb 过程,然后重新运行 dladm 命令。

区域管理员通过全局区域填充的文件系统进行挂载

首次引导非全局区域时文件系统分层结构内存在的文件表明文件系统数据由全局区域管理。安装非全局区域时,全局区域中的许多打包文件都复制到此区域内。这些文件必须直接驻留在 zonepath 下。如果文件驻留在区域管理员在磁盘设备上创建的文件系统下,或者驻留在添加到此区域的 ZFS 数据集下,则会出现打包和修补问题。

对于在本地区域文件系统中存储任何由全局区域管理的文件系统数据的问题,可以使用 ZFS 作为示例进行说明。如果已将 ZFS 数据集委托到非全局区域,则区域管理员不应使用此数据集来存储任何由全局区域管理的文件系统数据。否则,无法正确地修补或升级配置。

例如,已委托的 ZFS 数据集不应用作 /var 文件系统。Solaris 操作系统提供了将组件安装到 /var 的核心软件包。在进行升级或修补时,这些软件包必须访问 /var,如果 /var 挂载到委托的 ZFS 数据集,则无法对其进行访问。

支持在全局区域控制的某些分层结构下挂载文件系统。例如,如果全局区域中存在空的 /usr/local 目录,则区域管理员可以在此目录下挂载其他内容。

对于在修补或升级期间不需要访问的文件系统(例如非全局区域中的 /export),您可以使用委托的 ZFS 数据集。

区域无法停止

如果无法破坏与区域关联的系统状态,则停止操作会中途失败。区域便会陷于中间状态,即介于正在运行和已安装状态之间。在此状态下,不存在任何活动的用户进程或内核线程,也无法创建它们。当停止操作失败时,您必须手动干预来完成此过程。

最常见的故障原因是系统无法卸载所有的文件系统。与破坏系统状态的传统 Solaris 系统关闭不同,区域一旦停止,就必须确保在引导区域或继续进行区域操作时没有执行任何挂载。即使 zoneadm 可确保区域中没有执行任何进程,但是如果全局区域中的进程在此区域中具有打开的文件,则卸载操作也会失败。请使用 proc(1)(请参见 pfiles)和 fuser(1M) 手册页中所述的工具来查找这些进程,并采取相应的操作。处理了这些进程之后,重新调用 zoneadm halt 应完全停止区域。

对于无法停止的区域,到 Solaris 10 10/09 发行版为止,您可通过使用 zoneadm attach -F 选项不进行验证而强制附加来迁移未分离的区域。目标系统必须正确配置以托管该区域。不正确的配置可能会导致未定义的行为。此外,这将导致无法了解区域内文件的状态。

在区域配置中指定的权限集不正确

如果区域的权限集包含不允许的权限、缺少必需权限或包含未知权限名称,则检验、准备或引导该区域的尝试都将失败,并将显示如下所示的错误消息:


zonecfg:zone5> set limitpriv="basic"
.
.
.
global# zoneadm -z zone5 boot
 	required privilege "sys_mount" is missing from the zone's privilege set
 	zoneadm: zone zone5 failed to verify

引导区域时显示 netmasks 警告

如果在按照如何引导区域中的说明引导区域时看到以下消息:


# zoneadm -z my-zone boot
zoneadm: zone 'my-zone': WARNING: hme0:1: no matching subnet
	found in netmasks(4) for 192.168.0.1; using default of
	255.255.255.0.

此消息只是警告,而命令已成功执行。此消息表明系统无法找到要用于在区域配置中指定的 IP 地址的 netmask

要在后续重新引导时停止显示该警告,请确保在全局区域的 /etc/nsswitch.conf 文件中列出正确的 netmasks 数据库,并且至少有一个数据库包含要用于区域 my-zone 的子网和 netmasks

例如,如果 /etc/inet/netmasks 文件和本地 NIS 数据库用于解析全局区域中的 netmasks,则 /etc/nsswitch.conf 的相应条目为:

netmasks: files nis

然后,可以将区域 my-zone 的子网和相应网络掩码信息添加到 /etc/inet/netmasks,供以后使用。

有关 netmasks 命令的更多信息,请参见 netmasks(4) 手册页。

使用 zoneadm attach 操作解决问题

Procedure修补程序和软件包不同步

目标系统上运行的下列必需的操作系统软件包和修补程序的版本必须与原始主机上安装的软件包和修补程序的版本相同。

  1. 如果原始主机和新主机之间的软件包和修补程序不同,则可能会显示以下类似信息:


    host2# zoneadm -z my-zone attach
    	These packages installed on the source system are inconsistent with this system:
                SUNWgnome-libs (2.6.0,REV=101.0.3.2005.12.06.20.27) version mismatch
                        (2.6.0,REV=101.0.3.2005.12.19.21.22)
                SUNWudaplr (11.11,REV=2005.12.13.01.06) version mismatch
                        (11.11,REV=2006.01.03.00.45)
                SUNWradpu320 (11.10.0,REV=2005.01.21.16.34) is not installed
                SUNWaudf (11.11,REV=2005.12.13.01.06) version mismatch
                        (11.11,REV=2006.01.03.00.45)
                NCRos86r (11.10.0,REV=2005.01.17.23.31) is not installed
    	These packages installed on this system were not installed on the source system:
                SUNWukspfw (11.11,REV=2006.01.03.00.45) was not installed
                SUNWsmcmd (1.0,REV=2005.12.14.01.53) was not installed
    	These patches installed on the source system are inconsistent with this system:
                120081 is not installed
                118844 is not installed
                118344 is not installed
    	These patches installed on this system were not installed on the source system:
                118669 was not installed
                118668 was not installed
                116299 was not installed
  2. 要成功迁移区域,请使用下列方法之一:

    • 使用正确的软件包和修补程序更新新主机,以便两个系统中的这些内容相同。有关更多信息,请参见第 25 章第 26 章

    • 如果新主机具有与区域相关的软件包或其相关修补程序的更高版本,请使用带有 -u-U 选项的 zoneadm attach 更新区域中的那些软件包以匹配新主机。请参见关于迁移区域

Procedure操作系统发行版不匹配

要成功迁移区域,请在具有相同体系结构的系统上安装与原始主机上所运行的版本相同的 Solaris 发行版。

  1. 检验原始系统上运行的 Solaris 发行版。


    host1# uname -a
    
  2. 在新主机上安装相同的发行版。

    请参阅 docs.sun.com 上的 Solaris 安装文档。

Procedure计算机体系结构不匹配

要成功迁移区域,请使用 zoneadm attach-u 选项。

  1. 验证两个系统上的系统结构


    host1# uname -a
    
  2. 如果体系结构不同,使用 zoneadm attach-u 选项以执行附加操作。


    host2# zoneadm -z my-zone attach -u
    

    有关更多信息,请参见如何迁移非全局区域

具有以 lofs 类型定义的 fs 资源的区域无法升级到 Solaris 10 11/06 发行版


注 –

此问题已在 Solaris 10 8/07 发行版中得到更正。


如果使用 lofs fs 资源配置的所有非全局区域正在挂载 miniroot 中存在的目录,则系统可以通过标准升级从早期 Solaris 10 发行版升级到 Solaris 10 11/06 发行版。例如,对以 lofs 方式挂载的 /opt 目录进行升级不会出现任何问题。

但是,如果有任何非全局区域是通过非标准 lofs 挂载进行配置的(例如以 lofs 方式挂载的 /usr/local 目录),则会显示以下错误消息:


The zones upgrade failed and the system needs to be restored
from backup.  More details can be found in the file
/var/sadm/install_data/upgrade_log on the upgrade root file
system.

尽管此错误消息表明,系统必须从备份恢复,但系统实际上是完好的,可以使用以下解决方法成功升级系统:

  1. 使用安装的 OS 重新引导系统。

  2. 重新配置区域,删除使用 lofs 类型定义的 fs 资源。

  3. 在删除这些资源之后,将系统升级到 Solaris 10 11/06。

  4. 升级后,可以再次重新配置区域,以恢复您删除的其他 fs 资源。