Infelizmente: Não, não realmente.
Existem, de maneira pouco intuitiva, basicamente duas operações destrutivas no ZFS: zfs destroy
e zpool create
. Especificamente, o comando zpool destroy
não é não destrutivo e, de fato, é facilmente reversível se você apenas perceber seu erro rapidamente; ele simplesmente define um sinalizador, caso em que zpool import -D
é seu amigo.
Estes comandos são destrutivos por razões semelhantes, mas ligeiramente diferentes:
-
zfs destroy
é destrutivo porque remove as referências ao conjunto de dados que está sendo destruído, portanto, não há como encontrá-lo no disco usando qualquer ferramenta padrão. (Mas veja também esta questão .) -
zpool create
é destrutivo porque substitui todos os überblocks do conjunto, o que significa que não há como o código do ZFS encontrar o início das estruturas de dados da árvore Merkle no disco. Depois que a raiz da árvore não puder ser encontrada, o resto dos dados ficará inacessível.
Ambos são exacerbados pelo formato complexo em disco do ZFS, o que complica ainda mais as tentativas de recuperação. Com a maioria dos outros arquivos de sistemas de arquivos, geralmente será contíguo, ou em um pequeno número de locais distintos. Com o ZFS, é perfeitamente possível que os dados sejam distribuídos literalmente por todo o disco, sem deixar nada após os comandos acima para indicar quais partes pertencem a esse local. Para piorar ainda mais, você certamente está procurando blocos compactados de dados e, possivelmente, também coisas como dados desduplicados. (A desduplicação não é provável em seu cenário, mas certamente é uma possibilidade no caso geral.)
É possível inscrever alguns especialistas do ZFS na recuperação de seus dados, mas é improvável que os serviços comuns de recuperação de dados possam ajudá-lo nesse ponto e o software de recuperação de sistemas de arquivos comumente disponível não é Até mesmo entender o ZFS. Supondo que você possa encontrar pessoas dispostas a trabalhar com você, isso também será muito caro; Vi menções de preços começando no intervalo de cinco dígitos para cenários semelhantes.
Sua melhor escolha neste momento é provavelmente restaurar um backup recente de seus dados e continuar com a vida.
Estou sinceramente um pouco confuso porque você foi capaz de substituir o pool com um comando semelhante ao indicado na sua pergunta. No meu sistema, com o ZFS No Linux 0.6.4, tendo construído um cenário semelhante,zpool
recusa a operação create
com um erro "especificação vdev inválida" informando que o dispositivo de backup is part of exported pool '...'
. Você deve ter recebido um erro semelhante, a menos que tenha passado explicitamente -f
para zpool para forçar a operação. Nesse caso, você está dizendo ao ZFS que sim, na verdade você realmente quer que isso seja feito. O que especialmente no caso do ZFS geralmente não é o que você quer fazer.