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

在第一个驱动器中的数据是完整的,第二个驱动器是“UNAVAIL”。 覆盖的原因是我应用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命令给

 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状态

那么,这是一个镜像,所以看起来好像你只需要重新创build分区表和大小正确的磁盘分区,并添加它,然后删除左边的条目。

这个命令会为镜像添加一个新的设备

 zpool add hgst mirror good_device_name new_device 

并删除旧的设备

 zpool remove hgst old_device_id 

或在一个单一的步骤

 zpool replace hgst old_device_id new_device 

链接

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

我会使用这些命令:

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

(检查man pool确定)

使用游泳池仔细,因为你很容易结束了条纹池而不是镜子!

我把磁盘脱机了

 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)