从具有不可用设备的池中恢复 ZFS 镜像

从具有不可用设备的池中恢复 ZFS 镜像

我尝试将我的双向镜像扩展为三向镜像。新驱动器有一些文件系统问题(ext4),因此我尝试强制zpool add -fZFS 为我处理该驱动器。这导致了一个奇怪的配置:

 config:
    mypool                ONLINE
      mirror-0            ONLINE
        wwn-drive1-part1  ONLINE
        wwn-drive2-part1  ONLINE
      scsi-new-drive      ONLINE

因此我尝试连接新的驱动器:

sudo zpool attach -f mypool wwn-drive1-part1 scsi-new-drive 
/dev/disk/by-id/scsi-new-drive is in use and contains a unknown filesystem.

然后我做了更复杂的事,导出池并擦除驱动器(wipefs -a)。当然,现在当我尝试导入池时,我得到了:

 config:

    mypool                    UNAVAIL  insufficient replicas
      mirror-0                ONLINE
        wwn-drive1-part1      ONLINE
        wwn-drive1-part1      ONLINE
      scsi-new-drive          UNAVAIL

现有镜像有两个 10TB 驱动器,已使用约 6TB。我有备份,但如果可能的话,我想避免备份并恢复(或移动?)池。我想达到此状态:

    mypool
      mirror-0
        wwn-drive1-part1
        wwn-drive1-part1
        new-drive

还有希望吗?我该怎么做才能让游泳池恢复运行?

答案1

简短回答: 从备份恢复。如果失败,请尝试以下建议。如果仍然失败,请联系专业的恢复服务。

长答案:你基本上将磁盘添加为顶级 vdev(条带成员),然后已擦除一些关键数据(即:ZFS 标签)并损坏了您的池。下次,要添加镜像支路(即:从 2 路镜像变为 3 路镜像),请记住只使用zpool attach 没有 zpool add。当错误地添加磁盘时,在较新 (>= 2.x) 的 ZFS 版本上,您可以发出zpool remove从池中删除磁盘的命令。绝不在没有先花时间真正了解自己正在做什么的情况下擦除磁盘。

如果您无法从备份恢复,请尝试以下操作:

echo 1 > /sys/module/zfs/parameters/zfs_max_missing_tvds
echo 1 > /sys/module/zfs/parameters/zfs_recover
zpool import -o readonly=on -o failmode=continue mypool

如果池已正确导入,则可以使用快照完成添加新磁盘以恢复数据。如果不存在这样的快照,您可以尝试从“实时”文件系统读取,但请注意,此后写入的任何数据都zfs add将被损坏(并且访问此类数据可能会因 IO 错误而暂停池,甚至可能阻塞/崩溃机器)。

相关内容