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

第 3 部分 lx 标记区域

Solaris 10 8/07: 从此发行版开始,可以使用标记区域。

BrandZ 为创建包含非本机操作环境的非全局标记区域提供了框架。在 Solaris 操作系统上使用标记区域来运行应用程序。

第一个可用的标记是 lx 标记,即 Solaris Containers for Linux Applications。lx 标记为应用程序提供 Linux 环境,并可在 x86 和 x64 计算机上运行。

第 31 章 关于标记区域和 Linux 标记区域

从 Solaris 10 8/07 发行版开始,可以使用标记区域。后续更新版本中添加的功能会注明相应的发行版本。

Solaris 操作系统中的标记区域功能是 Solaris Zones 的简单扩展。本章讨论标记区域概念和实现 Linux 标记区域功能的 lx 标记。Linux 标记区域也称为 Linux 应用程序的 Solaris Containers。


注 –

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



注 –

在 Solaris 操作系统中支持其他标记。

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

Solaris 10 发行版还支持 cluster 标记,该标记在 docs.sun.com 上的 Sun Cluster 3.2 1/09 Software Collection for Solaris OS 中进行了介绍。


关于在 Solaris 系统上使用区域

有关在 Solaris 系统上使用区域的一般信息,请参见第 16 章

您应熟悉以下区域和资源管理概念:

词汇表为区域和资源管理功能涉及的术语提供定义。

在系统上使用标记区域所需的任何其他信息均在指南的本部分中提供。


注 –

本指南的下列章节不适用于标记区域:


标记区域技术

标记区域 (BrandZ) 框架对本手册第 2 部分, Zones中介绍的 Solaris Zones 基础结构进行了扩展,从而包括标记的创建。术语标记可以指各种操作环境。通过 BrandZ 可以创建包含用于运行应用程序的非本机操作环境的非全局区域。标记类型用来确定安装和引导区域时执行的脚本。此外,区域的标记还可用来在应用程序启动时确定正确的应用程序类型。所有标记管理都通过扩展当前区域结构来执行。

标记能够提供简单或复杂环境。例如,简单环境可以用相应的 GNU 等效项来替换标准 Solaris 实用程序。复杂环境可以提供支持执行 Linux 应用程序的完整 Linux 用户空间。

每个区域都配有一个关联标记。缺省为 native 标记 Solaris。一个标记区域只支持一个非本地二进制命令标记,这意味着一个标记区域只提供一种操作环境。

BrandZ 通过以下方式来扩展区域工具:


注 –

可在已配置状态下更改区域标记。一旦安装标记区域后,便不能更改或删除标记。


在标记区域中运行的进程

标记区域在内核中提供了一组插入点,这些插入点只应用于在标记区域中执行的进程。

标记还能为 librtld_db 提供插件库。通过插件库,Solaris 工具(如 mdb(1) 中介绍的调试器和 dtrace(1M) 中介绍的 DTrace)可以访问在标记区域内运行的进程的符号信息。

标记区域设备支持

每个区域支持的设备都在与该标记相关的手册页和其他文档中进行了介绍。设备支持由相应标记定义。标记可以选择不允许添加任何不受支持或无法识别的设备。

标记区域文件系统支持

标记区域所需的文件系统由相应标记定义。

标记区域中的权限

标记区域中可用的权限由相应标记定义。有关权限的更多信息,请参见非全局区域中的权限lx 标记区域中的可配置权限

关于 lx 标记

lx 标记使用标记区域框架,使得 Linux 二进制应用程序无需修改,便可在具有 Solaris 操作系统内核的计算机上运行。

计算机的处理器类型必须为以下受支持的 i686 处理器类型之一:

支持的 Linux 分发

lx 标记包括在非全局区域中安装 CentOS 3.x 或 Red Hat Enterprise Linux 3.x 分发版所必需的工具。每种分发的3.5 到 3.8 版本均受支持。该标记支持在以 32 位或 64 位模式运行 Solaris 系统的 x86 和 x64 计算机上执行 32 位 Linux 应用程序。

lx 标记模仿由 Linux 2.4.21 内核提供的系统调用接口,Red Hat 在 RHEL 3.x 分发中对这些接口进行了修改。此内核提供由 Red Hat 发行的 glibc 2.3.2版本所使用的系统调用接口。

此外,lx 标记还部分模仿 Linux /dev/proc 接口。


注意 – 注意 –

请注意,如果向 lx 标记区域中添加软件包,必须保留支持的配置。有关更多信息,请参见关于维护支持的配置


应用程序支持

Solaris 系统对于可在 lx 标记区域中运行的 Linux 应用程序数没有任何限制。必须提供足够的内存。另请参见系统和空间要求

无论基础内核如何,都只能运行 32 位 Linux 应用程序。

lx 区域只支持用户级别的 Linux 应用程序。在 lx 区域中不能使用 Linux 设备驱动程序、Linux 内核模块或 Linux 文件系统。

有关已在 lx 标记下成功运行的一些应用程序的列表,请参见 http://hub.opensolaris.org/bin/view/Community+Group+brandz/applications。有关安装应用程序的示例,请参见如何在 lx 标记区域中安装应用程序

不能在 lx 区域内运行 Solaris 应用程序。但通过 lx 区域可以使用 Solaris 系统来开发、测试和部署 Linux 应用程序。例如,可将一个 Linux 应用程序置于 lx 区域中并使用从全局区域运行的 Solaris工具对其进行分析。然后,可以在本地 Linux 系统上改进并部署优化后的应用程序。

调试工具

Solaris 调试工具(如 DTrace 和 mdb)可以应用于在区域内执行的 Linux 进程,但工具本身必须在全局区域中运行。生成的任何核心转储文件都以 Solaris 格式生成,并且只能用 Solaris 工具进行调试。

Dtrace 由 DTrace lxsyscall 动态跟踪提供器为 Linux 应用程序启用。该提供器的行为与 DTrace syscall 提供器的行为相似。lxsyscall 提供器可提供在线程进入 Linux 系统调用入口点或从此处返回时触发的探测。

有关调试选项的更多信息,请参见《Solaris 动态跟踪指南》以及 dtrace(1M)mdb(1) 手册页。《Solaris 动态跟踪指南》介绍了 DTrace 功能可以使用的公共记录接口。有关 syscall 提供器的文档也可用于 lxsyscall 提供器。


注 –

因为 NFS 依赖于区域特定的名称服务,所以不能访问在当前区域外挂载的任何 NFS 文件系统。因此,不能从全局区域中调试基于 NFS 的 Linux 进程。


命令和其他接口

下表中列出的命令可提供区域功能的主要管理接口。

表 31–1 用于 lx 标记区域的命令和其他接口

命令参考 

说明 

zlogin(1)

登录到非全局区域 

zoneadm(1M)

管理系统上的区域 

zonecfg(1M)

用于设置区域配置 

getzoneid(3C)

用于在区域 ID 和区域名称之间进行映射 

brands(5)

提供标记区域功能的说明 

lx(5)

提供 Linux 标记区域的说明 

zones(5)

提供区域功能的说明 

lx_systrace(7D)

DTrace Linux 系统调用跟踪提供器 

zcons(7D)

区域控制台设备驱动程序 

zoneadmd 守护进程是管理区域虚拟平台的主要进程。zoneadmd 守护进程的手册页为 zoneadmd(1M)。此守护进程并没有构成编程接口。


注 –

表 27–5 介绍了可在全局区域中用来显示所有非全局区域(包括标记区域)的相关信息的命令。表 27–4 介绍了用于资源上限设置守护进程的命令。


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

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

任务 

说明 

参考 

确定要在区域中运行的每个 32 位 Linux 应用程序。 

评估应用程序对系统的要求。 

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

确定要配置的区域数。 

评估: 

  • 要运行的 Linux 应用程序数。

  • Linux 标记区域的磁盘空间要求。

  • 是否需要使用脚本。

请参见应用程序支持系统和空间要求评估当前的系统设置配置多个 lx 标记区域的脚本

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

如果要使用资源池,请在配置区域前先配置资源池。 

请注意,通过使用 zonecfg 属性可以向区域中快速添加区域范围的资源控制和池功能。

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

执行预配置任务。 

确定每个区域的区域名称和区域路径。如果需要网络连接,请获取 IP 地址。确定用于区域的调度类。确定在标准缺省权限集不充足的情况下,应为区域内的进程设置的权限集。 

有关区域名称、区域路径、IP 地址和调度类的信息,请参见lx 标记区域配置组件。有关缺省权限和可在非全局区域中配置的权限的列表,请参见非全局区域中的权限

有关资源池关联的信息,请参见区域如何工作如何配置 lx 标记区域

开发配置。 

配置非全局区域。 

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

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

必须在引导区域之前检验和安装区域。在安装 Linux 标记区域前,必须获取 Linux 分发。 

请参见第 34 章第 35 章

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

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

请参见第 35 章

为生产使用准备新区域。 

使用标准 Linux 系统管理工具和方法在区域内创建用户帐户、添加其他软件并自定义区域配置。 

请参阅用于设置新安装的计算机和安装应用程序的文档。本指南包含适用于已安装区域的系统的特殊注意事项。 

第 32 章 规划 lx 标记区域配置(概述)

本章介绍在基于 x64 或 x86 的系统上配置 lx 标记区域之前需要执行的操作,还介绍了 zonecfg 命令的用法。

系统和空间要求

以下几点主要的计算机注意事项与 lx 标记区域的使用有关。

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

限制标记区域的大小

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

标记区域网络地址

每个需要网络连接的区域都有一个或多个专用 IP 地址。支持 IPv4 地址。必须为区域指定一个 IPv4 地址。有关更多信息,请参见标记区域网络地址。或者,您也可以如如何配置 lx 标记区域中所示设置网络接口的缺省路由器。

lx 标记区域配置过程

zonecfg 命令可用于:

zonecfg verify 命令将针对给定配置检验以下内容:

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

lx 标记区域配置组件

本节介绍以下组件:

lx 标记区域中的区域名称和区域路径

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

lx 标记区域中的区域自动引导

autoboot 属性设置决定在引导全局区域时是否自动引导区域。

lx 标记区域中的资源池关联

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

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


注 –

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


指定 dedicated-cpu 资源

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

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

ncpus

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

importance

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


注 –

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


Solaris10 5/08:指定 capped-cpu 资源

capped-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 资源份额来表示。

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

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

capped-memory 资源

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


注 –

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


有关更多信息,请参见第 10 章第 11 章如何配置 lx 标记区域

lx 标记区域中的区域网络接口

lx 标记区域中只支持共享 IP 网络配置。

每个需要网络连接的区域都必须具有一个或多个专用 IP 地址。这些地址与逻辑网络接口关联。引导区域时,将在其中自动设置并放置通过 zonecfg 命令配置的网络接口。从 Solaris 10 10/08 发行版开始,您也可通过 defrouter 属性设置网络接口的缺省路由器。

lx 标记区域中挂载的文件系统

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

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

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

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

lx 标记区域中区域范围的资源控制

设置区域范围的资源控制的首选方法是使用属性名称(这种方法比较简单)而不是 rctl 资源。将为全局区域和非全局区域指定这些限制。

全局管理员还可使用 rctl 资源为区域设置区域范围的特权资源控制。

区域范围的资源控制可限制区域内所有进程实体总的资源使用情况。使用 zonecfg 命令同时为全局区域和非全局区域指定这些限制。有关说明,请参见如何配置 lx 标记区域

当前可以使用以下资源控制:

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

控制名称 

全局属性名称 

说明 

缺省单位 

所用值 

zone.cpu-cap

 

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

数量(CPU 数目) 

 

zone.cpu-shares

cpu-shares

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

数量(份额) 

 

zone.max-locked-memory

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

大小(字节) 

capped-memorylocked 属性

zone.max-lwps

max-lwps

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

数量 (LWP) 

 

zone.max-msg-ids

max-msg-ids

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

数量(消息队列 ID) 

 

zone.max-sem-ids

max-sem-ids

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

数量(信号量 ID) 

 

zone.max-shm-ids

max-shm-ids

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

数量(共享内存 ID) 

 

zone.max-shm-memory

max-shm-memory

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

大小(字节) 

 

zone.max-swap

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

大小(字节) 

capped-memoryswap 属性

lx 标记区域中的可配置权限

limitpriv 属性用于指定预定义的缺省集之外的权限掩码。引导区域时,标记配置中将包含一组缺省权限。这些权限被视为安全权限,因为它们可以阻止区域中的特权进程影响系统中其他非全局区域或全局区域中的进程。可以使用 limitpriv 属性执行以下操作:


注 –

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


有关更多信息,请参见lx 标记区域中定义的权限非全局区域中的权限privileges(5)

lx 标记区域中的 attr 资源

使用 attr 资源类型可以启用对全局区域中存在的音频设备的访问。有关说明,请参见如何配置、检验和提交 lx 标记区域中的步骤 12。

还可以使用 attr 资源类型为区域添加注释。

配置中缺省包括的资源

lx 标记区域中的已配置设备

每个区域支持的设备都在与该标记相关的手册页和其他文档中进行了介绍。lx 区域不允许添加任何不受支持或无法识别的设备。框架可以检测添加不受支持设备的任何尝试,并发出一条错误消息,指出无法检验区域配置。

请注意,可按如何配置、检验和提交 lx 标记区域中的步骤 12 所示,通过 attr 资源属性添加对全局区域中运行的音频设备的访问。

lx 标记区域中定义的文件系统

标记区域所需的文件系统在标记中定义。如如何配置、检验和提交 lx 标记区域中的步骤 9 所示,可以使用 fs 资源属性将其他 Solaris 文件系统添加至 lx 标记区域。


注 –

不支持添加本地 Linux 文件系统。可从 Linux 服务器中进行文件系统的 NFS 挂载。


lx 标记区域中定义的权限

仅允许进程拥有部分权限。权限限制可防止某个区域执行可能会影响其他区域的操作。通过权限设置,可以限制区域内特权用户的功能。

缺省权限、必需的缺省权限、可选权限以及禁止权限由每个标记定义。如如何配置、检验和提交 lx 标记区域的步骤 8 所述,还可以使用 limitpriv 属性添加或删除某些权限。表 27–1 列出了区域中的所有 Solaris 权限以及每个权限的状态。

有关权限的更多信息,请参见 ppriv(1) 手册页和《系统管理指南:安全性服务》。

使用 zonecfg 命令创建 lx 标记区域

可以使用 zonecfg(1M) 手册页中所述的 zonecfg 命令来配置区域。此命令还可用来为全局区域持久指定资源管理设置。

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

zonecfg 提示符的格式如下:


zonecfg:zonename>

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


zonecfg:zonename:fs>

有关更多信息(包括说明如何使用本章中介绍的 zonecfg 各组成部分的过程),请参见如何配置 lx 标记区域

zonecfg 模式

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

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

然后范围恢复为全局。

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

zonecfg 交互模式

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

help

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


zonecfg:lx-zone:net> help
create

开始为指定的新标记区域配置内存配置。

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


    zonecfg:lx-zone> create -t SUNWlx
    
  • -b 选项一起使用时,用于创建可为其设置标记的空配置。


    zonecfg:lx-zone> create -b
    zonecfg:lx-zone> set brand=lx
    
  • -F 选项一起使用时,用于覆写现有配置。

export

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

add

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

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

有关更多信息,请参见“如何配置 lx 标记区域”以及 zonecfg(1M) 手册页。

set

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

select

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

clear

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

remove

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

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

end

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

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

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

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

cancel

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

delete

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


注意 – 注意 –

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


info

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

verify

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

commit

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

revert

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

exit

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

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

zonecfg 命令文件模式

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

标记区域配置数据

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

资源和属性类型

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

区域名称

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

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

  • 区域名称区分大小写。

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

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

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

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

zonepath

zonepath 属性是区域根目录的路径。每个区域都具有一个与全局区域根目录相对的根目录路径。安装时,需要全局区域目录以提供限定的可见性。它必须由 root 拥有,并且模式为 700

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

路径 

说明 

/home/export/lx-zone

zonecfg zonepath

/home/export/lx-zone/root

区域的根目录 

/home/export/lx-zone/root/dev

为区域创建的设备目录 

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


注 –

通过使用 zoneadmmove 子命令指定一个完整的新 zonepath,可将区域移至同一系统上的其他位置。有关说明,请参见Solaris 10 11/06:移动非全局区域


autoboot

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


global# svcadm enable zones
bootargs

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

pool

此属性用于将区域与系统上的特定资源池关联。多个区域可以共享一个池的资源。另请参见指定 dedicated-cpu 资源

limitpriv

此属性用于指定缺省权限集之外的权限掩码。请参见非全局区域中的权限

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

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

如果输入以下指令,则会添加系统时钟设置功能,并删除原始 Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 包发送功能:


global# zonecfg -z userzone
zonecfg:userzone> set limitpriv="default,sys_time,!net_icmpaccess"

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

scheduling-class

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

dedicated-cpu

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

capped-memory

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

fs

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

net

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

lx 标记区域中只支持共享 IP 网络配置。

rctl

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


注 –

要使用 zonefigset global_property_name 子命令而非 rctl 资源来配置区域范围的控制,请参见如何配置 lx 标记区域


attr

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

lx 标记区域中的资源类型属性

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

dedicated-cpu

ncpusimportance

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


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

ncpus

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


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

physicalswaplocked

此资源可对为区域设置内存上限时使用的属性分组。以下示例指定了区域 my-zone 的内存限制。每个限制均为可选项,但至少要设置一个限制。


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

dirspecialrawtypeoptions

以下示例中的各行在非全局区域中添加对 CD 或 DVD 介质的只读访问权限。在非全局区域中,文件系统是使用选项 ro,nodevices(只读并且无设备)进行回送挂载的。


zonecfg:lx-zone> add fs
zonecfg:lx-zone:fs> set dir=/cdrom
zonecfg:lx-zone:fs> set special=/cdrom
zonecfg:lx-zone:fs> set type=lofs
zonecfg:lx-zone:fs> add options [ro,nodevices]
zonecfg:lx-zone:fs> end

请注意,有关专用于特定文件系统的挂载选项的信息可以在 1M 手册页部分中找到。这些手册页的名称格式为 mount_filesystem

net

addressphysicaldefrouter

在以下示例中,将 IP 地址 192.168.0.1 添加到区域。bge0 卡用于物理接口,且设置了缺省路由器。


zonecfg:lx-zone> add net
zonecfg:lx-zone:net> set address=192.168.0.1
zonecfg:lx-zone:net> set physical=bge0
zonecfg:lx-zone:net> set defrouter=10.0.0.1
zonecfg:lx-zone:net> end

注 –

要确定所使用的物理接口,请在系统上键入 ifconfig -a。每一个输出行(回送驱动程序行除外)都以系统上安装的卡的名称开头。说明中包含 LOOPBACK 的行不适用于卡。


rctl

namevalue

lx 标记区域中区域范围的资源控制中介绍了可用的区域范围的资源控制。


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

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

nametypevalue

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


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

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

第 33 章 配置 lx 标记区域(任务)

本章介绍如何在基于 x64 或 x86 的系统上配置 lx 标记区域。此过程与配置 Solaris 区域的过程基本相同。配置标记区域时不需要使用其中一些属性。

规划和配置 lx 标记区域(任务图)

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

任务 

说明 

参考 

规划区域策略。 

  • 确定要在区域中运行哪些应用程序。

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

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

  • 如果要使用资源池,请根据需要配置池。

请参见系统和空间要求区域中使用的资源池

确定区域的名称和路径。 

基于命名约定决定区域的名称。推荐使用 Zetabyte 文件系统 (Zetabyte File System, ZFS) 上的路径。当源 zonepath 和目标 zonepath 都驻留在 ZFS 上并且位于同一个池中,zoneadm clone 命令会自动使用 ZFS 来克隆区域。

请参见资源和属性类型《Oracle Solaris ZFS 管理指南》

获取或配置区域的 IP 地址。 

根据配置的不同,您必须为需要网络访问的每个非全局区域获取至少一个 IP 地址。 

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

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

查看您的应用程序要求。 

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

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

查看您的应用程序要求。 

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

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

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

请参见资源和属性类型非全局区域中的权限

配置区域。 

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

请参见如何配置、检验和提交 lx 标记区域

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

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

请参见如何配置、检验和提交 lx 标记区域

如何配置 lx 标记区域

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


提示 –

如果您知道将要使用 CD 或 DVD 在 lx 标记区域中安装应用程序,请在最初配置标记区域时,使用 add fs 在全局区域内添加对 CD 或 DVD 介质的只读访问权限。然后可以使用 CD 或 DVD 在标记区域中安装产品。


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

配置多个 lx 标记区域的脚本中提供了用于在系统中配置多个区域的脚本。

要显示非全局区域配置,请参见如何显示标记区域的配置


提示 –

配置完标记区域之后,最好复制该区域的配置。将来您可以使用此备份来恢复区域。以超级用户或主管理员的身份,将区域 lx-zone 的配置列显到文件。以下示例使用名为 lx-zone.config 的文件。


global# zonecfg -z lx-zone export > lx-zone.config

有关更多信息,请参见如何恢复单个非全局区域


Procedure如何配置、检验和提交 lx 标记区域

请注意,不能在启用标签的 Trusted Solaris 系统中使用 lx 标记区域。zoneadm 命令将不检验配置。

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

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

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

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

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


    global# zonecfg -z lx-zone
    

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


    lx-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. 使用 SUNWlx 模板创建新 lx 区域配置。


    zonecfg:lx-zone> create -t SUNWlx
    

    或者,也可以创建空区域并显式设置标记:


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


    zonecfg:lx-zone> set zonepath=/export/home/lx-zone
    
  5. 设置自动引导值。

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


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


    zonecfg:lx-zone> set bootargs="-i=altinit"
    
  7. 如果在系统上启用资源池,则将该池与区域进行关联。

    此示例使用名为 pool_default 的缺省池。


    zonecfg:lx-zone> set pool=pool_default
    

    因为资源池允许进行一次可选的调度类分配,所以可以使用池功能来设置一个缺省的调度程序,而不是非全局区域的系统缺省值。有关说明,请参见如何将池与调度类关联创建配置

  8. 修改缺省权限集。


    zonecfg:lx-zone> set limitpriv="default,proc_priocntl"
    

    proc_priocntl 权限用于在实时类中运行进程。

  9. 将 CPU 份额值设置为 5。


    zonecfg:lx-zone> set cpu-shares=5
    
  10. 添加内存上限。


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


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


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


      zonecfg:lx-zone:capped-memory> set locked=30m
      
    4. 结束指定。


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


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


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


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

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

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


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

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

    4. 结束文件系统指定。


      zonecfg:lx-zone:fs> end
      

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

  12. 添加网络虚拟接口。


    zonecfg:lx-zone> add net
    
    1. 以下面格式设置 IP 地址:区域的 IP 地址/网络掩码。在此过程中使用了 10.6.10.233/24


      zonecfg:lx-zone:net> set address=10.6.10.233/24
      
    2. 设置网络接口的物理设备类型,在此过程中为 bge 设备。


      zonecfg:lx-zone:net> set physical=bge0
      
    3. 结束指定。


      zonecfg:lx-zone:net> end
      

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

  13. 通过使用 attr 资源类型在此区域中启用全局区域中存在的音频设备。


    zonecfg:lx-zone> add attr
    
    1. 将名称设置为 audio


      zonecfg:lx-zone:attr> set name=audio
      
    2. 将类型设置为 boolean


      zonecfg:lx-zone:attr> set type=boolean
      
    3. 将值设置为 true


      zonecfg:lx-zone:attr> set value=true
      
    4. 结束 attr 资源类型指定。


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


    zonecfg:lx-zone> verify
    
  15. 提交区域的配置。


    zonecfg:lx-zone> commit
    
  16. 退出 zonecfg 命令。


    zonecfg:lx-zone> exit
    

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

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

提示 –

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


global# zonecfg -z lx-zone "create -t SUNWlx; set zonepath=/export/home/lx-zone"

下一步执行的操作

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

配置多个 lx 标记区域的脚本

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

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


#!/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" || -z "$4" ]]; then
    echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir> <template zone>"
    exit 2
fi
if [[ ! -d $3 ]]; then
    echo "$3 is not a directory"
    exit 1
fi
state=`zoneadm -z $4 list -p 2>/dev/null | cut -f 3 -d ":"`
if [[ -z "$state" || $state != "installed" ]]; then
    echo "$4 must be an installed, halted zone"
    exit 1
fi

template_zone=$4

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 clone $template_zone > /dev/null 2>&1
	if [ $? != 0 ]; then
		echo configuring $prefix$i
		F=$dir/$prefix$i.config
		rm -f $F
		echo "create -t SUNWlx" > $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 -s -d /path/to/ISOs > /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
para=`expr $nprocs \* 2`
while [ $i -le $nzones ]; do
	date
	j=1
	while [ $j -le $para ]; do
		if [ $i -le $nzones ]; then
			echo booting $prefix$i
			zoneadm -z $prefix$i boot &
		fi
		j=`expr $j + 1`
		i=`expr $i + 1`
	done
	wait
done

Procedure如何显示标记区域的配置

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

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

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

  2. 显示区域配置。


    global# zonecfg -z zonename info
    

修改、恢复或删除区域配置

以下各节包含用于修改、恢复或删除区域配置的过程。

第 34 章 关于安装、引导、停止、克隆和卸载 lx 标记区域(概述)

本章讨论以下主题:

标记区域安装和管理概念

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

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

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


注 –

安装区域后,所有软件配置和管理工作都必须由区域管理员在区域内使用 Linux 工具来执行。


lx 标记区域安装方法

可以使用 tarball、CD-ROM 或 DVD 光盘或者 ISO 映像来安装 lx 标记区域。如果从光盘或 ISO 映像安装,则可指定 Sun 软件包簇类别。类别是累积的。如果不指定簇,则缺省值为 desktop

表 34–1 软件包簇类别

Sun 类别 

内容 

core

构建区域需要的软件包的最小集合。 

server

core 和面向服务器的软件包,如 httpdmailmanimapdspam-assassin

desktop

server 和面向用户的软件包,如 evolutiongimpmozillaopenoffice

developer

desktop 和开发者软件包,如 bisonemacsgccvim-X11 和许多库开发软件包。

all

安装介质上已知不干扰区域运行的所有内容。某些软件包在 Linux 区域中可能不起作用。 

要安装已配置的 lx 标记区域,请参见如何安装 lx 标记区域

lx 标记区域构建

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

在配置了非全局区域之后,应检验是否可以在系统配置中安全地安装该区域。然后您可以安装此区域。区域的根文件系统所需的文件由系统安装在区域的根路径下。如如何安装 lx 标记区域中所述,将从 CD、ISO 映像或 tarball 中填充 Linux 区域。

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

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

在就绪状态下,会启动 zschedzoneadmd 进程来管理虚拟平台。

zoneadmd 区域管理守护进程

区域管理守护进程 zoneadmd 是管理区域虚拟平台的主要进程。有关更多信息,请参见zoneadmd 守护进程

zsched 区域调度进程

zsched 区域调度程序中介绍了用于管理应用程序环境的进程 zsched

标记区域应用程序环境

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

所有其他配置均由区域管理员在区域中使用 Linux 工具完成。

口令

请注意,如果区域是从 Sun tarball 安装的,则 root 用户(超级用户)口令将为 root。从 ISO 映像或 CD 安装区域时,root(超级用户)口令将复位(为空)。

关于停止、重新引导、卸载和克隆 lx 标记区域

本节概述了停止、重新引导、卸载和克隆区域的过程。

停止标记区域

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

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

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

重新引导标记区域

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

标记区域引导参数

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

以下定义适用:

-i altinit

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

-s

将区域引导至 init 级别 s

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

有关 init 命令的信息,请参见 init(1M)

标记区域 autoboot

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

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

卸载标记区域

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

关于克隆 lx 标记区域

通过克隆可以复制系统上现有的已配置和已安装区域,从而在同一系统上快速置备新区域。有关克隆进程的更多信息,请参见在同一系统上克隆 lx 标记区域

引导和重新引导 lx 标记区域

有关引导和重新引导区域的过程,请参见如何引导 lx 标记区域如何重新引导 lx 标记区域

第 35 章 安装、引导、停止、卸载和克隆 lx 标记区域(任务)

本章介绍如何安装和引导 lx 标记区域,还介绍了以下其他任务:

lx 标记区域安装(任务图)

任务 

说明 

参考 

获取 Linux 归档文件。 

在安装 lx 标记区域之前,必须先获取 Linux 归档文件。

如何获取 Linux 归档文件

安装已配置的 lx 标记区域。

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

如何安装 lx 标记区域

(可选)安装可用软件包的子集。 

在从 CD 或 ISO 映像中进行安装时,可以安装安装介质中的软件包的子集。 

如何安装软件包的子集

(可选)在区域中启用联网功能。 

联网功能在缺省情况下处于禁用状态,如果需要此功能,则必须先启用此功能。 

如何在 lx 标记区域中启用联网

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

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

如何获取已安装标记区域的 UUID

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

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

(可选)将已安装的 lx 标记区域置于就绪状态

引导 lx 标记区域。

引导区域时会将此区域置于运行状态。既可以从就绪状态引导区域,也可以从已安装状态引导区域。  

如何引导 lx 标记区域

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

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

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

安装和引导 lx 标记区域

使用 zoneadm(1M) 手册页中所述的 zoneadm 命令,可以执行非全局区域的安装任务。

Procedure如何获取 Linux 归档文件

在安装 lx 标记区域之前,必须先获取 Linux 归档文件。归档文件通过以下形式分发:

  1. 使用以下方法之一获取 Linux 分发:

Procedure如何安装 lx 标记区域

此过程用于安装已配置的 lx 标记区域。安装区域后,所有软件配置和管理工作都必须由区域管理员在区域内使用 Linux 工具来执行。

有关使用不同分发路径的区域安装命令行的示例,请参见示例 35–1示例 35–2示例 35–3。如果从光盘或 ISO 映像安装,则必须指定 Sun 软件包簇类别。有关软件包簇类别的信息,请参见lx 标记区域安装方法

请注意,可以在安装一个区域之前检验该区域。如果您跳过此过程,则会在安装区域时自动执行检验。(可选)如何在安装已配置的区域之前检验该区域中介绍了此过程。

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


注 –

在步骤 3 中,如果 zonepath 在 ZFS 上,zoneadm install 命令将在安装区域时自动为 zonepath 创建 ZFS 文件系统(数据集)。可以通过添加 -x nodataset 参数阻止此操作。


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

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

  2. (可选)如果要从 DVD 或 CD 进行安装,请在系统中启用 volfs 并检验它是否正在运行。


    global# svcadm enable svc:/system/filesystem/volfs:default
    

    global# svcs | grep volfs
    

    将显示以下类似信息:


    online  17:30 svc:/system/filesystem/volfs:default
  3. 通过将 zoneadm 命令与 install 选项和归档文件路径结合使用来安装已配置区域 lx-zone

    • 安装区域,如果 zonepath 在 ZFS 上,则自动创建一个 ZFS 文件系统。


      global# zoneadm -z lx-zone install -d archive_path
      

      系统将显示:


      A ZFS file system has been created for this zone.
    • 安装 zonepath 在 ZFS 上的区域,但自动创建 ZFS 文件系统。


      global# zoneadm -z lx-zone install -x nodataset -d archive_path
      

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


    注 –

    如果不指定 archive_path,则缺省值为 CD


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


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

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


      global# zoneadm -z lx-zone uninstall
      

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

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


    global# zoneadm list -iv
    

    将显示以下类似信息:


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

示例 35–1 使用 CentOS 压缩 tar 归档文件的安装命令


global# zoneadm -z lx-zone install -d /export/centos_fs_image.tar.bz2


示例 35–2 使用 CentOS CD 的安装命令

对于 CD 或 DVD 安装,必须在系统中启用 volfs。必须指定一个软件簇软件包。例如,使用 development 安装完整环境,或键入特定簇的名称。如果不指定簇软件包,缺省情况下将安装 desktop。CD 设备为 /cdrom/cdrom0


global# zoneadm -z lx-zone install -d /cdrom/cdrom0 development


示例 35–3 使用 CentOS ISO 映像的安装命令

必须指定一个软件簇软件包。使用 development 安装完整环境,或指定特定簇。如果不指定簇软件包,缺省情况下将安装 desktop。CentOS ISO 映像驻留在目录 /export/centos_3.7 中。


global# zoneadm -z lx-zone install -d /export/centos_3.7 development

另请参见

有关数据集的更多信息,请参见《Oracle Solaris ZFS 管理指南》

故障排除

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

Procedure如何安装软件包的子集

在从 CD 或 ISO 映像中进行安装时,可以安装安装介质中的软件包的子集。可用子集有 coreserverdesktopdeveloperall

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

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

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

  2. 只安装服务器软件包:


    global# zoneadm -z lx-zone install -d archive_path server
    

Procedure如何在 lx 标记区域中启用联网

安装 lx 标记区域时,会禁用联网。使用类似如下的过程可以启用联网。

只有区域管理员可以执行此过程。

  1. 编辑区域中的 /etc/sysconfig/network 文件。


    NETWORKING=yes
    HOSTNAME=your.hostname
  2. 要设置 NIS 域,请添加类似于以下内容的行:


    NISDOMAIN=domain.Sun.COM
配置联网和命名服务

有关配置联网或命名服务的更多信息,请查看有关 Linux 分发的相关文档。

Procedure如何获取已安装标记区域的 UUID

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

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


    global# zoneadm list -p
    

    将显示以下类似信息:


    0:global:running:/::native
        1:centos38:running:/zones/centos38:27fabdc8-d8ce-e8aa-9921-ad1ea23ab063:lx

示例 35–4 如何在命令中使用 UUID


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

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


关于 UUID

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

另请参见

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

Procedure如何将已安装的 lx 标记区域标记为未完成

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

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

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

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

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


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


    global# zoneadm list -iv
    

    将显示以下类似信息:


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

注 –

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


(可选)将已安装的 lx 标记区域置于就绪状态

转换为就绪状态之后,虚拟平台便可开始运行用户进程。处于就绪状态的区域中没有执行任何用户进程。

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

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

Procedure如何引导 lx 标记区域

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

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


提示 –

请注意,不能在启用标签的 Trusted Solaris 系统中引导标记区域。


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

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

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


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


    global# zoneadm list -v
    

    将显示以下类似信息:


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

示例 35–5 为区域指定引导参数

使用 -i altinit 选项引导区域:


global# zoneadm -z lx-zone boot -- -i /path/to/process

故障排除

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

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

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

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

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

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


    global# zoneadm -z lx-zone boot -- -s
    

下一步执行的操作

要登录到区域并查看配置,请参见登录到 lx 标记区域

停止、重新引导、卸载、克隆和删除 lx 标记区域(任务图)

任务 

说明 

参考 

停止区域。 

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

如何停止 lx 标记区域

重新引导区域。 

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

如何重新引导 lx 标记区域

卸载区域。 

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

如何卸载标记区域

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

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

在同一系统上克隆 lx 标记区域

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

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

从系统中删除 lx 标记区域

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

Procedure如何停止 lx 标记区域

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

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

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

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

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


    global# zoneadm list -v
    

    将显示以下类似信息:


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


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


    global# zoneadm list -iv
    

    将显示以下类似信息:


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


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

如果区域没有正常停止,请参见区域无法停止以获得疑难解答提示。

Procedure如何重新引导 lx 标记区域

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

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

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

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


    global# zoneadm list -v
    

    将显示以下类似信息:


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


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


    global# zoneadm list -v
    

    将显示以下类似信息:


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

    提示 –

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


Procedure如何卸载标记区域


注意 – 注意 –

此过程会删除区域根文件系统中的所有文件。此操作是无法恢复的。


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

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

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

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

  2. 列出系统上的区域。


    global# zoneadm list -v
    

    将显示以下类似信息:


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

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


    global# zoneadm -z lx-zone uninstall -F
    

    请注意,针对 zonepath 卸载具有自己的 ZFS 文件系统的区域时,将销毁该 ZFS 文件系统。

  4. 再次列出系统上的区域,以检验是否不再列出 lx-zone


    global# zoneadm list -v
    

    将显示以下类似信息:


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

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

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

在同一系统上克隆 lx 标记区域

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

Procedure如何克隆 lx 标记区域

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

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

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

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

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


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


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

    注 –

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


  4. 编辑文件 master。至少要为新区域设置一个不同的 zonepath 和 IP 地址。

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


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


    global# zoneadm -z zone1 clone lx-zone
    

    系统将显示:


    Cloning zonepath /export/home/lx-zone...
  7. 列出系统上的区域。


    global# zoneadm list -iv
      ID  NAME          STATUS          PATH                   BRAND      IP
       0  global        running         /                      native     shared
       -  lx-zone       installed       /export/home/lx-zone   lx         shared
       -  zone1         installed       /export/home/zone1     lx         shared          

Procedure如何从现有快照克隆区域

可以从克隆区域时最初捕获的现有快照多次克隆源区域。

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

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

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

  2. 配置区域 zone2

  3. 指定要使用现有快照来创建 new-zone2


    global# zoneadm -z zone2 clone -s zeepool/zones/lx-zone@SUNWzone1 lx-zone
    

    系统将显示:


    Cloning snapshot zeepool/zones/lx-zone@SUNWzone1

    zoneadm 命令从快照 SUNWzone1 中验证软件并克隆快照。

  4. 列出系统上的区域。


    global# zoneadm list -iv
      ID NAME             STATUS         PATH                    BRAND      IP
       0 global           running        /                       native     shared
       - lx-zone          installed      /zeepool/zones/lx-zone  lx         shared
       - zone1            installed      /zeepool/zones/zone1    lx         shared
       - zone2            installed      /zeepool/zones/zone1    lx         shared

Procedure如何使用复制代替 ZFS 克隆

可以使用此过程指定复制 zonepath,从而阻止在 ZFS 文件系统上自动克隆区域。

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

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

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

  2. 指定复制 ZFS 上的 zonepath 而不是进行 ZFS 克隆。


    global# zoneadm -z zone1 clone -m copy lx-zone
    

从系统中删除 lx 标记区域

本节中所述的过程会从系统中完全删除区域。

Procedure如何删除 lx 标记区域

  1. 关闭区域 lx-zone


    global# zlogin lx-zone shutdown -y -g0 -i0
    
  2. 删除 lx-zone 的根文件系统。


    global# zoneadm -z lx-zone uninstall -F
    
  3. 删除 lx-zone 的配置。


    global# zonecfg -z lx-zone delete -F
    
  4. 列出系统上的区域,以检验是否不再列出 lx-zone


    global# zoneadm list -iv
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH   BRAND      IP
     0  global   running      /      native     shared

第 36 章 登录到 lx 标记区域(任务)

本章提供以下信息:

zlogin 命令概述

使用 zlogin 命令,可以从全局区域登录到任何处于正在运行状态或就绪状态的区域。


注 –

只能使用带有 -C 选项的 zlogin 命令登录到不处于运行状态的区域。


除非使用 -C 选项连接到区域控制台,否则使用 zlogin 登录到区域会启动新任务。一个任务不能跨两个区域。

如何使用非交互模式访问 lx 标记区域中所述,可以通过提供要在区域内运行的命令,在非交互模式下使用 zlogin 命令。但是,该命令或它所作用的所有文件都不能驻留在 NFS 上。如果命令的任意打开的文件或其地址空间的任意部分驻留在 NFS 上,则此命令将失败。地址空间包括可执行的命令本身以及命令的链接库。

只有全局区域中的全局管理员才能使用 zlogin 命令。有关更多信息,请参见 zlogin(1) 手册页。

lx 标记区域登录方法

非全局区域登录方法中提供了区域控制台和用户登录方法的概述。

当出现登录问题使您无法使用 zlogin 命令或带 -C 选项的 zlogin 命令来访问区域时,可以使用故障安全模式。该模式在故障安全模式中介绍。

有关远程登录区域的信息在远程登录中介绍。

交互模式分配新的伪终端,以供在区域内部使用。非交互模式用于运行可管理区域的 shell 脚本。有关更多信息,请参见交互模式与非交互模式

标记区域的登录过程(任务图)

任务 

说明 

参考 

登录到区域。 

您可以使用交互模式分配伪终端或提供要在区域中运行的命令,通过控制台登录到区域。提供要运行的命令不会分配伪终端。当指向区域的连接被拒绝时,您还可以使用故障安全模式进行登录。 

登录到 lx 标记区域

退出标记区域。 

从标记区域断开。 

如何退出 lx 标记区域

关闭标记区域。 

使用 shutdown 实用程序或脚本来关闭标记区域。

如何使用 zlogin 关闭 lx 标记区域

登录到 lx 标记区域

使用 zlogin 命令,可以从全局区域登录到任何处于正在运行状态或就绪状态的区域。有关更多信息,请参见 zlogin(1) 手册页。

如以下过程中所述,您可以通过多种方法登录到区域。您还可以远程登录,如远程登录中所述。

Procedure如何登录到 lx 标记区域控制台

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

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

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

  2. 使用带有 -C 选项和区域名称(例如 lx-zone)的 zlogin 命令。


    global# zlogin -C lx-zone
    [Connected to zone 'lx-zone' console]

    注 –

    如果您在发出 zoneadm boot 命令之后立即启动 zlogin 会话,则会显示区域的引导消息:


    INIT: version 2.85 booting
    	                Welcome to CentOS
    	                Press 'I' to enter interactive startup.
    	Configuring kernel parameters:  [  OK  ]
    	Setting hostname lx-zone:  [  OK  ]
    	[...]
    	CentOS release 3.6 (Final)
    	Kernel 2.4.21 on an i686

  3. 当显示区域控制台时,以 root 身份登录,按回车键,并在提示时键入超级用户口令。


    lx-zone console login: root
    Password:

    注 –

    回顾一下,当从 Sun tarball 安装区域时,root(超级用户)口令为 root。当从 ISO 映像或 CD 安装区域时,root(超级用户)口令未设置(为空)。


Procedure如何使用交互模式访问标记区域

在交互模式下,会分配新的伪终端以在区域内部使用。

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

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

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

  2. 从全局区域登录到某个区域(例如 lx-zone)。


    global# zlogin lx-zone
    

    将显示以下类似信息:


    [Connected to zone 'lx-zone' pts/2]
    Last login: Wed Jul  3 16:25:00 on console
    Sun Microsystems Inc. SunOS 5.10 Generic July 2006
  3. 键入 exit 关闭连接。

    将显示以下类似消息:


    [Connection to zone 'lx-zone' pts/2 closed]

Procedure如何检验运行环境

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

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

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

  2. 登录到某个区域,例如 lx-zone


    global# zlogin lx-zone
    
  3. 检验当前是否在 Solaris 操作系统下的 Linux 环境中运行。


    [root@lx-zone root]# uname -a
    

    将显示以下类似信息:


    Linux lx-zone 2.4.21 BrandZ fake linux i686 i686 i386 GNU/Linux 

Procedure如何使用非交互模式访问 lx 标记区域

当用户提供要在区域内部运行的命令时,便会启用非交互模式。非交互模式不会分配新的伪终端。

请注意,命令或运行命令的所有文件都不能驻留在 NFS 上。

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

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

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

  2. 从全局区域登录到 lx-zone 区域并提供命令名称。

    将命令替换为要在区域内运行的命令的名称。


    global# zlogin lx-zone command
    

示例 36–1 在区域 lx_master 中使用命令 uptime


global#  zlogin lx_master uptime
	21:16:01  up  2:39,  0 users,  load average: 0.19, 0.13, 0.11
	fireball#

Procedure如何退出 lx 标记区域

  1. 要从非全局区域断开连接,请使用下列方法之一。

    • 要退出区域非虚拟控制台:


      zonename# exit
      
    • 要从区域虚拟控制台断开连接,请使用波浪号 (~) 字符和句点:


      zonename# ~.
      

      将显示以下类似信息:


      [Connection to zone 'lx-zone' pts/6 closed]
另请参见

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

Procedure如何使用故障安全模式进入 lx 标记区域

当指向区域的连接被拒绝时,可以使用带有 -S 选项的 zlogin 命令进入区域的最小环境。

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

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

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

  2. 在全局区域中,使用带有 -S 选项的 zlogin 命令访问区域(例如 lx-zone)。


    global# zlogin -S lx-zone
    

Procedure如何使用 zlogin 关闭 lx 标记区域


注 –

如果在全局区域中运行 init 0 干净地关闭 Solaris 系统,也会在系统上的每个非全局区域中运行 init 0。请注意,init 0 在系统关闭之前不会警告本地和远程用户注销。


使用此过程可以干净地关闭区域。有关如何在不运行关闭脚本的情况下停止区域,请参见如何停止区域

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

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

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

  2. 登录到要关闭的区域(例如 lx-zone),并将 shutdown 指定为实用程序的名称,将 init 0 指定为状态。


    global# zlogin lx-zone shutdown -y -g0 -i0
    

    您的站点可能具有自己的适用于特定环境的关闭脚本。

在非交互模式下使用 shutdown

目前,不能在非交互模式下使用 shutdown 命令将区域置于单用户状态。有关更多信息,请参见 CR 6214427。

可以使用交互式登录,如如何使用交互模式访问标记区域中所述。

第 37 章 移动和迁移 lx 标记区域(任务)

本章介绍如何:

移动 lx 标记区域

此过程用于通过更改 zonepath 将区域移动到同一系统上的新位置。必须停止该区域。新 zonepath 必须位于本地文件系统中。需要满足资源和属性类型中介绍的标准 zonepath 条件。

Procedure如何移动区域

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

    《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”介绍了角色。

  2. 停止要移动的区域,在此过程中为 db-zone


    global# zoneadm -z db-zone halt
    
  3. 使用带有 move 子命令的 zoneadm 命令将区域移动到新 zonepath,即 /export/zones/db-zone


    global# zoneadm -z db-zone move /export/zones/db-zone
    
  4. 检验路径。


    global# zoneadm list -iv
      ID NAME             STATUS         PATH                  BRAND      IP
       0 global           running        /                     native     shared
       - lx-zone          installed      /export/home/lx-zone  lx         shared
       - db-zone          installed      /export/zones/db-zone lx         shared

lx 标记区域迁移到其他计算机

关于迁移 lx 标记区域

可以使用 zonecfgzoneadm 命令将现有的非全局区域从一个系统迁移到另一个系统。需要停止区域并使其与当前主机分离。zonepath 将移动到它所附加的目标主机。

以下要求适用于 lx 标记区域迁移:

zoneadm detach 进程用于创建在其他系统上附加区域所需的信息。zoneadm attach 进程用于检验目标计算机是否具有托管区域所需的正确配置。由于可以通过多种方式来使 zonepath 在新主机上可用,因此 zonepath 从一个系统到另一个系统的实际移动是由全局管理员执行的手动进程。

在附加到新系统时,区域处于已安装状态。

Procedure如何迁移 lx 标记区域

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

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

  2. 停止要迁移的区域,在此过程中为 lx-zone


    host1# zoneadm -z lx-zone halt
    
  3. 分离该区域。


    host1# zoneadm -z lx-zone detach
    

    分离的区域现在处于已配置状态。

  4. lx-zonezonepath 移至新主机。

    有关更多信息,请参见如何将 zonepath 移动到新主机

  5. 在新主机上,对该区域进行配置。


    host2# zonecfg -z lx-zone
    

    您会看到以下系统消息:


    lx-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  6. 要在新主机上创建区域 lx-zone,请使用带有 -a 选项以及新主机上的 zonepathzonecfg 命令。


    zonecfg:lx-zone> create -a /export/zones/lx-zone
    
  7. 查看配置。


    zonecfg:lx-zone> info
    zonename: lx-zone
    zonepath: /export/zones/lx-zone
    brand: lx
    autoboot: false
    bootargs:
    pool:
    limitpriv:
    net:
             address: 192.168.0.90
             physical: bge0
  8. (可选)对配置进行所需的任何调整。

    例如,新主机上的网络物理设备可能有所不同,或者属于配置组成部分的设备在新主机上可能具有不同的名称。


    zonecfg:lx-zone> select net physical=bge0
    zonecfg:lx-zone:net> set physical=e1000g0
    zonecfg:lx-zone:net> end
    
  9. 提交配置并退出。


    zonecfg:lx-zone> commit
    zonecfg:lx-zone> exit
    
  10. 在新主机上附加区域。

    • 附加区域,并进行验证检查。


      host2# zoneadm -z lx-zone attach
      

      当发生下列一种或两种情况时,将向系统管理员通知所需执行的操作:

      • 新计算机中不存在所需软件包和修补程序。

      • 计算机之间的软件级别不同。

    • 强制执行附加操作,而不执行验证。


      host2# zoneadm -z lx-zone attach -F
      

      注意 – 注意 –

      -F 选项可以在不进行验证的情况下强制执行 attach。这在某些情况下(例如在群集环境中或在执行备份和恢复操作时)很有用,但要求对系统进行托管区域所需的正确配置。不正确的配置以后可能会导致未定义的行为。


Procedure如何将 zonepath 移动到新主机

创建 zonepath 的归档的方法有很多种。例如,可以使用cpio(1)pax(1) 手册页中所述的 cpiopax 命令。

将归档传送至新主机的方法也有很多种。用于将 zonepath 从源主机传送到目标主机的机制取决于本地配置。在某些情况下(如 SAN),zonepath 数据实际上可能未移动。可能只需对 SAN 进行重新配置,便可在新主机上显示 zonepath。在其他情况下,可能要将 zonepath 写入磁带,再将磁带邮寄至新站点。

由于上述原因,此步骤不能自动执行。系统管理员必须选择最合适的方法来将 zonepath 移动到新主机。

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

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

  2. zonepath 移动到新主机。您可以使用本过程中介绍的方法,也可以使用您选择的其他方法。


示例 37–1 使用 tar 命令归档和移动 zonepath

  1. host1 上创建 zonepathtar 文件,并使用 sftp 命令将其传送到 host2


    host1# cd /export/zones
    host1# tar cf lx-zone.tar lx-zone
    host1# sftp host2
    Connecting to host2...
    Password:
    sftp> cd /export/zones
    sftp> put lx-zone.tar
    Uploading lx-zone.tar to /export/zones/lx-zone.tar
    sftp> quit
    
  2. host2上,解压缩 tar 文件。


    host2# cd /export/zones
    host2# tar xf lx-zone.tar
    

有关更多信息,请参见 sftp(1)tar(1)


故障排除

有关以下问题的疑难解答信息,请参见使用 zoneadm attach 操作解决问题

用户必须验证新计算机中的处理器类型是否受支持。有关更多信息,请参见关于迁移 lx 标记区域

Solaris 10 5/08:关于在执行迁移之前验证 lx 标记区域迁移

可以在将区域移动到新计算机之前使用“不执行”选项 -n 执行试验。

zoneadm detach 子命令与 -n 选项结合使用,可在运行的区域上生成清单,而不实际分离该区域。源系统中区域的状态不会改变。区域清单会被发送到 stdout。全局管理员可以将此输出定向到某一文件,或将此输出传输到远程命令以便立即在目标主机上进行验证。zoneadm attach 子命令与 -n 选项结合使用,可读取该清单并检验目标计算机是否具有托管区域所需的正确配置,而不实际执行附加。

在执行试验性附加之前,必在新主机上配置目标系统中的区域。

ProcedureSolaris 10 5/08:如何在执行迁移之前验证 lx 标记区域迁移

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

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

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

  2. 使用以下方法之一。

    • 在名为 lx-zone 的源主机上生成清单,并将输出传输到将立即验证目标主机的远程命令:


      global# zoneadm -z lx-zone detach -n | ssh remotehost zoneadm attach -n -
      

      行尾的连字符 () 为路径指定 stdin

    • 在名为 lx-zone 的源主机上生成清单,并将输出定向到某一文件:


      global# zoneadm -z lx-zone detach -n 
      

      如何将 zonepath 移动到新主机中所述将清单复制到新主机系统,并执行验证:


      global# zoneadm attach -n path_to_manifest
      

      路径可以是 ,以便指定 stdin

第 38 章 在 lx 标记区域中管理和运行应用程序(任务)

本章包含有关在 lx 标记区域中运行应用程序所需的材料。

关于维护支持的配置

在使用支持的 CentOS 或 Red Hat Enterprise Linux 分发安装区域时,就创建了一个支持的区域。如果向此区域中添加不同版本的软件包,则可能会创建一个不支持的标记区域。

升级分发版本和添加软件包

Procedure如何升级 CentOS 3.x 分发

要执行此过程,您必须是 lx 标记区域中的区域管理员。

  1. 使用 yum upgradeup2date 将 CentOS 3.x 分发升级到不同版本。

    有关说明,请参见位于 http://www.centos.org 的文档。

Procedure如何升级 Red Hat 3.x 分发

要执行此过程,您必须是 lx 标记区域中的区域管理员。

  1. 使用 up2date 将 Red Hat Enterprise Linux 3.x 分发更新到不同版本。

    有关说明,请参见位于 http://www.redhat.com 的文档。

Procedure如何升级软件包

要执行此过程,您必须是 lx 标记区域中的区域管理员。

  1. 要更新软件包,请使用以下方法之一。

    • yum update package_name

    • rpm -U package_name

使用 yumrpm

yum

rpm

如何在 lx 标记区域中安装应用程序

通过装入 CD 并运行安装程序来安装应用程序,就像在 Linux 系统中进行安装一样。本节对 lx 标记区域中典型的应用程序安装进行了说明。


提示 –

如果您知道将要使用 CD 或 DVD 在 lx 标记区域中安装应用程序,请在最初配置标记区域时,在全局区域内添加对 CD 或 DVD 介质的只读访问权限。请参见如何使用 CD 安装 MATLAB 7.2中的步骤 7。


关于 MATLAB

MATLAB 是一种可快速执行计算密集型任务的高级语言和交互式环境。该产品由 The MathWorks 开发。有关更多信息,请参见 http://www.mathworks.com

Procedure如何使用 CD 安装 MATLAB 7.2

  1. 获取 MATLAB 7.2 CD。

    MATLAB/Simulink 软件包中有三张 CD。简单的 MATLAB 安装只需要使用光盘 1 和光盘 3。

  2. 按照如何配置、检验和提交 lx 标记区域安装和引导 lx 标记区域中的说明创建和安装 lx 标记区域。

  3. 如果 Volume Management 文件系统未在全局区域中运行,则启动它。


    global# svcadm volfs enable
    
  4. 插入介质。

  5. 检查驱动器中的介质。


    global# volcheck
    
  6. 测试 CD 是否自动装入。


    global# ls /cdrom
    

    将显示以下类似信息:


    cdrom   cdrom1   mathworks_2006a1
  7. 在非全局区域中使用选项 ro,nodevices(只读并且无设备)来回送挂载文件系统。


    global# zonecfg -z lx-zone
    zonecfg:lx-zone> add fs
    zonecfg:lx-zone:fs> set dir=/cdrom
    zonecfg:lx-zone:fs> set special=/cdrom
    zonecfg:lx-zone:fs> set type=lofs
    zonecfg:lx-zone:fs> add options [ro,nodevices]
    zonecfg:lx-zone:fs> end
    zonecfg:lx-zone> commit
    zonecfg:lx-zone> exit
    
  8. 重新引导非全局区域。


    global# zoneadm -z lx-zone reboot
    
  9. 使用带有 -v 选项的 zoneadm list 命令来检验状态。


    global# zoneadm list -v
    

    将显示以下类似信息:


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     1  lx-zone  running      /export/home/lx-zone           lx         shared
  10. 登录到 lx 区域。


    global# zlogin lx-zone
    
  11. 检验 CD-ROM 挂载。


    lx-zone# ls /cdrom
    

    将显示以下类似信息:


    cdrom   cdrom1   mathworks_2006a1
  12. 按照 MATLAB 文档中的说明创建许可证文件。

  13. 按照产品安装指南中的介绍安装产品。


    lx-zone# /mnt/install
    
  14. 退出区域。


    lx-zone# exit
    

    提示 –

    您可能需要在非全局区域中保留 /cdrom 文件系统。挂载始终反映 CD-ROM 驱动器的当前内容,如果驱动器为空,则反映为一个空目录。


  15. (可选)如果想要从非全局区域中删除 /cdrom 文件系统,请使用以下过程。


    global# zonecfg -z lx-zone
    zonecfg:lx-zone> remove fs dir=/cdrom
    zonecfg:lx-zone> commit
    zonecfg:lx-zone> exit
    

Procedure如何使用 ISO 镜像安装 MATLAB 7.2

开始之前

请注意,此方法需要占用相当大的磁盘空间。

  1. 获取 MATLAB 7.2 CD。

    MATLAB/Simulink 软件包中有三张 CD。简单的 MATLAB 安装只需要使用光盘 1 和光盘 3。

  2. 按照如何配置、检验和提交 lx 标记区域安装和引导 lx 标记区域中的说明创建和安装 lx 标记区域。

  3. 将每张 CD 中的数据复制到 .iso 文件中。


    global# /usr/bin/dd if=/dev/rdsk/c1d0s2 of=disk1.iso
    

    上述命令可将第一张 CD 中的数据复制到文件 disk1.iso 中。可对第三张 CD 重复此操作,但使用不同的文件名,如 disk3.iso

  4. 从全局区域中,将第一个 .iso 文件按 lofi 方式挂载到 lx 区域。


    global# lofiadm -a /zpool/local/disk1.iso
    global# mount -F hsfs /dev/lofi/1 /zones/lx-zone/root/mnt
    
  5. 登录到 lx 区域。


    global# zlogin lx-zone
    
  6. 使用 X 转发来将显示重定向到您的桌面:


    lx-zone# ssh -X root@lx-zone
    
  7. 按照 MATLAB 文档中的说明创建许可证文件。

  8. 按照产品安装指南中的介绍安装产品。


    lx-zone# /mnt/install
    
  9. 当提示插入 CD 3 时,请返回全局区域终端窗口,然后挂载 disk3.iso 文件来替代第一个文件。


    global# umount /zones/lx-zone/root/mnt
    	global# lofiadm -d /dev/lofi/1
    	global# lofiadm -a /zpool/local/disk3.iso
    	global# mount -F hsfs /dev/lofi/1 /zones/lx-zone/root/mnt
    

    将完成安装。

备份 lx 标记区域

有关区域备份的信息,请参见关于备份安装了区域的 Solaris 系统确定在非全局区域中备份的内容关于恢复非全局区域恢复非全局区域

lx 标记区域中不支持的功能

lx 标记区域中只支持共享 IP 网络配置。

Linux 区域中不支持 chroot 命令。如果在某一进程中使用,则该进程将无法再访问其运行时所需的 Solaris 库。

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

您不能使用 zonecfg 命令的 fs 资源属性来添加本地 Linux 文件系统。