Solved: Restore root disk of EC2 without changing IP or Hostname

If the root volume of your EC2 instance got corrupt, instance won’t come up. Since you don’t have access to console of EC2 instance so you can’t do much.

In this post we will discuss options to restore an EC2 instance from snapshot backup. Prerequisite for the below guide is that you already have snapshot of the volume which you want to restore.

Option 1 – Different IP and Hostname 

Easiest option to restore an EC2 instance is to launch a new instance with the available snapshot. Refer this AWS doc to launch an instance from backup.

But, an instance launched this way will have both hostname and private IP different from original instance. If this is a problem for you go to option 2.

Option 2 – Same IP different Hostname

So, as per option 1 you have created and instance with an AMI but now you need the IP to be same as old one. To go around this you can detach the network interface of old instance and attach it to new instance.

This option will give you same private IP as old one but you will still have new hostname.

If you need both hostname and IP to be same go to option 3.

Option 3 – Same IP and Hostname

In this option we will discuss how you can restore an EC2 instance and keep both hostname and IP same. This can very important if your EC2 instance is in Active Directory(AD) domain, as change in IP and hostname mapping will cause conflict in domain. Because of this conflict the domain server can block login to the EC2 instance.

Let’s see how we can get around this.

Prerequisites:-

  • You already have snapshot of the root and other volumes of instance.
  • Keep a screenshot of your Instance description from your AWS console, this can be used to refer instance configuration later.

Plan

For the eager one’s, plan is to follow the below steps.

  • Stop the instance
  • Detach the current root EBS
  • Create a new volume from the old snapshot
  • Attach the new volume to instance
  • Boot the instance

Now let’s see the steps in detail.

Stop Instance

Stop the instance if it’s up.

Detach the current root EBS 

  • Select the root volume(/dev/sda1) mentioned as “Root device” from instance description and click on EBS id of the volume.
  • You will now come in “Volumes” window.
  • From the “Actions” drop down select “Detach Volume”

Create a new volume from the old snapshot

  • Create a volume from the snapshot you have taken earlier.
  • Select the snapshot of the volume and from “Actions” drop down select “Create Volume”.
  • In the “Create Volume” window ensure that you select the Availability Zone to be same as the AZ in which your instance is located.
  • Leave the other options as default. (refer image)

  • Finally hit “Create Volume”.

Attach the new volume

  • Once your volume is created select it.
  • From the “Actions” drop down select “Attach”.
  • While attaching the volume in the device field mention volume name as /dev/sda1 since we are attaching it as root volume. This is same as your old root volume name.

  • Hit “Attach” .

Boot instance

  • Once the volume is attached start the instance normally. You should now see that the instance has the data from your old backup. Also, it’s hostname and private IP will remain same as before.

Note:- If you want to keep the public IP to be fixed, you need to assign an Elastic IP to the instance. Public IP assigned by default, by AWS keeps on changing with every reboot.

That’s all folks!

Solve: How to add an EBS volume to a Windows EC2 instance and configure it

This post is divided in two sections. In the first section you will see how to create an EBS volume and in the next section we will show you how to configure the EBS volume in windows instance.

Create EBS Volume

  • Go to AWS Console > EC2
  • In the left panel select “Volumes” .
  • Once in the “Volume” screen select “Create Volume”

  • In the “Create Volume” window specify the size of disk and the Availability Zone  in which you want the disk to be created.

Tip:- The disk should be in same AZ as your EC2 instance.

  • Now in the left pane again select the “Volume” to see all your volumes.
  • Select the volume you just created and after that in the upper menu click on “Actions” and select “Attach volume”

  • In “Attach volume” window select the instance to which you want to attach the volume and click on “Attach”.

Configure EBS volume in Windows

  • Login to your windows EC2 instance using RDP. Once inside the instance, from the Start menu go to  “Computer Management” as mentioned below.

Start > Control Panel > System and Security > Administrative Tools > Computer Management

  • Click on Disk Management on the left pane.
  • Here we can see the new disk but it’s still offline. Right click on the new disk and select “Online”.

  • Once the disk is online right click again on the disk and select “Initialize Disk”.

  • If disk is below 2TB, select MBR and click OK

  • Finally right click on the pane where size is shown(refer image below). Select “New Simple Volume”

  • Leave other options as default and click “Next” till you come to “Assign Drive Letter or Path”.  Here we have assigned the drive letter E .

  • Leave everything else as default in next windows and click on finish.

  • Now if we go to “This PC/ My computer” we should see the new disk.

So here we have attached an EBS volume to the Windows EC2 instance. Do let us know in comments section if you have any query.

Solved: How to change hostname in AWS EC2 instance of RHEL 7

In our last post we have seen how to change hostname of an RHEL server.

But if you are using the RHEL 7 AMI provided on AWS marketplace the steps will be slightly different.

First login to your EC2 instance. (Check this post to know How to login to AWS EC2 Linux instance.)

Once you login to your EC2 instance execute below command.

 sudo hostnamectl set-hostname --static cloudvedas

(Here “cloudvedas” is the new hostname.)

If you want to make it persistent across reboot follow further.

Now using vi or vim editor edit the file /etc/cloud/cloud.cfg

sudo vi /etc/cloud/cloud.cfg

At the end of file add the following line and save the file

preserve_hostname: true

Finally reboot the server

sudo reboot

Once the server is up, check the hostname.

ec2-user# hostname
cloudvedas
ec2-user#

It should now show you the new hostname.

Solved: Using filezilla for transferring files to AWS EC2 instances

Filezilla is a great free opensource tool for securely transferring files to and from Unix and Linux servers. Also, it’s secure in comparison  to doing ftp to a linux server.

If not already downloaded you can download filezilla from here .

By default you can enter user id and password  of destination server to connect to it on port 22.

But in case of AWS EC2 instances you don’t get password instead you use the ssh key to connect to it.

We will need .ppk key for this activity. If you have .pem key and not .ppk key refer this post to convert pem key to ppk key  .

Once you have the ppk key let’s move on.

Create new site in Filezilla

  • Click on File > Site Manager
  • In the left pane click on “New Site” and give a name to the site e.g. devserver
  • In the right window enter details as:-

Host:- Mention IP of server

Protocol:- SFTP

Logon type:- Key file

User:- ec2-user (or mention user name for which you uploaded ssh key)

Key file:- Browse and select  the ppk key file

  • Finally click OK.

Try connecting to the server. It should work now.