此部分介绍 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 计算机上支持以下两个标记:
solaris8 标记,即《系统管理指南:Solaris 8 容器》中所述的 Solaris 8 Containers
solaris9 标记,即《系统管理指南:Solaris 9 容器》中所述的 Solaris 9 Containers
在 Solaris 10 OS 上支持的其他标记包括:
用于 x86 和 x64 系统的 Linux lx 标记,在第 3 部分, lx 标记区域中进行了介绍
cluster 标记,在 docs.sun.com 上的 Sun Cluster 3.2 1/09 Software Collection for Solaris OS 中进行了介绍
虽然可以在启用了标签的 Trusted Solaris 系统上配置和安装标记区域,但不能在此系统配置中引导标记区域。
对于将多个应用程序整合在一个服务器中的环境而言,使用区域是明智之举。管理大量计算机所带来的成本和复杂性促使在更大、更具伸缩性的服务器上整合多个应用程序。
下图显示了具有四个区域的系统。在整合环境样例中,apps、users 和 work 这几个区域运行的工作负荷都与其他区域的工作负荷无关。此示例说明:为了符合整合要求,不同版本的同一应用程序可以在不同区域中运行,而不会造成负面影响。每个区域都可提供一组自定义的服务。
使用区域,可以更有效地利用系统上的资源。使用动态资源重新分配,可以根据需要将未使用的资源转移到其他容器。故障和安全隔离意味着运行欠佳的应用程序不需要一个未充分利用的专用系统。使用区域,可以将这些应用程序与其他应用程序进行整合。
使用区域,可以在维护整体系统安全的同时委托某些管理功能。
可以将一个非全局区域想象为一个盒子。一个或多个应用程序可在这个盒子中运行,而不与系统的其余部分交互。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,在不更改缺省调度类和不重新引导的情况下将正在运行的进程移至其他调度类。
全局管理员具有超级用户权限或主管理员角色。当全局管理员登录到全局区域时,可以将系统作为一个整体进行监视和控制。
区域管理员可以管理非全局区域。全局管理员为区域管理员指定区域管理配置文件。区域管理员的权限仅限于某个非全局区域。
全局管理员使用 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 可用于添加或删除 attr、bootargs、capped-memory、dataset、dedicated-cpu、device、fs、ip-type、limitpriv、net、rctl 或 scheduling-class 属性。您还可以重命名处于已安装状态的区域。无法更改 inherit-pkg-dir 资源。 |
就绪 |
zoneadm -z zonename boot zoneadm halt 加上系统重新引导可使区域从就绪状态恢复为已安装状态。 zonecfg -z zonename 可用于添加或删除 attr、bootargs、capped-memory、dataset、dedicated-cpu、device、fs、ip-type、limitpriv、net、rctl 或 scheduling-class 属性。无法更改 inherit-pkg-dir 资源。 |
正在运行 |
zlogin options zonename zoneadm -z zonename reboot zoneadm -z zonename halt 可使就绪区域恢复为已安装状态。 zoneadm halt 加上系统重新引导可使区域从正在运行状态恢复为已安装状态。 zonecfg -z zonename 可用于添加或删除 attr、bootargs、capped-memory、dataset、dedicated-cpu、device、fs、ip-type、limitpriv、net、rctl 或 scheduling-class 属性。无法更改 zonepath 和 inherit-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 接口和应用程序环境。这些限制主要影响尝试执行特权操作的应用程序。
无论是否配置其他区域,全局区域中的应用程序始终会运行而无需修改。
下表简要介绍了首次在系统上设置区域所涉及的任务。
任务 |
说明 |
参考 |
---|---|---|
标识您要在区域中运行的应用程序。 |
查看正在系统上运行的应用程序:
|
如有必要,请参阅您的业务目标和系统文档。 |
确定要配置的区域数。 |
评估:
|
请参见评估当前的系统设置。 |
确定是否将资源池与区域结合使用,以便创建容器。 |
如果您还要在系统上使用资源管理功能,则需要使资源管理范围能够覆盖这些区域。请在配置区域之前配置资源池。 请注意,从 Solaris 10 8/07 发行版开始,您可以使用 zonecfg 属性将区域范围的资源控制和池功能快速添加到区域中。 | |
执行预配置任务。 |
确定区域名称和区域路径。确定此区域是共享 IP 区域还是专用 IP 区域,然后获取 IP 地址或数据链路名称。确定每个区域的必需文件系统和设备。确定用于区域的调度类。确定在标准缺省权限集不充足的情况下,应为区域内的进程设置的权限集。请注意,有些 zonecfg 设置会自动添加权限。例如,ip-type=exclusive 会自动添加配置和管理网络栈所需的多个权限。 |
有关区域名称和路径、IP 类型、IP 地址、文件系统、设备、调度类以及权限的信息,请参见第 17 章和评估当前的系统设置。有关缺省权限和可在非全局区域中配置的权限的列表,请参见非全局区域中的权限。有关 IP 功能可用性的信息,请参见共享 IP 非全局区域中的联网和Solaris 10 8/07:专用 IP 非全局区域中的联网。 |
开发配置。 |
配置非全局区域。 |
请参见配置、检验并提交区域和 zonecfg(1M) 手册页。 |
以全局管理员身份检验和安装已配置的区域。 |
必须在登录之前检验和安装区域。 | |
以全局管理员身份,使用带有 -C 选项的 zlogin 命令登录到每个非全局区域,或将 sysidcfg 文件放置到区域的 /etc 目录中。 |
| |
以全局管理员身份引导非全局区域。 |
引导每个区域以将区域置于运行状态。 | |
为生产使用准备新区域。 |
创建用户帐户,添加其他软件,并自定义区域配置。 |
请参阅用于设置新安装的计算机的文档。本指南中介绍了适用于区域环境的特殊注意事项。 |
本章介绍非全局区域配置。
本章包含以下主题:
了解区域配置之后,请转至第 18 章以配置要在系统上安装的非全局区域。
有关 lx 标记区域配置的信息,请参见第 32 章和第 33 章。
Solaris 10 6/06: 添加了对 ZFS 文件系统的支持,包括在本地非全局区域中添加数据集资源的功能。有关更多信息,请参见资源类型属性。
Solaris 10 11/06: 添加了对可配置权限的支持。请参见Solaris 10 11/06 及更高版本:可配置的权限。
Solaris 10 8/07: 向 zonecfg 命令中添加了对以下功能的支持:
更好地集成了资源管理功能和区域。zonecfg 命令现在可用于配置临时池、内存限制、区域的缺省调度类和资源控制别名。您不再需要执行任何手动步骤来设置资源管理。添加了一些新的资源控制:
zone.max-locked-memory
zone.max-msg-ids
zone.max-sem-ids
zone.max-shm-ids
zone.max-shm-memory
zone.max-swap
可以在全局区域中使用 zonecfg 命令。
可以为区域指定一个 IP 类型。可用于非全局区域的两种 IP 类型是共享 IP 和专用 IP。
通过使用 limitpriv 属性添加必需的权限,可以在区域中使用 DTrace。
通过 bootargs 属性可以在区域中使用引导参数。
Solaris 10 10/08: defrouter 属性已添加到共享 IP 非全局区域的 zonecfg 实用程序中的 net 资源中。您可以通过此属性为网络接口设置缺省路由器。
有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》。
包含资源管理功能的区域称为容器。可以在容器中控制的资源包括:
资源池或分配的 CPU,用于对计算机资源进行分区。
资源控制,提供了一种系统资源约束机制。
调度类,可让您通过相关份额在区域中控制可用 CPU 资源的分配。您可以通过分配给给定区域的 CPU 资源的份额数量来强调该区域中工作负荷的重要性。
zonecfg 命令用于创建配置,并确定指定的资源和属性是否在虚拟系统上有效。zonecfg 对给定配置执行的检查将检验以下内容:
确保已指定区域路径
确保已为每个资源指定所有必需的属性
有关 zonecfg 命令的更多信息,请参见 zonecfg(1M) 手册页。
本节讨论可以配置的必需区域组件和可选区域组件。区域配置数据中还提供了附加信息。
必须为区域选择名称和路径。
autoboot 属性设置决定在引导全局区域时是否自动引导区域。区域服务,svc:/system/zones:default 也必须启用。
如果按第 13 章所述在系统中配置了资源池,则可在配置区域时使用 pool 属性将该区域与其中一个资源池相关联。
从 Solaris 10 8/07 发行版开始,如果尚未配置资源池,您仍可以使用 dedicated-cpu 资源指定在非全局区域运行时将系统处理器的某个子集专用于该非全局区域。系统将动态创建一个临时池,以便在区域运行时使用。根据 zonecfg 的指定,池配置将在迁移期间进行传播。
使用通过 pool 属性设置的永久池的区域配置与通过 dedicated-cpu 资源配置的临时池不兼容。只能设置这两个属性中的其中一个。
dedicated-cpu 资源可指定在非全局区域运行时应将系统处理器的某个子集专用于该非全局区域。在引导区域时,系统将动态创建一个临时池,以便在区域运行时使用。
根据 zonecfg 的指定,池设置将在迁移期间进行传播。
dedicated-cpu 资源可为 ncpus 以及 importance(可选)设置限制。
指定 CPU 数目或指定一个范围(如 2–4 个 CPU)。如果指定一个范围(因为需要动态资源池行为),则还应执行以下操作:
设置 importance 属性。
启用 poold 服务。有关说明,请参见Solaris 10 11/06 及更高版本:如何使用 svcadm 启用动态资源池服务。
如果使用 CPU 范围来获取动态行为,还要设置 importance 属性。importance 属性是可选属性,用来定义池的相对重要性。仅当为 ncpus 指定了范围并且使用由 poold 管理的动态资源池时,才需要此属性。如果 poold 未运行,则会忽略 importance。如果 poold 正在运行并且未设置 importance,那么 importance 将缺省设置为 1。有关更多信息,请参见pool.importance 属性约束。
capped-cpu 资源与 dedicated-cpu 资源不兼容。cpu-shares rctl 与 dedicated-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,区域将使用系统缺省的调度类。以下操作可为区域设置调度类:
在 Solaris 10 8/07 发行版中,可以在 zonecfg 中使用 scheduling-class 属性来为区域设置调度类。
可以通过资源池功能为区域设置调度类。如果区域与 pool.scheduler 属性设置为有效调度类的池相关联,则缺省情况下区域中运行的进程会以该调度类运行。请参见资源池介绍和如何将池与调度类关联。
如果设置了 cpu-shares rctl,但未通过其他操作将 FSS 设置为区域的调度类,则 zoneadmd 将在区域引导时将调度类设置为 FSS。
如果未通过其他任何操作设置调度类,区域将继承系统的缺省调度类。
请注意,您可以使用 priocntl(1) 手册页中所述的 priocntl,在不更改缺省调度类和不重新引导的情况下将正在运行的进程移至其他调度类。
capped-memory 资源可为 physical、swap 和 locked 内存设置限制。每个限制均为可选项,但至少要设置一个限制。
如果计划在全局区域中使用 rcapd 为区域设置内存上限,请确定此资源的值。rcapd 将 capped-memory 资源的 physical 属性用作区域的 max-rss 值。
capped-memory 资源的 locked 属性是用于设置 zone.max-locked-memory 资源控制的首选方法。
应用程序通常不会锁定大量内存,但是如果已知道区域的应用程序会锁定内存,则您可能会决定设置锁定内存。如果区域信任是一个需要关注的问题,还可以考虑将锁定内存上限设为系统物理内存的百分之十,或区域物理内存上限的百分之十。
有关更多信息,请参见第 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 子网或子网上。
您不想使用专用 IP 区域提供的其他功能。
使用 zonecfg 命令可为共享 IP 区域分配一个或多个 IP 地址。数据链路名称也必须在全局区域中配置。
这些地址与逻辑网络接口关联。可以从全局区域中使用 ifconfig 命令来在运行的区域中添加或删除逻辑接口。有关更多信息,请参见共享 IP 网络接口。
专用 IP 区域具有其自己的与 IP 相关的状态。
这包括可以在专用 IP 区域中使用下列功能:
ndd,用于设置 TCP/UDP/SCTP 和 IP/ARP 级别按钮
IP 安全 (IP security, IPsec) 和 Internet 密钥交换 (Internet Key Exchange, IKE),可自动提供用于 IPsec 安全关联的验证加密材料
使用 zonecfg 命令可为专用 IP 区域分配其自己的数据链路集合。使用 net 资源的 physical 属性,可为该区域指定一个数据链路名称,如 xge0、e1000g1 或 bge32001。没有设置 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 地址的包,只能发送通过 zonecfg 实用程序分配给该区域的包。此类型的区域不能发送和接收任意数据链路(第 2 层)包。
但是,对于专用 IP 区域,zonecfg 会将指定数据链路的一切权限都授予该区域。因此,专用 IP 区域中的超级用户可以通过这些数据链路发送欺骗型包,就像可以在全局区域中发送一样。
共享 IP 区域总是与全局区域共享 IP 层,而专用 IP 区域总是有其自己的 IP 层实例。共享 IP 区域和专用 IP 区域都可在同一计算机中使用。
通常,在区域中挂载的文件系统包括:
初始化虚拟平台时挂载的文件系统集合
在应用程序环境本身中挂载的文件系统集合
例如,这可以包括以下文件系统:
在区域的 /etc/vfstab 文件中指定的文件系统
AutoFS 挂载和 AutoFS 触发的挂载
区域管理员明确执行的挂载
将对在应用程序环境中执行的挂载设定特定限制。这些限制可防止区域管理员拒绝为系统的其余部分提供服务,或者对其他区域产生不良影响。
在区域中挂载特定的文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。有关更多信息,请参见文件系统和非全局区域。
zonecfg 命令使用与规则匹配的系统来指定应在特定区域中出现的设备。与其中一个规则匹配的设备包括在区域的 /dev 文件系统中。有关更多信息,请参见如何配置区域。
您可以设置非全局区域的 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-ids、zone.max-sem-ids、zone.max-shm-ids 和 zone.max-shm-memory 资源控制可用于限制区域中的所有进程使用的 System V 资源。对区域中项目的 System V 资源的分配可使用这些资源控制的项目版本来进行控制。这些控制的全局属性名称是 max-msg-ids、max-sem-ids、max-shm-ids 和 max-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-memory 的 locked 属性. |
|
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-memory 的 swap 属性 |
可以使用 prctl 命令为正运行的进程指定这些限制。如何使用 prctl 命令在全局区域中设置 FSS 份额中还提供了一个示例。通过 prctl 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。
引导区域时,配置中包括安全权限的缺省集合。这些权限被视为安全权限,因为它们可以阻止区域中的特权进程影响系统中其他非全局区域或全局区域中的进程。您可使用 zonecfg 命令执行以下操作:
将权限添加至缺省权限集,需要了解此类更改可能允许一个区域中的进程通过控制全局资源来影响其他区域中的进程。
从缺省权限集中删除权限,需要了解此类更改可能会阻止某些进程正常运行(如果这些进程要求具有特定权限才能运行的话)。
目前,有些权限不能从区域的缺省权限集中删除,还有一些权限不能添加到缺省权限集中。
有关更多信息,请参见非全局区域中的权限、如何配置区域和 privileges(5)。
您可以使用 attr 资源类型为区域添加注释。有关更多信息,请参见如何配置区域。
可以使用 zonecfg(1M) 手册页中所述的 zonecfg 命令配置非全局区域。在 Solaris 10 8/07 发行版中,此命令还可以用来为全局区域持久指定资源管理设置。
zonecfg 命令可以在交互模式、命令行模式或命令文件模式下使用。可以使用此命令执行以下操作:
创建或删除(销毁)区域配置
将资源添加到特定配置
为添加到配置的资源设置属性
从特定配置中删除资源
查询或检验配置
提交到配置
恢复到先前配置
重命名区域
从 zonecfg 会话中退出
zonecfg 提示符的格式如下:
zonecfg:zonename> |
当您配置特定的资源类型(例如文件系统)时,此资源类型也包含在提示符中:
zonecfg:zonename:fs> |
有关更多信息,包括显示如何使用本章中所述的各种 zonecfg 组件的过程,请参见第 18 章。
范围的概念用于用户界面。范围可以是全局的,也可以是资源特定的。缺省范围为全局。
在全局范围内,add 子命令和 select 子命令用于选择特定资源。然后范围更改为此资源类型。
对于 add 子命令,end 或 cancel 子命令用于完成资源指定。
对于 select 子命令,end 或 cancel 子命令用于完成资源修改。
然后范围恢复为全局。
某些子命令(例如 add、remove 和 set)在每个范围中都有不同的语义。
在交互模式中,支持以下子命令。有关用于这些子命令的语义和选项的详细信息,请参见 zonecfg(1M) 手册页中有关选项的内容。对于可能会导致破坏性操作或所做工作丢失的任何子命令,系统均要求用户在继续之前进行确认。您可以使用 -F(强制)选项,跳过此项确认操作。
列显一般帮助,或者显示有关给定资源的帮助。
zonecfg:my-zone:inherit-pkg-dir> help |
开始为指定的新区域配置内存中的配置,以实现以下用途之一:
将缺省设置应用于新的配置。此方法为缺省方法。
与 -t template 选项一起使用时,用于创建与指定模板相同的配置。区域名称从模板名称更改为新区域名称。
与 -F 选项一起使用时,用于覆写现有配置。
与 -b 选项一起使用时,用于创建其中未设置任何内容的空配置。
采用可以在命令文件中使用的格式,在标准输出或指定输出文件中列显配置。
在全局范围中,将指定的资源类型添加到配置。
在资源范围中,添加具有给定名称和给定值的属性。
有关更多信息,请参见如何配置区域和 zonecfg(1M) 手册页。
将给定属性名称设置为给定属性值。请注意,某些属性(例如 zonepath)为全局属性,而其他属性则为资源特定的属性。因此,此命令适用于全局范围和资源范围。
仅适用于全局范围。选择与给定属性名称-属性值对的修改条件相匹配的给定类型资源。将范围更改为此资源类型。您必须为要唯一标识的资源指定足够数量的属性名称-值对。
Solaris 10 8/07: 清除可选设置的值。不能清除必需设置。但可以通过指定新值来更改某些必需设置。
在全局范围中,删除指定的资源类型。您必须为要唯一标识的资源类型指定足够数量的属性名称-值对。如果没有指定属性名称-值对,则会删除所有实例。当存在多个属性名称-值对时,如果未使用 -F 选项,则需要进行确认。
在资源范围中,从当前资源中删除指定的属性名称-属性值。
仅适用于资源范围。结束资源指定。
然后,zonecfg 命令将检验是否完全指定当前资源。
如果资源完全指定,则可以将其添加到内存中的配置,并且范围将恢复为全局。
如果未完全指定,则系统将显示一条描述需要执行何种操作的错误消息。
仅适用于资源范围。结束资源指定并将范围重置为全局。系统不会保留任何未完全指定的资源。
销毁指定的配置。从内存和稳定存储器中删除配置。您必须将 -F(强制)选项与 delete 一起使用。
此操作为即时操作。不需要提交,并且无法恢复已删除的区域。
显示有关当前配置或全局资源属性 zonepath、autoboot 和 pool 的信息。如果指定了资源类型,则仅显示有关此类型资源的信息。在资源范围中,此子命令仅应用于要添加或修改的资源。
检验当前配置是否正确。确保所有资源都指定了所有必需的属性。
将当前配置从内存提交到稳定存储器。在提交内存中的配置之前,可以使用 revert 子命令删除更改。必须提交配置以供 zoneadm 使用。完成 zonecfg 会话时,便会自动尝试此操作。由于仅可提交正确的配置,因此,提交操作将自动进行检验。
将配置恢复到上次提交时的状态。
退出 zonecfg 会话。您可以将 -F(强制)选项与 exit 一起使用。
如果需要,会自动尝试 commit。请注意,也可以使用 EOF 字符退出会话。
在命令文件模式中,输入来自文件。可以使用zonecfg 交互模式中所述的 export 子命令生成此文件。可以在标准输出中列显配置,也可以使用 -f 选项指定输出文件。
区域配置数据由两种类型的实体组成:资源和属性。每个资源都有一种类型,并且每个资源还可以有一个包含一个或多个属性的集合。属性具有名称和值。属性集取决于资源类型。
区域名称用于标识配置实用程序的区域。以下规则适用于区域名称:
每个区域必须具有唯一的名称。
区域名称区分大小写。
区域名称必须以字母数字字符开头。
名称可以包含字母数字字符、下划线 (_)、连字符 (-) 和句点 (.)。
名称不能超过 64 个字符。
名称 global 和所有以 SUNW 开头的名称均保留,不能使用。
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 上。
如果此属性设置为 true,则引导全局区域时会自动引导区域。请注意,如果禁用了区域服务 svc:/system/zones:default,则无论如何设置此属性,区域都不会自动引导。您可以使用 svcadm(1M) 手册页中所述的 svcadm 命令来启用区域服务:
global# svcadm enable zones |
Solaris 10 8/07: 此属性用于为区域设置引导参数。除非被 reboot、zoneadm boot 或 zoneadm reboot 命令覆盖,否则将应用该引导参数。请参见Solaris 10 8/07:区域引导参数。
此属性用于将区域与系统中的资源池相关联。多个区域可以共享一个池的资源。另请参见Solaris 10 8/07:dedicated-cpu 资源。
Solaris 10 11/06 及更高版本: 此属性用于指定缺省权限集之外的权限掩码。请参见非全局区域中的权限。
通过指定权限名称可添加权限,权限名称中可包含或不包含前导 priv_。在权限名称前添加破折号 (-) 或感叹号 (!) 可以排除权限。权限值以逗号分隔,并放在引号 (") 内。
如 priv_str_to_set(3C) 中所述,特殊权限集 none、all 和 basic 对其标准定义进行了扩展。由于区域配置在全局区域内进行,因此不能使用特殊权限集 zone。由于常见用法是通过添加或删除某些权限来更改缺省权限集,因此特殊权限集 default 将映射为缺省权限集。当 default 出现在 limitpriv 属性开头时,它将扩展为缺省权限集。
以下条目增加了使用 DTrace 程序的功能,该程序只要求区域中具有 dtrace_proc 和 dtrace_user 权限:
global# zonecfg -z userzone zonecfg:userzone> set limitpriv="default,dtrace_proc,dtrace_user" |
如果区域的权限集包含不允许的权限、缺少必需权限或包含未知权限,则检验、准备或引导该区域的尝试都将失败,并将显示错误消息。
Solaris 10 8/07: 此属性可为区域设置调度类。有关其他信息和提示,请参见区域中的调度类。
Solaris 10 8/07: 仅当区域是专用 IP 区域时,才需要设置此属性。请参见Solaris 10 8/07:专用 IP 非全局区域和如何配置区域。
Solaris 10 8/07: 此资源可在某个区域运行时使系统处理器的某个子集专用于该区域。dedicated-cpu 资源可为 ncpus 以及 importance(可选)提供限制。有关更多信息,请参见Solaris 10 8/07:dedicated-cpu 资源。
Solaris 10 5/08: 此资源对区域在运行时可占用的 CPU 资源量设置限制。此资源可为 ncpus 提供限制。
Solaris 10 8/07: 此资源可对为区域设置内存上限时使用的属性分组。capped-memory 资源可为 physical、swap 和 locked 内存提供限制。至少必须指定其中一个属性。
Solaris 10 6/06: 通过添加 ZFS 文件系统数据集资源,可以将存储管理委托给非全局区域。区域管理员可以在此数据集中创建和销毁文件系统、创建和销毁克隆以及修改此数据集的属性。区域管理员无法影响尚未添加到区域的数据集,也无法超过对指定给区域的数据集设置的任何顶层配额。
可以按以下方式将 ZFS 数据集添加到区域中。
作为一个 lofs 挂载文件系统(在目标单独与全局区域共享空间时)
作为一个委托数据集
请参见《Oracle Solaris ZFS 管理指南》中的第 10 章 “Oracle Solaris ZFS 高级主题”和文件系统和非全局区域。
有关数据集问题的信息,另请参见第 30 章。
当区域从已安装状态转换为就绪状态时,每个区域都可以拥有已挂载的各种文件系统。文件系统资源指定文件系统挂载点的路径。有关在区域中使用文件系统的更多信息,请参见文件系统和非全局区域。
不应在完全根区域中配置此资源。
在稀疏根区域中,inherit-pkg-dir 资源用于表示包含非全局区域与全局区域共享的软件包的目录。
非全局区域以只读模式继承传送到 inherit-pkg-dir 目录的软件包内容。区域的打包数据库将更新,以反映软件包。使用 zoneadm 安装区域之后,便不能修改或删除这些资源。
配置中包含四种缺省 inherit-pkg-dir 资源。这些目录资源表示哪些目录应从全局区域中继承关联的软件包。资源通过只读回送文件系统挂载来实现。
/lib
/platform
/sbin
/usr
网络接口资源是接口名称。当区域从已安装状态转换为就绪状态时,每个区域都可以具有可以设置的网络接口。
设备资源是与设备匹配的说明符。当区域从已安装状态转换为就绪状态时,每个区域都具有应配置的设备。
rctl 资源用于区域范围的资源控制。当区域从已安装状态转换为就绪状态时,将启用这些控制。
可以设置与全局区域的 hostid 不同的 hostid。
此通用属性可用于用户注释或其他子系统。attr 的 name 属性必须以字母数字字符开头。name 属性可以包含字母数字字符、连字符 (-) 和句点 (.)。以 zone. 开头的属性名称将保留,以供系统使用。
ncpus、importance
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 |
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 |
physical、swap、locked
为区域 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 |
dir、special、raw、type、options
fs 资源参数提供的值可确定如何以及在何处挂载文件系统。fs 参数定义如下:
为文件系统指定挂载点
指定要从全局区域挂载的特殊块设备名称或目录
指定在挂载文件系统之前运行 fsck 所在的原始设备
指定文件系统类型
指定挂载选项,这些选项类似于使用 mount 命令找到的挂载选项
以下示例的几行代码指定全局区域中的 /dev/dsk/c0t0d0s2 将作为要配置的区域中的 /mnt 进行挂载。raw 属性指定一个在尝试挂载文件系统之前运行 fsck 命令的可选设备。所使用的文件系统类型为 UFS。添加了选项 nodevices 和 logging。
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 文件系统”。
name
以下示例的几行代码指定数据集 sales 将在非全局区域中可见并在该区域中进行挂载,但在全局区域中不再可见。
zonecfg:my-zone> add dataset zonecfg:my-zone> set name=tank/sales zonecfg:my-zone> end |
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 |
address、physical、defrouter
对于共享 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 |
match
在以下示例中,/dev/pts 设备包括在区域中。
zonecfg:my-zone> add device zonecfg:my-zone:device> set match=/dev/pts* zonecfg:my-zone:device> end |
name、value
Solaris 10 8/07: 此发行版的新增资源控制包括 zone.max-locked-memory、zone.max-msg-ids、zone.max-sem-ids、zone.max-shm-ids、zone.max-shm-memory 和 zone.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 资源类型由三个名称/值对组成。名称分别是 priv、limit 和 action。每个名称都有一个简单值。
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 章和在非全局区域中使用的资源控制。
name、type、value
在以下示例中,添加了有关区域的注释。
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 命令行编辑库,可与 zonecfg 命令一起使用。此库为命令行历史记录和编辑支持提供了一种机制。
Tecla 命令行编辑库在以下手册页中进行介绍:
enhance(1)
libtecla(3LIB)
ef_expand_file(3TECLA)
gl_get_line(3TECLA)
gl_io_mode(3TECLA)
pca_lookup_file(3TECLA)
tecla(5)
本章介绍在系统上配置区域之前需要执行的操作,同时还介绍了如何在系统上配置区域、修改区域配置以及删除区域配置。
有关区域配置过程的介绍,请参见第 17 章。
在将系统设置为使用区域之前,必须先收集信息并决定如何配置区域。以下任务图概括了如何规划和配置区域。
任务 |
说明 |
参考 |
---|---|---|
规划区域策略。 |
| |
确定区域名称。 |
基于命名约定决定区域的名称。 | |
确定区域路径。 |
每个区域都具有一个与全局区域根目录相对的根目录路径。 |
请参见区域配置数据。 |
如果没有配置资源池,请评估是否需要进行 CPU 限制。 |
查看您的应用程序要求。 | |
如果计划使用全局区域中的 rcapd 来为区域设置内存上限,请评估是否需要进行内存分配。 |
查看您的应用程序要求。 | |
将 FSS 设置为系统中的缺省调度程序。 |
为每个区域指定 CPU 份额,以控制区域访问 CPU 资源的权利。FSS 保证为各个区域公平地分配 CPU 资源,这种公平分配基于已分配的份额。 | |
确定区域是共享 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 资源的非全局区域称为稀疏根区域。
稀疏根区域模型通过以下方法优化对象共享:
只有安装在全局区域中的部分软件包会直接安装在非全局区域中。
标识为 inherit-pkg-dir 资源的只读回送文件系统用于获取对其他文件的访问权限。
在该模型中,所有的软件包都安装在非全局区域中。将完整安装不向只读回送挂载文件系统提供内容的软件包。无需安装提供给只读回送挂载文件系统的内容,因为这些内容可以从全局区域中继承(并可见)。
一般情况下,当全局区域安装了所有标准的 Solaris 软件包时,每个区域大约需要 100 MB 的可用磁盘空间。
缺省情况下,全局区域中安装的所有附加软件包也将填充非全局区域。所需磁盘空间可能会相应增加,具体取决于驻留在 inherit-pkg-dir 资源空间的附加软件包是否提供文件。
建议每个区域再增加 40 MB 的 RAM,如果计算机有足够的交换空间则不作此要求。
完全根区域模型提供最大配置能力。所有需要的和任何选定的可选 Solaris 软件包都安装到此区域的专用文件系统中。该模型的优势之一是全局管理员可以自定义其区域文件系统布局。例如,可以执行此操作来添加任意非绑定的软件包或第三方软件包。
该模型的磁盘需求由当前安装在全局区域中的软件包使用的磁盘空间决定。
如果您创建包含以下 inherit-pkg-dir 目录的稀疏根区域,则必须在安装区域之前从非全局区域配置中删除这些目录,以拥有一个完全根区域:
/lib
/platform
/sbin
/usr
请参见如何配置区域。
您可以将区域放置在挂载了 lofi 的分区上。此操作会将区域占用的空间量限制为 lofi 使用的文件所占用的空间量。有关更多信息,请参见 lofiadm(1M) 和 lofi(7D) 手册页。
您可以使用软分区将磁盘分片或将逻辑卷分为多个分区。您可以将这些分区用作区域根目录,从而限制每个区域的磁盘占用量。软分区限制为 8192 个分区。有关更多信息,请参见《Solaris Volume Manager Administration Guide》中的第 12 章 “Soft Partitions (Overview)”。
您可以将磁盘的标准分区用作区域根目录,从而限制每个区域的磁盘占用量。
您必须确定区域的主机名。然后,如果要使区域具有网络连接,则必须为其指定一个 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 地址。同时支持 IPv4 和 IPv6 地址。
如果您使用的是 IPv4,则获取地址并将该地址指定到区域。
也可以指定 IP 地址前缀的长度。该前缀的格式为 address/prefix-length,例如 192.168.1.1/24。因此,要使用的地址是 192.168.1.1,要使用的网络掩码是 255.255.255.0,或者是前 24 位为 1 的掩码。
如果您使用的是 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 区域内,可按照在全局区域中的方式来配置地址。请注意,可使用 DHCP 和 IPv6 无状态地址自动配置配置地址。
有关更多信息,请参见 sysidcfg(4)。
在设置虚拟平台时,您可以指定一些要执行的挂载。使用回送虚拟文件系统 (loopback virtual file system, LOFS) 回送挂载到区域的文件系统应使用 nodevices 选项挂载。有关 nodevices 选项的信息,请参见文件系统和非全局区域。
使用 LOFS,您可以创建一个新的虚拟文件系统,以便使用一个备用的路径名称访问文件。在非全局区域中,使用回送挂载可以使文件系统的分层结构看起来在区域根目录下是重复的。在该区域中,使用以区域的根目录开头的路径名,可以访问所有文件。LOFS 挂载将保留文件系统名称空间。
有关更多信息,请参见 lofs(7S) 手册页。
任务 |
说明 |
参考 |
---|---|---|
配置非全局区域。 |
使用 zonecfg 命令可以创建区域、检验并提交该配置。 您也可以使用脚本在系统上配置和引导多个区域。可以使用 zonecfg 命令来显示非全局区域的配置。 | |
修改区域配置。 |
使用此过程可以修改区域配置中的资源类型,或在区域中添加专用设备。 | |
恢复或删除区域配置。 |
使用 zonecfg 命令可以撤消对区域配置所做的资源设置,或删除区域配置。 | |
删除区域配置。 |
使用带有 delete 子命令的 zonecfg 命令可以从系统中删除区域配置。 |
使用 zonecfg(1M) 手册页中所述的 zonecfg 命令可执行以下操作。
创建区域配置
检验是否具备所需的全部信息
提交非全局区域配置
也可以使用 zonecfg 命令永久指定全局区域的资源管理设置。
当使用 zonecfg 实用程序配置区域时,您可以使用 revert 子命令来撤消资源设置。请参见如何恢复区域配置。
在系统上配置多个区域的脚本在配置多个区域的脚本中提供。
有关如何显示非全局区域配置,请参见如何显示非全局区域的配置。
请注意,创建本地非全局区域的必需元素只有 zonename 和 zonepath 属性。其他资源和属性都是可选的。有些可选资源还需要在备选项之间进行选择,例如决定使用 dedicated-cpu 资源还是 capped-cpu 资源。有关可用的 zonecfg 属性和资源的信息,请参见区域配置数据。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
用所选的区域名称来设置区域配置。
此示例过程中使用名称 my-zone。
global# zonecfg -z my-zone |
如果是第一次配置该区域,则可以看到以下系统消息:
my-zone: No such zone configured Use 'create' to begin configuring a new zone. |
创建新的区域配置。
此过程使用缺省设置。
zonecfg:my-zone> create |
设置区域路径,在此过程中为 /export/home/my-zone。
zonecfg:my-zone> set zonepath=/export/home/my-zone |
对于 Solaris 10 10/08 发行版之前的发行版,不要为 ZFS 设置 zonepath。
设置自动引导值。
如果设置为 true,则在引导全局区域时将自动引导该区域。请注意,要自动引导区域,还必须启用区域服务 svc:/system/zones:default。缺省值为 false。
zonecfg:my-zone> set autoboot=true |
为区域设置持久引导参数。
zonecfg:my-zone> set bootargs="-m verbose" |
指定一个 CPU 专用于该区域。
zonecfg:my-zone> add dedicated-cpu |
修改缺省权限集。
zonecfg:my-zone> set limitpriv="default,sys_time" |
该行添加了将系统时钟设置为缺省权限集的功能。
将调度类设置为 FSS。
zonecfg:my-zone> set scheduling-class=FSS |
添加内存上限。
zonecfg:my-zone> add capped-memory |
添加文件系统。
zonecfg:my-zone> add fs |
设置文件系统的挂载点,在此过程中为 /usr/local。
zonecfg:my-zone:fs> set dir=/usr/local |
指定全局区域中的 /opt/zones/my-zone/local 将要在所配置的区域中挂载为 /usr/local。
zonecfg:my-zone:fs> set special=/opt/zones/my-zone/local |
在非全局区域中,/usr/local 文件系统是可读写的。
指定文件系统类型,在此过程中为 lofs。
zonecfg:my-zone:fs> set type=lofs |
此类型指明了内核与文件系统的交互方式。
结束文件系统指定。
zonecfg:my-zone:fs> end |
可多次执行此步骤来添加多个文件系统。
(可选)设置 hostid。
zonecfg:my-zone> set hostid=80f0c086 |
在存储池 tank 中添加一个名为 sales 的 ZFS 数据集。
zonecfg:my-zone> add dataset |
(仅用于稀疏根区域)添加一个从全局区域回送挂载的共享文件系统。
不要执行此步骤来创建一个没有任何共享文件系统的完全根区域。请参见磁盘空间需求中对完全根区域的讨论。
zonecfg:my-zone> add inherit-pkg-dir |
指定在正在配置的区域中以只读模式挂载全局区域中的 /opt/sfw。
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw |
区域的打包数据库将更新,以反映软件包。使用 zoneadm 安装区域之后,便不能修改或删除这些资源。
结束 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
(可选)如果要创建一个专用 IP 区域,请设置 ip-type。
zonecfg:my-zone> set ip-type=exclusive |
在 add net 步骤中只会指定物理设备类型。
添加网络接口。
zonecfg:my-zone> add net |
(仅共享 IP)设置网络接口的 IP 地址,在此过程中为 192.168.0.1。
zonecfg:my-zone:net> set address=192.168.0.1 |
设置网络接口的物理设备类型,在此过程中为 hme 设备。
zonecfg:my-zone:net> set physical=hme0 |
Solaris 10 10/08:(可选,仅共享 IP)在此过程中,为网络接口设置缺省路由器 10.0.0.1。
zonecfg:my-zone:net> set defrouter=10.0.0.1 |
结束指定。
zonecfg:my-zone:net> end |
可多次执行此步骤来添加多个网络接口。
添加设备。
zonecfg:my-zone> add device |
设置设备匹配,在此过程中为 /dev/sound/*。
zonecfg:my-zone:device> set match=/dev/sound/* |
结束设备指定。
zonecfg:my-zone:device> end |
可多次执行此步骤来添加多个设备。
使用属性名称添加区域范围的资源控制。
zonecfg:my-zone> set max-sem-ids=10485200 |
可多次执行此步骤来添加多个资源控制。
使用 attr 资源类型来添加注释。
zonecfg:my-zone> add attr |
检验区域的配置。
zonecfg:my-zone> verify |
提交区域的配置。
zonecfg:my-zone> commit |
退出 zonecfg 命令。
zonecfg:my-zone> exit |
请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit。
zonecfg 命令还支持通过同一个 shell 调用多条子命令,这些子命令放在引号中并用分号进行分隔。
global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone" |
请参见安装和引导区域来安装已提交的区域配置。
可以使用此脚本在系统中配置和引导多个区域。此脚本采用以下参数:
要创建的区域个数
zonename 前缀
可用作基目录的目录
要执行此脚本,您必须是全局区域中的全局管理员。全局管理员在全局区域中拥有超级用户权限或承担主管理员角色。
#!/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 |
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
显示区域配置。
global# zonecfg -z zonename info |
也可使用 zonecfg 命令执行以下操作:
修改区域配置中的资源类型
清除区域配置中的属性值
在区域中添加专用设备
可以选择一个资源类型并修改该资源的指定。
请注意,在使用 zoneadm 安装区域之后,不能修改或删除 inherit-pkg-dir 目录中软件包的内容。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
选择要修改的区域,在此过程中为 my-zone。
global# zonecfg -z my-zone |
选择要更改的资源类型,例如,资源控制。
zonecfg:my-zone> select rctl name=zone.cpu-shares |
删除当前值。
zonecfg:my-zone:rctl> remove value (priv=privileged,limit=20,action=none) |
添加新值。
zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none) |
结束修改后的 rctl 的指定。
zonecfg:my-zone:rctl> end |
提交区域的配置。
zonecfg:my-zone> commit |
退出 zonecfg 命令。
zonecfg:my-zone> exit |
请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit。
由 zonecfg 提交的更改在下次引导区域时生效。
使用此过程可以重置一个独立属性。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
选择要修改的区域,在此过程中为 my-zone。
global# zonecfg -z my-zone |
清除要更改的属性,在此过程中为现有的池关联。
zonecfg:my-zone> clear pool |
提交区域的配置。
zonecfg:my-zone> commit |
退出 zonecfg 命令。
zonecfg:my-zone> exit |
请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit。
由 zonecfg 提交的更改在下次引导区域时生效。
使用此过程可以重置一个独立属性,该独立属性没有其他相关属性要配置。例如,要删除现有的池关联,您可以将 pool 资源重置为 null。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
选择要修改的区域,在此过程中为 my-zone。
global# zonecfg -z my-zone |
重置要更改的属性,在此过程中为现有的池关联。
zonecfg:my-zone> set pool="" |
提交区域的配置。
zonecfg:my-zone> commit |
退出 zonecfg 命令。
zonecfg:my-zone> exit |
请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit。
由 zonecfg 提交的更改在下次引导区域时生效。
可以使用此过程对处于已配置状态或已安装状态的区域进行重命名。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
选择要重命名的区域,在此过程中为 my-zone。
global# zonecfg -z my-zone |
例如,将区域名称更改为 newzone。
zonecfg:my-zone> set zonename=newzone |
提交更改。
zonecfg:newzone> commit |
退出 zonecfg 命令。
zonecfg:newzone> exit |
由 zonecfg 提交的更改在下次引导区域时生效。
以下过程说明如何在非全局区域配置中放置扫描设备。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
添加设备。
zonecfg:my-zone> add device |
设置设备匹配,在此过程中为 /dev/scsi/scanner/c3t4*。
zonecfg:my-zone:device> set match=/dev/scsi/scanner/c3t4* |
结束设备指定。
zonecfg:my-zone:device> end |
退出 zonecfg 命令。
zonecfg:my-zone> exit |
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用 zonecfg 命令。
# zonecfg -z global |
为全局区域设置 5 个份额。
zonecfg:global> set cpu-shares=5 |
退出 zonecfg。
zonecfg:global> exit |
使用 zonecfg(1M) 中所述的 zonecfg 命令可以恢复或删除区域配置。
当使用 zonecfg 实用程序配置区域时,请使用 revert 子命令来撤消对区域配置执行的资源设置。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在配置名为 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/* . . . |
删除网络地址:
zonecfg:tmp-zone> remove net address=192.168.0.1 |
检验 net 条目是否已被删除。
zonecfg:tmp-zone> info |
. . . fs: dir: /tmp special: swap type: tmpfs device match: /dev/pts/* . . . |
键入 revert。
zonecfg:tmp-zone> revert |
对下面的问题回答是:
Are you sure you want to revert (y/[n])? y |
检验网络地址是否再次出现:
zonecfg:tmp-zone> info |
. . . fs: dir: /tmp special: swap type: tmpfs net: address: 192.168.0.1 physical: eri0 device match: /dev/pts/* . . . |
使用带有 delete 子命令的 zonecfg,可以从系统中删除区域配置。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用以下两种方法之一来删除区域 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 |
本章介绍如何在您的 Solaris 系统上安装区域,同时还介绍管理虚拟平台和应用程序环境的两个进程,zoneadmd 和 zsched。此外,还提供了有关停止、重新引导、克隆和卸载区域的信息。
本章包含以下主题:
有关如何克隆、安装和引导非全局区域,或者停止或卸载非全局区域,请参见第 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 命令执行以下任务:
检验区域
安装区域
引导区域,类似于引导常规的 Solaris 系统
显示有关正在运行的区域的信息
停止区域
重新引导区域
卸载区域
将区域从系统中某个位置重定位到同一系统的另一位置
根据同一系统中某个现有区域的配置置备新区域
使用 zonecfg 命令迁移区域
有关区域安装和检验过程,请参见第 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) 手册页。
安装区域时,不引用或复制以下数据:
未安装的软件包
修补程序
CD 和 DVD 上的数据
网络安装映像
区域的任何原型或其他实例
此外,以下信息类型(如果在全局区域中存在)也不会复制到正在安装的区域:
/etc/passwd 文件中的新用户或已更改的用户
/etc/group 文件中的新组或已更改的组
网络服务(例如 DHCP 地址分配、UUCP(UNIX 对 UNIX 复制)或 sendmail)的配置
网络服务(例如命名服务)的配置
新的或已更改的 crontab、打印机和邮件文件
系统日志、消息和记帐文件
如果使用 Solaris 审计,则可能需要对从全局区域复制的审计文件进行修改。有关更多信息,请参见在区域中使用 Solaris 审计。
不能在非全局区域中配置以下功能:
Solaris Live Upgrade 引导环境
Solaris Volume Manager 元设备
共享 IP 区域中的 DHCP 地址分配
SSL 代理服务器
当区域从已安装状态转换为就绪状态时,便会添加在配置文件中指定的资源。系统会指定唯一的区域 ID。将挂载文件系统,设置网络接口并配置设备。转换为就绪状态之后,虚拟平台便可开始运行用户进程。在就绪状态下,会启动 zsched 和 zoneadmd 进程来管理虚拟平台。
zsched 是一个类似于 sched 的系统调度进程,用于跟踪与区域关联的内核资源。
zoneadmd 是区域管理守护进程。
处于就绪状态的区域中不存在任何正在执行的用户进程。就绪区域与正在运行的区域之间的主要差异在于,正在运行的区域中至少有一个进程正在执行。有关更多信息,请参见 init(1M) 手册页。
区域管理守护进程 zoneadmd 是管理区域虚拟平台的主要进程。此守护进程还负责管理区域引导和关闭。对于系统上的每个活动(就绪、正在运行或正在关闭)区域,都有一个 zoneadmd 进程在运行。
zoneadmd 守护进程将按照区域配置中指定的方式设置区域。此过程包括以下操作:
分配区域 ID 并启动 zsched 系统进程。
设置区域范围的资源控制。
准备区域配置中指定的区域设备。有关更多信息,请参见 devfsadmd(1M) 手册页。
设置虚拟网络接口。
挂载回送文件系统和常规文件系统。
实例化和初始化区域控制台设备。
除非 zoneadmd 守护进程已经运行,否则它会由 zoneadm 自动启动。因此,如果此守护进程因某种原因没有运行,则调用 zoneadm 来管理区域时将重新启动 zoneadmd。
zoneadmd 守护进程的手册页为 zoneadmd(1M)。
活动区域是指处于就绪状态、正在运行状态或正在关闭状态的区域。每个活动区域都有一个关联的内核进程 zsched。代表区域执行操作的内核线程由 zsched 所拥有。通过 zsched 进程,区域子系统可跟踪每个区域的内核线程。
zoneadm 命令用于创建区域应用程序环境。
在首次引导非全局区域之前,必须创建区域的内部配置。内部配置指定要使用的命名服务、缺省语言环境 (locale) 和时区、区域的超级用户口令,以及应用程序环境的其他方面。通过响应出现在区域控制台上的一系列提示来建立应用程序环境,如内部区域配置中所述。请注意,可以独立于全局设置来配置区域的缺省语言环境和时区。
本节概述了停止、重新引导和卸载区域的过程,还提供了区域在需要时无法停止的疑难解答提示。
zoneadm halt 命令用于删除区域的应用程序环境和虚拟平台。然后,区域便恢复为已安装状态。将中止所有进程,取消设备配置,销毁网络接口,卸载文件系统,以及销毁内核数据结构。
halt 命令不在区域内运行任何关闭脚本。要关闭区域,请参见如何使用 zlogin 关闭区域。
停止操作失败时,请参见区域无法停止。
zoneadm reboot 命令用于重新引导区域。区域将停止,然后再次引导。重新引导区域之后,区域 ID 会更改。
区域支持用于 zoneadm boot 和 reboot 命令的以下引导参数:
-i altinit
-m smf_options
-s
以下定义适用:
选择一个备用可执行文件作为第一个进程。altinit 必须是可执行文件的有效路径。缺省的第一个进程在 init(1M) 中进行了介绍。
控制 SMF 的引导行为。有两类选项:恢复选项和消息选项。消息选项可确定启动期间显示的消息类型和数量。服务选项可确定用于引导系统的服务。
恢复选项包括:
打印标准的每个服务的输出以及所有要记录的 svc.startd 消息。
引导至由给定里程碑定义的子图。合法里程碑包括 none、single-user、multi-user、multi-user-server 和 all。
消息选项包括:
打印标准的每个服务的输出以及需要管理员介入的错误消息。
打印标准的每个服务的输出以及提供更多信息的消息。
仅引导至里程碑 svc:/milestone/single-user:default。此里程碑相当于 init 级别 s。
有关用法示例,请参见如何引导区域和如何在单用户模式下引导区域。
有关 Solaris 服务管理工具 (service management facility, SMF) 和 init 的信息,请参见《系统管理指南:基本管理》中的第 18 章 “管理服务(概述)”、svc.startd(1M) 和 init(1M)。
如果您在区域配置中将 autoboot 资源属性设置为 true,则引导全局区域时便会自动引导此区域。缺省设置为 false。
请注意,要自动引导区域,还必须启用区域服务 svc:/system/zones:default。
zoneadm uninstall 命令用于卸载区域根文件系统下的所有文件。除非还使用了 -F(强制)选项,否则该命令会提示您确认此操作以继续执行。使用 uninstall 命令时应谨慎,因为此操作是无法恢复的。
通过克隆可以复制系统上现有的已配置和已安装区域,从而在同一系统上快速置备新区域。请注意,对于在不同的区域中不能相同的组件,必须至少要为其重置属性和资源。因此,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:在同一系统中克隆非全局区域。
本章介绍如何安装和引导非全局区域,并提供了使用克隆在同一系统上安装区域的方法。此外,还介绍了与安装相关的其他任务(例如停止、重新引导和卸载区域),同时提供了从系统中完全删除区域的过程。
有关区域安装和相关操作的常规信息,请参见第 19 章。
有关 lx 标记区域安装和克隆的信息,请参见第 34 章和第 35 章。
任务 |
说明 |
参考 |
---|---|---|
(可选)在安装区域之前检验已配置的区域。 |
确保区域满足安装要求。如果您跳过此过程,则会在安装区域时自动执行检验。 | |
安装已配置的区域。 |
安装处于已配置状态的区域。 | |
Solaris 8/07: 获取区域的通用唯一标识符 (universally unique identifier, UUID)。 |
在安装区域时指定的这个单独的标识符是标识区域的另一种方法。 | |
(可选)将已安装的区域转换为就绪状态。 |
如果您要引导区域并立即使用,则可以跳过此过程。 | |
引导区域。 |
引导区域时会将此区域置于运行状态。既可以从就绪状态引导区域,也可以从已安装状态引导区域。请注意,首次在引导后登录到区域时,必须执行内部区域配置。 | |
在单用户模式下引导区域。 |
仅引导至里程碑 svc:/milestone/single-user:default。此里程碑相当于 init 级别 s。请参见 init(1M) 和 svc.startd(1M) 手册页。 |
使用 zoneadm(1M) 手册页中所述的 zoneadm 命令可以为非全局区域执行安装任务。要执行区域安装,您必须是全局管理员。本章中的示例使用在配置、检验并提交区域中建立的区域名称和区域路径。
可以在安装区域之前对其进行检验。如果您跳过此过程,则会在安装区域时自动执行检验。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用 -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. |
但是,如果显示错误消息并且无法检验区域,请执行消息中指定的更正操作,并再次尝试执行此命令。
如果未显示错误消息,则可以安装区域。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用带有 -z install 选项的 zoneadm 命令安装已配置的区域 my-zone。
global# zoneadm -z my-zone install |
当区域的根文件系统所需的文件和目录安装在区域的根路径下时,您将看到各种消息。
(可选)如果显示错误消息并且无法安装区域,请键入以下命令来获取区域状态:
global# zoneadm -z my-zone list -v |
如果显示为已配置状态,请执行消息中指定的更正操作,并再次尝试执行 zoneadm install 命令。
如果显示为未完成状态,请首先执行以下命令:
global# zoneadm -z my-zone uninstall |
然后执行消息中指定的更正操作,并再次尝试执行 zoneadm install 命令。
当安装完成时,使用带有 -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 章 “管理服务(任务)”中介绍的开放式网络配置。在登录到该区域后,可以切换到开放式网络配置,或者启用或禁用个别服务。有关详细信息,请参见将非全局区域切换到其他网络服务配置。
安装区域时,会为其指定一个通用唯一标识符 (universally unique identifier, UUID)。通过将 zoneadm 与 list 子命令和 -p 选项一起使用,可以获取 UUID。UUID 是显示的第五个字段。
查看已安装区域的 UUID。
global# zoneadm list -p |
将显示以下类似信息:
0:global:running:/: 6:my-zone:running:/export/home/my-zone:61901255-35cf-40d6-d501-f37dc84eb504 |
global# zoneadm -z my-zone -u 61901255-35cf-40d6-d501-f37dc84eb504 list -v |
如果 -u uuid-match 和 -z zonename 都存在,则先根据 UUID 执行匹配。如果找到具有指定 UUID 的区域,则使用该区域并忽略 -z 参数。如果找不到具有指定 UUID 的区域,则系统将按区域名称进行搜索。
可以卸载区域,然后以相同的名称重新安装,但内容不同。也可以对区域进行重命名,而不更改内容。由于以上原因,UUID 比区域名称更可靠。
有关更多信息,请参见 zoneadm(1M) 和 libuuid(3LIB)。
如果对系统的管理性更改导致区域不可用或不一致,则可以将已安装区域的状态更改为未完成。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
将区域 testzone 标记为未完成。
global# zoneadm -z testzone mark incomplete |
使用带有 -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 选项可以与 zoneadm 的 mark 和 list 子命令结合使用以指定备用引导环境。有关更多信息,请参见 zoneadm(1M)。
将区域标记为未完成的操作是无法恢复的。可对标记为未完成的区域执行的唯一操作是卸载该区域,使其返回已配置状态。请参见如何卸载区域。
转换为就绪状态可使虚拟平台做好开始运行用户进程的准备。处于就绪状态的区域中没有执行任何用户进程。
如果您要引导区域并立即使用,则可以跳过此过程。引导区域时便会自动从就绪状态进行转换。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用带有 -z 选项、区域名称 my-zone 以及 ready 子命令的 zoneadm 命令将区域转换为就绪状态。
global# zoneadm -z my-zone ready |
在提示符下,使用带有 -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。
引导区域会将该区域置于运行状态。既可以从就绪状态引导区域,也可以从已安装状态引导区域。处于已安装状态的区域经透明引导,会从就绪状态转换为正在运行状态。允许登录到处于正在运行状态下的区域。
请注意,首次登录到区域时,即会执行内部区域配置。这在内部区域配置中介绍。
如果您打算使用 /etc/sysidcfg 文件来执行初始区域配置(如如何使用 /etc/sysidcfg 文件执行初始区域配置中所述),请创建 sysidcfg 文件并将其放入区域的 /etc 目录中,然后再引导区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用带有 -z 选项、区域名称 my-zone 以及 boot 子命令的 zoneadm 命令引导区域。
global# zoneadm -z my-zone boot |
当引导完成时,使用带有 -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 |
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 警告。请注意,此消息只是警告,而命令已成功执行。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在单用户模式下引导区域。
global# zoneadm -z my-zone boot -s |
有关如何登录到区域并执行初始内部配置,请参见第 21 章和第 22 章。
任务 |
说明 |
参考 |
---|---|---|
停止区域。 |
停止过程用于删除区域的应用程序环境和虚拟平台。此过程可将区域从就绪状态返回到已安装状态。有关如何干净地关闭区域,请参见如何使用 zlogin 关闭区域。 | |
重新引导区域。 |
重新引导过程会停止区域,然后再次引导它。 | |
卸载区域。 |
删除区域根文件系统中的所有文件。请慎重使用本过程。此操作无法撤消。 | |
根据同一系统中某个现有区域的配置置备新的非全局区域。 |
克隆区域是安装区域的另外一种更快速的方法。在安装新区域之前,仍然需要先对其进行配置。 | |
从系统中删除非全局区域。 |
此过程将从系统中完全删除区域。 |
停止过程用于删除区域的应用程序环境和虚拟平台。有关如何干净地关闭区域,请参见如何使用 zlogin 关闭区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
列出系统上正在运行的区域。
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 |
使用带有 -z 选项、区域名称(例如 my-zone)以及 halt 子命令的 zoneadm 命令停止给定区域。
global# zoneadm -z my-zone halt |
再次列出系统上的区域来检验是否已停止 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 |
如果您要重新启动区域,请引导它。
global# zoneadm -z my-zone boot |
停止操作失败时,请参见区域无法停止以获得疑难解答提示。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
列出系统上正在运行的区域。
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 |
使用带有 -z reboot 选项的 zoneadm 命令来重新引导区域 my-zone。
global# zoneadm -z my-zone reboot |
再次列出系统上的区域来检验是否已重新引导 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 通常会在重新引导后更改。
使用此过程时应谨慎。删除区域根文件系统中的所有文件的操作是无法恢复的。
区域不能处于正在运行状态。uninstall 操作对于正在运行的区域无效。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
列出系统上的区域。
global# zoneadm list -v |
将显示以下类似信息:
ID NAME STATUS PATH BRAND IP 0 global running / native shared - my-zone installed /export/home/my-zone native shared |
使用带有 -z uninstall 选项的 zoneadm 命令来删除区域 my-zone。
您还可以使用 -F 选项强制执行操作。如果未指定此选项,则系统将提示进行确认。
global# zoneadm -z my-zone uninstall -F |
再次列出系统上的区域来检验是否不再列出 my-zone。
global# zoneadm list -v |
将显示以下类似信息:
ID NAME STATUS PATH BRAND IP 0 global running / native shared |
如果区域卸载中断,则此区域停留在未完成状态。请使用 zoneadm uninstall 命令将此区域重置为已配置状态。
使用 uninstall 命令时应谨慎,因为此操作是无法恢复的。
克隆用于通过从源 zonepath 向目标 zonepath 复制数据来在系统上置备新区域。
从 Solaris 10 5/09 开始,当源 zonepath 和目标 zonepath 都驻留在 ZFS 上并且位于同一个池中时,zoneadm clone 命令会自动使用 ZFS 来克隆区域。但您可以指定,复制 ZFS zonepath 但不进行 ZFS 克隆。
在安装新区域之前,必须先对其进行配置。传递给 zoneadm create 子命令的参数是要克隆的区域名称。必须停止此源区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
停止要克隆的源区域,在此过程中该区域为 my-zone。
global# zoneadm -z my-zone halt |
通过将源区域 my-zone 的配置导出到文件(例如 master),开始配置新区域。
global# zonecfg -z my-zone export -f /export/zones/master |
也可以通过使用如何配置区域中的过程而不是通过修改现有配置来创建新区域配置。如果使用此方法,请在创建区域后,直接跳到步骤 6。
编辑文件 master。对于在不同的区域中不能相同的组件,请为其设置不同的属性和资源。例如,您必须设置新的 zonepath。对于共享 IP 区域,必须更改任何网络资源中的 IP 地址。对于专用 IP 区域,必须更改任何网络资源的物理属性。
通过使用文件 master 中的命令创建新区域 zone1。
global# zonecfg -z zone1 -f /export/zones/master |
通过克隆 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. |
列出系统上的区域。
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 |
如果 zoneadm 命令克隆位于自己的 ZFS 文件系统上的源 zonepath,则会执行以下操作:
zoneadm 命令提取软件清单。
zoneadm 命令会捕获 ZFS 快照并将其命名为 SUNWzoneX,例如 SUNWzone1。
zoneadm 命令使用 ZFS 克隆来克隆快照。
可以从克隆区域时最初捕获的现有快照多次克隆源区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
配置区域 zone2。
指定要使用现有快照来创建 new-zone2。
global# zoneadm -z zone2 clone -s zeepool/zones/my-zone@SUNWzone1 my-zone |
系统将显示:
Cloning snapshot zeepool/zones/my-zone@SUNWzone1 |
zoneadm 命令从快照 SUNWzone1 中验证软件并克隆快照。
列出系统上的区域。
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 |
可以使用此过程指定复制 zonepath,从而阻止在 ZFS 文件系统上自动克隆区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
指定复制 ZFS 上的 zonepath 而不是进行 ZFS 克隆。
global# zoneadm -z zone1 clone -m copy my-zone |
关闭区域 my-zone。
global# zlogin my-zone shutdown -y -g0 -i0 |
删除 my-zone 的根文件系统。
global# zoneadm -z my-zone uninstall -F |
删除 my-zone 的配置。
global# zonecfg -z my-zone delete -F |
列出系统上的区域来检验是否不再列出 my-zone。
global# zoneadm list -iv |
将显示以下类似信息:
ID NAME STATUS PATH BRAND IP 0 global running / native shared |
本章介绍如何从全局区域登录到区域。
本章包含以下主题:
有关过程和用法的信息,请参见第 22 章。
安装区域之后,您必须登录到该区域来完成应用程序环境的配置。您还可以登录到区域来执行管理任务。除非使用 -C 选项连接到区域控制台,否则使用 zlogin 登录到区域会启动新任务。一个任务不能跨两个区域。
使用 zlogin 命令,可以从全局区域登录到任何处于正在运行状态或就绪状态的区域。
只能使用带有 -C 选项的 zlogin 命令登录到不处于运行状态的区域。
如如何使用非交互模式访问区域中所述,可以通过提供要在区域内部运行的命令,在非交互模式下使用 zlogin 命令。但是,该命令或它所作用的所有文件都不能驻留在 NFS 上。如果命令的任意打开的文件或其地址空间的任意部分驻留在 NFS 上,则此命令将失败。地址空间包括可执行的命令本身以及命令的链接库。
只有全局区域中的全局管理员才能使用 zlogin 命令。有关更多信息,请参见 zlogin(1) 手册页。
安装后,区域处于未配置状态。此时区域没有进行命名服务的内部配置,未设置语言环境和时区,也尚未执行各种其他的配置任务。因此,首次使用区域控制台登录时,会运行 sysidtool 程序。有关更多信息,请参见 sysidtool(1M) 手册页。
可以使用以下两种方法执行所需的配置:
区域控制台登录,它启动了一系列系统问题。请准备对以下各项作出响应:
语言
所用终端的类型
主机名
安全策略(Kerberos 或标准 UNIX)
命名服务类型(有效响应为 None)
命名服务域
名称服务器
缺省时区
超级用户口令
此过程在执行初始内部区域配置中介绍。
/etc/sysidcfg 文件,您可以在首次引导区域之前创建它并将其放入区域内。有关更多信息,请参见 sysidcfg(4) 手册页。
本节介绍登录区域的方法。
每个区域都维护一个虚拟控制台 /dev/console。在控制台上执行操作称为控制台模式。区域控制台非常类似于系统上的串行控制台。即使重新引导区域,控制台的连接也仍然保持。有关如何区分控制台模式与登录会话(例如 telnet),请参见远程登录。
可以使用带有 C 选项和 -zonename 的 zlogin 命令来访问区域控制台。区域不必处于运行状态。
区域内的进程可以打开并将消息写入控制台。如果 zlogin -C 进程退出,则其他进程便可访问控制台。
要使用用户名登录到区域,请使用带有 l 选项、用户名以及 -zonename 的 zlogin 命令。例如,全局区域管理员可以通过为 zlogin 指定 -l 选项,以普通用户身份在非全局区域中登录:
global# zlogin -l user zonename |
要以用户 root 身份登录,请使用不带选项的 zlogin 命令。
如果出现登录问题,并且您无法使用 zlogin 命令或带有 -C 选项的 zlogin 命令访问区域,则可以选择另外一种方法。您可以使用带有 -S(安全)选项的 zlogin 命令来进入区域。仅当其他登录方式不成功时,才使用此模式来恢复损坏的区域。在这个最小环境中,可以诊断区域登录失败的原因。
远程登录区域的能力取决于您确定的网络服务选择。缺省情况下,通过 rlogin、ssh 和 telnet 的登录可正常运行。有关这些命令的更多信息,请参见 rlogin(1)、ssh(1) 和 telnet(1)。
zlogin 命令还提供了其他两种方法来访问区域以及在区域内部执行命令。这两种方法为交互模式和非交互模式。
在交互模式下,会分配新的伪终端,以供在区域内使用。与允许独占访问控制台设备的控制台模式不同,在交互模式下,可以随时打开任意数量的 zlogin 会话。未提供要执行的命令时,便会激活交互模式。需要终端设备的程序(例如编辑器)在此模式下可正常运行。
非交互模式用于运行可管理区域的 shell 脚本。非交互模式不会分配新的伪终端。当您提供了要在区域内部运行的命令时,便会启用非交互模式。
本章提供用于完成已安装区域的配置、从全局区域登录到某个区域以及关闭区域的过程。同时还介绍如何使用 zonename 命令来列显当前区域的名称。
有关区域登录进程的介绍,请参见第 21 章。
任务 |
说明 |
参考 |
---|---|---|
执行内部配置。 |
登录到区域控制台或使用 /etc/sysidcfg 文件来执行初始区域配置。 | |
登录到区域。 |
您可以使用交互模式分配伪终端或提供要在区域中运行的命令,通过控制台登录到区域。提供要运行的命令不会分配伪终端。当指向区域的连接被拒绝时,您还可以使用故障安全模式进行登录。 | |
退出非全局区域。 |
从非全局区域断开。 | |
关闭区域。 |
使用 shutdown 实用程序或脚本来关闭区域。 | |
列显区域名称。 |
列显当前区域的区域名称。 |
您必须使用以下方法之一来配置区域:
按照内部区域配置中所述,登录到区域并对其进行配置。
按照如何使用 /etc/sysidcfg 文件执行初始区域配置中所述,使用 /etc/sysidcfg 文件配置区域。
执行完内部配置之后,最好复制非全局区域的配置。将来您可以使用此备份来恢复区域。以超级用户或主管理员的身份,将区域 my-zone 的配置列显到文件。以下示例使用名为 my-zone.config 的文件。
global# zonecfg -z my-zone export > my-zone.config |
有关更多信息,请参见如何恢复单个非全局区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用带有 -C 选项和区域名称(在此过程中为 my-zone)的 zlogin 命令。
global# zlogin -C my-zone |
从其他终端窗口中引导区域。
global# zoneadm -z my-zone boot |
将在 zlogin 窗口中显示以下类似信息:
[NOTICE: Zone booting up] |
首次登录到控制台时,系统会提示您回答一系列问题。将显示以下类似信息:
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 . . . |
有关必须回答的问题的完整列表,请参见内部区域配置。
(可选)如果未按步骤 3 所述使用两个窗口,则可能已错过关于配置信息的初始提示。如果您在区域登录时看到的不是提示而是以下系统消息:
[connected to zone zonename console] |
请按回车键再次显示提示。
如果输入错误响应并尝试重新启动配置,则可能会在再次尝试此过程时遇到问题。这是因为 sysidtools 可以存储先前的响应。
如果发生这种情况,请在全局区域中使用以下解决方法来重新启动配置过程。
global# zlogin -S zonename /usr/sbin/sys-unconfig |
有关 sys-unconfig 命令的更多信息,请参见 sys-unconfig(1M) 手册页。
Solaris 10 8/07: 添加了关键字nfs4_domain。示例文件显示此关键字。如果运行早期的发行版,下面的步骤 4 显示其他步骤。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在全局区域中,转到非全局区域的 /etc 目录:
global# cd /export/home/my-zone/root/etc |
创建 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 |
如果运行 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) 手册页。
引导区域。
有关更多信息,请参见 sysidcfg(4) 手册页。
使用 zlogin 命令,可以从全局区域登录到任何处于正在运行状态或就绪状态的区域。有关更多信息,请参见 zlogin(1) 手册页。
如以下过程中所述,您可以通过多种方法登录到区域。您还可以远程登录,如远程登录中所述。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用带有 -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. |
当显示区域控制台时,以 root 身份登录,按回车键,并在提示时键入超级用户口令。
my-zone console login: root Password: |
在交互模式下,会分配新的伪终端以在区域内部使用。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
从全局区域登录到某个区域,例如 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 |
键入 exit 关闭连接。
将显示以下类似消息:
[Connection to zone 'my-zone' pts/2 closed] |
当用户提供要在区域内部运行的命令时,便会启用非交互模式。非交互模式不会分配新的伪终端。
请注意,命令或运行命令的所有文件都不能驻留在 NFS 上。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
从全局区域登录到 my-zone 区域并提供命令名称。
在此使用命令 zonename。
global# zlogin my-zone zonename |
您会看到以下输出:
my-zone |
有关 zlogin 命令选项的更多信息,请参见 zlogin(1)。
当指向区域的连接被拒绝时,可以使用带有 -S 选项的 zlogin 命令进入区域的最小环境。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在全局区域中,使用带有-S 选项的 zlogin 命令来访问区域(例如 my-zone)。
global# zlogin -S my-zone |
如果在全局区域中运行 init 0 干净地关闭 Solaris 系统,也会在系统上的每个非全局区域中运行 init 0。请注意,init 0 在系统关闭之前不会警告本地和远程用户注销。
使用此过程可以干净地关闭区域。有关如何在不运行关闭脚本的情况下停止区域,请参见如何停止区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
登录到要关闭的区域,例如 my-zone,并将 shutdown 指定为实用程序的名称,将 init 0 指定为状态。
global# zlogin my-zone shutdown -y -g0 -i 0 |
您的站点可能具有自己的适用于特定环境的关闭脚本。
当前,不能在非交互模式下使用 shutdown 命令将区域置于单用户状态。有关更多信息,请参见 CR 6214427。
您可以使用如何使用交互模式访问区域中介绍的交互式登录。
此区域安装时使用了《系统管理指南:基本管理》中的第 19 章 “管理服务(任务)”中介绍的开放式网络配置。您可以将区域切换到受限的网络配置,也可以在区域中启用或禁用个别服务。
从全局区域登录到某个区域(例如 my-zone)。
global# zlogin my-zone |
运行 netservices 命令,将区域切换到受限的网络配置。
my-zone# /usr/sbin/netservices limited |
将显示以下类似信息。输入 y 响应提示,以重新启动 dtlogin。
restarting syslogd restarting sendmail dtlogin needs to be restarted. Restart now? [Y] y restarting dtlogin |
从全局区域登录到某个区域(例如 my-zone)。
global# zlogin my-zone |
运行 svcadm 命令,以使用资源上限设置守护进程启用物理内存控制。
my-zone# svcadm enable svc:/system/rcap:default |
列出服务,以验证是否已启用 rcapd。
my-zone# svcs -a . . . online 14:04:21 svc:/system/rcap:default . . . |
zonename(1) 手册页中所述的 zonename 命令可列显当前区域的名称。以下示例显示了在全局区域中使用 zonename 时的输出。
# zonename global |
本章为 Solaris 10 11/06 发行版的新增内容。后续发行版中还添加了其他功能。
本章介绍如何:
将现有的非全局区域移动到同一计算机上的新位置
在执行实际迁移前验证将在非全局区域迁移中发生的情况。
将现有的非全局区域迁移到新计算机中
使用 zoneadm detach 和 zoneadm attach 命令,将具有较低修补程序级别的区域更新到具有较高修补程序级别的全局区域级别。
从 Solaris 10 10/08 发行版开始,如果新主机具有相同版本或更高版本的与区域有关的软件包及关联修补程序,则使用带有 -u 选项的 zoneadm attach 可更新软件包的最小集合以使非全局区域在新主机上可用。如果新主机同时具有与源主机相比较高版本和较低版本的修补程序,那么在附加操作中不允许更新。
带有 -u 选项的 zoneadm attach 也启用了计算机类之间的迁移,例如从 sun4u 到 sun4v。
从 Solaris 10 9/10 发行版开始,使用带有 -U 选项的 zoneadm attach 可更新区域的所有软件包,以便这些软件包匹配在此主机上新安装的非全局区域中查看的信息。任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并保留原样。此选项也可启用计算机类之间的自动迁移,例如从 sun4u 到 sun4v。
作为正常修补的备选,该区域可在全局区域修补时分离,然后使用 -U 选项重新附加,以匹配全局区域的修补程序级别。
有关移动和迁移 lx 标记区域的信息,请参见第 37 章。
此过程用于通过更改 zonepath 将区域移动到同一系统上的新位置。必须停止该区域。新 zonepath 必须位于本地文件系统中。需要满足资源和属性类型中介绍的标准 zonepath 条件。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
停止要移动的区域,在此过程中为 db-zone。
global# zoneadm -z db-zone halt |
使用带有 move 子命令的 zoneadm 命令将区域移动到新 zonepath,即 /export/zones/db-zone。
global# zoneadm -z db-zone move /export/zones/db-zone |
检验路径。
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 5/08 发行版时,可以在将区域实际移动到其他计算机之前执行区域迁移试验。有关更多信息,请参见Solaris 10 5/08:关于在执行迁移之前验证区域迁移。
自 Solaris 10 11/06 发行版以来,本节添加了新信息。
zonecfg 和 zoneadm 命令可用于将现有的非全局区域从一个系统迁移到另一个系统。需要停止区域并使其与当前主机分离。zonepath 将移动到它所附加的目标主机。
以下限制适用于区域迁移:
目标系统上的全局区域必须与原始主机运行相同的 Solaris 发行版。
为确保区域可以正常运行,目标系统上所需安装的以下操作系统软件包和修补程序必须与原始主机上安装的软件包和修补程序具有相同的版本。
在 inherit-pkg-dir 资源下提供文件的软件包
SUNW_PKG_ALLZONES=true 的软件包
其他软件包和修补程序(例如用于第三方产品的软件包和修补程序)可以有所不同。
Solaris 10 10/08:如果新主机具有与区域相关的软件包及其关联的修补程序的更高版本,使用带有 -u 选项的 zoneadm attach 更新区域内的那些软件包以匹配新主机。对附加软件的更新可查看将要迁移的区域,并确定必须更新哪些软件包以匹配新主机。仅更新那些软件包。其余软件包和其相关的修补程序会根据的区域的不同而不同。此选项也可启用计算机类之间的自动迁移,例如从 sun4u 到 sun4v。
Solaris 10 9/10:如果新主机具有软件包及其关联的修补程序的更高版本,使用带有 -U 选项的 zoneadm attach 更新区域内的那些软件包以匹配在此主机上新安装的非全局区域中查看的信息。任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并保留原样。此选项也可启用计算机类之间的自动迁移,例如从 sun4u 到 sun4v。
Solaris 10 5/09:-b 选项可用于指定在更新之前要从区域中回退的修补程序。
除非使用 -u 选项(该选项可用于在 sun4u 和 sun4v 计算机类之间进行迁移),否则主机和目标系统必须具有相同的计算机体系结构。
Solaris 10 5/09:-b 选项可用于指定在附加过程中要从区域中回退的修补程序(正式或临时诊断/援助 (Interim Diagnostics/Relief, IDR))。可以指定多个 -b 选项。如果任一修补程序由于任何原因无法回退,则 attach 将失败,并且不会回退任何修补程序。
此选项仅适用于使用 SVr4 打包的区域标记。
要检验 Solaris 发行版本和计算机体系结构,请键入:
#uname -m |
zoneadm detach 进程用于创建在其他系统上附加区域所需的信息。zoneadm attach 进程用于检验目标计算机是否具有托管区域所需的正确配置。
由于可以通过多种方式来使 zonepath 在新主机上可用,因此 zonepath 从一个系统到另一个系统的实际移动是由全局管理员执行的手动进程。
在附加到新系统时,区域处于已安装状态。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
停止要迁移的区域,在此过程中为 my-zone。
host1# zoneadm -z my-zone halt |
分离该区域。
host1# zoneadm -z my-zone detach |
分离的区域现在处于已配置状态。
将 my-zone 的 zonepath 移动到新主机。
有关更多信息,请参见如何将 zonepath 移动到新主机。
在新主机上,对该区域进行配置。
host2# zonecfg -z my-zone |
您会看到以下系统消息:
my-zone: No such zone configured Use 'create' to begin configuring a new zone. |
要在新主机上创建区域 my-zone,请使用带有 -a 选项以及新主机上的 zonepath 的 zonecfg 命令。
zonecfg:my-zone> create -a /export/zones/my-zone |
(可选)查看配置。
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 |
对配置进行所需的任何调整。
例如,新主机上的网络物理设备有所不同,或者属于配置组成部分的设备在新主机上可能具有不同的名称。
zonecfg:my-zone> select net physical=bge0 zonecfg:my-zone:net> set physical=e1000g0 zonecfg:my-zone:net> end |
提交配置并退出。
zonecfg:my-zone> commit zonecfg:my-zone> exit |
使用下列方法之一在新主机上附加区域。
附加区域,并进行验证检查。
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。这在某些情况下(例如在群集环境中或在执行备份和恢复操作时)很有用,但要求对系统进行托管区域所需的正确配置。不正确的配置以后可能会导致未定义的行为。
创建 zonepath 的归档的方法有很多种。例如,可以使用cpio(1) 和 pax(1) 手册页中所述的 cpio 或 pax 命令。
将归档传送至新主机的方法也有很多种。用于将 zonepath 从源主机传送到目标主机的机制取决于本地配置。在某些情况下(如 SAN),zonepath 数据实际上可能未移动。可能只需对 SAN 进行重新配置,便可在新主机上显示 zonepath。在其他情况下,可能要将 zonepath 写入磁带,再将磁带邮寄至新站点。
由于上述原因,此步骤不能自动执行。系统管理员必须选择最合适的方法来将 zonepath 移动到新主机。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
将 zonepath 移动到新主机。您可以使用本过程中介绍的方法,也可以使用您选择的其他方法。
在 host1 上创建 zonepath 的 tar 文件,并使用 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 |
在 host2上,解压缩 tar 文件。
host2# cd /export/zones host2# tar xf my-zone.tar |
有关以下问题的疑难解答信息,请参见使用 zoneadm attach 操作解决问题:
修补程序和软件包不同步。
操作系统发行版不匹配。
如果已复制数据而未重新配置 SAN,那么即使该区域现在处于已配置状态,zonepath 数据在源主机上也仍然可见。您可以在将数据移动到新主机后从源主机上手动删除 zonepath,也可以将该区域重新附加到源主机,并使用 zoneadm uninstall 命令删除 zonepath。
可以在将区域移动到新计算机之前使用“不执行”选项 -n 执行试验。
zoneadm detach 子命令与 -n 选项结合使用,可在运行的区域上生成清单,而不实际分离该区域。源系统中区域的状态不会改变。区域清单会被发送到 stdout。全局管理员可以将此输出定向到某一文件,或将此输出传输到远程命令以便立即在目标主机上进行验证。zoneadm attach 子命令与 -n 选项结合使用,可读取该清单并检验目标计算机是否具有托管区域所需的正确配置,而不实际执行附加。
在执行试验性附加之前,不必在新主机上配置目标系统中的区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用以下方法之一。
在 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 移动到新主机。
开发用于将区域迁移到不同系统的附加时更新还可以用于修补区域。此方法使全局区域能够更快可用。然后,系统管理员可以控制先进行更新的区域,并使这些区域在更新和引导重要性较低的区域之前运行。
以下过程更新所有修补程序以便这些区域如同系统上新安装的区域一样。
将修补程序包应用到全局区域之前,请分离所有的非全局区域。
将修补程序包应用到全局区域。
在应用修补程序包并重新引导系统后,请使用带有 -U 选项的 zoneadm attach 命令,以使非全局区域达到与全局区域相同的修补程序级别。
任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并且没有影响。
有关使用 patchadd 实用程序的快速修补解决方案的信息,请参见Solaris 10 10/09:可减少修补时间的区域并行修补。
可以使用“物理转换为虚拟 (physical-to-virtual, P2V)”功能将现有 Solaris 系统直接迁移到目标系统上的本地区域。
根据原始系统所执行的服务,全局管理员可能需要在安装区域后手动自定义区域。例如,分配给区域的权限可能需要进行修改。此操作无法自动完成。此外,由于所有系统服务都不在区域内工作,因此并非每个物理系统都是迁移到区域的良好候选。
请注意,如果要通过 P2V 安装的系统映像比目标主机操作系统的版本新,安装将会失败。
从源系统收集所需的信息。
获取 hostname:
# hostname |
获取 hostid:
# hostid |
另请参见主机 ID 仿真。
获取 root 用户口令。
查看系统中正在运行的软件:
# ps -eaf |
检查系统网络配置:
# ifconfig -a |
查看使用的存储,例如查看 /etc/vfstab 的内容。
查看已被占用的本地磁盘存储量,该值可确定归档文件的大小:
# df -k |
确定系统中的软件包和修补程序:有关更多信息,请参见 pkginfo(1)。
检查 /etc/system 的内容。
可以使用 Flash Archiving 工具创建能够迁移到区域中的已安装系统的映像。
创建映像之前,可对系统进行完全配置,以包含将在区域中运行的所有软件。然后,安装区域时,安装程序将使用此映像。
如果在使用 ZFS 根的 Solaris 10 系统中创建了 Solaris Flash 归档文件或 flar,则在缺省情况下,flar 将成为实际的 ZFS 发送流,它可用于重新创建根池。此映像无法用于安装区域。您必须在系统拥有 ZFS 根的情况下使用显式的 cpio 或 pax 归档文件创建 flar。
使用带有 -L archiver 选项的 flarcreate 命令,指定 cpio 或 pax 作为归档文件的方法。请参见下一过程中的步骤 4。
使用 flarcreate(1M) 手册页中所述 flarcreate 命令可创建系统映像。此示例过程使用 NFS 将 Flash 归档文件放到目标 Solaris 系统上,不过您可以使用任何方法移动该文件。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
登录要进行归档的源系统。
转到 root 目录。
# cd / |
使用 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 归档文件
gzip 压缩的 cpio 归档文件
bzip2 压缩的 cpio 归档文件
使用 -x xustar (XUSTAR) 格式创建的 pax 归档文件
ufsdump 级别零(完整)备份
请注意,安装程序只能接受使用归档实用程序创建的文件的目录,该实用程序可以保存和恢复文件权限、所有者和链接。
有关更多信息,请参见 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 |
如果将应用程序从物理 Solaris 系统迁移到新系统上的区域,hostid 将更改为新计算机的 hostid。
在某些情况下,应用程序会依赖原始的 hostid,从而不能更新应用程序配置。这种情况下,可以将区域配置为使用原始系统的 hostid。通过设置 zonecfg 属性来指定 hostid 即可实现这一目的,如如何配置区域中所述。使用的值应该是在原始系统上运行 hostid 命令时的输出。要查看已安装区域中的 hostid,也可以使用 hostid 命令。
有关主机 ID 的更多信息,请参见 hostid(1)。
通过使用如何配置区域过程,在目标系统上创建新的区域配置。
如果您将要使用 CD 或 DVD 在新区域中安装应用程序,请在最初配置标记区域时,使用 add fs 在全局区域内添加对 CD 或 DVD 介质的只读访问权限。然后可以使用 CD 或 DVD 在标记区域中安装产品。有关更多信息,请参见如何在非全局区域中添加对 CD 或 DVD 介质的访问权限。
第 2 部分, Zones和zoneadm(1M) 手册页中所述 zoneadm 命令是用于安装和管理非全局区域的主要工具。使用 zoneadm 命令的操作必须从目标系统上的全局区域中运行。
除了从归档文件解压缩文件外,安装过程还会执行检查、必需的后处理以及其他功能,以确保将区域优化为在主机上运行。
可以使用 Solaris 系统的映像,因为该映像已进行过完全配置,具有要在区域中运行的所有软件。请参见创建用于将 Solaris 系统直接迁移到区域的映像。
如果利用现有系统创建了 Solaris 系统归档文件,并在安装区域时使用 -p(保留 sysidcfg)选项,该区域将与用于创建映像的系统具有相同的标识。
如果在目标上安装区域时使用 -u (sys-unconfig) 选项,则生成的区域将不会配置主机名或名称服务。
您必须指定 -p 选项或 -u 选项,否则会产生错误。
选项 |
说明 |
---|---|
-a |
从中复制系统映像的归档文件位置。支持完整 Flash 归档文件以及 cpio、gzip 压缩的 cpio、bzip 压缩的 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 时允许使用。
成为超级用户或承担主管理员角色。
通过将 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 将此区域重置为已配置状态。
要执行此过程,您必须是全局区域中的全局管理员。
如果使用 -u 选项,则还必须使用 zlogin 命令访问区域控制台并按照执行初始内部区域配置中所述执行系统配置。
成为超级用户或承担主管理员角色。
使用带有 -z 选项、区域名称 s-zone 以及 boot 子命令的 zoneadm 命令引导区域。
global# zoneadm -z s-zone boot |
当引导完成时,使用带有 -v 选项的 list 子命令检验状态。
global# zoneadm list -v |
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_ALLZONES、SUNW_PKG_HOLLOW 和 SUNW_PKG_THISZONE 软件包参数的信息已修订。请参见打包工具和修补程序工具概述和软件包参数信息。
Solaris 10 6/06 及更高发行版:有关如何注册系统或如何使用 Sun Connection(以前称为 Sun Update Connection)来管理软件更新的信息,请访问 BigAdmin 站点中的 Sun Connection 信息中心。
Solaris 10 8/07 及更高发行版:
使用 patchadd 命令向软件包中添加修补程序时,如果该软件包是使用带有 -G 选项的 pkgadd 命令安装的,则 patchadd 命令将不再需要 -G 选项。
添加了一个表,此表介绍在非全局区域处于各种状态的系统中使用 pkgadd、 pkgrm、patchadd 和 patchrm 命令时将会发生的情况。请参见区域状态对修补程序和软件包操作有何影响。
添加了对 patchadd -G 和 pkginfo 变量之间的交互的阐述。请参见安装有区域的系统上的 patchadd -G 和 pkginfo 变量之间的交互。
添加了关于延迟激活修补的信息。请参见Solaris 10 8/07:延迟激活修补。
删除了关于 pkgrm 命令的 -G 选项的信息。
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 的区域:
Solaris Live Upgrade 对 ZFS 上具有 zonepath 的系统的支持开始于 Solaris 10 10/08 发行版。
仅 Solaris Live Upgrade 可用于更新该系统。
有关更多信息,请参见《Oracle Solaris ZFS 管理指南》中的“使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统 (Solaris 10 10/08)”。
在本文档介绍的限制范围之内,区域管理员可以使用打包工具来管理安装在非全局区域中的任何软件。
安装区域时,将应用以下一般原则:
全局区域管理员可以管理系统上每个区域中的软件。
通过使用 Solaris 打包和修补程序工具,可以从全局区域管理非全局区域的根文件系统。在非全局区域中支持使用 Solaris 打包和修补程序工具管理共同打包(捆绑)产品、独立(非绑定)产品或第三方产品。
打包和修补程序工具在启用了区域的环境中工作。使用这些工具,还可以将全局区域中安装的软件包或修补程序安装在非全局区域中。
SUNW_PKG_ALLZONES 软件包参数定义软件包的区域范围。此范围确定了可以安装单独软件包的区域类型。有关此参数的更多信息,请参见SUNW_PKG_ALLZONES 软件包参数。
需要在所有区域中安装某软件包并要求此软件包在所有区域中均相同时,可使用 SUNW_PKG_HOLLOW 软件包参数定义软件包的可见性。有关此参数的信息,请参见SUNW_PKG_HOLLOW 软件包参数。
SUNW_PKG_THISZONE 软件包参数定义是否必须将软件包仅安装在当前区域中。有关此参数的信息,请参见SUNW_PKG_THISZONE 软件包参数。
未定义区域软件包参数值的软件包具有缺省设置 false。
非全局区域中可见的打包信息与使用 Solaris 打包和修补程序工具已安装在该区域中的文件一致。打包信息与 inherit-pkg-dir 目录保持同步。
可以将某项更改(例如添加到全局区域中的修补程序或软件包)应用到所有区域。此功能可保持全局区域和每个非全局区域之间的一致性。
软件包命令可以添加、删除和询问软件包。修补程序命令可以添加和删除修补程序。
当执行某些软件包和修补程序操作时,将针对此类型的其他操作暂时锁定区域。系统也可能会在继续执行请求的操作之前向管理员确认。
当安装非全局区域时,仅会完全复制全局区域中安装的部分 Solaris 软件包。例如,很多包含 Solaris 内核的软件包在非全局区域中是不需要的。所有非全局区域隐含共享全局区域中的同一 Solaris 内核。但是,即使非全局区域不需要或者不使用软件包的数据,非全局区域也可能需要在全局区域中安装软件包的信息。利用此信息,可以通过全局区域正确解析非全局区域中软件包的相关性。
软件包的参数可以控制软件包内容的分发方式,并使这些内容在安装了非全局区域的系统上可见。SUNW_PKG_ALLZONES、SUNW_PKG_HOLLOW 和 SUNW_PKG_THISZONE 软件包参数定义安装了区域的系统上的软件包的特征。如果需要,在区域环境中应用或删除软件包时,系统管理员可以检查这些软件包参数的设置,以检验软件包的适用性。可以使用 pkgparam 命令查看这些参数的值。有关参数的更多信息,请参见软件包参数信息。有关使用说明,请参见在安装了区域的系统上检查软件包参数设置。
有关软件包特征和参数的信息,请参见 pkginfo(4) 手册页。有关显示软件包参数值的信息,请参见 pkgparam(1) 手册页。
针对任何软件包生成修补程序时,必须将参数设置为与原始软件包相同的值。
任何必须为交互式的软件包(这意味着该软件包具有请求脚本)仅添加到当前区域。软件包不会传播到其他任何区域。如果将交互式软件包添加到全局区域中,则对该软件包的处理类似于使用带有 -G 选项的 pkgadd 命令进行添加。有关此选项的更多信息,请参见关于在区域中添加软件包。
最好使非全局区域中安装的软件与全局区域中安装的软件尽可能保持同步。此做法可最大限度地降低管理安装了多个区域的系统的难度。
要实现此目标,在全局区域中添加或删除软件包时,软件包工具会强制执行以下规则。
如果软件包当前既没有安装在全局区域中,也没有安装在任何非全局区域中,则可将其安装在以下位置:
仅安装在全局区域中,前提是 SUNW_PKG_ALLZONES=false
仅安装在当前(全局)区域中,前提是 SUNW_PKG_THISZONE=true
安装在全局区域和所有非全局区域中
如果软件包当前仅安装在全局区域中:
该软件包可以安装在所有非全局区域中。
该软件包可以从全局区域中删除。
如果软件包当前安装在全局区域和仅部分非全局区域中:
SUNW_PKG_ALLZONES 必须设置为 false。
该软件包可以安装在所有非全局区域中。任何非区域中的现有实例都会更新到安装的修订版。
该软件包可以从全局区域中删除。
该软件包可以从全局区域和所有非全局区域中删除。
如果软件包当前安装在全局区域和所有非全局区域中,则该软件包可以从全局区域和所有非全局区域中删除。
这些规则可以确保以下情况:
安装在全局区域中的软件包仅安装在全局区域中,或是安装在全局区域和所有非全局区域中。
安装在全局区域和任何非全局区域中的软件包在所有区域中均相同。
任何非全局区域中可能的软件包操作包括:
如果软件包当前未安装在非全局区域中,则仅当 SUNW_PKG_ALLZONES=false 时,才能安装软件包。
软件包可以安装在当前(非全局)区域中,前提是 SUNW_PKG_THISZONE=true。
如果软件包当前安装在非全局区域中:
仅当 SUNW_PKG_ALLZONES=false 时,才可以通过软件包的现有实例安装软件包。
仅当 SUNW_PKG_ALLZONES=false 时,才能从非全局区域中删除软件包。
下表介绍了在非全局区域处于各种状态的系统中使用 pkgadd、pkgrm、patchadd 和 patchrm 命令时将发生的情况。
请注意,已针对 Solaris 10 5/08 发行版修订了此表中已安装状态的说明。
区域状态 |
对软件包和修补程序操作的影响 |
---|---|
已配置 |
修补程序和软件包工具可以运行。尚未安装任何软件。 |
已安装 |
修补程序和软件包工具可以运行。在修补或打包操作期间,系统会将区域从已安装状态移至称为已挂载的新内部状态。完成修补后,区域将恢复为已安装状态。 请注意,在执行完 zoneadm -z zonename install 后,区域也会立即移至已安装状态。处于已安装状态并且从未引导的区域不能进行修补,也不能运行打包命令。至少要将该区域引导至正在运行状态一次。在至少引导一次区域、然后通过 zoneadm halt 再返回已安装状态后,便可运行修补程序和打包命令。 |
就绪 |
修补程序和软件包工具可以运行。 |
正在运行 |
修补程序和软件包工具可以运行。 |
未完成 |
zoneadm 正在安装或删除区域。无法使用软件包和修补程序工具。这些工具不能使区域进入使用工具所需的相应状态。 |
使用 pkgadd(1M) 手册页中所述的 pkgadd 系统实用程序,可以在安装了区域的 Solaris 系统上添加软件包。
pkgadd 实用程序可以在全局区域中与 -G 选项一起使用,以仅向全局区域中添加软件包。软件包不会传播到其他任何区域。请注意,如果 SUNW_PKG_THISZONE=true,则不必使用 -G 选项。如果 SUNW_PKG_THISZONE=false,则 -G 选项会将其覆盖。
在全局区域中运行 pkgadd 实用程序时,将会进行以下操作。
pkgadd 实用程序可以将软件包添加到以下位置:
仅全局区域,除非软件包设置为 SUNW_PKG_ALLZONES=true
全局区域和所有非全局区域
仅所有非全局区域,前提是软件包已安装在全局区域中
仅当前区域,前提是 SUNW_PKG_THISZONE=true
pkgadd 实用程序不能将软件包添加到以下位置:
非全局区域的任何部分
所有非全局区域,除非软件包已安装在全局区域中
如果在不带 -G 选项,并且 SUNW_PKG_THISZONE=false 的情况下运行 pkgadd 实用程序,则缺省情况下会将指定的软件包添加到所有区域。软件包不会标记为仅安装在全局区域中。
如果在没有 -G 选项和 SUNW_PKG_THISZONE=true 的情况下运行 pkgadd 实用程序,则缺省情况下会将指定的软件包添加到当前(全局)区域。软件包标记为仅安装在全局区域中。
如果使用 -G 选项,则 pkgadd 实用程序将指定的软件包仅添加到全局区域。软件包标记为仅安装在全局区域中。如果安装了任何非全局区域,则不会安装软件包。
要将软件包添加到全局区域和所有非全局区域,请在全局区域中执行 pkgadd 实用程序。以全局管理员的身份,运行不带 -G 选项的 pkgadd。
可以将软件包添加到全局区域和所有非全局区域中,而不用考虑受其影响的区域。
pkgadd 实用程序会执行以下步骤:
检查全局区域和所有非全局区域中软件包的相关性。如果任何区域中都没有安装所需的软件包,则相关性检查将失败。系统会通知全局管理员,提示其是否继续。
将软件包添加到全局区域。
更新全局区域中的软件包数据库。
将软件包添加到每个非全局区域中并更新全局区域中的数据库。
更新每个非全局区域中的软件包数据库。
要仅向全局区域中添加软件包,请在全局区域中以全局管理员身份执行仅带有 -G 选项的 pkgadd 实用程序。
如果以下情况成立,则可以将软件包添加到全局区域中:
该软件包的内容不会影响全局区域中与任何非全局区域共享的任何区域。
该软件包设置为 SUNW_PKG_ALLZONES=false。
pkgadd 实用程序会执行以下步骤:
如果该软件包的内容影响全局区域中与任何非全局区域共享的任何区域,或者软件包设置为 SUNW_PKG_ALLZONES=true,则 pkgadd 将失败。将出现错误消息,告知必须将软件包添加到全局区域和所有非全局区域中。
仅对全局区域执行软件包的相关性检查。如果未安装所需的软件包,则相关性检查将失败。系统会通知全局管理员,提示其是否继续。
将软件包添加到全局区域。
更新全局区域中的软件包数据库。
注释全局区域中的软件包信息,指明仅在全局区域中安装该软件包。如果将来安装非全局区域,则不会安装该软件包。
要向所有非全局区域中添加已安装在全局区域中的软件包,当前必须从全局区域中删除该软件包,然后在所有区域中重新安装。
以下是用于向所有非全局区域中添加已安装在全局区域中的软件包的步骤:
在全局区域中,使用 pkgrm 删除软件包。
在不使用 -G 选项的情况下添加软件包。
要在指定的非全局区域中添加软件包,请以区域管理员身份执行不带任何选项的 pkgadd 实用程序。需要满足以下条件:
pkgadd 实用程序只能将软件包添加到使用该实用程序的非全局区域中。
该软件包不能影响该区域中从全局区域共享的任何区域。
该软件包必须设置为 SUNW_PKG_ALLZONES=false。
pkgadd 实用程序会执行以下步骤:
添加软件包之前,针对非全局区域的软件包数据库检查软件包的相关性。如果未安装所需的软件包,则相关性检查将失败。系统会通知非全局区域管理员,提示其是否继续。如果以下任何一种情况成立,检查将会失败。
软件包的任何组件影响到该区域中从全局区域共享的任何区域。
软件包设置为 SUNW_PKG_ALLZONES=true。
将软件包添加到区域中。
更新区域中的软件包数据库。
pkgrm(1M) 手册页中所述的 pkgrm 实用程序支持在安装了区域的 Solaris 系统上删除软件包。
在全局区域中使用 pkgrm 实用程序时,将进行以下操作。
pkgrm 可以从全局区域和所有非全局区域中删除软件包;如果仅在全局区域中安装了软件包,则 pkgrm 只能从全局区域中删除软件包。
如果软件包还安装在非全局区域中,则 pkgrm 不能仅从全局区域中删除软件包,也不能从非全局区域的任何部分中删除软件包。
请注意,只有在以下情况成立时,才能由非全局区域中的区域管理员将软件包从该区域中删除。
该软件包不会影响非全局区域中从全局区域共享的任何区域。
该软件包设置为 SUNW_PKG_ALLZONES=false。
要从全局区域和所有非全局区域中删除软件包,请以全局管理员的身份在全局区域中执行 pkgrm 实用程序。
可以从全局区域和所有非全局区域中删除软件包,而不用考虑受其影响的区域。
pkgrm 实用程序会执行以下步骤:
检查全局区域和所有非全局区域中软件包的相关性。如果相关性检查失败,则 pkgrm 也会失败。系统会通知全局管理员,提示其是否继续。
从每个非全局区域中删除软件包。
更新每个非全局区域中的软件包数据库。
从全局区域中删除软件包。
更新全局区域中的软件包数据库。
以区域管理员身份在非全局区域中使用 pkgrm 实用程序来删除软件包。将应用以下限制:
pkgrm 仅能从非全局区域中删除软件包。
该软件包不能影响该区域中从全局区域共享的任何区域。
该软件包必须设置为 SUNW_PKG_ALLZONES=false。
pkgrm 实用程序会执行以下步骤:
针对非全局区域中的软件包数据库检查相关性。如果相关性检查失败,则 pkgrm 也会失败并通知区域管理员。如果以下任何一种情况成立,检查将会失败。
软件包的任何组件影响到该区域中从全局区域共享的任何区域。
软件包设置为 SUNW_PKG_ALLZONES=true。
将软件包从区域中删除。
更新区域中的软件包数据库。
SUNW_PKG_ALLZONES、SUNW_PKG_HOLLOW 和 SUNW_PKG_THISZONE 软件包参数定义安装了区域的系统上的软件包的特征。必须设置这些参数,以便可在安装了非全局区域的系统上管理软件包。
下表列出了设置软件包参数的四种有效组合。如果您选择的设置组合未在下表中列出,则这些设置无效并且将无法安装软件包。
请确保您已设置了全部三个软件包参数。可以将这三个软件包参数保留为空。软件包工具会将缺少的区域软件包参数解释成设置为 false,但是绝对不建议不设置这些参数。通过设置全部三个软件包参数,可以指定安装或删除软件包时,软件包工具应当表现的确切行为。
表 25–1 有效的软件包参数设置
可选的 SUNW_PKG_ALLZONES 软件包参数说明软件包的区域范围。此参数定义了以下内容:
是否需要在所有区域中安装软件包
是否需要所有区域中的软件包均相同
SUNW_PKG_ALLZONES 软件包参数有两个允许的值。这些值为 true 和 false。缺省值为 false。如果未设置此参数或将其设置为除 true 或 false 以外的值,则会使用值 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 软件包参数值
SUNW_PKG_HOLLOW 软件包参数定义了在要求将软件包安装在所有区域中并且在所有区域内均相同的情况下,该软件包是否应当在任何非全局区域中可见。
SUNW_PKG_HOLLOW 软件包参数有两个允许的值 true 或 false。
如果未设置 SUNW_PKG_HOLLOW 或将其设置为除 true 或 false 以外的值,则会使用值 false。
如果 SUNW_PKG_ALLZONES 设置为 false,则会忽略 SUNW_PKG_HOLLOW 参数。
如果 SUNW_PKG_ALLZONES 设置为 false,则 SUNW_PKG_HOLLOW 不能设置为 true。
下表描述了 SUNW_PKG_HOLLOW 软件包的参数值。
表 25–3 SUNW_PKG_HOLLOW 软件包参数值
SUNW_PKG_THISZONE 软件包参数定义了是否必须将软件包仅安装在当前区域(全局或非全局区域)中。SUNW_PKG_THISZONE 软件包参数有两个允许的值。这些值为 true 和 false。缺省值为 false。
下表描述了 SUNW_PKG_THISZONE 软件包的参数值。
表 25–4 SUNW_PKG_THISZONE 软件包参数值
pkginfo(1) 手册页中所述的 pkginfo 实用程序支持查询安装了区域的 Solaris 系统上的软件包数据库。有关该数据库的信息,请参见产品数据库。
可以在全局区域中使用 pkginfo 实用程序来查询仅位于全局区域中的软件包数据库。可以在非全局区域中使用 pkginfo 实用程序来查询仅位于非全局区域中的软件包数据库。
修补程序信息:
标识,即修补程序版本和修补程序 ID
适用性,即操作系统类型、操作系统版本和体系结构
相关性,如需要的兼容性和需要卸载的其他包
属性,如需要随后重新引导
要修补的一个或多个软件包,其中每个软件包包含以下内容:
可应用修补程序的软件包的版本
修补程序信息,如 ID、需要卸载的其他包和需要的兼容性
要修补的一个或多个软件包组件
使用 patchadd 命令应用修补程序时,修补程序信息用于确定该修补程序是否适用于当前正在运行的系统。如果确定不适用,则不应用该修补程序。还会针对系统上的所有区域检查修补程序的相关性。如果不满足任一所需的相关性,则不应用该修补程序。这可能包括已安装更高版本的修补程序的情况。
修补程序所包含的每个软件包都会进行检查。如果任何区域中都没有安装软件包,则会跳过软件包,不对其进行修补。
如果满足所有相关性,则会使用任何区域中安装的修补程序内的所有软件包来修补系统。软件包和修补程序数据库也会进行更新。
Solaris 10 3/05 至 Solaris 10 11/06:如果软件包是使用 pkgadd -G 安装的,或者其 pkginfo 设置为 SUNW_PKG_THISZONE=true,则只能使用 patchadd -G 修补该软件包。Solaris 8/07 发行版中已取消此限制。
从修补程序 119254-41 和 119255-41 开始,对 patchadd 和 patchrm 修补程序安装实用程序进行了修改,从而改变了某些修补程序提供功能的处理方式。此修改将影响上述修补程序在任何 Solaris 10 发行版上的安装。这些延迟激活的修补程序能够更好地处理功能修补程序(例如与 Solaris 10 3/05 发行版之后的 Solaris 10 发行版相关联的内核修补程序)中提供的大范围更改。
延迟激活的修补使用回送文件系统 (loopback file system, lofs) 来确保正在运行的系统的稳定性。将修补程序应用于正在运行的系统时,lofs 可以保持修补过程中的稳定性。这些较大的内核修补程序始终需要重新引导,但现在所需的重新引导将激活 lofs 所做的更改。修补程序 README 提供了有关哪些修补程序需要重新引导的说明。
如果正在运行非全局区域或已禁用 lofs,请在安装或删除延迟激活的修补程序时考虑以下几点:
要执行此修补程序操作,所有非全局区域都必须处于已停止状态。在应用修补程序之前,必须先停止非全局区域。
延迟激活的修补需要回送文件系统 (loopback file system, lofs)。由于启用 lofs 对 HA-NFS 功能的限制,正在运行 Sun Cluster 3.1 或 Sun Cluster 3.2 的系统很可能已禁用 lofs。因此,在安装延迟激活的修补程序之前,必须通过在 /etc/system 文件中删除或注释掉以下行来重新启用回送文件系统:
exclude:lofs |
然后,重新引导系统并安装修补程序。在完成修补程序的安装操作之后,请在 /etc/system 文件中恢复或取消注释该行。然后,必须重新引导,以恢复正常操作。
使用 Solaris Live Upgrade 管理修补可避免与修补正在运行的系统相关联的问题。Solaris Live Upgrade 可减少与修补相关的停机时间,并且可在发生问题时提供回退功能来遏制风险。当系统仍在生产时,可以修补非活动引导环境;当在新的 BE 中发现问题时,可以引导回退至初始引导环境 (boot environment, BE)。请参见《Oracle Solaris 10 9/10 安装指南:Solaris Live 升级和升级规划》中的“使用软件包或修补程序升级系统”。
区域并行修补是标准 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 倍,最多为系统中的实际非全局区域数量。
举例如下:
联机 CPU 数量为 4
设置是 num_proc=6
如果系统中有超过该数量的非全局区域,则将以并行方式修补前 6 个非全局区域,当进程完成第一组修补时,再修补剩余的非全局区域。
使用 Solaris Live Upgrade 和新的修补程序管理修补可在发生问题时提供回退功能。当系统仍在工作时,可以修补非活动引导环境;当在新的 BE 中发现问题时,可以引导回退至初始引导环境 (boot environment, BE)。
另请参见Solaris 10 10/09:如何以并行方式修补非全局区域。
要快速更新区域的所有软件包,以便这些软件包匹配在主机上新安装的非全局区域中查看的信息,可在修补全局区域时分离这些区域,然后使用 -U 选项重新附加以匹配全局区域的级别。有关更多信息,请参见将附加时更新 (Update on Attach) 用作修补解决方案。
在全局区域级别上应用的所有修补程序会在所有区域中应用。安装非全局区域后,该区域与全局区域处于同一修补程序级别。修补全局区域时,会对所有非全局区域进行类似的修补。此操作保持所有区域中的修补程序级别相同。
使用 patchadd(1M) 手册页中所述的 patchadd 系统实用程序,可以在安装了区域的系统上添加修补程序。
要向全局区域和所有非全局区域中添加修补程序,请以全局管理员身份在全局区域中运行 patchadd。
在全局区域中使用 patchadd 时,将应用以下条件:
patchadd 实用程序可以将一个或多个修补程序仅添加到全局区域和所有非全局区域中。这是缺省操作。
patchadd 实用程序不能将修补程序仅添加到全局区域中,也不能将其添加到部分非全局区域中。
在向全局区域和所有非全局区域中添加修补程序时,不必考虑该修补程序是否会影响从全局区域共享的区域。
patchadd 实用程序会执行以下步骤:
将修补程序添加到全局区域中。
更新全局区域中的修补程序数据库。
将修补程序添加到每个非全局区域中。
更新每个非全局区域中的修补程序数据库。
当区域管理员在某个非全局区域中使用 patchadd 时,此实用程序仅能将修补程序添加到该区域中。在以下情况下,可将修补程序添加到非全局区域中:
该修补程序不影响该区域中从全局区域共享的任何区域。
该修补程序中的所有软件包都设置为 SUNW_PKG_ALLZONES=false。
patchadd 实用程序会执行以下步骤:
将修补程序添加到区域中。
更新区域中的修补程序数据库。
以下列表指定在全局和非全局区域中添加修补程序时 -G 选项和 SUNW_PKG_ALLZONES 变量之间的交互。
如果任意软件包具有 SUNW_PKG_ALLZONES=TRUE 设置,则将产生错误且不执行任何操作。
如果任何软件包都不具有 SUNW_PKG_ALLZONES=TRUE 设置,则修补程序仅应用于全局区域中的软件包。
如果任意软件包具有 SUNW_PKG_ALLZONES=TRUE 设置,则修补程序将应用于所有区域中的相应软件包。
如果任意软件包不具有 SUNW_PKG_ALLZONES=TRUE 设置,则修补程序将应用于所有相应区域中的这些软件包。仅用于全局区域的软件包将只在全局区域中安装。
如果任意软件包具有 SUNW_PKG_ALLZONES=TRUE 设置,则将产生错误且不执行任何操作。
如果任何软件包都不具有 SUNW_PKG_ALLZONES=TRUE 设置,则修补程序仅应用于非全局区域中的软件包。
使用 patchrm(1M) 手册页中所述的 patchrm 系统实用程序,可以在安装了区域的系统上删除修补程序。
您可以在全局区域中以全局管理员身份使用 patchrm 实用程序来删除修补程序。patchrm 实用程序不能仅从全局区域中删除修补程序,也不能从部分非全局区域中删除它们。
您可以在非全局区域中以区域管理员身份使用 patchrm 实用程序仅从该非全局区域中删除修补程序。修补程序不能影响共享的区域。
每个区域各自的软件包、修补程序和产品注册表数据库都详细介绍了区域中可用的所有已安装软件。安装附加软件或修补程序时要执行所有相关性检查,但不会访问其他任何区域的数据库,除非正在全局区域和一个或多个非全局区域中安装或删除软件包或修补程序。在这种情况下,必须访问相应的非全局区域数据库。
有关数据库的更多信息,请参见 pkgadm(1M) 手册页。
Solaris 10 1/06: 在此发行版中,对本章进行了彻底修订。本章介绍安装了非全局区域的系统上的最新软件包和修补程序过程。
Solaris 10 6/06: 向如何仅将软件包添加到全局区域过程中添加了一条注释。
Solaris 10 8/07: 从如何仅将修补程序应用于全局区域任务中删除了一条注释。
有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》。
本章介绍如何在安装了区域的系统上添加和删除软件包和修补程序,还介绍了与管理软件包和修补程序关联的其他任务(例如,检查软件包参数设置和获取软件包信息)。有关安装了区域的系统上的修补和打包概念的概述,请参见第 25 章。
任务 |
说明 |
参考 |
---|---|---|
添加软件包。 |
在安装了区域的系统上添加软件包。 | |
检查软件包信息。 |
在安装了区域的系统上检查软件包信息。 | |
删除软件包。 |
在安装了区域的系统上删除软件包。 | |
应用修补程序。 |
在安装了区域的系统上应用修补程序。 | |
删除修补程序。 |
在安装了区域的系统上删除修补程序。 | |
(可选)检查软件包参数设置。 |
当添加或删除软件包时,检验软件包参数的设置是否支持您要执行的操作。 |
您可以使用 pkgadd(1M) 手册页中所述的 pkgadd 系统实用程序执行以下任务:
仅将软件包添加到全局区域
将软件包添加到全局区域和所有非全局区域
将已安装在全局区域中的软件包添加到非全局区域
仅将软件包添加到指定的非全局区域
要添加软件包,SUNW_PKG_ALLZONES 和 SUNW_PKG_HOLLOW 软件包参数设置必须匹配正确的值(true 或 false)。否则,不会获得所需的结果。有关这些软件包参数设置的影响的更多信息,请参见关于软件包和区域。有关如何检查这些软件包参数设置的更多信息,请参见在安装了区域的系统上检查软件包参数设置。
要仅将软件包添加到全局区域,必须将 SUNW_PKG_ALLZONES 软件包参数设置为 false。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在全局区域中,运行后跟软件包位置、-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 实用程序,则缺省情况下会将指定的软件包添加到当前(全局)区域。
请不要在此过程中使用 pkgadd 选项 -G。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在全局区域中,运行后跟软件包位置和软件包名称的 pkgadd -d 命令。
如果从 CD-ROM 安装软件包,请键入:
global# pkgadd -d /cdrom/cdrom0/directory package_name |
如果从已将软件包复制到其中的某个目录安装软件包,请键入:
global# pkgadd -d disk1/image package_name |
其中,disk1 为软件包的复制位置。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在全局区域中,使用 pkgrm 删除软件包。
在不使用 -G 选项的情况下添加软件包。
要仅将软件包添加到指定的非全局区域,必须将 SUNW_PKG_ALLZONES 软件包参数设置为 false。请不要在此过程中使用 pkgadd 选项 -G,否则操作会失败。
要执行此过程,您必须是非全局区域中的区域管理员。
以区域管理员的身份登录到非全局区域。
在非全局区域(此过程中为 my-zone)中,运行后跟软件包位置和软件包名称的 pkgadd -d 命令。
如果从 CD-ROM 安装软件包,请键入:
my-zone# pkgadd -d /cdrom/cdrom0/directory package_name |
如果从已将软件包复制到其中的某个目录安装软件包,请键入:
my-zone# pkgadd -d disk1/image package_name |
其中,disk1 为软件包的复制位置。
您可以使用 pkginfo 命令,查询全局区域和非全局区域的软件包数据库。有关此命令的更多信息,请参见 pkginfo(1) 手册页。
global% pkginfo SUNWcsr SUNWcsu system SUNWcsr Core Solaris, (Root) system SUNWcsu Core Solaris, (Usr) |
my-zone% pkginfo SUNWcsr SUNWcsu system SUNWcsr Core Solaris, (Root) system SUNWcsu Core Solaris, (Usr) |
您可以使用 pkgrm(1M) 手册页中所述的 pkgrm 系统实用程序执行以下任务:
从全局区域和所有非全局区域中删除软件包
仅从指定的非全局区域中删除软件包
要删除软件包,SUNW_PKG_ALLZONES 和 SUNW_PKG_HOLLOW 软件包参数设置必须匹配正确的值(true 或 false)。否则,不会获得所需的结果。有关这些软件包参数设置的影响的更多信息,请参见关于软件包和区域。有关如何检查这些软件包参数设置的更多信息,请参见在安装了区域的系统上检查软件包参数设置。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在全局区域中,运行后跟软件包名称的 pkgrm 命令。
global# pkgrm package_name |
要仅从指定的非全局区域中删除软件包,必须将 SUNW_PKG_ALLZONES 软件包参数设置为 false。
要执行此过程,您必须是非全局区域中的区域管理员。
您可以使用 patchadd(1M) 手册页中所述的 patchadd 系统实用程序执行以下任务:
仅将修补程序应用于全局区域
将修补程序应用于全局区域和所有非全局区域
仅将修补程序应用于指定的非全局区域
Solaris 10 3/05 至 Solaris 10 11/06:如果要修补使用带有 -G 选项的 pkgadd 命令添加的软件包,则必须使用带有 -G 选项的 patchadd 命令修补该软件包。Solaris 8/07 发行版中已取消此限制。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
执行后跟 -G 选项和修补程序 ID 的 patchadd 命令。
global# patchadd -G patch_id |
要执行此过程,您必须是全局区域中的全局管理员。
另请参见Solaris 10 10/09:可减少修补时间的区域并行修补和Solaris 10 10/09:如何以并行方式修补非全局区域。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
执行后跟修补程序 ID 的 patchadd 命令。
global# patchadd patch_id |
要仅将修补程序应用于指定的非全局区域,必须将修补程序集中所有软件包的 SUNW_PKG_ALLZONES 软件包参数设置为 false。
要执行此过程,您必须是非全局区域中的区域管理员。
在 patchadd 的配置文件 /etc/patch/pdo.conf 中设置要以并行方式修补的非全局区域的数量。当完成全局区域的修补后,将按 num_proc= 中设置的非全局区域数量对非全局区域一起进行修补。
如果运行的是 Solaris 10 10/09 之前的发行版,请下载修补程序 119254-66 或更高修订版 (SPARC) 或者 119255-66 或更高修订版 (x86)。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
(可选,仅适用于 Solaris 10 10/09 之前的发行版)下载修补程序 119254-66 (SPARC) 或 119255-66 (x86)。
在 /etc/patch/pdo.conf 文件中,对具有 4 个联机 CPU 的系统设置 6 个以并行方式一起修补的非全局区域。
num_proc=6 |
如果系统中的非全局区域多于六个,则将以并行方式修补前六个非全局区域,当进程完成对前六个非全局区域的修补后,再修补剩余的非全局区域。
您可以使用 patchrm(1M) 手册页中所述的 patchrm 系统实用程序执行以下任务:
从全局区域和所有非全局区域中删除修补程序
仅从指定的非全局区域中删除修补程序
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
执行后跟修补程序 ID 的 patchrm 命令。
global# patchrm patch_id |
要仅从指定的非全局区域中删除修补程序,必须将修补程序集中所有软件包的 SUNW_PKG_ALLZONES 软件包参数设置为 false。
要执行此过程,您必须是非全局区域中的区域管理员。
在添加或删除软件包之前,您可以使用 pkgparam 命令来检查软件包参数设置。此步骤是可选的。在解决无法按预期方式添加或删除软件包的问题时,也可以执行此检查。有关显示软件包参数值的信息,请参见 pkgparam(1) 手册页。
要检查已安装在全局区域或非全局区域中的软件包的软件包参数设置,请使用后跟软件包名称和参数名称的 pkgparam。
my-zone% pkgparam package_name SUNW_PKG_ALLZONES true my-zone% pkgparam package_name SUNW_PKG_HOLLOW false |
要检查 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 |
本章介绍以下常规区域管理主题:
有关 lx 标记区域的信息,请参见第 3 部分, lx 标记区域。
Solaris 10 1/06: 新增了在区域中卸载文件系统一节。
Solaris 10 1/06: 新增了有关区域备份和恢复过程的几节内容。请参见关于备份安装了区域的 Solaris 系统。
Solaris 10 6/06: ZFS 条目已添加到在区域中挂载文件系统中的表内。
Solaris 10 8/07: 以下信息是此发行版中的新增或更新内容:
使用本发行版,非全局区域可以使用两种 IP 类型。新增了有关每种 IP 类型中可用功能的信息。请参见共享 IP 非全局区域中的联网和Solaris 10 8/07:专用 IP 非全局区域中的联网。
现在,Solaris IP 过滤器可在共享 IP 区域中使用。有关更多信息,请参见共享 IP 区域中的 Solaris IP 过滤器。
已对区域中权限设置的相关信息进行了修订。请参见表 27–1。
更新了在安装了区域的 Solaris 系统上使用的命令中的信息。
有关 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 的系统调用接口(例如 kill 和 priocntl 命令)进行查看。有关信息,请参见 kill(1) 和 priocntl(1) 手册页。
对 ps 命令进行了以下修改:
-o 选项用于指定输出格式。使用此选项,可以列显进程的区域 ID 或运行此进程的区域名称。
-z zonelist 选项用于仅列出指定区域中的进程。可以通过区域名称或区域 ID 指定区域。只有在全局区域中执行命令时,此选项才有用。
-Z 选项用于列显与进程关联的区域名称。区域名称在列标题 ZONE 下列显。
有关更多信息,请参见 ps(1) 手册页。
已将 -z zonename 选项添加到以下 Solaris 实用程序。可以使用此选项将信息过滤为仅包括指定的一个或多个区域。
ipcs(请参见 ipcs(1) 手册页)
pgrep(请参见 pgrep(1) 手册页)
ptree(请参见 proc(1) 手册页)
prstat(请参见 prstat(1M) 手册页)
有关对命令所做的更改的完整列表,请参见表 27–5。
区域管理员可以设置 /etc/nodename 中由 uname -n 返回的节点名称。节点名称必须是唯一的。
本节介绍有关安装了区域的 Solaris 系统上文件系统问题的相关信息。每个区域都有自己的文件系统分层结构部分,根目录称为区域 root。区域中的进程仅可访问区域根目录下的分层结构部分中的文件。chroot 实用程序可以在区域中使用,但是仅用于将进程限制在区域内的根路径。有关 chroot 的更多信息,请参见 chroot(1M)。
mount 实用程序的 -o nosuid 选项具有以下功能:
在使用 nosetuid 选项挂载的文件系统上,setuid 二进制命令中的进程无法使用 setuid 二进制命令权限运行。而是使用执行此二进制命令的用户权限运行。
例如,如果用户执行属于 root 的 setuid 二进制命令,则进程使用此用户的权限运行。
不允许打开文件系统中的特定设备项。此行为相当于指定 nodevices 选项。
所有可使用 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 dataset 和 fs 资源类型进行挂载。 |
有关更多信息,请参见如何配置区域、在正在运行的非全局区域中挂载文件系统和 mount(1M) 手册页。
卸载文件系统的能力将取决于执行初始挂载的人员。如果使用 zonecfg 命令将文件系统指定为区域配置的一部分,则全局区域将拥有此挂载,而非全局区域的区域管理员无法卸载该文件系统。如果在非全局区域中挂载文件系统(例如指定区域 /etc/vfstab 文件中的挂载),则非全局区域的区域管理员可以卸载该文件系统。
在区域中挂载某些文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。已修改的文件系统列表如下。
Autofs 是一项可自动挂载相应文件系统的客户端服务。当客户机尝试访问目前未挂载的文件系统时,AutoFS 文件系统会拦截请求并调用 automountd 以挂载请求的目录。在区域中建立的 AutoFS 挂载对于此区域而言是本地挂载。不能从其他区域(包括全局区域)访问这些挂载。在停止或重新引导区域时,将删除挂载。有关 AutoFS 的更多信息,请参见《系统管理指南:网络服务》中的“Autofs 如何工作”。
每个区域都运行自己的 automountd 副本。自动映射和超时由区域管理员控制。不能跨越非全局区域的 AutoFS 挂载点从全局区域触发其他区域中的挂载。
触发其他挂载时,便会在内核中创建某些 AutoFS 挂载。此类挂载不能使用常规 umount 接口删除,因为它们必须作为一个组进行挂载或卸载。请注意,提供此功能是为了关闭区域。
MNTFS 是一款虚拟文件系统,可提供本地系统中已挂载文件系统表的只读访问权限。在非全局区域中使用 mnttab 可查看的一组文件系统是该区域中已挂载的一组文件系统和一个根 (/) 项。具有无法在区域中访问的特殊设备的挂载点(例如 /dev/rdsk/c0t0d0s0)都将其特殊设备的挂载点设置为与此挂载点相同。系统中的所有挂载都可从全局区域的 /etc/mnttab 表中查看。有关 MNTFS 的更多信息,请参见《系统管理指南:设备和文件系统》中的第 19 章 “挂载和取消挂载文件系统(任务)”。
在区域中建立的 NFS 挂载对于此区域而言是本地挂载。不能从其他区域(包括全局区域)访问这些挂载。在停止或重新引导区域时,将删除挂载。
如 mount_nfs(1M) 手册页中所述,NFS 服务器不应尝试挂载自己的文件系统。因此,区域不应对由全局区域导出的文件系统执行 NFS 挂载。区域不能是 NFS 服务器。在区域中,NFS 挂载如同使用 nodevices 选项进行挂载。
nfsstat 命令输出仅与运行此命令的区域有关。例如,如果在全局区域中运行此命令,则仅报告有关此全局区域的信息。有关 nfsstat 命令的更多信息,请参见 nfsstat(1M)。
如果 zlogin 命令的打开文件或其地址空间的任意部分驻留在 NFS 上,此命令将失败。有关更多信息,请参见zlogin 命令。
/proc 文件系统(或 PROCFS)提供进程可见性和访问限制,同时还提供有关进程的区域关联的信息。通过 /proc 只能查看同一区域中的进程。
全局区域中的进程可以查看非全局区域中的进程和其他对象。这样,此类进程便可查看整个系统范围的内容。
在区域中,procfs 挂载如同使用 nodevices 选项进行挂载。有关 procfs 的更多信息,请参见 proc(4) 手册页。
通过 LOFS 进行挂载的范围被限制为区域中可见的文件系统部分。因此,对区域中的 LOFS 挂载没有任何限制。
使用 zonecfg 命令配置具有 fsck 二进制命令的基于存储的文件系统(例如 UFS)时,区域管理员必须指定 raw 参数。该参数指明原始(字符)设备,如 /dev/rdsk/c0t0d0s7。zoneadmd 在挂载文件系统之前,会自动以非交互、仅检查的模式 (fsck -m) 在此设备上运行 fsck 命令。如果 fsck 失败,则 zoneadmd 无法使区域达到就绪状态。由 raw 指定的路径不能是相对路径。
对于没有在 /usr/lib/ fstype/fsck 中提供 fsck 二进制代码的文件系统,不能为 fsck 指定设备。如果此文件系统具有 fsck 二进制命令,则必须为 fsck 指定设备。
有关更多信息,请参见zoneadmd 守护进程和 fsck(1M)。
可以使用带有 add dataset 资源的 zonecfg 命令将 ZFS 数据集添加到非全局区域。此数据集将在非全局区域中进行挂载并显示,并且在全局区域中不再可见。区域管理员可以在此数据集中创建和销毁文件系统、创建和销毁克隆对象以及修改此数据集的属性。
zfs 的 zoned 属性指明是否已将数据集添加到非全局区域。
# 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 客户机。支持版本 2、版本 3 和版本 4 协议。有关这些 NFS 版本的信息,请参见《系统管理指南:网络服务》中的“NFS 服务的功能”
缺省版本为 NFS 版本 4。可以使用以下方法之一在客户机上启用其他 NFS 版本:
可以编辑 /etc/default/nfs 以设置 NFS_CLIENT_VERSMAX=number,从而使区域在缺省情况下使用指定的版本。请参见《系统管理指南:网络服务》中的“设置 NFS 服务”。请使用任务图中的“如何通过修改 /etc/default/nfs 文件在客户机上选择不同的 NFS 版本”过程。
可以手动创建版本挂载。此方法会覆盖 /etc/default/nfs 的内容。请参见《系统管理指南:网络服务》中的“设置 NFS 服务”。使用任务图中的“如何使用命令行在客户机上选择不同的 NFS 版本”过程。
请注意,不能使用 mknod(1M) 手册页中所述的 mknod 命令在非全局区域中创建特殊文件。
区域的文件系统名称空间是可从全局区域访问的名称空间的子集。可以通过以下方式,防止全局区域中的非特权进程遍历非全局区域的文件系统分层结构:
指定区域根目录的父目录仅可由根拥有、读取、写入和执行
限制访问由 /proc 导出的目录
请注意,尝试访问为其他区域挂载的 AutoFS 节点将失败。全局管理员不必具有向下派生到其他区域的自动映射。
安装了非全局区域之后,除了系统备份实用程序之外,此区域永远不能通过其他任何命令从全局区域中直接访问。此外,当非全局区域向未知环境公开之后,便不再将其视为安全区域。例如放置在可公共访问的网络上的区域,这种情况下可能会危及区域的安全并且可能会改变其文件系统的内容。如果存在任何危及区域安全的可能性,全局管理员便应将此区域视为不可信区域。
任何可通过 -R 或 -b 选项(或等效选项)接受备用根的命令,在以下情况成立时不得使用:
命令在全局区域中运行。
备用根指非全局区域中的任何根路径,此路径既可以是当前运行的系统的全局区域的相对路径,也可以是备用根中全局区域的相对路径。
例如通过非全局区域根路径在全局区域中运行的 pkgadd 实用程序的 -R root_path 选项。
以下是通过备用根路径使用 -R 的命令、程序和实用程序的列表:
auditreduce
bart
flar
flarcreate
installf
localeadm
makeuuid
metaroot
patchadd
patchrm
pkgadd
pkgadm
pkgask
pkgchk
pkgrm
prodreg
removef
routeadm
showrev
syseventadm
以下是通过备用根路径使用 -b 的命令和程序的列表:
add_drv
pprosetup
rem_drv
roleadd
sysidconfig
update_drv
useradd
在安装了区域的 Solaris 系统上,区域可通过网络相互通信。所有区域都有单独的绑定或连接,并且所有区域都可运行自己的服务器守护进程。这些守护进程可以侦听相同的端口号而不会引起冲突。IP 栈通过分析传入连接的 IP 地址来解决冲突。IP 地址标识区域。
在支持区域的系统中,IP 栈对区域之间的网络通信流量执行隔离。接收 IP 通信流量的应用程序只能接收发送到同一区域的通信流量。
系统上的每个逻辑接口都属于特定的区域,缺省情况下属于全局区域。借助 zonecfg 实用程序指定给区域的逻辑网络接口用于在网络上进行通信。每个流和连接都属于打开它的进程所在的区域。
上层流和逻辑接口之间的绑定会受到限制。流只能与同一区域中的逻辑接口建立绑定。同样,来自逻辑接口的包只能传递到此逻辑接口所在区域中的上层流。
每个区域都有自己的一组绑定。每个区域都可以运行侦听同一端口号的相同应用程序,而且绑定不会失败,因为地址已处于使用状态。每个区域都可以运行自己版本的以下服务:
具有完整配置文件的 Internet 服务守护进程(请参见 inetd(1M) 手册页)
sendmail(请参见 sendmail(1M) 手册页)
apache(请参见 apache(1M) 手册页)
除全局区域之外的区域拥有受限的网络访问权限。标准 TCP 和 UDP 套接字接口均可用,但是 SOCK_RAW 套接字接口被限制为网际控制报文协议 (Internet Control Message Protocol, ICMP)。ICMP 是检测和报告网络错误状态或使用 ping 命令时所必需的。
每个需要网络连接的非全局区域都有一个或多个专用 IP 地址。这些地址与可以使用 ifconfig 命令放入区域中的逻辑网络接口关联。引导区域时,将在其中自动设置并放置通过 zonecfg 配置的区域网络接口。运行区域时,可使用 ifconfig 命令添加或删除逻辑接口。只有全局管理员才能修改接口配置和网络路由。
在非全局区域内,只有此区域的接口才能通过 ifconfig 进行查看。
有关更多信息,请参见 ifconfig(1M) 和 if_tcp(7P) 手册页。
在同一计算机上的两个区域之间,仅当转发表中的目标和区域具有“匹配的路由”时,才允许传送包。
匹配信息按如下方式执行:
在由匹配路由指定的输出接口上选择包的源地址。
缺省情况下,允许地址位于同一子网上的两个区域之间进行通信。在这种情况下,匹配路由即为子网的接口路由。
如果给定区域具有缺省路由,并且网关位于此区域的一个子网上,则允许此区域与所有其他区域进行通信。在这种情况下,匹配路由即为缺省路由。
如果匹配路由具有 RTF_REJECT 标志,则包会触发 ICMP 不可访问的消息。如果匹配路由具有 RTF_BLACKHOLE 标志,则会放弃包。全局管理员可以使用下表所述的 route 命令选项来创建具有这些标志的路由。
修饰符 |
标志 |
说明 |
---|---|---|
-reject |
RTF_REJECT |
匹配时会发出 ICMP 不可访问的消息。 |
-blackhole |
RTF_BLACKHOLE |
在更新过程中以静默方式放弃包。 |
有关更多信息,请参见 route(1M)。
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 network multipathing, IPMP) 为在同一 IP 链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能。IPMP 还为具有多个接口的系统提供了包负荷分配。
所有网络配置均在全局区域中完成。可以在全局区域中配置 IPMP,然后将功能扩展到非全局区域。当配置非全局区域时,将此区域的地址放入 IPMP 组中即可实现功能扩展。此后,如果全局区域中有一个接口出现故障,则非全局区域地址将迁移到其他网络接口卡。共享 IP 区域可拥有多个 IP 地址,它可以是多个 IPMP 组的组成部分,而且多个共享的 IP 区域可使用指定的同一 IPMP 组。
在给定的非全局区域中,只有与此区域关联的接口才能通过 ifconfig 命令进行查看。
请参见如何将 IP 网络多路径功能扩展到共享 IP 非全局区域。区域配置过程在如何配置区域中介绍。有关 IPMP 功能、组件和用法的信息,请参见《系统管理指南:IP 服务》中的第 30 章 “IPMP 介绍(概述)”。
专用 IP 区域具有自己的与 IP 相关的状态和调节变量。配置该区域时,系统会为该区域分配其自己的数据链路集合。
有关可在专用 IP 非全局区域中使用的功能的信息,请参见Solaris 10 8/07:专用 IP 非全局区域。有关调节 IP ndd 变量的信息,请参见《Oracle Solaris Tunable Parameters Reference Manual》。
专用 IP 区域具有单独的 TCP/IP 栈,因此可以隔离数据链路层及其上的所有层。全局管理员可以将一个或多个数据链路名称(可以是 NIC 或 NIC 上的 VLAN)分配给一个专用 IP 区域。区域管理员可以配置这些数据链路上的 IP,其灵活性和选项与全局区域中的相同。
必须以独占方式将一个数据链路名称分配给单个区域。
可以使用 dladm show-link 命令显示分配给正在运行的区域的数据链路。
有关更多信息,请参见 dladm(1M)。
专用 IP 区域之间不存在 IP 数据包内部回送。所有包都向下发送到数据链路。通常,这意味着包通过网络接口发出。然后,类似以太网交换机或 IP 路由器的设备可将包转发到其目的地,该目的地可能位于发送者所用的同一台计算机上的不同区域。
在专用 IP 区域中可以使用在全局区域中使用的相同 IP 过滤器功能。而且在专用 IP 区域中配置 IP 过滤器的方法与在全局区域中使用的方法相同。
IP 网络多路径 (IP network multipathing, IPMP) 为在同一 IP 链路上具有多个接口的系统提供物理接口故障检测和透明网络访问故障转移功能。除了容错功能以外,IPMP 还为具有多个接口的系统提供了包负荷分配。
数据链路配置在全局区域中完成。首先,使用 zonecfg 将多个数据链路接口分配给某个区域。这些数据链路接口必须连接到相同的 IP 子网。然后,区域管理员便可在专用 IP 区域内配置 IPMP。多个 IPMP 组可分配给指定的专用 IP 区域,但这些 IPMP 组无法与其他区域共享。
对区域中可用的一组设备进行了限制,以防止某个区域中的进程干扰在其他区域中运行的进程。例如,区域中的进程不能修改内核内存,也不能修改根磁盘的内容。因此,缺省情况下,只提供被视为可以在区域中安全使用的特定伪设备。在特定区域内,可使用 zonecfg 实用程序使其他设备变得可用。
Solaris 系统使用 devfs(7FS) 手册页中所述的 devfs 文件系统来管理 /devices。此名称空间中的每个元素都表示指向硬件设备、伪设备或 nexus 设备的物理路径。名称空间是设备树的一种表现形式。同样,文件系统由目录和特定于设备的文件分层结构填充。
现在作为 /(根)文件系统一部分的 /dev 文件分层结构由指向 /devices 中的物理路径的符号链接或逻辑路径组成。应用程序引用指向 /dev 中设备的逻辑路径。/dev 文件系统使用只读挂载回送挂载到区域。
/dev 文件分层结构由以下列出的组件所组成的系统进行管理:
devfsadm(请参见 devfsadm(1M) 手册页)
syseventd(请参见 syseventd(1M) 手册页)
libdevinfo 设备信息库(请参见 libdevinfo(3LIB) 手册页)
devinfo 驱动程序(请参见 devinfo(7D) 手册页)
重新配置协调管理器 (Reconfiguration Coordination Manager, RCM)(请参见《系统管理指南:设备和文件系统》中的“重新配置调整管理器 (Reconfiguration Coordination Manager, RCM) 脚本概述”)
在建立 /dev 路径名之前,依赖于 /devices 路径名的子系统不能在非全局区域中运行。
可能拥有需要指定给特定区域的设备。允许非特权用户访问块设备可能会导致通过使用这些设备造成系统出现紧急情况、总线复位或其他不良影响。在进行此类指定之前,请考虑以下问题:
在为特定区域指定 SCSI 磁带设备之前,请查看 sgen(7D) 手册页。
将物理设备放入多个区域可以在区域之间创建隐藏通道。使用此类设备的全局区域应用程序可能会存在非全局区域危及数据或损坏数据的风险。
在非全局区域中,可以使用 modinfo(1M) 手册页中所述的 modinfo 命令来检查已装入的内核模块的列表。
大多数与内核、设备和平台管理相关的操作都不能在非全局区域内部执行,因为修改平台硬件配置会破坏区域安全模型。这些操作包括:
添加和删除驱动程序
明确装入和卸载内核模块
启动动态重新配置 (dynamic reconfiguration, DR) 操作
使用影响物理平台状态的功能
以下实用程序无法在区域中使用,因为它们所依赖的设备通常不存在:
cdrecord(请参见 /usr/share/man/man1 目录中的手册页。)
cdrw(请参见 cdrw(1) 手册页)
rmformat(请参见 rmformat(1) 手册页)
add_drv(请参见 add_drv(1M) 手册页)
disks(请参见 disks(1M) 手册页)
prtconf(请参见 prtconf(1M) 手册页)
prtdiag(请参见 prtdiag(1M) 手册页)
rem_drv(请参见 rem_drv(1M) 手册页)
eeprom 实用程序可用于查看区域中的设置,但不能用于更改设置。有关更多信息,请参见 eeprom(1M) 和 openprom(7D) 手册页。
通常,所有应用程序均可在非全局区域中运行。但是,以下应用程序类型可能不适用于此环境:
使用影响系统整体的特权操作的应用程序。例如设置全局系统时钟或锁定物理内存的操作。
依赖于非全局区域中不存在的某些设备的极少数应用程序,例如 /dev/kmem。
预期在运行时或者在安装、修补或升级后能够写入 /usr 的应用程序。这是因为在缺省情况下,/usr 对于非全局区域而言是只读的。有时,无需更改应用程序本身,便可缓解与此应用程序类型关联的问题。
在共享 IP 区域中,应用程序依赖于 /dev/ip 中的设备。
有关在区域中使用资源管理功能的其他信息,另请参阅本指南第 1 部分中介绍此功能的章节。
资源管理章节中所述的任何资源控制和属性都可以在全局和非全局区域 /etc/project 文件、NIS 映射或 LDAP 目录服务中设置。给定区域的设置仅影响此区域。在不同区域中独立运行的项目可以在每个区域中分别设置控制。例如,项目 A 在全局区域中可以设置 project.cpu-shares=10,而在非全局区域中可以设置 project.cpu-shares=5。系统中可能同时运行若干个 rcapd 实例,而每个实例都仅在自己的区域中运行。
某个区域中用于在该区域中控制项目、任务和进程的资源控制和属性还要满足其他与池和区域范围资源控制相关的要求。
“一个区域,一个池”规则适用于非全局区域。多个非全局区域可以共享一个池的资源。但是,全局区域中的进程可以由拥有足够权限的进程绑定到任意池。资源控制器 poold 仅在全局区域中运行,它可以在其中的多个池中运行。在非全局区域中运行的 poolstat 实用程序仅显示与该区域关联的池的相关信息。在非全局区域中运行的不带参数的 pooladm 命令仅显示与此区域关联的池的相关信息。
区域范围的资源控制在 project 文件中设置时不会生效。区域范围的资源控制通过 zonecfg 实用程序设置。
本节介绍如何在区域中使用公平份额调度器 (fair share scheduler, 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。
当扩展记帐子系统在全局区域中运行时,它会收集和报告整个系统(包括非全局区域)的信息。全局管理员还可以确定每个区域的资源占用情况。
扩展记帐子系统允许每个区域针对基于进程和基于任务的记帐具有不同的记帐设置和文件。对于进程,exacct 记录可以使用区域名称 EXD PROC ZONENAME 进行标记;对于任务,则可以使用区域名称 EXD TASK ZONENAME 进行标记。记帐记录将写入全局区域的记帐文件以及每个区域的记帐文件。EXD TASK HOSTNAME、EXD PROC HOSTNAME 和 EXD HOSTNAME 记录包含用于执行进程或任务的区域的 uname -n 值,而不是全局区域的节点名称。
有关 IPQoS 流记帐的信息,请参见 《系统管理指南:IP 服务》中的第 36 章 “使用流记帐和统计信息收集功能(任务)”。
仅允许进程拥有部分权限。权限限制可防止某个区域执行可能会影响其他区域的操作。通过权限设置,可以限制区域内特权用户的功能。要显示区域内可用权限的列表,请使用 ppriv 实用程序。
下表列出了所有 Solaris 权限以及相对于区域每个权限的状态。缺省权限集不包含可选权限,但可以通过 limitpriv 属性指定它们。最终的权限集中必须包含必需权限。最终的权限集中不能包含禁止权限。
从 Solaris 10 11/06 发行版开始,limitpriv 属性就已经可用了。
表 27–1 区域中权限的状态
权限 |
状态 |
说明 |
---|---|---|
cpc_cpu |
可选 |
访问某些 cpc(3CPC) 计数器的权限 |
dtrace_proc |
可选 |
fasttrap 和 pid 提供器;plockstat(1M) |
dtrace_user |
可选 |
profile 和 syscall 提供器 |
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 |
缺省值 |
更改 setid、setgid 和 setuid 文件的权限 |
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(高可靠扩展版)配置了系统时,才会解释这些权限。
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 数据报保护的 Internet 协议安全体系结构 (Internet Protocol Security Architecture, IPsec) 将在《系统管理指南:IP 服务》中的第 19 章 “IP 安全体系结构(概述)”进行介绍。Internet 密钥交换 (Internet Key Exchange, IKE) 协议用于自动管理进行验证和加密所需的加密材料。
有关更多信息,请参见 ipsecconf(1M) 和 ipseckey(1M) 手册页。
IPsec 可以在全局区域中使用。但是,非全局区域中的 IPsec 不能使用 IKE。因此,您必须在全局区域中使用 Internet 密钥交换 (Internet Key Exchange, IKE) 协议来为非全局区域管理 IPsec 密钥和策略。请使用对应于要配置的非全局区域的源地址。
IPsec 可以在专用 IP 区域中使用。
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_control 和 audit_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_proc 和 dtrace_user 权限的 DTrace 程序可以在非全局区域中运行。要将这些权限添加到非全局区域中的可用权限的集合中,请使用 zonecfg limitpriv 属性。有关说明,请参见如何使用 DTrace。
通过 dtrace_proc 支持的提供器是 fasttrap 和 pid。通过 dtrace_user 支持的提供器是 profile 和 syscall。DTrace 提供器和操作的范围限制在区域内。
有关更多信息,请参见非全局区域中的权限。
可以在单个非全局区域中执行备份,也可以在全局区域中备份整个系统。
由于许多非全局区域通过使用回送文件系统只读挂载(通常为 /usr、/lib、/sbin 和 /platform)与全局区域共享文件,因此,必须使用全局区域备份方法来备份 lofs 目录。
请不要在非全局区域中备份与全局区域共享的 lofs 文件系统。如果非全局管理员尝试从非全局区域中恢复 lofs 文件系统,则可能会导致严重问题。
在以下情况下,可能会选择在全局区域中执行备份:
需要备份非全局区域的配置以及应用程序数据。
主要关注从灾难中恢复的功能。如果需要恢复系统上的所有内容或者绝大部分内容(包括区域的根文件系统及其配置和全局区域中的数据),则应在全局区域中执行备份。
要使用 ufsdump 命令来执行数据备份。由于将物理磁盘设备导入非全局区域将更改区域的安全配置文件,因此,应仅在全局区域中使用 ufsdump。
有商业网络备份软件。
如有可能,网络备份软件应配置为跳过所有继承的 lofs 文件系统。应在区域及其应用程序处于静态时对要备份的数据执行备份。
在以下情况下,可能会决定在非全局区域内执行备份。
非全局区域管理员要求可以从不太严重的故障中恢复,或者恢复特定于某区域的应用程序数据或用户数据。
使用区域中运行的特定应用程序或服务的备份软件。可能很难在全局区域中执行备份软件,因为全局区域和非全局区域中的应用程序环境(例如目录路径和已安装的软件)不同。
如果应用程序可以按照自己的备份计划在每个非全局区域中执行快照,并将这些备份存储在从全局区域导出的可写目录中,则作为备份策略的一部分,全局区域管理员可以从全局区域中选取这些单个备份。
可以在非全局区域中备份所有内容,或者,如果区域的配置更改并不频繁,也可以仅对应用程序数据执行备份。
如果应用程序数据保存在文件系统的特定部分,则可以决定仅对此数据执行常规备份。可以不必经常备份区域的根文件系统,因为其更改并不频繁。
必须确定应用程序放置其文件的位置。可以存储文件的位置如下:
用户的起始目录
/etc(对于配置数据文件)
/var
假设应用程序管理员知道数据的存储位置,则可以创建一个系统,其中每个区域均可使用其各自的可写目录。然后,每个区域可以存储自己的备份数据,并且全局管理员可以将此位置作为系统上的备份位置之一。
如果数据库应用程序数据不在自己的目录下,则应用以下规则:
首先确保数据库处于一致的状态。
数据库必须处于静态,因为它们具有要刷新到磁盘的内部缓冲区。请确保非全局区域中的数据库处于静态,然后从全局区域中开始备份。
在每个区域内,使用文件系统功能对数据执行快照,然后直接从全局区域中备份快照。
此进程将最大程度缩短备份窗口所用的时间,并且不需要备份所有区域中的客户机/模块。
每个非全局区域都可以对自己的专用文件系统捕获快照,前提是此区域便于执行快照并且应用程序处于暂时静止状态。随后,全局区域可以备份每个快照,并在应用程序再次使用之后将备份放置在磁带上。
此方法具有如下优点:
需要较少的磁带设备。
不需要在非全局区域之间进行协调。
不需要直接为区域指定设备,从而提高了安全性。
通常,此方法保持在全局区域中执行系统管理,这是首选方法。
如果恢复在全局区域中执行的备份,则全局管理员可以重新安装受影响的区域,然后恢复该区域的文件。请注意,上述情况以下面的假设为前提:
所要恢复的区域的配置与执行备份时的配置相同。
在执行备份到恢复区域这段时间内,未升级或修补全局区域。
否则,恢复操作可能会覆写某些应手动合并的文件。
例如,如果全局区域在备份之后和恢复非全局区域之前已进行修补,则可能需要手动合并文件。在这种情况下,恢复已备份的区域文件时必须谨慎,因为备份文件可能与新安装的区域(此区域在将修补程序应用到全局区域之后生成)不兼容。在这种情况下,必须逐个检查文件并将它们与新安装的区域中的副本进行比较。在多数情况下,会发现可以直接在区域中复制文件,但在某些情况下,必须将最初对文件所做的更改合并到区域中新安装或修补的副本中。
如果全局区域中的所有文件系统均已丢失,则只要备份非全局区域各自的根文件系统,恢复全局区域中的所有内容时也会恢复非全局区域。
表 27–3 中列出的命令提供了区域功能的主要管理接口。
表 27–3 用于管理区域的命令
命令参考 |
说明 |
---|---|
登录到非全局区域 |
|
显示当前区域的名称 |
|
管理系统上的区域 |
|
用于设置区域配置 |
|
用于在区域 ID 和区域名称之间进行映射 |
|
提供区域功能的说明 |
|
区域控制台设备驱动程序 |
zoneadmd 守护进程是管理区域虚拟平台的主要进程。zoneadmd 守护进程的手册页为 zoneadmd(1M)。此守护进程并没有构成编程接口。
下表中的命令可与资源上限设置守护进程结合使用。
表 27–4 用于 rcapd 的命令
命令参考 |
说明 |
---|---|
监视具有上限的项目的资源利用率。 |
|
配置资源上限设置守护进程,显示已配置的资源上限设置守护进程的当前状态,以及启用或禁用资源上限设置。还可用于设置临时内存上限。 |
|
资源上限设置守护进程。 |
下表中介绍的命令已被修改为可在安装了区域的 Solaris 系统上使用。这些命令具有的选项特定于区域或者以不同的方式显示信息。这些命令将在手册页中列出。
表 27–5 修改为可在安装了区域的 Solaris 系统上使用的命令
命令参考 |
说明 |
---|---|
添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。 |
|
添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。 |
|
添加了 -z zoneidlist 选项。只有在全局区域中执行命令时,此选项才有用。 |
|
添加了表达式 zone,以便与 -l 选项一起使用来列出当前区域中的所有可用权限。还可以在 zone 后使用选项 -v 来获取详细输出。 |
|
可以在 idlist 和 -i idtype 中使用区域 ID 来指定进程。在非全局区域中,可以使用 priocntl -i zoneid 命令将正在运行的进程移至其他调度类。 |
|
仅向 ptree 中添加了 -z zone 选项。只有在全局区域中执行命令时,此选项才有用。 |
|
向与 -o 选项一起使用的已识别 format 名称的列表中添加了 zonename 和 zoneid。 添加了 -z zonelist 以便仅列出指定区域中的进程。可以通过区域名称或区域 ID 指定区域。只有在全局区域中执行命令时,此选项才有用。 添加了 -Z 以便显示与进程关联的区域的名称。区域名称在另一个列标题 ZONE 下显示。 |
|
向与 -i 选项一起使用的有效参数的列表中添加了 zoneid。 |
|
如果在启用了池功能的非全局区域中执行,则 -b、-c、-g、-m、-p、-u、-w 和 -y 选项仅针对绑定有区域的池的处理器集中的处理器显示值。 |
|
添加了 zonename 标记。 |
|
添加了 -z zone-name 选项。新增了获取区域审计日志的功能。 |
|
添加了变量 %z 以便标识执行进程的区域。 |
|
添加了 -Z 选项以便显示所有可见区域中的挂载。 |
|
添加了 zone 选项以用于全局区域(缺省设置),添加了 -zone zonename 以用于非全局区域。 |
|
如果在启用了池功能的非全局区域中执行,则仅针对绑定有区域的池的处理器集中的那些处理器提供信息。 |
|
如果在全局区域中执行,将针对所有区域显示 kstat。如果在非全局区域中执行,则只显示具有匹配 zoneid 的 kstat。 |
|
如果在启用了池功能的非全局区域中执行,则命令仅针对绑定有区域的池的处理器集中的处理器显示行。 |
|
在全局区域中使用时,会显示所有区域的信息。在专用 IP 区域中,对 TCP/IP 模块执行的 ndd 只显示该区域的信息。 |
|
仅显示当前区域的信息。 |
|
仅显示当前区域的统计信息。 |
|
添加了 zoneid 列表。有关使用具有资源池的区域的信息,另请参见区域中使用的资源池。 |
|
添加了 -z zoneidlist 选项。还添加了 -Z 选项。 如果在启用了池功能的非全局区域中执行,则仅针对绑定有区域的池的处理器集中的处理器显示进程所用最近 CPU 时间的百分比。 -a、-t、-T、-J 和 -Z 选项的输出显示 SWAP,而不是 SIZE 列。报告的交换是区域进程和 tmpfs 挂载所使用的总交换量。此值有助于监视每个区域预留的交换空间,可用于选择合理的 zone.max-swap 设置。 |
|
如果在非全局区域中执行,则仅显示有关区域可见的处理器的信息。 |
|
用法更改。在非全局区域中指定时,-F 选项不起作用,因为始终设置了“不要分段”位。 |
|
在启用了池功能的非全局区域中执行时,仅针对绑定有区域的池的处理器集中的处理器报告统计信息。应用于 -p 选项以及 page、faults 和 cpu 等报告字段的输出。 |
|
添加了 AUDIT_ZONENAME 以便生成每个审计记录的区域 ID 标记。 |
|
添加了 P_ZONEID id 参数。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
添加了 P_ZONEID 作为 idtype。添加了区域作为可能的 P_MYID 规范选项。向 EINVAL 错误说明中的有效 idtype 列表中添加了 P_ZONEID。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
将 PRIV_SYS_CONFIG 更改为 PRIV_SYS_ADMIN。 |
|
如果 file 指向的文件不是绝对路径,则会返回 ENOENT。 |
|
如果调用方位于非全局区域中并且启用了池功能,则此行为相当于使用 PS_MYID 的 psetid 进行调用。 |
|
向可以指定的目标进程中添加了区域 ID。向 EINVAL 错误说明中添加了区域 ID。 |
|
针对调用方区域内的所有可用权限的集合添加了 "zone" 字符串。 |
|
如果调用方位于非全局区域中并且启用了池功能,但是处理器不在绑定有区域的池的处理器集中,则会返回错误。 |
|
如果调用方位于非全局区域中并且启用了池功能,则 sysconf(_SC_NPROCESSORS_CONF) 和 sysconf(_SC_NPROCESSORS_ONLN) 将返回绑定有区域的池的处理器集中的处理器数。 |
|
添加了 ucred_getzoneid() 函数,此函数将返回处理器的区域 ID 或 -1(如果未提供区域 ID)。 |
|
添加了 n_type: NT_ZONENAME。此项包含一个描述运行进程的区域名称的字符串。 |
|
现在,提供了可选参数和一个环境变量来支持区域。 |
|
添加了获取区域中所运行进程的相关信息的功能。 |
|
添加了在设置 zonename 审计策略时使用的 in<zone name > 字段。 |
|
添加了 PRIV_PROC_ZONE,它允许某个进程跟踪其他区域中的进程或向这些进程发送信号。请参见 zones(5)。 |
|
添加了区域 ioctl() 调用。 |
|
添加了区域参数。 |
|
添加了 crgetzoneid(),它将从 cr 指向的用户证书中返回区域 ID。 |
本章介绍一般管理任务并提供用法示例。
本节列出新增产品功能以及本指南中的新增内容。
有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》。
添加了一种访问介质的新过程。请参见如何在非全局区域中添加对 CD 或 DVD 介质的访问权限。
添加了一种在区域中备份和恢复文件的新过程。请参见备份安装了区域的 Solaris 系统和恢复非全局区域。
添加了一些新过程。请参见如何将文件系统从全局区域挂载到非全局区域和如何在非全局区域中的 /usr 下添加可写目录。
添加了一些新过程。请参见如何使用 DTrace、Solaris 10 8/07:在专用 IP 非全局区域中管理数据链路、检查非全局区域中的 SMF 服务的状态。
使用 ppriv 实用程序可以显示区域的权限。
可使用 ppriv 实用程序的 -l 选项列出该系统中可用的权限。
在提示符下,键入 ppriv -l zone 报告区域中的一组可用权限。
global# ppriv -l zone |
将显示以下类似信息:
contract_event contract_observer cpc_cpu . . . |
可以使用带有 -l 选项和表达式 zone 的 ppriv 实用程序列出区域的权限。
登录到非全局区域。此示例使用名为 my-zone 的区域。
在提示符下,键入 ppriv -l zone 报告区域中的一组可用权限。
my-zone# ppriv -l zone |
将显示以下类似信息:
contract_event contract_observer file_chown . . . |
可以使用带有 -l 选项、表达式 zone,以及 -v 选项的 ppriv 实用程序列出区域的权限。
登录到非全局区域。此示例使用名为 my-zone 的区域。
在提示符下,键入 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 功能。
使用 zonecfg limitpriv 属性添加 dtrace_proc 和 dtrace_user 权限。
global# zonecfg -z my-zone zonecfg:my-zone> set limitpriv="default,dtrace_proc,dtrace_user" zonecfg:my-zone> exit |
可以根据需要添加其中一个权限或同时添加这两个权限。
引导区域。
global# zoneadm -z my-zone boot |
登录到区域。
global# zlogin my-zone |
运行 DTrace 程序。
my-zone# dtrace -l |
要检查本地非全局区域中的 SMF 服务的状态,请使用 zlogin 命令。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在命令行中键入以下内容,以显示所有服务,包括禁用的服务。
global# zlogin my-zone svcs -a |
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
登录到区域。
global# zlogin my-zone |
运行带有 -a 选项的 svcs 命令,以显示所有服务,包括禁用的服务。
my-zone# svcs -a |
可以在正在运行的非全局区域中挂载文件系统。包括以下过程。
作为全局区域中的全局管理员,您可以将原始设备和块设备导入非全局区域。导入设备之后,区域管理员便可访问磁盘。然后,区域管理员可以在磁盘上创建一个新的文件系统,并执行以下操作之一:
手动挂载文件系统
将文件系统放在 /etc/vfstab 中,以便在引导区域时挂载
作为全局管理员,您也可以将文件系统从全局区域挂载到非全局区域。
此过程使用 lofi 文件驱动程序,此驱动程序可以将文件导出为块设备。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
转到 /usr/tmp 目录。
global# cd /usr/tmp |
创建一个新的 UFS 文件系统。
global# mkfile 10m fsfile |
将文件作为块设备进行连接。
如果没有创建其他 lofi 设备,则会使用第一个可用插槽 /dev/lofi/1 。
global# lofiadm -a `pwd`/fsfile |
您也将获得所需的字符设备。
将设备导入区域 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 |
重新引导区域。
global# zoneadm -z my-zone boot |
登录到区域并检验设备是否成功导入。
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) 手册页。
要执行此过程,您必须是区域管理员并且拥有区域管理配置文件。此过程使用在 newfs(1M) 手册页中介绍的 newfs 命令。
成为超级用户,或者在您的配置文件列表中具有区域管理权限配置文件。
在区域 my-zone 中,在磁盘上创建一个新的文件系统。
my-zone# newfs /dev/lofi/1 |
出现提示时回答是。
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, |
检查文件系统是否有错误。
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) |
挂载文件系统。
my-zone# mount -F ufs /dev/lofi/1 /mnt |
检验挂载。
my-zone# grep /mnt /etc/mnttab |
将显示以下类似信息:
/dev/lofi/1 /mnt ufs rw,suid,intr,largefiles,xattr,onerror=panic,zone=foo,dev=24c0001 1073503869 |
此过程用于在文件系统路径 /mnt 上挂载块设备 /dev/lofi/1。块设备包含一个 UFS 文件系统。将使用以下选项:
logging,用作挂载选项。
yes,告知系统在引导区域时自动挂载文件系统。
/dev/rlofi/1,是字符(或原始)设备。如果需要,会在原始设备上运行 fsck 命令。
成为超级用户,或者在您的配置文件列表中具有区域管理权限配置文件。
在区域 my-zone中,向 /etc/vfstab 添加以下行:
/dev/lofi/1 /dev/rlofi/1 /mnt ufs 2 yes logging |
假设区域中有 zonepath /export/home/my-zone。您需要将磁盘 /dev/lofi/1 从全局区域挂载到非全局区域中的 /mnt。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
要将磁盘挂载到非全局区域中的 /mnt,请在全局区域中键入以下内容:
global# mount -F ufs /dev/lofi/1 /export/home/my-zone/root/mnt |
有关 lofi 的信息,请参见 lofiadm(1M) 和 lofi(7D) 手册页。
借助此过程,您可以在非全局区域中添加对 CD 或 DVD 介质的只读访问权限。在全局区域中,使用 Volume Management 文件系统来挂载介质。然后可以使用 CD 或 DVD 在非全局区域中安装产品。此过程使用名为 jes_05q4_dvd 的 DVD。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
确定 Volume Management 文件系统是否正在全局区域中运行。
global# svcs volfs STATE STIME FMRI online Sep_29 svc:/system/filesystem/volfs:default |
(可选)如果 Volume Management 文件系统没有在全局区域中运行,则启动它。
global# svcadm volfs enable |
插入介质。
检查驱动器中的介质。
global# volcheck |
测试 DVD 是否自动挂载。
global# ls /cdrom |
将显示以下类似信息:
cdrom cdrom1 jes_05q4_dvd |
在非全局区域中使用选项 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 |
重新引导非全局区域。
global# zoneadm -z my-zone reboot |
使用带有 -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 |
登录到非全局区域。
global# zlogin my-zone |
检验 DVD-ROM 挂载。
my-zone# ls /cdrom |
将显示以下类似信息:
cdrom cdrom1 jes_05q4_dvd |
按照产品安装指南中的介绍安装产品。
退出非全局区域。
my-zone# exit |
您可能需要在非全局区域中保留 /cdrom 文件系统。挂载始终反映 CD-ROM 驱动器的当前内容,如果驱动器为空,则反映为一个空目录。
(可选)如果想要从非全局区域中删除 /cdrom 文件系统,请使用以下过程。
global# zonecfg -z my-zone zonecfg:my-zone> remove fs dir=/cdrom zonecfg:my-zone> commit zonecfg:my-zone> exit |
在稀疏根区域中,/usr 从全局区域挂载为只读状态。可以使用此过程添加一个可写目录,如区域中 /usr 下的 /usr/local。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在全局区域中创建目录 /usr/local。
global# mkdir -p /usr/local |
在全局区域中指定一个目录作为该区域中 /usr/local 目录的后备存储。
global# mkdir -p /storage/local/my-zone |
编辑区域 my-zone 的配置。
global# zonecfg -z my-zone |
添加回送挂载的文件系统。
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 |
引导区域。
此过程用于将起始目录或其他文件系统从全局区域导出到同一系统上的非全局区域。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
添加回送挂载的文件系统。
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 |
向区域的 /etc/auto_home 文件添加以下行:
$HOST:/export/home/& |
可以按在全局区域中的配置方式在专用 IP 区域中配置 IP 网络多路径 (IP Network Multipathing, IPMP)。
您可以将一个或多个物理接口配置到一个 IP 多路径组或 IPMP 组中。配置 IPMP 后,系统将自动监视 IPMP 组中的接口是否出现故障。如果该组中的接口出现故障或被删除以进行维护,则 IPMP 会自动迁移或故障转移故障接口的 IP 地址。这些地址的接收者是故障接口的 IPMP 组中的工作接口。IPMP 的故障转移功能可以保持连接并防止断开任何现有连接。此外,通过自动在 IPMP 组中的一组接口中分配网络通信流量,IPMP 提高了总体网络性能。此过程称作负荷分配。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
按照《系统管理指南:IP 服务》中的“配置 IPMP 组”中的说明配置 IPMP 组。
使用此过程可以在全局区域中配置 IPMP,并将 IPMP 功能扩展到非全局区域。
当您配置区域时,每个地址或逻辑接口都应当与非全局区域相关联。有关说明,请参见使用 zonecfg 命令和如何配置区域。
此过程将实现以下内容:
同时在一个组中配置 bge0 卡和 hme0 卡。
地址 192.168.0.1 与非全局区域 my-zone 相关联。
bge0 卡设置为物理接口。这样,IP 地址驻留在包含 bge0 卡和 hme0 卡的组中。
在正在运行的区域中,可以使用 ifconfig 命令来建立关联。请参见共享 IP 网络接口和 ifconfig(1M) 手册页。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
在全局区域中,按照《系统管理指南:IP 服务》中的“配置 IPMP 组”中的说明配置 IPMP 组。
使用 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 数据地址故障转移到全局区域中的 hme0,则 my-zone 地址也会迁移。
如果地址 192.168.0.1 移至 hme0,此时在非全局区域 my-zone 中只有 hme0 可见。该卡将与地址 192.168.0.1 相关联,并且 bge0 将不再可见。
可以将 dladm 命令与 show-linkprop 子命令一起使用,以显示正在运行的专用 IP 区域的数据链路分配。
要管理数据链路,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
显示系统中数据链路的分配。
global# dladm show-linkprop |
在第一个屏幕中,没有引导分配了 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 -- -- -- |
引导区域 49bge。
global# zoneadm -z 49bge boot |
再次运行 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 -- -- -- |
可以将 dladm 命令与 set-linkprop 子命令一起使用,以临时向正在运行的专用 IP 区域分配数据链路。必须使用 zonecfg 命令进行持久性分配。
要管理数据链路,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用带有 -t 的 dladm set-linkprop 将 bge0 添加到正在运行的名为 excl 的区域。
global# dladm set-linkprop -t -p zone=excl bge0 LINK PROPERTY VALUE DEFAULT POSSIBLE bge0 zone excl -- -- |
-p 选项会生成一个显示内容,其格式为稳定的机器可解析格式。
可以将 dladm 命令与 reset-linkprop 子命令一起使用,以将 bge0 链路值重置为未分配状态。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用带有 -t 的 dladm 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 失败。
通过 prctl 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。要在区域中设置永久性份额,请参见如何配置区域和如何在全局区域中设置 zone.cpu-shares。
缺省情况下,为全局区域提供一个份额。可以使用此过程来更改缺省分配。请注意,只要重新引导系统,就必须重置通过 prctl 命令分配的份额。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用 prctl 实用程序为全局区域分配两个份额:
# prctl -n zone.cpu-shares -v 2 -r -i zone global |
(可选)要检验为全局区域分配的份额数,请键入:
# prctl -n zone.cpu-shares -i zone global |
有关 prctl 实用程序的更多信息,请参见 prctl(1) 手册页。
此过程可用于任何区域,而不仅仅是全局区域。
成为超级用户或承担主管理员角色。
有关如何创建角色并将角色指定给用户的信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
使用 prctl 命令为 cpu-shares 指定一个新值。
# prctl -n zone.cpu-shares -r -v value -i zone zonename |
idtype 为 zonename 或 zoneid。value 为新值。
本节包含与在非全局区域中使用权限配置文件关联的任务。
区域管理配置文件授予用户管理系统上所有非全局区域的权力。
要执行此过程,您必须是全局区域中的全局管理员。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
创建一个包括区域管理权限配置文件的角色并将其指定给用户。
要使用 Solaris Management Console 创建并指定角色,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。请参阅“如何使用 GUI 创建并指定角色”任务。
要在命令行上创建并指定角色,请参见《系统管理指南:安全性服务》中的“管理 RBAC”。请参阅“如何从命令行创建角色”任务。
可以使用 pfexec 程序在配置文件中执行区域命令。该程序使用 exec_attr 数据库中的用户配置文件指定的属性执行命令。该程序由配置文件 shell pfksh、pfcsh 和 pfsh 进行调用。
使用 pfexec 程序可以登录到区域(例如 my-zone)。
machine$ pfexec zlogin my-zone |
以下过程可以用于在区域中备份文件。同时,请记住还要备份区域的配置文件。
可以使用 ufsdump 命令执行完整备份或增量备份。此过程将区域 /export/my-zone 备份到 /backup/my-zone.ufsdump,其中 my-zone 将被替换为您的系统上的区域的名称。您可能需要一个单独的文件系统(例如,在 /backup 上挂载的文件系统),来保存备份。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
(可选)关闭区域以使其处于停顿状态,从而避免创建共享文件系统的备份。
global# zlogin -S my-zone init 0 |
查看区域状态。
global# zoneadm list -cv |
将显示以下类似信息:
ID NAME STATUS PATH BRAND IP 0 global running / native shared - my-zone installed /export/home/my-zone native shared |
执行备份。
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 |
引导区域。
global# zoneadm -z my-zone boot |
此方法使用 fssnap 命令,此命令会创建用于备份操作的文件系统的临时映像。
此方法只能用于提供一个全新、一致的区域文件备份,并且可以在区域运行时执行。但是,最好在创建快照时暂停或检查正在更新文件的活动应用程序。在创建快照时更新文件的应用程序可能会使这些文件内部不一致、被截断或不可用。
在下面的示例过程中,请注意以下内容:
在 /export/home 下有一个名为 my-zone 的区域。
/export/home 是单独的文件系统。
目标备份为 /backup/my-zone.ufsdump。您必须在 / 下创建目录 backup。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
创建快照。
global# fssnap -o bs=/export /export/home |
将显示以下类似信息:
dev/fssnap/0 |
挂载快照。
global# mount -o ro /dev/fssnap/0 /mnt |
通过快照备份 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 |
卸载快照。
global# umount /mnt |
删除快照。
global# fssnap -d /dev/fssnap/0 |
请注意,快照也会在重新引导系统时从系统中删除。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
转到根目录。
global# cd / |
备份没有回送挂载到 /backup/my-zone.cpio 的 my-zone 文件。
global# find export/my-zone -fstype lofs -prune -o -local | cpio -oc -O /backup/my-zone.cpio type as one line |
检验结果。
global# ls -l backup/my-zone.cpio |
将显示以下类似信息:
-rwxr-xr-x 1 root root 99680256 Aug 10 16:13 backup/my-zone.cpio |
您应当创建非全局区域配置的备份文件。如有必要,将来可以使用备份来重新创建区域。在您首次登录到区域,并回答了 sysidtool 的问题之后,创建区域配置的副本。此过程使用名为 my-zone 的区域和名为 my-zone.config 的备份文件来显示过程。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
将区域 my-zone 的配置列显到名为 my-zone.config 的文件。
global# zonecfg -z my-zone export > my-zone.config |
如有必要,可以使用非全局区域配置的备份文件来恢复非全局区域。此过程使用名为 my-zone 的区域和名为 my-zone.config 的备份文件来说明恢复区域的过程。
成为超级用户或承担主管理员角色。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”。
指定 my-zone.config 作为 zonecfg 命令文件来重新创建区域 my-zone。
global# zonecfg -z my-zone -f my-zone.config |
安装区域。
global# zoneadm -z my-zone install |
为了防止系统显示在初始登录区域时出现的 sysidtool 问题,请删除文件 zonepath/root/etc/.UNCONFIGURED,例如:
global# rm /export/home/my-zone/root/etc/.UNCONFIGURED |
如果您需要恢复任何区域特定的文件(例如应用程序数据),请将这些文件从备份手动恢复(并可能手动合并)到新创建的区域根文件系统。
本章提供有关如何在运行 Solaris Zones 时将 Solaris 10 系统升级到更高发行版的信息,同时还提供指向相应 Solaris 安装文档的链接。
安装了区域的系统现在支持 Solaris Live Upgrade。zonepath 无法位于 ZFS 上。
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 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 的新增内容。
在安装了区域的系统上使用 Live Upgrade 时有许多注意事项。在 lucreate 和 lumount 操作期间应避免区域状态转换,这一点很关键。
在使用 lucreate 命令生成备用引导环境 (alternate boot environment, ABE) 时,如果给定区域未运行,则在 lucreate 完成之前,将无法引导该区域。
在使用 lucreate 命令生成 ABE 时,如果给定区域正在运行,则在 lucreate 完成之前,不应停止或重新引导该区域。
在通过 lumount 挂载 ABE 时,不能引导或重新引导区域,虽然 lumount 操作之前已在运行的区域可以继续运行。
由于非全局区域管理员和全局区域管理员均可控制非全局区域,因此在 lucreate 或 lumount 操作期间最好停止所有区域。
当 Live Upgrade 操作正在执行时,非全局区域管理员的参与很关键。升级会影响管理员的工作,管理员将忙于处理因升级而带来的各种变化。区域管理员应确保任何本地软件包在整个操作序列期间都保持稳定,处理所有升级后任务(如配置文件调整),通常还应针对系统故障做出安排。
升级系统前,请阅读具有以 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》。
所有类型的安装和升级的整体规划信息和要求在《Solaris 10 11/06 Installation Guide: Planning for Installation and Upgrade》中的第 4 章 “System Requirements, Guidelines, and Upgrade (Planning)”进行了介绍。请注意,用于安装的介质必须是 DVD 或从 DVD 创建的网络安装映像。
Solaris 10 发行版界面在《Solaris 10 11/06 Installation Guide: Basic Installations》中进行了介绍。
自定义 JumpStart 安装的特殊注意事项和限制在《Solaris 10 11/06 Installation Guide: Custom JumpStart and Advanced Installations》中的第 8 章 “Custom JumpStart (Reference)”中进行了介绍。
有关通过网络执行安装或升级的信息,请参见《Solaris 10 11/06 Installation Guide: Network-Based Installations》。
本章为 Solaris 10 6/06 发行版的新增内容。
有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》。
对于这些发行版,非全局区域的 zonepath 不应该驻留在 ZFS 上。此操作可能会导致修补问题,并可能会阻止系统升级到更高的 Solaris 10 更新发行版。
请注意,从 Solaris 10 10/08 发行版开始,非全局区域的根文件系统可以驻留在的 ZFS 上。Solaris Live Upgrade 现在可用于升级系统。
如果显示以下错误消息:
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 |
如果在按照如何引导区域中的说明引导区域时看到以下消息:
# 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) 手册页。
目标系统上运行的下列必需的操作系统软件包和修补程序的版本必须与原始主机上安装的软件包和修补程序的版本相同。
在 inherit-pkg-dir 资源下提供文件的软件包
SUNW_PKG_ALLZONES=true 的软件包
如果原始主机和新主机之间的软件包和修补程序不同,则可能会显示以下类似信息:
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 |
要成功迁移区域,请使用下列方法之一:
要成功迁移区域,请在具有相同体系结构的系统上安装与原始主机上所运行的版本相同的 Solaris 发行版。
要成功迁移区域,请使用 zoneadm attach 的 -u 选项。
验证两个系统上的系统结构
host1# uname -a |
如果体系结构不同,使用 zoneadm attach 的 -u 选项以执行附加操作。
host2# zoneadm -z my-zone attach -u |
有关更多信息,请参见如何迁移非全局区域。
此问题已在 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. |
尽管此错误消息表明,系统必须从备份恢复,但系统实际上是完好的,可以使用以下解决方法成功升级系统:
使用安装的 OS 重新引导系统。
重新配置区域,删除使用 lofs 类型定义的 fs 资源。
在删除这些资源之后,将系统升级到 Solaris 10 11/06。
升级后,可以再次重新配置区域,以恢复您删除的其他 fs 资源。