本章为 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:可减少修补时间的区域并行修补。