maio 242019
 

PRELIMINARES

 

Um pouco da história sobre este estudo.

Resolvi criar este artigo devido à dificuldade em encontrar material de apoio sobre como utilizar o script “ghettoVCB.sh” para efetuar snapshots de máquinas virtuais de servidores ESXi 5.0, de forma automatizada.

O script ghettoVCB é simples, prático e fácil de configurar na sua forma básica (caminho_destino + número_cópias), que é o que, na prática, todo administrador precisa (efetuar snapshot das máquinas virtuais quentes salvando no destino desejado).

E é com este intuito que escrevi este tutorial. O meu objetivo era montar uma solução *FREE* automatizada para snapshot das VMs, utilizando recursos simples e básicos.

Para isso, utilizei também um servidor (em VM) Ubuntu Server 11.04 64 bits. Neste material, cito a possibilidade de backup através de um servidor NFS na rede, mostrando de forma simples e objetiva, como instalar e configurar este recurso.

Resumindo, este artigo trata da minha experiência na configuração do script, efetuando snapshot das VMs quentes, com agendamento programado em um servidor GNU/Linux com Ubuntu Server 11.04, salvando as snapshots em um case de HD conectado à porta USB da máquina física ESXi e também em um storage com FreeNAS instalado em máquina física através de NFS e iSCSI.

Como abordo de forma simples o script ghettoVCB, sugiro visitar a comunidade VMware para informações específicas sobre o funcionamento da ferramenta:

REQUISITOS

Conhecimentos:

  • Estar ambientado com o vSphere Client.
  • Estar ambientado com a estrutura de pastas do ESXi 5.0.
  • Ter conhecimento de operação básica em ambiente GNU/Linux.

Downloads:

1. vSphere Client → Pode ser obtido através do link abaixo, ou digitando o endereço IP do seu servidor ESXi, em seu navegador de Internet:

2. Script ghettoVCB → Clique no ícone ZIP para efetuar o download do arquivo “master.zip”:

Descompactar o arquivo “master.zip”, gerando seis arquivos. Utilizaremos o “ghettoVCB.sh” neste tutorial. Para maiores informações sobre este pacote com scripts, favor visitar o site do desenvolvedor, em:

Para um melhor estudo do assunto, usarei as informações abaixo como base para todo o desenvolvimento do artigo:

Servidor ESXi:

  • Host: vmsrv
  • IP: 192.168.1.110

Servidor NFS:

  • Host: zBKP_Server-Ubuntu11.04_amd64
  • IP: 192.168.1.200

Usuário em todos os procedimentos: root

INSTALAÇÃO E CONFIGURAÇÃO: GHETTOVCB.SH NO ESXI 5

 

Informações iniciais:

  • Host ESXi neste estudo :: vmsrv
  • IP ESXi neste :: 192.168.1.110

1. Após efetuado o download e descompactado o arquivo “master.zip”, iniciamos o vSphere Client:

  1. Selecionamos o servidor ESXi (192.168.1.110);
  2. Selecionamos a guia “Summary”;
  3. Selecionamos o storage correto do nosso servidor ESXi, com botão direito do mouse e clicamos em “Browse Datastore”;
  4. Selecionamos o diretório em que será colocado o arquivo do script (no caso, criamos a pasta “scripts” dentro deste volume);
  5. Clicamos no botão de envio e selecionamos a opção “Upload File”.

Procedimentos, conforme imagem abaixo:

Obs.: Reparem na imagem (destaque em amarelo “Configuration Inssues – SSH for the host has been enabled”) que o SSH do servidor ESXi está ligado.

Caso você não tenha ligado no momento da instalação/configuração do servidor, pode faze-lo através da aba “Configuration”, conforme abaixo:

  1. “Configuration”;
  2. “Security Profile”;
  3. Em “Services”, você deve selecionar o link “Properties”;
  4. Na tela “Services Properties – Remote Access”, procure a opção SSH e clique no botão “Options”;
  5. Marque a opção “Start automatically if ant ports are open, and stop when ports are closed”.

2. Acesso ao servidor ESXi através do SSH para configurar o script de backup para nossa necessidade.

Efetuei este acesso via estação GNU/Linux:

# ssh root@ip_servidor.esxi

Também utilizei o PuTTY, cliente de SSH em máquinas Windows.

CONFIGURAÇÃO

O arquivo encontra-se dentro do Datastore (neste caso, com o nome de VM_Storage) no caminho: /vmfs/volumes/VM_Storage/scripts

Após localizarmos o arquivo “ghetto.VCB.sh”, vamos editá-lo para efetuar as alterações (use o editor de sua preferência). Exemplo:

# vi ghettoVCB.sh

Dentro do arquivo, vamos localizar e modificar as seguintes linhas:

VM_BACKUP_VOLUME=caminho onde serão salvos as snapshots
VM_BACKUP_ROTATION_COUNT=numero máximo de snapshots (versionamentos) que serão armazenados

Como exemplo, configuramos da seguinte forma:

VM_BACKUP_VOLUME=/vmfs/volumes/Chewbacca/zVMBackup_192.168.1.110
VM_BACKUP_ROTATION_COUNT=5

Obs. 1: “Chewbacca” é o nome do Datastore compartilhado via NFS na rede com o diretório “…/zVMBackup_192.168.1.110”, onde serão gravadas as 5 versões completas das snapshots.

Obs. 2: Será explicado mais adiante neste tutorial, como criar um servidor NFS e compartilhar como Datastore através do vSphere Client.

Concluído e salvo a edição do “ghettoVCB.sh”, devemos criar um arquivo com a lista das VMs a serem copiadas pelo script do “ghettoVCB.sh”.

Neste caso, criamos no mesmo caminho (/vmfs/volumes/VM_Storage/scripts) um arquivo chamado “machines”, ao qual deverá ser colocado o nome das VMs exatamente como aparece no inventário do vSphere Client.

Ao verificarmos a figura anterior, na lista de VMs, são apresentadas quatro máquinas virtuais, porém, as VMs que serão copiadas neste exemplo, serão “MSWinXPsp3_x86”, “Nexenta3.2.1_amd64” e “Ubuntu11.04_amd64”, nesta ordem.

Excluiremos a máquina virtual “zBKP_Server-Ubuntu11.04_amd64” do procedimento de backup. Então, a escrita do arquivo será exatamente como exposto abaixo (cuidado com caracteres maiúsculos/minúsculos e espaços entre os nomes):

  1. MSWinXPsp3_x86
  2. Nexenta3.2.1_amd64
  3. Ubuntu11.04_amd64

Salvo o arquivo “machines”, devemos informar ao ESXi que o arquivo “ghettoVCB.sh” é um script executável. Para isso, damos permissão de execução ao arquivo com o comado:

# chmod +x ghettoVCB.sh

Pronto!

Caso você deseje efetuar backups manuais destas máquinas virtuais listadas no arquivo “machines”, basta rodar o script dentro do servidor ESXi, através do comando:

# ./ghettoVCB.sh -f machines

* Lembrando que, neste exemplo, você deve estar no diretório criado /vmfs/volumes/VM_Storage/scripts/ para executar o comando com sucesso.

Os logs de status das snapshots (“STATUS.ok” ou “STATUS.error”) ficam gravados dentro do caminho de destino da snapshot de cada máquina virtual, ou seja, neste exemplo, dentro da pasta de cada VM no dispositivo /vmfs/volumes/Chewbacca/zVMBackup_192.168.1.110.

Com isso, finalizamos a configuração do script “ghettoVCB.sh” para efetuar snapshots manuais de máquinas virtuas quentes, pré-definidas em um arquivo “machines”, em um servidor ESXi 5.0.

CRIANDO SERVIDOR NFS PARA COMPARTILHAR NA REDE LOCAL E ADICIONAR COMO STORAGE NO ESXI 5.0

 

“NFS (acrônimo para: Network File System) é um sistema de arquivos distribuídos a fim de compartilhar arquivos e diretórios entre computadores conectados em rede, formando assim, um diretório virtual.”

Fonte: Wikipédia

A ideia deste estudo é instalar um servidor NFS em máquina virtual para compartilhar um diretório na rede, através do vSphere Client, como Datastore de backup no servidor ESXi 5.0.

Observações 1:

  • O servidor NFS pode ser instalado em máquina física.
  • Efetuamos os testes com uma máquina virtual de Ubuntu Server 11.04 alocado no mesmo servidor ESXi5.0, em um case de HD USB conectado na máquina física e disponível para máquina virtual GNU/Linux.
  • Também efetuamos testes com storage FreeNAS com HDs internos, instalado em máquina física, com compartilhamento via NFS e iSCSI.

Observações 2:

  • Todos os testes foram bem sucedidos.
  • Como associei a unidade USB à máquina virtual com Ubuntu Server 11.04, o case USB ficou disponível somente para essa VM na porta USB física do servidor ESXi.
  • O ESXi trabalha com porta USB específica para cada máquina virtual. Ou seja, o case USB terá que ser sempre conectado à essa porta USB para estar disponível para a VM de GNU/Linux.

SERVIDOR NFS COM UBUNTU SERVER 11.04

Informações iniciais:

  • Nome do Host neste estudo: “zBKP_Server-Ubuntu11.04_amd64”, conforme primeira figura do tópico 1 onde é demonstrado no vSphere Client a lista de máquinas virtuais.
  • IP do Host neste estudo: 192.168.1.200
  • IP do ESXi (vmsrv) neste estudo: 192.168.1.110

1. Efetuar a instalação do servidor Ubuntu Server com serviço SSH ativado.

2. Instalar os seguintes pacotes:

# apt-get install nfs-kernel-server portmap

3. Editar o arquivo /etc/exports e adicionar o caminho do diretório que será compartilhado na rede, conforme abaixo:

# vi /etc/exports

/mnt/backup 192.168.1.110(rw,sync,fsid=0,no_root_squash,no_subtree_check)

Onde:

  • /mnt/backup :: Ponto de montagem, que pode ser uma pasta no HD do sistema operacional, um case de HD USB, um pendrive ou qualquer outro dispositivo montado no GNU/Linux, desde que estes estejam adicionados à lista de hardware da máquina virtual no vSphere Client.
  • 192.168.1.110 :: IP que está autorizado a enxergar este compartilhamento. Pode ser utilizado também uma faixa de IPs 192.168.1.0/24, por exemplo.
  • rw :: Permissão de leitura/escrita.
  • sync :: Sincronizar.
  • fsid :: Sistema de arquivos.
  • no_root_squash :: Permitir privilégios de root.
  • no_subtree_check :: Desativar verificação de sub_árvore.

Após salvo as alterações no arquivo, reiniciamos o serviço de NFS:

# /etc/init.d/nfs-kernel-server restart

Para servidores storage tipo FreeNAS, que possuem sua própria GUI de configuração, os serviços são configurados de forma mais intuitiva, conforme demonstramos na figura abaixo:

Linux: Backup de máquinas virtuais no ESXi 5.0 com script ghettoVCB

ADICIONANDO O COMPARTILHAMENTO NFS AO ESXI 5

Para adicionarmos o compartilhamento NFS do servidor Ubuntu no ESXi 5, dentro do vSphere Client, devemos selecionar a guia “Configuration” e no segmento de “Hardware” devemos selecionar a opção “Storage”.

Selecionamos a opção “Add Storage”, e marcamos a opção “Network File System”, preenchendo os campos solicitados, conforme abaixo:

  • Server: 192.168.1.200
  • Folder: /mnt/backup
  • Datastore Name: Chewbacca

Onde:

  • Server :: IP do servidor NFS.
  • Folder :: Diretório compartilhado no servidor NFS (conforme permissões no arquivo /etc/exports do servidor NFS).
  • Datastore Name :: Identificação do ponto de montagem no servidor ESXi.

Obs.: a opção “Mount NFS read only” deverá estar desmarcada para que possamos efetuar a gravação dos dados nesta unidade.

Após adicionado o compartilhamento de um servidor NFS ao ESXi, notaremos na guia “Summary” que o dispositivo compartilhado irá ser exibido na sessão “Storage”, podendo ser acessado normalmente pelo navegador Datastore Browser (botão direito do mouse em “Chewbacca”, opção “Browser Datastore”).

Com isso, temos o dispositivo NFS adicionado ao servidor ESXi 5.0 para armazenamento de arquivos das máquinas virtuais.

 

CRIANDO AGENDAMENTO PARA EXECUÇÃO AUTOMÁTICA DA SNAPSHOT COM GHETTOVCB.SH

 

Relembrando as informações iniciais:

  • Nome do Host neste estudo: “zBKP_Server-Ubuntu11.04_amd64”
  • IP do Host neste estudo: 192.168.1.200
  • IP do ESXi (vmsrv) neste estudo: 192.168.1.110

SSH COM TROCA DE CHAVES

Para iniciarmos este tópico, necessitamos que o acesso SSH nos servidores ESXi e NFS estejam ativados.

Será necessário efetuar acesso através de troca de chaves, sem a palavra-passe, via SSH do servidor zBKP_Server-Ubuntu11.04_amd64 para o servidor VMSRV (ESXi).

Efetuar os seguintes comandos no servidor “zBKP_Server-Ubuntu11.04_amd64” (192.168.1.200):

# ssh-keygen

Onde todos os questionamentos devem ser deixados em branco, pressionando a tecla ENTER para manter o padrão.

# cat ~/.ssh/id_rsa.pub | ssh root@ip_servidor_esxi ‘cat >> /etc/ssh/keys-root/authorized_keys’

Onde: “root@192.168.1.110” :: É o IP do servidor VMSRV (ESXi).

# ssh root@ip_servidor_esxi

Onde: “root@192.168.1.110” :: Deverá efetuar acesso sem a solicitação de senha.

Obs. 1: no servidor ESXi, devemos nos certificar que a linha “AuthorizedKeysFile /etc/ssh/keys-%u/authorized_keys” esteja ATIVADA (sem comentários) dentro do arquivo de configuração /etc/ssh/sshd_config.

Obs. 2: podemos utilizar comandos de costume, como:

# ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip_servidor_esxi

Porém, a linha acima citada, deverá estar comentada para o funcionamento do SSH. Não indico este procedimento, pois ao reiniciarmos o servidor ESXi, a chave é perdida e o processo terá que ser efetuado novamente, não sendo uma prática eficaz neste caso.

Obs. 3: a cópia da chave pode ser feita manualmente, desde que seja inserida no diretório/arquivo correto do servidor ESXi (/etc/ssh/keys-root/authorized_keys).

Com estes procedimentos efetuados, podemos iniciar a etapa de agendamento do script no servidor “zBKP_Server-Ubuntu11.04_amd64” (192.168.1.200).

AGENDAMENTO DO SCRIPT

Para automatizarmos a rotina de backup/snapshot, podemos utilizar o agendamento via CRON do servidor “zBKP_Server-Ubuntu11.04_amd64” (192.168.1.200).

O cron pode ser interpretado como um serviço do GNU/Linux que é carregado durante o processo de boot do sistema. Trata-se de uma ferramenta que permite programar a execução de comandos e processos de maneira repetitiva ou apenas uma única vez.

Porém, as tarefas agendadas no cron não devem ter saída de tela, onde procuro utilizar o parâmetro “> /dev/null”, para não gerar tal saída.

Utilizaremos dentro do cron, o comando SSH para efetuar a conexão ao servidor ESXi e executar o script do “ghettoVCB.sh”.

Editando o cron:

# vi /etc/crontab

Inserir a seguinte linha dentro do arquivo “crontab”:

30 21 * * * root ssh root@192.168.1.110 ‘./vmfs/volumes/VM_Storage/scripts/ghettoVCB.sh -f /vmfs/volumes/VM_Storage/scripts/machines’ > /dev/null

Onde, neste exemplo, às 21h30m de todos os dias (na semana e mês), o cron irá executar o comando ssh (que efetua conexão no servidor ESXi) e executa o comando para rodar o script do “ghettoVCB.sh” na lista de máquinas virtuais especificadas no arquivo “machine”, todos no caminho /vmfs/volumes/VM_Storage/scripts do servidor ESXi.

Para mais informações, verificar o artigo do colega Emerson Alecrim, ao qual me baseei para entender o funcionamento do cron:

 

CONSIDERAÇÕES FINAIS

 

Este artigo foi escrito com algumas informações coletadas de artigos publicados aqui no VOL, cujos links estão aqui citados e, principalmente, com base na necessidade do autor em utilizar uma solução simples e eficaz de backup das máquinas virtuais quentes de forma gratuita.

A maior parte do artigo foi escrita com base no estudo e na experiência do autor. As informações aqui contidas foram testadas passo a passo com sucesso em todos os procedimentos.

Mas, como todo procedimento técnico, podemos encontrar falhas e erros. Peço a todos os leitores que enviem, via comentário, a sua opinião sobre o material, sugestões de melhorias, explicações de tópicos não relatados ou abordados e correções de erros encontrados.

Toda informação é bem-vinda para contribuir com a comunidade!

Espero que este estudo seja útil a muitos administradores e entusiastas de T.I.

Sorry, the comment form is closed at this time.