Назад | Перейти на главную страницу

Пул 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 -команда не сработала.

Команда

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 add hgst mirror good_device_name new_device

И снимаем старое устройство

zpool remove hgst old_device_id

Или за один шаг

zpool replace hgst old_device_id new_device

Ссылки

P.S. Убедитесь, что у вас есть хороший проверено внешнее резервное копирование, потому что вы не хотите усугублять ситуацию.

Я отключил диск

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)

Я бы использовал эти команды:

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

(чек man pool чтобы быть уверенным)

Используйте добавление пула осторожно, потому что вы легко получите полосатый бассейн вместо зеркала!