Não é possível destruir a captura instantânea do ZFS: o conjunto de dados já existe

11

Eu tenho um servidor (T5220, embora duvide que seja importante) executando o Solaris 10 8/07 e tenho um pool ZFS, "mysql", no disco interno. Dentro dele, eu tenho um sistema de arquivos "mysql / data / 4.1.12", que eu fotografo a cada hora com um script do cron.

Eu tenho um instantâneo, criado como um desses instantâneos, que não será destruído. Eu o renomeei fora de sequência para "mysql/data/4.1.12@wibble", para que meu script não tente e falhe em destruí-lo, mas estava originalmente dentro da sequência, embora eu duvide que isso importe. Renomeia com sucesso. O instantâneo pode ser navegado e lido com êxito no diretório .zfs / snapshots. Não possui clones baseados nele.

Tentando destruí-lo, faz isso:

(265) root@web-mysql4:/# zfs destroy mysql/data/4.1.12@wibble
cannot destroy 'mysql/data/4.1.12@wibble': dataset already exists
(266) root@web-mysql4:/# 

o que é aparentemente sem sentido: é claro que já existe, esse é o ponto!

Alguém viu alguma coisa assim antes? As pesquisas na Web não mostram nada obviamente semelhante.

Posso fornecer patches instalados, se necessário.

Morven
fonte

Respostas:

10

Esta questão já foi respondida, cortesia de Cindy Swearingen (cindys) aqui: http://opensolaris.org/jive/thread.jspa?messageID=484242&tstart=0

Resumo: Se você receber recebimentos incrementais, pode ser CR 6860996:

Um clone temporário é criado para um recebimento incremental e, em alguns casos, não é removido automaticamente.

1. Determine clone names:

# zdb -d <poolname> | grep %

2. Destroy identified clones:

# zfs destroy <clone-with-%-in-the-name>

It will complain that 'dataset does not exist', but you can check
again(see 1)

3. Destroy snapshot(s) that could not be destroyed previously

fonte
3

Depois de atualizar para conjuntos de patches mais recentes, eu poderia excluir esse instantâneo com êxito. Claramente havia um bug em algum lugar que Sun esmagou.

Morven
fonte
2

Não espero que esse seja o problema (acho que você recebe uma mensagem de erro diferente), mas você tem algum clone com base nesse instantâneo?

Marca
fonte
Não há clones baseados nele; era disso que eu suspeitava a princípio, mas não é isso.
194 Morven Morven
2

Embora essa solução provavelmente não esteja relacionada ao problema do OP, também recebi a mesma mensagem de erro enigmática ao tentar excluir um zvol.

No meu caso, o zvol foi criado por um zfs receive interrompido, que foi enviado usando o recurso de retorno "-s". O token de resumo estava impedindo que fosse destruído.

Para corrigi-lo, eu corri zfs receive -A <pool/zvol> (no FreeBSD 10.3)

ACyclic
fonte
Útil saber; certamente é possível que fosse esse o caso.
Morven
1

Eu também vi esse problema (novembro de 2009). Novamente, apenas UM instantâneo não pode ser destruído e recebo a mesma mensagem sem sentido

# zfs destroy blue/viss02_backup/46home1f@200910211357
cannot destroy 'blue/viss02_backup/46home1f@200910211357': dataset already exists

E esse instantâneo não é a origem e o clone do sistema de arquivos. Na verdade, eu tenho um sistema de arquivos clonado - mas uma pesquisa recursiva mostra que ele não é baseado no instantâneo problemático

# zfs get -H -o value -r origin blue | uniq
-
blue/viss02_backup/zones/puppis@200902031605
-

Até que eu o renomeie, esse instantâneo também estragará os scripts que eu corro para controlar a proliferação de instantâneos.

Informações sobre a versão: Solaris no x86 (5.10 Generic_141445-09 i86pc) Este sistema está atualmente executando a versão 15. do pool do ZFS 15. Todos os pools são formatados usando esta versão.


fonte
1

Mesmo problema sem qualquer clone.

Os problemas ocorrem enquanto a versão zfs era 10. Tentamos atualizar para 15 sem nenhuma alteração


 zfs destroy -rR zpool/mailboxes
 cannot destroy 'zpool/mailboxes@bug': dataset already exists


fonte
1

Tente examinar o conjunto de dados com o zdb.

zdb -e -d tank

Eu estava tentando fazer

zfs destroy -r tank/dataset

que aparece zfs liste estava recebendo esse erro.

O que eu descobri foi que o zdb viu

tank/dataset/dataset

que não estava aparecendo zfs list. Eu era capaz de facilmente

zfs destroy -r tank/dataset/dataset

e depois

zfs destroy -r tank/dataset

sem erros.

Parece que talvez seja um erro zfs list. FreeBSD 11.2-ESTÁVEL.

Bill McGonigle
fonte