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

第 23 章 移动和迁移非全局区域(任务)

本章为 Solaris 10 11/06 发行版的新增内容。后续发行版中还添加了其他功能。

本章介绍如何:

从 Solaris 10 10/08 发行版开始,如果新主机具有相同版本或更高版本的与区域有关的软件包及关联修补程序,则使用带有 -u 选项的 zoneadm attach 可更新软件包的最小集合以使非全局区域在新主机上可用。如果新主机同时具有与源主机相比较高版本和较低版本的修补程序,那么在附加操作中不允许更新。

带有 -u 选项的 zoneadm attach 也启用了计算机类之间的迁移,例如从 sun4usun4v

从 Solaris 10 9/10 发行版开始,使用带有 -U 选项的 zoneadm attach 可更新区域的所有软件包,以便这些软件包匹配在此主机上新安装的非全局区域中查看的信息。任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并保留原样。此选项也可启用计算机类之间的自动迁移,例如从 sun4usun4v

作为正常修补的备选,该区域可在全局区域修补时分离,然后使用 -U 选项重新附加,以匹配全局区域的修补程序级别。

有关移动和迁移 lx 标记区域的信息,请参见第 37 章

Solaris 10 11/06:移动非全局区域

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

Procedure如何移动区域

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

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

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

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


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


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


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

Solaris 10 11/06:将非全局区域迁移到其他计算机

请注意,使用 Solaris 10 5/08 发行版时,可以在将区域实际移动到其他计算机之前执行区域迁移试验。有关更多信息,请参见Solaris 10 5/08:关于在执行迁移之前验证区域迁移

关于迁移区域

自 Solaris 10 11/06 发行版以来,本节添加了新信息。

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

以下限制适用于区域迁移:

要检验 Solaris 发行版本和计算机体系结构,请键入:


#uname -m

zoneadm detach 进程用于创建在其他系统上附加区域所需的信息。zoneadm attach 进程用于检验目标计算机是否具有托管区域所需的正确配置。

由于可以通过多种方式来使 zonepath 在新主机上可用,因此 zonepath 从一个系统到另一个系统的实际移动是由全局管理员执行的手动进程。

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

Procedure如何迁移非全局区域

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

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

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

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


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


    host1# zoneadm -z my-zone detach
    

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

  4. my-zonezonepath 移动到新主机。

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

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


    host2# zonecfg -z my-zone
    

    您会看到以下系统消息:


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


    zonecfg:my-zone> create -a /export/zones/my-zone
    
  7. (可选)查看配置。


    zonecfg:my-zone> info
    zonename: my-zone
    zonepath: /export/zones/my-zone
    autoboot: false
    pool:
    inherit-pkg-dir:
             dir: /lib
    inherit-pkg-dir:
             dir: /platform
    inherit-pkg-dir:
             dir: /sbin
    inherit-pkg-dir:
             dir: /usr
    net:
             address: 192.168.0.90
             physical: bge0
  8. 对配置进行所需的任何调整。

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


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


    zonecfg:my-zone> commit
    zonecfg:my-zone> exit
    
  10. 使用下列方法之一在新主机上附加区域。

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


      host2# zoneadm -z my-zone attach
      

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

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

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

    • Solaris 10 10/08:附加区域,并进行验证检查,更新区域以匹配运行更高版本的相关软件包或在附加时具有不同计算机类的主机。


      host2# zoneadm -z my-zone attach -u
      

      提示 –

      Solaris 10 10/08:如果源系统运行的是较旧版本的 Solaris 系统,分离区域后它可能不会生成正确的软件包列表。要确保在目标上生成正确的软件包列表,必须从 zonepath 中删除 SUNWdetached.xml 文件。删除此文件将造成新软件包列表由目标系统生成。

      在 Solaris 10 5/09 及更高发行版中,则不必这样做。


    • Solaris 10 9/10:附加区域,并进行验证检查,同时更新该区域的所有软件包,以便这些软件包匹配在此主机上新安装的非全局区域中查看的信息。任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并保留原样。


      host2# zoneadm -z my-zone attach -U
      
    • Solaris 10 5/09 及更高版本:也会在附加过程中使用 -b 选项来回退指定的修补程序(正式或 IDR)。


      host2# zoneadm -z my-zone attach -u -b IDR246802-01 -b 123456-08
      

      请注意,可以独立于 -u- U 选项来使用 -b 选项。

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


      host2# zoneadm -z my-zone attach -F
      

      注意 – 注意 –

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


Procedure如何将 zonepath 移动到新主机

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

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

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

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

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

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


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

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


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


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

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


故障排除

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

接下来的操作

如果已复制数据而未重新配置 SAN,那么即使该区域现在处于已配置状态,zonepath 数据在源主机上也仍然可见。您可以在将数据移动到新主机后从源主机上手动删除 zonepath,也可以将该区域重新附加到源主机,并使用 zoneadm uninstall 命令删除 zonepath

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

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

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

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

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

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

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

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

  2. 使用以下方法之一。

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


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

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

      验证结果是源主机屏幕的输出,为 stdout

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


      global# zoneadm -z my-zone detach -n > filename
      

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


      global# zoneadm attach -n path_to_manifest
      

      路径可以是 ,以便指定 stdin

从不可用的计算机上迁移区域

托管本地 Solaris 区域的计算机可能会变得不可用。但是,如果该区域所在的存储器(如 SAN)仍然可用,那么仍可以将区域成功迁移到新主机。可将区域的 zonepath 移动到新主机。在某些情况下(如 SAN),zonepath 数据实际上可能未移动。可能只需对 SAN 进行重新配置,便可在新主机上显示 zonepath。由于没有正确分离区域,因此必须首先使用 zonecfg 命令在新主机上创建该区域。完成此操作后,在新主机上附加该区域。尽管新主机将告知没有正确分离区域,但系统仍将尝试附加。

执行此任务的过程在如何迁移非全局区域的步骤 4 到 8 中介绍。另请参见如何将 zonepath 移动到新主机

将附加时更新 (Update on Attach) 用作修补解决方案

开发用于将区域迁移到不同系统的附加时更新还可以用于修补区域。此方法使全局区域能够更快可用。然后,系统管理员可以控制先进行更新的区域,并使这些区域在更新和引导重要性较低的区域之前运行。

以下过程更新所有修补程序以便这些区域如同系统上新安装的区域一样。

  1. 将修补程序包应用到全局区域之前,请分离所有的非全局区域。

  2. 将修补程序包应用到全局区域。

  3. 在应用修补程序包并重新引导系统后,请使用带有 -U 选项的 zoneadm attach 命令,以使非全局区域达到与全局区域相同的修补程序级别。

任何在该区域内安装但未在全局区域中安装的软件包均将被忽略并且没有影响。

有关使用 patchadd 实用程序的快速修补解决方案的信息,请参见Solaris 10 10/09:可减少修补时间的区域并行修补