Exclui o sistema de arquivos ZFS com instantâneos, mas nenhum outro filho?

2

Você pode excluir um sistema de arquivos ZFS (ou outro conjunto de dados) com zfs destroy <dataset> . Isso falhará se o conjunto de dados tiver filhos, incluindo instantâneos. zfs destroy -r <dataset> removerá o sistema de arquivos e seus filhos, mas também destruirá qualquer filho não-instantâneo do sistema de arquivos. Existe uma maneira sucinta de dizer "Excluir este sistema de arquivos e seus instantâneos, mas somente se ele não tiver filhos não-instantâneos"?

Basicamente, eu tenho vários sistemas de arquivos aninhados e estou usando instantâneos extensivamente, tanto para replicação quanto para backups baratos. Eu gostaria de uma maneira de remover facilmente os sistemas de arquivos filho e seus instantâneos (por exemplo, zfs destroy tank/container/leaf ), fornecendo um mínimo de proteção contra a exclusão acidental de toda a coleção do sistema de arquivos (por exemplo, zfs destroy tank/container<enter>leaf )

Caso isso seja importante, estou usando o ZFS no Linux com o Scientific Linux 7.

Solução :

Com base no comentário do longneck, posso fazer isso com duas linhas:

zfs destroy tank/example/leaf@%
zfs destroy tank/example/leaf

Eu testei e faz exatamente o que eu quero.

    
por asciiphil 07.07.2016 / 16:34

2 respostas

3

Eu não testei, mas eu vi em outros posts que você pode remover todos os instantâneos como este:

zfs destroy -rv dataset_or_vol_name@%

Você poderia então fazer o acompanhamento com o comando destroy para remover o banco de dados.

    
por 07.07.2016 / 16:44
1

Este não é um folheto, mas você pode usar a saída de

zfs list -t all -r -H <dataset>

E faça um script passar e verifique as coisas com cuidado e destrua os sistemas de arquivos apropriados.

    
por 07.07.2016 / 16:59

Tags