How to extend an ext4 partition and filesystem?
Solution 1:
You must begin with the partition unmounted. If you can't unmount it (e.g. it's your root partition or something else the system needs to run), use something like System Rescue CD instead.
Run
parted
, orgparted
if you prefer a GUI, and resize the partition to use the extra space. I prefergparted
as it gives you a nice graphical representation, very similar to the one you've drawn in your question.resize2fs /dev/whatever
e2fsck /dev/whatever
(just to find out whether you are on the safe side)Remount your partition.
While I've never seen this fail, do back up your data first!
Solution 2:
Yes, you can grow EXT4 fs online if you have partition already sorted. Have you got partition sorted? Have you got LVM?
sudo resize2fs /dev/drive_to_grow
fdisk
will resize your partition, true, but if this a root partition (or if fact any mounted partition) it will have to be unmounted first. So offline most likely!
As with anything related to disk/fs operations I strongly recommend to have backup, and tested, well understood, recovery process.
Solution 3:
Note, on some VDS servers you could have non-primary root partition and need to resize Extended partition container first
For example, you've just upgraded your plan and have something like:
Disk /dev/vda: 83886080s
Number Start End Size Type File system Flags
1 2048s 194559s 192512s primary ext2 boot
2 196606s 51197951s 51001346s extended
5 196608s 51197951s 51001344s logical ext4
Here /dev/vda2 - is your Extended container. And /dev/vda5 - main partition that we need to resize to full available space.
The simpliest way:
apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space
Solution 4:
Parted doesn't work on ext4 on Centos. I had to use fdisk to delete and recreate the partition, which (I validated) works without losing data. I followed the steps at http://geekpeek.net/resize-filesystem-fdisk-resize2fs/. Here they are, in a nutshell:
$ sudo fdisk /dev/sdx
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w
Solution 5:
Using growpart
and resize2fs
example:
$ growpart /dev/sda 1
CHANGED: partition=1 start=2048 old: size=39999455 end=40001503 new: size=80000991,end=80003039
$ resize2fs /dev/sda1
resize2fs 1.45.4 (23-Sep-2019)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 5
The filesystem on /dev/sda1 is now 10000123 (4k) blocks long.