Não é possível excluir um instantâneo do btrfs

1

Eu tenho um sistema que cria instantâneos btrfs periódicos e exclui os antigos. Hoje, comecei a receber avisos de que o sistema não pode excluir alguns instantâneos antigos.

Esta é a saída que recebo:

root@machine:/path# btrfs sub del 2014-10-26--01-50-01-@ten_minutely
Delete subvolume '/path/2014-10-26--01-50-01-@ten_minutely'
ERROR: cannot delete '/path/2014-10-26--01-50-01-@ten_minutely'

Eu posso criar e excluir novos instantâneos sem problemas - apenas alguns deles, criados hoje, exibem esse comportamento.

As permissões parecem ok. Syslog não mostra nada relacionado. Verifiquei btrfs filesystem df e há espaço disponível para o sistema de arquivos - tanto para metadados quanto para dados.

Um strace do comando delete mostra:

#...
ioctl(3, 0x5000940f, 0xffa1d1f0)        = -1 ENOTEMPTY (Directory not empty)
close(3)                                = 0
#...

Que passos adicionais posso dar para investigar a causa?

    
por goncalopp 26.10.2014 / 15:30

1 resposta

3

Depois de algumas pesquisas, encontrei a raiz do problema

Dentro dos instantâneos que não podem ser apagados, havia um subvolume - aparentemente outro instantâneo. O sistema que cria instantâneos periódicos deve ser executado duas vezes para o mesmo caminho - criando, assim, o segundo instantâneo dentro do primeiro, em vez de usar esse nome.

Para o registro, estou usando btrfs-snapshot-rotation através do cron simples. Como eu tinha múltiplas frequências de instantâneos, duas devem ter sido executadas no mesmo segundo. Uma solução potencial é mudar para anacron .

    
por 28.10.2014 / 00:52