No EC2 o disco não está preso ao tamanho da máquina: pode aumentá-lo quando quiser, mesmo com a máquina ligada, sem reinstalar nem mover nada. São duas partes: dizer à AWS que o disco é maior, e dizer ao sistema operativo lá dentro que o aproveite. A primeira é um clique; a segunda, dois comandos que assustam da primeira vez e depois fazem-se de cor.
A única coisa que não se pode é encolher: um disco só cresce. Por isso aumente com cabeça.
Antes de começar: o que significa cada coisa
- EBS
- O serviço de discos do EC2. Cada disco chama-se volume.
- Volume raiz
- O disco onde o sistema está instalado. É o que costuma encher-se.
- Partição
- Uma divisão dentro do disco. Ao aumentar o disco, a partição continua com o tamanho antigo até que a aumente.
- Sistema de ficheiros
- A forma como o sistema organiza os dados dentro da partição (ext4 ou xfs em Linux). Também há que aumentá-lo.
- gp3
- O tipo de disco normal do EBS. Se o seu disco é do tipo antigo (gp2), pode mudá-lo para gp3 no mesmo passo e costuma sair mais barato.
- Instantâneo
- Uma cópia do disco. Convém fazer um antes de mexer no disco, por precaução.
Passo a passo
Faça um instantâneo antes
Consola do EC2, menu Volumes, selecione o disco da máquina (a coluna "Attached resources" diz qual é), Actions, Create snapshot. É a rede de segurança; na prática o processo é seguro, mas de graça não custa nada... bom, uns cêntimos de armazenamento.
Aumente o volume a partir da consola
Com o volume selecionado, Actions, Modify volume. Ponha o tamanho novo em GB (por exemplo de 20 para 40) e, se o tipo é gp2, aproveite para o mudar para gp3. Modify. O estado do volume passa a "modifying" e depois a "optimizing"; não é preciso esperar que a otimização termine para continuar, assim que o tamanho novo aparece na lista já pode avançar. Tenha em conta que a AWS só permite modificar um volume uma vez a cada seis horas.
Veja como está o disco por dentro
Ligue-se por SSH à máquina e escreva:
lsblk df -h /O primeiro comando mostra o disco (
xvdaounvme0n1) já com o tamanho novo, e por baixo a sua partição (xvda1ounvme0n1p1) ainda com o tamanho antigo. O segundo mostra quanto espaço o sistema vê: o antigo. Anote os nomes exatos do disco e da partição.Aumente a partição
sudo growpart /dev/xvda 1Atenção à sintaxe: o disco, um espaço e o número da partição. Com discos NVMe seria
sudo growpart /dev/nvme0n1 1. Se disser quegrowpartnão existe, instale-o (sudo apt install cloud-guest-utilsno Ubuntu/Debian). Volte a executarlsblk: a partição já ocupa todo o disco.Aumente o sistema de ficheiros
Depende do tipo, que
df -T /lhe diz. Se for ext4 (Ubuntu, Debian):sudo resize2fs /dev/xvda1Se for xfs (Amazon Linux, Red Hat):
sudo xfs_growfs -d /Ambos funcionam com o disco em uso, sem reiniciar. Confirme com
df -h /: agora o sistema vê o tamanho novo.Se o disco não for o raiz
Para um disco de dados adicional, os passos 4 e 5 são iguais mudando o nome do dispositivo. Se o disco não tem partição (formatou-o diretamente sobre
/dev/xvdf), salte ogrowparte execute diretamenteresize2fs /dev/xvdfouxfs_growfssobre o seu ponto de montagem.
O que pode correr mal
O growpart diz "NOCHANGE"
Ou a partição já ocupa todo o disco (vá ao passo 5), ou o sistema ainda não viu o tamanho novo do disco. Espere um minuto, repita lsblk e, se continuar sem o ver, reinicie a máquina.
Não tenho espaço nem para executar os comandos
Com o disco a 100 % alguns comandos falham. Liberte uns megas apagando registos antigos (sudo journalctl --vacuum-size=50M) ou a cache de pacotes (sudo apt clean) e tente de novo.
Enganei-me e pus um tamanho enorme
Não se pode encolher. A única saída é criar uma máquina nova com um disco menor e migrar os dados. Se o excesso for suportável, deixe-o e aprenda para a próxima: ponha o que precisar para um ano.
Quero aumentar outra vez e não me deixa
Há que esperar seis horas desde a última modificação do volume. É uma limitação da AWS.
No Simplio
No Simplio cada máquina mostra a ocupação do seu disco e avisa-o por e-mail quando passa dos 85 %, antes de o site deixar de funcionar. Aumentá-lo é um botão: escolhe o tamanho novo, o Simplio faz um instantâneo prévio, modifica o volume na AWS e executa na máquina os comandos para que o sistema use o espaço, e mostra-lhe o resultado. Sem terminal.
O mesmo, na AWS e no Simplio
| Na consola da AWS | No Simplio | |
|---|---|---|
| Aumentar o disco | Consola do EC2, Volumes, Modify, SSH, lsblk, growpart, resize2fs: 7 passos e um terminal | Botão "Aumentar disco" na máquina: escolhe o tamanho e o Simplio faz a parte da AWS e a de dentro |
| Saber que se está a encher | Nada avisa até algo falhar | Aviso por e-mail aos 85 % de ocupação |
| Instantâneo prévio | Lembrar-se | Faz-se sozinho antes de aumentar |