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
这篇文章使用了双向镜像的例子,尽管除了用于创建新池的磁盘之外,三向镜像的过程没有什么不同。
- 根据 zpool 的手册页,除非指定了设备,否则池中的最后一个设备将用于创建新池。
无论确保选择正确的设备,最佳做法是指定设备。
# zpool split rpool newrpool c3t1d0s0
- 默认情况下,一旦拆分完成,使用“zpool split”创建的任何新池都会自动导出。
因此,新池不会出现在“zpool 列表”中。
# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 136G 22.3G 114G 16% 1.00x ONLINE
- 使用“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
- 临时导入池“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
- 挂载“menu.lst”所在的顶级文件系统。
# zfs mount -vO -o mountpoint=/newrpool newrpool
- 编辑 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
- 挂载根文件系统。
# 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
- 删除 zpool.cache 文件。
该文件维护导入的 ZFS 池的磁盘视图,并在启动时读取以填充核心 ZFS 存储池配置,而无需通过扫描和读取呈现给主机的所有磁盘来延迟启动。
删除此文件的目的是确保我们在从“newrpool”引导系统时扫描所有磁盘并使用新池的配置重新创建此文件。
# rm /newrpool/etc/zfs/zpool.cache
- 编辑 vfstab 并更改交换设备的池名称。
将所有引用“rpool”的条目更改为新的池名称“newrpool”:
# grep rpool /newrpool/etc/vfstab /dev/zvol/dsk/rpool/swap - - swap - no
- 更新 newrpool 的引导存档。
# bootadm update-archive -v -R /newrpool
- 卸载新池的文件系统并将其导出。
# cd / # zfs unmount /newrpool # umount /newrpool # zpool export newrpool
- 关闭系统到 OK 提示。
# shutdown -y -i0 -g0
- 从用于创建新池“newrpool”的磁盘引导系统。
如果设备在主机外部,则使用设备的完整路径;如果是内部磁盘,则使用内部别名或者完整设备路径。
通过重新配置重新引导来引导主机,以确保更新所有设备条目。
{0} ok boot disk1 -rs
仔细观察引导是否有任何错误或者警告。
如果系统启动并显示没有错误的登录提示,请继续。
如果系统进入维护模式和/或者出现任何 SMF 错误,请停止并解决。验证文件系统指向正确的新池名称“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
注意事项和假设
- 新/拆分池必须在同一主机或者同一服务器系列类型和架构上使用。
即:如果源 rpool 是在 T5120 上导入和拆分的,则新池也必须用于相同的服务器类型 (T5xx0)。
可以使用 zpool split 命令将镜像 ZFS 存储池快速克隆为备份池。
我们可以使用此功能拆分镜像根池,但在我们执行一些添加步骤之前,拆分的池不可引导。
日期:2020-09-17 00:15:28 来源:oir作者:oir