私はかなり悪い状況にあり、それを失敗と呼ぶ前に少し洞察力を探しています。
状況を理解するために、まずパーティショニング方式を説明します。
4つのディスクで構成されたbtrfsファイルシステム(btrfs raid0モードでデータが配布される)を持つサーバーがあります。各ディスクにはbtrfsデータを含むLUKS暗号化パーティションがあり、各LUKSパーティションはinitramfs内の暗号化ファイル内の単一のキースロットで保護されています。 LUKS 鍵スクリプトは、スマートカードを使用してこれらの開始鍵を自動的に復号化します。
これで問題が発生します。
数ヶ月前、私はbtrfsファイルシステムを拡張し、新しいディスクを追加して暗号化し、ブートキーを保存するなどのことをしなければなりませんでした。しかし、プロセスの重要な部分を見落とし、update-initramfsを実行することを忘れていました。これにより、新しい暗号化されたブートキーがinitramfsに伝播されます。今日の停電のためにサーバーが再起動し、確認してみると/var/lib/bootkeysに新しく追加されたディスクのキーが含まれていませんでした!
これは私に実質的な質問を提起します。
私のbtrfsファイルシステム(現在の25%の損失)に含まれているブートキーファイルが、私がまだアクセスできる3つのディスクのうちの1つにある可能性はありますか?もしそうなら、そのスタートアップキーを回復し、ファイルシステムへのフルアクセス権を取り戻すことはできますか?
まず、次のコマンドを実行してみましたが、意味のある出力が生成されないか、ファイルを回復するようです(/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