本章介绍如何在您的 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:在同一系统中克隆非全局区域。