是否可以从磁盘丢失的 btrfs raid-0 文件系统中部分恢复文件?

是否可以从磁盘丢失的 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 

相关内容