使用 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 10 10/09 发行版开始,您可以设置 JumpStart 配置文件,以标识 ZFS 根池的 Flash 归档文件。
可以在运行 UFS 根文件系统或 ZFS 根文件系统的系统中创建 Flash 归档文件。ZFS 根池的 Flash 归档文件包含整个池分层结构,但交换卷和转储卷以及任何已排除的数据集除外。交换卷和转储卷是在安装 Flash 归档文件时创建的。
您可以使用如下的 Flash 归档文件安装方法:
生成一个 Flash 归档文件,该归档文件可用于安装和引导具有 ZFS 根文件系统的系统。
使用 ZFS Flash 归档文件执行系统的 JumpStart 安装。
创建 ZFS Flash 归档文件会备份整个根池,而不是各个引导环境。可以使用 flarcreate 和 flar 命令的 -D 选项排除池内的各个数据集。
有关详细说明及限制,请参见《Solaris ZFS 管理指南》中的“安装 ZFS 根文件系统(Flash 归档文件安装)”。
如果您具有 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 时的系统要求和限制。
如果从当前正在运行的系统创建引导环境,则 lucreate 命令会将 UFS 根 (/) 文件系统复制到 ZFS 根池中。复制过程可能比较耗时,具体取决于您的系统。
从 UFS 文件系统迁移时,源引导环境可以是磁盘片上的 UFS 根 (/) 文件系统。您无法从 ZFS 根池上的源引导环境在 UFS 文件系统上创建引导环境。
以下命令将从 ZFS 根池中的 UFS 根 (/) 文件系统创建一个 ZFS 根池和一个新的引导环境。执行 lucreate 操作之前,ZFS 根池必须存在且必须是使用片(而不是整个磁盘)创建的,这样才能升级和引导。磁盘不能具有 EFI 标签,但是必须为 SMI 标签。有关更多限制,请参见使用 Solaris Live Upgrade 时的系统要求和限制。
图 11–1 显示了用于在单个片 c0t1d0s5 上创建根池 rpool 的 zpool 命令。磁盘片 c0t0d0s0 包含 UFS 根 (/) 文件系统。在 lucreate 命令中,-c 选项指定当前正在运行的系统 c0t0d0,它是一个 UFS 根 (/) 文件系统。-n 选项为要创建的引导环境指定名称 new-zfsBE。-p 选项指定将新的引导环境置于 rpool 中。UFS /export 文件系统和 /swap 卷不会被复制到新的引导环境中。
本示例显示了与图 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 卷管理器 (Solaris Volume Manager, SVM) 卷,则可以迁移 UFS 文件系统。要从现有的 SVM 配置创建 UFS 引导环境,需要从当前运行的系统创建新的引导环境。然后从新的 UFS 引导环境创建 ZFS 引导环境。
Solaris 卷管理器 (Solaris Volume Manager, SVM) 概述。ZFS 使用存储池的概念来管理物理存储。以前,文件系统是在单个物理设备的基础上构造的。为针对多个设备进行寻址并提供数据冗余,引入了卷管理器的概念来提供单个设备的映像。因此,不必修改文件系统即可利用多个设备。此设计增加了复杂性。此复杂性最终阻碍了特定文件系统的继续发展,因为这类文件系统无法控制数据在虚拟卷上的物理位置。
ZFS 存储池取代了 SVM。ZFS 完全取消了卷管理。ZFS 将设备聚集到存储池中,而不是强制要求创建虚拟卷。存储池描述了存储设备布局和数据冗余等的物理特征,并充当可以在其中创建文件系统的任意数据存储库。文件系统不再仅限于单个设备,从而可与池中的所有文件系统共享空间。您不再需要预先确定文件系统的大小,因为文件系统会在分配给存储池的空间内自动增长。添加新存储器后,无需执行其他操作,池中的所有文件系统即可立即使用所增加的空间。在许多方面,存储池都类似于虚拟内存系统。内存 DIMM 添加到系统后,操作系统并不强制您调用某些命令来配置该内存并将其指定给单个进程。系统中的所有进程都会自动使用所增加的内存。
迁移具有 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 c2t1d0s0 # lucreate -n c0t0d0s0 -s ufsBE -p zpool |
现在可以升级和激活引导环境 c0t0d0s0 了。
您可以在同一根池中创建新的 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 中的命令相同的命令,该命令在同一根池中创建新的引导环境。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 根池 rpool2 的 zpool 命令,因为可引导的 ZFS 根池尚不存在。带有 -n 选项的 lucreate 命令为要创建的引导环境指定名称 new-zfsBE。-p 选项指定放置新的引导环境的位置。
本示例显示了与图 11–3 中的命令相同的命令,这些命令创建新的根池,然后在新创建的根池中创建新的引导环境。在本示例中,zpool create 命令用于创建 rpool2。zfs 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 以及其他数据集 ROOT、dump 和 swap。现在可以升级和激活引导环境 new-zfsBE 了。
如果要从当前运行的系统以外的源创建引导环境,则必须使用带有 -s 选项的 lucreate 命令。对于 UFS 文件系统,-s 选项的用法是一样的。-s 选项提供备用根 (/) 文件系统的路径。此备用根 (/) 文件系统是用于创建新 ZFS 根池的源。备用根可以是 UFS (/) 根文件系统或 ZFS 根池。复制过程可能比较耗时,具体取决于您的系统。
以下命令可从现有的 ZFS 根池创建新的 ZFS 根池。-n 选项为要创建的引导环境指定名称 new-zfsBE。-s 选项指定将引导环境 source-zfsBE 用作复制的源(而不是当前运行的引导环境)。-p 选项指定将新的引导环境置于 newpool2 中。
# lucreate -n new-zfsBE -s source-zfsBE -p rpool2 |
现在可以升级和激活引导环境 new-zfsBE 了。
您可以使用 Solaris Live Upgrade 将非全局区域迁移到 ZFS 根文件系统。有关概述、规划和逐步操作过程,请参见第 14 章。
有关本章所包括主题的其他信息,请参见表 11–1 中列出的资源。
表 11–1 其他资源
资源 |
位置 |
---|---|
有关 ZFS 的信息,包括概述、规划和逐步说明 | |
有关在具有 UFS 文件系统的系统上使用 Solaris Live Upgrade |