Backup, Parte 4: Visão geral e testes zbackup, restic, borgbackup


Este artigo discutirá as ferramentas de software de backup que, dividindo o fluxo de dados em componentes separados (partes), formam um repositório.


Além disso, os componentes do repositório podem ser compactados e criptografados e, o mais importante - com processos de backup repetidos - reutilizados novamente.


Um backup em um repositório semelhante é uma cadeia nomeada de componentes relacionados, por exemplo, com base em várias funções de hash.


Existem várias soluções semelhantes, vou me concentrar em 3: zbackup, borgbackup e restic.


Resultados esperados


Como todos os candidatos, de uma maneira ou de outra, exigem a criação de um repositório, um dos fatores mais importantes será a estimativa do tamanho do repositório. No caso ideal, seu tamanho não deve ser superior a 13 GB, de acordo com a metodologia aceita, ou até menos - sujeito a uma boa otimização.


Também é altamente desejável poder fazer backup de arquivos diretamente, sem usar arquivadores tar, além de trabalhar com ssh / sftp sem ferramentas adicionais, como rsync e sshfs.


Comportamento de backup:


  1. O tamanho do repositório será igual ao tamanho das alterações ou menos.
  2. Uma carga grande do processador é esperada ao usar compactação e / ou criptografia, e uma carga bastante grande na rede e no subsistema de disco é provável se o processo de arquivamento e / ou criptografia funcionar no servidor de armazenamento de backup.
  3. Se você danificar o repositório, é provável que ocorra um erro atrasado ao criar novos backups e ao tentar restaurar. É necessário planejar medidas adicionais para garantir a integridade do repositório ou usar os meios internos para verificar sua integridade.

O trabalho com alcatrão é aceito como um valor de referência, como foi mostrado em um dos artigos anteriores.


Teste de Zbackup


O mecanismo geral da operação zbackup é que o programa encontre áreas que contenham os mesmos dados no fluxo de dados fornecido na entrada, depois os comprima e criptografa opcionalmente, economizando cada área apenas 1 vez.


Para desduplicação, uma função de hash de anel de 64 bits com uma janela deslizante é usada para verificar se há coincidência com blocos de dados existentes (semelhante à maneira como é implementada no rsync).


Para compactação, lzma e lzo são usados ​​na execução multithread e para criptografia - aes. Nas versões mais recentes, existe uma oportunidade no futuro de excluir dados antigos do repositório.
O programa é escrito em C ++ com dependências mínimas. O autor aparentemente foi inspirado pela maneira unix, então o programa recebe dados sobre stdin ao criar backups, fornecendo um fluxo de dados semelhante ao stdout ao restaurar. Assim, o zbackup pode ser usado como um bom "bloco" ao escrever suas próprias soluções de backup. Por exemplo, o autor do artigo, este programa é a principal ferramenta de backup para máquinas domésticas desde cerca de 2014.


Um alcatrão regular será usado como o fluxo de dados, a menos que indicado de outra forma.


Vamos ver quais serão os resultados:

A verificação do trabalho foi realizada em 2 versões:


  1. um repositório é criado e o zbackup é iniciado no servidor com os dados de origem; o conteúdo do repositório é transferido para o servidor de armazenamento de backup.
  2. um repositório é criado no servidor de armazenamento de backup, o zbackup é iniciado via ssh no servidor de armazenamento de backup e os dados são fornecidos através do pipe.

Os resultados da primeira opção foram os seguintes: 43m11s - ao usar um repositório não criptografado e um compressor lzma, 19m13s - ao substituir o compressor por lzo.


A carga no servidor com os dados de origem foi a seguinte (o exemplo com lzma é mostrado, com lzo havia aproximadamente a mesma imagem, mas a proporção de rsync era cerca de um quarto do tempo):



É claro que esse processo de backup é adequado apenas para alterações relativamente raras e pequenas. Também é altamente desejável limitar a operação do zbackup a 1 thread, caso contrário, haverá uma carga muito alta no processador, porque o programa é muito bom em trabalhar em vários threads. A carga do disco foi pequena, o que, em geral, com um subsistema de disco moderno baseado em ssd, não será perceptível. Você também pode ver claramente o início do processo de sincronização dos dados do repositório com um servidor remoto, a velocidade é comparável ao rsync comum e depende do desempenho do subsistema de disco do servidor de armazenamento de backup. A desvantagem da abordagem é o armazenamento do repositório local e, como conseqüência, a duplicação de dados.


Mais interessante e prática na prática é a segunda opção com a execução imediata do zbackup no servidor de armazenamento de backup.


Primeiro, verificaremos a operação sem usar criptografia com o compressor lzma:



O tempo de execução de cada execução de teste:


Lançamento 1Lançamento 2Lançamento 3
39m45s40m20s40m3s
7m36s8m3s7m48s
15m35s15m48s15m38s

Se você ativar a criptografia usando aes, os resultados serão bem próximos:



Tempo de operação nos mesmos dados, com criptografia:


Lançamento 1Lançamento 2Lançamento 3
43m40s44m12s44m3s
8m3s8m15s8m12s
15m0s15m40s15m25s

Se a criptografia for combinada com a compactação no lzo, será assim:



Tempo de trabalho:


Lançamento 1Lançamento 2Lançamento 3
18m2s18m15s18m12s
5m13s5m24s5m20s
8m48s9m3s8m51s

O tamanho do repositório resultante era relativamente igual e totalizava 13 GB. Isso significa que a desduplicação está funcionando corretamente. Além disso, em dados já compactados, o uso de lzo fornece um efeito tangível; em termos de tempo total de operação, o zbackup se aproxima de duplicidade / duplicação; no entanto, fica 2-5 vezes mais atrasado que o baseado em librsync.


Os benefícios são óbvios - economizando espaço em disco no servidor de armazenamento de backup. Quanto às ferramentas para verificar o repositório - elas não são fornecidas pelo zbackup, é recomendável usar uma matriz de disco à prova de falhas ou um provedor de nuvem.


Em geral, uma impressão muito boa, apesar do projeto ter cerca de 3 anos (a última solicitação de recurso ocorreu há cerca de um ano, mas sem resposta).


Testando o borgbackup


Borgbackup é um garfo do sótão, outro sistema semelhante ao zbackup. Está escrito em python, possui uma lista de recursos semelhantes ao zbackup, mas também sabe como:


  • Monte backups através de fusíveis
  • Verifique o conteúdo do repositório
  • Trabalhar no modo cliente-servidor
  • Use vários compressores para dados, bem como a definição heurística do tipo de arquivo ao compactá-lo.
  • 2 opções para criptografia, aes e blake
  • Ferramenta integrada para

verificações de desempenho

benchmark borgbackup crud ssh: // servidor de backup / repo / path local_dir


Os resultados são os seguintes:


CZ-BIG 96,51 MB / s (10 100,00 MB de arquivos com zero: 10,36s)
RZ-BIG 57,22 MB / s (10 100,00 MB arquivos com zero: 17,48s)
UZ-BIG 253,63 MB / s (10 100,00 MB arquivos totalmente zero: 3,94s)
DZ-BIG 351,06 MB / s (10 100,00 MB arquivos totalmente zero: 2,85s)
CR-BIG 34,30 MB / s (10 arquivos aleatórios de 100.00 MB: 29.15s)
RR-BIG 60,69 MB / s (10 100,00 MB de arquivos aleatórios: 16,48s)
UR-BIG 311,06 MB / s (10 arquivos aleatórios de 100.00 MB: 3.21s)
DR-BIG 72,63 MB / s (10 100,00 MB de arquivos aleatórios: 13,77s)
CZ-MEDIUM 108,59 MB / s (1000 arquivos totalmente zero de 1,00 MB: 9,21s)
RZ-MEDIUM 76,16 MB / s (1000 arquivos totalmente zero de 1,00 MB: 13,13s)
UZ-MEDIUM 331,27 MB / s (1000 arquivos totalmente zero de 1,00 MB: 3,02s)
DZ-MEDIUM 387,36 MB / s (1000 arquivos totalmente zero de 1,00 MB: 2,58s)
CR-MEDIUM 37,80 MB / s (1000 arquivos aleatórios de 1,00 MB: 26,45s)
RR-MÉDIO 68,90 MB / s (1000 arquivos aleatórios de 1,00 MB: 14,51s)
UR-MEDIUM 347,24 MB / s (1000 arquivos aleatórios de 1,00 MB: 2,88s)
DR-MEDIUM 48,80 MB / s (1000 arquivos aleatórios de 1,00 MB: 20,49s)
CZ-SMALL 11,72 MB / s (10000 10,00 kB arquivos totalmente zero: 8,53s)
RZ-SMALL 32,57 MB / s (10000 arquivos de zero a 10,00 kB: 3,07s)
UZ-PEQUENO 19,37 MB / s (10000 10,00 kB arquivos totalmente zero: 5,16s)
DZ-SMALL 33,71 MB / s (10000 10,00 kB arquivos zero: 2,97s)
CR-SMALL 6,85 MB / s (10000 arquivos aleatórios de 10,00 kB: 14.60s)
RR-SMALL 31,27 MB / s (10000 arquivos aleatórios de 10,00 kB: 3,20s)
UR-PEQUENO 12,28 MB / s (10000 arquivos aleatórios de 10,00 kB: 8,14s)
DR-SMALL 18,78 MB / s (10000 arquivos aleatórios de 10,00 kB: 5,32s)


Durante o teste, as heurísticas serão usadas na compactação com a definição do tipo de arquivo (compactação automática) e os resultados serão os seguintes:


Primeiro, verifique a operação sem criptografia:


Tempo de trabalho:


Lançamento 1Lançamento 2Lançamento 3
4m6s4m10s4m5s
56s58s54s
1m26s1m34s1m30s

Se você ativar a autorização do repositório (modo autenticado), os resultados serão fechados:



Tempo de trabalho:


Lançamento 1Lançamento 2Lançamento 3
4m11s4m20s4m12s
1m0s1m3s1m2s
1m30s1m34s1m31s

Quando a criptografia aes foi ativada, os resultados não se deterioraram muito:



Lançamento 1Lançamento 2Lançamento 3
4m55s5m2s4m58s
1m0s1m2s1m0s
1m49s1m50s1m50s

E se você mudar aes para blake, a situação melhorará completamente:



Tempo de trabalho:


Lançamento 1Lançamento 2Lançamento 3
4m33s4m43s4m40s
59s1m0s1m0s
1m38s1m43s1m40s

Como no caso do zbackup, o tamanho do repositório era de 13 GB e até um pouco menos, o que, em geral, é esperado. O tempo de trabalho foi muito satisfeito, é comparável a soluções baseadas em librsync, oferecendo possibilidades muito mais amplas. Também fiquei satisfeito com a capacidade de definir vários parâmetros por meio de variáveis ​​de ambiente, o que oferece uma vantagem muito séria ao usar o borgbackup no modo automático. Também satisfeito com a carga durante o backup: a julgar pela carga do processador - o borgbackup funciona em 1 thread.


Não houve desvantagens especiais ao usar.


Teste restic


Apesar de restic ser uma solução relativamente nova (os dois primeiros candidatos são conhecidos desde 2013 e anteriores), possui características muito boas. Escrito em Go.


Quando comparado com o zbackup, fornece adicionalmente:


  • Verificando a integridade do repositório (incluindo partes de check-in).
  • Uma enorme lista de protocolos e provedores suportados para armazenamento de backups, bem como suporte rclone - rsync para soluções em nuvem.
  • Comparação de 2 backups entre si.
  • Montagem do repositório via fusível.

Em geral, a lista de possibilidades está bem próxima do borgbackup, em alguns lugares mais, em alguns lugares menos. Dos recursos - a falta de capacidade de desativar a criptografia e, portanto, os backups sempre serão criptografados. Vamos ver na prática o que você pode extrair deste software:


Os resultados são os seguintes:


Tempo de trabalho:


Lançamento 1Lançamento 2Lançamento 3
5m25s5m50s5m38s
35s38s36s
1m54s2m2s1m58s

Os resultados também são comparáveis ​​às soluções baseadas em rsync e, em geral, estão muito próximos do borgbackup, mas a carga do processador é maior (vários threads funcionam) e dente de serra.


Provavelmente, o programa depende do desempenho do subsistema de disco no servidor de armazenamento, como era no rsync. O tamanho do repositório era 13 GB, assim como zbackup ou borgbackup, não havia desvios óbvios ao usar esta solução.


Resultados


De fato, todos os candidatos obtiveram indicadores próximos, mas a um preço diferente. O Borgbackup mostrou-se o melhor, um pouco mais lento - restic, zbackup, provavelmente você não deve começar a aplicar,
e se já estiver em uso, tente mudar para borgbackup ou restic.


Conclusões


A solução mais promissora é restic, pois é ele quem tem a melhor proporção de capacidades em relação à velocidade, mas por enquanto não nos apressaremos em chegar a conclusões gerais.


Borgbackup, em princípio, não é pior, mas provavelmente é melhor substituir o zbackup. No entanto, para garantir que a regra 3-2-1 funcione, o zbackup ainda pode ser usado. Por exemplo, além de ferramentas de backup baseadas em (lib) rsync.


Anúncio


Backup, parte 1: Por que você precisa de um backup, uma visão geral de métodos, tecnologias
Backup, Parte 2: Visão geral e teste das ferramentas de backup baseadas em rsync
Backup, Parte 3: Visão geral e teste de duplicidade, duplicati
Backup, Parte 4: Visão geral e testes zbackup, restic, borgbackup
Backup, Parte 5: Testando o Bacula e o Veeam Backup para Linux
Backup: parte solicitada pelos leitores: revisão da AMANDA, UrBackup, BackupPC
Backup, Parte 6: Comparando ferramentas de backup
Backup Parte 7: Conclusões


Postado por Finnix

Source: https://habr.com/ru/post/pt454734/


All Articles