Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I reduce my EBS volume capacity without losing data? [closed]

Tags:

amazon-ec2

I would like to reduce EBS volume capacity without losing data.

I would like to change the capacity from 1 TB to 200 GB.

Please provide detailed steps on how to do it.

like image 558
Sreenivasula Reddy Avatar asked Nov 25 '13 09:11

Sreenivasula Reddy


People also ask

Can you downsize an EBS volume?

The answer is NO. It is impossible to decrease EBS volume size. When you have 100GB EBS and you decide to modify it into 30GB you will get error : The size of a volume can only be increased, not decreased .

How can I reduce my EBS usage?

As discussed earlier, removing unattached volumes is one way to reduce EBS costs. For all the EBS volumes provisioned, the read-write access volumes of the blocks should be monitored periodically. If the throughput is low, then the EBS blocks should be downgraded to reduce EBS costs.

Can we change EBS volume type without downtime?

With Elastic Volumes, you can dynamically increase the size, increase or decrease the performance, and change the volume type of your Amazon EBS volumes without detaching them.

What happens when you delete an EBS volume?

You can delete an Amazon EBS volume that you no longer need. After deletion, its data is gone and the volume can't be attached to any instance. So before deletion, you can store a snapshot of the volume, which you can use to re-create the volume later.


1 Answers

The approach I take to decreasing an EBS root volume is as follows:

Stop (not terminate) the target instance, and detach the root EBS volume. Alternatively, you can snapshot the root volume (or use an existing snapshot) and create a new EBS volume from that. (e.g. /dev/xvda1)

Note: the volume you use from the step above will be altered - so you may want to take a snapshot if you didn't already.

Create a new EBS volume that is the desired size (e.g. /dev/xvdg)

Launch an instance, and attach both EBS volumes to it

Check the file system (of the original root volume): (e.g.) e2fsck -f /dev/xvda1

Maximally shrink the original root volume: (e.g. ext2/3/4) resize2fs -M -p /dev/xvda1

Copy the data over with dd:
    Choose a chunk size (I like 16MB)

    Calculate the number of chunks (using the number of blocks from the resize2fs output): blocks*4/(chunk_size_in_mb*1024) - round up a bit for safety

    Copy the data: (e.g.) dd if=/dev/xvda1 ibs=16M of=/dev/xvdg obs=16M count=80

Resize the filesystem on the new (smaller) EBS volume: (e.g.) resize2fs -p /dev/xvdg

Check the file system (of the new volume): (e.g.) e2fsck -f /dev/xvdg

Detach your new EBS root volume, and attach it to your original instance
like image 85
ezhilrean Avatar answered Oct 13 '22 20:10

ezhilrean