如何在 Solaris 中更换 ZFS 下的磁盘

让我们讨论 ZFS 下磁盘故障的 3 种不同情况。

  1. 驱动器离线又上线。

  2. 驱动器实际发生故障。
    具有相同目标编号的新驱动器就位。

  3. 驱动器实际发生故障。
    具有不同目标编号的新驱动器就位。

rootpool下的磁盘故障

更换镜像 rootpool 磁盘的唯一变化是安装 bootblk。
同步完成后安装bootblk。

对于基于 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/c1t0d0s0
更多: zhilu jiaocheng

驱动器实际上失败了。具有不同目标编号的新驱动器就位。

使用 cfgadm 或者 luxadm 命令移除旧驱动器。
(根据磁盘类型[SAS/SCSI/光纤通道],移除磁盘的方法可能略有不同)。
请参阅以下帖子以删除故障磁盘:

如何使用 luxadm 和 cfgadm 删除故障磁盘

用新磁盘名称替换故障磁盘:

# zpool replace geekpool c1t21d0 c1t54d0

云端硬盘脱机并联机

可能会出现驱动器脱机和联机并且没有实际硬件故障的情况。

我们将在格式和 /var/adm/messages 中看到脱机状态。

12. c1t21d0 [drive not available]
             /pci@1f,0/pci@1/pci@3/SUNW,qlc@5/fp@0,0/ssd@w22023020370705f1,0

如果我们执行 zpool status,我们将看到降级的池和不可用的磁盘。

# zpool status -v geekpool
  pool: geekpool
 state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
 scrub: resilver completed with 0 errors on Tue Dec 29 13:05:45 2013
config:
        NAME     STATE READ WRITE CKSUM
        geekpool DEGRADED 0 0 0
          mirror DEGRADED 0 0 0
            c1t12d0s1 ONLINE 0 0 0
            c3t21d0s1 UNAVAIL 0 29 0 cannot open

有两种方法可以解决此类故障:

方法一

在format命令验证驱动器在线后,将zfs池中的磁盘置于在线状态

# zpool online geekpool c3t54d0s1

为确保数据未损坏,请使用 zfs 清理检查完整性:

# zpool scrub geekpool

方法二

驱动上线后,导出导入池:

# zpool export geekpool
# zpool import -f geekpool

再次确保完整性,在游泳池上擦洗:

# zpool scrub geekpool

驱动器实际上失败了。具有相同目标编号的新驱动器就位。

使用 cfgadm 或者 luxadm 命令移除旧驱动器。
(根据磁盘类型[SAS/SCSI/光纤通道],移除磁盘的方法可能略有不同)。
请参阅以下帖子以删除故障磁盘:

如何使用 luxadm 和 cfgadm 删除故障磁盘

将故障磁盘替换为原始名称

# zpool replace geekpool c1t21d0
日期:2020-09-17 00:15:12 来源:oir作者:oir