Рейтинг:0

Восстановление данных из zpool с отсутствующим устройством

флаг cn

У меня есть zpool, состоящий из двух зеркальных дисков, на котором хранятся все мои личные данные. Я хотел добавить еще один зеркальный диск, так как другие диски используются уже несколько лет. Вместо этого мне удалось повредить пул, и я больше не могу его импортировать.

Это был первоначальный макет пула (называемого «хранилищем») до того, как я что-то сделал:

свод
  зеркало-0
    сдд
    шдх

Я попытался добавить еще один диск, выдав zpool добавить хранилище /dev/sdc, и получил предупреждение от zpool (что-то об ожидании vdev, но scd является диском). Я проигнорировал предупреждение и принудительно выполнил операцию с помощью -f (да, это было довольно глупо...)

В итоге я получил следующую конфигурацию пула:

свод
  зеркало-0
    сдд
    шдх
  sdc

Заметив, что sdc не входит в состав зеркала, я попытался снова удалить его из пула и понял, что это невозможно. Я проигнорировал лишний диск и перезагрузился, предположив, что мои данные уже в безопасности внутри зеркала-0, и решил использовать переназначение sdc и использовать вместо него другой диск, перезаписав первые 100 МБ sdc нулями: dd if=/dev/zero of=/dev/sdc bs=1MB count=100 (да, я сегодня особенно глуп...)

Теперь, когда я пытаюсь импортировать свой zpool, я получаю следующую ошибку:

root@atlas:~# импорт zpool                                                                                                                         
   бассейн: хранилище                                                                                                                                     
     идентификатор: 3553551207657826252                                                                                                                       
  состояние: НЕДОСТУПНО                                                                                                                                   
 статус: Одно или несколько устройств отсутствуют в системе.                                                                                          
 действие: Пул не может быть импортирован. Прикрепите недостающее                                                                                           
        устройств и повторите попытку.                                                                                                                     
   см.: http://zfsonlinux.org/msg/ZFS-8000-6X                                                                                                      
 конфигурация:                                                                                                                                           
                                                                                                                                                   
        хранилище UNAVAIL отсутствующее устройство                                                                                                       
          зеркало-0 ОНЛАЙН                                                                                                                        
            СДД ОНЛАЙН                                                                                                                        
            СДХ ОНЛАЙН                                                                                                                        
                                                                                                                                                   
        Известно, что в этот пул входят дополнительные устройства, хотя их                                                                         
        точная конфигурация не может быть определена.                                                                                                  

Данные в зеркале на этих дисках чрезвычайно важны для меня, и я очень надеюсь, что есть способ восстановить данные из «частичного» пула. Так как я перезагрузился через несколько минут после фальшивого Добавлять операции, я предполагаю, что метаданные для файловой системы были стерты и что есть способ каким-то образом получить доступ к необработанным данным. Но я понятия не имею, с чего начать.

Кто-нибудь может мне с этим помочь?

Рейтинг:0
флаг cn

Мне удалось восстановить часть данных, обновив Debian до Bullseye (чтобы иметь доступ к более новой версии zdb) и импорт zpool с отсутствующими vdevs:

эхо 1 >> /sys/module/zfs/parameters/zfs_max_missing_tvds
zpool import -o readonly=на хранилище

Однако некоторые файловые системы в zpool были повреждены. Я скопировал неповрежденные данные в новый zpool и исследовал ранее тхг значения, чтобы найти тот, который не выдал никаких ошибок:

zdb -e хранилище -ul | grep 'txg' | sed 's/.*= //' | сортировать | главный
zdb -deG -o zfs_max_missing_tvds=1 -T 5102203 хранилище # <- ошибки
zdb -deG -o zfs_max_missing_tvds=1 -T 5102202 хранилище # <- ошибки
zdb -deG -o zfs_max_missing_tvds=1 -T 5102201 хранилище # <- сработало!

Затем я смог импортировать zpool с неповрежденным идентификатором группы транзакций:

zpool import -o readonly=on -T 5102201 хранилище

Эта команда заняла около 15 часов для моего зеркала 2x4 ТБ, но я снова смог получить доступ ко всем своим файлам. С тех пор данные были скопированы в новый zpool, к которому я больше никогда не буду прикасаться в состоянии лишения сна.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.