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

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

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

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

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

区域安装(任务图)

任务 

说明 

参考 

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

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

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

安装已配置的区域。 

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

如何安装已配置的区域

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

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

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

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

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

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

引导区域。 

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

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

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

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

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

安装和引导区域

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

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

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

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

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

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

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


    global# zoneadm -z my-zone verify
    

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


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

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

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

Procedure如何安装已配置的区域

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

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

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

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


    global# zoneadm -z my-zone install
    

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

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


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

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


      global# zoneadm -z my-zone uninstall
      

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

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


    global# zoneadm list -iv
    

    将显示以下类似信息:


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

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

接下来的操作

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

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

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

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


    global# zoneadm list -p
    

    将显示以下类似信息:


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

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


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

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


关于 UUID

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

另请参见

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

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

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

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

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

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

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


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


    global# zoneadm list -iv
    

    将显示以下类似信息:


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

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


注 –

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


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

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

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

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

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

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

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


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


    global# zoneadm list -v
    

    将显示以下类似信息:


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

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

Procedure如何引导区域

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


提示 –

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

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


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

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

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

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


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


    global# zoneadm list -v
    

    将显示以下类似信息:


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

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

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


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

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


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

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


my-zone# reboot -- -m verbose

故障排除

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

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

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

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

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

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


    global# zoneadm -z my-zone boot -s
    

下一步执行的操作

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

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

任务 

说明 

参考 

停止区域。 

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

如何停止区域

重新引导区域。 

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

如何重新引导区域

卸载区域。 

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

如何卸载区域

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

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

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

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

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

从系统中删除非全局区域

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

Procedure如何停止区域

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

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

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

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

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


    global# zoneadm list -v
    

    将显示以下类似信息:


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


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


    global# zoneadm list -iv
    

    将显示以下类似信息:


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


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

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

Procedure如何重新引导区域

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

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

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

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


    global# zoneadm list -v
    

    将显示以下类似信息:


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


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


    global# zoneadm list -v
    

    将显示以下类似信息:


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

    提示 –

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


Procedure如何卸载区域


注意 – 注意 –

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


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

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

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

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

  2. 列出系统上的区域。


    global# zoneadm list -v
    

    将显示以下类似信息:


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

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


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


    global# zoneadm list -v
    

    将显示以下类似信息:


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

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

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

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

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

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

Procedure如何克隆区域

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

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

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

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

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


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


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

    注 –

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


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

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


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


    global# zoneadm -z zone1 clone my-zone
    

    系统将显示:


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

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


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


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

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

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

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

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

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

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

  2. 配置区域 zone2

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


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

    系统将显示:


    Cloning snapshot zeepool/zones/my-zone@SUNWzone1

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

  4. 列出系统上的区域。


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /zeepool/zones/my-zone         native     shared
     -  zone1    installed    /zeepool/zones/zone1           native     shared
     -  zone2    installed    /zeepool/zones/zone2           native     shared

ProcedureSolaris 10 5/09:如何使用复制代替 ZFS 克隆

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

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

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

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

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


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

从系统中删除非全局区域

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

Procedure如何删除非全局区域

  1. 关闭区域 my-zone


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


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


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


    global# zoneadm list -iv
    

    将显示以下类似信息:


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