solução de backup habilitada para btrfs

14

Com o btrfs atingindo a produção no Oracle EL no dia 14 deste mês (junto com o fsck e o scrubbing do Linux 3.2), eu estava pensando em redesenhar minha solução de backup atual para utilizá-la. Observe que estou pensando em fazer isso para pequenas quantidades de dados, menores que 10 TB, que são razoavelmente estáticas (menos de 1% é alterado diariamente). Em suma, uma solução de backup SMB / SOHO.

O que o backup deve fazer:

  1. faça um instantâneo LVM do ext [234] / XFS / JFS no servidor de produção
  2. rsync/ transferir dados alterados para btrfs no servidor de backup
  3. instantâneo do sistema de arquivos btrfs
  4. descartar instantâneos antigos quando o espaço livre estiver acabando

Prós:

  • Todos os arquivos estão facilmente disponíveis, sem necessidade de descompressão ou montagem em loop
  • Instantâneos anteriores também estão disponíveis com facilidade ...
  • ... para que eu possa compartilhá-los como compartilhamentos Samba somente leitura (com suporte para cópia de sombra)
  • As capturas instantâneas ocupam uma quantidade mínima de espaço graças à cópia na gravação (a captura instantânea sem alterações leva literalmente poucos KiB no disco)
  • Alta consistência de backup: somas de verificação em arquivos, limpeza de todos os dados e redundância interna

Questões:

  • Existe alguma solução de backup (na forma de Bacula, BackupPC, etc.) que seja, ou possa ser feita com facilidade, ciente do sistema de arquivos copy-on-write?
  • Ou precisarei usar a rsyncsolução em casa ?
  • O que as pessoas com caixas ZFS dedicadas a backup fazem para fazer backup de suas máquinas Linux?
Hubert Kario
fonte
Não pode ver cons! Uma delas seria que os instantâneos do Btrfs são equivalentes apenas aos backups incrementais (nenhuma cópia física por backup do seu arquivo no disco). O que pode ser importante ao enfrentar problemas de superfície do disco. Observe que você pode forçar uma duplicação com suporte RAID1 nativo incluído no Btrfs.
vaab
1
@vaab: isso é um pro- mais de duas cópias não são realmente necessárias se você tiver somas de verificação e esfregar ativamente o FS, três provavelmente virão com suporte a RAID6. Como eu disse, é uma configuração para um sistema de backup dedicado, não cópias de "backup" dentro do FS em um único computador. Isso seria "RAID não é backup" e "instantâneos não são backup". cp -ae rsyncsão para isso ...
Hubert Kario
Também estou pensando em fazer o backup para o btrfs, mas eu estava pensando rsync -a --delete /home/user /mnt/butterfs/backups/ && snapper create- além de criar um instantâneo após o backup, o que você quer dizer com conhecimento de COW?
Unhammer
1
@unhammer: usando rsyncsem --inplacevocê obterá várias cópias dos mesmos dados no sistema de arquivos remoto. (rsync normalmente copia dados para um arquivo oculto temporário e, em seguida, move-o sobre o arquivo antigo, com um sistema de arquivos Copy-On-Write você tem duas cópias de dados inalterados desta forma)
Hubert Kario

Respostas:

5

Eu fiz uma pesquisa extensa na última semana por algo semelhante. Não encontrei soluções para executar todas as 4 etapas. Existem inúmeros blogs de usuários domésticos que tentam o tipo de backup ' rsync to btrfs ', e todos os principais wikis do Btrfs cobrem como executar os snapshots do Btrfs.

Existem também algumas pessoas que estão tentando maneiras diferentes de girar os instantâneos do Btrfs . No entanto, você é a primeira pessoa que vi que deseja girar instantâneos com base no espaço em disco. Estou brincando com o btrfs-snap, que cria um conjunto de instantâneos por hora, semanal e mensal, e é agradável e simples.

O projeto Dirvish parece atender a muitos de seus requisitos. Alguns desenvolvedores estão tentando integrar o Dirvish com o Btrfs . No entanto, o projeto Dirvish parece um pouco parado .

Neste momento, você está à frente da curva.

Stefan Lasiewski
fonte
Bem, eu só quero uma solução de backup tão simples quanto o BackupPC: quando o espaço em disco é baixo, ele exclui os dados antigos (instantâneos antigos). Enquanto eu estava com medo que eu estou à frente da curva, não é como ZFS não tem estado conosco durante os últimos anos ...
Hubert Kario
3

De acordo com Avi Miller (sua palestra durante o LinuxConf.AU), um envio / recebimento de btrfs está sendo trabalhado. Será mais rápido que o rsync, já que não precisa percorrer os diretórios para encontrar alterações nos arquivos. Não sei se ainda há uma data de lançamento prevista.

Existe, no entanto, um utilitário embutido no btrfs-progs que lista todos os arquivos que foram alterados entre os instantâneos / etc .. btrfs subvolume find-new

emprestar
fonte
2
Eu quero fazer o backup para btrfs, não de ...
Hubert Kario
2

Estou trabalhando em um sistema de backup do sistema operacional semelhante ao BackupPC. Eu pensei sobre isso. O que tem me impedido de realmente implementar isso é que você não pode estabelecer ligações entre subvolumes. Também é possível criar capturas instantâneas de subvolumes -> um subvolume por cliente de backup. Portanto, o recurso de deduplicação no nível do arquivo não pode coexistir com essa abordagem. E essa desduplicação no nível do arquivo geralmente economiza muito espaço. Deseja fazer backup de apenas um servidor?

Se os btrfs tiverem desduplicação no nível do bloco, esse problema provavelmente poderá ser evitado, mas isso geralmente é insuportavelmente lento também ...

Portanto, é claro que essa abordagem implicaria uma forte integração com um sistema de arquivos (btrfs), portanto esse deve ser um recurso opcional.

Estou perguntando, porque estou pensando em adicionar esse recurso de vaca, mas não sei se devo devido às desvantagens listadas acima.

Edit: O UrBackup suporta backups como descrito na pergunta agora com os kernels do Linux> = 3.6 (com suporte a refluxo entre volumes). Veja como configurá-lo.

UrOni
fonte
1
A cópia de refluxo de subvolume cruzado (um semi-hardlink feito por cp --reflink) já está implementada ou será implementada no futuro próximo. A desduplicação online no FS é lenta (menosfs) ou precisa de grandes quantidades de RAM (ZFS), portanto, dependendo disso, seria realmente um recurso ruim no software de backup. De qualquer forma, o software de backup orientado ao btrfs terá um grande público, é suposto ser o próximo ext3, afinal.
Hubert Kario
Mais uma coisa: você pode solucionar esse problema mantendo todos os servidores em um subvolume - é possível fazer o reflink da cópia entre eles (para deduplicar) enquanto preserva o recurso de captura instantânea. Você só precisa fazer uma captura instantânea após a deduplicação, mas ainda pode fazer uma captura instantânea depois de fazer backup de apenas um servidor! Os backups não ocuparão mais espaço se você fizer os backups um de cada vez. Como alternativa, você pode fazer backup de todos os servidores, desduplicar e, em seguida, capturar instantâneos. Dessa forma, você pode fazer backup de alguns servidores ao mesmo tempo.
Hubert Kario
Você está certo. Não pensei nisso. Por conveniência, você pode vincular os snapshots certos em outro volume. Também vi um patch para o hardlink de volume cruzado (ou --reflink), mas ele não parecia ter sido criado / ou será direcionado para a linha principal. Eu realmente vou investigar isso! Agora você provavelmente faz seus backups pelo ssh. Meu projeto é especializada para redes locais ... (descoberta automática e assim por diante)
UrOni
Sim, o patch está vivo e funcionando, infelizmente não está na linha principal, não sei por quê. Estou tentando incomodar Chris Mason sobre isso. Quanto ao seu projeto, sinta-se à vontade para me enviar uma linha, terei prazer em testá-lo com beta (se houver tempo). Isso parece interessante.
Hubert Kario
Finalmente, esse patch foi parar no kernel principal do Linux 3.6. Com o reflink entre dispositivos, na verdade não foi muito trabalhoso. Eu escrevi aqui sobre isso: urbackup.org/blog/?p=83 O código está no "próximo" ramo no repositório git. Atualmente estou testando.
precisa saber é o seguinte
1

A página wiki de casos de uso da btrfs lista algumas ferramentas: SnapBtr , Snapper, btrfs-time-machine, UrBackup.

Há uma proposta para uma ferramenta interna chamada autosnap :

Usando o recurso autosnap, você pode configurar o btrfs para tirar instantâneos regulares ou baseados em eventos e gerenciar ainda mais os instantâneos automaticamente.

O autosnap não é apenas sobre tirar o instantâneo, mas também gerenciar os instantâneos criados, a partir de agora você pode configurar o autosnap para excluir os instantâneos com base no espaço usado no sistema de arquivos.

No entanto, em outubro de 2013, o wiki afirma que "a funcionalidade de inicialização automática não está atualmente incluída na versão upstream do btrfs".

ignis
fonte
1

Como tive frustrações semelhantes, acabei criando alguns scripts que estou chamando de snazzer . Juntos, eles oferecem snapshot, poda, medição e transporte via ssh (mas a partir de hoje também podem enviar / receber de / para sistemas de arquivos locais). As medidas são apenas relatórios de assinaturas sha512sum e PGP dos caminhos de captura instantânea. Ainda não está pronto para o lançamento, mas eu gostaria de receber feedback se alguém tiver tempo para analisá-lo nesta fase inicial.

CLI-se apenas com este ponto, mas eu tenho tido algum tempo para torná-lo fácil de usar em sistemas com muitos subvolumes Btrfs - normalmente tenho subvolumes separadas para /var/cache, /homeetc., que podem precisar de ser excluído do snapshotting ou têm mais / menos agendas de poda agressivas.

Receio que o algoritmo de remoção puramente tome decisões sobre a presença do conjunto de capturas instantâneas e suas datas, nada existe para continuar a remoção até que uma restrição de uso do disco seja atendida - o que você exclui primeiro? Reduzir o número de horários primeiro ou diários? Talvez largue o mais antigo, por exemplo. anuários? Implantações diferentes terão prioridades diferentes; e não sei se esse é o único nível de backup (nesse caso, você não deve descartar os backups mais antigos em caso de obrigações legais / de seguro) ou apenas um intermediário (nesse caso, você provavelmente tem esses anuários arquivados em algum lugar seguro) em outro lugar).

Adicionarei suporte ao ZFS e / ou interoperabilidade em algum momento; Como está escrito principalmente em posix-ish shell e perl, devido a um forte desejo de dependências "zero" no momento, espero ter uma implementação alternativa mais limpa do python mantida em paralelo em algum momento.

csirac2
fonte
a menos que seu FS tenha um tamanho muito grande e mude frequentemente, há muito pouca diferença entre manter um instantâneo de um mês atrás e apenas 1 por dia da semana passada em comparação com um por dia durante todo o mês - os btrfs precisarão armazenar a diferença entre de qualquer maneira, o estado atual e o de um mês atrás - eu mantenho apenas diários, mas como é comprimido e diferenciado, posso mantê-los por meio ano - facilmente, depois retirando as garantias mais antigas para liberar pelo menos algum espaço
Hubert Kario,
Bem, eu tenho um número não trivial de VMs para acompanhar - algumas com grandes arquivos temporários (ou seja, instantâneos com extensões exclusivas) que, como você sugeriu, podem se beneficiar da remoção de instantâneos intermediários. Portanto, embora seja verdade que os intermediários de remoção não liberam tanto disco quanto soltar o mais antigo, o que posso dizer ... manter apenas o número mínimo de instantâneos e fazê-lo com o sistema de arquivos COW como o btrfs parece ser tão eficiente quanto fica, mas eu percebo que há mais para escolher uma solução adequada do que :)
csirac2
@ csirac2 você mantém um snazzer? Estou procurando esse tipo de solução. Estou interessado no snazzer se ele estiver sendo mantido ativamente. O GitHub não parecem mostrar atividade recente ...
MountainX-para-Monica
@MountainX Quando não recebi muitos comentários iniciais sobre o snazzer, perdi o entusiasmo. Quando comecei a escrevê-lo, havia realmente apenas o snapper do OpenSUSE e um punhado de scripts shell / python flutuando para automatizar o btrfs. No momento em que comecei a compartilhá-lo com o mundo, muitas outras opções surgiram, e eu diria que o btrbk parece ter muito impulso (a falta de testes automatizados [talvez corrigido agora?] Era preocupante). Se eu tivesse que fazer tudo de novo, provavelmente teria colaborado com o autor sanoid para adicionar a compatibilidade btrfs lá. Interessado em ouvir seus pensamentos.
csirac2