Digamos que eu tenha um conjunto de dados com 100 instantâneos e queira rm -rf
todas as pastas denominadas "cache" em todos os instantâneos.
Quero realmente liberar o espaço, não apenas escondê-lo em camadas de instantâneos, então criar um clone e removê-lo e depois tirar um novo instantâneo não parece fazer o que eu quero.
Alguma maneira semi-automática de fazer isso? Alguns que envolvem o zfs listam -t snapshot, zfs clone, zfs promotion, zfs snapshot?
(postagem cruzada em /superuser/313197, pois vejo que isso tem mais coisas sobre o ZFS)
Respostas:
Os instantâneos são somente leitura. Se você precisar dessas pastas, precisará excluir o instantâneo inteiro.
Você pode fazer um backup (com algo parecido com tar), excluindo as pastas ofensivas e excluindo o instantâneo. Obviamente, o backup agora está no formato tar, ou o que for; mas pelo menos você ainda tem uma cópia de backup.
fonte
Você pode tentar o seguinte:
fsnew
).fsnew
) para permitir que você destrua o instantâneo no qual o sistema de arquivos se baseia.fsnew
.Agora, foreach snapshot after,
rsync
com o--inplace
sinalizador do snapshot para fsnew pulando os arquivos que você não deseja. O--inplace
sinalizador reduz o número de gravações e permite capturas instantâneas menores.fsnew
.Quando isso for feito, você deverá ter um instantâneo
fsnew
que corresponda aos instantâneos do sistema de arquivos original com os arquivos incorretos removidos.Se você tiver espaço na unidade, pode pular o comando "destroy" até ter seu script funcionando corretamente.
fonte
--delete
opção pararsync
, caso contrário, perderá exclusões ocorridas entre os instantâneos. Caso contrário, é uma ótima idéia.Você não pode destruir o instantâneo original após promover a ação. Somente se isso destruir o conjunto de dados pai.
exemplo (depois de promover o clone).
O zfs destrói media1/cheers/[email protected]
não é possível destruir 'media1/cheers/[email protected]': o instantâneo tem clones dependentes
use '-R' para destruir os seguintes conjuntos de dados:
media1/media/[email protected]
media1 / media / backup
zfs destroy media1/media/[email protected]
O zfs destrói media1/cheers/[email protected]
não é possível destruir 'media1/cheers/[email protected]': o instantâneo tem clones dependentes
use '-R' para destruir os seguintes conjuntos de dados:
media1 / media / backup
Após essa operação "engraçada", devo fazer as próximas
snapshot do zfs media1 / media / backup @ 1
zfs envia media1 / media / backup @ 1 | pv Os zfs recebem media1 / media / backupnew
O zfs destrói media1 / media / backup @ 1
zfs destroy -R media1 / media / backup
zfs renomeia mídia1 / mídia / backupnova mídia1 / mídia / backup
OU invertido promover um. O zfs promove media1 / media / backup e depois exclui o clone anuway, porque você terá um grande instantâneo no local src))
Somente o rsync / backup pode ajudar aqui.
fonte
Os instantâneos do ZFS para um sistema de arquivos ZFS específico podem ser encontrados no
.zfs/snapshots
diretório na raiz do sistema de arquivos. Você deve conseguir escrever um script que atravesse esta pasta erm
os arquivos necessários, que devem ser excluídos dos próprios instantâneos.fonte