Article number
000004712
Affected Versions
All
Source Hypervisor
All
Target Hypervisor
AWS

How to Set Up and Confirm a Linux VM has the Requirements for Networking to Recover to AWS

Viewed 281 times

Summary

Older Linux distribution versions do not ship with the AWS ENA kernel driver out of the box. One such example is CentOS 6.10.

The primary focus of this how to article is to provide steps to configure proper networking on a VM in AWS that does not have the ENA driver.

Steps

Prerequisites

Focusing on CentOS 6.10 out of the box, the kernel contains the NVME storage driver but not ENA. A customer may report during a FO that the VM boots correctly in AWS but there is no network present. Upgrading the Linux kernel to the latest version available in 6.10 does not provide the ENA driver.  The lack of driver may be applicable to other distributions and versions, so the process is to set up the driver manually.

First, verify if the ENA kernel module is set to be probed at boot or is in the Ramdisk for the current running kernel on the source VM. The ENA driver does not need to be in the Ramdisk since it's not required for the VM to boot. The NVME driver on the other hand must be there. If either commands return a result (as indicated below), then the driver is present in one of the two required areas and this section on setting up the driver can be skipped (go to step 12).

[root@localhost ~]#  grep ena /lib/modules/`uname -r`/modules.alias
alias pci:v00001D0Fd0000EC21sv*sd*bc*sc*i* ena
alias pci:v00001D0Fd0000EC20sv*sd*bc*sc*i* ena
alias pci:v00001D0Fd00001EC2sv*sd*bc*sc*i* ena
alias pci:v00001D0Fd00000EC2sv*sd*bc*sc*i* ena

[root@localhost ~]# lsinitrd | grep ena
drwxr-xr-x   2 root     root            0 Apr  6 13:47 usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/drivers/net/ethernet/amazon/ena
-rw-r--r--   1 root     root        41704 Oct 19 12:30 usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/drivers/net/ethernet/amazon/ena/ena.ko.xz

Follow the steps provided by AWS to add the ENA driver to the Ramdisk. The default kernel that ships with RHEL6.10 can suffice, it does not need to be updated.

Note: Below commands to be executed on the source VM as root.

  1. yum install kernel-devel-$(uname -r) gcc git patch rpm-build wget
  2. wget https://github.com/amzn/amzn-drivers/archive/master.zip
  3. unzip master.zip
  4. cd amzn-drivers-master/kernel/linux/ena
  5. make
  6. cp ena.ko /lib/modules/$(uname -r)/
  7. insmod /lib/modules/$(uname -r)/ena.ko
  8. depmod
  9. echo 'add_drivers+=" ena "' >> /etc/dracut.conf.d/ena.conf
  10. dracut -f -v
  11. lsinitrd /boot/initramfs-xxx.el6.x86_64.img | grep ena.ko
    1. This last command confirms if the driver is present. If no driver is present, recheck prior steps. Substitute the initram file output from step 10 for the xxx one listed.
  12. Install the latest Zerto Tools version from MyZerto.
  13. Verify if dmidecode is installed, which is required for Zerto Tools re-ip handler to verify the Hypervisor is AWS.
    1. Installed and ready
      1. [root@localhost ~]# rpm -q dmidecode
      2. dmidecode-3.2-5.el7.x86_64
    2. Not installed and needs to be installed
      1. [root@localhost ~]# rpm -q dmidecode
      2. package dmidecode is not installed
      3. [root@localhost ~]# yum install dmidecode
  14. (Optional) Disable the Linux firewall on the source VM if everything above has been tested to eliminate that it may be blocking connectivity.
    1. [root@localhost ~]# chkconfig iptables off
  15. ​​​​​​​Await a checkpoint with a timestamp from after the above is complete and attempt another recovery operation such as a Failover Test.