Amazon Web Services EC2 – Part 6: Elastic Block Storage
Elastic Compute Cloud (EC2)
Elastic Block Storage (EBS)
For most of its life in beta, EC2 offered only two kinds of storage, AMI based transient storage and S3. The transient storage was mounted as a filesystem and S3 was used for backup. To save data during downtime for instances, data had to first be saved off to S3 and the instance brought down. When the instance was brought back up, data was restored from S3. It was a painful process.
Enter EBS, the Elastic Block Store. EBS is a persistent storage mechanism, like a hard drive, that can be mounted by an instance and will retain its data even when the instance is brought down.
Amazon estimates that EBS storage is more reliable than commodity hard drives with an annual failure rate of 0.1 – 0.5%. EBS is replicated (mirrored) within an availability zone for redundancy. You would need to lose the entire availability zone to lose your data.
An EBS volume can only be attached to a single instance at a time but like a USB drive, you can attach it to one instance, copy data to it and then attach it to another instance. An easy way to move large volumes of data.
An EC2 instance can attach many EBS volumes. An EBS volume can be allocated from 1GB to 1TB. If you need 10TB, mount 10 1TB volumes or 20 500GB volumes. You are limited to the max number of volumes you can use (20) but you can always request that number be increased should you have a business reason to do so.
Performance of an EBS volume is engineered to be better than the internal AMI volumes. It’s sort of like attaching to a very fast, very expensive SAN. Because they are raw devices, you can attach multiple volumes and stripe across all of them. This will improve IO.
An added durability feature is volume snapshots. You can tale point in time snapshots of your entire EBS configuration and the data will backed up to S3. Snapshots are incremental so only data that has changed is backed up. This saves time and money (less in S3 charges). Snapshot storage in S3 is stored compressed to take even less space.
You can also create new instances from a snapshot. If we refer back to that catalog application I mentioned earlier, you could add new catalog instances by creating a new instance and attaching to a copy of your master instance. S3 supports lazy loading so you can start the instance before all of the data is copied. If any data is requested before its restored, S3 will immediately serve that data up so that it looks to the file system as if it was already available.
EBS storage costs $0.10 per GB per month of allocated disk space. 10GB for a month costs $1.00, 100GB would be $10.00 per month. Very, very cheap storage for such a high performing and reliable storage system.
IO is billed at $0.10 per million IOs per month. Amazon provides an example of a medium sized web site that does 100 transactions per second. Adding that to a month works out to about $26.00 per month. Not bad.