本章为 Solaris 10 6/06 发行版的新增内容。
有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》。
对于这些发行版,非全局区域的 zonepath 不应该驻留在 ZFS 上。此操作可能会导致修补问题,并可能会阻止系统升级到更高的 Solaris 10 更新发行版。
请注意,从 Solaris 10 10/08 发行版开始,非全局区域的根文件系统可以驻留在的 ZFS 上。Solaris Live Upgrade 现在可用于升级系统。
如果显示以下错误消息:
dladm: warning: cannot reset link property 'zone' on 'bge0': operation failed |
则表明尝试使用 dladm reset-linkprop 失败,请参阅如何使用 dladm reset-linkprop。正在运行的区域 excl 在使用该设备,这是在区域内通过执行 ifconfig bge0 plumb 分配的。
要重置值,请在区域内执行 ifconfig bge0 unplumb 过程,然后重新运行 dladm 命令。
首次引导非全局区域时文件系统分层结构内存在的文件表明文件系统数据由全局区域管理。安装非全局区域时,全局区域中的许多打包文件都复制到此区域内。这些文件必须直接驻留在 zonepath 下。如果文件驻留在区域管理员在磁盘设备上创建的文件系统下,或者驻留在添加到此区域的 ZFS 数据集下,则会出现打包和修补问题。
对于在本地区域文件系统中存储任何由全局区域管理的文件系统数据的问题,可以使用 ZFS 作为示例进行说明。如果已将 ZFS 数据集委托到非全局区域,则区域管理员不应使用此数据集来存储任何由全局区域管理的文件系统数据。否则,无法正确地修补或升级配置。
例如,已委托的 ZFS 数据集不应用作 /var 文件系统。Solaris 操作系统提供了将组件安装到 /var 的核心软件包。在进行升级或修补时,这些软件包必须访问 /var,如果 /var 挂载到委托的 ZFS 数据集,则无法对其进行访问。
支持在全局区域控制的某些分层结构下挂载文件系统。例如,如果全局区域中存在空的 /usr/local 目录,则区域管理员可以在此目录下挂载其他内容。
对于在修补或升级期间不需要访问的文件系统(例如非全局区域中的 /export),您可以使用委托的 ZFS 数据集。
如果无法破坏与区域关联的系统状态,则停止操作会中途失败。区域便会陷于中间状态,即介于正在运行和已安装状态之间。在此状态下,不存在任何活动的用户进程或内核线程,也无法创建它们。当停止操作失败时,您必须手动干预来完成此过程。
最常见的故障原因是系统无法卸载所有的文件系统。与破坏系统状态的传统 Solaris 系统关闭不同,区域一旦停止,就必须确保在引导区域或继续进行区域操作时没有执行任何挂载。即使 zoneadm 可确保区域中没有执行任何进程,但是如果全局区域中的进程在此区域中具有打开的文件,则卸载操作也会失败。请使用 proc(1)(请参见 pfiles)和 fuser(1M) 手册页中所述的工具来查找这些进程,并采取相应的操作。处理了这些进程之后,重新调用 zoneadm halt 应完全停止区域。
对于无法停止的区域,到 Solaris 10 10/09 发行版为止,您可通过使用 zoneadm attach -F 选项不进行验证而强制附加来迁移未分离的区域。目标系统必须正确配置以托管该区域。不正确的配置可能会导致未定义的行为。此外,这将导致无法了解区域内文件的状态。
如果区域的权限集包含不允许的权限、缺少必需权限或包含未知权限名称,则检验、准备或引导该区域的尝试都将失败,并将显示如下所示的错误消息:
zonecfg:zone5> set limitpriv="basic" . . . global# zoneadm -z zone5 boot required privilege "sys_mount" is missing from the zone's privilege set zoneadm: zone zone5 failed to verify |
如果在按照如何引导区域中的说明引导区域时看到以下消息:
# zoneadm -z my-zone boot zoneadm: zone 'my-zone': WARNING: hme0:1: no matching subnet found in netmasks(4) for 192.168.0.1; using default of 255.255.255.0. |
此消息只是警告,而命令已成功执行。此消息表明系统无法找到要用于在区域配置中指定的 IP 地址的 netmask。
要在后续重新引导时停止显示该警告,请确保在全局区域的 /etc/nsswitch.conf 文件中列出正确的 netmasks 数据库,并且至少有一个数据库包含要用于区域 my-zone 的子网和 netmasks。
例如,如果 /etc/inet/netmasks 文件和本地 NIS 数据库用于解析全局区域中的 netmasks,则 /etc/nsswitch.conf 的相应条目为:
netmasks: files nis
然后,可以将区域 my-zone 的子网和相应网络掩码信息添加到 /etc/inet/netmasks,供以后使用。
有关 netmasks 命令的更多信息,请参见 netmasks(4) 手册页。
目标系统上运行的下列必需的操作系统软件包和修补程序的版本必须与原始主机上安装的软件包和修补程序的版本相同。
在 inherit-pkg-dir 资源下提供文件的软件包
SUNW_PKG_ALLZONES=true 的软件包
如果原始主机和新主机之间的软件包和修补程序不同,则可能会显示以下类似信息:
host2# zoneadm -z my-zone attach These packages installed on the source system are inconsistent with this system: SUNWgnome-libs (2.6.0,REV=101.0.3.2005.12.06.20.27) version mismatch (2.6.0,REV=101.0.3.2005.12.19.21.22) SUNWudaplr (11.11,REV=2005.12.13.01.06) version mismatch (11.11,REV=2006.01.03.00.45) SUNWradpu320 (11.10.0,REV=2005.01.21.16.34) is not installed SUNWaudf (11.11,REV=2005.12.13.01.06) version mismatch (11.11,REV=2006.01.03.00.45) NCRos86r (11.10.0,REV=2005.01.17.23.31) is not installed These packages installed on this system were not installed on the source system: SUNWukspfw (11.11,REV=2006.01.03.00.45) was not installed SUNWsmcmd (1.0,REV=2005.12.14.01.53) was not installed These patches installed on the source system are inconsistent with this system: 120081 is not installed 118844 is not installed 118344 is not installed These patches installed on this system were not installed on the source system: 118669 was not installed 118668 was not installed 116299 was not installed |
要成功迁移区域,请使用下列方法之一:
要成功迁移区域,请在具有相同体系结构的系统上安装与原始主机上所运行的版本相同的 Solaris 发行版。
要成功迁移区域,请使用 zoneadm attach 的 -u 选项。
验证两个系统上的系统结构
host1# uname -a |
如果体系结构不同,使用 zoneadm attach 的 -u 选项以执行附加操作。
host2# zoneadm -z my-zone attach -u |
有关更多信息,请参见如何迁移非全局区域。
此问题已在 Solaris 10 8/07 发行版中得到更正。
如果使用 lofs fs 资源配置的所有非全局区域正在挂载 miniroot 中存在的目录,则系统可以通过标准升级从早期 Solaris 10 发行版升级到 Solaris 10 11/06 发行版。例如,对以 lofs 方式挂载的 /opt 目录进行升级不会出现任何问题。
但是,如果有任何非全局区域是通过非标准 lofs 挂载进行配置的(例如以 lofs 方式挂载的 /usr/local 目录),则会显示以下错误消息:
The zones upgrade failed and the system needs to be restored from backup. More details can be found in the file /var/sadm/install_data/upgrade_log on the upgrade root file system. |
尽管此错误消息表明,系统必须从备份恢复,但系统实际上是完好的,可以使用以下解决方法成功升级系统:
使用安装的 OS 重新引导系统。
重新配置区域,删除使用 lofs 类型定义的 fs 资源。
在删除这些资源之后,将系统升级到 Solaris 10 11/06。
升级后,可以再次重新配置区域,以恢复您删除的其他 fs 资源。