本章介绍如何安装和引导 Oracle Solaris ZFS 文件系统。同时还对使用 Oracle Solaris Live Upgrade 将 UFS 根文件系统迁移到 ZFS 文件系统进行了介绍。
本章包含以下各节:
有关此发行版的已知问题列表,请参见《Oracle Solaris 10 9/10 发行说明》。
有关最新的故障排除信息,请访问以下站点:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
从 Solaris 10 10/08 发行版开始,您可以通过以下方式安装 ZFS 根文件系统并从中进行引导:
您可以在 ZFS 被选定为根文件系统期间执行初始安装。
可以使用 Oracle Solaris Live Upgrade 功能将 UFS 根文件系统迁移到 ZFS 根文件系统。此外,还可以使用 Oracle Solaris Live Upgrade 执行以下任务:
在现有 ZFS 根池中创建新引导环境。
在新 ZFS 根池中创建新引导环境。
您可以使用 Oracle Solaris JumpStart 配置文件自动安装具有 ZFS 根文件系统的系统。
从 Solaris 10 10/09 发行版开始,您可以使用 JumpStart 配置文件自动安装具有 ZFS Flash 归档文件的系统。
基于 SPARC 或基于 x86 的系统安装了 ZFS 根文件系统或迁移到 ZFS 根文件系统后,系统将从 ZFS 根文件系统自动引导。有关引导方面的变化的更多信息,请参见从 ZFS 根文件系统引导。
使用 Solaris 交互式文本安装程序,您可以安装 UFS 根文件系统或 ZFS 根文件系统。对于此 Solaris 发行版,缺省文件系统仍为 UFS。您可以通过以下方式访问交互式文本安装程序选项:
SPARC:通过 Solaris 安装 DVD 引导时,请使用以下语法:
ok boot cdrom - text |
SPARC:通过网络引导时,请使用以下语法:
ok boot net - text |
x86:选择文本模式安装选项。
自定义 JumpStart 配置文件提供以下功能:
您可以设置配置文件以创建 ZFS 存储池并指定可引导的 ZFS 文件系统。
您可以设置配置文件以标识 ZFS 根池的 Flash 归档文件。
使用 Oracle Solaris Live Upgrade 功能,您可以将 UFS 根文件系统迁移到 ZFS 根文件系统。lucreate 和 luactivate 命令已得到增强,从而可支持 ZFS 池和 ZFS 文件系统。
可以通过在安装期间选择两个磁盘来设置镜像 ZFS 根池。或者,可以通过在安装后附加其他磁盘来创建镜像 ZFS 根池。
将会在 ZFS 根池中的 ZFS 卷上自动创建交换和转储设备。
此发行版中不提供以下安装功能:
用于安装 ZFS 根文件系统的 GUI 安装功能当前不可用。
从初始安装选项选择 Flash 安装选项后,用于安装 ZFS 根文件系统的 Oracle Solaris Flash 安装功能将不可用。但是,可以创建 JumpStart 配置文件以标识 ZFS 根池的 Flash 归档文件。有关更多信息,请参见安装 ZFS 根文件系统(Oracle Solaris Flash 归档文件安装)。
不能使用标准升级程序将 UFS 根文件系统升级到 ZFS 根文件系统。
尝试安装具有 ZFS 根文件系统的系统或将 UFS 根文件系统迁移到 ZFS 根文件系统之前,请确保满足以下要求。
您可以通过以下方式安装和引导 ZFS 根文件系统或迁移到 ZFS 根文件系统:
安装 ZFS 根文件系统-从 Solaris 10 10/08 发行版开始可用。
使用 Oracle Solaris Live Upgrade 从 UFS 根文件系统迁移到 ZFS 根文件系统-必须已安装了最低 Solaris 10 10/08 发行版,或者必须已升级到最低 Solaris 10 10/08 发行版。
以下部分介绍 ZFS 根池空间和配置要求。
ZFS 根文件系统所需的最小可用池空间量大于 UFS 根文件系统所需的最小可用池空间量,因为交换设备和转储设备在 ZFS 根环境中必须是单独的设备。缺省情况下,交换和转储设备在 UFS 根文件系统中为同一设备。
系统中安装了 ZFS 根文件系统或升级为 ZFS 根文件系统时,交换区域和转储设备的大小取决于物理内存量。可引导的 ZFS 根文件系统的最小可用池空间量取决于物理内存量、可用的磁盘空间以及要创建的引导环境 (boot environment, BE) 数量。
检查 ZFS 存储池的以下磁盘空间要求:
安装 ZFS 根文件系统所需的最小内存量为 768 MB。
要实现更佳的 ZFS 总体性能,建议使用 1 GB 内存。
建议至少使用 16 GB 的磁盘空间。磁盘空间的使用情况如下所述:
交换区域和转储设备-Solaris 安装程序创建的交换和转储卷的缺省大小如下:
Solaris 初始安装–在新的 ZFS 引导环境中,缺省交换卷大小按照物理内存的一半计算,一般在 512 MB 至 2 GB 范围内。可以在初始安装过程中调整交换卷的大小。
缺省转储卷的大小由内核基于 dumpadm 信息和物理内存大小进行计算。可以在初始安装过程中调整转储卷的大小。
Oracle Solaris Live Upgrade-当 UFS 根文件系统迁移到 ZFS 根文件系统时,ZFS 引导环境 (boot environment, BE) 的缺省交换卷大小可按 UFS BE 的交换设备的大小来计算。缺省交换卷大小计算结果加上 UFS BE 中所有交换设备的大小,即可得到 ZFS BE 中 ZFS 卷的大小。如果 UFS BE 中没有定义交换设备,则会将缺省交换卷大小设置为 512 MB。
在 ZFS BE 中,缺省转储卷大小设置为物理内存的一半,范围为 512 MB 至 2 GB。
只要新的大小支持系统运作,可以将交换和转储卷的大小调整为所选择的大小。有关更多信息,请参见调整 ZFS 交换设备和转储设备的大小。
引导环境 (Boot environment, BE)-除了新的交换和转储空间要求或调整的交换和转储设备大小外,从 UFS BE 迁移的 ZFS BE 还需要大约 6 GB 空间。从其他 ZFS BE 克隆的每个 ZFS BE 都不需要额外的磁盘空间,但是请考虑到以下情况:应用修补程序时,BE 大小会增加。同一根池中的所有 ZFS BE 都使用相同的交换和转储设备。
Solaris OS 组件 – 作为 OS 镜像一部分的根文件系统的所有子目录,除 /var 之外,必须与根文件系统处于同一数据集。此外,除了交换和转储设备之外,所有其他 Solaris OS 组件必须驻留在根池。
另一个限制是 /var 目录或数据集必须是单个数据集。例如,如果您还想使用 Oracle Solaris Live Upgrade 来迁移或修补 ZFS BE,或者创建此池的 ZFS Flash 归档文件,则您无法创建后代 /var 数据集,如 /var/tmp 等。
例如,磁盘空间为 12 GB 的系统对于可引导的 ZFS 环境来说可能会太小,因为每个交换和转储设备都需要 2 GB 磁盘空间,而且从 UFS BE 迁移的 ZFS BE 需要大约 6 GB 磁盘空间。
请查看以下 ZFS 存储池配置要求:
要用作根池的池必须具有 SMI 标签。使用磁盘片创建池满足此要求。
池必须存在于磁盘片或被镜像的磁盘片上。如果在 Oracle Solaris Live Upgrade 迁移期间尝试使用不支持的池配置,您会看到类似如下的消息:
ERROR: ZFS pool name does not support boot environments |
有关支持的 ZFS 根池配置的详细说明,请参见创建 ZFS 根池。
x86:磁盘必须包含 Solaris fdisk 分区。fdisk 分区是安装基于 x86 的系统时自动创建的。有关 Solaris fdisk 分区的更多信息,请参见《系统管理指南:设备和文件系统》中的“fdisk 分区创建准则”。
在基于 SPARC 和基于 x86 的系统上,指定用于在 ZFS 根池中引导的磁盘大小必须限制为 1 TB。
只有在安装完根池后,才能在根池中启用压缩。在安装期间,无法在根池中启用压缩。根池不支持 gzip 压缩算法。
初始安装创建根池后,或者在 Solaris Live Upgrade 迁移到 ZFS 根文件系统后,请勿重命名根池。重命名根池可能会导致系统无法引导。
在此 Solaris 发行版中,您可以使用 Solaris 交互式文本安装程序创建包含可引导的 ZFS 根文件系统的 ZFS 存储池来执行初始安装。如果您具有要用于 ZFS 根文件系统的现有 ZFS 存储池,则必须使用 Oracle Solaris Live Upgrade 将现有 UFS 根文件系统迁移到现有 ZFS 存储池中的 ZFS 根文件系统。有关更多信息,请参见将 UFS 根文件系统迁移到 ZFS 根文件系统 (Oracle Solaris Live Upgrade)。
如果要在完成 ZFS 根文件系统的初始安装后配置区域,并且计划修补或升级系统,请参见使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统 (Solaris 10 10/08)或使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统(最低Solaris 10 5/09)。
如果系统上已经具有 ZFS 存储池,则会通过以下消息确认。然而,这些池保持不动,除非您选择现有池中的磁盘来创建新存储池。
There are existing ZFS pools available on this system. However, they can only be upgraded using the Live Upgrade tools. The following screens will only allow you to install a ZFS root system, not upgrade one. |
如果为新池选择现有池的任何磁盘,则现有池将被销毁。
在开始初始安装以创建 ZFS 存储池之前,请参见ZFS 支持对于 Oracle Solaris 安装和 Oracle Solaris Live Upgrade 的要求。
Solaris 交互式文本安装过程与先前的 Solaris 发行版安装过程基本相同,区别在于系统会提示您创建 UFS 还是 ZFS 根文件系统。在此发行版中,UFS 仍为缺省文件系统。如果选择 ZFS 根文件系统,系统会提示您创建 ZFS 存储池。安装 ZFS 根文件系统的步骤如下:
选择 Solaris 交互式安装方法,因为 Solaris Flash 安装不可用于创建可引导的 ZFS 根文件系统。但是,您可以创建在 JumpStart 安装期间要使用的 ZFS Flash 归档文件。有关更多信息,请参见安装 ZFS 根文件系统(Oracle Solaris Flash 归档文件安装)。
从 Solaris 10 10/08 发行版开始,只要已安装最低 Solaris 10 10/08 发行版,就可以将 UFS 根文件系统迁移到 ZFS 根文件系统。有关迁移到 ZFS 根文件系统的更多信息,请参见将 UFS 根文件系统迁移到 ZFS 根文件系统 (Oracle Solaris Live Upgrade)。
要创建 ZFS 根文件系统,请选择 ZFS 选项。例如:
Choose Filesystem Type Select the filesystem to use for your Solaris installation [ ] UFS [X] ZFS |
在选择要安装的软件之后,系统将提示您选择用来创建 ZFS 存储池的磁盘。该屏幕与先前的 Solaris 发行版的屏幕类似。
Select Disks On this screen you must select the disks for installing Solaris software. Start by looking at the Suggested Minimum field; this value is the approximate space needed to install the software you've selected. For ZFS, multiple disks will be configured as mirrors, so the disk you choose, or the slice within the disk must exceed the Suggested Minimum value. NOTE: ** denotes current boot disk Disk Device Available Space ============================================================================= [X] c1t0d0 69994 MB (F4 to edit) [ ] c1t1d0 69994 MB [-] c1t2d0 0 MB [-] c1t3d0 0 MB Maximum Root Size: 69994 MB Suggested Minimum: 8279 MB |
您可以选择一个或多个用于 ZFS 根池的磁盘。如果选择两个磁盘,则会为根池设置镜像双磁盘配置。双磁盘或三磁盘镜像池为最佳。如果您有八个磁盘并选择了所有磁盘,则这八个磁盘将作为一个大的镜像用于根池。此配置并非最佳。还可以选择在完成初始安装后创建镜像根池。不支持对根池的 RAID-Z 池配置。有关配置 ZFS 存储池的更多信息,请参见ZFS 存储池的复制功能。
要选择两个磁盘来创建镜像的根池,请使用光标控制键选择第二个磁盘。在以下示例中,选择了 c1t1d0 和 c1t2d0 用作根池磁盘。这两个磁盘都必须具有 SMI 标签和分片 0。如果磁盘没有 SMI 标签或不包含分片,则必须退出安装程序,使用 format 实用程序对磁盘重新进行标记和分区,然后重新启动安装程序。
Select Disks On this screen you must select the disks for installing Solaris software. Start by looking at the Suggested Minimum field; this value is the approximate space needed to install the software you've selected. For ZFS, multiple disks will be configured as mirrors, so the disk you choose, or the slice within the disk must exceed the Suggested Minimum value. NOTE: ** denotes current boot disk Disk Device Available Space ============================================================================= [X] c1t0d0 69994 MB [X] c1t1d0 69994 MB (F4 to edit) [-] c1t2d0 0 MB [-] c1t3d0 0 MB Maximum Root Size: 69994 MB Suggested Minimum: 8279 MB |
如果可用空间栏显示 0 MB,则该磁盘很有可能具有 EFI 标签。如果您想使用带 EFI 标签的磁盘,则需要退出安装程序,使用 format -e 命令用 SMI 标签重新标记该磁盘,然后重新启动安装程序。
如果在安装期间没有创建镜像根池,您可以在安装之后轻松创建。有关信息,请参见如何创建镜像根池(安装后)。
为 ZFS 存储池选择了一个或多个磁盘后,将出现一个屏幕,显示类似如下的内容:
Configure ZFS Settings Specify the name of the pool to be created from the disk(s) you have chosen. Also specify the name of the dataset to be created within the pool that is to be used as the root directory for the filesystem. ZFS Pool Name: rpool ZFS Root Dataset Name: s10s_u9wos_08 ZFS Pool Size (in MB): 69995 Size of Swap Area (in MB): 2048 Size of Dump Area (in MB): 1536 (Pool size must be between 6231 MB and 69995 MB) [X] Keep / and /var combined [ ] Put /var on a separate dataset |
在此屏幕中,您可以通过在各项之间移动光标控制键,然后使用新值替换缺省值来更改 ZFS 池名称、数据集名称、池大小以及交换和转储设备大小。或者,您可以接受缺省值。另外,您可以修改创建和挂载 /var 文件系统的方式。
在此示例中,根数据集名称更改为 zfsBE。
ZFS Pool Name: rpool ZFS Root Dataset Name: zfsBE ZFS Pool Size (in MB): 69995 Size of Swap Area (in MB): 2048 Size of Dump Area (in MB): 1536 (Pool size must be between 6231 MB and 69995 MB) [X] Keep / and /var combined [ ] Put /var on a separate dataset |
您可以在此最后的安装屏幕中更改安装配置文件。例如:
Profile The information shown below is your profile for installing Solaris software. It reflects the choices you've made on previous screens. ============================================================================ Installation Option: Initial Boot Device: c1t0d0 Root File System Type: ZFS Client Services: None Regions: North America System Locale: C ( C ) Software: Solaris 10, Entire Distribution Pool Name: rpool Boot Environment Name: zfsBE Pool Size: 69995 MB Devices in Pool: c1t0d0 c1t1d0 |
安装完成后,查看生成的 ZFS 存储池和文件系统信息。例如:
# zpool status pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0 errors: No known data errors # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.03G 58.9G 96K /rpool rpool/ROOT 4.47G 58.9G 21K legacy rpool/ROOT/zfsBE 4.47G 58.9G 4.47G / rpool/dump 1.50G 58.9G 1.50G - rpool/export 44K 58.9G 23K /export rpool/export/home 21K 58.9G 21K /export/home rpool/swap 2.06G 61.0G 16K - |
zfs list 输出样例标识了根池组件,例如 rpool/ROOT 目录,该目录在缺省情况下不可访问。
要在同一存储池中创建其他 ZFS 引导环境 (boot environment, BE),可以使用 lucreate 命令。在以下示例中,创建了名为 zfs2BE 的新 BE。当前 BE 命名为 zfsBE,如 zfs list 输出所示。但是,lustatus 输出不会确认当前 BE,直到新 BE 创建完成。
# lustatus ERROR: No boot environments are configured on this system ERROR: cannot determine list of all boot environment names |
如果在同一池中创建新 ZFS BE,请使用类似如下的语法:
# lucreate -n zfs2BE INFORMATION: The current boot environment is not named - assigning name <zfsBE>. Current boot environment is named <zfsBE>. Creating initial configuration for primary boot environment <zfsBE>. The device </dev/dsk/c1t0d0s0> is not a root device for any boot environment; cannot get BE ID. PBE configuration successful: PBE name <zfsBE> PBE Boot Device </dev/dsk/c1t0d0s0>. 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. Updating system configuration files. Creating configuration for boot environment <zfs2BE>. Source boot environment is <zfsBE>. Creating boot environment <zfs2BE>. Cloning file systems from boot environment <zfsBE> to create boot environment <zfs2BE>. Creating snapshot for <rpool/ROOT/zfsBE> on <rpool/ROOT/zfsBE@zfs2BE>. Creating clone for <rpool/ROOT/zfsBE@zfs2BE> on <rpool/ROOT/zfs2BE>. Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/zfs2BE>. Population of boot environment <zfs2BE> successful. Creation of boot environment <zfs2BE> successful. |
在同一池内创建 ZFS BE 时,使用 ZFS 克隆和快照功能可立即创建 BE。有关使用 Oracle Solaris Live Upgrade 进行 ZFS 根迁移的更多详细信息,请参见将 UFS 根文件系统迁移到 ZFS 根文件系统 (Oracle Solaris Live Upgrade)。
接下来,验证新引导环境。例如:
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- zfsBE yes yes yes no - zfs2BE yes no no yes - # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.03G 58.9G 97K /rpool rpool/ROOT 4.47G 58.9G 21K legacy rpool/ROOT/zfs2BE 116K 58.9G 4.47G / rpool/ROOT/zfsBE 4.47G 58.9G 4.47G / rpool/ROOT/zfsBE@zfs2BE 75.5K - 4.47G - rpool/dump 1.50G 58.9G 1.50G - rpool/export 44K 58.9G 23K /export rpool/export/home 21K 58.9G 21K /export/home rpool/swap 2.06G 61.0G 16K - |
要从备用 BE 引导,请使用 luactivate 命令。在基于 SPARC 的系统上激活 BE 后,如果引导设备包含 ZFS 存储池,请使用 boot - L 命令确定可用 BE。从基于 x86 的系统引导时,请从 GRUB 菜单中确定要引导的 BE。
例如,在基于 SPARC 的系统上,可使用 boot - L 命令显示可用的 BE 列表。要从新 BE zfs2BE 引导,请选择选项 2。然后,键入显示的 boot -Z 命令。
ok boot -L Executing last command: boot -L Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0 File and args: -L 1 zfsBE 2 zfs2BE Select environment to boot: [ 1 - 2 ]: 2 To boot the selected entry, invoke: boot [<root-device>] -Z rpool/ROOT/zfs2BE ok boot -Z rpool/ROOT/zfs2BE |
有关引导 ZFS 文件系统的更多信息,请参见从 ZFS 根文件系统引导。
如果在安装期间没有创建 ZFS 镜像根池,您可以在安装之后轻松创建。
有关替换根池中的磁盘的信息,请参见如何替换 ZFS 根池中的磁盘。
显示当前根池的状态。
# zpool status rpool pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 errors: No known data errors |
附加第二个磁盘,以配置镜像根池。
# zpool attach rpool c1t0d0s0 c1t1d0s0 Please be sure to invoke installboot(1M) to make 'c1t1d0s0' bootable. Make sure to wait until resilver is done before rebooting. |
查看根池状态,确认重新同步已完成。
# zpool status rpool pool: rpool state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress for 0h1m, 24.26% done, 0h3m to go config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0 3.18G resilvered errors: No known data errors |
在上面的输出中,重新同步过程未完成。当您看到类似如下的消息时,说明重新同步已完成。
scrub: resilver completed after 0h10m with 0 errors on Thu Mar 11 11:27:22 2010 |
重新同步完成后,对第二个磁盘应用根块。
sparc# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t1d0s0 |
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0 |
验证您是否可以从第二个磁盘成功引导。
通过使用 SPARC 引导 PROM 中的 eeprom 命令和 setenv 命令,将系统设置为从新磁盘自动引导,或者重新配置 PC BIOS。
从 Solaris 10 10/09 发行版开始,可以在运行 UFS 根文件系统或 ZFS 根文件系统的系统中创建 Flash 归档文件。ZFS 根池的 Flash 归档文件包含整个池分层结构,但交换卷和转储卷以及任何已排除的数据集除外。交换卷和转储卷是在安装 Flash 归档文件时创建的。您可以按如下方式使用 Flash 归档文件安装方法:
生成一个 Flash 归档文件,该归档文件可用于安装和引导具有 ZFS 根文件系统的系统。
使用 ZFS Flash 归档文件执行系统的 JumpStart 安装。创建 ZFS Flash 归档文件会克隆整个根池,而不是各个引导环境。可以使用 flarcreate 和 flar 命令的 -D 选项排除池内的各个数据集。
在考虑使用 ZFS Flash 归档文件安装系统之前,请先查看以下限制:
只支持 ZFS Flash 归档文件的 JumpStart 安装。您无法使用 Flash 归档文件的交互式安装选项来安装具有 ZFS 根文件系统的系统,也无法使用 Flash 归档文件来安装具有 Oracle Solaris Live Upgrade 的 ZFS BE。
只能在体系结构与创建 ZFS Flash 归档文件的系统相同的系统上安装 Flash 归档文件。例如,在 sun4u 系统上创建的归档文件无法安装到 sun4v 系统。
只支持 ZFS Flash 归档文件的完整初始安装。您无法安装 ZFS 根文件系统的 Flash 差别归档文件,也无法安装混合 UFS/ZFS 归档文件。
现有 UFS Flash 归档文件仍只能用于安装 UFS 根文件系统。ZFS Flash 归档文件只能用于安装 ZFS 根文件系统。
虽然归档和安装了整个根池(减去显式排除的数据集),但是在创建归档文件时引导的 ZFS BE 只有在安装 Flash 归档文件后才可用。不过,使用 flarcreate 或 flar 命令的 -R rootdir 选项归档的池可用于归档当前引导的根池以外的根池。
使用 Flash 归档文件创建的 ZFS 根池的名称必须与主根池的名称相匹配。用于创建 Flash 归档文件的根池名称是分配给创建的新池的名称。不支持更改池名称。
ZFS Flash 归档文件不支持用于包括和排除单个文件的 flarcreate 和 flar 命令选项。您只能从 ZFS Flash 归档文件中排除整个数据集。
ZFS Flash 归档文件不支持 flar info 命令。例如:
# flar info -l zfs10u8flar ERROR: archive content listing not supported for zfs archives. |
在主系统上安装或升级到最低 Solaris 10 10/09 发行版后,您可以创建用于安装目标系统的 ZFS Flash 归档文件。基本过程如下:
在主系统上安装或升级到最低 Solaris 10 10/09 发行版。添加所需的任何自定义。
在主系统上使用 flarcreate 命令创建 ZFS Flash 归档文件。根池中的所有数据集(除了交换卷和转储卷)都包括在 ZFS Flash 归档文件中。
在安装服务器上创建一个包括 Flash 归档文件信息的 JumpStart 配置文件。
在目标系统上安装 ZFS Flash 归档文件。
使用 Flash 归档文件安装 ZFS 根池时,支持以下归档选项:
使用 flarcreate 或 flar 命令从指定的 ZFS 根池创建 Flash 归档文件。如果未指定,则会创建缺省根池的 Flash 归档文件。
使用 flarcreate -D dataset 从 Flash 归档文件排除指定的数据集。可以多次使用此选项来排除多个数据集。
安装完 ZFS Flash 归档文件后,将按如下方式配置系统:
创建了 Flash 归档文件的系统上的整个数据集分层结构会在目标系统上重新创建,但减去在创建归档文件时明确排除的任何数据集。交换卷和转储卷不包括在 Flash 归档文件中。
根池名称与用于创建归档文件的池的名称相同。
创建 Flash 归档文件时处于活动状态的引导环境在部署系统上是活动的并且是缺省 BE。
在主系统上安装或升级到最低 Solaris 10 10/09 发行版后,创建 ZFS 根池的 Flash 归档文件。例如:
# flarcreate -n zfsBE zfs10upflar Full Flash Checking integrity... Integrity OK. Running precreation scripts... Precreation scripts done. Determining the size of the archive... The archive will be approximately 4.94GB. Creating the archive... Archive creation complete. Running postcreation scripts... Postcreation scripts done. Running pre-exit scripts... Pre-exit scripts done. |
在要用作安装服务器的系统上,创建用于安装任何系统的 JumpStart 配置文件。例如,以下配置文件用于安装 zfs10upflar 归档文件。
install_type flash_install archive_location nfs system:/export/jump/zfs10upflar partitioning explicit pool rpool auto auto auto mirror c0t1d0s0 c0t0d0s0 |
可以创建 JumpStart 配置文件以安装 ZFS 根文件系?或 UFS 根文件系统。
ZFS 特定配置文件必须包含新的 pool 关键字。pool 关键字可安装一个新的根池,并在缺省情况下创建一个新的引导环境。您可以使用 bootenv installbe 关键字以及 bename 和 dataset 选项提供引导环境的名称并创建单独的 /var 数据集。
有关使用 JumpStart 功能的一般信息,请参见《Oracle Solaris 10 9/10 安装指南:自定义 JumpStart 和高级安装》。
如果要在完成 ZFS 根文件系统的 JumpStart 安装后配置区域,并且计划修补或升级系统,请参见使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统 (Solaris 10 10/08)或使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统(最低Solaris 10 5/09)。
自动指定池、交换卷或转储卷的片大小。将会检查磁盘的大小以验证是否可以容纳最小大小。在给定约束条件下(如磁盘大小、保留的片大小等),如果可以容纳最小大小,则会分配可能的最大池大小。
例如,如果指定了 c0t0d0s0,则在指定 all 或 auto 关键字时会创建尽可能大的根池片。或者,可以指定特定大小的片、交换卷或转储卷。
用于 ZFS 根池时,auto 关键字的工作方式与 all 关键字类似,因为池没有未使用的磁盘空间。
标识引导环境特征。
使用以下 bootenv 关键字语法可创建可引导的 ZFS 根环境:
bootenv installbe bename BE-name [ dataset mount-point]
创建一个由 bename 选项和 BE-name 项标识的新 BE,然后安装该 BE。
标识要安装的 BE-name。
如果 bename 没有与 pool 关键字一起使用,则会创建缺省 BE。
使用可选的 dataset 关键字可标识与根数据集分离的 /var 数据集。mount-point 值当前仅限于 /var。例如,单独的 /var 数据集的 bootenv 语法行将类似如下:
bootenv installbe bename zfsroot dataset /var |
定义要创建的新根池。必须提供以下关键字语法:
pool poolname poolsize swapsize dumpsize vdevlist |
标识要创建的池的名称。将会使用指定的池 size 和指定的物理设备 (vdev) 创建池。poolname 值不应标识现有池的名称,否则将会覆写现有池。
指定要创建的池的大小。该值可以为 auto 或 existing。在给定的约束条件(如磁盘大小、保留的片大小等)下,auto 值分配尽可能大的池大小。existing 值表示基于该名称的现有片的边界已被保留且未被覆写。除非通过 g(表示 GB)指定,否则大小采用 MB 为单位。
指定要创建的交换卷的大小。auto值表示使用缺省的交换大小。您可以使用 size 值指定大小。除非通过 g(表示 GB)指定,否则大小以 MB 为单位。
指定要创建的转储卷的大小。auto值表示使用缺省的交换大小。您可以使用 size 值指定大小。除非通过 g(表示 GB)指定,否则大小采用 MB 为单位。
指定要用于创建池的一个或多个设备。vdevlist 的格式与 zpool create 命令的格式相同。此时,在指定多个设备时仅支持镜像配置。对于根池,vdevlist 中的设备必须是片。any 值表示安装软件会选择一个合适的设备。
您可以镜像任意多个磁盘,但创建的池大小由指定磁盘中最小的一个确定。有关创建镜像存储池的更多信息,请参见镜像存储池配置。
本节提供了 ZFS 特定的 JumpStart 配置文件示例。
以下配置文件在标识为 pool newpool 的新池(其大小由 auto 关键字自动确定为指定磁盘的大小)中,通过 install_type initial_install 执行指定的初始安装。在磁盘镜像配置中(使用 mirror 关键字,磁盘指定为 c0t0d0s0 和 c0t1d0s0),交换区域和转储设备的大小通过 auto 关键字自动确定。使用 bootenv 关键字将引导环境特征设置为通过关键字 installbe 安装新 BE,并创建名为 s10-xx 的 bename。
install_type initial_install pool newpool auto auto auto mirror c0t0d0s0 c0t1d0s0 bootenv installbe bename s10-xx |
以下配置文件在称为 newpool(大小为 80 GB)的新池中,通过 SUNWCall 元簇的关键字 install_type initial_install 执行初始安装。该池是在由任意两个可用设备(足够大,可创建 80 GB 的池)组成的镜像配置中使用 2 GB 的交换卷和 2 GB 的转储卷创建的。如果两个这样的设备不可用,则安装会失败。使用 bootenv 关键字将引导环境特征设置为通过关键字 installbe 安装新 BE,并创建名为 s10–xx 的 bename。
install_type initial_install cluster SUNWCall pool newpool 80g 2g 2g mirror any any bootenv installbe bename s10-xx |
JumpStart 安装语法确保您能在同样包括 ZFS 根池的磁盘上保留或创建 UFS 文件系统。对于生产系统,不推荐使用该配置,但是该配置可以用于小型系统(例如膝上型电脑)上的转换或迁移。
开始可引导的 ZFS 根文件系统的 JumpStart 安装之前,请考虑以下问题:
您不能将现有 ZFS 存储池用于 JumpStart 安装以创建可引导的 ZFS 根文件系统。必须使用类似如下的语法创建新 ZFS 存储池:
pool rpool 20G 4G 4G c0t0d0s0 |
必须使用磁盘片而不是整个磁盘创建池,如ZFS 支持对于 Oracle Solaris 安装和 Oracle Solaris Live Upgrade 的要求中所述。例如,以下示例中的粗体部分语法是不可接受的:
install_type initial_install cluster SUNWCall pool rpool all auto auto mirror c0t0d0 c0t1d0 bootenv installbe bename newBE |
以下示例中的粗体部分语法是可以接受的:
install_type initial_install cluster SUNWCall pool rpool all auto auto mirror c0t0d0s0 c0t1d0s0 bootenv installbe bename newBE |
与 UFS 组件相关的 Oracle Solaris Live Upgrade 功能仍然可用,并且其工作方式与在先前的 Solaris 发行版中一样。
另外还提供了下列功能:
将 UFS 根文件系统迁移到 ZFS 根文件系统时,必须使用 -p 选项指定现有 ZFS 存储池。
如果 UFS 根文件系统在不同的片上具有组件,则会将这些组件迁移到 ZFS 根池。
可以迁移具有区域的系统,但在 Solaris 10 10/08 发行版中支持的配置有限。从 Solaris 10 5/09 发行版开始,支持更多的区域配置。有关更多信息,请参见以下各节:
使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统 (Solaris 10 10/08)
使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统(最低Solaris 10 5/09)
如果要迁移没有区域的系统,请参见使用 Oracle Solaris Live Upgrade 迁移到 ZFS 根文件系统(没有区域)。
在同一池中创建新的 ZFS BE 时,Oracle Solaris Live Upgrade 可以使用 ZFS 快照和克隆功能。因此,创建 BE 比在先前的 Solaris 发行版中快得多。
有关 Oracle Solaris 安装和 Oracle Solaris Live Upgrade 功能的详细信息,请参见《Oracle Solaris 10 9/10 安装指南:Solaris Live 升级和升级规划》。
将 UFS 根文件系统迁移到 ZFS 根文件系统的基本过程如下:
在任何基于 SPARC 或基于 x86 的受支持系统上,安装 Solaris 10 10/08、Solaris 10 5/09、Solaris 10 10/09 或 Oracle Solaris 10 9/10 发行版,或者使用标准升级程序从先前的 Solaris 10 发行版进行升级。
运行最低 Solaris 10 10/08 发行版时,为 ZFS 根文件系统创建 ZFS 存储池。
使用 Oracle Solaris Live Upgrade 将 UFS 根文件系统迁移到 ZFS 根文件系统。
使用 luactivate 命令激活 ZFS BE。
有关 ZFS 和 Oracle Solaris Live Upgrade 要求的信息,请参见ZFS 支持对于 Oracle Solaris 安装和 Oracle Solaris Live Upgrade 的要求。
使用 Oracle Solaris Live Upgrade 将 UFS 根文件系统迁移到 ZFS 根文件系统之前,请查看以下问题:
Oracle Solaris 安装程序 GUI 的标准升级选项不可用于从 UFS 迁移到 ZFS 根文件系统。要从 UFS 文件系统迁移,您必须使用 Oracle Solaris Live Upgrade。
在进行 Oracle Solaris Live Upgrade 操作之前,必须创建将用于引导的 ZFS 存储池。此外,由于当前的引导限制,必须使用片而不是整个磁盘创建 ZFS 根池。例如:
# zpool create rpool mirror c1t0d0s0 c1t1d0s0 |
创建新池之前,请确保要用于池中的磁盘具有 SMI (VTOC) 标签而不是 EFI 标签。如果使用 SMI 标签重新标记磁盘,请确保标记过程未更改分区方案。在大多数情况下,所有磁盘容量应位于将用于根池的片中。
您不能使用 Oracle Solaris Live Upgrade 从 ZFS BE 创建 UFS BE。如果将 UFS BE 迁移到 ZFS BE,并且保留 UFS BE,则可以从 UFS BE 或 ZFS BE 引导。
请勿使用 zfs rename 命令重命名 ZFS BE,因为 Oracle Solaris Live Upgrade 功能无法检测名称更改。后续命令(如 ludelete)将会失败。实际上,如果有要继续使用的现有 BE,则请勿重命名 ZFS 池或文件系统。
创建备用 BE(主 BE 的克隆)时,不能使用 -f、-x、-y、-Y 和 -z 选项从主 BE 中包括或排除文件。在以下情况下,您仍可以使用包括和排除选项设置:
UFS -> UFS UFS -> ZFS ZFS -> ZFS (different pool) |
虽然可以使用 Oracle Solaris Live Upgrade 将 UFS 根文件系统升级到 ZFS 根文件系统,但不能使用 Oracle Solaris Live Upgrade 升级非根或共享文件系统。
不能使用 lu 命令创建或迁移 ZFS 根文件系统。
以下示例说明如何将 UFS 根文件系统迁移到 ZFS 根文件系统。
如果要迁移或更新具有区域的系统,请参见以下各节:
使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统 (Solaris 10 10/08)
使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统(最低Solaris 10 5/09)
以下示例说明如何从 UFS 根文件系统创建 ZFS 根文件系统的 BE。包含 UFS 根文件系统的当前 BE ufsBE 由 -c 选项标识。如果不包括可选的 -c 选项,则当前 BE 名称将缺省为设备名称。新 BE zfsBE 由 -n 选项标识。在执行 lucreate 操作之前,ZFS 存储池必须存在。
必须使用片而不是整个磁盘创建 ZFS 存储池,才能使 ZFS 存储池可升级和可引导。创建新池之前,请确保要用于池中的磁盘具有 SMI (VTOC) 标签而不是 EFI 标签。如果使用 SMI 标签重新标记磁盘,请确保标记过程未更改分区方案。在大多数情况下,所有磁盘容量应位于打算用于根池的片中。
# zpool create rpool mirror c1t2d0s0 c2t1d0s0 # lucreate -c ufsBE -n zfsBE -p rpool Analyzing system configuration. No name for current boot environment. Current boot environment is named <ufsBE>. Creating initial configuration for primary boot environment <ufsBE>. The device </dev/dsk/c1t0d0s0> is not a root device for any boot environment; cannot get BE ID. PBE configuration successful: PBE name <ufsBE> PBE Boot Device </dev/dsk/c1t0d0s0>. Comparing source boot environment <ufsBE> 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/c1t2d0s0> is not a root device for any boot environment; cannot get BE ID. Creating configuration for boot environment <zfsBE>. Source boot environment is <ufsBE>. 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 </rpool/ROOT>. Creating compare database for file system </>. Updating compare databases on boot environment <zfsBE>. Making boot environment <zfsBE> bootable. Creating boot_archive for /.alt.tmp.b-qD.mnt updating /.alt.tmp.b-qD.mnt/platform/sun4u/boot_archive Population of boot environment <zfsBE> successful. Creation of boot environment <zfsBE> successful. |
lucreate 操作完成后,使用 lustatus 命令查看 BE 状态。例如:
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- ufsBE yes yes yes no - zfsBE yes no no yes - |
然后,查看 ZFS 组件列表。例如:
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 7.17G 59.8G 95.5K /rpool rpool/ROOT 4.66G 59.8G 21K /rpool/ROOT rpool/ROOT/zfsBE 4.66G 59.8G 4.66G / rpool/dump 2G 61.8G 16K - rpool/swap 517M 60.3G 16K - |
接下来,使用 luactivate 命令激活新 ZFS BE。例如:
# luactivate zfsBE A Live Upgrade Sync operation will be performed on startup of boot environment <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. ********************************************************************** . . . Modifying boot archive service Activation of boot environment <zfsBE> successful. |
接下来,将系统重新引导至 ZFS BE。
# init 6 |
确认 ZFS BE 是否处于活动状态。
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- ufsBE yes no no yes - zfsBE yes yes yes no - |
如果切换回 UFS BE,必须重新导入在引导 ZFS BE 时创建的所有 ZFS 存储池,因为它们在 UFS BE 中不会自动可用。
如果不再需要 UFS BE,可以使用 ludelete 命令将其删除。
在同一池中从 ZFS BE 创建 ZFS BE 非常快捷,因为该操作使用 ZFS 快照和克隆功能。如果当前 BE 驻留在同一 ZFS 池上,则可以省略 -p 选项。
如果有多个 ZFS BE,请执行以下操作来选择从哪个 BE 引导:
SPARC:您可以使用 boot -L 命令确定可用的 BE,并使用 boot -Z 命令从中选择一个 BE 来执行引导。
x86:您可以从 GRUB 菜单中选择一个 BE。
有关更多信息,请参见示例 5–9。
# lucreate -n zfs2BE Analyzing system configuration. No name for current boot environment. INFORMATION: The current boot environment is not named - assigning name <zfsBE>. Current boot environment is named <zfsBE>. Creating initial configuration for primary boot environment <zfsBE>. The device </dev/dsk/c1t0d0s0> is not a root device for any boot environment; cannot get BE ID. PBE configuration successful: PBE name <zfsBE> PBE Boot Device </dev/dsk/c1t0d0s0>. 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. Updating system configuration files. Creating configuration for boot environment <zfs2BE>. Source boot environment is <zfsBE>. Creating boot environment <zfs2BE>. Cloning file systems from boot environment <zfsBE> to create boot environment <zfs2BE>. Creating snapshot for <rpool/ROOT/zfsBE> on <rpool/ROOT/zfsBE@zfs2BE>. Creating clone for <rpool/ROOT/zfsBE@zfs2BE> on <rpool/ROOT/zfs2BE>. Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/zfs2BE>. Population of boot environment <zfs2BE> successful. Creation of boot environment <zfs2BE> successful. |
您可以使用其他软件包或修补程序升级 ZFS BE。
基本过程如下:
使用 lucreate 命令创建备用 BE。
激活该备用 BE 并从中引导。
使用 luupgrade 命令升级主 ZFS BE 以添加软件包或修补程序。
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- zfsBE yes no no yes - zfs2BE yes yes yes no - # luupgrade -p -n zfsBE -s /net/system/export/s10up/Solaris_10/Product SUNWchxge Validating the contents of the media </net/install/export/s10up/Solaris_10/Product>. Mounting the BE <zfsBE>. Adding packages to the BE <zfsBE>. Processing package instance <SUNWchxge> from </net/install/export/s10up/Solaris_10/Product> Chelsio N110 10GE NIC Driver(sparc) 11.10.0,REV=2006.02.15.20.41 Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. This appears to be an attempt to install the same architecture and version of a package which is already installed. This installation will attempt to overwrite this package. Using </a> as the package base directory. ## Processing package information. ## Processing system information. 4 package pathnames are already properly installed. ## Verifying package dependencies. ## Verifying disk space requirements. ## Checking for conflicts with packages already installed. ## Checking for setuid/setgid programs. This package contains scripts which will be executed with super-user permission during the process of installing this package. Do you want to continue with the installation of <SUNWchxge> [y,n,?] y Installing Chelsio N110 10GE NIC Driver as <SUNWchxge> ## Installing part 1 of 1. ## Executing postinstall script. Installation of <SUNWchxge> was successful. Unmounting the BE <zfsBE>. The package add to the BE <zfsBE> completed. |
可以使用 Oracle Solaris Live Upgrade 迁移具有区域的系统,但在 Solaris 10 10/08 发行版中支持的配置有限。如果安装或升级到最低 Solaris 10 5/09 发行版,可支持更多区域配置。有关更多信息,请参见使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统(最低Solaris 10 5/09)。
本节介绍如何配置和安装具有区域的系统,以便使用 Oracle Solaris Live Upgrade 升级和修补该系统。如果要迁移到没有区域的 ZFS 根文件系统,请参见使用 Oracle Solaris Live Upgrade 迁移到 ZFS 根文件系统(没有区域)。
如果要在 Solaris 10 10/08 发行版中迁移具有区域的系统或配置具有区域的系统,请查看以下过程:
按照建议的过程在具有 ZFS 根文件系统的系统上设置区域,以确保可以在该系统上使用 Oracle Solaris Live Upgrade。
此过程解释如何将安装了区域的 UFS 根文件系统迁移到 ZFS 根文件系统,以及如何升级或修补的 ZFS 区域根配置。
在后面的步骤中,示例池名称为 rpool,活动引导环境的示例名称为 s10BE*。
如果系统正在运行先前的 Solaris 10 发行版,请将其升级到 Solaris 10 10/08 发行版。
有关对运行 Solaris 10 发行版的系统进行升级的更多信息,请参见《Oracle Solaris 10 9/10 安装指南:Solaris Live 升级和升级规划》。
创建根池。
# zpool create rpool mirror c0t1d0 c1t1d0 |
有关根池要求的信息,请参见ZFS 支持对于 Oracle Solaris 安装和 Oracle Solaris Live Upgrade 的要求。
确认已引导 UFS 环境中的区域。
创建新 ZFS 引导环境。
# lucreate -n s10BE2 -p rpool |
此命令将为新引导环境在根池中建立数据集并将当前引导环境(包括区域)复制到这些数据集。
激活新 ZFS 引导环境。
# luactivate s10BE2 |
现在,系统正在运行 ZFS 根文件系统,但 UFS 上的区域根仍在 UFS 根文件系统中。需要执行后续步骤将 UFS 区域完全迁移到支持的 ZFS 配置。
重新引导系统。
# init 6 |
将区域迁移到 ZFS BE。
解决任何潜在的挂载点问题。
由于 Oracle Solaris Live Upgrade 中的错误,非活动引导环境可能无法引导,因为引导环境中的 ZFS 数据集或区域的 ZFS 数据集有无效的挂载点。
查看 zfs list 输出。
查找不正确的临时挂载点。例如:
# zfs list -r -o name,mountpoint rpool/ROOT/s10u6 NAME MOUNTPOINT rpool/ROOT/s10u6 /.alt.tmp.b-VP.mnt/ rpool/ROOT/s10u6/zones /.alt.tmp.b-VP.mnt//zones rpool/ROOT/s10u6/zones/zonerootA /.alt.tmp.b-VP.mnt/zones/zonerootA |
根 ZFS BE (rpool/ROOT/s10u6) 的挂载点应为 /。
重置 ZFS BE 及其数据集的挂载点。
例如:
# zfs inherit -r mountpoint rpool/ROOT/s10u6 # zfs set mountpoint=/ rpool/ROOT/s10u6 |
重新引导系统。
当提供选项来引导特定的引导环境时(在 GRUB 菜单中或 OpenBoot PROM 提示符下),请选择刚刚更正其挂载点的引导环境。
此过程解释如何设置 ZFS 根文件系统和可以进行升级或修补的 ZFS 区域根配置。在此配置中,ZFS 区域根创建为 ZFS 数据集。
在后面的步骤中,示例池名称为 rpool,活动引导环境的示例名称为 s10BE。区域数据集的名称可以为任何合法的数据集名称。在以下示例中,区域数据集名称为 zones。
使用 Solaris 交互式文本安装程序或 Solaris JumpStart 安装方法安装具有 ZFS 根的系统。
有关使用初始安装方法或 Solaris JumpStart 方法安装 ZFS 根文件系统的信息,请参见安装 ZFS 根文件系统(初始安装)或安装 ZFS 根文件系统(Oracle Solaris JumpStart 安装)。
从新创建的根池引导系统。
创建数据集以用于对区域根进行分组。
例如:
# zfs create -o canmount=noauto rpool/ROOT/s10BE/zones |
将 canmount 属性的值设置为 noauto 可防止通过 Oracle Solaris Live Upgrade 显式操作和系统启动代码以外的其他方式挂载数据集。
挂载新创建的区域数据集。
# zfs mount rpool/ROOT/s10BE/zones |
数据集挂载在 /zones。
为每个区域根创建并挂载数据集。
# zfs create -o canmount=noauto rpool/ROOT/s10BE/zones/zonerootA # zfs mount rpool/ROOT/s10BE/zones/zonerootA |
在区域根目录上设置适当的权限。
# chmod 700 /zones/zonerootA |
配置区域,如下所示设置区域路径:
# zonecfg -z zoneA zoneA: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:zoneA> create zonecfg:zoneA> set zonepath=/zones/zonerootA |
可通过使用以下语法在引导系统时自动引导区域:
zonecfg:zoneA> set autoboot=true |
安装区域。
# zoneadm -z zoneA install |
引导区域。
# zoneadm -z zoneA boot |
当您需要升级或修补 ZFS 上具有区域根的 ZFS 根文件系统时,请使用此过程。这些更新可以是对系统进行升级,也可以是应用一些修补程序。
在后面的步骤中,newBE 为升级或修补的引导环境的示例名称。
创建引导环境以进行升级或修补。
# lucreate -n newBE |
将克隆现有引导环境,包括所有区域。将为原始引导环境中的每个数据集创建一个数据集。将在与当前根池相同的池中创建新数据集。
选择以下操作之一来升级系统或将修补程序应用到新引导环境:
升级系统。
# luupgrade -u -n newBE -s /net/install/export/s10u7/latest |
其中 -s 选项指定 Solaris 安装介质的位置。
将修补程序应用到新引导环境。
# luupgrade -t -n newBE -t -s /patchdir 139147-02 157347-14 |
激活新引导环境。
# luactivate newBE |
从新激活的引导环境引导。
# init 6 |
解决任何潜在的挂载点问题。
由于 Oracle Solaris Live Upgrade 功能中的错误,非活动引导环境可能无法引导,因为引导环境中的 ZFS 数据集或区域的 ZFS 数据集有无效的挂载点。
查看 zfs list 输出。
查找不正确的临时挂载点。例如:
# zfs list -r -o name,mountpoint rpool/ROOT/newBE NAME MOUNTPOINT rpool/ROOT/newBE /.alt.tmp.b-VP.mnt/ rpool/ROOT/newBE/zones /.alt.tmp.b-VP.mnt/zones rpool/ROOT/newBE/zones/zonerootA /.alt.tmp.b-VP.mnt/zones/zonerootA |
根 ZFS BE (rpool/ROOT/newBE) 的挂载点应为 /。
重置 ZFS BE 及其数据集的挂载点。
例如:
# zfs inherit -r mountpoint rpool/ROOT/newBE # zfs set mountpoint=/ rpool/ROOT/newBE |
重新引导系统。
当提供选项来引导特定的引导环境时(在 GRUB 菜单中或 OpenBoot PROM 提示符下),请选择刚刚更正其挂载点的引导环境。
从 Solaris 10 10/08 发行版开始,您可以使用 Oracle Solaris Live Upgrade 功能迁移或升级具有区域的系统。从 Solaris 10 5/09 发行版开始,Live Upgrade 支持更多稀疏根和完全根区域配置。
本节介绍从 Solaris 10 5/09 发行版开始,如何配置具有区域的系统,以便使用 Oracle Solaris Live Upgrade 升级和修补该系统。如果要迁移到没有区域的 ZFS 根文件系统,请参见使用 Oracle Solaris Live Upgrade 迁移到 ZFS 根文件系统(没有区域)。
从 Solaris 10 5/09 发行版开始,对 ZFS 和区域使用 Oracle Solaris Live Upgrade 时,请考虑以下几点:
要对从 Solaris 10 5/09 发行版开始支持的区域配置使用 Oracle Solaris Live Upgrade,首先必须使用标准升级程序将系统升级到最低 Solaris 10 5/09 发行版。
然后,使用 Oracle Solaris Live Upgrade,您既可以将具有区域根目录的 UFS 根文件系统迁移到 ZFS 根文件系统,也可以升级或修补 ZFS 根文件系统和区域根目录。
您无法将不受支持的区域配置从先前的 Solaris 10 发行版直接迁移到 Solaris 10 5/09 或以上的发行版。
从 Solaris 10 5/09 发行版开始,如果您要迁移或配置具有区域的系统,请查看以下信息:
在使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统之前,需要先查看支持的区域配置。
将 UFS 根文件系统迁移到 ZFS 根文件系统-支持以下区域根配置:
UFS 根文件系统中的目录
UFS 根文件系统中的挂载点的子目录
UFS 根文件系统的区域根位于 UFS 根文件系统目录中或 UFS 根文件系统挂载点的子目录中,ZFS 非根池具有区域根
不支持以下的 UFS/区域配置:以区域根作为挂载点的 UFS 系统。
迁移或升级 ZFS 根文件系统-支持以下区域根配置:
ZFS 根池中的数据集。在某些情况下,如果在执行 Oracle Solaris Live Upgrade 操作前未提供区域根的数据集,Oracle Solaris Live Upgrade 将会创建区域根的数据集 (zoneds)。
ZFS 根文件系统的子目录
ZFS 根文件系统外的数据集
ZFS 根文件系统外的数据集的子目录
非根池中的数据集。在以下示例中,zonepool/zones 是一个包含区域根的数据集,rpool 包含 ZFS BE:
zonepool zonepool/zones zonepool/zones/myzone rpool rpool/ROOT rpool/ROOT/myBE |
如果使用下列语法,Oracle Solaris Live Upgrade 会对 zonepool 和 rpool BE 中的区域实施快照并进行克隆:
# lucreate -n newBE |
创建 newBE BE,位于 rpool/ROOT/newBE 中。激活后,newBE 提供访问 zonepool 组件的途径。
在上面的示例中,如果 /zonepool/zones 是一个子目录,而不是单独数据集,则 Live Upgrade 会将其作为根池 rpool 的组件进行迁移。
UFS 和 ZFS 区域的迁移或升级信息-查看下列可能会影响 UFS 或 ZFS 环境的迁移或升级的因素:
如果您在 Solaris 10 10/08 发行版中按照使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统 (Solaris 10 10/08)所述的方法配置区域并已升级到最低 Solaris 10 5/09 发行版,则应能够迁移到 ZFS 根文件系统,或者使用 Solaris Live Upgrade 升级到 Solaris 10 5/09 或以上的发行版。
请勿在嵌套目录中创建区域根,例如 zones/zone1 和 zones/zone1/zone2。否则,引导时挂载可能失败。
执行最低 Solaris 10 5/09 发行版的初始安装之后,使用此过程创建 ZFS 根文件系统。使用 luupgrade 功能将 ZFS 根文件系统升级到最低 Solaris 10 5/09 发行版之后,也可以使用此过程。然后,可以升级或修补使用此过程创建的 ZFS BE。
在后面的步骤中,Oracle Solaris 10 9/10 示例系统在 /rpool/zones 中具有 ZFS 根文件系统和区域根数据集。将创建名为 zfs2BE 的 ZFS BE,然后可以对其进行升级或修补。
查看现有的 ZFS 文件系统。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 7.26G 59.7G 98K /rpool rpool/ROOT 4.64G 59.7G 21K legacy rpool/ROOT/zfsBE 4.64G 59.7G 4.64G / rpool/dump 1.00G 59.7G 1.00G - rpool/export 44K 59.7G 23K /export rpool/export/home 21K 59.7G 21K /export/home rpool/swap 1G 60.7G 16K - rpool/zones 633M 59.7G 633M /rpool/zones |
确保安装和引导了区域。
# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared 2 zfszone running /rpool/zones native shared |
创建 ZFS BE。
# lucreate -n zfs2BE Analyzing system configuration. No name for current boot environment. INFORMATION: The current boot environment is not named - assigning name <zfsBE>. Current boot environment is named <zfsBE>. Creating initial configuration for primary boot environment <zfsBE>. The device </dev/dsk/c1t0d0s0> is not a root device for any boot environment; cannot get BE ID. PBE configuration successful: PBE name <zfsBE> PBE Boot Device </dev/dsk/c1t0d0s0>. 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. Updating system configuration files. Creating configuration for boot environment <zfs2BE>. Source boot environment is <zfsBE>. Creating boot environment <zfs2BE>. Cloning file systems from boot environment <zfsBE> to create boot environment <zfs2BE>. Creating snapshot for <rpool/ROOT/zfsBE> on <rpool/ROOT/zfsBE@zfs2BE>. Creating clone for <rpool/ROOT/zfsBE@zfs2BE> on <rpool/ROOT/zfs2BE>. Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/zfs2BE>. Population of boot environment <zfs2BE> successful. Creation of boot environment <zfs2BE> successful. |
激活 ZFS BE。
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- zfsBE yes yes yes no - zfs2BE yes no no yes - # luactivate zfs2BE A Live Upgrade Sync operation will be performed on startup of boot environment <zfs2BE>. . . . # init 6 |
确认在新 BE 中创建了 ZFS 文件系统和区域。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 7.38G 59.6G 98K /rpool rpool/ROOT 4.72G 59.6G 21K legacy rpool/ROOT/zfs2BE 4.72G 59.6G 4.64G / rpool/ROOT/zfs2BE@zfs2BE 74.0M - 4.64G - rpool/ROOT/zfsBE 5.45M 59.6G 4.64G /.alt.zfsBE rpool/dump 1.00G 59.6G 1.00G - rpool/export 44K 59.6G 23K /export rpool/export/home 21K 59.6G 21K /export/home rpool/swap 1G 60.6G 16K - rpool/zones 17.2M 59.6G 633M /rpool/zones rpool/zones-zfsBE 653M 59.6G 633M /rpool/zones-zfsBE rpool/zones-zfsBE@zfs2BE 19.9M - 633M - # zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared - zfszone installed /rpool/zones native shared |
在 Solaris 10 5/09 或以上的发行版中,当您需要升级或修补具有区域根的 ZFS 根文件系统时,请使用此过程。这些更新可以是对系统进行升级,也可以是应用一些修补程序。
在后面的步骤中,zfs2BE 为升级或修补的引导环境的示例名称。
查看现有的 ZFS 文件系统。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 7.38G 59.6G 100K /rpool rpool/ROOT 4.72G 59.6G 21K legacy rpool/ROOT/zfs2BE 4.72G 59.6G 4.64G / rpool/ROOT/zfs2BE@zfs2BE 75.0M - 4.64G - rpool/ROOT/zfsBE 5.46M 59.6G 4.64G / rpool/dump 1.00G 59.6G 1.00G - rpool/export 44K 59.6G 23K /export rpool/export/home 21K 59.6G 21K /export/home rpool/swap 1G 60.6G 16K - rpool/zones 22.9M 59.6G 637M /rpool/zones rpool/zones-zfsBE 653M 59.6G 633M /rpool/zones-zfsBE rpool/zones-zfsBE@zfs2BE 20.0M - 633M - |
确保安装和引导了区域。
# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared 5 zfszone running /rpool/zones native shared |
创建 ZFS BE 以进行升级或修补。
# lucreate -n zfs2BE 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. Updating system configuration files. Creating configuration for boot environment <zfs2BE>. Source boot environment is <zfsBE>. Creating boot environment <zfs2BE>. Cloning file systems from boot environment <zfsBE> to create boot environment <zfs2BE>. Creating snapshot for <rpool/ROOT/zfsBE> on <rpool/ROOT/zfsBE@zfs2BE>. Creating clone for <rpool/ROOT/zfsBE@zfs2BE> on <rpool/ROOT/zfs2BE>. Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/zfs2BE>. Creating snapshot for <rpool/zones> on <rpool/zones@zfs10092BE>. Creating clone for <rpool/zones@zfs2BE> on <rpool/zones-zfs2BE>. Population of boot environment <zfs2BE> successful. Creation of boot environment <zfs2BE> successful. |
选择以下操作之一来升级系统或将修补程序应用到新引导环境:
升级系统。
# luupgrade -u -n zfs2BE -s /net/install/export/s10up/latest |
其中 -s 选项指定 Solaris 安装介质的位置。
此过程要花费很长时间。
有关 luupgrade 过程的完整示例,请参见示例 5–6。
将修补程序应用到新引导环境。
# luupgrade -t -n zfs2BE -t -s /patchdir patch-id-02 patch-id-04 |
激活新引导环境。
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- zfsBE yes yes yes no - zfs2BE yes no no yes - # luactivate zfs2BE A Live Upgrade Sync operation will be performed on startup of boot environment <zfs2BE>. . . . |
从新激活的引导环境引导。
# init 6 |
在此示例中,将在具有 ZFS 根文件系统和非根池的区域根的 Solaris 10 10/09 系统上创建的 ZFS BE (zfsBE) 升级到 Oracle Solaris 10 9/10 发行版。此过程要花费较长时间。然后,激活升级的 BE (zfs2BE)。请确保在尝试升级之前,安装并引导了区域。
在此示例中,zonepool 池、/zonepool/zones 数据集和 zfszone 区域是按如下方式创建的:
# zpool create zonepool mirror c2t1d0 c2t5d0 # zfs create zonepool/zones # chmod 700 zonepool/zones # zonecfg -z zfszone zfszone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:zfszone> create zonecfg:zfszone> set zonepath=/zonepool/zones zonecfg:zfszone> verify zonecfg:zfszone> exit # zoneadm -z zfszone install cannot create ZFS dataset zonepool/zones: dataset already exists Preparing to install zone <zfszone>. Creating list of files to copy from the global zone. Copying <8960> files to the zone. . . . |
# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared 2 zfszone running /zonepool/zones native shared # lucreate -n zfsBE . . . # luupgrade -u -n zfsBE -s /net/install/export/s10up/latest 40410 blocks miniroot filesystem is <lofs> Mounting miniroot at </net/system/export/s10up/latest/Solaris_10/Tools/Boot> Validating the contents of the media </net/system/export/s10up/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 <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. Updating package information on boot environment <zfsBE>. Package information successfully updated on boot environment <zfsBE>. 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. Installing failsafe Failsafe install is complete. # luactivate zfsBE # init 6 # lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- zfsBE yes no no yes - zfs2BE yes yes yes no - # zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared - zfszone installed /zonepool/zones native shared |
使用此过程将具有 UFS 根文件系统和区域根的系统迁移到 Solaris 10 5/09 或以上的发行版。然后,使用 Oracle Solaris Live Upgrade 创建 ZFS BE。
在后面的步骤中,示例 UFS BE 名称为 c0t1d0s0,UFS 区域根为 zonepool/zfszone,ZFS 根 BE 为 zfsBE。
如果系统正在运行先前的 Solaris 10 发行版,请将其升级到最低 Solaris 10 5/09 发行版。
有关对运行 Solaris 10 发行版的系统进行升级的信息,请参见《Oracle Solaris 10 9/10 安装指南:Solaris Live 升级和升级规划》。
创建根池。
有关根池要求的信息,请参见ZFS 支持对于 Oracle Solaris 安装和 Oracle Solaris Live Upgrade 的要求。
确认已引导 UFS 环境中的区域。
# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared 2 zfszone running /zonepool/zones native shared |
创建新 ZFS 引导环境。
# lucreate -c c1t1d0s0 -n zfsBE -p rpool |
此命令将为新引导环境在根池中建立数据集并将当前引导环境(包括区域)复制到这些数据集。
激活新 ZFS 引导环境。
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- c1t1d0s0 yes no no yes - zfsBE yes yes yes no - # luactivate zfsBE A Live Upgrade Sync operation will be performed on startup of boot environment <zfsBE>. . . . |
重新引导系统。
# init 6 |
确认在新 BE 中创建了 ZFS 文件系统和区域。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /rpool rpool/ROOT 4.67G 60.8G 21K /rpool/ROOT rpool/ROOT/zfsBE 4.67G 60.8G 4.67G / rpool/dump 1.00G 60.8G 1.00G - rpool/swap 517M 61.3G 16K - zonepool 634M 7.62G 24K /zonepool zonepool/zones 270K 7.62G 633M /zonepool/zones zonepool/zones-c1t1d0s0 634M 7.62G 633M /zonepool/zones-c1t1d0s0 zonepool/zones-c1t1d0s0@zfsBE 262K - 633M - # zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared - zfszone installed /zonepool/zones native shared |
在此示例中,将具有 UFS 根文件系统和区域根 (/uzone/ufszone)、ZFS 非根池 (pool) 以及区域根 (/pool/zfszone) 的 Oracle Solaris 10 9/10 系统迁移到 ZFS 根文件系统。在尝试迁移之前,请确保创建了 ZFS 根池并且安装和引导了区域。
# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared 2 ufszone running /uzone/ufszone native shared 3 zfszone running /pool/zones/zfszone native shared |
# lucreate -c ufsBE -n zfsBE -p rpool Analyzing system configuration. No name for current boot environment. Current boot environment is named <zfsBE>. Creating initial configuration for primary boot environment <zfsBE>. The device </dev/dsk/c1t0d0s0> is not a root device for any boot environment; cannot get BE ID. PBE configuration successful: PBE name <ufsBE> PBE Boot Device </dev/dsk/c1t0d0s0>. Comparing source boot environment <ufsBE> 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/c1t1d0s0> is not a root device for any boot environment; cannot get BE ID. Creating configuration for boot environment <zfsBE>. Source boot environment is <ufsBE>. 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. Copying root of zone <ufszone> to </.alt.tmp.b-EYd.mnt/uzone/ufszone>. Creating snapshot for <pool/zones/zfszone> on <pool/zones/zfszone@zfsBE>. Creating clone for <pool/zones/zfszone@zfsBE> on <pool/zones/zfszone-zfsBE>. Creating compare databases for boot environment <zfsBE>. Creating compare database for file system </rpool/ROOT>. Creating compare database for file system </>. Updating compare databases on boot environment <zfsBE>. Making boot environment <zfsBE> bootable. Creating boot_archive for /.alt.tmp.b-DLd.mnt updating /.alt.tmp.b-DLd.mnt/platform/sun4u/boot_archive Population of boot environment <zfsBE> successful. Creation of boot environment <zfsBE> successful. # lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- ufsBE yes yes yes no - zfsBE yes no no yes - # luactivate zfsBE . . . # init 6 . . . # zfs list NAME USED AVAIL REFER MOUNTPOINT pool 628M 66.3G 19K /pool pool/zones 628M 66.3G 20K /pool/zones pool/zones/zfszone 75.5K 66.3G 627M /pool/zones/zfszone pool/zones/zfszone-ufsBE 628M 66.3G 627M /pool/zones/zfszone-ufsBE pool/zones/zfszone-ufsBE@zfsBE 98K - 627M - rpool 7.76G 59.2G 95K /rpool rpool/ROOT 5.25G 59.2G 18K /rpool/ROOT rpool/ROOT/zfsBE 5.25G 59.2G 5.25G / rpool/dump 2.00G 59.2G 2.00G - rpool/swap 517M 59.7G 16K - # zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared - ufszone installed /uzone/ufszone native shared - zfszone installed /pool/zones/zfszone native shared |
Solaris OS 初始安装期间,或者使用 Oracle Solaris Live Upgrade 从 UFS 文件系统迁移之后,会在 ZFS 根池中的 ZFS 卷上创建交换区域。例如:
# swap -l swapfile dev swaplo blocks free /dev/zvol/dsk/rpool/swap 256,1 16 4194288 4194288 |
Solaris OS 初始安装或者使用 Oracle Solaris Live Upgrade 从 UFS 文件系统升级期间,会在 ZFS 根池中的 ZFS 卷上创建转储设备。一般而言,转储设备不需要管理,因为它是在安装时自动设置的。例如:
# dumpadm Dump content: kernel pages Dump device: /dev/zvol/dsk/rpool/dump (dedicated) Savecore directory: /var/crash/t2000 Savecore enabled: yes Save compressed: on |
如果禁用并移除转储设备,则在重新创建转储设备之后,需要使用 dumpadm 命令予以启用。大多数情况下,只需要使用 zfs 命令调整转储设备的大小。
有关安装程序创建的交换卷和转储卷大小的信息,请参见ZFS 支持对于 Oracle Solaris 安装和 Oracle Solaris Live Upgrade 的要求。
在安装期间和安装后,可以对交换卷的大小和转储卷的大小进行调整。有关更多信息,请参见调整 ZFS 交换设备和转储设备的大小。
必须将单独的 ZFS 卷用于交换区域和转储设备。
当前,不支持在 ZFS 文件系统上使用交换文件。
如果在安装或升级系统后需要更改交换区域或转储设备,请像在先前的 Solaris 发行版中那样使用 swap 和 dumpadm 命令。有关更多信息,请参见《系统管理指南:设备和文件系统》中的第 21 章 “配置其他交换空间(任务)”以及《系统管理指南:高级管理》中的第 17 章 “管理系统故障转储信息(任务)”。
有关更多信息,请参见以下各章节:
由于 ZFS 根安装在确定交换和转储设备大小的方式上存在差异,所以您可能需要在安装之前、安装期间或安装之后调整交换和转储设备的大小。
您可以在初始安装期间调整交换和转储卷的大小。有关更多信息,请参见示例 5–1。
您可以在执行 Oracle Solaris Live Upgrade 操作之前创建交换卷和转储卷并确定其大小。例如:
创建存储池。
# zpool create rpool mirror c0t0d0s0 c0t1d0s0 |
创建转储设备。
# zfs create -V 2G rpool/dump |
启用转储设备。
# dumpadm -d /dev/zvol/dsk/rpool/dump Dump content: kernel pages Dump device: /dev/zvol/dsk/rpool/dump (dedicated) Savecore directory: /var/crash/t2000 Savecore enabled: yes Save compressed: on |
选择以下操作之一来创建交换区域:
SPARC:创建交换区域。将块大小设置为 8 KB。
# zfs create -V 2G -b 8k rpool/swap |
x86:创建交换区域。将块大小设置为 4 KB。
# zfs create -V 2G -b 4k rpool/swap |
添加或更改新交换设备时,必须启用交换卷。
针对交换卷添加一项到 /etc/vfstab 文件。
Oracle Solaris Live Upgrade 不会调整现有交换和转储卷的大小。
您可以在安装系统后重置转储设备的 volsize 属性。例如:
# zfs set volsize=2G rpool/dump # zfs get volsize rpool/dump NAME PROPERTY VALUE SOURCE rpool/dump volsize 2G - |
您可以调整交换卷的大小,但在集成 CR 6765386 前最好先将交换设备删除。然后,再重新创建它。例如:
# swap -d /dev/zvol/dsk/rpool/swap # zfs volsize=2G rpool/swap # swap -a /dev/zvol/dsk/rpool/swap |
有关在活动系统上删除交换设备的信息,请参见以下站点:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
您可以使用类似如下的配置文件语法在 JumpStart 配置文件中调整交换和转储卷的大小。
install_type initial_install cluster SUNWCXall pool rpool 16g 2g 2g c0t0d0s0 |
在此配置文件中,两个 2g 项将交换卷和转储卷的大小各设置为 2 GB。
如果已安装的系统上需要更多交换空间,只需添加另一个交换卷。例如:
# zfs create -V 2G rpool/swap2 |
然后,激活新的交换卷。例如:
# swap -a /dev/zvol/dsk/rpool/swap2 # swap -l swapfile dev swaplo blocks free /dev/zvol/dsk/rpool/swap 256,1 16 1058800 1058800 /dev/zvol/dsk/rpool/swap2 256,3 16 4194288 4194288 |
最后,针对第二交换卷添加一项到 /etc/vfstab 文件。
有关捕捉系统崩溃转储或者调整转储设备大小的问题,请查看以下各项:
初始安装 ZFS 根文件系统或者迁移到 ZFS 根文件系统时,会自动创建转储卷。大多数情况下,如果缺省转储卷太小,只需要调整转储卷的大小。例如,在一个大存储器系统中,转储卷大小增大到 40 GB,如下所示:
# zfs set volsize=40G rpool/dump |
调整大转储卷的大小可能是一个耗时的过程。
由于某种原因,如果您需要在手动创建转储设备后启用转储设备,请使用类似以下的语法:
# dumpadm -d /dev/zvol/dsk/rpool/dump Dump content: kernel pages Dump device: /dev/zvol/dsk/rpool/dump (dedicated) Savecore directory: /var/crash/t2000 Savecore enabled: yes |
存储器为 128 GB 或更大的系统所需的转储设备大小大于缺省创建的转储设备大小。如果转储设备太小,无法捕捉现有崩溃转储,将会显示类似以下的消息:
# dumpadm -d /dev/zvol/dsk/rpool/dump dumpadm: dump device /dev/zvol/dsk/rpool/dump is too small to hold a system dump dump size 36255432704 bytes, device size 34359738368 bytes |
有关确定交换和转储设备大小的信息,请参见《系统管理指南:设备和文件系统》中的“规划交换空间”。
目前无法将一个转储设备添加到具有多个顶层设备的池中。将显示以下类似消息:
# dumpadm -d /dev/zvol/dsk/datapool/dump dump is not supported on device '/dev/zvol/dsk/datapool/dump': 'datapool' has multiple top level vdevs |
请将转储设备添加到不具有多个顶层设备的根池中。
基于 SPARC 和基于 x86 的系统都使用新型的引导方式,即通过引导归档文件进行引导,引导归档文件是一个文件系统映像,该映像中包含进行引导时所需的文件。从 ZFS 根文件系统引导系统时,将会在选择用来进行引导的根文件系统中解析引导归档文件和内核文件的路径名。
引导系统进行安装时,在整个安装过程中,RAM 磁盘用于根文件系统。
从 ZFS 文件系统引导不同于从 UFS 文件系统引导,因为对于 ZFS,引导设备说明符标识存储池,而不是单个根文件系统。存储池可能包含多个可引导的数据集或 ZFS 根文件系统。从 ZFS 引导时,必须指定引导设备和由该引导设备标识的池中的根文件系统。
缺省情况下,选择用来进行引导的数据集是由池的 bootfs 属性标识的。通过在 boot -Z 命令中指定备用可引导数据集可以覆盖此缺省选择。
您可以在安装系统时创建镜像 ZFS 根池,也可以在安装后通过附加磁盘来创建镜像 ZFS 根池。有关更多信息,请参见:
请查看以下有关镜像 ZFS 根池的已知问题:
CR 6668666-要允许在镜像中的其他磁盘上引导,则必须使用 installboot 或 installgrub 命令在额外附加的磁盘上安装引导信息。如果使用初始安装方法创建镜像 ZFS 根池,则不需要此步骤。例如,如果 c0t1d0s0 是添加到镜像的第二个磁盘,则 installboot 或 installgrub 命令语法将如下所示:
SPARC:
sparc# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c0t1d0s0 |
x86:
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0 |
您可以从镜像 ZFS 根池中的不同设备引导。根据硬件配置,可能需要更新 PROM 或 BIOS 以指定不同的引导设备。
例如,您可以从以下池中的任一磁盘(c1t0d0s0 或 c1t1d0s0)引导。
# zpool status pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0 |
SPARC:在 ok 提示符下输入备用磁盘。
ok boot /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0 |
重新引导系统后,确认活动引导设备。例如:
SPARC# prtconf -vp | grep bootpath bootpath: '/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a' |
x86:从相应的 BIOS 菜单中选择镜像 ZFS 根池中的备用磁盘。
然后,使用类似以下的语法确认系统是从备用磁盘引导:
x86# prtconf -v|sed -n '/bootpath/,/value/p' name='bootpath' type=string items=1 value='/pci@0,0/pci8086,25f8@4/pci108e,286@0/disk@0,0:a' |
在具有多个 ZFS BE 的基于 SPARC 的系统上,可以通过使用 luactivate 命令从任何 BE 引导。
在 Solaris OS 安装和 Oracle Solaris Live Upgrade 过程中,将会通过 bootfs 属性自动指定 ZFS 根文件系统。
一个池中可能存在多个可引导的数据集。缺省情况下,/pool-name/boot/menu.lst 文件中的可引导数据集项由池的 bootfs 属性来标识。但是,menu.lst 项可以包含 bootfs 命令,该命令可指定池中的备用数据集。这样,menu.lst 文件就可以包含池中多个根文件系统的项。
当系统中安装了 ZFS 根文件系统或迁移到 ZFS 根文件系统时,类似如下的项会添加到 menu.lst 文件:
title zfsBE bootfs rpool/ROOT/zfsBE title zfs2BE bootfs rpool/ROOT/zfs2BE |
创建新 BE 时,将会自动更新 menu.lst 文件。
在基于 SPARC 的系统上,提供了两个新的引导选项:
激活 BE 后,您可以使用 boot -L 命令显示 ZFS 池中可引导的数据集列表。然后,您可以在列表中选择可引导的数据集之一。此时将会显示有关引导该数据集的详细说明。您可以按照这些说明来引导选定的数据集。
您可以使用 boot -Z dataset 命令引导特定的 ZFS 数据集。
如果系统的引导设备上的 ZFS 存储池中有多个 ZFS BE,您可以使用 luactivate 命令指定缺省 BE。
例如,以下 ZFS BE 可用,如 lustatus 输出所述:
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- zfsBE yes no no yes - zfs2BE yes yes yes no - |
如果基于 SPARC 的系统上有多个 ZFS BE,您可以使用 boot -L 命令从非缺省 BE 引导。然而,从 boot -L 会话引导的 BE 不会向缺省 BE 一样重置,bootfs 属性也不会进行更新。如果要使从 boot -L 会话引导的 BE 成为缺省 BE,必须使用 luactivate 命令激活它。
例如:
ok boot -L Rebooting with command: boot -L Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0 File and args: -L 1 zfsBE 2 zfs2BE Select environment to boot: [ 1 - 2 ]: 1 To boot the selected entry, invoke: boot [<root-device>] -Z rpool/ROOT/zfsBE Program terminated ok boot -Z rpool/ROOT/zfsBE |
在基于 SPARC 的系统上,您可以按如下方式从位于 /platform/`uname -i`/failsafe 的故障安全归档文件引导:
ok boot -F failsafe |
要从特定的 ZFS 可引导数据集引导故障安全归档文件,请使用类似如下的语法:
ok boot -Z rpool/ROOT/zfsBE -F failsafe |
在 Solaris OS 安装过程中或执行 Oracle Solaris Live Upgrade 操作期间,以下项会添加到 /pool-name/boot/grub/menu.lst 文件以自动引导 ZFS:
title Solaris 10 9/10 X86 findroot (rootfs0,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
如果由 GRUB 标识为引导设备的设备包含 ZFS 存储池,则 menu.lst 文件用于创建 GRUB 菜单。
在具有多个 ZFS BE 的基于 x86 的系统上,您可以从 GRUB 菜单中选择 BE。如果与该菜单项对应的根文件系统为 ZFS 数据集,则会添加以下选项:
-B $ZFS-BOOTFS |
从 ZFS 文件系统引导系统时,根设备由 GRUB 菜单项中的 -kernel 或 module 行上的 B $ZFS-BOOTFS 引导参数指定。该参数(与由 -B 选项指定的所有参数类似)由 GRUB 传递给内核。例如:
title Solaris 10 9/10 X86 findroot (rootfs0,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
x86 故障安全归档文件为 /boot/x86.miniroot-safe,可以通过从 GRUB 菜单选择 Solaris 故障安全项来引导。例如:
title Solaris failsafe findroot (rootfs0,0,a) kernel /boot/multiboot kernel/unix -s -B console=ttya module /boot/x86.miniroot-safe |
更改活动引导环境的最佳方法是使用 luactivate 命令。如果由于错误的修补程序或配置错误而导致引导活动环境失败,则从其他环境引导的唯一方法是在引导时选择该环境。您可以在基于 x86 的系统上从 GRUB 菜单中选择备用 BE,或在基于 SPARC 的系统上从 PROM 中显式引导备用 BE。
由于 Solaris 10 10/08 发行版 Oracle Solaris Live Upgrade 功能中的错误,非活动引导环境可能无法引导,因为引导环境中的 ZFS 数据集或区域的 ZFS 数据集有无效的挂载点。如果 BE 有单独的 /var 数据集,则上述错误还会阻止该 BE 挂载。
如果区域数据集有无效的挂载点,通过下列步骤可以更正该挂载点。
从故障安全归档文件引导系统。
导入池。
例如:
# zpool import rpool |
查找不正确的临时挂载点。
例如:
# zfs list -r -o name,mountpoint rpool/ROOT/s10u6 NAME MOUNTPOINT rpool/ROOT/s10u6 /.alt.tmp.b-VP.mnt/ rpool/ROOT/s10u6/zones /.alt.tmp.b-VP.mnt//zones rpool/ROOT/s10u6/zones/zonerootA /.alt.tmp.b-VP.mnt/zones/zonerootA |
根 BE (rpool/ROOT/s10u6) 的挂载点应为 /。
如果由于 /var 挂载问题而导致引导失败,请为 /var 数据集查找类似不正确的临时挂载点。
重置 ZFS BE 及其数据集的挂载点。
例如:
# zfs inherit -r mountpoint rpool/ROOT/s10u6 # zfs set mountpoint=/ rpool/ROOT/s10u6 |
重新引导系统。
当提供选项来引导特定的引导环境时(在 GRUB 菜单中或 OpenBoot PROM 提示符下),请选择刚刚更正其挂载点的引导环境。
如果您需要引导系统,以解决根密码丢失或类似问题,请使用以下过程。
需要引导故障安全模式或从备用介质引导,具体取决于错误的严重程度。一般而言,引导故障安全模式可以解决根密码丢失或未知问题。
如果您需要恢复根池或根池快照,请参见恢复 ZFS 根池或根池快照。
引导故障安全模式。
在 SPARC 系统上:
ok boot -F failsafe |
在 x86 系统上,从 GRUB 提示符下选择故障安全模式。
提示时,将 ZFS BE 挂载于 /a:
. . . ROOT/zfsBE was found on rpool. Do you wish to have it mounted read-write on /a? [y,n,?] y mounting rpool on /a Starting shell. |
变更到 /a/etc 目录。
# cd /a/etc |
如有必要,设置 TERM 类型。
# TERM=vt100 # export TERM |
修正 passwd 或 shadow 文件。
# vi shadow |
重新引导系统。
# init 6 |
如果某个问题妨碍系统成功引导,或者发生其它严重问题,您将需要从网络安装服务器或者 Solaris 安装 CD 引导,导入根池,挂载 ZFS BE,并尝试解决问题。
从安装 CD 或者网络引导。
SPARC:
ok boot cdrom -s ok boot net -s |
如果您未使用 -s 选项,则需要退出安装程序。
x86:选择网络引导或者从本地 CD 引导选项。
导入根池并指定备用挂载点。例如:
# zpool import -R /a rpool |
挂载 ZFS BE。例如:
# zfs mount rpool/ROOT/zfsBE |
从 /a 目录访问 ZFS BE 内容。
# cd /a |
重新引导系统。
# init 6 |
以下各节描述了如何执行下列任务:
由于以下原因,您可能需要替换根池中的磁盘:
根池太小,您想使用较大的磁盘替换较小的磁盘。
根池磁盘发生故障。在非冗余池中,如果磁盘发生故障导致系统无法引导,则必须在替换根池磁盘前从备用介质(如 CD 或网络)进行引导。
在镜像根池配置中,您可以尝试替换磁盘而不必从备用介质引导。可以使用 zpool replace 命令替换发生故障的磁盘。或者,如果有额外的磁盘,可以使用 zpool attach 命令。有关附加额外磁盘和分离根池磁盘的示例,请参见本节中的过程。
有些硬件要求您在尝试通过 zpool replace 操作替换故障磁盘之前使磁盘脱机并取消其配置。例如:
# zpool offline rpool c1t0d0s0 # cfgadm -c unconfigure c1::dsk/c1t0d0 <Physically remove failed disk c1t0d0> <Physically insert replacement disk c1t0d0> # cfgadm -c configure c1::dsk/c1t0d0 # zpool replace rpool c1t0d0s0 # zpool online rpool c1t0d0s0 # zpool status rpool <Let disk resilver before installing the boot blocks> SPARC# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t0d0s0 x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t9d0s0 |
对于一些硬件,插入替代磁盘后不必使其联机并进行配置。
必须标识当前磁盘和新磁盘的引导设备路径名,以便从替换磁盘测试引导,而且如有必要,在替换磁盘发生故障时也可手动从现有磁盘引导。在以下过程的示例中,当前根池磁盘 (c1t10d0s0) 的路径名为:
/pci@8,700000/pci@3/scsi@5/sd@a,0 |
替换引导磁盘 c1t9d0s0 的路径名为:
/pci@8,700000/pci@3/scsi@5/sd@9,0 |
物理连接替换磁盘或新磁盘。
确认新磁盘具有 SMI 标签和分片 0。
有关对要用于根池的磁盘进行重新标记的信息,请参见以下站点:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
将新磁盘连接到根池。
例如:
# zpool attach rpool c1t10d0s0 c1t9d0s0 |
确认根池状态。
例如:
# zpool status rpool pool: rpool state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress, 25.47% done, 0h4m to go config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t10d0s0 ONLINE 0 0 0 c1t9d0s0 ONLINE 0 0 0 errors: No known data errors |
完成重新同步后,将引导块应用到新磁盘。
使用类似以下的语法:
SPARC:
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t9d0s0 |
x86:
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t9d0s0 |
验证您是否可以从新磁盘引导。
例如,在基于 SPARC 的系统上,应使用类似以下的语法:
ok boot /pci@8,700000/pci@3/scsi@5/sd@9,0 |
如果系统从新磁盘引导,则分离旧磁盘。
例如:
# zpool detach rpool c1t10d0s0 |
通过使用 SPARC 引导 PROM 中的 eeprom 命令和 setenv 命令,将系统设置为从新磁盘自动引导,或重新配置 PC BIOS。
可以创建根池快照以便进行恢复。创建根池快照的最好方法是对根池执行递归快照。
下面的过程将创建递归根池快照,并将快照以文件的形式存储到远程系统上的池中。如果根池失败,可以使用 NFS 挂载远程数据集,快照文件可以放入重新创建的池中。或者,您也可以将根池快照以实际快照的形式存储到远程系统上的池中。从远程系统发送和接收快照比较复杂,因为在从 Solaris OS miniroot 引导要修复的系统时,您必须配置 ssh 或使用 rsh。
有关远程存储和恢复根池快照的信息和有关根池恢复的最新信息,请访问以下站点:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
在根池恢复中,以文件或快照形式验证远程存储的快照是一个重要步骤。无论何种方法,都应按照常规重新创建快照,例如在池配置更改或 Solaris OS 升级时。
在以下过程中,系统从 zfsBE 引导环境引导。
在远程系统上创建池和文件系统以存储快照。
例如:
remote# zfs create rpool/snaps |
与本地系统共享文件系统。
例如:
remote# zfs set sharenfs='rw=local-system,root=local-system' rpool/snaps # share -@rpool/snaps /rpool/snaps sec=sys,rw=local-system,root=local-system "" |
创建根池的递归快照。
local# zfs snapshot -r rpool@0804 local# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /rpool/ROOT rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfsBE 4.67G 60.8G 4.67G / rpool/ROOT/zfsBE@0804 386K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |
将根池快照发送到远程系统。
例如:
local# zfs send -Rv rpool@0804 > /net/remote-system/rpool/snaps/rpool.0804 sending from @ to rpool@0804 sending from @ to rpool/swap@0804 sending from @ to rpool/ROOT@0804 sending from @ to rpool/ROOT/zfsBE@0804 sending from @ to rpool/dump@0804 |
在此过程中,假设下列条件存在:
无法恢复 ZFS 根池。
ZFS 根池快照存储在远程系统上并通过 NFS 共享。
在本地系统上执行所有步骤。
从 CD/DVD 或网络引导。
SPARC:选择以下引导方法之一:
ok boot net -s ok boot cdrom -s |
如果您未使用 -s 选项,则需要退出安装程序。
x86:选择用于从 DVD 或网络进行引导的选项。然后,退出安装程序。
挂载远程快照数据集。
例如:
# mount -F nfs remote-system:/rpool/snaps /mnt |
如果您尚未配置网络服务,则可能需要指定 remote-system 的 IP 地址。
如果根池磁盘被替换,并且不包含 ZFS 可用的磁盘标号,则必须对磁盘重新进行标号。
有关对磁盘进行重新标号的更多信息,请访问以下站点:
http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide
重新创建根池。
例如:
# zpool create -f -o failmode=continue -R /a -m legacy -o cachefile= /etc/zfs/zpool.cache rpool c1t1d0s0 |
恢复根池快照。
此步骤可能会花费一些时间。例如:
# cat /mnt/rpool.0804 | zfs receive -Fdu rpool |
使用 -u 选项表示 zfs receive 操作完成时不挂载恢复的归档文件。
验证根池数据集是否已恢复。
例如:
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /a/rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /legacy rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfsBE 4.67G 60.8G 4.67G /a rpool/ROOT/zfsBE@0804 398K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |
设置根池 BE 上的 bootfs 属性。
例如:
# zpool set bootfs=rpool/ROOT/zfsBE rpool |
在新磁盘上安装引导块。
SPARC:
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t1d0s0 |
x86:
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0 |
重新引导系统。
# init 6 |
此过程假设现有根池快照可用。在本例中,本地系统提供这些根池快照。
# zfs snapshot -r rpool@0804 # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6.17G 60.8G 98K /rpool rpool@0804 0 - 98K - rpool/ROOT 4.67G 60.8G 21K /rpool/ROOT rpool/ROOT@0804 0 - 21K - rpool/ROOT/zfsBE 4.67G 60.8G 4.67G / rpool/ROOT/zfsBE@0804 398K - 4.67G - rpool/dump 1.00G 60.8G 1.00G - rpool/dump@0804 0 - 1.00G - rpool/swap 517M 61.3G 16K - rpool/swap@0804 0 - 16K - |