![是否可以从丢失磁盘的 btrfs RAID-0 文件系统中部分恢复文件?](https://linux22.com/image/715943/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BB%8E%E4%B8%A2%E5%A4%B1%E7%A3%81%E7%9B%98%E7%9A%84%20btrfs%20RAID-0%20%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%B8%AD%E9%83%A8%E5%88%86%E6%81%A2%E5%A4%8D%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我手头上的情况有点糟糕,在宣布这无望之前,我只是想寻求一些见解。
为了让您了解情况,我首先给您提供我的分区方案。
我有一台带有四磁盘 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
答案1
就数据安全性而言,RAID-0 并不是 RAID 模式。它只是将数据分散到可用磁盘上(也称为“条带化”)。
如果您有四个磁盘,并在这些磁盘上设置了 RAID-0,那么只要有一个磁盘损坏,整个 RAID 阵列就会变得不可用。您可以将阵列理解为一个链条,每个磁盘都是一个单独的链接。只要有一个磁盘损坏,整个链条就会断掉。即使以未加密的形式,也无法恢复您的数据。
这就是为什么 RAID-0 是一种非常危险的 RAID 模式,并且您应该确保了解 RAID-0 出现故障时的后果。
所以,回答你的问题,我担心你的数据丢失了。希望你有好的备份。