К сожалению: нет, не совсем.
В 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 обычно не то, что вы хотите сделать.