【问题标题】:How to destory ZFS "phantom" pool after re-installing zfs pool重新安装 zfs 池后如何销毁 ZFS“幻像”池
【发布时间】:2017-05-29 05:30:03
【问题描述】:

我在 ZFS 镜像模式下设置了几个新磁盘(使用 Ubuntu-16.04-Root-on-ZFS。遗憾的是,我搞砸了一些东西(在 grub 安装期间),不得不重新开始。当我重新启动时(该文档中的步骤 6.5)我出现错误:

cannot import 'rpool': more than one matching pool
import by numeric ID instead

它让我进入了 initramfs shell。确实有两个 rpool,但其中一个坏了……大概是原始安装中的那个。我能够使用它的 ID 作为 rpoolgood 导入“好”的 rpool 并重新导出它。

但是我无法导入“损坏的”rpool(通过名称或 ID)。我想做的就是摧毁它。我的猜测是我应该在创建新分区之前将非数据分区清零(步骤 2.2)。我还没有真正的数据,所以我可以(并且可能应该)再次进行安装(首先将分区归零)。

在重新安装之前,我很好奇是否有办法炸毁那个坏/伪造的 rpool。

根据要求,我附上了重新导出 rpoolgood 后“zfs 导入”的屏幕截图。 IIRC,我在安装 grub 时不小心指定了一个分区而不是磁盘。当我意识到我的错误时,我只在其中一个磁盘上完成了它。

【问题讨论】:

  • 我假设“坏”池使用相同的物理设备?命令是否: zpool import -D 列出任何已损坏的池?
  • 运行 zdb 以查看您的 zpool.cache 文件是否看起来很奇怪,可能(或可能不会)对问题有所了解。如果看起来有什么不妥,删除 /etc/zfs/zpool.cache 应该是安全的,然后运行 ​​zpool set cachefile=/etc/zfs/zpool.cache 来创建一个新的。虽然我认为这是值得做的,但我不认为这是最终的解决方案。
  • import -D 没有显示任何已损坏的文件(这并不奇怪,因为重新安装是在 zfs 工具集的范围之外完成的)。我用 zdb 尝试了几个查询,但并没有给我更多的洞察力(但这可能与我缺乏 zfs 经验有关)。顺便说一句,我将 zfs 用于我的根文件系统,因此 /etc/zfs/... 充其量感觉就像是鸡和蛋的事情...在最坏的情况下是不合理的,因为 /etc/ 在导入 rpool 之前不存在。
  • 我想我有一个简单的(?)解决方案,但再提供一条信息会有所帮助。 zpool import 的输出是什么,没有池名称,并且在您运行命令时让我知道是否导入了好的 rpool。
  • 根据您的要求附上屏幕截图。感谢您的任何想法。

标签: zfs


【解决方案1】:

解决了:

TL/DR:我删除了所有分区,然后使用 dd 对每个磁盘的第一个和最后 10MB 进行了爆破(为了以一种优雅的方式爆破磁盘的最后一部分,请使用 [this exchange article][1])。这并没有恢复“好”池,但这对我来说不是必须的.​​.....获得全新安装是主要目标(这给了我)

略长:

我做了很多探索,我的结论是,如果您想将磁盘从一个 zpool 重新用于另一个 zpool,您最好擦除(至少部分)磁盘。销毁以前的池可能有效,但我没有这样做(并且不清楚我是否可以这样做,因为我搞砸了 grub 安装,所以我的分区可能已经被破坏了)

如果您在 mdadm raid 阵列中使用磁盘,ubuntu 指令确实谈到了擦除超级块......我应该概括评论。无论如何,这是一个薄弱的答案,因为我没有找到干净地编辑元数据的方法。

【讨论】:

  • 总比没有好,至少你可以从这一切中继续前进。这里 (serverfault.com/questions/297029/…) 讨论了可能感兴趣的 (BSD) ZFS 分区标签元数据。他们结论的关键是:“ZFS 维护 4 个带有分区元信息的标签,而 HPA 阻止 ZFS 看到上面的两个标签。”再次恭喜您解决了这个问题。
  • 我尝试使用zpool labelclear -f /dev/sda,但没有成功,同样的错误再次出现。可能唯一的万无一失的方法是将整个磁盘归零。
猜你喜欢
  • 1970-01-01
  • 2020-05-31
  • 2018-09-30
  • 2022-12-04
  • 1970-01-01
  • 2023-01-04
  • 2014-05-10
  • 1970-01-01
  • 2017-08-29
相关资源
最近更新 更多