Conteúdo
1) Introdução
Este tutorial é um guia de configuração do Ganeti Instance Image (GII) e de criação de imagens de máquinas virtuais.
Com o GII, é possível criar uma instância a partir de um clone de uma VM, dispensando a instalação do SO a partir de uma imagem iso. Além de prática, a ferramenta poupa tempo pois em apenas alguns instantes cria-se uma instância por meio do GII.
2) Criar imagem
Nesta sessão será abordada a criação de imagens de máquinas virtuais do tipo plain, ou seja, cujos discos rígidos são volumes lógicos LVM armazenados no respectivo nó. Criar VMs no modo plain é recomendável quando o recurso de alta disponibilidade não é usado (DRBD). Abaixo seguem os passos para criar uma imagem:
a) Primeiramente, é preciso desligar a VM que será a base da imagem. Nunca desligue com o comando shutdown! Sempre desligue uma VM por meio do Ganeti, seja por linha de comando ou por meio do GWM.
b) A partir do nó master do cluster, ative os discos da VM a partir do comando gnt-instance activate-disks nome_da_vm.
c) Ainda no nó master, é preciso saber qual é o volume lógico da VM. Digite o comando gnt-instance info nome_da_vm. Na sessão Disks, terá uma informação semelhante à seguinte linha:
on primary: /dev/cluster/03939150-d5e4-4468-b678-11a03e48822d.disk0 (254:9)
onde a string cluster é o nome do Volume Group da LVM do nó e a string subsequente é o link simbólico do disco da VM.
d) No nó onde se encontra a VM, entre no diretório /dev/mapper e encontre o link simbólico da VM equivalente ao que se encontra no diretório /dev/nome_do_volume_group. A nomenclatura dos links é um pouco diferente. Veja uma comparação:
/dev/cluster/03939150-d5e4-4468-b678-11a03e48822d.disk0 /dev/mapper/cluster-03939150--d5e4--4468--b678--11a03e48822d.disk0
Observe que a sequência de números e letras do link simbólico é a mesma, o que muda é apenas a nomenclatura.
Após a identificação da VM, entre no diretório /dev/mapper e digite o comando kpartx -l -p- link_simbólico_da_vm.
Exemplo:
kpartx -l -p- cluster-03939150--d5e4--4468--b678--11a03e48822d.disk0
O kpartx é um aplicativo que separa as partições de um volume lógico. Como as partições de uma VM permanecem inclusas dentro de um único volume lógico (volume lógico da VM), é preciso separá-las para criar uma imagem de cada partição. O kpartx atua criando outros volumes lógicos para cada uma. O resultado do comando acima é apenas a simulação do desmembramento das partições. Veja um exemplo da saída deste comando.
cluster-03939150--d5e4--4468--b678--11a03e48822d.disk0-1 : 0 208782 /dev/cluster/03939150-d5e4-4468-b678-11a03e48822d.disk0 63 cluster-03939150--d5e4--4468--b678--11a03e48822d.disk0-2 : 0 14458500 /dev/cluster/03939150-d5e4-4468-b678-11a03e48822d.disk0 208845
Como se pode notar, o disco possui duas partições. Tenha como referência o número de blocos de cada partição (2º número após o nome do link simbólico de cada partição). Neste caso, podemos supor, ao analisar o tamanho, que a primeira partição é uma partição swap ou /boot. Se a partição for /boot, será necessário fazer um clone (dump) desta. Não é preciso clonar partições swap. Para saber o esquema de particionamento da VM, faça o login nela e consulte o arquivo /etc/fstab.
Para desmembrar as partições, digite o seguinte comando:
kpartx -a -p- cluster-03939150--d5e4--4468--b678--11a03e48822d.disk0
Este comando cria os link simbólicos discutidos acima.
e) Crie um diretório de armazenamento de imagens. Por exemplo, /srv/ganeti/instance-image.
f) Faça o dump das partições da VM por meio dos comandos:
dump -0 -q -z9 -f /srv/ganeti/instance-image/debian-6.0.5-x86_64-boot.dump /dev/mapper/cluster-03939150--d5e4--4468--b678--11a03e48822d.disk0-1 dump -0 -q -z9 -f /srv/ganeti/instance-image/debian-6.0.5--x86_64-root.dump /dev/mapper/cluster-03939150--d5e4--4468--b678--11a03e48822d.disk0-2
Neste caso, estamos considerando que a primeira partição é /boot. Como pode ser observado, a nomencaltura da imagem deve obedecer o seguinte padrão: nome_do_SO-arquitetura-partição.dump. Isto vai ficar mais claro na próxima sessão, a de configuração do GII.
g) Após criar a imagem, desfaça o desmembramento das partições com o comando:
kpartx -d cluster-03939150--d5e4--4468--b678--11a03e48822d.disk0
h) A partir do nó master, desative o volume lógico da VM com o comando:
gnt-instance deactivate-disks nome_da_vm
3) Configuração do Ganeti Instance Image
O arquivo de configuração do GII é o /etc/default/ganeti-instance-image, o qual possui as seguintes opções:
SWAP=no #yes or no FILESYSTEM="ext4" #ext3 or ext4 IMAGE_NAME="debian-6.0.5" IMAGE_TYPE="dump" #qemu, tarball or dump IMAGE_DIR="/srv/ganeti/instance-image" ARCH="x86_64" #x86 or x86_64 CUSTOMIZE_DIR="/etc/ganeti/instance-image/hooks" IMAGE_DEBUG=0
As principais opções para configurar são: SWAP (indica se a imagem da VM tem ou não partição swap), FILESYSTEM (apenas os sistemas de arquivo ext3 e ext4 são suportados), IMAGE_NAME, IMAGE_TYPE (que neste caso é dump) e ARCH (neste caso, x86_64, ou seja, 64bits).
É interessante configurar este arquivo a partir do nó master e copia-lo para todos nós restantes a partir do comando gnt-cluster copyfile /etc/default/ganeti-instance-image, em vez de fazer a mesma configuração em cada nó.
O GII possui alguns scripts de configuração que são executados no período pós-criação de uma instância a partir de uma imagem. No caso de uma imagem do tipo dump, é preciso configurar o grub da VM após sua criação. O GII faz a configuração automaticamente, basta dar permissão de execução ao arquivo /etc/ganeti/instance-image/hooks/grub.
Comentários