EC2 Storage attached at sda is /dev/xvde1 cannot resize

Before resizing the filesystem by "resize2fs" command you should first resize your partition:

let's list block devices attached to our box:

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   8G  0 part /

As you can see /dev/xvda1 is only 8 GiB partition on a 16 GiB device and there are no other partitions on the volume.


step-1) We will use "growpart" to resize 8G partition up to 16G:
# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1

Let's check the result (you can see /dev/xvda1 is now 16G):

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0  16G  0 part /

Lots of SO answers suggest to use fdisk with delete / recreate partitions, which is nasty, risky, error-prone process especially when we change boot drive.


step-2) resize file system to grow all the way to fully use new partition space
# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /

And by the way, there's no need to stop instance and detach EBS volume to resize it anymore! 13-Feb-2017 Amazon announced: "Amazon EBS Update – New Elastic Volumes Change Everything" See my other SO answer for details.

Update: Use sudo xfs_growfs /dev/xvda1 instead of resize2fs when XFS filesystem


This answer is dangerous, hasn't been verified since 2016, and has the potential to delete your partition if you're not aware of what's happening. Use with caution, and please reference @Dmitry's answer below as well.

To expand on JD's answer, here's exactly what to do:

df -h #print the name of your boot partition

lsblk #show info on all your block devices

You'll see from that output what the name of the disk is of your root partition. For example, you probably see something like this:

xvde                               202:64   0   32G  0 disk 
└─xvde1                            202:65   0   8G  0 part /

Our goal is to make xvde1 use the whole available space from xvde. Here's how to resize your partition:

fdisk /dev/xvda (the disk name, not your partition) This enters into the fdisk utility.

  1. u #Change the display to sectors
  2. p #Print info
  3. d #Delete the partition
  4. n #New partition
  5. p #Primary partition
  6. 1 #Partition number
  7. 2048 #First sector
  8. Press Enter to accept the default
  9. p #Print info
  10. a #Toggle the bootable flag
  11. 1 #Select partition 1
  12. w #Write table to disk and exit

Now, reboot your instance: reboot

After it comes back do:

resize2fs /dev/xvde1 (the name of your partition, not the block device)

And finally verify the new disk size: df -h


After searching and searching with no answer here, i FINALLY came across the answer!

"fdisk, put it into 'units' mode by typing 'u' then 'p' to print the partition table as it is now and write down the starting sector of the existing partition. Then delete that partition and make a new one, with the same partition number and starting on exactly the same sector and ending at the end of the disk, make sure that partition is 'active' then save your changes and reboot. Once you reboot after that, you should be able to resize2fs the existing filesystem to take up all space. Backups are recommended and it's your data to lose!!"

Putting it into sectors via Units mode helped me select the proper start and end of the FS!!

Credit: https://www.centos.org/forums/viewtopic.php?t=4783