Я устроил глупую аварию в однодисковом пуле ZFS, похоже, так же, как и человек в эта ветка списка рассылки, я. е., похоже, я перезаписал важные метаданные. Можно ли это восстановить из фактической полезной нагрузки или есть способ получить полезную нагрузку без метаданных?
Вот что я и сделал:
zpool export
это на первой машинеzpool create
пожаловался на то, что устройство использовалось, я подумал: «Нет проблем, я просто отключил хост, он больше не используется» и сделал zpool create -f
Что я должен был сделать (как я понял после RTFM), так это import
вместо того create
на новом хосте. Теперь у меня есть рабочий zfspool, но файловые системы пропали / невидимы.
Я попытался повторно импортировать устройство на старый хост, а позже попытался import -D
, но совершенно очевидно, что оба не работали.
Верхние и нижние 512 килобайт диска / раздела содержат метки, которые включают в себя список последних нескольких уберблоков (для восстановления и отката) и геометрию RAID пула (более конкретно vdev, частью которого был диск). Создав новый пул, вы почти наверняка стерли старые этикетки. Это означает, что вам нужно знать точную геометрию пула (конфигурация RAID-Z с порядком дисков) и искать уберблоки трудным путем.
Команда zpool create перезаписывает все метки на устройстве (поэтому вам пришлось добавить «-f», что по сути означает «вините меня, если все пойдет не так»). Поскольку метки vdev содержат указатель корневого блока (который указывает на корневой блок всего дерева объектов пула), а значение в этом указателе блока перемещается по мере добавления новых данных (из-за семантики COW), ваши данные исчезли
Ну, обо всем по порядку, я получу копию диска с битовым потоком, прежде чем что-либо пробовать.
Есть ли zpool import -D
Делать что-нибудь?
Если честно, я так не думаю, потому что новый пул перезаписал все метки, блоки и блоки указателей исходного пула.