Red Hat 6/7을 실행 중인 Amazon EC2 인스턴스에서 향상된 네트워크 지원을 위한 최신 ENA 드라이버를 설치하고 활성화하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 4월 27일

RHEL 6 또는 7을 실행하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 향상된 네트워크 지원 기능을 제공할 최신 Elastic Network Adapter(ENA) 드라이버를 설치하고 활성화하려면 어떻게 해야 합니까?

간략한 설명

일부 이전 버전의 Red Hat Enterprise Linux 운영 체제에는 ENA 드라이버가 포함되어 있지 않습니다. Nitro 인스턴스의 경우 네트워크 연결을 위해 EC2 인스턴스 유형을 변경하려면 ENA 드라이버가 필요합니다.

참고: 다음 해결 방법을 진행하기 전에 인스턴스의 스냅샷을 생성하는 것이 모범 사례입니다.

해결 방법

RHEL 7.4 및 이후 버전

RHEL 7.4 및 이후 버전의 AMI에는 ENA를 통한 향상된 네트워킹에 필요한 모듈이 사전 설치되어 있습니다. 자세한 내용은 Linux 인스턴스에서 ENA(Elastic Network Adapter)를 사용하여 향상된 네트워킹 활성화를 참조하세요.

7.4보다 낮은 RHEL 7

1.    다음 명령을 실행하여 커널을 최신 버전으로 업그레이드합니다.

sudo yum upgrade kernel -y

2.    인스턴스를 중지합니다.

참고: 인스턴스가 중지되면 인스턴스 스토어 볼륨의 데이터가 손실됩니다. 자세한 내용은 인스턴스의 루트 디바이스 유형 확인을 참조하세요. 인스턴스 스토어 볼륨에서 유지하려는 데이터를 모두 백업해야 합니다.

3.    다음 AWS Command Line Interface(AWS CLI) 명령을 실행합니다.

aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x

참고: AWS CLI가 인스턴스에 설치되지 않은 경우 이를 설치하고 구성할 수 있습니다. AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

4.    인스턴스 시작

5.    다음 명령을 사용하여 ENA 드라이버가 인스턴스에 로드되었는지 확인합니다. eth0을 확인하려는 인터페이스의 이름으로 바꿉니다. 단일 인터페이스의 기본 이름은 eth0입니다. 운영 체제에서 예측 가능한 네트워크 이름을 사용하는 경우 네트워크 이름이 다를 수 있습니다.

$ ethtool -i eth0

RHEL 6

참고: RHEL 6은 Amazon EC2 프로덕션 지원 NVME 드라이버와 함께 제공되지 않으며 별도로 NVME 드라이버로 업그레이드할 수 없습니다. NVMe 인스턴스 스토어 볼륨에 Nitro 기반 또는 인스턴스 유형을 사용하려면 RHEL 7.4 이상으로 업그레이드하세요.

ENA 드라이버 다운로드 및 설치

1.    커널을 업데이트하고 시스템을 재부팅하여 최신 커널이 적용되도록 합니다.

sudo yum upgrade kernel -y && sudo reboot

2.    커널과 일치하는 커널 모듈을 빌드하기 위한 개발 패키지를 설치합니다.

sudo yum install kernel-devel-$(uname -r) gcc git patch rpm-build wget -y
cd /usr/src/
sudo wget https://github.com/amzn/amzn-drivers/archive/master.zip
sudo unzip master.zip
cd amzn-drivers-master/kernel/linux/ena
sudo make

3.    모듈을 모듈 디렉토리에 복사합니다.

sudo cp ena.ko /lib/modules/$(uname -r)/

4.    커널 모듈 종속성 맵 파일을 다시 생성합니다.

sudo depmod

5.    modinfo 명령을 사용하여 ENA 모듈이 있는지 확인합니다.

modinfo ena

modinfo 명령 출력에 ENA 드라이버 정보가 표시됩니다.

참고: ENA 드라이버 버전은 컴파일하고 시스템에 설치하는 동안 2.2.11g보다 최신 버전일 수 있습니다.

filename:       /lib/modules/2.6.32-754.33.1.el6.x86_64/ena.ko
version:        2.2.11g
license:        GPL
description:    Elastic Network Adapter (ENA)
author:         Amazon.com, Inc. or its affiliates
retpoline:      Y
srcversion:     17C7CD1CEAD3F0ADB3A5E5E
alias:          pci:v00001D0Fd0000EC21sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd0000EC20sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd00001EC2sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd00000EC2sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd00000051sv*sd*bc*sc*i*
depends:        
vermagic:       2.6.32-754.33.1.el6.x86_64 SMP mod_unload modversions 
parm:           debug:Debug level (0=none,...,16=all) (int)
parm:           rx_queue_size:Rx queue size. The size should be a power of 2. Max value is 8K
 (int)
parm:           force_large_llq_header:Increases maximum supported header size in LLQ mode to 224 bytes, while reducing the maximum TX queue size by half.
 (int)
parm:           num_io_queues:Sets number of RX/TX queues to allocate to device. The maximum value depends on the device and number of online CPUs.
 (int)

6.    /boot/grub/grub.confnet.ifnames=0을 추가하여 네트워크 인터페이스 이름 지정을 비활성화합니다.

sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf

7.    인스턴스를 중지합니다.

8.    인스턴스 수준에서 향상된 네트워크 지원을 활성화합니다. 다음 예제는 AWS Command Line Interface(AWS CLI)에서 인스턴스의 속성을 수정합니다.

aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x

9.    인스턴스 유형을 ENA 지원 인스턴스 유형 중 하나로 변경합니다.

10.    인스턴스를 시작하고 SSH를 사용하여 인스턴스에 연결한 다음 ethtool 명령을 실행합니다.

ethtool -i eth0

출력에는 다음 예제와 같이 ENA 드라이버 버전이 포함됩니다.

driver: ena
version: 2.2.11g
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

향후 커널 업그레이드 시에 드라이버가 포함되도록 DKMS(Dynamic Kernel Module Support) 프로그램 구성

다음 사항에 유의하십시오.

  • EPEL 리포지토리의 소프트웨어는 Red Hat 또는 AWS에서 지원하지 않습니다.
  • DKMS를 사용하면 구독에 대한 지원 계약이 무효가 됩니다.

1.    다음 Red Hat Package Manager(rpm) 파일을 설치합니다.

sudo yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm -y

참고: 가장 최근의 .rpm 패키지 목록은 EPEL - Fedora Project Wiki 웹 사이트를 참조하세요.

2.    install 명령을 실행합니다.

sudo yum install dkms -y

3.    현재 버전을 감지합니다.

VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )

4.    소스 파일을 소스 디렉토리에 복사합니다.

sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}

5.    DKMS 구성 파일을 생성하고 ENA 모듈을 빌드하여 설치합니다.

sudo cat <<EOM | sudo tee /usr/src/amzn-drivers-${VER}/dkms.conf
PACKAGE_NAME="ena"
PACKAGE_VERSION="$VER"
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"
EOM

sudo dkms add -m amzn-drivers -v $VER
sudo dkms build -m amzn-drivers -v $VER
sudo dkms install -m amzn-drivers -v $VER

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?