In EC2 il disco non è legato alla dimensione della macchina: si può ingrandire quando vuoi, anche con la macchina accesa, senza reinstallare né spostare nulla. Sono due parti: dire ad AWS che il disco è più grande, e dire al sistema operativo all'interno di sfruttarlo. La prima è un clic; la seconda, due comandi che spaventano la prima volta e poi si fanno a memoria.
L'unica cosa che non si può fare è ridurre: un disco può solo crescere. Quindi amplia con giudizio.
Prima di iniziare: cosa significa ogni cosa
- EBS
- Il servizio dei dischi di EC2. Ogni disco si chiama volume.
- Volume root
- Il disco in cui è installato il sistema. È quello che di solito si riempie.
- Partizione
- Una suddivisione all'interno del disco. Quando ingrandisci il disco, la partizione resta della dimensione vecchia finché non la ampli.
- File system
- Il modo in cui il sistema organizza i dati dentro la partizione (ext4 o xfs su Linux). Anche questo va ampliato.
- gp3
- Il tipo di disco normale di EBS. Se il tuo disco è del tipo vecchio (gp2), puoi passarlo a gp3 nello stesso passo e di solito costa meno.
- Istantanea
- Una copia del disco. Conviene farne una prima di toccare il disco, per sicurezza.
Passo dopo passo
Fai prima un'istantanea
Console EC2, menu Volumi, seleziona il disco della macchina (la colonna "Collegato a" dice qual è), Azioni, Crea snapshot. È la rete di sicurezza; in pratica il processo è sicuro, ma gratis non costa nulla... be', qualche centesimo di archiviazione.
Amplia il volume dalla console
Con il volume selezionato, Azioni, Modifica volume. Imposta la nuova dimensione in GB (per esempio da 20 a 40) e, se il tipo è gp2, approfittane per passarlo a gp3. Modifica. Lo stato del volume passa a "modifying" e poi a "optimizing"; non serve aspettare che finisca l'ottimizzazione per proseguire: appena la nuova dimensione compare nell'elenco puoi già continuare. Tieni presente che AWS consente di modificare un volume solo una volta ogni sei ore.
Guarda com'è il disco dall'interno
Collegati via SSH alla macchina e scrivi:
lsblk df -h /Il primo comando mostra il disco (
xvdaonvme0n1) già con la nuova dimensione, e sotto la sua partizione (xvda1onvme0n1p1) ancora con la dimensione vecchia. Il secondo mostra quanto spazio vede il sistema: quello vecchio. Annota i nomi esatti di disco e partizione.Amplia la partizione
sudo growpart /dev/xvda 1Attenzione alla sintassi: il disco, uno spazio e il numero della partizione. Con dischi NVMe sarebbe
sudo growpart /dev/nvme0n1 1. Se dice chegrowpartnon esiste, installalo (sudo apt install cloud-guest-utilssu Ubuntu/Debian). Esegui di nuovolsblk: la partizione ora occupa tutto il disco.Amplia il file system
Dipende dal tipo, che ti dice
df -T /. Se è ext4 (Ubuntu, Debian):sudo resize2fs /dev/xvda1Se è xfs (Amazon Linux, Red Hat):
sudo xfs_growfs -d /Entrambi funzionano con il disco in uso, senza riavviare. Verifica con
df -h /: ora il sistema vede la nuova dimensione.Se il disco non è quello root
Per un disco dati aggiuntivo, i passi 4 e 5 sono uguali cambiando il nome del dispositivo. Se il disco non ha partizione (l'hai formattato direttamente su
/dev/xvdf), saltagrowparted esegui direttamenteresize2fs /dev/xvdfoxfs_growfssul suo punto di montaggio.
Cosa può andare storto
growpart dice "NOCHANGE"
O la partizione occupa già tutto il disco (vai al passo 5), o il sistema non ha ancora visto la nuova dimensione del disco. Aspetta un minuto, ripeti lsblk e, se continua a non vederla, riavvia la macchina.
Non ho spazio nemmeno per eseguire i comandi
Con il disco al 100 % alcuni comandi falliscono. Libera qualche mega eliminando log vecchi (sudo journalctl --vacuum-size=50M) o la cache dei pacchetti (sudo apt clean) e riprova.
Ho sbagliato e ho impostato una dimensione enorme
Non si può ridurre. L'unica via d'uscita è creare una macchina nuova con un disco più piccolo e migrare i dati. Se l'eccesso è sostenibile, lascialo e impara per la prossima volta: metti quello che ti serve per un anno.
Voglio ampliare di nuovo e non me lo permette
Bisogna aspettare sei ore dall'ultima modifica del volume. È una limitazione di AWS.
In Simplio
In Simplio ogni macchina mostra l'occupazione del suo disco e ti avvisa via email quando supera l'85 %, prima che il sito smetta di funzionare. Ampliarlo è un pulsante: scegli la nuova dimensione, Simplio fa un'istantanea preventiva, modifica il volume in AWS ed esegue sulla macchina i comandi perché il sistema usi lo spazio, e ti mostra il risultato. Senza terminale.
La stessa cosa, in AWS e in Simplio
| Nella console di AWS | In Simplio | |
|---|---|---|
| Ingrandire il disco | Console EC2, Volumi, Modifica, SSH, lsblk, growpart, resize2fs: 7 passi e un terminale | Pulsante "Amplia disco" sulla macchina: scegli la dimensione e Simplio fa la parte di AWS e quella interna |
| Accorgerti che si riempie | Niente avvisa finché qualcosa non si rompe | Avviso via email all'85 % di occupazione |
| Istantanea preventiva | Ricordarsene | Si fa da sola prima di ampliare |