ZFS 中的磁盘替换出现问题,现在替换的磁盘虽然不再物理存在,但“卡”在池中,阻止进一步的替换尝试。如何移除它?
在 OmniOS r151010 上具有 11 个磁盘的 raidz3 池中,其中一个磁盘出现故障。我将问题磁盘脱机,用新磁盘替换它,然后重新配置新磁盘。它开始重新同步,然后替换磁盘出现错误。Dmesg 显示“SYNCHRONIZE CACHE 命令失败”。我想知道这是否可能是电缆松动,所以关闭了机器,重新安装磁盘和电缆并重新启动它。它开始重新同步,过了一会儿又出现了同样的问题。此时问题磁盘的 zpool 状态显示
replacing-0 UNAVAIL 0 0 0 insufficient replicas
c4t5000C5004DC8693Fd0 OFFLINE 0 0 0
c4t50014EE658315C1Dd0 FAULTED 0 0 0 too many errors
我决定尝试另一个磁盘,看看是否有任何不同。我怀疑不会,但尝试起来很容易。我热交换了磁盘,然后 cfgadm -al 显示
c8 scsi-sas connected configured unknown
c8::w50014ee6ad8f0df2,0 disk-path connected configured unknown
c8::w50014ee658315c1d,0 disk-path connected unconfigured unknown
新磁盘已存在,但旧磁盘尚未消失。我重新启动了机器以清除旧状态,然后 cfgadm -al 显示
c8 scsi-sas connected configured unknown
c8::w50014ee6ad8f0df2,0 disk-path connected configured unknown
但是 zpool status 仍然显示旧磁盘。我尝试清除故障,现在原始磁盘和第 1 个替换磁盘都处于离线状态
replacing-0 UNAVAIL 0 0 0 insufficient replicas
c4t5000C5004DC8693Fd0 OFFLINE 0 0 0
c4t50014EE658315C1Dd0 OFFLINE 0 0 0
此时,我应该怎么做才能使新的替换磁盘重新同步?在原始磁盘或第一次替换上执行 zpool replace 只会产生错误(此处略作缩短)“无法打开‘c4t500....’/dev/dsk 中没有这样的设备。”
在 c4t50014EE658315C1Dd0 上执行 zpool remove 会产生错误消息“无法删除 c4t50014EE658315C1Dd0:只能删除非活动热备件、缓存、顶层或日志设备”
答案1
我找到了答案。使用池上的 zdb 获取原始磁盘的 GUID,然后使用 format 查找替换磁盘的名称,然后执行
# zpool replace <pool> <GUID of original disk> <name of replacement disk>
重新同步时看起来像这样:
NAME STATE READ WRITE CKSUM
raid DEGRADED 0 0 0
raidz3-0 DEGRADED 0 0 0
replacing-0 UNAVAIL 0 0 0 insufficient replicas
c4t5000C5004DC8693Fd0 OFFLINE 0 0 0
c4t50014EE658315C1Dd0 OFFLINE 0 0 0
c4t50014EE6AD8F0DF2d0 ONLINE 0 0 0 (resilvering)
完成后恢复正常。