ZFS-HA池发生元数据损坏

我按照Github的优秀描述设置了ZFS-HA(见这里 )。 经过广泛的testing后,我使用HBA控制器连接到两个节点的RAIDZ3中使用5×12磁盘将设置转换为生产。 直到昨天晚上,这两个存储池中的一个突然出现“池元数据已损坏”的故障。 在scrub运行期间。 在这一点上,我只能推测是什么导致了这种情况,两个池都是在起搏器中使用SCSI栅栏build立的,而且在投入生产之前,我在testing过的所有故障情况下,磁盘保留工作都完美无缺。 最近发生的唯一重大事件是没有UPS支持的两次完全停电(读取:权力刚刚从一个时刻到下一个)。 但是,也可能是腐败的真正原因是完全不同的。

现在的情况是,我不能再import池了(请在这个问题的最后看到zpool import的输出)。 到目前为止,我所有的拯救游泳池的意图都失败了:

 # zpool import -f tank cannot import 'tank': one or more devices is currently unavailable # zpool import -F tank cannot import 'tank': one or more devices is currently unavailable 

这让我感到困惑,因为它并不真正说唯一的select就是摧毁游泳池(这将是一个致命损坏游泳池的预期反应)。

 # zpool clear -F tank cannot open 'tank': no such pool 

我也手动删除所有的SCSI保留,例如:

 # DEVICE=35000c5008472696f # sg_persist --in --no-inquiry --read-reservation --device=/dev/mapper/$DEVICE # sg_persist --in --no-inquiry --read-key --device=/dev/mapper/$DEVICE # sg_persist --out --no-inquiry --register --param-sark=0x80d0001 --device=/dev/mapper/$DEVICE # sg_persist --out --no-inquiry --clear --param-rk=0x80d0001 --device=/dev/mapper/$DEVICE # sg_persist --in --no-inquiry --read-reservation --device=/dev/mapper/$DEVICE 

我进一步尝试从磁盘架上删除A / C,以清除可能留在桌子上的任何临时信息。

我很坦率地select了一些选项。 我的清单上唯一剩下的就是zpool import-X选项 – 在所有其他措施失败之后,我会尝试这个选项。

所以我的问题是,你以前遇到过这样的事情,更重要的是,你find了解决这个问题的方法吗? 如果您有任何build议,我将非常感激。

=========

池布局/configuration:

  pool: tank id: 1858269358818362832 state: FAULTED status: The pool metadata is corrupted. action: The pool cannot be imported due to damaged devices or data. The pool may be active on another system, but can be imported using the '-f' flag. see: http://zfsonlinux.org/msg/ZFS-8000-72 config: tank FAULTED corrupted data raidz3-0 FAULTED corrupted data 35000c5008472696f ONLINE 35000c5008472765f ONLINE 35000c500986607bf ONLINE 35000c5008472687f ONLINE 35000c500847272ef ONLINE 35000c50084727ce7 ONLINE 35000c50084729723 ONLINE 35000c500847298cf ONLINE 35000c50084728f6b ONLINE 35000c50084726753 ONLINE 35000c50085dd15bb ONLINE 35000c50084726e87 ONLINE raidz3-1 FAULTED corrupted data 35000c50084a8a163 ONLINE 35000c50084e80807 ONLINE 35000c5008472940f ONLINE 35000c50084a8f373 ONLINE 35000c500847266a3 ONLINE 35000c50084726307 ONLINE 35000c50084726897 ONLINE 35000c5008472908f ONLINE 35000c50084727083 ONLINE 35000c50084727c8b ONLINE 35000c500847284e3 ONLINE 35000c5008472670b ONLINE raidz3-2 FAULTED corrupted data 35000c50084a884eb ONLINE 35000c500847262bb ONLINE 35000c50084eb9f43 ONLINE 35000c50085030a4b ONLINE 35000c50084eb238f ONLINE 35000c50084eb6873 ONLINE 35000c50084728baf ONLINE 35000c50084eb4c83 ONLINE 35000c50084727443 ONLINE 35000c50084a8405b ONLINE 35000c5008472868f ONLINE 35000c50084727c6f ONLINE raidz3-3 FAULTED corrupted data 35000c50084eaa467 ONLINE 35000c50084e7d99b ONLINE 35000c50084eb55e3 ONLINE 35000c500847271d7 ONLINE 35000c50084726cef ONLINE 35000c50084726763 ONLINE 35000c50084727713 ONLINE 35000c50084728127 ONLINE 35000c50084ed0457 ONLINE 35000c50084e5eefb ONLINE 35000c50084ecae2f ONLINE 35000c50085522177 ONLINE raidz3-4 FAULTED corrupted data 35000c500855223c7 ONLINE 35000c50085521a07 ONLINE 35000c50085595dff ONLINE 35000c500855948a3 ONLINE 35000c50084f98757 ONLINE 35000c50084f981eb ONLINE 35000c50084f8b0d7 ONLINE 35000c50084f8d7f7 ONLINE 35000c5008539d9a7 ONLINE 35000c5008552148b ONLINE 35000c50085521457 ONLINE 35000c500855212b3 ONLINE 

编辑:

服务器是2个Dell PowerEdge R630,控制器是Broardcom SAS HBA的DELL OEM版本(应该类似于SAS 9300-8e),并且该池中的所有60个磁盘都是Seagate ST6000NM0034。 机箱是Quanta MESOS M4600H。

编辑2:

OS是CentOS 7

ZFS是zfs-0.7.3-1.el7_4.x86_64

似乎上游在这里没有多less选项(这是从Oracle Solaris ZFS故障排除和池恢复文档中获得的,指出zpool import -F是唯一的select,除了雇用ZFS大师之外,元数据已损坏):

如果使用上述池恢复方法无法恢复池,则必须从备份副本中还原池及其所有数据。

我不认为OpenZFS联盟在这里带来了很多改变这种情况的东西。 这确实是个不幸的消息。

PS这与池达到它的状态的原因没有任何关系,但你不认为创build10个磁盘arrays本身就是问题吗? 即使有2个备用磁盘。 冷数据等等,你知道的。

什么是硬件细节? 服务器,磁盘,机箱和控制器的制造和模型。

我将禁用所有高可用性function,并专注于在一个系统上工作。

  • 将一个节点置于待机状态: pcs cluster standby或仅启用起搏器。
  • 手动导入您要处理的节点上的池:

    zpool import tank -d /dev/mapper/并观察结果。

另外,你做这个之后你在dmesg看到了什么?