Backups con ESXi gratuito (ESXi Free)
En ocasiones nos podemos encontrar con hosts VMWare ESXi con licencia gratuita (ESXi Free) y necesitemos hacer backups de VMs que residen en los mismos.
El problema de un host VMWare ESXi con la licencia “ESXi Free” es que una de las limitaciones que presenta es la imposibilidad de acceder a las APIs de backup (vStorage APIs) del hipervisor.
Muchos software de backup de infraestructuras virtuales VMWare como Veeam Backup o Nakivo requieren el acceso a las vStorage APIs y aunque utilicemos la versión gratuita de Veeam Backup o Nakivo no podremos realizar copias de seguridad de las máquinas situadas en un host VMWare ESXi con la licencia “ESXi Free”.
Podemos repasar las limitaciones que presenta la licencia “ESXi Free” en el siguiente enlace:
VMWare: ESXi gratuito limitaciones (SYSADMIT.com)
Ante este problema, la recomendación pasaría por adquirir la licencia de VMWare ESXi que encaje mejor (presupuesto/características) y utilizar un software de backups que utilice las vStorage APIs integradas en el hipervisor.
Un software de backups que utilice vStorage APIs integradas en el hipervisor, podrá hacer uso de por ejemplo el CBT (Changed Block Tracking) que nos permitirá, por ejemplo, hacer backups incrementales, copiando solo los bloques que han cambiado desde el último backup, esto reduce de forma considerable en tiempo en que se respaldan las máquinas virtuales de toda la infraestructura virtual VMWare.
Si no disponemos de presupuesto para adquirir una licencia de VMWare ESXi y nos vemos obligados a utilizar la licencia gratuita (ESXi Free), tenemos la opción de utilizar algún software de backups a nivel de hipervisor que no utilice las vStorage APIs que la licencia ESXi Free limita.
Con backups a nivel de hipervisor nos estamos refiriendo a respaldar las máquinas virtuales completas sin instalar ningún agente, cliente, etc en su interior, es decir, el backup respaldará la máquina virtual hablando con el hipervisor, no con la máquina virtual.
ghettoVCB con ESXi gratuito (ESXi Free)
ghettoVCB con ESXi gratuito: Información general
Una de las alternativas gratuitas para realizar backups de máquinas virtuales que residen en un host VMWare ESXi con licencia gratuita (ESXi Free) es utilizar ghettoVCB.
Con ghettoVCB podemos realizar copias de seguridad de las máquinas virtuales a nivel de hipervisor de un host VMWare ESXi con licencia “ESXi Free”.
El autor de la herramienta ghettoVCB es: William Lam, autor del blog:
http://www.virtuallyghetto.com/
La documentación completa de la herramienta: ghettoVCB, la encontraremos en el siguiente enlace:
https://communities.vmware.com/docs/DOC-8760
y podremos descargar ghettoVCB desde Github:
https://github.com/lamw/ghettoVCB
*Vista de la herramienta ghettoVCB en un host ESXi:
Algunas de las características de ghettoVCB:
- Se trata de un script que se ejecuta en la shell del hipervisor.
- Al no utilizar las vStorage APIs del hipervisor, nunca podremos realizar backups de VMs incrementales o diferenciales, siempre serán copias completas (FULL).
- Es compatible a partir de ESXi 3.5.
- Realiza snapshot de máquina virtual que está respaldando y al finalizar la copia el snapshot se elimina.
- La configuración general de ghettoVCB se realiza modificando un fichero de texto con la configuración.
- Se puede programar su ejecución con un cron.
- Se permite la compresión del fichero de backup generado.
- Es posible configurar notificaciones por mail.
- La ubicación destino del backup será cualquiera que pueda ver el host ESXi, por ejemplo: No podrá ser un recurso compartido SMB, pero sí un recurso NFS o datastore VMFS.
- El formato del disco virtual VMDK destino podrá ser: thick o thin.
ghettoVCB con ESXi gratuito: Instalación
Podemos realizar la instalación de ghettoVCB en un host VMWare ESXi de varias formas.
En el enlace anterior, podemos explorar el contenido de ghettoVCB en Github y podemos instalar el fichero VIB o bien el fichero shell script.
Veamos un ejemplo de cómo instalar con el fichero VIB:
El host VMWare ESXi dispone de salida a Internet y descargamos e instalamos el fichero VIB:
Nos conectamos vía SSH al host VMWare ESXi.
Creamos un directorio temporal y nos situamos en el mismo.
Descargamos el fichero de instalación desde el propio host ESXi con el comando wget y a continuación ejecutamos:
mkdir /vcb
cd /vcb
wget https://github.com/lamw/ghettoVCB/raw/master/vghetto-ghettoVCB-offline-bundle.zip
esxcli software vib install -d /vcb/vghetto-ghettoVCB-offline-bundle.zip -f
En el caso que el host VMWare ESXi no disponga de salida a Internet, bastará con descargar el fichero en otro equipo y transferirlo con algún programa, por ejemplo, podemos utilizar WinSCP.
Ejemplo de ejecución, una vez descargado o trasferido el fichero en el host ESXi:
[root@ESX1:/vcb] ls
vghetto-ghettoVCB-offline-bundle.zip
[root@ESX1:/vcb] esxcli software vib install -d /vcb/vghetto-ghettoVCB-offline-bundle.zip -f
Installation Result
Message: Operation finished successfully.
Reboot Required: false
VIBs Installed: virtuallyGhetto_bootbank_ghettoVCB_1.0.0-0.0.0
VIBs Removed:
VIBs Skipped:
Una vez instalado los ficheros de configuración residirán en:
/etc/ghettovcb/ghettoVCB.conf
/etc/ghettovcb/ghettoVCB-restore_vm_restore_configuration_template
/etc/ghettovcb/ghettoVCB-vm_backup_configuration_template
Y los scripts en la siguiente ubicación:
/opt/ghettovcb/bin/ghettoVCB.sh
Y los scripts en la siguiente ubicación:
/opt/ghettovcb/bin/ghettoVCB.sh
/opt/ghettovcb/bin/ghettoVCB-restore.sh
Como hemos instalado ghettoVCB utilizando un fichero VIB, si ejecutamos el comando para obtener la lista de los VIB instalados y filtramos por la cadena de texto: ghettoVCB, veremos el VIB instalado:
[root@ESX1:/vcb] esxcli software vib list |grep ghettoVCB
ghettoVCB 1.0.0-0.0.0 virtuallyGhetto CommunitySupported 2017-01-01
ghettoVCB con ESXi gratuito: Puesta en marcha del backup
Antes de iniciar el script de backup, deberemos configurar la ruta destino donde se ubicarán los backups.
En este caso indicaremos un datastore ya existente, donde el host ESXi tiene acceso.
Realizamos una copia de seguridad del fichero de configuración:
cp /etc/ghettovcb/ghettoVCB.conf /etc/ghettovcb/ghettoVCB.conf.sysadmit
Creamos el directorio destino del backup:
mkdir /vmfs/volumes/datastore0/backupVMs
* En este ejemplo, el nombre del datastore utilizado como destino del backup es: datastore0.
Configuramos permisos de escritura y ejecución sobre el fichero de configuración:
chmod +rwx /etc/ghettovcb/ghettoVCB.conf.sysadmit
Procedemos a editar el fichero de configuración indicando el destino de los backups:
vi /etc/ghettovcb/ghettoVCB.conf.sysadmit
Substituimos:
VM_BACKUP_VOLUME=/vmfs/volumes/dlgCore-NFS-bigboi.VM-Backups/WILLIAM_BACKUPS
Por:
VM_BACKUP_VOLUME=/vmfs/volumes/datastore0/backupVMs
Ejemplo de ejecución:
/opt/ghettovcb/bin/ghettoVCB.sh -a -g /etc/ghettovcb/ghettoVCB.conf.sysadmit
Resultado, vista VSphere Client for Windows:
ghettoVCB con ESXi gratuito: Parámetros disponibles
Podemos configurar ghettoVCB a nivel de parámetros al lanzar el script y a nivel global con el fichero de configuración.
1) A nivel de parámetros al lanzar el shell script:
Si ejecutamos: /opt/ghettovcb/bin/ghettoVCB.sh
Veremos los parámetros disponibles y ejemplos.
Entre los parámetros disponibles, podemos indicar el fichero de configuración a usar, las VMs a respaldar: si todas las del host ESXi o algunas, ruta del lob, etc.
2) A nivel de fichero de configuración:
En el interior del fichero: /etc/ghettovcb/ghettoVCB.conf, encontramos distintos parámetros a configurar, por ejemplo:
VM_BACKUP_VOLUME: Indica la ruta destino del backup.
DISK_BACKUP_FORMAT: Formato del fichero VMDK destino, por defecto thin.
POWER_VM_DOWN_BEFORE_BACKUP: Detener la VM que se va a copiar antes de proceder al backup de la misma. Por defecto, está desactivado.
ENABLE_COMPRESSION: Aplicar compresión al backup. Por defecto, está desactivado.
VM_SNAPSHOT_MEMORY: En el proceso de backup de una VM, se realiza un snapshot de la VM, con este parámetro indicamos si también realizar o no un snapshot de la RAM.
NFS_*: Existen varios parámetros posibles a configurar sobre NFS, si queremos que el destino del backup sea un recurso NFS.
EMAIL_*: Configuración de parámetros sobre las notificaciones por correo electrónico: Servidor SMTP, FROM, TO, etc..
Es importante tener en cuenta que como al ejecutar el shell script: ghettoVCB.sh, podemos indicar las VMs a respaldar junto con el fichero de configuración a utilizar, es posible disponer de varios ficheros de configuración según el tipo de VMs que queramos respaldar, imaginemos una VM que queramos detener durante la copia y otras VMs que queremos hacer la copia en caliente.
ghettoVCB con ESXi gratuito: Programar tareas
OPCION1: Programar tarea con CRON:
La ejecución del shell script: ghettoVCB.sh puede programarse con un cron.
La configuración de los crons de sistema, la podemos ver ejecutando:
cat /var/spool/cron/crontabs/root
Sin embargo, si queremos añadir nuevas entradas y que estas queden registradas de forma permanente, deberemos hacerlo editando el siguiente fichero:
/etc/rc.local.d/local.sh
Si editamos directamente el fichero /var/spool/cron/crontabs/root, al reiniciar el host ESXi, se perderán los cambios realizados.
Procedemos a editar el fichero /etc/rc.local.d/local.sh y añadimos antes de exit 0, las siguientes líneas:
/bin/kill $(cat /var/run/crond.pid)
/bin/echo "5 10 * * * /opt/ghettovcb/bin/ghettoVCB.sh -a -g /etc/ghettovcb/ghettoVCB.conf.sysadmit" >> /var/spool/cron/crontabs/root
/bin/busybox crond
La primera línea, mata el proceso crond.
La segunda línea, añade la línea del cron al fichero de configuración.
La tercera línea, inicia el servicio de crond.
Para realizar la prueba que la configuración del cron es permanente, podemos proceder a reiniciar el host ESXi y ejecutar:
cat /var/spool/cron/crontabs/root
Debemos tener en cuenta:
- Hemos de tener en cuenta que VMWare ESXi trabaja con la hora UTC. Por lo tanto, debemos adecuar la hora del cron a la zona horaria con la que estemos trabajando.
Más información sobre el tema de la hora en hosts VMWare ESXi:
VMWare: ESXi configurar hora (SYSADMIT.com)
- La nomenclatura de la fecha y hora de las líneas de cron son las mismas que con sistemas Linux/Unix.
OPCION2: Controlar la ejecución desde otro equipo:
Una alternativa a configurar el cron en el propio host VMWare ESXi es lanzar el cron desde otro equipo conectando por SSH.
Por ejemplo, si quisiéramos lanzar el script ghettoVCB.sh desde un equipo Windows, bastaría con ejecutar la herramienta: plink.exe y ejecutar algo similar a esto:
C:\PuTTy\plink.exe root@172.19.0.1 -pw XXXXXXX "/vmfs/volumes/datastore0/VMsbackup/ghettoVCB.sh -a -g /vmfs/volumes/datastore0/VMsbackup/ghettoVCB.conf.sysadmit"
Según el ejemplo anterior:
- La dirección IP del host VMWare ESXi es: 172.19.0.1
- El usuario del host VMWare ESXi es: root y el password es: XXXXXXX
- El comando a ejecutar sobre el host ESXi empieza y acaba entre “”.
- La herramienta plink.exe, la podemos descargar desde el mismo sitio donde descargamos la herramienta PuTTy.
Estimado, escelente post! aunque al aplicar tengo un error:
ResponderEliminar/opt/ghettovcb/bin/ghettoVCB.sh: line 836: syntax error: Bad substitution
Podras ayudarme?
Hola,
EliminarMuchas gracias por tu comentario.
Te aconsejaría que plantees la cuestión en el hilo de Github referente a ghettoVCB.
El Github de ghettoVCB está creado por el autor de la herramienta ghettoVCB: William Lam
Aquí tienes el enlace donde se plantea el problema que comentas:
https://github.com/lamw/ghettoVCB/issues/83
Un saludo,
Xavi.
Estimado muy buen post antes de instalar el ghettoVCB es necesario cambiar el nivel de seguridad de instalación de paquetes a nivel de comunidad para que permita la instalacion, aprovecho para hacerle una pregunta:
ResponderEliminartal vez tenga experiencia usando ghettoVCB para que envíe emails automáticamente con el estatus final de los backup que realizó , gracias de antemano, saludos
Hola Luis,
EliminarGracias por tu aporte.
Sobre la cuestión que preguntas, no lo he probado, pero el interior del fichero de configuración:
/etc/ghettovcb/ghettoVCB.conf
Aparecen las opciones de configuración referentes a la posibilidad de envío por email.
Un saludo,
Xavi.
Buenos días, como tendría que ejecutar o configurar el script para que solo me haga el backup de una máquina?
ResponderEliminarHola Pol,
EliminarSe puede hacer lo que comentas, aquí tienes algunos ejemplos:
Con el parámetro -m, puedes especificar el nombre la VM a respaldar:
./ghettoVCB.sh -m nombre-VM
También puedes especificar un fichero con las VMs a respaldar:
./ghettoVCB.sh -f TXT-VMs-a-respaldar.txt
o bien puedes especificar todas la VMs (parámetro -a) y también especificar una lista de VMs a excluir:
./ghettoVCB.sh -a -e TXT-VMs-a-excluir.txt
Un saludo,
Xavi.
Perfecto, muchas gracias!
EliminarHola. cuando intento ejecutar esto /opt/ghettovcb/bin/ghettoVCB.sh -a -g /etc/ghettovcb/ghettoVCB.conf.sysadmit me sale el siguiente error.
ResponderEliminarmkdir: can't create directory '/tmp/ghettoVCB.work': File exists
ash: bad number
Sabes a que se debe? Gracias.
Hola,
EliminarPuedes probar de eliminar el fichero que te indica y volver a ejecutar el script.
Un saludo,
Xavi.
Gracias Xavi, queria preguntarte algo mas, relacionado con las notificaciones de correo electronico. Hice la edicion en el archivo .CONF añadiendo la info de correo y edite el servicio de smtp /etc/vmware/firewall/services.xml pero aun asi no me llegan los correos cuando termina el script. Sabes que podria ser? Saludos!!
EliminarHola,
EliminarPues no te sabría decir.
Tal vez puedas revisar el log del servidor SMTP que has indicado y allí puedas encontrar alguna pista.
Un saludo,
Xavi.
Para que os funcione el envío de mails debéis alojar la aplicación el el datastore y el fichero de configuración alojarlo también ahí o usar el mismo script para ejecutar la herramienta:
ResponderEliminarejemplo:
[root@host-esxi:/vmfs/volumes/datastore1/GhettoVCB] ./ghettoVCB.sh -m maquina1
¡Gracias por tu aporte!
EliminarUn saludo,
Xavi.
Hola! Este script sigue funcionando con versiones de VMWare actuales?
ResponderEliminarSí, no debería de haber ningún problema.
EliminarUn saludo,
Xavi.