Documentation
EBS Optimization
Jetscale provides AI-powered cost optimization for Amazon EBS volumes. Our specialized agents analyze your storage workloads to identify volume type optimization,...
Jetscale provides AI-powered cost optimization for Amazon EBS (Elastic Block Store) volumes. Our specialized agents analyze your storage workloads to identify volume type optimization, IOPS/throughput tuning, and unused volume cleanup opportunities.
Overview
Jetscale optimizes EBS volumes by analyzing:
- Volume utilization: IOPS and throughput usage patterns
- Volume type efficiency: Cost-effectiveness of current volume type
- Attachment status: Identify unused, unattached volumes
- Cost analysis: Current spending vs. optimal configuration
Supported EBS Types
EBS Volumes
Jetscale optimizes EBS volumes attached to EC2 instances or unattached volumes in your account.
What We Optimize:
- Volume type migration: gp2 → gp3 (20% cost savings), io1 → io2 (better durability)
- IOPS optimization: Right-size provisioned IOPS based on actual usage
- Throughput optimization: Adjust gp3 throughput to match actual needs
- Delete unattached volumes: Remove unused volumes for 100% savings
Supported Volume Types:
- gp3 (General Purpose SSD) - Latest generation, best value
- gp2 (General Purpose SSD) - Previous generation
- io2 (Provisioned IOPS SSD) - High performance, 99.999% durability
- io1 (Provisioned IOPS SSD) - Older generation
- st1 (Throughput Optimized HDD) - Low-cost, throughput-intensive
- sc1 (Cold HDD) - Lowest cost, infrequent access
EBS Volume Types
General Purpose SSD (gp3)
Best for: Most workloads
- Baseline performance: 3,000 IOPS, 125 MB/s throughput
- Scalable: Up to 16,000 IOPS, 1,000 MB/s throughput
- Pricing: Pay for storage + optional additional IOPS/throughput
- Cost advantage: ~20% cheaper than gp2 for equivalent performance
Use cases:
- Boot volumes
- Virtual desktops
- Development and test environments
- Low-latency interactive applications
General Purpose SSD (gp2)
Legacy volume type
- Performance: 3 IOPS per GB (minimum 100 IOPS, maximum 16,000 IOPS)
- Burst: Can burst to 3,000 IOPS using burst credits
- Migration recommended: Almost always better to migrate to gp3
Why migrate to gp3:
- 20% cost savings on storage
- Customize IOPS independently of size
- No burst credit management needed
Provisioned IOPS SSD (io2)
Best for: Mission-critical, I/O-intensive workloads
- Performance: Up to 64,000 IOPS (256,000 with Block Express)
- Durability: 99.999% (vs. 99.8-99.9% for gp3)
- Latency: Sub-millisecond latency
- Pricing: Pay for storage + provisioned IOPS
Use cases:
- Large relational databases (Oracle, SAP HANA)
- Mission-critical applications requiring highest durability
- Applications needing sustained IOPS performance
Provisioned IOPS SSD (io1)
Legacy high-performance volume
- Performance: Up to 64,000 IOPS
- Durability: 99.8-99.9% (lower than io2)
- Migration recommended: Migrate to io2 for better durability and same cost
Throughput Optimized HDD (st1)
Best for: Throughput-intensive workloads
- Performance: 500 MB/s max throughput, 500 IOPS max
- Pricing: Lower cost than SSD options
- Cannot be boot volume
Use cases:
- Big data processing
- Data warehouses
- Log processing
- Large sequential I/O workloads
Cold HDD (sc1)
Best for: Infrequently accessed data
- Performance: 250 MB/s max throughput, 250 IOPS max
- Pricing: Lowest cost per GB
- Cannot be boot volume
Use cases:
- Archival storage
- Infrequently accessed data
- Cost-optimized storage for large datasets
How Jetscale Optimizes EBS
1. Data Collection
Jetscale analyzes multiple data sources:
CloudWatch Metrics (configurable period):
VolumeReadOps/VolumeWriteOps- IOPS usageVolumeReadBytes/VolumeWriteBytes- Throughput usageVolumeThroughputPercentage- Percentage of provisioned throughput usedVolumeConsumedReadWriteOps- Total consumed IOPS (gp2/gp3)BurstBalance- Burst credit balance (gp2 only)
EBS API Data:
- Volume type (gp3, gp2, io2, io1, st1, sc1)
- Size in GB
- Provisioned IOPS
- Provisioned throughput (gp3 only)
- Attachment status (attached vs. unattached)
- Attached EC2 instance ID
- Volume state (available, in-use, creating, deleting)
Cost Explorer Data:
- Current monthly spend per volume
- Historical cost trends
AWS Compute Optimizer (if enabled):
- AWS-generated EBS recommendations
- Performance risk assessments
2. Analysis
Our AI agents perform deep analysis:
Utilization Patterns:
- Peak vs. average IOPS usage
- Peak vs. average throughput usage
- Time-of-day patterns
- Burst credit balance trends (gp2)
Cost Modeling:
- Current cost breakdown (storage + IOPS + throughput)
- Projected cost for alternative volume types
- Savings from IOPS/throughput reduction
- Cost of unattached volumes
Safety Checks:
- Verify volume is not attached before recommending deletion
- Ensure IOPS/throughput reductions don't impact performance
- Validate migration paths (gp2→gp3, io1→io2)
3. Recommendations
Jetscale generates specific, actionable recommendations:
gp2 to gp3 Migration
Example Recommendation:
Resource: vol-0abc123 (web-server root volume)
Current: gp2, 100 GB
Recommended: gp3, 100 GB, 3,000 IOPS, 125 MB/s
Cost Impact:
- Current: $10/month
- Projected: $8/month
- Savings: $2/month (20%), $24/year
Performance Analysis:
- Current IOPS: 300 baseline (3 IOPS/GB)
- Peak IOPS usage: 250
- gp3 baseline: 3,000 IOPS (far exceeds current needs)
Risk: Very Low - Performance improvement with cost savings
Note: Can be done online without detaching volume
IOPS Right-Sizing (io2)
Example Recommendation:
Resource: vol-0def456 (database volume)
Current: io2, 500 GB, 10,000 IOPS
Recommended: io2, 500 GB, 5,000 IOPS
Cost Impact:
- Current: $40/month (storage) + $650/month (IOPS) = $690/month
- Projected: $40/month (storage) + $325/month (IOPS) = $365/month
- Savings: $325/month (47%), $3,900/year
Performance Analysis:
- Provisioned: 10,000 IOPS
- Peak usage: 3,200 IOPS
- Average usage: 1,800 IOPS
- Recommended: 5,000 IOPS (56% headroom above peak)
Risk: Low - Significant headroom above peak usage maintained
gp3 Throughput Optimization
Example Recommendation:
Resource: vol-0ghi789 (log storage volume)
Current: gp3, 1000 GB, 3,000 IOPS, 500 MB/s
Recommended: gp3, 1000 GB, 3,000 IOPS, 250 MB/s
Cost Impact:
- Current: $80/month (storage) + $40/month (extra throughput) = $120/month
- Projected: $80/month (storage) + $10/month (extra throughput) = $90/month
- Savings: $30/month (25%), $360/year
Performance Analysis:
- Provisioned: 500 MB/s
- Peak usage: 180 MB/s
- Average usage: 95 MB/s
- Recommended: 250 MB/s (39% headroom above peak)
Risk: Low - Adequate headroom above peak usage
Note: Throughput can be adjusted online
io1 to io2 Migration
Example Recommendation:
Resource: vol-0jkl012 (production database)
Current: io1, 1000 GB, 20,000 IOPS
Recommended: io2, 1000 GB, 20,000 IOPS
Cost Impact:
- Current: $125/month (storage) + $1,300/month (IOPS) = $1,425/month
- Projected: $125/month (storage) + $1,300/month (IOPS) = $1,425/month
- Savings: $0/month (same cost, better durability)
Performance Analysis:
- Same IOPS performance (20,000 IOPS)
- Same throughput characteristics
- Durability: 99.8-99.9% (io1) → 99.999% (io2)
- Better for mission-critical workloads
Risk: Very Low - Same cost, better durability
Benefit: 10-100x lower annual failure rate
Delete Unattached Volume
Example Recommendation:
Resource: vol-0mno345 (legacy-backup-volume)
Current: gp2, 500 GB, unattached
Recommended: Delete
Cost Impact:
- Current: $50/month
- Projected: $0/month
- Savings: $50/month (100%), $600/year
Volume Analysis:
- State: Available (not attached to any instance)
- Last attached: >180 days ago
- Created: 2 years ago
- Tags: No production tags found
Risk: Low - Volume is unattached and unused
Recommendation: Verify with team before deletion, create snapshot if needed
4. Terraform Generation
For each recommendation, Jetscale generates production-ready Terraform code:
Example: gp2 to gp3 Migration
# EBS Volume Optimization: gp2 → gp3
# Generated by Jetscale on 2024-01-15
# Recommendation ID: rec_ebs_001
resource "aws_ebs_volume" "web_server_root" {
availability_zone = "us-east-1a"
# Previous: gp2, 100 GB ($10/month)
# Optimized: gp3, 100 GB ($8/month)
# Cost Reduction: 20% ($2/month, $24/year)
#
# Performance improvement:
# - gp2: 300 IOPS baseline (3 IOPS/GB)
# - gp3: 3,000 IOPS baseline (10x improvement)
# - Peak usage: 250 IOPS (well within gp3 baseline)
type = "gp3"
size = 100
# gp3 baseline performance (no additional cost)
iops = 3000
throughput = 125
encrypted = true
kms_key_id = var.kms_key_id
tags = merge(
var.tags,
{
"jetscale:optimized" = "true"
"jetscale:recommendation" = "rec_ebs_001"
"jetscale:previous_type" = "gp2"
}
)
}
# Attachment preserved
resource "aws_volume_attachment" "web_server_root" {
device_name = "/dev/sda1"
volume_id = aws_ebs_volume.web_server_root.id
instance_id = var.instance_id
}
Example: IOPS Right-Sizing
# EBS Volume IOPS Optimization
# Generated by Jetscale on 2024-01-15
resource "aws_ebs_volume" "database_volume" {
availability_zone = "us-east-1b"
type = "io2"
size = 500
# Previous: 10,000 IOPS ($650/month for IOPS)
# Optimized: 5,000 IOPS ($325/month for IOPS)
# Cost Reduction: 50% on IOPS cost ($325/month, $3,900/year)
#
# Usage analysis:
# - Peak IOPS: 3,200
# - Average IOPS: 1,800
# - Recommended: 5,000 IOPS (56% headroom above peak)
iops = 5000
encrypted = true
kms_key_id = var.kms_key_id
tags = merge(
var.tags,
{
"jetscale:optimized" = "true"
"jetscale:previous_iops" = "10000"
}
)
}
Best Practices
Testing Strategy
Pre-Production Testing:
- Test volume modifications in dev/staging first
- Monitor performance for 48-72 hours
- Validate application I/O patterns
- Check database query performance (if applicable)
Production Rollout:
- Schedule changes during maintenance windows
- Volume modifications can be done online (no downtime)
- Some modifications may cause performance impact during migration
- Monitor CloudWatch metrics actively during change
Volume Type Migration
gp2 → gp3 Migration:
- Can be done online without detaching
- May experience brief performance impact during migration
- Almost always recommended (20% savings, better performance)
io1 → io2 Migration:
- Can be done online
- Same cost, better durability (99.999% vs. 99.8-99.9%)
- Strongly recommended for mission-critical workloads
Unattached Volume Cleanup
Before deleting unattached volumes:
- Verify volume is truly unused
- Check tags for ownership information
- Create snapshot if data might be needed
- Confirm with application team
- Follow retention period after snapshot creation before deletion
Snapshot strategy:
# Create snapshot before deletion
aws ec2 create-snapshot \
--volume-id vol-0abc123 \
--description "Backup before deletion - Legacy backup volume"
# Wait for snapshot completion
aws ec2 wait snapshot-completed \
--snapshot-ids snap-0xyz789
# Delete volume after retention period
aws ec2 delete-volume --volume-id vol-0abc123
Common Optimization Patterns
Pattern 1: Legacy gp2 Volumes
Symptoms:
- Using gp2 volumes
- gp3 available in region
- No special burst requirements
Jetscale Recommendation:
- Migrate all gp2 → gp3
- Typical savings: 20% on storage costs
- Performance improvement: Higher baseline IOPS (3,000 vs. 3 IOPS/GB)
- Risk: Very Low (can be done online)
Pattern 2: Over-Provisioned IOPS
Symptoms:
- Using io2 or io1 volumes
- Peak IOPS usage < 50% of provisioned
- High IOPS costs relative to storage costs
Jetscale Recommendation:
- Reduce provisioned IOPS to 2x peak usage
- Typical savings: 30-50% on IOPS costs
- Risk: Low (maintain 2x headroom)
Pattern 3: Unattached Volumes Accumulation
Symptoms:
- Multiple unattached volumes in account
- Volumes from terminated instances
- Old backup volumes no longer needed
Jetscale Recommendation:
- Create snapshots if needed
- Delete unattached volumes
- Typical savings: 100% on deleted volumes
- Risk: Low if properly verified
Pattern 4: Unnecessary gp3 IOPS/Throughput
Symptoms:
- gp3 volumes with >3,000 IOPS or >125 MB/s throughput
- Actual usage below baseline performance
- Paying for unused performance
Jetscale Recommendation:
- Reduce to baseline (3,000 IOPS, 125 MB/s)
- Typical savings: 10-30% on volume costs
- Risk: Very Low if usage is well below baseline
Troubleshooting
Recommendation Concerns
Q: Will migrating from gp2 to gp3 cause downtime?
A: No. EBS volume modifications are done online without detaching the volume. The volume remains available during the modification, though there may be brief performance impacts during the migration process.
Q: How long does volume modification take?
A: Volume modifications typically complete within minutes to hours depending on:
- Volume size
- Current I/O load
- Type of modification (type change, IOPS change, size change)
You can monitor progress via AWS Console or CLI.
Q: Can I roll back a volume modification?
A: You cannot directly roll back, but you can modify the volume again after the current modification completes. There's a cooldown period (typically 6 hours) between modifications.
Q: What if I reduce IOPS too much?
A: You can increase IOPS again after the modification completes. Monitor CloudWatch metrics for:
VolumeQueueLength(should stay low)VolumeThroughputPercentage(should not hit 100%)- Application latency metrics
Performance Issues After Optimization
Symptom: Increased application latency after IOPS reduction
Possible causes:
- IOPS reduced below actual peak needs
VolumeQueueLengthincreasing- Application experiencing I/O waits
Resolution:
- Check CloudWatch
VolumeReadOpsandVolumeWriteOps - Verify
VolumeQueueLengthmetric - Increase IOPS if queue length consistently > 0
- Allow 6-hour cooldown between modifications
Symptom: gp2 burst credit depletion after migration
Possible causes:
- Migrated to gp3 but workload still needs burst capability
- Baseline IOPS insufficient for workload
Resolution:
- gp3 doesn't use burst credits - performance is consistent
- If seeing performance issues, increase gp3 IOPS above 3,000 baseline
- Cost: $0.065 per provisioned IOPS per month
Security Considerations
Encryption
Jetscale recommendations preserve:
- EBS encryption status
- KMS key associations
- Encryption in-transit settings
Volume Attachments
- Attached volumes: Only type/IOPS/throughput modifications
- Unattached volumes: Deletion recommendations (with safety checks)
- Volume attachments preserved in Terraform
Snapshots
Before deleting volumes:
- Always create snapshot if data might be needed
- Tag snapshots appropriately
- Set snapshot lifecycle policies
- Consider snapshot copies to other regions for DR
Limitations
Not Currently Supported:
- Snapshot optimization (lifecycle policies, cross-region copies)
- Multi-attach volumes
- Volume size reduction (AWS limitation)
- Snapshot-to-volume restore optimization
Volume Modification Limits:
- 6-hour cooldown between modifications
- Cannot modify volumes <6 hours old
- Cannot decrease volume size (AWS limitation)
API Integration
Jetscale provides API access for programmatic optimization:
# List EBS recommendations
GET /api/v1/recommendations?resource_type=ebs
# Get specific recommendation details
GET /api/v1/recommendations/{recommendation_id}
# Approve recommendation (generates Terraform)
POST /api/v1/recommendations/{recommendation_id}/approve
# Retrieve generated Terraform
GET /api/v1/recommendations/{recommendation_id}/terraform
See our API Documentation for complete reference.
Support
Need help with EBS optimization?
- Email: support@jetscale.ai
- Documentation: FAQ
- GitHub Issues: Report a problem
Related Documentation:
Supported Services
Jetscale provides AI-powered cost optimization for the most critical cloud services across AWS and Azure.
EC2 Optimization
Jetscale provides AI-powered cost optimization for Amazon EC2 standalone instances. Our specialized agents analyze your compute workloads to identify right-sizing...
