How can I increase the size of the root partition of a system at runtime?
I have a partition that is not allocated after the root partition (which is also ext4), how can I add that unallocated space to the space allocated to the root partition without having to shutdown the server?
Best Answer
GUI (Ubuntu 14.04 and later): GParted v0.17 and later provide a nice GUI for this. (Older versions will refuse to resize a mounted partition).
Command line (any Ubuntu version): There are three steps to this.
Step 1. The partition must first be resized. If you're using LVM, it's easy, and you presumably know how to proceed. If you're using classic partitions, it's a bit more complicated, and may require a reboot (though you never have to boot another system or live CD).
This is how I do it: Use
fdisk
to first delete the partition (the idea is that the data on disk will be preserved), then carefully recreate it with a larger size at the same position.Example:
Again, it is critical that the new partition starts at the same block as the old. The Id should also match (83 for Linux systems). Be prepared to lose all your data at the slightest typo.
To be on the safe side, you may also restore the boot flag (which according to Wikipedia is still required on some computers) by pressing
a
.See the comment section for what to do if your swap partition is in the way.
By now it should be apparent why people recommend using a live CD. ;-)
Step 2. As
fdisk
helpfully reminds you, you must reload the partition table before proceeding. The safest way is to simply reboot; but you can also usepartprobe
orkpartx
(more information).Step 3. Once the partition is resized and the partition table reloaded, it's a simple matter of running
resize2fs
on the file system, and you can do this even when it's mounted as the root partition.Example: