Восстановление пула ZFS после создания поверх него
Я переустановил свою систему Ubuntu 14.04 и попытался смонтировать свой существующий диск zfs. Это один диск со всеми данными на нем. ОС находится на другом диске, диск zfs содержит только данные.
Название пула crystal
,
На скорую руку (да.) Я сделал zpool create crystal /dev/disk-by-id/...etc...
Бассейн сейчас пуст.
Есть ли способ восстановить исходный пул и / или получить данные?
1 ответ
К сожалению: нет, не совсем.
В ZFS, несколько неинтуитивно, есть, прежде всего, две разрушительные операции: zfs destroy
а также zpool create
, В частности, команда zpool destroy
не является разрушительным и на самом деле довольно легко обратимым, если вы только быстро осознаете свою ошибку; он просто устанавливает флаг, и в этом случае zpool import -D
твой друг.
Эти команды разрушительны по аналогичным, но несколько иным причинам:
zfs destroy
разрушительно, потому что удаляет ссылки на уничтожаемый набор данных, поэтому нет возможности найти его на диске с помощью стандартных инструментов. (Но см. Также этот вопрос.)zpool create
разрушительный, потому что он перезаписывает все уберблоки пула, что означает, что у кода ZFS нет способа найти начало структур данных дерева Меркле на диске. Как только корень дерева не может быть найден, остальные данные становятся недоступными.
Оба они усугубляются сложным форматом ZFS на диске, что еще больше усложняет любые попытки восстановления. В большинстве других файловых систем файлы, как правило, будут смежными или в небольшом количестве отдельных мест. С ZFS вполне возможно, что данные будут распределены буквально по всему диску, и после любой из вышеперечисленных команд ничего не останется, чтобы указать, какие части принадлежат где. Что еще хуже, вы, конечно, ищете сжатые блоки данных и, возможно, такие вещи, как дедуплицированные данные. (Дедупликация в вашем сценарии маловероятна, но в общем случае она возможна.)
Возможно, можно будет привлечь некоторых экспертов ZFS для восстановления ваших данных, но обычные сервисы восстановления данных вряд ли смогут вам помочь на этом этапе, а общедоступное программное обеспечение для восстановления файловой системы даже не понимает ZFS. Предполагая, что вы можете найти людей, желающих работать с вами, это также будет очень дорого; Я видел упоминания о ценах, начинающихся с пятизначного диапазона долларов для подобных сценариев.
Ваш лучший выбор на данный момент - это, вероятно, восстановить последнюю резервную копию ваших данных и двигаться дальше.
Я, честно говоря, немного озадачен, почему вы смогли перезаписать пул с помощью команды, похожей на ту, которая указана в вашем вопросе. На моей системе с ZFS на Linux 0.6.4, построив похожий сценарий, zpool
отказывается create
операция с ошибкой "недопустимая спецификация vdev" о том, что устройство поддержки is part of exported pool '...'
, Вы должны были получить похожую ошибку, если вы не передали явно -f
zpool для принудительного выполнения операции, и в этом случае вы говорите ZFS, что да, вы действительно действительно хотите это сделать. Что особенно в случае ZFS обычно не то, что вы хотите сделать.