BigAdmin System Administration Portal
如何使用 Solaris 实时更新升级带有非全局区域的 Solaris 10 操作系统
Print-friendly VersionPrint-friendly Version

Pallavi Madhusudhan、Arindam Sarkar,2007 年 11 月

本文说明如何使用 Solaris 实时更新升级安装了非全局区域的 Solaris 10 操作系统。


将 Solaris 实时更新用于非全局区域

Solaris 实时更新现在支持升级带有非全局区域的 Solaris 10 操作系统。Solaris 10 8/07 发行版包括一项“区域升级”功能,该功能增强了 Solaris 平台升级机制,从而全面支持系统上配置的所有非全局区域。该区域升级功能支持将 Solaris 实时更新用于非全局区域。

每个非全局区域均被 Solaris 实时更新和底层实用程序视为独立的 Solaris 实例。首先升级全局区域,然后逐个升级非全局区域。

注意:在执行任何安装、升级或修补过程之前,请确保完整备份系统。


针对 Solaris 实时更新的规划

在对运行 Solaris 10 8/07 发行版之前的任何版本的 Solaris 10 操作系统的系统进行升级之前,请安装 Solaris 实时更新软件包和修补程序。对 Solaris 10 系统进行的修补至少要达到 InfoDoc 72099 中列出的修补级别。根据 Solaris 10 系统版本的不同,您可能会发现其中的某些修补程序已经安装。

必需的软件包

要将系统升级到 Solaris 10 8/07 发行版,请从 Solaris 10 8/07 的映像安装 Solaris 实时更新软件包。升级之前,需要具备新的软件包 SUNWlucfg。Solaris 实时更新软件包包含现有的软件、新功能和错误修复。如果在使用 Solaris 实时更新之前,没有删除现有的软件包即在系统上安装了新的软件包,则在向目标发行版升级时可能会出现问题。新的软件包提供当前系统上的软件包中未提供的错误修复和功能。有关如何安装软件包的信息,请参见本文中的“如何安装必需的软件包”部分。

必需的修补程序

安装软件包后,请应用 InfoDoc 72099 中列出的修补程序,使用 Solaris 实时更新执行升级必须具备这些修补程序。如果要将修补程序存储在本地磁盘上,请创建 /var/tmp/lupatches 目录并将修补程序下载到该目录中。

安装修补程序之前,请确保满足以下条件:

  • 以单用户模式安装内核修补程序。

  • 以单用户模式安装所有修补程序(如果修补程序自述文件指定这样做)。

  • 所有区域都处于已安装状态。

  • 所有区域路径都可以访问。如果区域路径位于其他文件系统上,则不会以单用户模式挂载该文件系统。挂载特定的文件系统或使用 mountall 命令。

InfoDoc 72099 中列出的某些修补程序特定于 Solaris 实时更新和区域。下载并安装这些修补程序即可完成以下任务:

  • 将现有的升级软件更新为能够感知区域的软件,从而使该软件能够以可接受的性能级别升级非全局区域

  • 更新 Solaris 实时更新软件,从而使该软件能够全面管理非全局区域的升级

要使系统达到将操作系统升级到 Solaris 10 8/07 发行版所必需的修补级别,必须具备 InfoDoc 72099 中列出的其余修补程序。InfoDoc 72099 中列出的所有修补程序都是执行升级所必需的最低修订版的修补程序。用户可以安装列出的修补程序修订版或更高修订版,以便进行升级。

如何通过 Solaris 实时更新来管理共享文件系统

当在引导环境之间共享的文件系统中出现非全局区域时,Solaris 实时更新可识别这些区域。升级与活动引导环境共享文件系统的引导环境副本时,所有共享的文件系统都通过只读 lofs 挂载进行挂载。这可以防止升级操作破坏共享相同文件系统的活动引导环境。

管理员对引导环境的访问

使用 lucreate 创建引导环境时,全局区域管理员可以访问当前引导环境和所有非活动引导环境。存在非全局区域时,全局区域管理员可以访问所有引导环境。

但是,每个非全局区域管理员只能访问当前引导环境中包含该特定非全局区域的文件系统的那一部分。为使非全局区域管理员能够访问某个非活动引导环境中该区域的文件系统空间,全局区域管理员应在全局区域中挂载该非活动引导环境。然后,全局区域管理员可以通过对 lumount(1M) 和 luumount(1M) 命令的扩展使所必需的文件系统空间可用于非全局区域管理员。

如何安装必需的软件包

执行以下步骤,安装必需的 Solaris 实时更新软件包。

  1. 使用 pkgrm 命令删除现有的 Solaris 实时更新软件包。

    三个 Solaris 实时更新软件包(SUNWlucfg、SUNWlur 和 SUNWluu)构成了使用 Solaris 实时更新进行升级所需的软件。这些软件包包含现有的软件、新功能和错误修复。删除现有的软件包,然后在系统上安装新的软件包:

    # pkgrm SUNWlucfg SUNWluu SUNWlur

  2. 安装 Solaris 实时更新软件包。

    下面提供了使用 liveupgrade20 命令安装软件包的步骤。要使用 liveupgrade20 命令,需要安装 Java。如果您的系统中没有安装 Java,则需要使用 pkgadd 命令逐个安装这些软件包。

    1. 插入 Solaris DVD 或 CD。

      此介质包含适用于要升级到的发行版的软件包。

    2. 转到安装程序目录。
      • 如果您使用的是 Solaris 操作系统 DVD,请根据具体情况转到以下目录:

        • 对于基于 SPARC 的系统:

          #cd /cdrom/cdrom0/s0/Solaris_10/Tools/Installers

        • 对于基于 x86 的系统:

          # cd /cdrom/cdrom0/Solaris_10/Tools/Installers

      • 如果您使用的是 Solaris 软件(2 张 CD),请运行安装程序。

        % ./installer

    3. 运行安装程序。

      # ./liveupgrade20 -noconsole - nodisplay

      -noconsole-nodisplay 选项可阻止显示字符用户界面 (character user interface, CUI)。

      注意:Solaris 实时更新 CUI 不再受支持。

    4. 检验是否成功安装了这些软件包。

      # pkgchk -v SUNWlucfg SUNWlur SUNWluu

如何安装 Solaris 实时更新修补程序并使用 Solaris 实时更新升级系统

  1. 设置测试系统。

    创建并引导稀疏根非全局区域和完全根非全局区域,即 zone1zone2。有关如何创建和引导非全局区域的说明,请参见《系统管理指南:Solaris Containers - 资源管理和 Solaris Zones》。

  2. 安装 InfoDoc 72099 中列出的修补程序。

    转到 /var/tmp/lupatches 目录,并按照 InfoDoc 72099 中列出的相同顺序安装修补程序。

    #cd /var/tmp/lupatches
    #patchadd patch_id

    patch_id 是修补程序编号。

  3. 为所有非全局区域指定 UUID。

    为确保所有非全局区域都包含通用唯一标识符 (universally unique identifier, UUID),请对所有区域执行 detachattachboot

    #zoneadm -z zone1 detach    	
    #zoneadm -z zone2 detach    	
    #zoneadm -z zone1 attach    	
    #zoneadm -z zone2 attach    	
    #zoneadm -z zone1 boot    	
    #zoneadm -z zone2 boot     	

    键入 zoneadm list -p 命令,检验是否为所有区域指定了 UUID。

    #zoneadm list -p    	
    0:global:running:/::native:shared    	
    16:zone1:running:/space/zone1:559ca0a2-d7c5-6a61-e64c-	  bec99bb0910c:native:shared    	
    17:zone2:running:/space/zone2:d3e6bc88-3533-6209-f25d-	  e811e334295a:native:shared    	
  4. 至少登录一次非全局区域。

    登录的目的是确保区域已启用且处于运行状态。登录每个区域后,再从该区域退出。

    #zlogin zone1    	
    #exit    	
    #zlogin zone2    	
    #exit    	
  5. 创建新的引导环境。

    将活动引导环境标记为 BE1,并将新的引导环境标记为 BE2。为新的引导环境 BE2 创建两个文件系统。

    #lucreate -c BE1 -n BE2 -m /:/dev/dsk/c1t0d0s4:ufs  -m /space:/dev/dsk/c1t0d0s5:ufs
    -c BE1

    为当前活动引导环境指定名称 BE1

    -n BE2

    指示新的引导环境的名称。

    -m /:/dev/dsk/c1t0d0s4:ufs

    vfstab 中指定新的引导环境的文件系统配置。在这里,根 (/) 文件系统位于 c1t0d0s4 上。

    -m /space:/dev/dsk/c1t0d0s5:ufs

    c1t0d0s5 上创建第二个文件系统。区域根存在于 /space 中。

  6. 激活新的引导环境。

    要检验新的引导环境是否可以激活以及是否处于运行状态,请键入 luactivate 命令。

    #luactivate BE2

    重新引导系统。

    #init 6
  7. 从新的引导环境重新登录到区域。

    重新登录的目的是确保区域在新的引导环境中正常发挥作用。

    #zoneadm -z zone1 boot    	
    #zoneadm -z zone2 boot    	
    #zlogin zone1    	
    #exit    	
    #zlogin zone2    	
    #exit    	
  8. 恢复到原始引导环境。
    #luactivate BE1
    #init 6
  9. 检验原始引导环境中的区域的状态。

    确保区域处于运行状态。

    #zoneadm -z zone1 boot
    #zoneadm -z zone2 boot
    #zoneadm list -cv	
    ID NAME             STATUS     PATH                           BRAND    IP        	
    0 global           running    /                              native   shared    	
    1 zone1            running    /space/zone1                   native   shared    	
    2 zone2            running    /space/zone2                   native   shared    	
    
    #zoneadm list -p    	
    0:global:running:/::native:shared    	
    1:zone1:running:/space/zone1:559ca0a2-d7c5-6a61-e64c-	bec99bb0910c:native:shared    	
    2:zone2:running:/space/zone2:d3e6bc88-3533-6209-f25d-	e811e334295a:native:shared
  10. 升级新的引导环境。

    #luupgrade -u -n new-BE -s solaris-image-path

    luupgrade -u

    升级引导环境中的操作系统

    -n new-BE

    要升级的引导环境的名称

    -s solaris-image-path

    指定 Solaris 映像路径

    例如:

    #luupgrade -u -n BE2 -s /net/ins3525-svr/export2/s10u4/dvds/latest
    
    159376 blocks
    miniroot file system is <lofs>
    Mounting miniroot at </net/ins3525-svr/export2/s10u4/dvds/latest/Solaris_10/Tools/Boot>
    Validating the contents of the media </net/ins3525-	svr/export2/s10u4/dvds/latest>.
    The media is a standard Solaris media.
    The media contains an operating system upgrade image.
    The media contains <Solaris> version <10>.
    Constructing upgrade profile to use.
    Locating the operating system upgrade program.
    Checking for existence of previously scheduled Live Upgrade requests.
    Creating upgrade profile for BE <BE2>.
    Determining packages to install or upgrade for BE <BE2>.
    Performing the operating system upgrade of the BE <BE2>.
    CAUTION: Interrupting this process may leave the boot environment unstable 
    or unbootable.
    Upgrading Solaris: 100% completed
    Installation of the packages from this media is complete.
    Updating package information on boot environment <BE2>.
    Package information successfully updated on boot environment <BE2>.
    Adding operating system patches to the BE <BE2>.
    The operating system patch installation is complete.
    INFORMATION: The file </var/sadm/system/logs/upgrade_log> on boot 
    environment <BE2> contains a log of the upgrade operation.
    INFORMATION: The file </var/sadm/system/data/upgrade_cleanup> on boot 
    environment <BE2> contains a log of cleanup operations required.
    WARNING: <1> packages failed to install properly on boot environment <BE2>.
    INFORMATION: The file </var/sadm/system/data/upgrade_failed_pkgadds> on
    boot environment <BE2> contains a list of packages that failed to upgrade 
    or install properly.
    INFORMATION: Review the files listed above. Remember that all of the files 
    are located on boot environment <BE2>. Before you activate boot 
    environment <BE2>, determine if any additional system maintenance is 
    required or if additional media of the software distribution must be 
    installed.
    The Solaris upgrade of the boot environment <BE2> is partially complete.
  11. (可选)要解决任何问题,请使用日志文件。

    升级过程的输出文件和结果存储在许多日志文件中。这些文件可帮助确定遇到的任何问题以及在升级后是否有必要执行任何清除操作。日志文件存储在全局区域中,全局区域管理员可以访问这些日志文件。以下示例展示了含有某些条目的样例日志文件:

    • /var/sadm/system/logs/upgrade_cleanup

    • /var/sadm/system/logs/upgrade_log

      下面是全局区域的 upgrade_log 文件中的一个样例条目:

      Doing pkgadd of SUNWcsu to /
      29329 blocks
      Doing pkgadd of SUNWcsu
      
      Installation of SUNWcsu was successful

      下面是非全局区域的 upgrade_log 文件中的一个样例条目:

      Doing pkgadd of SUNWcsu to /
      31722 blocks
      
      Installation of SUNWcsu was successful.
      Installation of SUNWcsu on zone <SUNWlu-zone1> was successful.
      Installation of SUNWcsu on zone <SUNWlu-zone2> was successful

      下面是非全局区域的 upgrade_log 文件中的一个故障条目样例:

      Removal of SUNWgttf from zone <SUNWlu-zone1> failed.

    注意:Solaris 实时更新与 VxVM 不兼容。应将 Solaris 实时更新与 Solaris 卷管理器一起使用。

  12. 确保成功升级新的引导环境。

    成功完成 luupgrade 命令后,请激活 BE2 并检验是否正确升级了所有区域。

    注意:请忽略控制台上的以下消息。这是一个已知问题。

    Sep 12 04:29:32 inetd[515]: Failed to update state of instance
    svc:/network/rpc-100083_1/  rpc_tcp:default in repository: entity not found
    Sep 12 04:29:32 inetd[515]: Failed to update state of instance
    svc:/network/rpc-100083_1/  rpc_tcp:default in repository: No such file or directory
    Sep 12 04:29:32 inetd[515]: Failed to update state of instance
    svc:/network/rpc-100068_2-5/   rpc_udp:default in repository: entity not found
    Sep 12 04:29:32 inetd[515]: Failed to update state of instance
    svc:/network/rpc-100068_2-5/  rpc_udp:default in repository: No such file or directory

在何处可以找到有关 Solaris 实时更新的更多信息

表 1 Solaris 实时更新参考
说明
更多信息
《Solaris 10 8/07 安装指南:Solaris 实时更新和升级规划》中包含使用此工具时需要了解的所有内容。
有关使用 Solaris 实时更新进行修补的更多信息,请参见:
在 Sun 推出的 Solaris 10 1/06 发行版中包含一个新的修补工具 Sun Update Connection。此工具可以分析系统,然后应用适当的修补程序。2006 年 9 月发行的此工具集的 1.0.8 版本提供了将此工具与 Solaris 实时更新结合使用所需的各种选项。
“修补最佳做法”Web 站点提供了有关修补 Solaris 操作系统的许多其他常见问题解答、文章和信息。
支持站点
《系统管理指南:Solaris Containers - 资源管理和 Solaris Zones》指南中包含有关 Solaris Zones 的信息。
讨论
Sun 培训课程:
  • 转换为 Solaris 10 操作系统 (VC-SA-210-S10)

  • 适用于经验丰富的 Solaris 系统管理员的 Solaris 10 功能 (SA-225-S10)


Comments (latest comments first)

Discuss and comment on this resource in the BigAdmin Wiki

Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin