备份 Solaris ZFS root池

  1. 复制在 rpool 和所有文件系统中设置的属性,以及与其关联的卷:
# zpool get all rpool
# zfs get -rHpe all rpool
  1. 保存此数据以备日后需要时参考。
    现在使用合适的快照名称对 rpool 进行快照:
# zfs snapshot -r rpool@backup

这将创建所有后代的递归快照,包括 rpool/export、rpool/export/home 以及 rpool/dump 和 rpool/swap(卷)。

  1. swap 和 dump 不需要包含在备份中,所以它们应该被销毁:
# zfs destroy rpool/swap@backup
# zfs destroy rpool/dump@backup
  1. 然后对于每个数据集,将数据发送到备份文件/位置。
    确保备份位置有足够的容量,因为如果目的地变满(例如:多卷磁带),“zfs send”将失败。
    在这个例子中,/backup 是一个来自一个合适的容量服务器的 NFS 挂载文件系统:
# zfs send -v rpool@backup > /backup/rpool.dump
# zfs send -v rpool/ROOT@backup > /backup/rpool.ROOT.dump
# zfs send -vR rpool/ROOT/s10u7@backup > /backup/rpool.ROOT.s10u7.dump  
# zfs send -v rpool/export@backup > /backup/rpool.export.dump
# zfs send -v rpool/export/home@backup > /backup/rpool.export.home.dump

然后可以将这些转储文件存档到非易失性存储器以安全保存,例如:磁带。

如何在 Solaris 10 中备份和恢复 ZFS root池

以下过程可用于使用 Solaris 10 及更高版本中提供的工具备份和恢复 ZFS root池 (rpool)。
建议系统管理员熟悉此过程并在将其部署到生产环境之前尝试恢复。

在此过程中,假设root池将被称为“rpool”,这是安装期间给定的标准。
我们还将使用以下示例文件系统作为 rpoo 的一部分。

rpool
rpool/ROOT
rpool/ROOT/s10u7
rpool/export
rpool/export/home

这可能需要根据作为 Solaris 安装的一部分创建的文件系统进行调整。
此外,它不考虑任何 Live Upgrade 创建的引导环境或者克隆的文件系统。
已决定单独发送每个文件系统,在可能的情况下,只需要从流文件中恢复一个文件系统。

on it road .com

恢复 Solaris ZFS root池

如果需要重建/恢复root池,请找到本文备份部分中创建的 zfs 流的已知良好副本,并确保这些副本随时可用。
为了恢复root池,首先从 Solaris 10 DVD 或者网络 (jumpstart) 引导到单用户模式。
根据引导的根文件系统是否可写,可能需要告诉 ZFS 使用挂载点的临时位置。

准备工作

在撰写本文时,root池必须:

  • 存在于带有 SMI 磁盘标签的磁盘上
  • 由单个切片组成,而不是整个磁盘(使用 cXtYdZs0 语法,而不是使用整个磁盘和 EFI 标签的 cXtYdZ)
  • 确保使用与原始 rpool 相同的版本创建池。我们可以从 zpool upgrade version 输出中找到池版本。在 zpool create 命令中使用“-o version=[value]”。
  1. 在本例中,磁盘 c3t1d0s0 包含一个 SMI 标签,其中分片 0 使用了磁盘的全部容量。
    相应地更改控制器和目标编号。
# zpool create -fo altroot=/var/tmp/rpool -o cachefile=/etc/zfs/zpool.cache -m legacy rpool c3t1d0s0
  1. 确保转储文件可供读取。
    如果这些文件存在于磁带上,则可能的位置是 /dev/rmt/0n,但是在本示例中,通过从 NFS 服务器安装备份文件系统,可以使用转储文件。

  2. 转储文件可用后,恢复构成root池的文件系统。
    以正确的层次顺序恢复这些很重要:

# zfs receive -Fd rpool < /backup/rpool.dump
# zfs receive -Fd rpool < /backup/rpool.ROOT.dump
# zfs receive -Fd rpool < /backup/rpool.ROOT.s10u7.dump
# zfs receive -Fd rpool < /backup/rpool.export.dump
# zfs receive -Fd rpool < /backup/rpool.export.home.dump

这将恢复文件系统,但请记住,rpool 也会有一个转储和交换设备,由 zvol 组成。
我们需要手动创建交换和转储。
根据要恢复的系统的配置调整转储和交换卷的大小

  1. 现在要使磁盘 ZFS 可引导,必须在 SPARC 中安装引导块,在 x86 中安装正确的 GRUB,因此根据要恢复的平台选择以下之一:
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c3t1d0s0    (SPARC)
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c3t1d0s0                   (x86)
  1. 一旦安装了引导块,就需要在这个 rpool 中设置可引导的数据集/文件系统。
    为此,请运行以下 zpool 命令(使 rpool/ROOT/s10u7 成为可引导数据集):
# zpool set bootfs=rpool/ROOT/s10u7 rpool
  1. 设置rpool 的failmode 属性以继续。
    这与默认使用等待的“数据”zfs 池不同,因此正确设置它很重要:
# zpool set failmode=continue rpool
  1. 查看canmount是否设置为noauto,如果没有设置:
# zfs get canmount rpool/ROOT/s10u7
# zfs set canmount=noauto rpool/ROOT/s10u7
  1. 暂时禁用以下文件系统的 canmount 属性,以防止在设置 mountpoint 属性时挂载它们:
# zfs set canmount=noauto rpool
# zfs set canmount=noauto rpool/export
  1. 为各种文件系统设置挂载点属性:
# zfs set mountpoint=/ rpool/ROOT/s10u7
# zfs set mountpoint=/rpool rpool
  1. 正确设置转储设备:
# dumpadm -d /dev/zvol/dsk/rpool/dump
日期:2020-09-17 00:15:03 来源:oir作者:oir