yeti logo icon
Close Icon
contact us
Yeti postage stamp
We'll reply within 24 hours.
Thank you! Your message has been received!
A yeti hand giving a thumb's up
Oops! Something went wrong while submitting the form.

Starting an Amazon AWS EC2 Instance of Ubuntu 12.04 with EBS

March 14, 2013

Are you looking to create a cloud-based solution for your website or database backend?

One approach to create a cloud-based solution is to use Amazon's AWS, which is a popular platform today. AWS is a suite of many platform software products including EC2. EC2 provides virtual instances of computer servers, which places the same function as running several desktop computers inside one's office and connecting them to the Internet.

A popular solution for running a computer server is to run the Ubuntu 12.04 64-bit operating system. Ubuntu is an alternative to Mac OS X and Windows, which are primarily consumer-facing desktop operating systems. Ubuntu comes in two versions, one for desktop computers similar to the others and another server version without the GUI. Ubuntu's selling points are an open source codebase, strong community support, and GUI-less server operation.

Amazon EC2 can run several operating systems include Ubuntu 12.04. Amazon's regular EC2 servers provide the same environment as a regular server, but changes in EC2 aren't saved when the server is terminated. In other words, when the server is shut down, data changes are lost. EC2, thus, cannot be used for running data-centric applications out of the box.

Amazon introduced another product, S3, to provide persistent data storage. It provides RESTful access to data, which cannot be accessed like a regular server: special libraries are required. Amazon later introduced Elastic Block Store (EBS), which is a “virtual hard drive” (volume) for saving persistent data. EBS is accessed like a regular file system in Ubuntu.

Amazon's control panel for EC2 allows you to setup Ubuntu 12.04 with EBS. Amazon's control panel, however, does not format or mount the EBS volume. The following additional steps are required once a user logins into Ubuntu 12.04 on EC2:

1. Create an EBS Volume and attach it to the EC2 instance in EC2 panel management (in the AWS portal). Note the EBS volume name (e.g.,sdb).

2. Login to the EC2 instance using ssh.

3. Confirm that the EBS volume is attached:

sudo fdisk -l

You should see two (or more) disks listed:/dev/xvda1 and /dev/xvdb. Note that the EBS volume name (sdb) is listed as xvdb because Ubuntu 12.04 differentiates between real and virtual drives.

4. The new disk isn't formatted. You format the disk with the following:

sudo mkfs -t /dev/xvdb

You should see output such as:

mke2fs 1.42 (29-Nov-2011)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks65536 inodes, 262144 blocks13107 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=2684354568 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376Allocating group tables: doneWriting inode tables: doneCreating journal (8192 blocks): doneWriting superblocks and filesystem accounting information: done

5. Edit /etc/fstab, e.g., using

sudo nano /etc/fstab

Add in the line to mount the new drive to /var:

/dev/xvdb /var auto defaults,nobootwait,noatime 0 0

6. Log out of ssh and reboot the instance from EC2 panel management (website).

7. After the server has rebooted in EC2 panel management, log back in to ssh.

8. Confirm that/dev/xvdb is mounted by typing in:


For example:

/dev/xvda1 on / type ext4 (rw)proc on /proc type proc (rw,noexec,nosuid,nodev)sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)none on /sys/fs/fuse/connections type fusectl (rw)none on /sys/kernel/debug type debugfs (rw)none on /sys/kernel/security type securityfs (rw)udev on /dev type devtmpfs (rw,mode=0755)devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)none on /run/shm type tmpfs (rw,nosuid,nodev)/dev/xvdb on /var type ext4 (rw,noatime)

This article was written based on instructions for Ubuntu 10.10.

You Might also like...

VIDEO: Building API's with Django and GraphQL

At our last Django Meetup Group event, Jayden Windle, the lead engineer at Jetpack, an on demand delivery company, talks building APIs with Django and GraphQL. Watch the video to learn more.

Using Pytest to Write Beautiful Tests and a Bulletproof Django App

At the last meeting of the San Francisco Django Meetup Group, Wes Kendall gave a talk on how to make a bulletproof Django application by testing it with pytest. Check out his talk here!

Creating a Reusable Component Library: Yeti Lunch and Learn

Part of the Yeti Lunch and Learn series - our amazing developer, Resdan, gives a presentation on creating a reusable component library. Enjoy the video!

Browse all Blog Articles

Ready for your new product adventure?

Let's Get Started