如何导入具有不同配置的 ZFS 池

如何导入具有不同配置的 ZFS 池

重新启动我的 ZFS 池后无法打开我的主池。我收到的确切错误是:“池元数据已损坏,无法打开池”

当我使用 zpool status(从恢复控制台)检查 zpool 配置时,它显示的配置全部错误。配置列出了我刚刚移动到其他驱动器的几个驱动器。

目前 zpool status 的输出如下所示:

  pool: pool
 state: FAULTED
status: The pool metadata is corrupted and the pool cannot be opened.
action: Destroy and re-create the pool from
        a backup source.
   see: http://zfsonlinux.org/msg/ZFS-8000-72
  scan: resilvered 511G in 12h39m with 0 erors on Sat Mar 14 06:14:34 2015
config:


    NAME                              STATE     READ WRITE CKSUM
    pool                              FAULTED      0     0     1  corrupted data
      raidz1-0                        ONLINE       0     0     8
        wwn-0x50014ee05943ce36-part4  ONLINE       0     0     0
        wwn-0x50014ee05943ce36-part5  ONLINE       0     0     1
        wwn-0x50014ee05943ce36-part6  ONLINE       0     0     0
        wwn-0x50014ee05943ce36-part7  ONLINE       0     0     0
        wwn-0x50014ee05943ce36-part8  ONLINE       0     0     1

我运行的是 Fedora 20,内核 3.18.7-100

我通过运行检查了 zdb zdb -l /dev/disk/by-id/wwn-0x50014ee05943ce36-part4,它显示了 4 个标签,所有标签都显示了我重新启动之前的正确配置。

ZFS 是否有可能扫描我的磁盘,找到具有旧配置的旧分区之一并使用它来代替新分区?(其他分区上的 zdb -l 都显示与我启动时获得的配置不同的配置,除了 part8,它显示它正在用另一个磁盘替换 part8)我如何告诉 ZFS 使用正确的配置,以便我可以导入和打开我的池?

更新

我已经让一切再次运行,但不幸的是我真的不知道为什么事情又恢复正常了。我所做的就是启动 Fedora 的 Live CD。我安装了使用 ZFS 所需的所有工具,并从那里尝试查看 zpool 的状态。它给了我不同的配置(正确的配置)。我不知道为什么这与我启动并最终进入恢复模式时得到的不同。但当我尝试导入它后,它说一台或多台设备仍在使用中。我最终发现 ZFS 使用的分区(之前被 mdadm 用作 RAID 设备)仍然被检测为 RAID 阵列的一部分。我删除了 RAID 阵列,将超级块清零。完成此操作后,我就可以导入池了。我擦洗了整个阵列,没有报告任何错误。我重新启动到实际系统,一切正常。也许清理修复了一些问题,也许旧的 RAID 阵列妨碍了 ZFS。 (我在某处读到 mdadm 在 ZFS 之前启动)

更新2:

进行内核升级后,我再次陷入恢复模式,因为它无法打开我的 ZFS 池。我回到我的 live-cd 并重新创建了 dracut,使用dracut -f "initramfs-$(uname -r).img" $(uname -r)(确保内核与我在系统中实际使用的内核相匹配,而不是在 live-system 中)这让我再次启动并运行,所以我猜是这样的更改 zpool-root 配置后需要重新创建 dracut。

相关内容