O backup com o rsync torna o servidor sem resposta

2

Configuração:

Gostaria de fazer backup de 1 TB semanalmente de PROD para o servidor BACKUP . Os servidores são executados no Linux Ubuntu-1004-lucid-64-minimal 2.6.32-35-server.

Existe o servidor BACKUP (onde inicio o programa rsync) e o servidor PROD com os dados.

O comando que eu uso atualmente é o seguinte:

time rsync -r --delete [email protected]:/home/myuser/data .

Problema:

O problema com isso é: o servidor PROD se torna quase irresponsivo. O aplicativo da Web executado no servidor PROD está quase morrendo.

UPDATE: solução de trabalho atual

Após alguns comentários, estou usando este comando agora para fazer o backup de 1 TB de dados e está funcionando perfeitamente:

rsync -r --delete --rsync-path "ionice -c 3 nice rsync" --bwlimit=30000 [email protected]:/home/myuser/data .

Observe que defini um limite de largura de banda para 30 Mbps porque minha conexão entre o PROD e o servidor de backup tem 100 Mbps e essa largura de banda é compartilhada com o tráfego de produção de meus aplicativos da Web.

Por favor note que eu executo este comando no servidor BACKUP, e é por isso que estou usando a opção rsync-path para simplificar e ionizar o processo no servidor remoto (PROD).

Minhas perguntas originais para possíveis soluções

Como posso controlar o impacto do rsync (iniciado no servidor BACKUP)?

Como você resolveria esse problema?

Minha pequena pesquisa trouxe as seguintes possibilidades:

  • Executa o rsync de forma que o 1TB seja sincronizado em partes? por exemplo,

    rsync /source/[0-9]* [email protected]:/source_backup  
    rsync /source/[a-h]* [email protected]:/source_backup/  
    rsync /source/[i-p]* [email protected]:/source_backup/  
    rsync /source/[q-z]* [email protected]:/source_backup/
    
  • Ajudaria a limitar a largura de banda com a opção

    --bwlimit=10000 
    
  • É possível melhorar o processo na máquina remota de alguma forma? por exemplo,

    nice -n19 backup.sh
    

Eu não sei se o processo na máquina do PROD também seria afetado?

Qualquer ajuda e ideias são muito bem vindas.

    
por bzero 25.07.2012 / 16:38

1 resposta

2

Eu amo o rsync. Mas ainda tem uma falha de design onde quer "carregar" uma lista de todos os arquivos na árvore de diretórios que está digitalizando. Anteriormente, costumava esperar que toda a árvore fosse carregada antes de começar a transmitir a lista para o par. Isso parece ser corrigido agora e faz as coisas em paralelo melhor do que antes. No entanto, ainda quer carregar toda a lista. O impacto é proporcional ao número de arquivos, não ao tamanho dos dados.

Enquanto isso tudo envolve E / S para carregar a lista de todos os diretórios espalhados, esse impacto não pode ser alterado dividindo as coisas, já que tudo ainda deve ser varrido. No entanto, descobri que existe um impacto maior quando a lista é muito grande em uma execução, porque ocupa muito da memória virtual e coloca uma grande demanda em manter essa lista na RAM real pela maneira como ela opera nela. Essa demanda de memória está forçando outros processos a trocar.

A quebra da árvore de diretórios, como você sugeriu, ajudará a quebrar o impacto da demanda de memória.

Há também uma desvantagem para isso se os dados fizerem uso de arquivos com link físico. Se você tiver arquivos com hardlink E eles estiverem com hardlink entre as partes em que você divide a árvore de diretórios, você perderá a capacidade de o rsync manter o mesmo hardlink no destino (servidor de backup). Isso resultará em um maior uso de espaço no destino e, dependendo do tipo de hardlinking, poderá interromper o funcionamento de seus dados (por exemplo, esperar que uma alteração em um arquivo seja vista em outro). Se você não estiver usando explicitamente hardlinks, esse aspecto não será um problema para você.

Conte o número de arquivos que você tem em cada seção que você separa. Tente manter isso balanceado o máximo que puder. O melhor número para limitar depende da sua RAM física disponível e da necessidade de RAM por outros processos.

A largura de banda e as configurações agradáveis provavelmente não serão de muita ajuda para o problema de memória. A largura de banda ainda pode ajudar se também houver problemas de capacidade de rede.

    
por 25.07.2012 / 18:47