ZFS 池损坏

ZFS 池损坏

我正在运行 proxmox (7.1-10) 和一些虚拟机。我意外地强制从 proxmox 导入了虚拟机 (truenas 12.0-U7) 正在使用的 ZFS 池:

zpool import -f Pool-1

命令返回空白,我以为我没事。

然后我重新启动了 Proxmox,但池不见了。然后我做了:

zpool import

pool: Pool-1
     id: 9292035031829486490
  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: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-72
 config:

    Pool-1        FAULTED  corrupted data
      mirror-0    FAULTED  corrupted data
        sdd2      ONLINE
        sdb2      ONLINE
      indirect-1  ONLINE
      indirect-2  ONLINE
      indirect-3  ONLINE

当时我还没有意识到自己所犯的错误,并尝试再次导入:

zpool import -f Pool-1

internal error: cannot import 'Pool-1': Invalid exchange
Aborted

到那时,我意识到我导入了错误的池。我回到 Truenas,发现该池处于离线状态。我检查了 Truenas 是否可以看到该池:

truenas# zpool import

   pool: Pool-1
     id: 9292035031829486490
  state: FAULTED
status: The pool was last accessed by another system.
 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: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
 config:

    Pool-1                                          FAULTED  corrupted data
      mirror-0                                      FAULTED  corrupted data
        gptid/f475cf25-9d3a-11eb-a1a4-0cc47a30748c  ONLINE
        gptid/f485d5c5-9d3a-11eb-a1a4-0cc47a30748c  ONLINE
      indirect-1                                    ONLINE
      indirect-2                                    ONLINE
      indirect-3                                    ONLINE

并首先尝试:

truenas# zpool import Pool-1

cannot import 'Pool-1': pool was previously in use from another system.
Last accessed by proxmox (hostid=2e5301d3) at Tue Jan 25 16:21:58 2022
The pool can be imported, use 'zpool import -f' to import the pool.

进而:

truenas# zpool import -f Pool-1
internal error: cannot import 'Pool-1': Integrity check failed
Abort trap (core dumped)

因此,现在如果我尝试强制从 proxmox 导入,我会收到“无效交换”信息,如果我尝试强制从 truenas 导入,我会收到“完整性检查失败”信息。

有人知道如何解决这个问题吗?

谢谢,RG

注意:该池是使用加密创建的。

答案1

我继续truenas# zpool import -f -FXn Pool-1

12小时后我得到了:

Code:
Would be able to return Pool-1 to its state as of Tue Jan 25 16:18:53 2022.
Would discard approximately 3 minutes of transactions.

然后我去了zpool import -f -FX Pool-1

我的游泳池现在安然无恙。

感谢所有建议,RG

答案2

请不要误会我的意思,我不想成为虚假希望的来源。Pool 很可能已经死了,但你只有几个选择:

  • 尝试以只读模式导入池
  • -F如果您的 zfs 实现有恢复模式,请尝试使用恢复模式导入池
  • 尝试在具有最新 zfs 堆栈的系统上导入池,您可以在创建池的原始操作系统上获得该堆栈,例如:夜间构建、不稳定的 git 修订版或开发人员分支中最新的可用提交。由于池是在 Proxmox 上创建的,所以我会使用它。

无论如何,在外部操作系统上导入池(例如在 Solaris 上创建的池 - 在 FreeBSD 或 Linux 上等等)通常是一个坏主意,应该非常谨慎地进行。

相关内容