Ir para o conteúdo

Ampliar o espaço em disco de uma appliance virtual

As appliances virtuais enchem-se: gravações, arquivos, bases de dados e logs acumulam-se nas partições que os alojam. Esta página amplia uma dessas partições para que utilize todo o espaço disponível no disco — num Mediation Controller ou num Edge Gateway.

A operação é normalmente efetuada a quente, sem impacto na produção.

Uma condição, e não é negociável

Os comandos abaixo pressupõem a disposição dos discos e o particionamento fornecidos com a appliance. Se os discos ou o particionamento desta máquina virtual tiverem sido modificados manualmente, não se aplicam: eliminam e recriam uma partição, e fá-lo-iam a partir de pressupostos que deixaram de ser verdadeiros. Nesse caso, contacte o suporte da Systancia em vez de adaptar os comandos por si próprio.

Uma única alteração é tolerada: a que este mesmo procedimento já efetuou. A página destina-se a ser aplicada de novo — uma appliance ampliada desta forma continua elegível, e cada novo aumento do disco virtual é entregue à partição da mesma maneira.

Antes de começar

Percorra estes quatro passos por ordem. O primeiro é o que torna o resto recuperável.

1. Fazer um backup da máquina virtual

Faça um backup da máquina virtual antes de mais nada. A ampliação reescreve a tabela de partições: um backup é o que transforma uma operação falhada num restauro em vez de uma reinstalação.

2. Ampliar o disco virtual a partir do hipervisor

Adicione o espaço necessário ao disco da appliance, a partir do seu hipervisor. Este passo, por si só, não altera nada dentro da máquina — o sistema operativo continua a ver o tamanho anterior até que os comandos abaixo sejam executados.

A opção está esbatida? Procure um snapshot

Um hipervisor recusa ampliar o disco de uma máquina virtual que tenha um snapshot. Se a opção não estiver disponível, verifique se resta algum e remova-o — depois amplie o disco.

3. Opcionalmente, criar um snapshot

Uma vez ampliado o disco, pode criar um snapshot da máquina, como via de regresso imediata para os comandos que se seguem. Crie-o depois da ampliação do disco, nunca antes: um snapshot é precisamente o que impediria essa ampliação.

4. Aplicar a ampliação dentro da appliance

Só então execute os comandos da secção seguinte.

Que partição ampliar

Os comandos recebem um diretório e ampliam a partição que o aloja. Pode ser indicado qualquer diretório do sistema, com uma exceção.

/boot está excluído

Não vise /boot. Os comandos atuam sobre o volume LVM da appliance, do qual /boot está fora. O campo abaixo recusa esse caminho.

Na prática, dois diretórios por appliance crescem mais depressa do que os restantes — são o motivo habitual para executar este procedimento:

Appliance Diretório O que contém
Mediation Controller /var Os dados do Mediation Controller, entre eles a base de dados.
Mediation Controller /var/log Os logs do sistema.
Edge Gateway /var/lib/ipdiva/carerecord/archives Os arquivos gráficos das sessões gravadas.
Edge Gateway /var/log Os logs do sistema.

Indicar um diretório, não uma partição

Não precisa de saber que partição ou que volume lógico aloja o quê: os comandos leem-no a partir do diretório que lhes indicar. Execute df -h na appliance para ver qual está a ficar sem espaço.

Ampliar a partição

Abra uma sessão SSH na appliance, como root, e execute em seguida os comandos que lhe correspondem.

Pode personalizar a variável dos comandos seguintes:

Valor personalizado Variável Comentário
TARGET_DIRECTORY Diretório cuja partição deve ser ampliada — ver Que partição ampliar.

Ou preencha o campo com um dos três diretórios que saturam primeiro:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
directory=TARGET_DIRECTORY

echo 1 > /sys/class/block/sda/device/rescan

start_lvm_partition=`fdisk -l /dev/sda | grep LVM | awk '{print $2}'`
mountpoint=`df $directory | awk 'NR==2 {print $1}'`

echo -e "d\n2\nn\ne\n2\n\n\nn\n$start_lvm_partition\n\nn\nt\n5\n8E\nw" | fdisk /dev/sda

pvresize /dev/sda5
lvresize -l +100%FREE $mountpoint
resize2fs $mountpoint
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
directory=TARGET_DIRECTORY

echo 1 > /sys/class/block/sda/device/rescan

start_last_lvm_partition=`fdisk -l /dev/sda | grep LVM | awk '{print $2}' | sort -nr | head -n1`
last_lvm_partition=`fdisk -l /dev/sda | grep $start_last_lvm_partition | awk '{print $1}'`
mountpoint=`df $directory | awk 'NR==2 {print $1}'`

echo -e "d\n${last_lvm_partition: -1}\nn\np\n${last_lvm_partition: -1}\n$start_last_lvm_partition\n\nn\nt\n${last_lvm_partition: -1}\n8E\nw" | fdisk /dev/sda

pvresize $last_lvm_partition
lvresize -l +100%FREE $mountpoint
resize2fs $mountpoint

O que fazem os comandos

Encadeiam quatro operações: fazer o kernel ver o novo tamanho do disco sem reiniciar, reescrever a última partição LVM para que chegue ao fim do disco, entregar esse espaço ao LVM e, por fim, fazer crescer o sistema de ficheiros sobre ele. As duas variantes diferem apenas na disposição das partições de cada appliance — escolha a que corresponde à máquina em que se encontra.

Verifique o espaço livre antes e depois

Execute df -h no diretório antes e depois. O ganho tem de corresponder ao espaço adicionado no passo 2.

Se o sistema de ficheiros não tiver crescido, não volte a executar os comandos de imediato: a tabela de partições já foi reescrita, e uma segunda passagem sobre o mesmo tamanho de disco partiria de um estado que eles não esperam. Comunique antes o resultado ao suporte da Systancia.

Voltar a executá-los é legítimo num caso, e é o caso habitual: quando foi adicionado mais espaço ao disco virtual. Recomece no passo 1 — todo o procedimento se aplica de novo, backup incluído.