ZFS 恢复镜像-0 UNAVAIL 丢失设备

ZFS 恢复镜像-0 UNAVAIL 丢失设备

我是 ZFS 的新手,我把事情搞砸了。我有多个 ZFS 池,因为我没有意识到同一池下可以有单独的镜像。我仍在重建阵列,所以我的其中一个镜像是空的。我销毁了它,将其添加到主池中,一切都很好。

然后我去将该镜像的读取属性设置为只读,但无法。然后我尝试仅移除那面镜子,但失败了。最后,我尝试导出池,并覆盖第二个镜像(没有数据)并尝试导入主池。我的想法是,当镜子丢失/退化时,它会出现,但第一面镜子会没问题,但不太幸运。我现在根本无法导入 zpool,即使(我怀疑)mirror-0 运行正常。

我想知道是否有办法解决这个问题?我正在考虑手动设置额外镜像的 UUID/PARTUUID 只是为了让它导入,但是当然网上的所有内容都是关于 ext4 的,我没有找到一种方法来操作 ZFS 的 UUID。

您能想到有什么方法可以强制导入或删除 zpools 对第二个镜像的期望,以便它安装第一个镜像吗?或者最后,将mirror-0移动到它自己的zpool而不破坏数据?

失落的感觉...

这是一些数据:

池名称bigdataa

mirror-0 should have a functionion set of data

 pool: bigdataa
     id: 8521961398473378259
  state: UNAVAIL
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:

    bigdataa                                  UNAVAIL  insufficient replicas
      mirror-0                                ONLINE
        12d9fdf5-9912-4b47-a67c-73376cabe161  ONLINE
        0f8cbe38-fce7-ba4d-85fb-f0b624ef4c70  ONLINE
      615ac488-0519-4a31-88ea-ddc81595c9b7    ONLINE
      mirror-2                                UNAVAIL  insufficient replicas
        aef43ae1-2bff-4eac-8c91-7818b1ec37fd  FAULTED  corrupted data
        8d1e0a1e-9736-4a28-a968-555fe65e9d17  FAULTED  corrupted data

答案1

我做了广泛的研究,但无法找到安装泳池的方法。我将继续保持单独的池向前发展,这样我就可以在没有问题的情况下操纵各个镜像的属性并安装单个镜像(对它的工作原理没有印象......)并使用 MergeFS 呈现最终的单个池。

我确实尝试过 UFS Explorer RAID Recovery(我最终需要的只是 UFS Explorer Recovery,价格为 70 加元,更容易接受,现在我的工具包中有一个很棒的软件),昨晚之后,它完成了扫描并似乎找到了我所有的文件。我将采用 200 加元的价格标签并更新最终结果,但情况看起来不错!

更新:我目前正在保存所有文件,到目前为止一切看起来都很棒。具有讽刺意味的是,我意识到我什至不需要“扫描丢失的文件”,因为分区/文件结构从未改变,似乎该软件能够以某种方式查看镜像中的各个磁盘,而无需“导入”池或具有其他可用磁盘。 (我没有扫描,而是直接在我的其他镜像盘上“查看文件”来确认这一点)

我想这些人不知道他们在说什么......我讨厌那些只是用负面/无用的反馈来恶搞的人......

https://www.ixsystems.com/community/threads/recovery-tool-for-zfs.23008/post-138885

在此输入图像描述

答案2

您在此处构建的方式表明您的数据在镜像 0、镜像 2 和另一个磁盘上进行条带化 (RAID-0)。因此,当您覆盖mirror-2时,ZFS认为您的一半数据丢失了,这就是您根本无法导入池的原因。这就像您设置了一个三磁盘 RAID-0 阵列,然后擦除了其中一个磁盘 - 所有数据都变得无法访问,因为这就是条带化的工作原理。

这解释了为什么您也无法在mirror-2 上设置只读属性。这就像尝试将 RAID-0 阵列中的一个磁盘标记为只读,这是无法完成的,因为写入需要在 RAID-0 阵列中的所有磁盘上进行条带化。您不能将存储设备上的每三个块标记为只读!

看起来您在mirror-2上还没有数据,但ZFS似乎不知道这一点,这就是为什么它在磁盘被覆盖后拒绝导入阵列。

我想也许您假设池中的所有设备/vdev 都是彼此的镜像,但实际上 ZFS 在池中的每个 vdev 上条带数据。这就是为什么如果您希望对数据进行镜像而不是条带化,则必须创建一个特殊的镜像 vdev。

相关内容