Por que as pessoas não usam o rsync para fazer backup de convidados vmware?

12

Se estou executando um sistema vmware ESXi moderno, posso inserir arquivos binários e rsync estaticamente vinculados rsync em qualquer destino através do SSH.

Estou tentando entender por que a maioria (todos?) Do backup de convidados vmware não é feita dessa maneira.

Se a VM estiver em execução, você pode simplesmente usar 'vim-cmd vmsvc / snapshot.create' para criar uma captura instantânea e depois sincronizá-la novamente com o host remoto. (existe até uma opção para "desativar" o instantâneo)

OU, se você quiser um backup mais robusto, poderá interromper normalmente a VM e o rsync nos arquivos vmdk.

Então ... parece que eu sou um simples shell script longe de todos os backups que eu sempre quis fazer, simples e facilmente, usando o rsync antigo.

O que estou perdendo aqui ?

user227963
fonte
1
Porque se um único arquivo for alterado na VM, você terá que fazer backup de todo o vmdk?
faker
Não, o rsync atualizará um único arquivo eficientemente com apenas as alterações desde a última transferência. Certamente as operações da VM poderia produzir muito mais mudanças do que você espera que ele, mas ele não vai fazer você reenviar todo o vmdk ...
user227963
Além do fato de você não usar o shell esxi para nada além de manutenção, o sistema operacional esxi não é feito para funcionar dessa maneira e você não é suportado; acho que está entendendo mal o conceito de um instantâneo. A captura instantânea neste caso é um delta. Portanto, se você tirar uma foto e copiá-la imediatamente, ela será pequena e quase não conterá informações. Você está pensando em um instantâneo de armazenamento de back-end, e sim as pessoas backup de VMs desta forma
Rqomey
1
@Rqomey - existem diferentes tipos de "snapshots" no ESXi. Você está falando do tipo que é visível por meio do vSphere Client - mas, usando a API, você tem outras opções, por exemplo: clone completo.
masi
@MASI Você quer dizer um clone, em vez de um instantâneo? ;)
Rqomey

Respostas:

32
  • Como as velocidades de transferência do console ESXi são propositadamente limitadas.
  • Porque isso não é escalável de forma alguma.
  • Porque você teria que soltar um binário rsync compilado estaticamente no host ESXi.
  • Como as VMs, os VMDKs, seus arquivos ramdisk e outros componentes podem mudar o suficiente para tornar o rsync uma proposta perdida ... você realmente deseja sincronizar novamente uma VM de 200 GB que foi reinicializada e teve um pequeno número de arquivos alterados?
  • Por causa dos requisitos de recursos de CPU / memória na origem ou destino. Rsync não é gratuito.
  • Porque existem outros produtos no mercado, fornecidos por terceiros e fornecidos pela VMware. Consulte Rastreamento de bloco alterado .
  • Porque o ESXi NÃO é um sistema operacional de uso geral.

Consulte também: Instalar o rsync no servidor VMware ESX 4.1

ewwhite
fonte
1
Excelente resposta.
EEAA
3
Eles não são ... quero dizer, está no nome: ghettoVCB . Existem melhores soluções por aí. Veeam, vSphere Data Protection, etc.
ewwhite
2
Você certamente poderia usar o método rsync se mudar para o xen / kvm.
precisa
9
@ user227963 O Rsync também é bastante ineficiente em ambos - grande número de arquivos e arquivos grandes. E, embora possa não ter que reenviar o arquivo inteiro por fio, ele terá que relê- lo na origem e no destino. O CBT o ajudará aqui, mas o rsync não sabe nada sobre o CBT.
the-wabbit
2
@ user227963 copiar arquivos é simples. Agora faça com que seja rápido e não um recurso pesado em arquivos grandes com pequenas alterações constantes. O rsync é decente, mas não chega nem perto do desempenho de qualquer coisa com informações privilegiadas sobre quais blocos foram alterados.
JamesRyan
4

Eu costumava fazer isso há alguns anos atrás. (edit: com o VMWare em execução nos hosts CentOS, não o ESXi)

Toda noite eu tinha um script que suspendia uma VM, sincronizava novamente os arquivos do disco para o servidor de backup e depois reiniciava as VMs. Funcionou muito bem, exceto ...

O Rsync não funciona muito bem com um arquivo de 2 GB.

Não é porque o rsync não é brilhante, é mais que cada arquivo vmdk de 2 GB muda de maneira muito opaca ao rsync, mesmo pequenas alterações no sistema de arquivos fechado produzem alterações no vmdk (ou em todos os vmdks por algum motivo) que eu culpei Windows, desfragmentando automaticamente ou fazendo todas as outras coisas que faz, não importa se você está executando um sistema real, mas aparece quando você está tentando sincronizar uma VM novamente!

Eu acho que o mecanismo rsync para detectar alterações não funciona muito bem em um arquivo de 2 GB, enquanto muitas vezes pulava partes do início do vmdk, uma vez que começava a encontrar uma diferença, simplesmente copiava o restante do arquivo. Não sei se esse é um problema com o rsync não sendo capaz de detectar um pedaço movido de dados binários, ou com falta de memória na caixa de origem ou se o vmdk foi atualizado completamente. Não importa, pois o resultado foi o mesmo - a maioria do vmdk foi copiada.

No final, simplesmente copiei os arquivos alterados e os sobrescrevi, ainda usando o rsync. Eu também tive um melhor desempenho simplesmente substituindo o arquivo de backup em vez de permitir que o rsync copiasse e substituísse o que estava lá.

Nosso servidor de backup também não foi o mais rápido e chegou ao ponto em que a noite não era longa o suficiente para fazer backup de todas as VMs em execução.

No entanto, quando precisávamos restaurar uma VM, era realmente fácil e funcionava perfeitamente.

gbjbaanb
fonte
Ok, isso é muito útil. Eu sei um pouco sobre como o rsync funciona e posso dizer que não tem nada a ver com o tamanho do arquivo - mas o que você está descrevendo é que muito mais mudanças no arquivo do que você espera ... ou seja, digamos, você executa a VM por um dia e faz apenas algumas pequenas coisas com ela, e depois a interrompe ... mas o arquivo vmdk mudou de 30 a 40% (mesmo que você tenha feito muito pouco). Portanto, o rsync funcionaria perfeitamente, ele tem muito trabalho a fazer ... mais do que o esperado. Obrigado!
user227963
1
Mas então ... a questão que isso levanta ... como as ferramentas "profissionais" fazem isso? Que tipo de mágica eles estão fazendo que é de alguma forma mais ideal do que o que o rsync (ou scp, ou mesmo cp) faria? No final do dia, você tem um ambiente unix (o console ESXi) e deseja mover um arquivo para dentro ou para fora dele ... que segredos poderiam estar envolvidos nisso?
user227963
@ user227963 As ferramentas profissionais utilizam recursos como o rastreamento de blocos alterados ou têm acesso a outras APIs do vSphere ou ESXi.
ewwhite
2

A sincronização de um único arquivo não é uma solução de backup,

o que você faz quando algo acontece com a vm e os arquivos são excluídos, mas você só percebeu isso depois que o rsync foi executado novamente? Você terá substituído o bom 'backup' dos seus arquivos com a imagem ruim agora.

Se você deseja fazer backup, você precisa manter as versões antigas em algum lugar ou as diferenças. O Rsync copiará apenas os diffs para você, mas não armazenará apenas os diffs, mas substituirá o arquivo anterior.

Pode haver opções para você aqui, com rsync, e um sistema de arquivos copy-on-write com informações de versão, que efetivamente armazenam os diffs toda vez que seu script rsync é executado. Essas soluções já começam a ficar um pouco mais complicadas, e é por isso que as pessoas recorrem a soluções de trabalho conhecidas.

Jens Timmerman
fonte
Certamente há muito mais complexidade envolvida aqui do que eu pensava originalmente, mas o que você está mencionando não é um problema. Certamente, se você executasse o rsync às vezes, cegamente, teria problemas, como sugere, mas existem várias maneiras simples de clonar / girar backups criados pelo rsync (mesmo arquivos de arquivo único) ... esse problema foi resolvido por muito tempo. tempo atrás, felizmente.
precisa saber é o seguinte
0

Não há motivo para não usar o Rsync em um servidor ESXi. Nós oferecemos uma versão compilada estaticamente aqui https://33hops.com/rsync-for-vmware-vsphere-esxi.html que funciona muito bem. Também há informações sobre como compilar os seus.

No entanto, qualquer pessoa disposta a usá-lo deve levar em consideração que o Rsync e seu algoritmo Delta não pensavam em fazer backup de arquivos esparsos de tamanho fixo, como discos rígidos de VM, mas sincronizar arquivos menores de tamanho variável. Portanto, ele funciona, mas leva muito tempo e CPU para calcular os dados diff. Na verdade, é apenas uma maneira de trocar largura de banda pela CPU. De qualquer forma, ainda é bastante viável, principalmente se os discos virtuais estiverem na ordem de algumas dezenas de gigabytes.

Publiquei uma publicação completa sobre o tópico aqui, detalhando todos os prós e contras https://33hops.com/blog_xsibackup-rsync-considerations.html

Daniel J.
fonte