Enlarge ext4 partition on linux while system keeps running
Why?
On my own Linux web server I often have the “problem” that the data partition becomes too small. Databases and log files grow with the websites. And one is too stingy to order a generously dimensioned volume for one’s server 😉 .
Therefore, it often happens that the monitoring reports an almost full partition and I then have to act so that the server does not stop at some point. I don’t want to shut down or restart the server.
Translated with www.DeepL.com/Translator (free version)
How?
Fortunately, this is quite easy with an ext4 formatted partition under Linux. Here are the steps
- First, of course, you have to physically enlarge the volume. Fortunately, this can be done with 2 clicks with my cloud provider gridscale.
- Then open the parted programme on the affected volume, e.g. with
parted /dev/sda
(if parted is not installed, you have to do this according to your distribution, e.g. withapt install parted
oryum install parted
orapk add parted
). - Now let parted print the information about the current partitions and the volume with the command
print
- Continue with the parted command
resizepart [number of the partition to be resized]
. After Enter, parted warns you that the partition is currently being used, but you can ignore this.
NOTE: If you have several partitions on this volume and the partition to be resized is not the last partition, it may not be so easy. If there is only a swap partition or other unimportant partition behind the partition, you can of course simply delete it and restore it at the end. For more complicated cases, I recommend this article: https://codesilence.wordpress.com/2013/03/14/live-resizing-of-an-ext4-filesytem-on-linux/ - parted now asks where the end of the partition should go. Ideally, this is the size of the entire volume (displayed in the
print
command). If you have deleted a swap partition before, you have to subtract the space needed for the swap and then create the swap partition again. - With Enter the partition is resized and you can quit parted with
quit
. - But the partition is still not really grown – as e.g. a
df -H
shows, at least Linux has not noticed that yet. Finally, the commandresize2fs /dev/sda1
(where instead of “/dev/sda1” you have to enter your volume (here “/dev/sda” for the first SATA drive) + the partition number starting at 1 (here “1”)) will help. - After this command, a
df -H
should now show you the enlarged partition and the server should continue to run as if nothing had happened.
Translated with www.DeepL.com/Translator (free version)