我可以读取缺少顶层 vdev 的 zpool 吗?

我可以读取缺少顶层 vdev 的 zpool 吗?

我是 ZFS 新手,由于无知,我犯了严重的错误。删除 zvol,它是池的顶级 vdev。所以我正在寻找一种方法来从池中收集未损坏的数据。

长话短说:

  1. 使用两个 raidz 创建一个池
  2. 存储一些数据(DataA)
  3. 将 zvol 添加到池中
  4. 存储一些数据(DataB)
  5. 刪除數據B
  6. 删除 zvol
  7. 池已降级,正在寻找读取数据的方法

长篇故事就从这里开始:

我用 raidz 创建了一个 zpool 并存储了一些数据(DataA)。突然我需要更多空间来临时存储一些数据(DataB)。我有多余的 zfs 磁盘,并且找到了“zpool add”和“zpool remove”。所以我想“似乎我可以通过添加顶层 vdev 来增加池大小,然后再将其删除!现在对我来说很完美!”并执行了该计划。删除 DataB 后,我发现“zpool remove”只能在非常受限的情况下完成。我决定重建池。但我很忙,需要立即释放 zvol 占用的空间。因为 DataA 是在添加 zvol 之前存储的,我认为 DataA 仅在 raidzs 中被条带化,即使我删除了 zvol,DataA 也是可读的。所以我删除了它。这是一个非常愚蠢的想法。

池已降级且无法导入。我设法通过将 readonly on、zfs_max_missing_tvds 设置为 1、spa_load_verify_data 和 spa_load_verify_metadata 设置为 False 来导入池。但顶级路径上出现“在以下文件中检测到永久错误”错误,我无法挂载池。

这是游泳池的当前状态。

zpool 状态 -v

我正在制定一些策略,但我不知道该怎么做,也不知道是否可行。以下是一些策略:

  • 找到读取当前状态下数据的方法。
  • 制作假的“rv-part1”并导入池并进行清理
  • 用其他 vdev 替换“rv-part1”并清理
  • 备份池并在工作池中恢复

总之,如果有办法或提示可以恢复我的数据,请告诉我,如果您需要任何信息,我会尽快提供。

PS raidz1-0 和 raidz1-1 具有相同的物理磁盘似乎很奇怪......还有另一个愚蠢的故事......

相关内容