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

第 2 部分 使用 Solaris Live Upgrade 升级和迁移到 ZFS 根池

本部分概述并说明了如何使用 Solaris Live Upgrade 在 ZFS 存储池中创建和升级非活动引导环境。此外,您还可以将 UFS 根 (/) 文件系统迁移到 ZFS 根池。

第 11 章 Solaris Live Upgrade 和 ZFS(概述)

使用 Solaris Live Upgrade,可以将 UFS 文件系统迁移到 ZFS 根池并从现有的 ZFS 根池创建 ZFS 根文件系统。


注 –

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


以下各节概述了这些任务:

针对 ZFS 使用 Solaris Live Upgrade 简介

如果您具有 UFS 文件系统,则 Solaris Live Upgrade 的用法与在以前的发行版中的用法是一样的。您现在可以从 UFS 文件系统迁移到 ZFS 根池并在 ZFS 根池中创建新的引导环境。针对这些任务,已使用 -p 选项增强了 lucreate 命令。该命令的语法如下所示:


# lucreate [-c active_BE_name] -n BE_name [-p zfs_root_pool]

-p 选项指定新引导环境所在的 ZFS 池。如果源引导环境和目标引导环境在同一个池中,则可以省略此选项。

ZFS 不支持 lucreate 命令 -m 选项。其他 lucreate 命令选项的用法不变(有一些例外)。有关限制,请参见使用 Solaris Live Upgrade 时的系统要求和限制

从 UFS 文件系统迁移到 ZFS 根池

如果从当前正在运行的系统创建引导环境,则 lucreate 命令会将 UFS 根 (/) 文件系统复制到 ZFS 根池中。复制过程可能比较耗时,具体取决于您的系统。

从 UFS 文件系统迁移时,源引导环境可以是磁盘片上的 UFS 根 (/) 文件系统。您无法从 ZFS 根池上的源引导环境在 UFS 文件系统上创建引导环境。

从 UFS 根 (/) 文件系统迁移到 ZFS 根池

以下命令将从 ZFS 根池中的 UFS 根 (/) 文件系统创建一个 ZFS 根池和一个新的引导环境。执行 lucreate 操作之前,ZFS 根池必须存在且必须是使用片(而不是整个磁盘)创建的,这样才能升级和引导。磁盘不能具有 EFI 标签,但是必须为 SMI 标签。有关更多限制,请参见使用 Solaris Live Upgrade 时的系统要求和限制

图 11–1 显示了用于在单个片 c0t1d0s5 上创建根池 rpoolzpool 命令。磁盘片 c0t0d0s0 包含 UFS 根 (/) 文件系统。在 lucreate 命令中,-c 选项指定当前正在运行的系统 c0t0d0,它是一个 UFS 根 (/) 文件系统。-n 选项为要创建的引导环境指定名称 new-zfsBE-p 选项指定将新的引导环境置于 rpool 中。UFS /export 文件系统和 /swap 卷不会被复制到新的引导环境中。

图 11–1 从 UFS 文件系统迁移到 ZFS 根池

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


示例 11–1 从 UFS 根 (/) 文件系统迁移到 ZFS 根池

本示例显示了与图 11–1 中的命令相同的命令。这些命令创建一个新的根池 rpool,并从 UFS 根 (/) 文件系统在该池中创建一个新的引导环境。在本示例中,zfs list 命令显示由 zpool 命令创建的 ZFS 根池。下一个 zfs list 命令显示由 lucreate 命令创建的数据集。


# zpool create rpool c0t1d0s5
# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT 
rpool                      9.29G  57.6G    20K  /rpool

# lucreate -c c0t0d0 -n new-zfsBE -p rpool
# 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  - 

新的引导环境为 rpool/ROOT/new-zfsBE。现在可以升级和激活引导环境 new-zfsBE 了。


将配置了 Solaris 卷管理器卷的 UFS 文件系统迁移到 ZFS 根文件系统

如果您的系统具有 Solaris 卷管理器 (Solaris Volume Manager, SVM) 卷,则可以迁移 UFS 文件系统。要从现有的 SVM 配置创建 UFS 引导环境,需要从当前运行的系统创建新的引导环境。然后从新的 UFS 引导环境创建 ZFS 引导环境。

Solaris 卷管理器 (Solaris Volume Manager, SVM) 概述。ZFS 使用存储池的概念来管理物理存储。以前,文件系统是在单个物理设备的基础上构造的。为针对多个设备进行寻址并提供数据冗余,引入了卷管理器的概念来提供单个设备的映像。因此,不必修改文件系统即可利用多个设备。此设计增加了复杂性。此复杂性最终阻碍了特定文件系统的继续发展,因为这类文件系统无法控制数据在虚拟卷上的物理位置。

ZFS 存储池取代了 SVM。ZFS 完全取消了卷管理。ZFS 将设备聚集到存储池中,而不是强制要求创建虚拟卷。存储池描述了存储设备布局和数据冗余等的物理特征,并充当可以在其中创建文件系统的任意数据存储库。文件系统不再仅限于单个设备,从而可与池中的所有文件系统共享空间。您不再需要预先确定文件系统的大小,因为文件系统会在分配给存储池的空间内自动增长。添加新存储器后,无需执行其他操作,池中的所有文件系统即可立即使用所增加的空间。在许多方面,存储池都类似于虚拟内存系统。内存 DIMM 添加到系统后,操作系统并不强制您调用某些命令来配置该内存并将其指定给单个进程。系统中的所有进程都会自动使用所增加的内存。


示例 11–2 从具有 SVM 卷的 UFS 根 (/) 文件系统迁移到 ZFS 根池

迁移具有 SVM 卷的系统时,SVM 卷将被忽略。您可以在根池中创建镜像,如以下示例所示。

在本示例中,带有 -m 选项的 lucreate 命令从当前运行的系统创建新的引导环境。磁盘片 c1t0d0s0 包含使用 SVM 卷配置的 UFS 根 ( /) 文件系统。zpool 命令创建一个根池 c1t0d0s0 和一个 RAID-1 卷(镜像) c2t0d0s0。在第二个 lucreate 命令中,-n 选项为要创建的引导环境指定名称 c0t0d0s0-s 选项识别 UFS 根 (/) 文件系统。-p 选项指定将新的引导环境置于 rpool 中。


# lucreate -n ufsBE -m /:/dev/md/dsk/d104:ufs
# zpool create rpool mirror c1t0d0s0 c20t0d0s0
# lucreate -n c0t0d0s0 -s ufsBE -p rpool

现在可以升级和激活引导环境 c0t0d0s0 了。


从 ZFS 根池创建新的引导环境

您可以在同一根池中创建新的 ZFS 引导环境,也可以在新的根池中创建。本节对以下内容进行了概述:

在同一根池中创建新的引导环境

在同一 ZFS 根池中创建新的引导环境时,lucreate 命令将从源引导环境创建一个快照,然后从该快照创建克隆。创建快照和克隆几乎瞬间即可完成,且使用的磁盘空间量最少。最终需要的空间量取决于升级过程中要替换的文件数量。快照是只读的,但克隆是快照的读写副本。对克隆引导环境所做的任何更改都不会反映在快照或从中创建快照的源引导环境。


注 –

活动数据集中的数据更改时,快照通过继续引用旧数据来占用空间。因此,快照可防止将数据释放回池中。有关快照的更多信息,请参见《Solaris ZFS 管理指南》中的第 7  章 “使用 ZFS 快照和克隆”


如果当前引导环境位于同一 ZFS 池中,则可以省略 -p 选项。

图 11–2 显示了如何从 ZFS 根池创建 ZFS 引导环境。片 c0t0d0s0 包含 ZFS 根池 rpool。在 lucreate 命令中,-n 选项为要创建的引导环境指定名称 new-zfsBE。创建了原始根池的快照 rpool@new-zfsBE。该快照用于创建克隆 new-zfsBE(即新的引导环境)。现在可以升级和激活引导环境 new-zfsBE 了。

图 11–2 在同一根池上创建新的引导环境

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


示例 11–3 在同一 ZFS 根池中创建引导环境

本示例显示与图 11–2 中的命令相同的命令,该命令在同一根池中创建新的引导环境。lucreate 命令使用 -c zfsBE 选项指定当前运行的引导环境,使用 -n new-zfsBE 创建新的引导环境。zfs list 命令显示带有新的引导环境和快照的 ZFS 数据集。


# lucreate -c zfsBE -n new-zfsBE
# zfs list
AME                        USED  AVAIL  REFER  MOUNTPOINT 
rpool                      9.29G  57.6G    20K  /rpool
rpool/ROOT                 5.38G  57.6G    18K  /rpool/ROOT
rpool/ROOT/zfsBE           5.38G  57.6G   551M  
rpool/ROOT/zfsBE@new-zfsBE 66.5K      -   551M  -
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  - 

在其他根池中创建新的引导环境

您可以使用 lucreate 命令将现有的 ZFS 根池复制到其他 ZFS 根池中。复制过程可能需要一段时间,具体取决于您的系统。

图 11–3 显示了用于在 c0t1d0s5 上创建 ZFS 根池 rpool2zpool 命令,因为可引导的 ZFS 根池尚不存在。带有 -n 选项的 lucreate 命令为要创建的引导环境指定名称 new-zfsBE-p 选项指定放置新的引导环境的位置。

图 11–3 在其他根池中创建新的引导环境

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


示例 11–4 在其他 ZFS 根池中创建引导环境

本示例显示了与图 11–3 中的命令相同的命令,这些命令创建新的根池,然后在新创建的根池中创建新的引导环境。在本示例中,zpool create 命令用于创建 rpool2zfs list 命令显示未在 rpool2 中创建 ZFS 数据集。数据集是使用 lucreate 命令创建的。


# zpool create rpool2 c0t2d0s5
# zfs list
NAME                             USED    AVAIL   REFER   MOUNTPOINT 
rpool2                           9.29G    57.6G     20K   /rpool2 
rpool                            9.29G    57.6G     20K   /.new.lulib.rs.109262
rpool/ROOT                       5.46G    57.6G     18K   legacy
rpool/ROOT/zfsBE                 5.46G    57.6G   551M  
rpool/dump                       3.99G        -   3.99G   - 
rpool/swap                       3.99G        -   3.99G   - 

在磁盘片 c0t2d0s5 上创建了新的 ZFS 根池 rpool2


# lucreate -n new-zfsBE -p rpool2
# zfs list
NAME                             USED    AVAIL   REFER   MOUNTPOINT 
rpool2                           9.29G    57.6G     20K   /rpool2 
rpool2/ROOT/                     5.38G    57.6G     18K   /rpool2/ROOT 
rpool2/ROOT/new-zfsBE            5.38G    57.6G    551M   /tmp/.new.luupdall.109859
rpool2/dump                      3.99G        -   3.99G   - 
rpool2/swap                      3.99G        -   3.99G   - 
rpool                            9.29G    57.6G     20K   /.new.lulib.rs.109262
rpool/ROOT                       5.46G    57.6G     18K   legacy
rpool/ROOT/zfsBE                 5.46G    57.6G   551M  
rpool/dump                       3.99G        -   3.99G   - 
rpool/swap                       3.99G        -   3.99G   - 

rpool2 上创建了新的引导环境 new-zfsBE 以及其他数据集 ROOTdumpswap。现在可以升级和激活引导环境 new-zfsBE 了。


从当前运行的系统以外的源创建新的引导环境

如果要从当前运行的系统以外的源创建引导环境,则必须使用带有 -s 选项的 lucreate 命令。对于 UFS 文件系统,-s 选项的用法是一样的。-s 选项提供备用根 (/) 文件系统的路径。此备用根 (/) 文件系统是用于创建新 ZFS 根池的源。备用根可以是 UFS (/) 根文件系统或 ZFS 根池。复制过程可能比较耗时,具体取决于您的系统。


示例 11–5 从备用根 (/ ) 文件系统创建引导环境

以下命令可从现有的 ZFS 根池创建新的 ZFS 根池。-n 选项为要创建的引导环境指定名称 new-zfsBE-s 选项指定将引导环境 source-zfsBE 用作复制的源(而不是当前运行的引导环境)。-p 选项指定将新的引导环境置于 newpool2 中。


# lucreate -n new-zfsBE  -s source-zfsBE -p rpool2

现在可以升级和激活引导环境 new-zfsBE 了。


在安装了非全局区域的系统上创建 ZFS 引导环境

您可以使用 Solaris Live Upgrade 将非全局区域迁移到 ZFS 根文件系统。有关概述、规划和逐步操作过程,请参见第 14 章

其他资源

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

表 11–1 其他资源

资源 

位置 

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

《Solaris ZFS 管理指南》

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

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

第 12 章 针对 ZFS 的 Solaris Live Upgrade(规划)

本章提供了在将 UFS 文件系统迁移到 ZFS 文件系统或从现有的 ZFS 根池创建新的 ZFS 引导环境之前需要查看的原则和要求。


注 –

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


使用 Solaris Live Upgrade 时的系统要求和限制

在将 UFS 文件系统迁移到 ZFS 文件系统或从现有的 ZFS 根池创建新的 ZFS 引导环境之前,请务必阅读并了解以下要求和限制。这些要求是对《Solaris 10 5/09 安装指南:规划安装和升级》中的第 6  章 “ZFS 根文件系统安装(规划)”中所列要求的补充。

表 12–1 要求和限制

要求或限制 

说明 

信息 

您必须至少安装了 Solaris 10 10/08 发行版。 

使用 Solaris Live Upgrade 从 UFS 文件系统迁移到 ZFS 根池或在根池中创建新的引导环境是 Solaris 10 10/08 发行版的新增内容。此发行版包含针对 ZFS 使用 Solaris Live Upgrade 所需的软件。必须至少安装了此发行版才能使用 ZFS。

 

磁盘空间 

可引导 ZFS 根文件系统的最小可用池空间量取决于物理内存量、可用磁盘空间和要创建的引导环境的数量。  

有关说明,请参见《Solaris 10 5/09 安装指南:规划安装和升级》中的“ZFS 安装的磁盘空间要求”

从 UFS 根 (/) 文件系统迁移到 ZFS 根池时,请考虑这些要求。

  • 只能从 UFS 文件系统迁移到 ZFS 文件系统。

    • 无法将 UFS 文件系统以外的文件系统迁移到 ZFS 根池。

    • 无法从 ZFS 根池创建 UFS 文件系统。

  • 迁移之前,必须存在 ZFS 存储池。

  • 必须使用片(而不是整个磁盘)来创建 ZFS 存储池才能升级和引导。

    • 使用片创建的池可以镜像,但多个磁盘的 RAID-Z 或非冗余配置无法镜像。/dev/md/[r]dsk 目录中已经存在 SVM 设备信息。

    • 池必须具有 SMI 标签。无法引导标有 EFI 的磁盘。

    • 仅限 x86:ZFS 池必须位于具有 fdisk 分区的片中。

迁移共享文件系统时,无法将共享文件系统复制到新的 ZFS 根池上单独的片中。 

例如,针对 UFS 根 (/) 文件系统执行 Solaris Live Upgrade 时,可以使用 -m 选项将 /export 文件系统复制到其他设备中。您不具有用于将共享文件系统复制到 ZFS 池的 -m 选项。

 

迁移包含非全局区域的 UFS 根文件系统时,不会迁移共享文件系统。 

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

  • 有关关键文件系统和可共享的文件系统的说明,请参见文件系统类型

  • 有关安装非全局区域时的逐步说明,请参见第 14 章

请勿使用 ZFS rename 命令。

Solaris Live Upgrade 功能不能识别名称更改,如果执行了名称更改,后续命令(如 ludelete)将失败。实际上,如果您希望继续使用现有的引导环境,请不要重命名 ZFS 池或文件系统。

 

在使用 lucreate 命令之前设置数据集属性。

Solaris Live Upgrade 将为引导环境创建数据集并为交换区域和转储设备创建 ZFS 卷,但不会修改任何现有的数据集属性。这意味着,如果要在新的引导环境中启用数据集属性,必须在 lucreate 运行之前设置属性。例如:


# zfs set compression=on rpool/ROOT

请参见《Solaris ZFS 管理指南》中的“ZFS 属性介绍”

在同一 ZFS 根池中创建 ZFS 引导环境时,不能使用 lucreate 命令的包含和排除选项来自定义内容。

同一 ZFS 根池中创建引导环境时,您不能使用 -f-o-y-Y-z 选项在主引导环境中包含或排除文件。但是,在以下情况下您可以使用这些选项:

  • 从 UFS 文件系统到 UFS 文件系统创建引导环境

  • 从 UFS 文件系统到 ZFS 根池创建引导环境

  • 从一个 ZFS 根池到另一个 ZFS 根池创建引导环境

有关使用包含和排除选项的信息,请参见创建引导环境并自定义内容

不能使用 Solaris Live Upgrade 升级非根 ZFS 文件系统。 

   

其他资源

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

表 12–2 其他资源

资源 

位置 

有关规划 ZFS 安装的更多信息 

《Solaris 10 5/09 安装指南:规划安装和升级》中的第 6  章 “ZFS 根文件系统安装(规划)”

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

《Solaris ZFS 管理指南》

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

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

第 13 章 为 ZFS 根池创建引导环境

本章提供了有关在使用 Solaris Live Upgrade 时如何创建 ZFS 引导环境的逐步操作过程。


注 –

从 UFS 文件系统迁移到 ZFS 根池或使用 Solaris Live Upgrade 创建 ZFS 引导环境是 Solaris 10 10/08 发行版的新增内容。要在具有 UFS 文件系统的系统上使用 Solaris Live Upgrade,请参见本书的第 1 部分, 使用 Solaris Live Upgrade 进行升级


本章提供以下任务的执行过程:

有关在安装非全局区域时使用 ZFS 的过程,请参见第 14 章

将 UFS 文件系统迁移到 ZFS 文件系统

此过程介绍如何将 UFS 文件系统迁移到 ZFS 文件系统。通过创建引导环境,可以将关键文件系统从活动 UFS 引导环境复制到 ZFS 根池中。lucreate 命令可将关键文件系统复制到现有 ZFS 根池的新引导环境中。不会复制用户定义的(可共享的)文件系统,也不会与源 UFS 引导环境共享这些文件系统。此外,不会在 UFS 文件系统与 ZFS 根池之间共享 /swap。有关可共享的关键文件系统的概述,请参见文件系统类型

Procedure如何将 UFS 文件系统迁移到 ZFS 文件系统


注 –

要将活动 UFS 根 (/) 文件系统迁移到迁移到 ZFS 根池,您必须提供根池的名称。关键文件系统将被复制到根池中。


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

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

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


    注 –

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


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

    2. 按照 SunSolve Web 站点上信息文档 206844 中的说明删除和添加 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
      
    3. 从要升级到的发行版安装新的 Solaris Live Upgrade 软件包。有关说明,请参见安装 Solaris Live Upgrade

    4. 在运行 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  c0t1d0s5
    
    rpool

    指定要创建的新 ZFS 根池的名称。

    c0t1d0s5

    在磁盘片 c0t1d0s5 上创建新的根池。

    有关创建新根池的信息,请参见《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 根池和根池内的引导环境中共享。

    现在可以升级并激活新的引导环境了。请参见示例 13–1


示例 13–1 将 UFS 根 (/) 文件系统迁移到 ZFS 根池

在本示例中,新的 ZFS 根池 rpool 是在单独的片 C0t0d0s4 上创建的。lucreate 命令可将当前正在运行的 UFS 引导环境 c0t0d0 迁移到新的 ZFS 引导环境 new-zfsBE,并将新的引导环境置于 rpool 中。


# zpool create rpool C0t0d0s4

# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT 
rpool                      9.29G  57.6G    20K  /rpool
# lucreate -c c0t0d0 -n new-zfsBE -p rpool
Analyzing system configuration.
Current boot environment is named <c0t0d0>.
Creating initial configuration for primary boot environment <c0t0d0>.
The device </dev/dsk/c0t0d0> is not a root device for any boot 
environment; cannot get BE ID.
PBE configuration successful: PBE name <c0t0d0> PBE Boot Device 
</dev/dsk/c0t0d0>.
Comparing source boot environment <c0t0d0> 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 <new-zfsBE>.
Source boot environment is <c0t0d0>.
Creating boot environment <new-zfsBE>.
Creating file systems on boot environment <new-zfsBE>.
Creating <zfs> file system for </> in zone <global> on 
<rpool/ROOT/new-zfsBE>.
Populating file systems on boot environment <new-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 <new-zfsBE> successful.
Creation of boot environment <new-zfsBE> successful.

# lustatus
boot environment   Is         Active   Active     Can	    Copy 
Name               Complete   Now	  OnReboot   Delete	 Status 
------------------------------------------------------------------------ 
c0t0d0             yes       yes      yes        no         - 
new-zfsBE           yes       no       no        yes       -

# 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/zfsBE           5.38G  57.6G   551M  
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  - 

现在可以升级或激活新的引导环境了。

在本示例中,使用 luupgrade 命令从通过 -s 选项指明的位置中存储的映像升级新引导环境。


# luupgrade -n zfsBE -u -s /net/install/export/s10/combined.s10
 51135 blocks 
miniroot filesystem is <lofs>
Mounting miniroot at 
</net/install/export/solaris_10/combined.solaris_10_wos
/Solaris_10/Tools/Boot> 
Validating the contents of the media 
</net/install/export/s10/combined.s10>. 
The media is a standard Solaris media. 
The media contains an operating system upgrade image. 
The media contains Solaris version <10_1008>. 
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 <zfsBE>. 
Determining packages to install or upgrade for BE <zfsBE>. 
Performing the operating system upgrade of the BE <zfsBE>. 
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. 
Adding operating system patches to the BE <zfsBE>. 
The operating system patch installation is complete. 
INFORMATION: The file /var/sadm/system/logs/upgrade_log on boot 
environment <zfsBE> contains a log of the upgrade operation. 
INFORMATION: The file var/sadm/system/data/upgrade_cleanup on boot 
environment <zfsBE> contains a log of cleanup operations required. 
INFORMATION: Review the files listed above. Remember that all 
of the files are located on boot environment <zfsBE>. 
Before you activate boot environment <zfsBE>, 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 <zfsBE> is complete.

创建新引导环境后,可以随时激活它。


# luactivate new-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 <new-zfsBE> successful.

将系统重新引导至 ZFS 引导环境。


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

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


# luactivate c0t0d0
WARNING: The following files have changed on both the current boot 
environment <new-zfsBE> zone <global> and the boot environment 
to be activated <c0t0d0>:
 /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 <c0t0d0>. These files will not be automatically synchronized 
from the current boot environment <new-zfsBE> when boot environment <c0t0d0>

在同一 ZFS 根池中创建引导环境

如果您已经有一个 ZFS 根池,此时要在该池中创建一个新的 ZFS 引导环境,则可以按照以下过程提供的步骤进行操作。创建非活动引导环境后,可在方便的时候升级并激活新的引导环境。在同一个池中创建引导环境时,不需要使用 -p 选项。

Procedure如何在同一 ZFS 根池中创建 ZFS 引导环境。

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

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

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


    注 –

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


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

    2. 按照 SunSolve Web 站点上信息文档 206844 中的说明删除和添加 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 软件包,则不需要删除此软件包。


      注 –

      从 Solaris 10 8/07 发行版开始,新增了 SUMWlucfg 软件包。如果您使用的是以前发行版的 Solaris Live Upgrade 软件包,则不需要删除此软件包。



      # pkgrm SUNWlucfg SUNWluu SUNWlur
      
    3. 安装新的 Solaris Live Upgrade 软件包。有关说明,请参见安装 Solaris Live Upgrade

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

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

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

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

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


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


        # patchadd path-to-patches patch_id patch_id
        

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


        注 –

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


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

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


        # init 6
        

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

  2. 创建新引导环境。


    # lucreate [-c zfsBE] -n new-zfsBE
    
    -c zfsBE

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

    -n new-zfsBE

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

    创建新引导环境几乎瞬间即可完成。将为当前 ZFS 根池中的每个数据集创建快照,然后从每个快照创建克隆。快照可以有效利用磁盘空间,此过程可使用最少的磁盘空间。创建非活动引导环境后,可以使用 luupgradeluactivate 命令升级或激活新的 ZFS 引导环境。

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

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


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

    在本示例中,ZFS 根池命名为 rpool,@ 符号表示快照。新引导环境挂载点是临时的,直到执行 luactivate 命令为止。/dump/swap 卷与 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/zfsBE                         5.38G  57.6G   551M  
    rpool/ROOT/zfsBE@new-zfsBE               66.5K      -   551M  -
    rpool/ROOT/new-zfsBE                     85.5K  57.6G   551M  /tmp/.alt.103197
    rpool/dump                               1.95G      -  1.95G  - 
    rpool/swap                               1.95G      -  1.95G  - 

    现在可以升级并激活新的引导环境了。请参见示例 13–2


示例 13–2 在同一 ZFS 根池中创建引导环境

以下命令将创建一个新的 ZFS 引导环境 new-zfsBE。不需要使用 -p 选项,因为要在同一根池中创建引导环境。


# lucreate [-c zfsBE] -n new-zfsBE
Analyzing system configuration.
Comparing source boot environment <zfsBE> 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.
Creating configuration for boot environment new-zfsBE.
Source boot environment is zfsBE.
Creating boot environment new-zfsBE.
Cloning file systems from boot environment zfsBE to create 
boot environment new-zfsBE.
Creating snapshot for <rpool> on <rpool> Creating clone for <rpool>. 
Setting canmount=noauto for <rpool> in zone <global> on <rpool>. 
Population of boot environment zfsBE successful on <rpool>.
# lustatus
boot environment   Is        Active  Active     Can	    Copy 
Name               Complete  Now	   OnReboot   Delete	 Status 
------------------------------------------------------------------------ 
zfsBE               yes       yes     yes         no          - 
new-zfsBE           yes       no      no          yes         -
# 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/zfsBE                         5.38G  57.6G   551M  
rpool/ROOT/zfsBE@new-zfsBE               66.5K      -   551M  - 
rpool/ROOT/new-zfsBE                     85.5K  57.6G   551M  /tmp/.alt.103197 
rpool/dump                               1.95G      -  1.95G  - 
rpool/swap                               1.95G      -  1.95G  - 

现在可以升级并激活新的引导环境了。有关升级 ZFS 引导环境的示例,请参见示例 13–1。有关使用 luupgrade 命令的更多示例,请参见第 5 章


# luactivate new-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 <new-zfsBE> successful.

将系统重新引导至 ZFS 引导环境。


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

在新的根池中创建引导环境

如果您已经有一个 ZFS 根池,此时要在新的根池中创建新的 ZFS 引导环境,可以按照以下过程中的步骤进行操作。创建非活动引导环境后,可在方便的时候升级并激活新的引导环境。需要使用 -p 选项来指明放置新引导环境的位置。现有 ZFS 根池必须存在且位于一个单独的片上才能引导和升级。

Procedure如何在新的 ZFS 根池上创建引导环境

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

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

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


    注 –

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


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

    2. 按照 SunSolve Web 站点上信息文档 206844 中的说明删除和添加 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 软件包,则不需要删除此软件包。


      注 –

      从 Solaris 10 8/07 发行版开始,新增了 SUMWlucfg 软件包。如果您使用的是以前发行版的 Solaris Live Upgrade 软件包,则不需要删除此软件包。



      # pkgrm SUNWlucfg SUNWluu SUNWlur
      
    3. 安装新的 Solaris Live Upgrade 软件包。有关说明,请参见安装 Solaris Live Upgrade

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

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

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

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

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


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


        # patchadd path-to-patches patch_id patch_id
        

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


        注 –

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


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

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


        # init 6
        

        您现在有了成功迁移所需的软件包和修补程序。

  2. 创建 ZFS 根池。

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


    # zpool create rpool2 c0t1d0s5
    
    rpool2

    新 ZFS 根池的名称。

    c0t1d0s5

    指定将 rpool2 置于可引导的片 c0t1d0s5 上。

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

  3. 创建新引导环境。


    # lucreate [-c zfsBE] -n new-zfsBE -p rpool2
    
    -c zfsBE

    为当前 ZFS 引导环境指定名称 zfsBE

    -n new-zfsBE

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

    -p rpool2

    将新创建的 ZFS 根引导环境置于在 rpool2 中定义的 ZFS 根池中。

    创建新的 ZFS 引导环境可能需要一段时间。文件系统数据将被复制到新的 ZFS 根池中。创建非活动引导环境后,可以使用 luupgradeluactivate 命令升级或激活新的 ZFS 引导环境。

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

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


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

    以下示例显示系统上所有数据集的名称。针对新引导环境列出的挂载点是临时的,直到执行 luactivate 命令为止。新引导环境与 rpool2 ZFS 引导环境共享卷 rpool2/dumprpool2/swap


    # zfs list
    NAME                             USED    AVAIL   REFER   MOUNTPOINT 
    rpool2                           9.29G    57.6G     20K   /rpool2 
    rpool2/ROOT/                     5.38G    57.6G     18K   /rpool2/ROOT 
    rpool2/ROOT/new-zfsBE            5.38G    57.6G    551M  /tmp/.new.luupdall.109859
    rpool2/dump                      3.99G        -   3.99G   - 
    rpool2/swap                      3.99G        -   3.99G   - 
    rpool                            9.29G    57.6G     20K   /.new.lulib.rs.109262
    rpool/ROOT                       5.46G    57.6G     18K   legacy
    rpool/ROOT/zfsBE                 5.46G    57.6G    551M  
    rpool/dump                       3.99G        -   3.99G   - 
    rpool/swap                       3.99G        -   3.99G   - 

    现在可以升级并激活新的引导环境了。请参见示例 13–3


示例 13–3 在新的根池上创建引导环境

在本示例中,在单独的片 c0t2s0s5 上创建了新的 ZFS 根池 rpoollucreate 命令将创建新的 ZFS 引导环境 new-zfsBE-p 选择是必需的,因为要在不同的根池中创建引导环境。


# zpool create rpool C0t1d0s5
# zfs list
NAME                             USED    AVAIL   REFER   MOUNTPOINT 
rpool2                           9.29G    57.6G     20K   /rpool2 
rpool                            9.29G    57.6G     20K   /.new.lulib.rs.109262
rpool/ROOT					             5.46G    57.6G     18K   legacy
rpool/ROOT/zfsBE                 5.46G    57.6G    551M  
rpool/dump                       3.99G        -   3.99G   - 
rpool/swap                       3.99G        -   3.99G   - 

# lucreate -c rpool -n new-zfsBE -p rpool2
Analyzing system configuration.
Current boot environment is named <rpool>.
Creating initial configuration for primary boot environment <rpool>.
The device </dev/dsk/c0t0d0> is not a root device for any 
boot environment; cannot get BE ID.
PBE configuration successful: PBE name <rpool> PBE Boot 
Device </dev/dsk/rpool>.
Comparing source boot environment <rpool> 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 <new-zfsBE>.
Source boot environment is <rpool>.
Creating boot environment <new-zfsBE>.
Creating file systems on boot environment <new-zfsBE>.
Creating <zfs> file system for </> in zone <global> on 
<rpool2/ROOT/new-zfsBE>.
Populating file systems on boot environment <new-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 <new-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 <new-zfsBE> successful.
Creation of boot environment <new-zfsBE> successful.

# lustatus
boot environment   Is        Active  Active     Can	    Copy 
Name               Complete  Now	OnReboot   Delete	 Status 
------------------------------------------------------------------------ 
zfsBE                yes      yes     yes        no        - 
new-zfsBE            yes      no      no         yes        -
# zfs list
NAME                             USED    AVAIL   REFER   MOUNTPOINT 
rpool2                           9.29G    57.6G     20K   /rpool2 
rpool2/ROOT/                     5.38G    57.6G     18K   /rpool2/ROOT 
rpool2/ROOT/new-zfsBE            5.38G    57.6G    551M   /tmp/.new.luupdall.109859
rpool2/dump                      3.99G        -   3.99G   - 
rpool2/swap                      3.99G        -   3.99G   - 
rpool                            9.29G    57.6G     20K   /.new.lulib.rs.109262
rpool/ROOT                       5.46G    57.6G     18K   legacy
rpool/ROOT/zfsBE                 5.46G    57.6G    551M  
rpool/dump                       3.99G        -   3.99G   - 
rpool/swap                       3.99G        -   3.99G   - 

从当前运行的系统以外的源创建引导环境

如果您已经有 ZFS 根池或 UFS 引导环境,但当前不用作活动引导环境,则可以使用以下示例从该引导环境创建新的 ZFS 引导环境。创建新的 ZFS 引导环境后,可在方便的时候升级并激活该新引导环境。

如果要从当前运行的系统以外的源创建引导环境,则必须使用带有 -s 选项的 lucreate 命令。对于 UFS 文件系统,-s 选项的用法是一样的。-s 选项提供备用根 (/) 文件系统的路径。此备用根 (/) 文件系统是用于创建新 ZFS 根池的源。备用根可以是 UFS (/) 根文件系统或 ZFS 根池。复制过程可能比较耗时,具体取决于您的系统。

以下示例显示在其他 ZFS 根池中创建引导环境时如何使用 -s 选项。


示例 13–4 如何从当前运行的系统以外的源创建引导环境

以下命令可从现有的 ZFS 根池创建新的 ZFS 根池。-n 选项为要创建的引导环境指定名称 new-zfsBE-s 选项指定将引导环境 rpool3 用作复制的源(而不是当前运行的引导环境)。-p 选项指定将新的引导环境置于 rpool2 中。


# lucreate -n new-zfsBE -s rpool3 -p rpool2
# lustatus
boot environment   Is        Active  Active     Can	    Copy 
Name               Complete  Now	 OnReboot   Delete	 Status 
------------------------------------------------------------------------ 
zfsBE               yes      yes     yes        no         - 
zfsBE2              yes      no      no         yes        -
zfsBE3              yes      no      no         yes        -
new-zfsBE           yes      no      no         yes        -

# zfs list
NAME                            USED    AVAIL   REFER   MOUNTPOINT 
rpool2                         9.29G    57.6G     20K   /rpool2 
rpool2/ROOT/                   5.38G    57.6G     18K   /rpool2/ROOT 
rpool2/ROOT/new-zfsBE          5.38G    57.6G    551M   /tmp/.new.luupdall.109859
rpool2/dump                    3.99G        -   3.99G   - 
rpool2/swap                    3.99G        -   3.99G   - 
rpool3                         9.29G    57.6G     20K   /rpool2 
rpool3/ROOT/                   5.38G    57.6G     18K   /rpool2/ROOT 
rpool3/ROOT/zfsBE3             5.38G    57.6G   551M    /tmp/.new.luupdall.109859
rpool3/dump                    3.99G        -   3.99G   - 
rpool3/swap                    3.99G        -   3.99G   - 
prool                          9.29G    57.6G     20K   /.new.lulib.rs.109262
rpool/ROOT                     5.46G    57.6G     18K   legacy
rpool/ROOT/zfsBE               5.46G    57.6G   551M  
rpool/dump                     3.99G        -   3.99G   - 
rpool/swap                     3.99G        -   3.99G   -

现在可以升级并激活新的引导环境了。


回退到 ZFS 引导环境

如果在升级后检测到故障或者如果应用程序与已升级的组件不兼容,则可以使用 luactivate 命令回退到原始引导环境。

如果您已从 UFS 引导环境迁移到 ZFS 根池,然后决定回退到 UFS 引导环境,则需要再次导入已在 ZFS 引导环境中创建的所有 ZFS 存储池。UFS 引导环境不自动提供这些 ZFS 存储池。切换回 UFS 引导环境时,您将看到类似于以下示例的消息。


# luactivate c0t0d0
WARNING: The following files have changed on both the current boot 
environment <new-ZFSbe> zone <global> and the boot environment 
to be activated <c0t0d0>: /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 <c0t0d0>. These files will not be automatically synchronized 
from the current boot environment <new-ZFSbe> when boot 
environment <c0t0d0>

有关回退到原始引导环境的示例,请参见第 6 章

其他资源

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

表 13–1 其他资源

资源 

位置 

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

《Solaris ZFS 管理指南》

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

本书的第 1 部分, 使用 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 章