O que mantém um lado de um rsync tão ocupado?

11

Eu tenho uma máquina Debian na minha LAN que serve como servidor de backup para os outros. Ele possui quatro HDDs combinados em um dispositivo RAID de 5 md de software, naquele LVM e nesse btrfs. Os backups são feitos usando o rsync e, para um sistema de arquivos grande, leva mais de uma hora. Durante muito tempo, pensei que haveria pouco que eu pudesse fazer sobre isso.

Recentemente, no entanto, notei que a atividade do disco rígido era muito diferente nos dois extremos da transferência. Enquanto o lado de envio, executando o Gentoo e usando principalmente o ext4, praticamente não tinha E / S de disco, o lado de recebimento estava constantemente ocupado. Como a maioria dos dados não muda entre as transferências, acredito que as leituras de metadados devem compor a maior parte dos dados. Mas eu ficaria realmente surpreso se ler inodes no btrfs for mais trabalhoso do que fazer o mesmo no ext4.

iotop leituras de disco confirmadas de cerca de 1 a 4 MB / s no lado de recebimento, enquanto o lado de envio teve apenas uma explosão ocasional de 0,5 MB / s.

Minha pergunta é: alguém pode explicar o que está acontecendo aqui? De preferência com alguma indicação de como solucionar o problema, se possível.

Talvez haja alguma bandeira de ajuste do btrfs que eu possa usar, ou algo semelhante. Eu preciso de um FS com recursos de instantâneo no servidor de backup, e minha tentativa de usar o FreeBSD e o ZFS rapidamente leva a um FS inconsistente, por isso vejo pouca alternativa ao btrfs no momento. Portanto, as respostas que me dizem para usar ext4 ou zfs podem receber votos positivos, mas nenhuma marca de seleção.


Opções de Rsync em uso, conforme solicitado pelo cjm :

--rsync-path='rsync --fake-super'
--archive               # -rlptgoD
--hard-links            # detect and preserve these
--acls
--xattrs
--sparse
--noatime               # based on patch from samba #7249c1
--delete
--delete-delay
--fuzzy
--human-readable        # size suffixes, base 1000
--stats

Bem como várias -fregras para omitir alguns arquivos.


As opções de montagem dos btrfs são relatados por mountenquanto

rw,nosuid,noexec,noatime,nospace_cache

Em particular, isso inclui o noatimesinalizador, portanto, não deve haver nenhuma gravação envolvida, a menos que haja realmente diferenças em alguns arquivos. Eu adicionei esta informação em resposta à resposta de Kyle Jones .

MvG
fonte
Quais opções de rsync você está usando?
Cjm 23/07/12
Apenas tirando uma foto no escuro, você tem um disco com falha? Isso pode causar E / S extra porque está tentando reconstruir os dados ausentes das informações de paridade.
bahamat 23/07/12
@ Bahamat, eu tenho smartd em execução, e não relatou problemas. O mdadm também não relatou nenhum evento.
MvG
É realmente difícil dizer com certeza o que há de errado. Apenas um exemplo são os tamanhos de bloco incompatíveis entre as camadas. Para diagnosticá-lo, sua melhor aposta é usar algo como dtraceou systemtapdescobrir onde o tempo está sendo gasto.
bahamat 24/07/12
@ Bahamat, é uma avenida que ainda não investiguei. Você pode escrever uma resposta sobre como usar essas ferramentas para diagnosticar o problema? Isso seria bom. Instruções passo a passo, se você tiver tempo, mas mesmo algumas idéias aproximadas e indicadores de documentação seriam muito úteis.
MvG 24/07

Respostas:

3

Uma resposta possível é que o sistema de arquivos remoto seja montado por padrão com a opção "atime". As gravações no tempo de acesso para tudo o que o rsync remoto acessa, combinadas com a penalidade de gravação que você sofre com o RAID 5 (paridade de computação significa ler todos os discos RAID antes de gravar em um deles) podem explicar a ampliação de E / S no lado remoto.

Se eu estiver certo, você pode acelerar as coisas montando o sistema de arquivos remoto com a opção "noatime".

Kyle Jones
fonte
2
Bem pensado, mas infelizmente não é a solução: o sistema de arquivos já está montado no momento. Montagem informa o conjunto de todas as opções de montagem como rw,nosuid,noexec,noatime,nospace_cache.
MvG 23/07
1

Eu suspeito que as opções --fake-super. Isso diz ao rsync para armazenar todas as informações de metadados em atributos estendidos em cada arquivo. Eu suspeito que acessar esses atributos seja lento. Tente executar um teste com o rsync em uma raiz sem --fake-super. Você não pode reutilizar o mesmo backup, pois os atributos não coincidem.

Wayne
fonte
Você deve considerar expandir sua resposta para incluir alguns links úteis ou referências à documentação que apóiam sua afirmação.
precisa saber é o seguinte