www. On IT Road .com

拆分 rpool 示例

验证 rpool 的当前状态。
至少它应该是一面镜子。
根据可用设备的数量或者所需的最终目标,可以添加另外的(第三个)镜像并用于创建新的 rpool。

2路镜像示例

# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: resilvered 22.3G in 0h7m with 0 errors on Thu Mar 13 05:55:12 2014
config:
        NAME          STATE     READ WRITE CKSUM
        rpool         ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c3t0d0s0  ONLINE       0     0     0
            c3t1d0s0  ONLINE       0     0     0

这篇文章使用了双向镜像的例子,尽管除了用于创建新池的磁盘之外,三向镜像的过程没有什么不同。

  1. 根据 zpool 的手册页,除非指定了设备,否则池中的最后一个设备将用于创建新池。
    无论确保选择正确的设备,最佳做法是指定设备。
# zpool split rpool newrpool c3t1d0s0
  1. 默认情况下,一旦拆分完成,使用“zpool split”创建的任何新池都会自动导出。
    因此,新池不会出现在“zpool 列表”中。
# zpool list
NAME   SIZE  ALLOC  FREE  CAP  DEDUP  HEALTH  ALTROOT
rpool  136G  22.3G  114G  16%  1.00x  ONLINE
  1. 使用“zpool import”确认新池是用正确的设备创建的:
# zpool import
  pool: newrpool
    id: 712596357404561922
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
        newrpool    ONLINE
          c3t1d0s0  ONLINE
  1. 临时导入池“newrpool”,使用不同的安装点,以便在使用池之前修改关键文件。
    以下导入池并设置临时挂载点,但不挂载任何数据集。
# mkdir /newrpool
# zpool import -N -R /newrpool newrpool
# zfs list -r newrpool
NAME                        USED  AVAIL  REFER  MOUNTPOINT
newrpool                   23.0G   111G  73.5K  /newrpool/newrpool
newrpool/ROOT              2.44G   111G    31K  legacy
newrpool/ROOT/solaris      2.44G   111G  1.92G  /newrpool
newrpool/ROOT/solaris/var   475M   111G   449M  /newrpool/var
newrpool/VARSHARE          59.5K   111G  59.5K  /newrpool/var/share
newrpool/dump              16.4G   111G  15.9G  
newrpool/export             100K   111G    35K  /newrpool/export
newrpool/export/home       65.5K   111G    32K  /newrpool/export/home
newrpool/export/home/jack  33.5K   111G  33.5K  /newrpool/export/home/jack
newrpool/swap              4.13G   111G  4.00G
  1. 挂载“menu.lst”所在的顶级文件系统。
# zfs mount -vO -o mountpoint=/newrpool newrpool
  1. 编辑 menu.lst 文件以将条目更改为指向新池名称。
# cd /newrpool/boot
# ls
menu.lst
# cat menu.lst
title Oracle Solaris 11.1 SPARC
bootfs rpool/ROOT/solaris
# cp menu.lst menu.lst.orig
# vi menu.lst
title Oracle Solaris 11.1 SPARC
bootfs newrpool/ROOT/solaris
  1. 挂载根文件系统。
# zfs mount -vO -o mountpoint=/newrpool newrpool/ROOT/solaris
# cd /newrpool
/newrpool# ls
bin           home          net           root          system
boot          home_hls-mfg  newrpool      rpool         tmp
dev           import        nfs4          sbin          usr
devices       kernel        opt           share         var
etc           lib           platform      shared        workspace
export        media         proc          support       ws
hls-mfg       mnt           re            sw
  1. 删除 zpool.cache 文件。
    该文件维护导入的 ZFS 池的磁盘视图,并在启动时读取以填充核心 ZFS 存储池配置,而无需通过扫描和读取呈现给主机的所有磁盘来延迟启动。
    删除此文件的目的是确保我们在从“newrpool”引导系统时扫描所有磁盘并使用新池的配置重新创建此文件。
# rm /newrpool/etc/zfs/zpool.cache
  1. 编辑 vfstab 并更改交换设备的池名称。
    将所有引用“rpool”的条目更改为新的池名称“newrpool”:
# grep rpool /newrpool/etc/vfstab
/dev/zvol/dsk/rpool/swap        -               -               swap    -       no
  1. 更新 newrpool 的引导存档。
# bootadm update-archive -v -R /newrpool
  1. 卸载新池的文件系统并将其导出。
# cd /
 # zfs unmount /newrpool
 # umount /newrpool
 # zpool export newrpool
  1. 关闭系统到 OK 提示。
# shutdown -y -i0 -g0
  1. 从用于创建新池“newrpool”的磁盘引导系统。
    如果设备在主机外部,则使用设备的完整路径;如果是内部磁盘,则使用内部别名或者完整设备路径。
    通过重新配置重新引导来引导主机,以确保更新所有设备条目。
{0} ok boot disk1 -rs
  1. 仔细观察引导是否有任何错误或者警告。
    如果系统启动并显示没有错误的登录提示,请继续。
    如果系统进入维护模式和/或者出现任何 SMF 错误,请停止并解决。

  2. 验证文件系统指向正确的新池名称“newrpool”并执行初始验证步骤。

# zpool list
NAME      SIZE  ALLOC  FREE  CAP  DEDUP  HEALTH  ALTROOT
newrpool  136G  22.4G  114G  16%  1.00x  ONLINE  
# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT
newrpool                   23.0G   111G    75K  /newrpool
newrpool/ROOT              2.45G   111G    31K  legacy
newrpool/ROOT/solaris      2.45G   111G  1.93G  /
newrpool/ROOT/solaris/var   476M   111G   450M  /var
newrpool/VARSHARE            61K   111G    61K  /var/share
newrpool/dump              16.4G   111G  15.9G  
newrpool/export             100K   111G    35K  /export
newrpool/export/home       65.5K   111G    32K  /export/home
newrpool/export/home/jack  33.5K   111G  33.5K  /export/home/jack
newrpool/swap              4.13G   111G  4.00G  
# swap -l 
swapfile             dev    swaplo   blocks     free
/dev/zvol/dsk/newrpool/swap 285,1        16  8388592  8388592
# svcs -xv   -- Resolve any SMF services that have faults

注意事项和假设

  1. 新/拆分池必须在同一主机或者同一服务器系列类型和架构上使用。
    即:如果源 rpool 是在 T5120 上导入和拆分的,则新池也必须用于相同的服务器类型 (T5xx0)。
如何在 solaris 11 (SPARC) 中使用“zpool split”来拆分 rpool

可以使用 zpool split 命令将镜像 ZFS 存储池快速克隆为备份池。
我们可以使用此功能拆分镜像根池,但在我们执行一些添加步骤之前,拆分的池不可引导。

日期:2020-09-17 00:15:28 来源:oir作者:oir