Oracle Solaris 10 9/10 安装指南:Solaris Live 升级和升级规划

第 8 章 在安装了非全局区域的系统中升级 Solaris OS

本章介绍如何使用 Solaris Live Upgrade 升级安装了非全局区域的系统。


注 –

本章介绍针对 UFS 文件系统的 Solaris Live Upgrade。有关将包含非全局区域的 UFS 文件系统迁移到 ZFS 根池的过程,请参见第 14 章


本章包含以下几节:

在安装了非全局区域的情况下使用 Solaris Live Upgrade 进行升级(概述)

从 Solaris Solaris 10 8/07 发行版开始,可以使用 Solaris Live Upgrade 升级或修补包含非全局区域的系统。如果您的系统包含非全局区域,建议使用 Solaris Live Upgrade 作为升级程序或使用 Solaris Live Upgrade 来添加修补程序。其他升级程序可能需要较长的升级时间,这是因为完成升级所需的时间随安装的非全局区域数量呈线性增加。如果要使用 Solaris Live Upgrade 修补系统,则不必将系统转入单用户模式,这样可以最大程度地延长系统的正常运行时间。下面的列表对为了适应已安装非全局区域的系统而所做的更改进行了汇总。

了解 Solaris Zones 和 Solaris Live Upgrade

Solaris Zones 分区技术用于虚拟化操作系统服务,并提供安全的隔离环境以运行应用程序。非全局区域是在 Solaris OS 的单个实例(全局区域)中创建的虚拟化操作系统环境。在创建非全局区域时,会构建一个应用程序执行环境,其中的进程与系统的其余部分隔离。

Solaris Live Upgrade 是一项机制,可将当前运行的系统复制到新的片上。在安装非全局区域时,它们可随全局区域的文件系统一起复制到非活动引导环境中。

图 8–1 中显示了随全局区域文件系统一起复制到非活动引导环境中的非全局区域。

图 8–1 创建引导环境-复制非全局区域

文中对此图例进行了说明。

图 8–2 显示已将一个非全局区域复制到非活动引导环境中。

图 8–2 创建引导环境-从非全局区域复制共享文件系统

文中对此图例进行了说明。

将 Solaris Live Upgrade 用于非全局区域的原则(规划)

非全局区域使用规划包含下文所述限制。

表 8–1 在安装了非全局区域情况下进行升级时的限制

问题 

说明 

在安装了区域的系统上使用 Solaris Live Upgrade 时,应考虑这些问题。在 lucreatelumount 操作期间应避免区域状态转换,这一点很关键。

  • 在使用 lucreate 命令创建非活动引导环境时,如果给定非全局区域未运行,则在 lucreate 操作完成之前,无法引导该区域。

  • 在使用 lucreate 命令创建非活动引导环境时,如果给定非全局区域正在运行,则在 lucreate 操作完成之前,无法停止或重新引导该区域。

  • 在使用 lumount 命令挂载非活动引导环境时,虽然在 lumount 操作之前已在运行的区域可以继续运行,但是不能引导或重新引导非全局区域。

  • 由于非全局区域管理员和全局区域管理员均可控制非全局区域,因此为了防止任何交互操作,应在 lucreatelumount 操作期间停止所有区域。

当全局区域管理员没有向非全局区域管理员通知使用 Solaris Live Upgrade 进行升级时,会发生问题。 

当 Solaris Live Upgrade 操作正在执行时,非全局区域管理员的参与很关键。升级会影响管理员的工作,管理员将忙于处理因升级而带来的各种变化。区域管理员应确保任何本地软件包在整个操作序列期间都保持稳定,处理所有升级后任务(如配置文件调整),通常还应针对系统故障做出安排。  

例如,如果当全局区域管理员正在使用 lucreate 命令复制文件系统时,非全局区域管理员添加软件包,新的软件包不会与文件系统一起复制,并且非全局区域管理员并不知道此问题。

在独立的文件系统中具有非全局区域的情况下创建引导环境

从当前运行的引导环境中创建新引导环境的操作与早期发行版大体相同,但有一个例外。您可以在非全局区域中为共享文件系统指定目标磁盘片。在以下情况下会发生此例外:

为避免在新的引导环境中共享该独立的文件系统,lucreate 命令允许为非全局区域的独立文件系统指定目标片。-m 选项的参数具有新的可选字段 zonename。该新字段将非全局区域的单独文件系统放在新引导环境的单独片上。有关使用独立文件系统设置非全局区域的更多信息,请参见 zonecfg(1M)


注 –

缺省情况下,除关键文件系统(根 (/)、/usr/opt 文件系统)外的任意文件系统均可在当前引导环境与新的引导环境之间共享。更新活动引导环境中的可共享文件也会更新非活动引导环境中的数据。例如,/export 文件系统即为一个共享文件系统。如果使用 -m 选项和 zonename 选项,则非全局区域的文件系统将被复制到独立的片上,并且数据不会被共享。该选项可防止利用 zonecfg add fs 命令创建的非全局区域在引导环境之间共享。


在安装了非全局区域的情况下创建并升级引导环境(任务)

下面各节提供了在安装了非全局区域的情况下进行升级的逐步过程。

Procedure在系统上安装了非全局区域的情况下使用 Solaris Live Upgrade 进行升级(任务)

以下过程提供了使用 Solaris Live Upgrade 对安装了非全局区域的系统进行升级的详细说明。

  1. 在第一次运行 Solaris Live Upgrade 之前,必须从安装介质安装最新的 Solaris Live Upgrade 软件包并安装 SunSolve 信息文档 206844 中列出的修补程序。在 SunSolve Web 站点上搜索信息文档 206844(以前为 72099)。

    最新的软件包以及修补程序可确保您具有该发行版的所有最新错误修复和新增功能。在继续创建新的引导环境之前,请确保安装了所有与您的系统相关的修补程序。

    下列子步骤说明了 SunSolve 信息文档 206844 中的步骤。

    1. 成为超级用户或承担等效角色。


      注 –

      角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”


    2. 按照 SunSolve Web 站点上信息文档 206844 中的说明删除和添加 Solaris Live Upgrade 软件包。

      下列说明汇总了信息文档中有关删除和添加软件包的步骤。

      • 删除现有的 Solaris Live Upgrade 软件包。

        三个 Solaris Live Upgrade 软件包(SUNWluuSUNWlurSUNWlucfg)组成了使用 Solaris Live Upgrade 进行升级或修补所需的软件。这些软件包包含现有的软件、新增功能和错误修复。如果在使用 Solaris Live Upgrade 前未删除现有软件包并在系统上安装新的软件包,则升级或修补到目标发行版将会失败。从 Solaris 10 8/07 发行版开始,新增了 SUMWlucfg 软件包。如果您要从 Solaris 10 8/07 之前的发行版使用 Solaris Live Upgrade 软件包,则不需要删除此软件包。


        # pkgrm SUNWlucfg SUNWluu SUNWlur
        
      • 安装新的 Solaris Live Upgrade 软件包。

        可以使用安装 DVD 或 CD 上的 liveupgrade20 命令安装软件包。liveupgrade20 命令要求有 Java 软件。如果系统没有安装 Java 软件,则需要使用 pkgadd 命令安装软件包。有关更多信息,请参见 SunSolve 信息文档。

        • 如果您使用的是 Solaris 操作系统 DVD,请更改目录并运行安装程序。

          • 更改目录。


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

            注 –

            对于基于 SPARC 的系统,Solaris 10 10/08 之前的发行版的安装程序的路径是不同的。


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

          • 运行安装程序。


            # ./liveupgrade20
            

            将会显示 Solaris 安装程序 GUI。如果您使用的是脚本,可以使用 -noconsole-nodisplay 选项阻止显示 GUI。

        • 如果您使用的是 Solaris Software – 2 CD,可以在不更改路径的情况下运行安装程序。


          % ./installer
          
        • 验证已成功安装软件包。


          # pkgchk -v SUNWlucfg SUNWlur SUNWluu
          
    3. 如果您要在本地磁盘上存储修补程序,请创建一个目录,如 /var/tmp/lupatches

    4. 从 SunSolve Web 站点获取修补程序列表。

    5. 转至修补程序目录,如本示例中所示。


      # cd /var/tmp/lupatches
      
    6. 安装修补程序。


      # patchadd -M  path-to-patchespatch-id  patch-id
      

      path-to-patches 是修补程序目录的路径,例如 /var/tmp/lupatchespatch-id 是修补程序号。用空格分隔多个修补程序名称。


      注 –

      需要按照信息文档 206844 指定的顺序应用修补程序。


    7. 根据需要重新引导系统。某些修补程序需要重新引导后才能生效。

      仅限 x86:需要重新引导系统。否则,Solaris Live Upgrade 会失败。


      # init 6
      

      您现在有了成功创建新的引导环境所需的软件包和修补程序。

  2. 创建新引导环境。


    # lucreate [-A 'BE_description'] [-c BE_name] \
     -m mountpoint:device[,metadevice]:fs_options[:zonename] [-m ...] -n BE_name
    
    -n BE_name

    要创建的引导环境的名称。BE_name 在系统中必须是唯一的。

    -A 'BE_description'

    (可选)允许创建与引导环境名称 (BE_name) 相关联的引导环境描述。描述的长度不受限制,并且可以包含任何字符。

    -c BE_name

    将名称 BE_name 指定到活动的引导环境。该选项不是必需的,仅在首次创建引导环境时使用。如果是首次运行 lucreate 命令且省略了 -c 选项,本软件将为您创建一个缺省名称。

    -m mountpoint:device[,metadevice]:fs_options [:zonename] [-m ...]

    指定 vfstab 中新引导环境的文件系统配置。作为变量指定给 -m 选项的文件系统可以位于同一磁盘上,也可以分布在多个磁盘上。您可以根据需要多次使用此选项,以创建所需个数的文件系统。

    • mountpoint 可以是任何有效的挂载点,也可以是表示交换分区的 –(连字符)。

    • device 字段可以是以下内容之一:

      • 磁盘设备的名称格式为 /dev/dsk/c wtxdys z

      • Solaris 卷管理器卷的名称,格式为 /dev/md/dsk/dnum

      • Veritas 卷管理器卷的名称,格式为 /dev/md/vxfs/dsk/dnum

      • 关键字 merged,表示指定挂载点处的文件系统将与其父文件系统合并。

    • fs_options 字段可以是以下内容之一:

      • ufs,表示 UFS 文件系统。

      • vxfs,表示 Veritas 文件系统。

      • swap,表示交换卷。交换挂载点必须为 –(连字符)。

      • 对于用作逻辑设备(镜像)的文件系统,可用多个关键字指定要对这些文件系统应用的操作。这些关键字可以创建逻辑设备,可以更改逻辑设备的配置,还可以删除逻辑设备。有关这些关键字的描述,请参见在 RAID-1 卷(镜像)上创建引导环境

    • zonename 指定将非全局区域的独立文件系统放置在独立的片上。如果区域的独立文件系统位于共享文件系统(如 /zone1/root/export)中,请使用该选项。该选项可将区域的独立文件系统复制到新的片上,并防止共享该文件系统。使用 zonecfg add fs 命令创建独立文件系统。

    在以下示例中,创建了一个名为 newbe 的新引导环境。根 (/) 文件系统会放置在 c0t1d0s4 中。当前引导环境中的所有非全局区域都会被复制到新的引导环境中。会在 c0t1d0s1 中为名为 zone1 的非全局区域提供一个独立的挂载点。


    注 –

    缺省情况下,除关键文件系统(根 (/)、/usr/opt 文件系统)外的任意文件系统均可在当前引导环境与新的引导环境之间共享。/export 文件系统为共享文件系统。如果使用 -m 选项,则非全局区域的文件系统将被放在独立的片上,并且不会共享数据。该选项可防止在引导环境间共享使用 zonecfg add fs 命令创建的区域文件系统。有关详细信息,请参见 zonecfg(1M)



    # lucreate -n newbe -m /:/dev/dsk/c0t1d0s4:ufs -m /export:/dev/dsk/c0t1d0s1:ufs:zone1
    
  3. 升级引导环境。

    从网络中获取用于升级的操作系统映像。


    # luupgrade -u -n BE_name -s os_image_path
    
    -u

    在引导环境中升级操作系统映像

    -n BE_name

    指定要升级的引导环境的名称

    -s os_image_path

    指定包含操作系统映像的目录的路径名

    在本示例中,新引导环境 newbe 会从网络安装映象进行升级。


    # luupgrade -n newbe -u -s /net/server/export/Solaris_10/combined.solaris_wos
    
  4. (可选)验证引导环境是否可以引导。

    lustatus 命令会报告引导环境的创建是否已完成以及引导环境是否可以引导。


    # lustatus
    boot environment   Is        Active  Active     Can	    Copy
    Name               Complete  Now	 OnReboot   Delete	 Status
    ------------------------------------------------------------------------
    c0t1d0s0            yes      yes      yes       no      -
    newbe               yes       no       no       yes     -
  5. 激活新引导环境。


    # luactivate BE_name
    

    BE_name 指定要激活的引导环境的名称。


    注 –

    对于基于 x86 的系统,在首次引导某个引导环境时,必须使用 luactivate 命令。后续激活可以通过从 GRUB 菜单中选择引导环境来实现。有关逐步说明,请参见x86: 使用 GRUB 菜单激活引导环境


    要成功激活引导环境,该引导环境必须符合多项条件。有关更多信息,请参见激活引导环境

  6. 重新引导。


    # init 6
    

    注意 – 注意 –

    仅使用 initshutdown 命令重新引导。如果使用 reboothaltuadmin 命令,则系统将不切换引导环境。将会再次引导最近处于活动状态的引导环境。


    引导环境已经切换,新的引导环境现在即为当前引导环境。

  7. (可选)回退到其他引导环境。

    如果新的引导环境不可用,或者您要切换至另一个引导环境,请参见第 6 章

升级安装了非全局区域的系统(示例)

以下过程提供了使用 Solaris Live Upgrade 进行升级的示例,并附带简要说明。

有关详细的步骤说明,请参见在系统上安装了非全局区域的情况下使用 Solaris Live Upgrade 进行升级(任务)

在系统中安装了非全局区域的情况下使用 Solaris Live Upgrade 进行升级

以下示例简要介绍了升级已安装非全局区域的系统的步骤。在该示例中,使用 lucreate 命令在运行 Solaris 10 发行版的系统中创建一个新的引导环境。该系统已安装了非全局区域,并且其某个非全局区域在共享文件系统 (zone1/root/export) 上具有一个独立的文件系统。 通过使用 luupgrade 命令将此新引导环境升级到 Solaris 10 9/10 发行版。通过使用 luactivate 命令激活已升级的引导环境。


注 –

此过程假设系统正在运行卷管理器。有关使用卷管理器管理可移除介质的详细信息,请参阅《系统管理指南:设备和文件系统》


  1. 安装必需的修补程序。

    通过访问 http://sunsolve.sun.com 确保您具有最近更新的修补程序列表。在 SunSolve Web 站点上搜索信息文档 206844(以前为 72099)。在该示例中,/net/server/export/patches 为修补程序的路径。


    # patchadd /net/server/export/patches
    # init 6
    
  2. 从当前引导环境中删除 Solaris Live Upgrade 软件包。


    # pkgrm SUNWlucfg SUNWluu SUNWlur
    
  3. 插入 Solaris DVD 或 CD。然后,从目标发行版中安装供替换的 Solaris Live upgrade 软件包。


    # pkgadd -d /cdrom/cdrom0/Solaris_10/Product SUNWlucfg SUNWlur SUNWluu
    
  4. 创建引导环境。

    在以下示例中,创建了一个名为 newbe 的新引导环境。根 (/) 文件系统会放置在 c0t1d0s4 中。当前引导环境中的所有非全局区域都会被复制到新的引导环境中。会使用 zonecfg add fs 命令为 zone1 创建一个独立的文件系统。该独立的文件系统 /zone/root/export 会被放置在独立的文件系统 c0t1d0s1 上。该选项可防止在当前引导环境和新引导环境间共享独立的文件系统。


    # lucreate -n newbe -m /:/dev/dsk/c0t1d0s4:ufs -m /export:/dev/dsk/c0t1d0s1:ufs:zone1
    
  5. 升级新的引导环境。

    在该示例中,/net/server/export/Solaris_10/combined.solaris_wos 为网络安装映象的路径。


    # luupgrade -n newbe -u -s  /net/server/export/Solaris_10/combined.solaris_wos
    
  6. (可选)验证引导环境是否可以引导。

    lustatus 命令报告引导环境创建是否完成。


    # lustatus
    boot environment   Is        Active  Active     Can	    Copy
    Name               Complete  Now	 OnReboot   Delete	 Status
    ------------------------------------------------------------------------
    c0t1d0s0            yes      yes      yes       no           -
    newbe               yes       no       no       yes          -
  7. 激活新的引导环境。


    # luactivate newbe
    # init 6
    

    引导环境 newbe 现在处于活动状态。

  8. (可选)回退到不同的引导环境。如果新的引导环境不可用,或者您要切换至另一个引导环境,请参见第 6 章

管理包含非全局区域的引导环境

以下各节提供了有关管理包含非全局区域的引导环境的信息。

Procedure查看引导环境的非全局区域文件系统的配置

通过以下过程可显示全局区域和非全局区域的文件系统列表。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 显示文件系统列表。


    # lufslist -n BE_name
    
    BE_name

    指定引导环境的名称以查看文件系统说明


示例 8–1 列出安装了非全局区域的文件系统

以下示例显示了包含非全局区域的文件系统的列表。


# lufslist -n s3
boot environment name: s3
This boot environent is currently active.
This boot environment will be active on next system boot.

Filesystem              fstype    device size Mounted on Mount Options
------------------------------------------------------------------
/dev/dsk/c0t0d0s1         swap     2151776256   -        -
/dev/dsk/c0t0d0s3         ufs     10738040832   /        -
/dev/dsk/c0t0d0s7         ufs     10487955456   /export  -
                zone <zone1> within boot environment <s3>
/dev/dsk/c0t0d0s5         ufs      5116329984   /export  -

Procedure比较安装了非全局区域的系统的引导环境

lucompare 命令现在可生成包含任何非全局区域内容的引导环境比较。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 比较当前引导环境和新引导环境。


    # /usr/sbin/lucompare -i  infile (or) -t -o  outfile BE_name
    
    -i  infile

    比较 infile 中列出的文件。要比较的文件应为绝对文件名。如果文件中的项是目录,则比较将递归到该目录。使用该选项或 -t,但不要同时使用两者。

    -t

    只比较非二进制文件。此比较对每个文件使用 file(1) 命令以确定该文件是否为文本文件。使用该选项或 -i,但不要同时使用两者。

    -o  outfile

    将差别输出重定向到 outfile

    BE_name

    指定与活动的引导环境进行比较的引导环境的名称。


示例 8–2 比较引导环境

在该示例中,将当前引导环境(源)同 second_disk 引导环境进行比较,并将结果发送到一个文件。


# /usr/sbin/lucompare -i  /etc/lu/compare/ -o /var/tmp/compare.out second_disk

在包含非全局区域的系统上使用 lumount 命令

lumount 命令可为非全局区域提供访问权限,以便访问其位于非活动引导环境中的相应文件系统。当全局区域管理员使用 lumount 命令挂载某个非活动引导环境时,也会为非全局区域挂载该引导环境。

在以下示例中,将会为位于全局区域的 /mnt 上的引导环境 newbe 挂载适当的文件系统。对于正在运行、已挂载,或准备就绪的非全局区域,其位于 newbe 中的相应文件系统也将会在每个区域的 /mnt 中可用。


# lumount -n newbe /mnt

有关挂载的更多信息,请参见 lumount(1M) 手册页。