Deep Dive
Volume Types (SSD Volumes)
General Purpose SSD | Provisioned IOPS SSD | ||||
Volume type | gp3 | gp2 | io2 Block Express | io2 | io1 |
Costs | $0.08/GB-month $0.005/provisioned IOPS-month over 3,000 $0.04/provisioned MB/s-month over 125 | $0.10 per GB-month of provisioned storage | Io2 pricing | $0.125/GB-month $0.065/provisioned IOPS-month up to 32,000 IOPS $0.046/provisioned IOPS-month from 32,001 to 64,000 IOPS $0.032/provisioned IOPS-month for greater than 64,000 IOPS | $0.125 per GB-month of provisioned storage $0.065 per provisioned IOPS-month |
Use cases |
| Workloads that require:
|
| ||
Max IOPS per volume (16 KiB I/O) | 16,000 | 256,000 | 64,000 | ||
Max throughput per volume | 1,000 MiB/s | 250 MiB/s | 4,000 MiB/s | 1,000 MiB/s |
Depending on the volume type, EBS charges you based on storage, IO, and throughput provisioned.
We observed some common runaway costs across our deployments and in the industry.
Unattached/phantom EBS volumes
For all auto scaling EC2 machines and one-off test instances, Delete Volumes on Termination should be enabled. For dedicated instances (app servers, dbs, web servers with custom configuration), if you need their data, use snapshots. All unattached volumes should be manually deleted. Gp3 volumes will cost 960$/TB/yr. For all non-HDD volumes (gp2/3, io1/2), snapshots are cheaper by over 40%.
Older/Incorrect volume type
Use the latest volume types offered by AWS. They have similar or better price-to-performance than previous versions. Based on our calculations, the flowchart below is how they should be typed. If you have higher throughput requirements for gp3, provision them. It is cheaper (averaged over volume size per GB) to have provisioned throughput compared to the extra 125 MB/s you may get from gp2 post 334 GB volume size. Don’t use IO types for very low IO nos. Gp3 volumes offer similar or better performance than gp2 for 20% lower cost.
In the past, folks have had to provision excess volume to get the higher throughputs. With gp3, we don’t need to do that anymore. We can provision higher throughputs (up to 1000 MB/s) at low capacities. Cloudfix can automate their resizing with limited or no downtime. Manual resizing (considering that this is size reduction) is complex and out of scope for this blog.
- Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.
- Choose Volumes, select the volume to modify, and then choose Actions > Modify Volume.
- The Modify Volume window displays the volume ID and the volume’s current configuration, including type, size, IOPS, and throughput. Set new configuration values as follows:
- To modify the type, choose a value for Volume Type.
- To modify the IOPS (if the volume type is gp3, io1, or io2), enter a new value for IOPS.
- To modify the throughput (if the volume type is gp3), enter a new value for Throughput.
- After you have finished changing the volume settings, choose Modify. When prompted for confirmation, choose Yes.
While the savings aren’t great per volume, they add up really quickly and more so in larger deployments. You should either automate the steps or you can use CloudFix to find the volumes that fit these criteria and automatically modify them. Feel free to get in touch!
References
- Amazon EBS volume types – Amazon Elastic Compute Cloud. (n.d.). Amazon Web Services. Retrieved October 27, 2021. Read more
- High-Performance Block Storage– Amazon EBS Pricing – Amazon Web Services. (n.d.). Amazon Web Services, Inc. Retrieved October 27, 2021. Read more
- Request modifications to your EBS volumes – Amazon Elastic Compute Cloud. (n.d.). Amazon Web Services. Retrieved October 27, 2021. Read more