ZFS:如何更换发生故障的磁盘,而在另一个故障后重新同步?

ZFS中的磁盘replace出错了,现在replace磁盘(即使不再物理存在)被“卡住”在池中,阻止了进一步的replace尝试。 如何删除它?

在OmniOS r151010上有11个磁盘的raidz3池中,其中一个磁盘坏了。 我将问题磁盘脱机,将其replace为新磁盘,并重新configuration了新磁盘。 它开始反弹,然后更换磁盘有错误。 Dmesg显示“SYNCHRONIZE CACHE命令失败”。 我想知道是否可能是一个松散的电缆,所以closures机器,重新插入磁盘和电缆,并重新启动它。 它开始反弹,并在一段时间后有同样的问题。 此时问题磁盘的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状态仍显示旧磁盘。 我试着清除故障,现在原来的磁盘和第一个更换都是离线的

 replacing-0 UNAVAIL 0 0 0 insufficient replicas c4t5000C5004DC8693Fd0 OFFLINE 0 0 0 c4t50014EE658315C1Dd0 OFFLINE 0 0 0 

在这一点上,我应该做些什么来获得新的replace磁盘重新同步? 在原始磁盘上做zpoolreplace或第一次replace只是产生错误(这里稍微缩短)“无法打开'c4t500 ….'没有这样的设备在/ dev / dsk中。

在c4t50014EE658315C1Dd0上执行zpool删除会生成错误消息“无法删除c4t50014EE658315C1Dd0:只能删除非活动的热备份,caching,顶级或日志设备”

我想到了。 在池上使用zdb以获取原始磁盘的GUID,然后使用格式查找replace磁盘的名称,然后执行

 # 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) 

一旦完成就恢复正常。