Come posso aumentare la dimensione della partizione root di un sistema in fase di esecuzione?
Ho una partizione che non è allocata dopo la partizione root (che è anche ext4), come posso aggiungere questo spazio non allocato allo spazio allocato alla partizione root senza dover spegnere il server?
GUI (Ubuntu 14.04 e successivi): GParted v0.17 e successivi forniscono una bella interfaccia grafica per questo. (Le versioni precedenti si rifiuteranno di ridimensionare una partizione montata).
Linea di comando (qualsiasi versione di Ubuntu): Ci sono tre passi per questo.
Passo 1. La partizione deve prima essere ridimensionata. Se state usando LVM, è facile, e presumibilmente sapete come procedere. Se state usando partizioni classiche, è un po' più complicato, e può richiedere un riavvio (anche se non dovrete mai avviare un altro sistema o un CD live).
Ecco come faccio io: Usate fdisk
per cancellare prima la partizione (l'idea è che i dati sul disco saranno conservati), poi ricreatela con cura con una dimensione maggiore nella stessa posizione.
Esempio:
$ sudo fdisk /dev/sda
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 9437183 4717568 83 Linux
Command (m for help): d
Selected partition 1
Command (m for help): p
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 2048 10485759 5241856 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
Di nuovo, è fondamentale che la nuova partizione inizi dallo stesso blocco della vecchia. Anche l'Id dovrebbe corrispondere (83 per i sistemi Linux). Siate pronti a perdere tutti i vostri dati al minimo errore di battitura.
Per andare sul sicuro, potete anche ripristinare il flag di avvio (che secondo Wikipedia è ancora richiesto su alcuni computer) premendo a
.
Vedi la sezione dei commenti per cosa fare se la tua partizione di swap è d'intralcio.
A questo punto dovrebbe essere chiaro perché la gente raccomanda di usare un CD live ;-)
Passo 2.
Come fdisk
vi ricorda con aiuto, dovete ricaricare la tabella delle partizioni prima di procedere. Il modo più sicuro è semplicemente riavviare; ma si può anche usare partprobe
o kpartx
(maggiori informazioni).
Passo 3.
Una volta che la partizione è ridimensionata e la tabella delle partizioni ricaricata, è una semplice questione di eseguire resize2fs
sul file system, e si può fare questo anche quando è montato come partizione root.
Esempio:
$ sudo resize2fs /dev/sda1
È possibile fare un ridimensionamento on-line di un filesystem ext4, anche se è la vostra partizione root. Usate il comando resize2fs
.
sudo resize2fs /dev/sda1
EDIT: Il ridimensionamento in linea non è permesso:
root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported
Potresti anche fare uso di GParted - finché la partizione che stai ridimensionando non è quella da cui hai fatto il boot - altrimenti suggerisco l'opzione live CD è un po' più facile per i principianti.
GParted fondamentalmente fa tutti i passi - solo basandosi su una GUI frontale.