双驱动器 ZFS 池,第二个驱动器被数据覆盖。如何将数据恢复/复制回第二个驱动器?

双驱动器 ZFS 池,第二个驱动器被数据覆盖。如何将数据恢复/复制回第二个驱动器?

第一个驱动器上的数据完好无损,第二个驱动器上的数据为“不可用”。覆盖的原因是我在应用 dd 命令时注意力不集中……

命令

sudo zpool replace -f hgst 4596995095197485503 /dev/sdd

给予

invalid vdev specification the following errors must be manually repaired: /dev/sdd1 is part of active pool 'hgst'

我让磁盘离线,并用 Gparted 删除了分区。重启后,它们又出现了,而且zpool replace-command 不起作用。

命令

dd if=/dev/zero of=/dev/sdd bs=1M count=2 seek=2048

dd if=/dev/zero of=/dev/sdd bs=512 seek=$(( $(blockdev --getsz /dev/sdd) - 1 )) count=1

也没什么帮助。

命令sudo zpool labelclear /dev/sdd 然后zpool replace-command 给了

cannot replace 4596995095197485503 with /dev/sdd: /dev/sdd is busy

也忙于指挥

sudo zpool replace -f hgst 4596995095197485503 /dev/disk/by-id/ata-HGST_HDN724030ALE640_PK2238P3G3E0MJ

zpool 状态

答案1

嗯,它是一面镜子,所以看起来你只需要在被擦除的磁盘上重新创建分区表和正确大小的分区,然后添加它,然后删除剩余的条目。

此命令将向镜像添加新设备

zpool add hgst mirror good_device_name new_device

并移除旧设备

zpool remove hgst old_device_id

或者只需一步

zpool replace hgst old_device_id new_device

链接

PS 确保你有一个好的已验证外部备份,因为您不想让事情变得更糟。

答案2

我会使用这些命令:

zpool detach hgst <corrupted_device>
zpool attach -f hgst <online_device> <new_device>

(确认man pool无误)

谨慎使用池添加,因为您很容易最终得到条纹池而不是镜像池!

答案3

我把磁盘离线了

zpool offline hgst /dev/disk/by-id/ata-HGST_HDN724030ALE640_PK2238P3G3E0MJ

分离驱动器

zpool detach hgst 4596995095197485503

已清除标签

zpool labelclear -f /dev/disk/by-id/ata-HGST_HDN724030ALE640_PK2238P3G3E0MJ

将磁盘重新装回

zpool attach hgst ata-HGST_HDN724030ALE640_PK2238P3G3E3UJ /dev/disk/by-id/ata-HGST_HDN724030ALE640_PK2238P3G3E0MJ

现在正在重新镀银。

NAME                                         STATE     READ WRITE CKSUM
hgst                                         ONLINE       0     0     0
  mirror-0                                   ONLINE       0     0     0
    ata-HGST_HDN724030ALE640_PK2238P3G3E3UJ  ONLINE       0     0     0
    ata-HGST_HDN724030ALE640_PK2238P3G3E0MJ  ONLINE       0     0     0  (resilvering)

相关内容