Some years ago I create a new instance in EC2 with the minimal configuration needed. The disk size of the root device and partition is set to 8 GB. Today I am reaching the limit of the disk size and need more space. Having the server in the cloud allows me to “simply” increase the size without having to buy a new HDD.
To increase the size of an EBS volume, you need to execute three tasks:
- Take snapshot
- Resize volume
- Resize file system
The commands to resize partition and file system are (gp2, ext4, t2):
sudo growpart /dev/xvda 1 sudo resize2fs /dev/xvda1
Before starting, create a snapshot of the volume. See my blog on how to do this.
You can use the EC2 console or CLI to extend a volume. I’ll use EC2 console. The volume used as root device for my EC2 instance is based on Elastic Block Store (EBS) and type gp2. This step is very easy to do, as you inform AWS that you need more storage and you get more storage assigned. You won’t be able to make use of that new storage as long as the file system isn’t resized.
Go to EBS > Volumes
A list of volumes is shown. Find the correct one using the volume ID. The root volume of my instance has 8GB size and type gp2.
To modify the volume, select the volume and then click on Actions > Modify Volume
The current configuration of the volume is shown. Last chance to verify you are changing the right volume.
I’ll only modify the size of the volume. From 8GB to 20 GB.
Confirm the change. Click on Yes.
In case AWS was able to assign more storage to your volume, a confirmation message is shown.
The size of the volume is now shown as 20 GB in the volume table.
Resize file system
Assigning more storage to the volume is one step. To make use of the new disk space, the partition and filesystem must be resized. To see the available partition:
sudo file -s /dev/xvd*
The size of the volume is adjusted. The partition on the disk must be resized to make use of that space. To see the size of the disk and partition:
The available space is 20G in total, with the partition xvda1 taking 8G only. Increase size of partition
sudo growpart /dev/xvda 1
The check if the partition was resized, run lsblk again. The partition xvda1 should now be 20G large.
Resize file system
Resizing the EBS volume and partition is not resizing the file system. The file system still thinks it only has 8GB available.
To change size, the file system must be resized. My root file system is using EXT4 (see output above), therefore I can use resize2fs to adjust it.
sudo resize2fs /dev/xvda1
After resize2fs finishes, the file system can now use the new 20G of the EBS volume.