GhettoVCB

De Infraestrutura São Carlos
Ir para navegação Ir para pesquisar

O ghettoVCB é um script feito para cuidar do backup e restauração das máquinas virtuais.

Comece fazendo o download do arquivo de instalação em https://github.com/lamw/ghettoVCB/releases/download/ com nome de vghetto-ghettoVCB.vib para o diretório raiz do servidor ou outro de sua escolha.

Desde o diretório onde baixou o arquivo, rode o comando:

esxcli software vib install -v /vghetto-ghettoVCB.vib -f

cd /vmfs/volumes/SSDVMServer01/

Crie então o diretório ghettoVCB no disco local com

mkdir ghettoVCB

e então copie os arquivos instalados no passo anterior:

cp /opt/ghettovcb/bin/ghettoVCB* ghettoVCB/

Altere o arquivo ghettoVCB.sh com:

vi ghettoVCB.sh

e altere:

VM_BACKUP_VOLUME=/vmfs/volumes/DiscoVMServer03/backup
VM_BACKUP_ROTATION_COUNT=5

ENABLE_NON_PERSISTENT_NFS=1                                                           

NFS_SERVER=10.225.1.84                                                              
                                                              
NFS_MOUNT=/mnt/BackupVMServer                                                       
                                                                                    
Non-persistent NFS datastore display name of choice                               
NFS_LOCAL_NAME=backup                                                               
                                                                                    
NFS_VM_BACKUP_DIR=vmbackups

e na linha 944 trocar o -E por -x, conforme exemplo:

grep '''-E''' "^${VM_NAME}\$" "${VM_EXCLUSION_FILE}" > /dev/null 2>&1

 por

grep '''-x''' "^${VM_NAME}\$" "${VM_EXCLUSION_FILE}" > /dev/null 2>&1

crie os arquivos:

vm_exclusion_list:

vCLS (1)
vCLS (2)
vCLS (3)
vCLS (4)
vCLS (5)

e vms_to_restore

"/vmfs/volumes/backup/vmbackups/TV-Apache/TV-Apache-2021-02-19_13-34-20;/vmfs/volumes/DiscoVMServer02;3;tv-recuperada"

Rode o comando para testar e montar o NFS no local apropriado:

./ghettoVCB.sh -a -e vm_exclusion_list

Então alterar o arquivo /etc/rc.local.d/local.sh acrescentando antes do exit 0:

/bin/kill $(cat /var/run/crond.pid)
cp /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab.alterar /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab
mv /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab /var/spool/cron/crontabs/root -f

/bin/crond
  • NOTA: O arquivo é somente leitura, então grave com :wq! )

Crie o arquivo /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab.alterar contendo:

#min hour day mon dow command
1    1    *   *   *   /sbin/tmpwatch.py
1    *    *   *   *   /sbin/auto-backup.sh
0    *    *   *   *   /usr/lib/vmware/vmksummary/log-heartbeat.py
*/5  *    *   *   *   /bin/hostd-probe.sh ++group=host/vim/vmvisor/hostd-probe/stats/sh
00   1    *   *   *   localcli storage core device purge
*/10 *    *   *   *   /bin/crx-cli gc
#5 3 * * * /vmfs/volumes/SSDVMServer01/ghettoVCB/ghettoVCB.sh -a -e /vmfs/volumes/SSDVMServer01/ghettoVCB/vm_exclusion_list > /vmfs/volumes/backup/log/backupvmserver01-$(date +\%F).log 2>&1
5 13 * * * /vmfs/volumes/SSDVMServer01/ghettoVCB/ghettoVCB.sh -a -e /vmfs/volumes/SSDVMServer01/ghettoVCB/vm_exclusion_list > /vmfs/volumes/backup/log/backupvmserver01-$(date +\%F).log 2>&1

Note que o formato é invertido, minutos depois horas, então acerte o horário do backup de teste de acordo com suas necessidades antes de reiniciar e testar se tudo vai funcionar.

Feito isso, rode os comandos abaixo e aguarde até o horário programado para o teste do backup.

/bin/kill $(cat /var/run/crond.pid)
cp /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab.alterar /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab
mv /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab /var/spool/cron/crontabs/root -f
/bin/crond

Para acompanhar pode-se observar o arquivo de log em /vmfs/volumes/backup/log, que deverá ter o log recente do backup efetuado.

Depois de comprovado o funcionamento, altere o arquivo /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab.alterar, removendo a última linha (com o horário para teste) e descomentando a anterior (com o horário conveniente para rodar o backup). Depois torne a rodar os comandos:

/bin/kill $(cat /var/run/crond.pid)
cp /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab.alterar /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab
mv /vmfs/volumes/SSDVMServer03/ghettoVCB/root.crontab /var/spool/cron/crontabs/root -f
/bin/crond

Isso vai atualizar as configurações de horário. Acompanhe seu backup por alguns dias para ter certeza de que está funcionando como desejado e se não vai faltar espaço.

Para atualizar o vmware, é necessario tirar a instalação do ghetoVCB:

esxcli software vib remove --vibname=ghettoVCB

Apos finalizar as atualizações, voltar a instalação do ghettoVCB, geralmente com o arquivo VIB na raiz:

esxcli software vib install -v /vghetto-ghettoVCB.vib -f

Apos realizar a reinstalação do ghetto, rodar os seguintes comandos na pasta de instalacao do vghetto para retirar a VM vCLS do backup:

/bin/esxcli vm process list |grep ^vCLS > vm_exclusion_list
/bin/esxcli vm process list |grep ^vCenter >> vm_exclusion_list
/bin/esxcli vm process list |grep ^BackupVM >> vm_exclusion_list