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

Можно ли частично восстановить файлы из файловой системы btrfs raid-0 с отсутствующим диском?

У меня в руках довольно ужасная ситуация, и я просто хочу немного разобраться, прежде чем назвать это безнадежным делом.

Чтобы разобраться в контексте, я сначала просто дам вам схему разбиения.

У меня есть сервер с четырехдисковой файловой системой btrfs (данные охватываются режимом btrfs raid0). На каждом диске есть зашифрованный LUKS раздел с данными btrfs на нем, каждый раздел LUKS защищен одним ключевым слотом, который находится в зашифрованном файле внутри initramfs. Скрипт ключей LUKS автоматически расшифровывает эти загрузочные ключи с помощью смарт-карты.

А вот и промах.

Много месяцев назад мне пришлось вырастить файловую систему btrfs и добавить новый диск, зашифровать его, сохранить загрузочный ключ и т. Д. ОДНАКО, я пропустил важную часть процесса и забыл запустить update-initramfs, который распространял бы мой новый зашифрованный загрузочный ключ. в initramfs. Сегодня этот сервер перезагрузился из-за сбоя питания, и, к моему ужасу, когда я его осмотрел, в / var / lib / bootkeys не было ключа от моего недавно добавленного диска!

Это подводит меня к собственному вопросу.

Есть ли шанс, что файл загрузочного ключа, содержащийся в моей файловой системе btrfs, которая сейчас отсутствует на 25%, может находиться на одном из трех дисков, к которым у меня все еще есть доступ? И если да, то есть ли шанс восстановить этот загрузочный ключ и восстановить полный доступ к моей файловой системе?

Для начала я пробовал выполнить следующие команды, но они не производят никакого значимого вывода или, кажется, восстанавливают какие-либо файлы (/ dev / mapper / c {0,2} - читаемые дешифрованные диски).

btrfs restore --path-regex '^/(|var(|/lib(|/bootkeys(|/.*))))$' /dev/mapper/c0 /mnt/recovery0
btrfs restore --path-regex '^/(|var(|/lib(|/bootkeys(|/.*))))$' /dev/mapper/c1 /mnt/recovery1
btrfs restore --path-regex '^/(|var(|/lib(|/bootkeys(|/.*))))$' /dev/mapper/c2 /mnt/recovery2