Questo script Bash serve per espandere automaticamente la partizione /dev/sda3 fino a occupare tutto lo spazio disponibile sul disco fisico. Funziona anche se la partizione è montata come root (/), sfruttando le capacità di resize online del filesystem ext4.
DEVICE="/dev/sda"
PART_NUM="3"
PART="${DEVICE}${PART_NUM}"
Imposta le variabili:
DEVICE: il disco (/dev/sda)
PART_NUM: il numero della partizione (3)
PART: la partizione completa (/dev/sda3)
command -v parted >/dev/null || { echo "Errore: manca parted"; exit 1; }
command -v resize2fs >/dev/null || { echo "Errore: manca resize2fs"; exit 1; }
command -v findmnt >/dev/null || { echo "Errore: manca findmnt"; exit 1; }
Verifica la presenza dei comandi richiesti:
parted: per ridimensionare la partizione
resize2fs: per ridimensionare il filesystem ext4
findmnt: per controllare se la partizione è montata
Se uno manca, lo script esce con errore.
MOUNTPOINT=$(findmnt -n -o TARGET "$PART" || true)
Trova il punto di mount della partizione (se esiste). Se è montata, lo salva in MOUNTPOINT.
if [ -n "$MOUNTPOINT" ]; then
...
fi
Se la partizione è montata:
Se non è la root (/), lo script esce con errore per evitare danni.
Se è la root (/), lo script prosegue sfruttando il fatto che resize2fs supporta l'espansione live del filesystem montato come root.
parted "$DEVICE" ---pretend-input-tty <<EOF
resizepart $PART_NUM 100%
Yes
quit
EOF
Utilizza parted in modalità interattiva per espandere la partizione $PART_NUM fino al 100% dello spazio disponibile.
partprobe "$DEVICE" || true
sleep 2
Tenta di forzare il kernel a rileggere la tabella delle partizioni modificata. Attende 2 secondi per sicurezza.
A seconda che la partizione sia montata o meno:
Non montata:
e2fsck -f "$PART"
resize2fs "$PART"
Viene eseguito un controllo forzato (fsck) e poi il resize.
Montata (root):
resize2fs "$PART"
Ridimensiona il filesystem senza smontare grazie al supporto ext4.
echo "[✓] Completato. La partizione e il filesystem sono stati espansi."
Messaggio finale di completamento.
Funziona solo con filesystem ext4, che supporta il resize online.
Si assume che /dev/sda3 sia l’ultima partizione sul disco (per potersi espandere).
Non funziona se /dev/sda3 è montata su un punto diverso da /.
È richiesto essere root per eseguire lo script (o usare sudo).
È idempotente: se il filesystem è già grande, resize2fs non fa danni.