Debian – How to Expand ext4 Partition Size Using Command-Line

command linedebianfilesystemspartition

I have a drive with this configuration:

fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000f1b8b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2612    20971520   83  Linux
/dev/sda3           60736       60801      525312   82  Linux swap / Solaris

There is 478GB unallocated space, how would I go about adding this space to /dev/sda1 without losing the data that is currently on /dev/sda1? (the filesystem is ext4).

NOTE: it is a server with only SSH, no GUI for running stuff like gparted.

Best Answer

Enlarge the partition: fdisk -u /dev/sda.

p to print the partition table, take note of the number, start, end, type of sda1.

Delete it: d:

Recreate it with same number (1), start and type but with a bigger end (taking care not to overlap with other partitions). Try to align things on a megabyte boundary that is for end, make it a multiple of 2048 minus 1. Change the type if needed with t (for partitions holding an extX or btrfs filesystem, the default of 83 is fine).

Then w to write and q to quit.

The partition table will have been modified but the kernel will not be able to take that into account as some partitions are mounted.

However, if in-use partitions were only enlarged, you should be able to force the kernel to take the new layout with:

partx /dev/sda

If that fails, you'll need to reboot. The system should boot just fine.

Then, resize the filesystem so it spreads to the extent of the enlarged partition:

resize2fs /dev/sda1

Which for ext4 will work just fine even on a live FS.

Related Question