I recently moved a client’s database from S3-backed storage to an EBS volume. The client’s database had a heavy read/write load on it, so they wanted to know how much additonal costs would be incurred by the move to EBS.
Currently, Amazon prices EBS volumes as:
$0.10 per GB-month of provisioned storage
$0.10 per 1 million I/O requests
So let’s say the database takes up 100 GB of space. That will cost them only $10 a month.
But how do you figure out the costs of the I/O requests? Turns out it’s not too difficult on Linux.
First, view your disk stats and find the drive which your database current resides on (in this example, it will be on sdh):
sdh 123241141 1835 8055865321 1587962870 996307889 722821165 23591028861 1809891504 1 1720770520 3397713604
To get the total number of read and writes on the disk, add the first and fifth numbers together.
So in this example, we add 123241141 + 996307889 to get the total read/writes.
Next, we’ll need to know how many days the system has been up for:
10:00:0 up 100 days, 20:11, 1 user, load average: 0.50, 0.50, 0.50
Now the formula to estimate your EBS I/O costs will be:
Cost = [$0.10 * 30 days * ((first number) + (fifth number) / (days of uptime))] / 1 Million IO Requests
So from our example, the calculation will be:
0.10 * 30 * [(123241141 + 996307889) / 100] = 33586470.9
33586470.9 / 1 Million IO Requests = 33.5864709
So our monthly EBS IO request cost wil be approximately $33.58 when the database is moved to EBS!
Credit goes to Brian Ghidinelli for figuring this out!