5th-generation EC2 instances

Posted under tech On By xpk

AWS introduced 5th-generation EC2 instances in selected regions. These instances live on Nitro which is KVM based. These c5 and m5 instances are faster yet cheaper. The switch however cannot be done by a simple instance type change.

The following instructions apply to EL7

First, block devices switched to NVMe and their names changed to /dev/nvme0n1p1. If the AMI contains traditional block device names in /etc/fstab, they will be stuck at boot up. Use UUID or disk label solves the problem. Second, you may need ENA support enabled. Some of the 5th-generation instances uses 10Gbe NIC as the only option. Here is how I recently updated a CentOS AMI:

– launched a c4.large instance from existing AMI
– update kernel to the latest (yum update kernel)
– disable consistent network device naming (add biosdevname=0 net.ifnames=0 to /etc/sysconfig/grub)
– update grub config and regenerate initramfs images

grub2-mkconfig > /boot/grub2/grub.cfg
dracut --regenerate-all --force

– stop instance
– enable ENA with awscli and start instances

aws ec2 modify-instance-attribute --ena-support --instance-id i-xxx

ENA support is included on kernel 3.2 and later, so there is no need to install it on EL7

# modinfo ena
filename: /lib/modules/3.10.0-693.2.2.el7.x86_64/kernel/drivers/net/ethernet/amazon/ena/ena.ko.xz
version: 1.0.2

For EL6, the ena driver needs to be installed manually. Use DKMS to install the module, so the driver is automatically installed during future kernel upgrade.

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
yum install git gcc kernel-devel-$(uname -r) dkms
git clone https://github.com/amzn/amzn-drivers.git /usr/src/amzn-drivers-latest
# create file /usr/src/amzn-drivers-latest/dkms.conf
PACKAGE_NAME="ena"
PACKAGE_VERSION="latest"
CLEAN="make -C kernel/linux/ena clean"
MAKE="make -C kernel/linux/ena/ BUILD_KERNEL=${kernelver}"
BUILT_MODULE_NAME[0]="ena"
BUILT_MODULE_LOCATION="kernel/linux/ena"
DEST_MODULE_LOCATION[0]="/updates"
DEST_MODULE_NAME[0]="ena"
AUTOINSTALL="yes"

dkms add -m amzn-drivers -v latest
dkms build -m amzn-drivers -v latest
dkms install -m amzn-drivers -v latest
modprobe ena
dracut -f
poweroff (next step requires instance be stopped)
aws --region us-east-1 ec2 modify-instance-attribute --ena-support --instance-id i-xxx
start instance in m5 or c5

[[email protected] ~]# ethtool -i eth0
driver: ena
version: 1.5.0g
firmware-version:
bus-info: 0000:00:05.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

[[email protected] ~]# curl http://169.254.169.254/2016-09-02/meta-data/instance-type
c5.large

References:

  • https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html#enhanced-networking-ena-ubuntu

 1,120 total views,  2 views today

Leave a comment

Your email address will not be published. Required fields are marked *