recomendações para a solução eficiente de backup remoto externo da VM

15

Estou procurando recomendações para fazer backup dos meus 6 vm atuais (e em breve crescer para 20). Atualmente, estou executando um cluster proxmox de dois nós (que é uma base debian usando o kvm para virtualização com um front-end da web personalizado para administrar). Eu tenho duas caixas quase idênticas com placas-mãe amd phenom II x4 e asus. Cada um possui 4 discos rígidos sata2 de 500 GB, 1 para os e outros dados para a instalação do proxmox e 3 usando mdadm + drbd + lvm para compartilhar os 1,5 TB de armazenamento entre as duas máquinas. Montei imagens lvm no kvm para todas as máquinas virtuais. Atualmente, tenho a capacidade de transferir ao vivo de uma máquina para outra, normalmente em segundos (leva cerca de 2 minutos na maior vm executando o win2008 com m $ sql server). Estou usando o utilitário vzdump interno do proxmox para tirar instantâneos do vm ' e armazene-os em um disco rígido externo na rede. Em seguida, tenho o serviço jungledisk (usando rackspace) para sincronizar a pasta vzdump para backup externo remoto.

Tudo isso é ótimo e elegante, mas não é muito escalável. Por um lado, os próprios backups podem levar algumas horas todas as noites. Com as transferências incrementais no nível de bloco da jungledisk, a sincronização transfere apenas uma pequena parte dos dados para fora do local, mas isso ainda leva pelo menos meia hora.

A solução muito melhor seria, obviamente, algo que me permita pegar instantaneamente a diferença de dois pontos no tempo (digamos o que foi escrito das 6h às 7h), compactá-lo e depois enviar o arquivo de diferença para o servidor de backup, que será transferido instantaneamente para o armazenamento remoto no espaço na prateleira. Eu olhei um pouco para o zfs e é capaz de enviar / receber. Isso, juntamente com um canal de dados no bzip ou algo assim, pareceria perfeito. No entanto, parece que a implementação de um servidor nexenta com zfs exigiria essencialmente pelo menos um ou dois servidores de armazenamento dedicados para servir volumes de blocos iSCSI (via zvol ???) para os servidores proxmox. Eu preferiria manter a instalação o mais mínima possível (ou seja, NÃO tendo servidores de armazenamento separados), se possível.

Também li brevemente sobre o zumastor. Parece que também poderia fazer o que eu quero, mas parece ter interrompido o desenvolvimento em 2008.

Então, zfs, zumastor ou outro?

senorsmile
fonte

Respostas:

3

Isso pode não ser possível na sua situação, por isso espero não ter votos negativos nesse caso, mas pode ser mais eficiente alterar sua estratégia de backup. Se você fizer backup de dados específicos em vez de instantâneos de VM, seus backups serão executados muito mais rapidamente e seria mais fácil capturar alterações.

Dependendo das suas VMs e para que elas são usadas, você pode fazer o backup dos dados para onde você armazena os instantâneos agora diariamente (ou qualquer agendamento apropriado) e, em seguida, o JungleDisk pode fazer backup apenas dos dados. Isso transferiria arquivos alterados com mais eficiência, e o espaço necessário para backups e o tempo necessário seriam reduzidos. Além disso, você ainda pode tirar instantâneos para reter e fazer isso com muito menos frequência (semanalmente, por exemplo).

Nesse caso, você sempre pode abrir uma nova VM e restaurar dados ou usar um instantâneo mais antigo para restaurar a VM e, em seguida, usar o backup de dados para restaurar no ponto mais recente.

Paul Kroon
fonte
1
Eu já tinha considerado algo assim. O problema é que pelo menos uma das VMs principais está executando um software de banco de dados personalizado especificamente adaptado ao setor de HVAC e não possui um recurso de despejo como você veria em um banco de dados sql. Estamos exportando alguns desses dados para M $ SQL, mas não todos, e apenas uma vez por dia. Infelizmente, apenas ser o administrador da rede não me permite tomar essas decisões de design no que está sendo executado nos vm ... apenas como executá-los e fazer backup deles.
Senorsmile
1

Se eu estivesse fazendo backups externos, escolheria as seguintes opções:

(a) script de shell que o SCP copia para o servidor remoto. Dessa forma, você pode adicionar um trabalho cron que executa automaticamente o script que cria o backup. Além disso, você pode criar um arquivo temporário antes de transferir os arquivos, economizando assim a largura de banda, não transferindo enquanto pressiona o teclado.

ou

(b) Instale uma ferramenta de gerenciamento de servidor como o Webmin e faça isso para fazer backups automatizados. No momento, estou cantando isso em meus servidores de produção agora sem problemas, ele simplesmente funciona na perfeição. Eu também recomendaria o cloudmin (pago) para gerenciar muitas VMs, pois fornece uma solução completa.

alguns links extras:

http://www.debianhelp.co.uk/backup.htm

http://ubuntuforums.org/showthread.php?t=35087

Espero que ajude, RayQuang

RayQuang
fonte
Obrigado! Esses links têm muitas informações boas. O problema é que preciso de algo que possa funcionar em máquinas virtuais em execução ao vivo e não precise executar horas para calcular diferenças. A única máquina final seria uma instalação nexenta que poderia rodar xen, kvm (obviamente no kernel do linux) ou algo semelhante. Dessa forma, eu tenho uma solução de virtualização de alto desempenho para instalações de servidor Windows e Linux em arquivos de imagem ou lvm (ou zvol), e uma maneira de tirar instantâneos ilimitados e transferir apenas as diferenças do último backup rapidamente!
Senorsmile
1

você pode querer dar uma olhada no backuppc.

O backuppc pode funcionar sobre o rsync, que faz cópias incrementais.

Além disso, você pode facilmente escrever uma lista negra de pastas que não precisam ser copiadas. Por exemplo: temp / / tmp .garbages / ...

http://backuppc.sourceforge.net/

O backuppc possui uma interface web limpa, permitindo que você baixe algumas partes de um backup diretamente como um arquivo zip. Ele pode ser monitorado por nagios usando check_backuppc.

aligot
fonte
Eu acho que o backuppc será perfeito para um projeto completamente diferente! Muito obrigado. Também pode ser um bom substituto para a execução de backups remotos em um site diferente, para adicionar ou substituir o jungledisk para backups externos.
Senorsmile
1

Não tenho certeza de quanta mudança de arquitetura você planejava fazer para aumentar sua escalabilidade. No entanto, se você estiver aberto para alternar plataformas de VM, poderá ver o VMWare.

Existem muitas boas soluções de backup do VMWare, eu usei pessoalmente o VzionCore. Em seguida, você pode fazer algumas coisas lisas com instantâneos e recuperar o ponto no tempo. Existe até a capacidade de efetuar failover em um site remoto.

JamesBarnett
fonte
Infelizmente, estou procurando algo bastante semelhante ao que estou executando agora; ele precisa especialmente ser de código aberto e escalável. Analisei as soluções VMWare, e o custo de até um cluster virt de dois nós com uma boa solução de backup perto de CDP de terceiros é muito caro.
Senorsmile
Eu acho que você quer dizer VizionCore, não VzionCore.
Sean Reifschneider
0

O zfs funciona muito bem, você já mencionou saber disso e a desvantagem de não funcionar muito bem na escala de 2 servidores. Também não fornecerá o failover do DRDB, ou seja, o Nexenta será um único ponto de falha.

Você pode tentar obter o VirtualBox no OpenSolaris ou NexentaCore, mas não tão simples quanto o ProxMox + DRDB, para poder reutilizar suas máquinas existentes.

Se você medir suas alterações e as encontrar baixas o suficiente, poderá tentar o DRDB com um terceiro espelho externo - só funcionará se o número de gravações for extremamente baixo nas suas VMs.

Steve Radich - Hospedagem Windows e desempenho SQL desde 1995 - http://www.BitShop.com/Blogs.aspx

Steve Radich-BitShop.com
fonte
0

Eu corro um grande cluster proxmox e tenho que sugerir que você mude sua estratégia de backup dos backups de estilo de instantâneo vzdump, que levam idades, sempre estão cheios, portanto, são grandes e fazem com que a restauração de arquivos individuais seja extremamente demorada.

Considere uma solução de backup de arquivos 'no convidado', da qual existem muitas. Backuppc, Urbackup, bacula, amanda etc ...

Será muito mais rápido, consumirá muito menos espaço e será muito mais fácil restaurar arquivos específicos.

tomstephens89
fonte
0

Acho que encontrei a resposta definitiva para minha pergunta:

BUP https://github.com/bup/bup

Recursos:

  • Ele usa um algoritmo de soma de verificação rolante (semelhante ao rsync) para dividir arquivos grandes em pedaços. O resultado mais útil disso é que você pode fazer backup de imagens de disco, bancos de dados e arquivos XML enormes de máquinas virtuais (VM) de maneira incremental, mesmo que geralmente estejam todos em um arquivo enorme, e não use muito espaço em disco para várias versões.

    Ele usa o formato packfile do git (o sistema de controle de versão de código aberto), para que você possa acessar os dados armazenados, mesmo que não goste da interface do usuário do bup.

    Ao contrário do git, ele grava arquivos de pacote diretamente (em vez de ter um estágio separado de coleta / reembalagem de lixo), por isso é rápido, mesmo com grandes quantidades de dados gratuitas. Os formatos de índice aprimorados do bup também permitem rastrear muito mais nomes de arquivos do que git (milhões) e acompanhar muito mais objetos (centenas ou milhares de gigabytes).

    Os dados são compartilhados "automagicamente" entre backups incrementais sem precisar saber qual backup se baseia em outro - mesmo que os backups sejam feitos de dois computadores diferentes que nem se conhecem. Você acabou de dizer ao bup para fazer backup das coisas, e ele economiza apenas a quantidade mínima de dados necessária.

    Você pode fazer backup diretamente em um servidor bup remoto, sem precisar de toneladas de espaço em disco temporário no computador que está sendo copiado. E se seu backup for interrompido na metade, a próxima execução continuará de onde você parou. E é fácil configurar um servidor bup: basta instalar o bup em qualquer máquina em que você tenha acesso ssh.

    O Bup pode usar a redundância "par2" para recuperar backups corrompidos, mesmo que seu disco não tenha detectado setores defeituosos.

    Mesmo quando um backup é incremental, você não precisa se preocupar em restaurar o backup completo e, em seguida, cada um dos incrementos; um backup incremental age como se fosse um backup completo, apenas ocupa menos espaço em disco.

    Você pode montar seu repositório bup como um sistema de arquivos FUSE, acessar o conteúdo dessa maneira e até exportá-lo pelo Samba.

Edit: (19 de agosto de 2015) E ainda existe outra ótima solução que é ainda melhor: https://github.com/datto/dattobd

Ele permite instantâneos ao vivo, essencialmente fornecendo recursos semelhantes a COW para qualquer sistema de arquivos antigo comum no Linux.

Edit: (15/07/2016) E ainda outra ótima solução que explode bup fora da água: https://github.com/borgbackup/borg

É particularmente melhor do que bup na poda. Parece ter um ótimo suporte para compactação, criptografia e desduplicação eficiente. dattobd + borg ftw !!!

senorsmile
fonte