ZFS: Remover arquivos de instantâneos?

7

Digamos que eu tenha um conjunto de dados com 100 instantâneos e queira rm -rf de todas as pastas denominadas "cache" em todos os instantâneos.

Eu quero realmente liberar espaço, não apenas escondê-lo em camadas de instantâneos, então fazer um clone e removê-lo e, em seguida, fazer um novo instantâneo não parece fazer o que eu quero.

Qualquer forma semi-automática faz isso? Alguns envolvem o zfs list -t snapshot, o zfs clone, o zfs promote, o zfs snapshot?

(postagem cruzada do link desde que eu vejo isso tem mais coisas do ZFS)

    
por Tino Didriksen 22.07.2011 / 12:33

3 respostas

7

Os instantâneos são somente leitura. Se você precisar dessas pastas, terá que excluir o instantâneo inteiro.

Você pode fazer um backup (com algo como tar), excluindo as pastas problemáticas, depois excluir o instantâneo. Obviamente, o backup agora está no formato tar ou qualquer outro formato; mas pelo menos você ainda tem uma cópia de segurança.

    
por 22.07.2011 / 14:45
12

Você pode tentar o seguinte:

  1. Clone o instantâneo mais antigo em um novo sistema de arquivos (chame-o de fsnew ).
  2. Promova o clone ( fsnew ) para permitir que você destrua o instantâneo no qual o sistema de arquivos é baseado.
  3. Remova os arquivos ofensivos.
  4. Crie um instantâneo de fsnew .

Agora, foreach snapshot after, rsync com o --inplace flag do instantâneo para fsnew ignorando os arquivos que você não deseja. O sinalizador --inplace reduz o número de gravações e permite instantâneos menores.

  1. Crie um instantâneo de fsnew .
  2. Destrua o instantâneo original.

Quando isso for feito, você deve ter um instantâneo em fsnew que corresponda aos instantâneos do sistema de arquivos original com os arquivos incorretos removidos.

Se você tiver espaço na unidade, talvez seja necessário pular o comando "destroy" até que o script esteja funcionando corretamente.

    
por 17.11.2011 / 22:36
-3

Os instantâneos do ZFS de um sistema de arquivos específico do ZFS podem ser encontrados no diretório .zfs/snapshots na raiz do sistema de arquivos. Você deve ser capaz de escrever um script que percorra esta pasta e rm dos arquivos que você precisa, o que deve apagá-lo dos próprios instantâneos.

    
por 22.07.2011 / 12:59

Tags