Backups Rsync em btrfs muito lentos

Backups Rsync em btrfs muito lentos

Meu ambiente é Ubuntu 15.04 com kernel 3.19.0-28-generic e Btrfs v3.17.

Tenho dois discos rígidos USB externos idênticos que uso com meu script de backup. Um deles está formatado com btrfse o outro com ext4. O sistema de arquivos de origem é sempre ext4. O rsynccomando fica assim:

rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"

Acabei de perceber que o backup realizado btrfsleva um tempoextremamentemuito tempo: pouco mais de uma hora, em comparação com os 4 minutos que leva para realizar a mesma cópia para ext4.

Para descartar o mau funcionamento do disco, realizei alguns benchmarks, com ddo “utilitário de disco” fornecido com o Ubuntu, mas obtive o mesmo desempenho em ambos os discos. A parte lenta parece estar vinculada ao backup anterior. Mesmo depois de desfragmentar e limpar, o comando a seguir leva cerca de 53 minutos btrfs, mas apenas 1 minuto ext4:

cp -arl "$previousBackup" "$destDir"

Pesquisando na Internet, encontrei indícios de que o desempenho do btrfshardlinks sofre, mas não esperaria issoenormediferença. Descobri que este comando é mais rápido, mas ainda leva mais de 30 minutos para ser concluído:

cp -ar --reflink "$previousBackup" "$destDir"

Alguém tem experiência com esse comportamento e pode confirmá-lo? Existe alguma maneira simples de corrigi-lo (por exemplo, diferentes opções de montagem) ou devo tentar excluir o maior número possível de hardlinks e usar apenas reflinks?

EDITAR

Acabei de descobrir que mesmoexcluindoum diretório btrfsrequer mais de uma hora. A mesma operação é instantânea no ext4disco “gêmeo”. Obviamente há um problema com metadados aqui.

Responder1

Você diz que está copiando hardlinks com o seursynccomando, mas onde está a -Hbandeira? Não vejo isso no seu comando:

rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"

A maneira como entendo como rsyncfunciona - com relação aos hardlinks - é que sem o -Hsinalizador os dados reais são copiados em vez do hardlink, conforme explicado norsyncpágina de manual:

-H, --links físicos

Isso diz ao rsync para procurar arquivos com link físico na transferência e vincular os arquivos correspondentes no lado receptor. Sem esta opção, os arquivos com link físico na transferência são tratados como se fossem arquivos separados.

Posso imaginar que um procedimento em que muitos arquivos semelhantes sejam copiados repetidamente, em vez de serem vinculados, resultaria em um tempo de transferência mais lento.

Além disso, considere usar o sinalizador -z( --compress):

-z, --comprimir

Com esta opção, o rsync compacta os dados do arquivo à medida que são enviados para a máquina de destino, o que reduz a quantidade de dados transmitidos – algo que é útil em uma conexão lenta.

Sim, esta é uma transferência de USB para USB no mesmo sistema, então é provável que a velocidade já esteja otimizada, mas não faz mal ver que -ztalvez o ajude a superar gargalos naturais na transferência de dados USB.

Um tutorial simples e agradável que explica esses sinalizadores - assim como outros -pode ser encontrado aqui.

informação relacionada