Existem várias possibilidades para prover o armazenamento dos discos das instâncias criadas no Cluster, isso é transparente para instância.
Template de Disco.
Você pode escolher um dos quatros templates abaixo para a sua instância:
- diskless - Instância sem disco, usada somente para testes;
- file - A instância utiliza um arquivo de imagem como disco. Com este template a instância não possui Alta disponibilidade e não pode ser migrada online, "Live Migration", e ainda possui perda no I/O de Disco, baixa performance;
- plain - A instância utilizara LVM2 como backend um LV, Volume Lógico, como disco, muito utilizado atualmente em Hosts de virtualização com Xen e KVM, possui Alta Perfomance de I/O de disco, porém não possui suporte a alta disponibilidade;
- drbd - Somente disponível para cluster com múltiplos Nós. Um espelhamento da instância é estabelecido entre o Nó primário e o Nó Remoto Secundário, os Nós primário e secundários devem ser especificados durante a criação da instância para que o DRBD inicie a replicação dos discos da instância, provendo características de Alta Disponibilidade como Failover.
Criando uma Instância no Cluster:
# gnt-instance add -t plain --disk 0:size=5g -B memory=128 -o debootstrap+default -n node1 vm1
O comando "gnt-instance" é destinado para gerenciamento de instâncias "Máquinas Virtuais", conforme a sintaxe acima estamos usando em conjunto com o gnt-instance a opção "add" para adicionar uma máquina virtual e o template de disco utilizado, "-t plain", que no caso seria uma máquina normal criada em um volume lógico, podemos usar outros tipos de templates de disco como drbd para alta disponibilidade conforme será abordado mais adiante.
Com a opção "--disk" podemos criar quantas partições quisermos, por exemplo se desejarmos duas partições de 5GB passaríamos as sintaxes "--disk 0:size=5g --disk 1:size=5g" e "-B" o backend (memoria,cpus) padrão será usado, como memoria inicial da instância ou vcpu inicial.
A opção memória como o próprio nome já diz é destinado a quantidade de memória, "-o" nos indica qual script para a criação da máquina virtual vamos utilizar que no caso é "debootstrap+default" conforme instalamos acima, a opção "-n node1" indica o Nó Primário onde será criada a máquina virtual e por último o nome da nova máquina virtual, o nome deverá constar no arquivo "/etc/hosts" no ato da criação da instância, também é possível passar a opção "--no-name-check" para a não resolução de nomes no ato da criação da instância.
Criando Instâncias com Alta disponibilidade no Cluster:
# gnt-instance add -t drbd --disk 0:size=5g -B memory=128 -o debootstrap+default -n node1:node2 vm2
Conforme observado acima quando criando instâncias com Alta Disponibilidade devemos informar que o template de disco utilizado é do tipo "drbd" e respectivamente o Nó primário e o Nó secundário.
Assistindo a replicação dos discos entre os nós:
É só acompanhar que você vera todo o processo de replicação para o outro Nó sem a queda do serviço, com isso já se deve perceber o tanto que se ganha com futuras manutenções ou implementações sem se preocupar com a disponibilidade do sistema:
# watch cat /proc/drbd
Mais informações sobre o comando gnt-instance:
http://docs.ganeti.org/ganeti/2.4/man/gnt-instance.html