我尝试将我的双向镜像扩展为三向镜像。新驱动器有一些文件系统问题(ext4),因此我尝试强制zpool add -f
ZFS 为我处理该驱动器。这导致了一个奇怪的配置:
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 错误而暂停池,甚至可能阻塞/崩溃机器)。