Modifying Live AWS Elastic Block Store Volumes
Need to scale up your Amazon cloud storage on the fly? Brien shows you how to expand your EBS storage while it is actively being used -- and without risking any downtime.
Configuring storage within the public cloud has always been something of a guessing game. Allocate too little storage to a resource, and you might have trouble scaling that resource later on. Add too much storage to a resource, and you are stuck paying for storage that you aren't actively using.
Recently, however, Amazon Web Services (AWS) has given its customers a tool to help them to cope with the need to balance cost with future capacity. Specifically, AWS now makes it possible to expand Elastic Block Store (EBS) storage while it is actively being used. This means that AWS customers can size their storage to meet today's needs without having to worry about how much storage might be required tomorrow.
It was previously possible to make modifications to EBS storage, but doing so required the workload that was using the storage to be taken offline. Suppose, for example, that an instance was running out of storage space and that an admin had made the decision to add more storage to the workload. The way that this process would have been handled in the past entailed creating a snapshot of the instance, restoring the snapshot to a new volume, and then attaching the new volume to the instance. In essence, the volume is not actually being extended, but rather is being replaced by a larger volume. The process works, but results in downtime.
As previously mentioned, AWS now provides a way of changing the size of a volume without incurring downtime in the process. Before I show you how this works, I want to point out that although making changes to a volume's size is probably the most common type of volume modification, it is not the only option that is available to you. AWS also makes it possible to tune a volume's performance or even to change the volume type while the corresponding instance continues to run. The process is so flexible that some organizations have begun using Amazon CloudWatch to monitor EBS volumes, and to make automated changes to those volumes in response to changing conditions.
AWS makes it really easy to make an EBS volume modification. To get started, log in to the AWS console and then launch Elastic Compute Cloud (EC2). Next, click on the Volumes link, found on the EC2 dashboard. This will cause the console to display a list of the currently existing EBS volumes, as shown in Figure 1. Notice in the figure that the volume is shown as being in use.
Now, right-click on the volume that you want to modify and choose the Modify Volume command from the shortcut menu. You can see what this looks like in Figure 2.
At this point, the console will display the Modify Volume dialog box, which you can see in Figure 3. As you will notice in the figure, modifying the volume is a simple process. Just choose what you want to modify and then click on the Modify button. Even so, let's take a closer look at the options that AWS makes available to us.
As you look at the figure above, you will notice that the first piece of information that the dialog box provides is the volume ID. Although you can't modify the volume ID, the volume ID is displayed in an effort to help you to verify that you are modifying the correct volume.
Next, there is a drop-down list that lets you change the volume type. As you can see in Figure 4, your options are General Purpose SSD (GP2), Provisioned IOPS SSD (IO1), Cold HDD (SC1) and Throughput Optimized HDD (ST1). It is possible that the available options may evolve over time.
The primary difference in the volume types is the capacity for IOPS. Here is what each volume type is currently rated for:
- General Purpose SSD (GP2): Bursts of up to 3000 IOPS
- Provisioned IOPS SSD (IO1): Up to 20,000 IOPS
- Cold HDD (SC1) and Optimized HDD (ST1): 100 IOPS on average with potential bursts ranging in the hundreds of IOPS
The next item on the Modify Volume dialog box is the Size field. This is where you enter the number of gigabytes of space that you want to allocate to the volume.
Finally, the dialog box lists the IOPS capacity for the volume type that you have selected.
As you can see, AWS has made it really easy to alter a volume's size and/or performance while the associated instance remains online.
About the Author
Brien Posey is a 21-time Microsoft MVP with decades of IT experience. As a freelance writer, Posey has written thousands of articles and contributed to several dozen books on a wide variety of IT topics. Prior to going freelance, Posey was a CIO for a national chain of hospitals and health care facilities. He has also served as a network administrator for some of the country's largest insurance companies and for the Department of Defense at Fort Knox. In addition to his continued work in IT, Posey has spent the last several years actively training as a commercial scientist-astronaut candidate in preparation to fly on a mission to study polar mesospheric clouds from space. You can follow his spaceflight training on his Web site.