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

Как я могу восстановить перезаписанные метки, блоки указателей и уберблоки в пуле ZFS?

Я устроил глупую аварию в однодисковом пуле ZFS, похоже, так же, как и человек в эта ветка списка рассылки, я. е., похоже, я перезаписал важные метаданные. Можно ли это восстановить из фактической полезной нагрузки или есть способ получить полезную нагрузку без метаданных?

Вот что я и сделал:

Что я должен был сделать (как я понял после RTFM), так это import вместо того create на новом хосте. Теперь у меня есть рабочий zfspool, но файловые системы пропали / невидимы.

Я попытался повторно импортировать устройство на старый хост, а позже попытался import -D, но совершенно очевидно, что оба не работали.

Верхние и нижние 512 килобайт диска / раздела содержат метки, которые включают в себя список последних нескольких уберблоков (для восстановления и отката) и геометрию RAID пула (более конкретно vdev, частью которого был диск). Создав новый пул, вы почти наверняка стерли старые этикетки. Это означает, что вам нужно знать точную геометрию пула (конфигурация RAID-Z с порядком дисков) и искать уберблоки трудным путем.

Команда zpool create перезаписывает все метки на устройстве (поэтому вам пришлось добавить «-f», что по сути означает «вините меня, если все пойдет не так»). Поскольку метки vdev содержат указатель корневого блока (который указывает на корневой блок всего дерева объектов пула), а значение в этом указателе блока перемещается по мере добавления новых данных (из-за семантики COW), ваши данные исчезли

Ну, обо всем по порядку, я получу копию диска с битовым потоком, прежде чем что-либо пробовать.

Есть ли zpool import -D Делать что-нибудь?

Если честно, я так не думаю, потому что новый пул перезаписал все метки, блоки и блоки указателей исходного пула.