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:
- faça um instantâneo LVM do ext [234] / XFS / JFS no servidor de produção
rsync
/ transferir dados alterados para btrfs no servidor de backup- instantâneo do sistema de arquivos btrfs
- 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
rsync
solução em casa ? - O que as pessoas com caixas ZFS dedicadas a backup fazem para fazer backup de suas máquinas Linux?
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.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 -a
ersync
são para isso ...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?rsync
sem--inplace
você 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)Respostas:
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.
fonte
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
fonte
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.
fonte
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.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 :
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".
fonte
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
,/home
etc., 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.
fonte