故障的 zpool 恢复 - 我可以将一些磁盘添加到新磁盘中,以便我清除捐赠者吗?

故障的 zpool 恢复 - 我可以将一些磁盘添加到新磁盘中,以便我清除捐赠者吗?

我正在尝试恢复一个已降级并被忽视的池,然后第二个镜像成员发生故障,导致池出现故障。无论出于什么原因,备用池从未自动更换,即使该池已设置该选项,但这不是重点。

这是在 OmniOS 服务器上。池信息如下:

  pool: dev-sata1
 state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: http://illumos.org/msg/ZFS-8000-JQ
  scan: resilvered 1.53T in 21h6m with 0 errors on Sat Jun 17 13:18:04 2017
config:

        NAME                       STATE     READ WRITE CKSUM
        dev-sata1                  UNAVAIL    227   623     0  insufficient replicas
          mirror-0                 ONLINE       0     0     0
            c1t5000C5003ECEEC42d0  ONLINE       0     0     0
            c1t5000C5003ED6D008d0  ONLINE       0     0     0
          mirror-1                 ONLINE       0     0     0
            c1t5000C500930358EAd0  ONLINE       0     0     0
            c1t5000C500930318E1d0  ONLINE       0     0     0
          mirror-3                 ONLINE       0     0     0
            c1t5000C5003F362DA7d0  ONLINE       0     0     0
            c1t5000C5003F365D94d0  ONLINE       0     0     0
          mirror-4                 ONLINE       0     0     0
            c1t5000C50064D11652d0  ONLINE       0     0     0
            c1t5000C500668EC894d0  ONLINE       0     0     0
          mirror-5                 ONLINE       0     0     0
            c1t5000C5007A2DBE23d0  ONLINE       0     0     0
            c1t5000C5007A2DF29Cd0  ONLINE       0     0     0
          mirror-6                 UNAVAIL    457 1.22K     5  insufficient replicas
            15606980839703210365   UNAVAIL      0     0     0  was /dev/dsk/c1t5000C5007A2E1359d0s0
            c1t5000C5007A2E1BAEd0  FAULTED     37 1.25K     5  too many errors
          mirror-7                 ONLINE       0     0     0
            c1t5000C5007A34981Bd0  ONLINE       0     0     0
            c1t5000C5007A3929B6d0  ONLINE       0     0     0
        logs
          mirror-2                 ONLINE       0     0     0
            c1t55CD2E404B740DD3d0  ONLINE       0     0     0
            c1t55CD2E404B7591BEd0  ONLINE       0     0     0
        cache
          c1t50025388A0952EB0d0    ONLINE       0     0     0
        spares
          c1t5000C5002CD7AFB6d0    AVAIL

磁盘“c1t5000C5007A2E1BAEd0”目前位于数据恢复设施,但他们已经用尽了替换磁头,包括我们提供的捐赠磁盘的磁头。标记为丢失的磁盘最终被找到,并且有可能被恢复,但这是最后的结果,因为我不知道它与其他磁盘相比有多过时,以及这对一致性意味着什么。要被视为捐赠者,序列的前 3 个字母需要匹配,站点代码也需要匹配。池中还有其他 4 个磁盘符合该标准,并且在池关闭时处于健康状态。

那么,我的问题是:使用 dd 将整个供体磁盘复制到每个新磁盘后,是否可以用 4 个新磁盘替换其他 4 个可能与供体兼容的磁盘(基于序列号)?

我不清楚池在导入磁盘时是否需要 WWN 或序列号来匹配其存储的内容(如果它存储了缓存以外的内容),或者它是否会扫描每个磁盘上的元数据来确定是否可以导入池。如果后者是真的,我再获得 4 个捐赠磁盘的策略是否可行?

答案1

绝对不要使用dd!ZFS 有一个内置命令,在Oracle 的文档。您应该能够使用zpool replace tank <old device> <new device>来完成操作的主要部分,但是还有其他几个辅助命令:

以下是更换磁盘的基本步骤:

  • 如果有必要,使用命令使磁盘脱机zpool offline
  • 移除需要更换的磁盘。
  • 插入替换磁盘。
  • 运行zpool replace命令。例如: zpool replace tank c1t1d0
  • 使用命令使磁盘联机zpool online

手册页还包含一些附加信息:

zpool replace [-f]  pool device [new_device]

 Replaces old_device with new_device.  This is equivalent to attaching
 new_device, waiting for it to resilver, and then detaching
 old_device.

 The size of new_device must be greater than or equal to the minimum
 size of all the devices in a mirror or raidz configuration.

 new_device is required if the pool is not redundant. If new_device is
 not specified, it defaults to old_device.  This form of replacement
 is useful after an existing disk has failed and has been physically
 replaced. In this case, the new disk may have the same /dev path as
 the old device, even though it is actually a different disk.  ZFS
 recognizes this.

 -f  Forces use of new_device, even if its appears to be in use.
     Not all devices can be overridden in this manner.

当然,最好先在具有类似配置的 zpool 中的虚拟磁盘的 VM 上尝试此操作,而不是第一次在包含您关心的恢复数据的池上尝试此操作。

顺便一提,文档的另一部分进一步解释了热备件,也许还包含了一些提示来解释为什么你的热备件没有被使用。仔细研究一下以确保下次不会再次出错可能会很有价值 :(。

相关内容