É possível recuperar parcialmente arquivos de um sistema de arquivos raid-0 do btrfs com um disco ausente?

1

Eu tenho uma situação terrível em minhas mãos e estou apenas procurando um pouco de percepção antes de chamar isso de uma causa perdida.

Para colocar as coisas em contexto, vou dar a você primeiro meu esquema de particionamento.

Eu tenho um servidor com um sistema de arquivos btrfs de quatro discos (os dados são gerados com o modo btrfs raid0). Cada disco tem uma partição criptografada pelo LUKS com os dados do btrfs, cada partição do LUKS é protegida por um único slot de chave que reside em um arquivo criptografado dentro do initramfs. Um script LUKS descriptografa essas chaves de inicialização automaticamente usando um cartão inteligente.

Agora vem a confusão.

Muitos meses atrás eu tive que aumentar o sistema de arquivos btrfs e adicionar um novo disco, criptografá-lo, salvar o bootkey, etc. No entanto, ignorei uma parte crítica do processo e esqueci de executar o update-initramfs que teria propagado meu nova chave de boot criptografada para o initramfs. Hoje, esse servidor foi reiniciado devido a uma falha de energia e, para minha surpresa, quando eu o inspecionei, / var / lib / bootkeys não continha a chave do meu novo disco adicionado!

Isso me leva à pergunta atual.

Existe alguma chance de que o arquivo de chave de inicialização contido no meu, agora 25% ausente, sistema de arquivos btrfs possa estar localizado em um dos três discos aos quais ainda tenho acesso? E se houver, há alguma chance de recuperar essa chave de boot e restaurar o acesso completo ao meu sistema de arquivos?

Para começar, tentei executar os seguintes comandos, mas eles não produzem nenhuma saída significativa ou parecem restaurar nenhum arquivo (/ dev / mapper / c {0,2} são os discos descriptografados legíveis).

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 
    
por Tristan 11.01.2018 / 00:46

0 respostas