¿Por qué la gente no usa rsync para hacer una copia de seguridad de los invitados de vmware?

12

Si estoy ejecutando un sistema vmware ESXi moderno, puedo colocar archivos binarios rsync y rsync estáticamente vinculados en cualquier destino a través de SSH.

Estoy tratando de entender por qué la mayoría (¿todo?) De la copia de seguridad de los invitados vmware no se realiza de esta manera.

Si la VM se está ejecutando, simplemente puede usar 'vim-cmd vmsvc / snapshot.create' para crear una instantánea y luego rsync esa instantánea al host remoto. (incluso hay una opción para "inmovilizar" la instantánea)

O, si desea una copia de seguridad más robusta, puede detener con gracia la VM y rsync sobre los archivos vmdk.

Entonces ... parece que soy un simple script de shell alejado de todas las copias de seguridad que siempre quise hacer, simple y fácilmente, usando rsync simple y antiguo.

Que me estoy perdiendo aqui ?

usuario227963
fuente
1
Porque si un solo archivo cambia en la VM, ¿tendrá que hacer una copia de seguridad de todo el vmdk?
falso el
No, rsync actualizará un solo archivo de manera eficiente con solo los cambios desde la última transferencia. Ciertamente, las operaciones de la máquina virtual podría producir mucho más cambios que usted espera que, pero no va a hacer que se vuelve a enviar toda la vmdk ...
user227963
Aparte del hecho de que no debe usar el shell esxi para otra cosa que no sea el mantenimiento, el sistema operativo esxi no está hecho para funcionar de esa manera, y no sería compatible, creo que está malinterpretando el concepto de una instantánea. La instantánea en este caso es un delta. Entonces, si toma una foto y la copia de inmediato, sería muy pequeña y casi no tendría información. Está pensando en una instantánea de almacenamiento de back-end, y sí, la gente hace una copia de seguridad de las máquinas virtuales de esta manera
Rqomey
1
@Rqomey: hay diferentes tipos de "instantáneas" en ESXi. Estás hablando del tipo que es visible a través de vSphere Client, pero usando la API tienes otras opciones, por ejemplo: clon completo.
masi
@MASI ¿Te refieres a un clon en lugar de una instantánea? ;)
Rqomey

Respuestas:

32
  • Debido a que las velocidades de transferencia de la consola ESXi están limitadas a propósito.
  • Porque esto no es escalable de ninguna manera.
  • Porque tendría que colocar un binario rsync compilado estáticamente en el host ESXi.
  • Debido a que las máquinas virtuales, los VMDK, sus archivos ramdisk y otros componentes pueden cambiar lo suficiente como para hacer que rsync sea una propuesta perdida ... ¿ realmente desea volver a sincronizar una máquina virtual de 200 GB que se reinició y se modificó una pequeña cantidad de archivos?
  • Debido a los requisitos de recursos de CPU / memoria en el origen o el destino. Rsync no es gratis.
  • Debido a que hay otros productos en el mercado, tanto de terceros como provistos por VMware. Busque seguimiento de bloque modificado .
  • Porque ESXi NO es un sistema operativo de propósito general.

Consulte también: Instale rsync en el servidor VMware ESX 4.1

ewwhite
fuente
1
Excelente respuesta.
EEAA
3
No son ... Quiero decir, está en el nombre: ghettoVCB . Hay mejores soluciones por ahí. Veeam, vSphere Data Protection, etc.
ewwhite
2
Ciertamente, podría usar el método rsync si cambia a xen / kvm.
Zoredache
99
@ user227963 Rsync también es bastante ineficiente en ambos: gran cantidad de archivos y archivos grandes. Y si bien es posible que no tenga que reenviar todo el archivo a través del cable, tendrá que releerlo tanto en el origen como en el destino. La TCC te ayudará aquí, pero rsync no sabe nada sobre la TCC.
the-wabbit
2
@ user227963 copiar archivos es simple. Ahora hazlo rápido y no un gran recurso en archivos grandes con pequeños cambios constantes. rsync es decente pero no se acerca al rendimiento de nada con información privilegiada sobre qué bloques cambiaron.
JamesRyan
4

Solía ​​hacer esto hace unos años. (editar: con VMWare ejecutándose en hosts CentOS, no ESXi admitidamente)

Todas las noches tenía un script que suspendía una VM, sincronizaba los archivos del disco al servidor de respaldo y luego iniciaba las VM nuevamente. Funcionó bastante bien excepto ...

Rsync no funciona muy bien con un archivo de 2GB.

No es porque rsync no sea brillante, es más que cada archivo vmdk de 2GB cambia de manera muy opaca a rsync, incluso pequeños cambios en el sistema de archivos incluido producen cambios en el vmdk (o todos los vmdks por alguna razón) a los que culpé Windows, ya sea desfragmentando automáticamente o haciendo todo lo demás, no importa si está ejecutando un sistema real, ¡pero aparece cuando intenta sincronizar una VM!

Creo que el mecanismo rsync para detectar cambios no funciona muy bien en un archivo de 2GB, mientras que a menudo omite fragmentos del inicio del vmdk, una vez que comienza a encontrar una diferencia, simplemente copiará el resto del archivo. No sé si eso es un problema con rsync que no puede detectar una porción movida de datos binarios, o con una falta de memoria en el cuadro de origen, o si el vmdk se actualizó por completo. No importa ya que el resultado fue el mismo: la mayoría de los vmdk se copiaron.

Al final, simplemente copié los archivos modificados y los sobrescribí, todavía usando rsync. También tuve un mejor rendimiento simplemente sobrescribiendo el archivo de copia de seguridad en lugar de permitir que rsync copie y reemplace lo que estaba allí.

Nuestro servidor de respaldo tampoco fue el más rápido y llegó al punto en que la noche no fue lo suficientemente larga como para hacer una copia de seguridad de todas las máquinas virtuales en ejecución.

Sin embargo, cuando necesitábamos restaurar una VM, fue realmente fácil y funcionó de maravilla.

gbjbaanb
fuente
Ok, eso es muy útil. Sé un poco sobre cómo funciona rsync, y puedo decirte que no tiene nada que ver con el tamaño del archivo, pero lo que estás describiendo es que hay muchos más cambios en el archivo de lo que esperas ... eso es digamos, ejecuta la VM por un día, y solo hace algunas pequeñas cosas con ella, y luego la detiene ... pero el archivo vmdk cambió en un 30-40% (a pesar de que hizo muy poco). Entonces rsync funcionaría bien, solo tiene mucho trabajo por hacer ... más de lo que esperaba. ¡Gracias!
user227963
1
Pero entonces ... la pregunta que esto plantea ... ¿cómo lo hacen las herramientas "profesionales"? ¿Qué tipo de magia están haciendo que sea de alguna manera más óptima que lo que haría rsync (o scp, o incluso cp)? Al final del día, tiene un entorno unix (la consola ESXi) y desea mover un archivo dentro o fuera de él ... ¿qué secretos podría estar involucrado con eso?
user227963
@ user227963 Las herramientas profesionales aprovechan funciones como el seguimiento de bloques modificados o tienen acceso a otras API de vSphere o ESXi.
ewwhite
2

Volver a sincronizar un solo archivo no es una solución de respaldo,

¿Qué haces cuando algo le sucede a la VM y los archivos fueron eliminados, pero solo te diste cuenta después de que tu rsync se volvió a ejecutar? Habrás sobrescrito la buena 'copia de seguridad' de tus archivos con la mala imagen ahora.

Si desea una copia de seguridad, debe mantener las versiones antiguas en algún lugar, o las diferencias. Rsync solo copiará las diferencias por usted, pero no almacenará solo las diferencias, sino que sobrescribirá el archivo anterior.

Puede haber opciones para usted aquí, con rsync, y un sistema de archivos de copia en escritura con información de versiones, que en efecto almacenará las diferencias cada vez que se ejecute su script rsync. Esta solución ya comienza a complicarse un poco, por eso la gente recurre a soluciones de trabajo conocidas.

Jens Timmerman
fuente
Ciertamente, hay mucha más complejidad involucrada aquí de lo que pensé originalmente, pero lo que estás mencionando no es un problema. Ciertamente, si ejecutaste rsync a ciegas una y otra vez, te encontrarás con problemas, como sugieres, pero hay muchas formas simples de clonar / rotar copias de seguridad creadas con rsync (incluso las de un solo archivo) ... ese problema se resolvió por mucho tiempo Hace tiempo, afortunadamente.
user227963
0

No hay ninguna razón por la que no pueda usar Rsync en un servidor ESXi. Ofrecemos una versión compilada estáticamente aquí https://33hops.com/rsync-for-vmware-vsphere-esxi.html que funciona muy bien. También hay información sobre cómo compilar la suya.

Sin embargo, cualquiera que esté dispuesto a usarlo debe tener en cuenta que Rsync y su algoritmo Delta no estaban pensados ​​para hacer copias de seguridad de archivos dispersos de longitud fija, como los discos duros VM, sino para sincronizar archivos más pequeños de longitud variable. Por lo tanto, funciona, pero lleva mucho tiempo y CPU calcular los datos de diferencia. De hecho, es solo una forma de intercambiar ancho de banda por CPU. En cualquier caso, todavía es bastante viable, especialmente si sus discos virtuales están en el orden de unas pocas decenas de gigabytes.

He publicado una publicación completa sobre el tema aquí, detallando todos los pros y contras https://33hops.com/blog_xsibackup-rsync-considerations.html

Daniel J.
fuente