Getting Started with Amazon EBS (Elastic Block Service)

Published:8 September 2022 - 7 min. read

Priyanshu Bhatt Image

Priyanshu Bhatt

Read more tutorials by Priyanshu Bhatt!

Are you planning to expand your cloud possibilities and thinking of using AWS with complete control over your disk? If so, you should consider Amazon Elastic Block Storage (EBS).

Amazon EBS provides block-level storage volumes to store the data persistently, unlike the temporary EC2 instances. These volumes are well suited for file systems, databases, or application use cases requiring low-level data control.

Ready to explore the power of EBS? Dive right in!

Prerequisites

This tutorial will be a hands-on demonstration. If you’d like to follow along, be sure you have the following:

  • Your AWS root account or an IAM user with AmazonEC2FullAccess policy attached to it. This tutorial will use an IAM user named amazon-ebs-user throughout.
  • An Amazon EC2 instance where you’ll attach the Amazon EBS volume. This tutorial uses a free-tier Ubuntu 20.04 instance in the east-us-2b availability zone for demonstration.

Creating an Amazon EBS Volume

You could create an EBS volume via the command line (AWS CLI) or from the AWS Console. Considering that this tutorial covers the basics, you’ll do every task in the AWS Console. This way, you won’t have to do any CLI preparations and dive straight into the Amazon EBS creation.

Follow the below steps to create an Amazon EBS Volume.

1. Open a web browser and log in to the AWS Console as the root or IAM user. This example shows signing in as the IAM user amazon-ebs-user.

Logging in to the AWS console
Logging in to the AWS console

2. Next, type ec2 in the search box at the top, and click EC2 from the results.

Search for EC2
Search for EC2

3. On the left panel, scroll to the Elastic Block Store and click Volumes → Create volume.

Click Create Volume
Click Create Volume

4. Choose your volume type according to your use case. EBS volumes come in several types which have different characteristics. But in this example, choose the General Purpose SSD (gp2), a cost-effective option suitable for general use.

Visit the Amazon EBS volume types page to learn more about the different volume types.

Select the General Purpose SSD (gp2) volume type
Select the General Purpose SSD (gp2) volume type

5. Next, specify the volume size. Valid sizes for a gp2 volume are from 1 GiB to 16 TiB (16,384 GiB). In this example, set the volume size to 8 GiB.

Set the volume size
Set the volume size

6. Select the Availability Zone where you want to create the volume. Select the same region of the EC2 instance where you’ll attach this volume. This example selects us-east-2b.

NOTE: You can only attach a volume to an EC2 instance within the same availability zone.

Select the availability zone
Select the availability zone

7. Tick on the Encrypt this volume to enable encryption in your volume. Under the KMS key, select (default) aws/ebs.

Enable volume encryption
Enable volume encryption

8. Under Tags, click Add tab and type a string that would help you quickly identify the volume. In this example, type Name as the key and Getting_started_ebs as the value. Finally, click Create volume.

Add a tag and click Create volume
Add a tag and click Create volume

The screenshot below shows that you’ve successfully created a new Amazon EBS volume.

Amazon EBS volume
Amazon EBS volume

Attaching the Amazon EBS Volume to an EC2 Instance

You have finished creating a new Amazon EBS volume, which you can now attach to your EC2 instance before you can use it to store data.

1. While still on the Volumes page, tick the box next to the Getting_started_ebs volume you created.

2. Click the Actions menu and click Attach volume.

Click Attach volume
Click Attach volume

3. Click the dropdown box under Instance and the EC2 instance where you want to connect the Amazon EBS volume.

Select the EC2 instance to attach
Select the EC2 instance to attach

4. Leave the automatically generated device name value in this example. This device name is what you’ll see inside your EC2 instance as the device name of the volume—Click Attach volume to finish.

Note that callout in the below screenshot about the Linux kernel renaming your device. This behavior will not affect the volume’s functionality, only that the name will appear differently in the OS than the name you specified here.

Leave the default device name
Leave the default device name

You’ll see a banner similar to the one below, indicating that you’ve successfully attached the Amazon EBS volume.

Volume attachment confirmation
Volume attachment confirmation

Mounting the Amazon EBS Volume

After attaching the Amazon EBS volume to your EC2 instance, you must check whether the new volume is not visible inside your EC2 instance. The procedure will vary depending on your operating system, and this example will show you how to perform this task in Ubuntu.

1. Open your SSH client and log in to your EC2 instance.

ssh ubunt@<ec2_ip_or_dns_name> -i <path_to_private_key>
Log in to EC2 via SSH
Log in to EC2 via SSH

2. Next, list all non-loopback block devices available on the system by running the below command.

sudo lsblk -e7

Look for the Amazon EBS volume’s device name in the list. As you can see below, the device name for EBS, in this case, is xvdf.

Listing devices
Listing devices

3. Now, run the below command to create a file system on the device.

sudo mkfs -t xfs /dev/xvdf

You should see an output similar to the screenshot below.

Creating a filesystem on the Amazon EBS volume
Creating a filesystem on the Amazon EBS volume

4. Check if the device now has a file system.

sudo file -s /dev/xvdf

The result should show that the device /dev/vxdf has the XFS filesystem.

Get the device file system
Get the device file system

5. Create a folder you’ll use as the mount point for this Amazon EBS volume. For example, this tutorial will create the /ebs directory as the mount point.

sudo mkdir /ebs

6. After creating the folder, mount the /dev/vxdf device to /ebs.

sudo mount /dev/xvdf /ebs

7. List the block devices again and confirm that Amazon EBS mount status.

sudo lsblk -e7

As you can see in the result below, the Amazon EBS block device is mounted to the /ebs mount point.

Confirm the EBS volume mount status
Confirm the EBS volume mount status

8. Next, test the volume by creating a new file in it. Run the command below to create a readme.txt file in /ebs.

echo 'Amazon EBS' | sudo tee /ebs/readme.txt

9. Confirm that the new file exists and display its contents.

ls /ebs/readme.txt
sudo cat /ebs/readme.txt
Create a file in the Amazon EBS volume
Create a file in the Amazon EBS volume

You’ve successfully made the Amazon EBS volume available inside your EC2 instance.

Creating an EBS Volume Snapshot

In a previous section, you created the Getting_started_ebs volume. This time, you’ll create a snapshot out of this volume. EBS snapshots are point-in-time references to data, which you can use for backups, disaster recovery, and migrating data across regions and accounts.

1. Select the Getting_started_ebs volume, click Actions → Create snapshot.

Click Create snapshot
Click Create snapshot

2. Type the description of the snapshot you’re creating. This snapshot’s description is Getting started snapshot.

snapshot’s description
snapshot’s description

3. Under the Tags section, click Add tags, type Name as the key, and Getting started snapshot as the value. Click Create snapshot once you’ve finished adding the tag.

Add a tag and create a snapshot
Add a tag and create a snapshot

You’ll see the banner saying your successfully created the snapshot.

Successful snapshot creation
Successful snapshot creation

Using Amazon EBS Volumes Across Availability Zones

As you’ve read in the previous section, you can only attach an EBS volume to an EC2 instance on the same availability zone. But what if you need the data on a volume in another EC2 instance on a different availability zone?

For this scenario, you can instead create a new Amazon EBS volume from existing snapshots of the original volume. You can then create the volume in another availability zone.

1. On the left pane, click Snapshots. Tick the box next to the snapshot, click Actions → Create volume from snapshot.

Create volume from snapshot
Create volume from snapshot

2. On the Create Volume page, change the availability zone where you want to deploy the new volume. In this example, the new volume will be in us-east-2a.

At this point, you can also change the volume type and size. But for this tutorial, leave the original values, except for the Availability Zone.

Select the new availability zone
Select the new availability zone

3. Scroll down to the Tags sections. Click Add tags and add a Name tag and enter the value. In this example, the value is Getting_started_ebs-us-east-2a, which indicates that this volume is a copy of the Getting_started_ebs volume in us-east-2a. Make your tag as descriptive as you like.

Add tag and create volume
Add tag and create volume

4. Click on Volumes, and you should now see the new volume. As you can see, this new volume is in your specified availability zone.

View the volumes list
View the volumes list

Creating an AMI from the Snapshot

Out of an Amazon EBS Snapshot, you can create a new Amazon Machine Images (AMI). There are some scenarios where you’d want to create a custom AMI and share it with others, or you’ll want to launch an EC2 instance with the custom image.

To create an AMI from the snapshot, follow the below steps.

1. Click Snapshots. Tick the box next to the snapshot, click Actions → Create image from snapshot.

Create image from snapshot
Create image from snapshot

2. On the Image settings page, type the Image name and Description. Make them as uniquely indefinable as possible. Leave the other settings intact.

Configure image settings
Configure image settings

3. Scroll down to the Block device mappings section. Specify the volume size and type. In this tutorial, leave everything in its default values and click Create image.

Block device settings
Block device settings

The AWS EC2 service now creates the image in the background. You should see a banner saying that the image creation can take several minutes to complete.

Image creation status information
Image creation status information

4. Now, click AMIs under the Images group, and you should see the new AMI you created. From here, you have the option to launch a new EC2 instance based on this AMI.

View the AMIs list
View the AMIs list

Conclusion

In this article, you’ve learned to leverage the power of the Amazon Elastic Block Store. You’ve learned to create an Amazon EBS volume, attach it to an EC2 instance, create snapshots, and a custom AMI.

With this knowledge, why not try to accomplish the same tasks using the AWS CLI?

Hate ads? Want to support the writer? Get many of our tutorials packaged as an ATA Guidebook.

Explore ATA Guidebooks

Looks like you're offline!