-
Launch an instance from an instance store-backed AMI.
-
Make a note of the ramdisk ID and kernel ID, the running instance is using
-
Create a 10GiB Amazon EBS volume in the same Availability Zone as that of the newly-launched instance e.g.
/dev/sdf -
Attach the volume to the running instance using either the AWS Management Console or the command line interface.
-
Make sure all services are turned off like mysqld, nginx etc.
-
Format the volume with a file system. Newer kernels use
/dev/xvdfconvention.mkfs.ext3 /dev/xvdf -
Create a directory
/mnt/ebsand mount the volume on it.mkdir /mnt/ebs mount /dev/xvdf /mnt/ebs -
Copy the data on the root storage device to the newly-attached volume.
rsync -avx --exclude /mnt/ebs / /mnt/ebs -
Edit
/mnt/ebs/etc/fstab,/mnt/ebs/boot/grub/menu.lstand/mnt/ebs/boot/grub/grub.cfgand replace uses ofLABEL=cloudimg-rootfswith/dev/xvda1. -
Remove
/dev/xvda2and/dev/xvda3specific instructions from/mnt/ebs/etc/fstab. -
Edit
/mnt/ebs/etc/fstab,/mnt/ebs/boot/grub/menu.lstand replace uses ofLABEL=/with/dev/xvde1. -
Remove
/dev/xvde2and/dev/xvde3specific instructions from/mnt/ebs/etc/fstab. -
Create the following devices within the
/mnt/ebs.MAKEDEV console MAKEDEV generic MAKEDEV zero MAKEDEV null -
Detach the volume from the instance.
-
Create a snapshot of the volume.
-
Register the snapshot of the volume as an AMI. While registering make sure the architecture correctly configured and the Kernel ID and Ramdisk ID should match the one taken a note of in Step 2. If the Ramdisk ID information is not available form the instance then leave it to Use Default.