Skip to content

How to right-size EBS volume types and provisioning

Most EBS volumes are provisioned for a workload someone imagined, not the workload that actually runs: io1 volumes doing a few hundred IOPS, gp3 volumes with paid-for throughput nobody uses, busy-looking volumes that have been idle for months. CloudPouch’s EBS Volume Type Advisor (since v1.48.0) compares each attached volume’s provisioned performance against 14 days of real CloudWatch usage and names the cheapest volume type and provisioning that still fits — with the estimated monthly difference per volume.

EBS bills on three independent dimensions: storage capacity (per GB-month), provisioned IOPS, and provisioned throughput. Each dimension is charged whether the workload uses it or not, and each volume type prices them differently — io1/io2 charge premium rates for guaranteed IOPS, gp3 includes a 3,000 IOPS / 125 MiB/s baseline, and the HDD types (st1, sc1) trade random-access performance for the lowest per-GB price. Choosing a type is a bet on the workload; the bet is rarely revisited after launch, so accounts accumulate volumes paying for performance that two weeks of metrics prove they never use.

The most expensive version of this mistake is the idle volume: storage capacity, not IOPS, is usually the largest line on an EBS bill, and an idle volume needs neither performance nor fast storage. One release-note example (v1.48.1): a 2,580 GiB GP3 volume sitting idle but provisioned for 6,450 IOPS and 250 MiB/s cost about $228/month; on Cold HDD (sc1) it costs about $38/month — roughly $190/month saved on a single volume.

  1. Open CloudPouch and select your AWS profile.
  2. Choose Current Month or Previous Month.
  3. Go to EC2 - Other — AWS books EBS charges here, not under a service called “EBS” — and click Check Cost Insights.
  4. Open the EBS volume optimization results.

Each recommendation row shows the volume, its attached EC2 instance, observed IOPS and throughput (max and average) from CloudWatch, the recommended type and provisioning, and the current cost broken into storage, provisioned IOPS, and provisioned throughput.

Work through them in order of confidence:

  • Idle volumes recommended sc1/st1. A volume whose 14-day peak stays at or below 50 IOPS is treated as effectively idle and offered the cheapest storage tier. These are the largest per-volume savings. Before converting, confirm the volume isn’t about to become busy again (end of quarter, yearly batch jobs) — 14 days of quiet doesn’t prove a year of quiet.
  • GP2-to-GP3 conversions. Recommended even before CloudWatch data is available, because gp3 costs less per GB and can be configured to match gp2’s guaranteed performance. See the GP2-to-GP3 migration guide for the mechanics and a real $18,890/month case.
  • Within-type provisioning trims. Lowering provisioned IOPS or throughput on gp3/io1/io2 without changing type — low risk, since the type’s behavior stays identical.
  • Legacy Magnetic (standard) volumes. Flagged for migration to a modern type.

Two safeguards worth knowing: CloudPouch keeps HDD recommendations away from active low-throughput volumes, where random small-I/O latency matters, and it distinguishes a genuinely idle volume from one whose CloudWatch metrics simply couldn’t be fetched — so a permissions gap doesn’t masquerade as an idle workload.

  • Volume type changes use EBS Elastic Volumes and run while the instance keeps working, but a volume can only be modified once every several hours — plan the order of changes rather than iterating.
  • HDD types have different latency characteristics; keep them away from boot volumes and latency-sensitive workloads even when IOPS counts look low.
  • Volumes managed by infrastructure-as-code will be recreated with the old type on the next deployment unless the template changes too.
  • Verify current prices for your regions on the EBS pricing page before quoting savings to your team.

The advisor reads EC2 volume metadata and CloudWatch metrics, plus cost data for the savings estimates. See AWS permissions.