Can I change the root EBS device of my amazon EC2 instance?

Viewed 69065

I have an EBS backed Amazon EC2 instance. I would like to change the root device on this instance. Can you please advise the best way to go about this?

I only find documentation on changing several attributes of block devices, but they don't seem to include setting it as the root device.

7 Answers
  1. Stop the EC2 instance.
  2. On Navigation panel, click 'Volumes' under 'Elastic Block Store'.
  3. Choose the existing volume, click 'Actions' and 'Detach volume'. Complete the confirmation.
  4. Choose the new volume, click 'Actions' >> 'Attach volume'
    • In the Attach Volume dialogue box,
    • Instance: Enter Instance ID
    • Device: Enter /dev/sda1

This is the aws suggested solution You can detach the root volume from the original instance after stopping it. The root volume is attached at /dev/sda1. Once this is detached, please attach it to the new instance. After the volume is attached, you may have to mount it from the OS. After it's mounted, you should see the data within it.

After you've done adding the new key, you can detach it and attach to the original instance at /dev/sda1.

I suggest creating a snapshot of the root volume before making any changes.

Before trying out any solutions just try out in the not important instances or spot instances

If you are wanting to do this via CloudFormation you will need to do the following:

  1. Create snapshot from existing root volume (via console or CLI)
  2. Create new AMI from this snapshot - increase the root volume size here, make sure you select correct virtualisation time (paravirtual or HVM).
  3. On your AWS::EC2::Instance resource, set the ImageId parameter to the new AMI you have just made

Deploy your stack. This will recreate your instance, so make sure you are using an Elastic IP address or have DNS access.

The reason you have to do this workaround is because CF will not let you adjust root volume size on EC2 BlockDeviceMappings, or to adjust SnapshotId of Root Volume.

When your volume is mounted, it gets a post-fix with numbers, eg: when /dev/sda is mounted, its mounted as /dev/sda1, /dev/sda2 depending on the partitions you make. As we are mounting the root device itself, it assumes the device is already mounted, so we need to give /dev/sda1 for mounting the volume as root device. Note: There shouldn't be any root volume attached.

Follow these steps: 1) Go to your volumes, select attach volumes from Action. 2) Select your instance 3) For mounting as root, give the device name as /dev/sda1 4) Start your instance.

Related