Como posso recuperar rótulos sobrescritos, blocos de ponteiro e ueberblocks em um pool do ZFS?

2

Eu causei um acidente estúpido em um pool ZFS de disco único, aparentemente da mesma forma que a pessoa em este tópico da lista de discussão , i. e., parece que eu substituí metadados importantes. Isso pode ser restaurado a partir da carga útil real ou existe uma maneira de recuperar a carga útil sem os metadados?

Veja o que eu fiz exatamente:

  • tinha um pool do ZFS em execução com um único disco em uma máquina
  • queria migrá-lo para um novo pool do ZFS em outra máquina
  • esqueci de zpool export na primeira máquina
  • quando zpool create reclamou que o dispositivo estava em uso, pensei "Sem problema, acabei de remover o host, ele não está mais em uso" e fiz zpool create -f

O que eu deveria ter feito (como percebi depois do RTFM) é import em vez de create no novo host. Agora eu tenho um zfspool em funcionamento, mas os sistemas de arquivos estão fora / invisíveis.

Eu tentei reimportar o dispositivo no antigo host e depois tentei import -D , mas, obviamente, ambos não funcionaram.

    
por Hanno Fietz 02.03.2010 / 00:23

2 respostas

1

Bem, primeiro as primeiras coisas, eu pegaria uma cópia do disco antes de tentar qualquer coisa.

Um zpool import -D faz alguma coisa?

Se eu for honesto, não acho que o novo pool tenha sobrescrito todos os rótulos, blocos e blocos de ponteiros do conjunto original.

    
por 02.03.2010 / 09:50
1

Os 512 kilobytes superiores e inferiores do disco / partição contêm os rótulos, que incluem uma listagem dos últimos uberblocks (para recuperação e reversão) e a geometria RAID do pool (mais especificamente o vdev do qual o disco fazia parte ). Ao criar uma nova piscina, você quase certamente apagou as etiquetas antigas. Isso significa que você precisa saber a geometria exata do pool (configuração RAID-Z com ordem de disco) e procurar os uberblocks da maneira mais difícil.

Um zpool create substitui todos os rótulos em um dispositivo (é por isso que você teve que adicionar "-f", o que essencialmente significa "culpe-me se tudo der errado"). Como os rótulos vdev contêm o ponteiro do bloco raiz (que aponta para o bloco raiz de toda a árvore de objetos do conjunto) e o valor desse ponteiro se movimenta à medida que novos dados são adicionados (devido à semântica COW), seus dados foram perdidos

    
por 21.10.2014 / 04:24