Solaris 10 5/09 安装指南:Solaris Live Upgrade 和升级规划

第 14 章 针对安装了非全局区域的 ZFS 的 Solaris Live Upgrade

本章提供了将 UFS (/) 根文件系统迁移到 ZFS 根池的概述和逐步操作过程。


注 –

从 UFS 根 (/) 文件系统迁移到 ZFS 根池或使用 Solaris Live Upgrade 创建 ZFS 引导环境是 Solaris 10 10/08 发行版的新增内容。对 UFS 文件系统执行 Solaris Live Upgrade 时,Solaris Live Upgrade 的命令行参数和操作保持不变。要在具有 UFS 文件系统的系统上执行 Solaris Live Upgrade,请参见本书的第 1 部分, 使用 Solaris Live Upgrade 进行升级


在安装了非全局区域的系统上创建 ZFS 引导环境(概述和规划)

您可以使用 Solaris Live Upgrade 将具有非全局区域的 UFS 根 (/) 文件系统迁移到 ZFS 根池。所有与该文件系统关联的非全局区域也将被复制到新的引导环境中。支持以下非全局区域迁移方案:

迁移前的根文件系统和区域组合  

迁移后的根文件系统和区域组合 

UFS 根文件系统与 UFS 文件系统中的非全局区域根目录 

UFS 根文件系统与 ZFS 根池中的非全局区域根目录 

 

ZFS 根池与 ZFS 根池中的非全局区域根目录 

 

ZFS 根池与 UFS 文件系统中的非全局区域根目录 

UFS 根文件系统与 ZFS 根池中的非全局区域根目录 

ZFS 根池与 ZFS 根池中的非全局区域根目录 

 

UFS 根文件系统与 ZFS 根池中的非全局区域根目录 

ZFS 根池与 ZFS 根池中的非全局区域根目录 

ZFS 根池与 ZFS 根池中的非全局区域根目录 

在安装了 UFS 根 (/) 文件系统和非全局区域的系统上,如果区域位于非共享文件系统中,则在从 UFS 迁移到 ZFS 的过程中会迁移非全局区域。或者,在同一 ZFS 池中升级时克隆区域。如果共享 UFS 文件系统中存在非全局区域,要迁移到另一个 ZFS 根池,必须首先升级该非全局区域(与以前的 Solaris 发行版一样)。

从安装了非全局区域的 UFS 根 (/) 文件系统迁移到 ZFS 根池(任务)

本章提供从 UFS 根 (/) 文件系统迁移到安装了非全局区域的系统上的 ZFS 根池的逐步说明。在 UFS 文件系统中,共享文件系统上没有非全局区域。

Procedure如何将 UFS 文件系统迁移到具有非全局区域的系统上的 ZFS 根池

lucreate 命令可从 UFS 根 (/) 文件系统创建 ZFS 根池引导环境。执行 lucreate 操作之前,ZFS 根池必须存在且必须是使用片(而不是整个磁盘)创建的,这样才能升级和引导。此过程显示如何将与 UFS 根 (/) 文件系统关联的现有非全局区域复制到 ZFS 根池中的新引导环境。

在以下示例中,现有的非全局区域 myzone 在 UFS 根 (/) 文件系统中具有其非全局区域根目录。区域 zzone 在现有的 ZFS 存储池 pool 中的 ZFS 文件系统中具有其区域根目录。Solaris Live Upgrade 用于将 UFS 引导环境 c2t2d0s0 迁移到 ZFS 引导环境 zfs2BE。基于 UFS 的 myzone 区域迁移到在 Solaris Live Upgrade 运行之前创建的新 ZFS 存储池 mpool。基于 ZFS 的非全局区域 zzone 将被克隆,但会保留在 ZFS 池 pool 中并被迁移到新的 zfs2BE 引导环境中。

  1. 首次执行 Solaris Live Upgrade 时,完成以下步骤。


    注 –

    使用 Solaris Live Upgrade 创建新的 ZFS 引导环境至少需要安装 Solaris 10 10/08 发行版。以前的发行版中的 ZFS 和 Solaris Live Upgrade 软件不能执行这些任务。


    1. 删除系统上现有的 Solaris Live Upgrade 软件包(如有必要)。如果要升级到新的发行版,则必须从该发行版安装这些软件包。

      三个 Solaris Live Upgrade 软件包(SUNWluuSUNWlur SUNWlucfg)组成了使用 Solaris Live Upgrade 进行升级所需的软件。这些软件包包含现有的软件、新增功能和错误修复。如果在使用 Solaris Live Upgrade 前未删除现有软件包并在系统上安装新的软件包,则升级到目标发行版时将失败。


      # pkgrm SUNWlucfg SUNWluu SUNWlur
      
    2. 从要升级到的发行版安装新的 Solaris Live Upgrade 软件包。有关说明,请参见安装 Solaris Live Upgrade

    3. 安装或运行 Solaris Live Upgrade 之前,需要安装以下修补程序。这些修补程序可确保您具有该发行版的所有最新错误修复和新增功能。

      请访问 SunSolve,以确保具有最近更新的修补程序列表。在 SunSolve Web 站点上搜索信息文档 206844(以前为 72099)。

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

      • 如果您要将修补程序存储在本地磁盘上,请创建一个目录(如 /var/tmp/lupatches)并将这些修补程序下载到该目录中。

      • SunSolve Web 站点获取修补程序列表。

      • 转到修补程序目录。


        # cd /var/tmp/lupatches
        
      • 使用 patchadd 命令安装修补程序。


        # patchadd patch_id
        

        patch_id 是修补程序号。用空格分隔多个修补程序名称。


        注 –

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


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

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


        # init 6
        
  2. 创建 ZFS 根池。

    ZFS 根池必须位于单个片上才能引导和升级。


    # zpool create rpool c3t0d0s0
    

    在本示例中,要创建的新 ZFS 的名称为 rpool。池是在可引导片 c3t0d0s0 上创建的。

    有关创建新根池的信息,请参见《Solaris ZFS 管理指南》

  3. 将 UFS 根 (/) 文件系统迁移到新的 ZFS 根池。


    # lucreate [-c ufsBE] -n new-zfsBE -p rpool
    
    -c ufsBE

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

    -n new-zfsBE

    为要创建的引导环境指定名称 new-zfsBE。名称在系统中必须是唯一的。

    -p rpool

    将新创建的 ZFS 根 (/) 文件系统置于在 rpool 中定义的 ZFS 根池中。

    所有非共享非全局区域连同关键文件系统都被复制到新的引导环境中。创建新的 ZFS 引导环境可能需要一段时间。UFS 文件系统数据将被复制到 ZFS 根池中。创建非活动引导环境后,可以使用 luupgradeluactivate 命令开升级或激活新的 ZFS 引导环境。

  4. (可选)验证引导环境是否已完成。

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


    # lustatus
    boot environment   Is         Active   Active     Can	    Copy 
    Name               Complete   Now	  OnReboot   Delete	 Status 
    ------------------------------------------------------------------------ 
    ufsBE               yes       yes      yes        no         - 
    new-zfsBE           yes       no       no        yes         -
  5. (可选)验证系统上的基本数据集信息。

    list 命令显示系统上所有数据集的名称。在本示例中,rpool 是 ZFS 池的名称,new-zfsBE 是新创建的 ZFS 引导环境的名称。


    # zfs list
    NAME                        USED  AVAIL  REFER  MOUNTPOINT 
    rpool                      9.29G  57.6G    20K  /rpool
    rpool/ROOT                 5.38G  57.6G    18K  /rpool/ROOT
    rpool/ROOT/new-zfsBE       5.38G  57.6G   551M  /tmp/.alt.luupdall.110034
    rpool/dump                 1.95G      -  1.95G  - 
    rpool/swap                 1.95G      -  1.95G  - 

    针对新引导环境列出的挂载点是临时的,直到执行 luactivate 命令为止。/dump/swap 卷不与原始 UFS 引导环境共享,但在 ZFS 根池和根池内的引导环境中共享。


示例 14–1 从安装了非全局区域的 UFS 根 (/) 文件系统迁移到 ZFS 根池

在以下示例中,现有的非全局区域 myzone 在 UFS 根 (/) 文件系统中具有其非全局区域根目录。区域 zzone 在现有的 ZFS 存储池 pool 中的 ZFS 文件系统中具有其区域根目录。Solaris Live Upgrade 用于将 UFS 引导环境 c2t2d0s0 迁移到 ZFS 引导环境 zfs2BE。基于 UFS 的 myzone 区域迁移到在 Solaris Live Upgrade 运行之前创建的新 ZFS 存储池 mpool。基于 ZFS 的非全局区域 zzone 将被克隆,但会保留在 ZFS 池 pool 中并被迁移到新的 zfs2BE 引导环境中。


# zoneadm list -iv
  ID NAME             STATUS     PATH                           BRAND    IP    
   0 global           running    /                              native   shared
   - myzone           installed  /zones/myzone                  native   shared
   - zzone            installed  /pool/zones                    native   shared

# zpool create mpool mirror c3t0d0s0 c4td0s0
# lucreate -c c1t2d0s0 -n zfs2BE -p mpool
Analyzing system configuration.
No name for current boot environment.
Current boot environment is named <c1t2d0s0>.
Creating initial configuration for primary boot environment <c1t2d0s0>.
The device </dev/dsk/c1t2d0s0> is not a root device for any 
boot environment; cannot get BE ID.
PBE configuration successful: PBE name <c1t2d0s0> PBE Boot Device 
</dev/dsk/c1t2d0s0>.
Comparing source boot environment <c1t2d0s0> file systems with the file 
system(s) you specified for the new boot environment. Determining which 
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
The device </dev/dsk/c1t0d0s0> is not a root device for any boot
environment; cannot get BE ID.
Creating configuration for boot environment <zfsBE>.
Source boot environment is <c1t2d0s0>.
Creating boot environment <zfsBE>.
Creating file systems on boot environment <zfsBE>.
Creating <zfs> file system for </> in zone <global> on <rpool/ROOT/zfsBE>.
Populating file systems on boot environment <zfsBE>.
Checking selection integrity.
Integrity check OK.
Populating contents of mount point </>.
Copying.
Creating shared file system mount points.
Creating compare databases for boot environment <zfsBE>.
Creating compare database for file system </>.
Making boot environment <zfsBE> bootable.
Creating boot_archive for /.alt.tmp.b-cBc.mnt
updating /.alt.tmp.b-cBc.mnt/platform/sun4u/boot_archive
Population of boot environment <zfsBE> successful.
Creation of boot environment <zfsBE> successful.

lucreate 操作完成后,请使用 lustatus 命令来查看引导环境状态,如本示例所示。


# lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
c1t2d0s0                   yes      yes    yes       no     -         
zfsBE                      yes      no     no        yes    -         

# zoneadm list -iv
  ID NAME             STATUS     PATH                           BRAND    IP    
   0 global           running    /                              native   shared
   - myzone           installed  /zones/myzone                  native   shared
   - zzone            installed  /pool/zones                    native   shared

接下来,使用 luactivate 命令激活新的 ZFS 引导环境。例如:


# luactivate zfsBE
**********************************************************************

The target boot environment has been activated. It will be used when you 
reboot. NOTE: You MUST NOT USE the reboot, halt, or uadmin commands. You 
MUST USE either the init or the shutdown command when you reboot. If you 
do not use either init or shutdown, the system will not boot using the 
target BE.

**********************************************************************
In case of a failure while booting to the target BE, the following process 
needs to be followed to fallback to the currently working boot environment:

1. Enter the PROM monitor (ok prompt).

2. Change the boot device back to the original boot environment by typing:

     setenv boot-device /pci@1f,0/pci@1/scsi@4,1/disk@2,0:a

3. Boot to the original boot environment by typing:

     boot

**********************************************************************

Modifying boot archive service
Activation of boot environment <ZFSbe> successful.

将系统重新引导至 ZFS BE。


# init 6
# svc.startd: The system is coming down.  Please wait.
svc.startd: 79 system services are now being stopped.
.
.
.

确认新的引导环境和已迁移的区域的状态,如本示例所示。


# lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
c1t2d0s0                   yes      yes    yes       no     -         
zfsBE                      yes      no     no        yes    -         

如果回退到 UFS 引导环境,则需要再次导入在 ZFS 引导环境中创建的所有 ZFS 存储池,因为 UFS 引导环境不会自动提供它们。切换回 UFS 引导环境时,您会看到类似于以下示例的消息。


# luactivate c1t2d0s0
WARNING: The following files have changed on both the current boot 
environment <ZFSbe> zone <global> and the boot environment to be activated <c1t2d0s0>:
 /etc/zfs/zpool.cache
INFORMATION: The files listed above are in conflict between the current 
boot environment <ZFSbe> zone <global> and the boot environment to be 
activated <c1t2d0s0>. These files will not be automatically synchronized 
from the current boot environment <ZFSbe> when boot environment <c1t2d0s0>

其他资源

有关本章所包含的主题的其他信息,请参见表 14–1 中列出的资源。

表 14–1 其他资源

资源 

位置 

有关非全局区域的信息,包括概述、规划和逐步说明 

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

有关 ZFS 的信息,包括概述、规划和逐步说明 

《Solaris ZFS 管理指南》

有关在具有 UFS 文件系统的系统上使用 Solaris Live Upgrade 的信息 

本书的第 1 部分, 使用 Solaris Live Upgrade 进行升级,包括第 8 章