miércoles, 17 de octubre de 2012

Utilizar ghettoVCB en ESXi para copiar tus VMs



Me encanta este script, aunque me está dando la lata desde que he actualizado a la 5.0.
Se trata de un script gratuito, que permite realizar un backup de tus máquinas virtuales, sin la necesidad de apagarlas, en un Datastore local o en una unidad iSCSI, SAN o NFS.



- Lo primero, descargar el fichero.
Dentro tenemos varios scripts de copia y restauración, lo cuales subimos a una carpeta "e.j. backup" del Datastore.


lamw-ghettoVCB-19e0d4b/ghettoVCB.conf
lamw-ghettoVCB-19e0d4b/ghettoVCB-restore.sh
lamw-ghettoVCB-19e0d4b/ghettoVCB-restore_vm_restore_configuration_template
lamw-ghettoVCB-19e0d4b/ghettoVCB.sh
lamw-ghettoVCB-19e0d4b/ghettoVCB-vm_backup_configuration_template
lamw-ghettoVCB-19e0d4b/README

Yo solo subo el ghettoVCB.sh, es el que realiza la copia.



- El ghettoVCB.sh tenemos que modificarlo con el vi:
Con el putty, no dirigimos a la carpeta que lo contiene y ejecutamos:  ~ #vi ghettoVCB.sh

Modificamos principalmente esta línea:
VM_BACKUP_VOLUME=/vmfs/volumes/(ej. unidad iscsi)/(ej. backup)
Lo que indicamos, es el destino de la copia. Nos creará carpeta con el nombre de la VM y otra con la fecha de la copia.

Otras líneas para modificar:
DISK_BACKUP_FORMAT=  Aquí yo suelo usar thin (en otro post explicaré los diferemtes tipos de discos).
VM_BACKUP_ROTATION_COUNT= Número de copias a guardar.

Con estas modificaciones es suficiente para realizar un backup de nuestra VM.
NOTA: Para realizar modificaciones con el vi, cuando se muestra el fichero para la edición, pulsamos "i" para activar la edición. Realizamos las modificaciones y pulsamos "Esc" para cerrar la edición.
Para guardar la modificaciones, pulsamos ":" seguido de "wq" y pulsamos "intro".



- Por último, creamos un archivo para listar las VM a las que se le hará la copia:
~ #vi vm_para_copia
Aquí ponemos las VM a copiar.
e.j.
   server-xxx



- Ahora tenemos que programar la tarea con el CRON del ESXi:


--Editamos el cron de root:   ~ # vi /var/spool/cron/crontabs/root
   Agregamos lo siguiente:
0 0 1 * * /vmfs/volumes/(...dirección donde tenemos ghettoVCB.sh...)/ghettoVCB.sh -f vmfs/volumes/ (...dirección donde tenemos la lista de VM...)/ vm_para_copia  > /vmfs/volumes/(...donde guardamos el log...)/ghetto-bk-$(date +%Y-%m-%d).log

0 0 1 * * - Estas cifras son para indicar: minuto(0) hora(0) día(1) mes(todos) día de la semana(todos)
   Quiere decir que se ejecutará todos los días 1 de todos los meses independientemente del día de la semana que sea. Lo días de la semana se indican del 1 al 7 separados por comas.


--Cerramos el proceso del CRON:   ~ # kill $(cat /var/run/crond.pid)


--Lo volvemos a iniciar:   ~ # busybox crond


--Ahora, demos agregar la linea persistente agregándola en el rc.local (si se apaga el host se borra el CRON):   ~ # vi /etc/rc.local

/bin/kill $(cat /var/run/crond.pid)
/bin/echo " 0 0 1 * * /vmfs/volumes/(...dirección donde tenemos ghettoVCB.sh...)/ghettoVCB.sh -f vmfs/volumes/ (...dirección donde tenemos la lista de VM...)/ vm_para_copia  > /vmfs/volumes/(...donde guardamos el log...)/ghetto-bk-$(date +%Y-%m-%d).log " >> /var/spool/cron/crontabs/root
/bin/busybox crond


Y listo! Con esto tendremos a salvo nuestras VM.

2 comentarios:

  1. buenas tardes ,
    el post muy bueno pero estoy teniendo problemas con el esxi 5.0 y 5.0.1 ya que me dice que no es la version adecuada,hay solucion?

    saludos

    ResponderEliminar
  2. Primero intenta usar esta versión de ghettoVCB -> https://github.com/lamw/ghettoVCB/downloads

    Si continúas con el error de versión, prueba esto:
    Edita y cambia la línea

    ESX_VERSION=$(vmware -v | awk '{print $3}')
    if [[ "${ESX_VERSION}" == "5.0.0" ]]; then

    por esto:

    ESX_VERSION=$(vmware -v | awk '{print $3}')
    if [[ "${ESX_VERSION}" == "5.0.0" ]] || [[ ${ESX_VERSION}" == "5.1.0" ]] ; then

    ResponderEliminar