Como fazer com que o ZFS crie instantâneos de um diretório apenas quando os arquivos são alterados?

6

É possível fazer com que o ZFS crie instantâneos de um sistema de arquivos, ou seja, pool / sistema de arquivos / somente quando os arquivos são alterados? Em vez de usar o cron ou algo para criar automaticamente um instantâneo a cada 5 minutos, é possível fazer com que o ZFS tire instantâneos automaticamente após a alteração de um arquivo?

Isso é possível e o que isso envolveria? Como você faria isso?

Obrigado antecipadamente.

    
por caleban 18.11.2010 / 23:04

4 respostas

5

Múltiplas opções:

1) cron baseado zfs diff (Solaris 11 Express ++) e se algo mudou - > Instantâneo() 2) gatilho do snapshot do dtrace zfs

Eu não fiz o último, mas li sobre isso. 1) é provavelmente a maneira mais fácil de fazer algo, embora você possa perder algumas mudanças, mas você não terá instantâneos sem nenhuma mudança se acumulando.

Atenciosamente, Robert

    
por 18.11.2010 / 23:27
5

Primeiro, você não faz instantâneos de diretórios, mas de sistemas de arquivos (completos) (ou volumes) com o ZFS. Além disso, mesmo que os snapshots sejam muito leves com o ZFS, disparar um instantâneo para cada alteração de arquivo provavelmente prejudicaria o desempenho, a menos que o sistema de arquivos tenha uma taxa de atualização realmente baixa. Um arquivo pode ser atualizado por um número muito grande de operações de gravação, cada uma das quais criaria um instantâneo de acordo com seus requisitos. Não tenho certeza se milhares ou milhões de instantâneos seriam gerenciáveis.

    
por 18.11.2010 / 23:59
0

Você não poderia escrever um script para criar um novo instantâneo, compará-lo ao último instantâneo e, se nada tiver sido alterado, simplesmente remover o instantâneo? Eu não tenho certeza de como a comparação dos dois instantâneos aconteceria, mas parece que deveria ser simples.

    
por 23.11.2010 / 20:28
0

Supondo que você deseje evitar instantâneos a cada cinco minutos com arquivos inalterados, você pode implementar um script do dtrace acionado que ocorra gravações que criem um arquivo de sinalizador; em seguida, um script que é executado periodicamente via cron que cria um instantâneo quando o arquivo de sinalizador existe. Constantin Gonzalez escreveu um post no blog que cobre a maior parte do que você precisa para implementar isso:

link

    
por 25.11.2010 / 00:40