Rsync sobre Rsync via cronjob

2

Eu tenho um servidor local que é o Rsync de alguns computadores na rede local. Faz parte de uma solução de backup.

Este rsync é executado via cronjob duas vezes por dia. Ocasionalmente, as pessoas adicionam quantidades gigantescas de dados, como um terabyte ou mais. Quando isso acontece, não há garantia de que o Rsync terminará antes do segundo Rsync decolar.

O que acontece em tais circunstâncias?
Isso é algo a ser evitado?

    
por Hermann Ingjaldsson 04.06.2013 / 10:57

1 resposta

3

Se algum dia eu estiver preocupado com um cronjob iniciado antes que outro termine, normalmente eu crio um arquivo temporário em /tmp (como /tmp/lockFile_$$ ) que é removido como a última etapa do primeiro cronjob e só tem o segundo O cronjob começa com um loop na existência desses arquivos, dormindo entre 5 e 10 segundos em cada loop e interrompendo o loop quando o arquivo desaparece (possivelmente enviando um e-mail a cada tantas iterações para que você tenha mais facilidade em perceber os jobs paralisados). / p>

Se o ponto de estrangulamento no primeiro é a largura de banda da rede, você pode tentar brincar com as opções --compress e --compress-level para o rsync.

Se o ponto de estrangulamento for CPU, você pode tentar dar ao processo de rsync um valor mais baixo

Se for iowait time, você pode considerar ionice se estiver usando o cfq no Linux ou dividindo o comando rsync em vários processos simultâneos para que um processo possa estar aguardando E / S enquanto outro está transmitindo em vez de ir em série. A maioria das plataformas também permite ajustar a funcionalidade de E / S. No Linux, durante o primeiro cronjob, você pode considerar migrar temporariamente para o deadline scheduler (para priorizar as leituras sobre gravações) e aumentar temporariamente o read_ahead_kb , já que está obtendo arquivos grandes inteiros do disco.

    
por 04.06.2013 / 12:07

Tags