Eu tenho a seguinte situação: Há um conjunto de máquinas na rede (NAS e outros "servidores"). Existe uma máquina adicional para fins de backup. Ele coleta os dados de todas as 4 máquinas regularmente usando o rsync e cria backups incrementais. Os backups são do tipo pull e todos os scripts são executados com ionice -c idle nice -19
.
Para supervisionar a estabilidade de todo o sistema, um sistema de monitoramento (munin) é instalado em todas as máquinas Linux. Munin analisa intervalos de 10 min em diferentes variáveis e estados do sistema e envia e-mails em caso de problemas / avisos.
Todas as noites, no final de um backup (especialmente após um longo backup da maior máquina), munin reclama de altas latências de disco. Eu já forcei os limites que são aceitos, mas ainda assim a espera de IO no final desse backup é de 10seg ou mais. Isso parece bastante alto na minha opinião.
O script de backup é escrito por mim mesmo. Eu precisava de uma abordagem semelhante à do programa rsnapshot, mas com pequenas modificações. Assim eu criei eu mesmo (com muito menos funcionalidade). Na verdade, rsync
s as máquinas remotas para uma pasta temporária além dos outros backups e, em seguida, gira / remove os backups antigos de acordo. De acordo com a minha pesquisa até agora o problema acontece ao escrever o novo backup (principalmente hardlinking) ou durante a rotação / remoção dos backups. Eu não posso dizer exatamente onde está o problema, já que a granularidade de munin é de apenas 10 minutos.
O destino dos backups está localizado em uma cadeia de camadas de abstração: As partições físicas são coletadas em uma matriz RAID5 grande (mdadm). O dispositivo md
é usado como um PV do LVM. Dentro do VG há uma grande partição (além de outras não criptografadas) que é criptografada usando LUKS e dentro dela reside um segundo LVM e permite a atribuição de armazenamento para diferentes partições.
Qualquer pesquisa na rede levou principalmente a problemas com a conexão de rede e a latência introduzidas nessa camada. Embora meu backup seja feito por meio da rede, o problema aqui é o desempenho local no servidor de backup.
O que eu fiz até agora:
--bwlimit
não ajuda, pois os links físicos são criados localmente. Correto? cron
. Eu adicionei o ionice
/ nice
, mas não houve grande diferença. atop
na máquina para examinar os outros processos. Eu não vejo nada anormal lá (exceto por uma CPU 100% iowait durante a maior parte do tempo durante as fases finais dos backups). Agora, gostaria de fazer algumas perguntas:
rsync
interrompe qualquer ação do io? Portanto, se houver outro processo, ele será exibido primeiro, mas como não há nenhum, o disco é usado em uma taxa alta e, para esse processo rsync
, a latência de gravação é tão alta (o que é aceitável). Para deixar minha declaração clara: Estou ciente de que fazer um backup colocará bastante carga no sistema (especialmente nos discos) quando se trata de gravar os arquivos / criar os links.
Se precisar de mais informações, diga-me o que você precisa.
Tags performance backup rsync arch-linux