RHEL을 실행하는 EC2 인스턴스에 향상된 네트워크 지원을 위한 최신 ENA 드라이버를 설치하고 활성화하려면 어떻게 해야 합니까?
향상된 네트워크 지원을 위해 최신 Elastic Network Adapter(ENA) 드라이버를 사용하려고 합니다. Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스는 Red Hat Enterprise Linux(RHEL)에서 실행됩니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
일부 이전 버전의 RHEL 운영 체제(OS)에는 ENA 드라이버가 포함되어 있지 않습니다. Nitro 인스턴스의 경우 네트워크 연결을 위해 EC2 인스턴스 유형을 변경하면 ENA 드라이버를 업데이트해야 합니다. EC2 인스턴스에 최신 ENA 드라이버를 설치하려면 RHEL 버전에 따라 다음 단계를 완료하십시오.
ENA 드라이버를 설치하거나 업데이트하기 전에 인스턴스의 Amazon Elastic Block Store(Amazon EBS) 볼륨 스냅샷을 생성하는 것이 좋습니다.
Linux 드라이버 업데이트 방법에 대한 자세한 내용은 GitHub 웹 사이트에서 ENA Linux 드라이버 모범 사례 및 성능 최적화 가이드를 참조하십시오.
중요: 인스턴스를 중지하면 Amazon EC2가 인스턴스 저장소 볼륨의 모든 데이터를 삭제합니다. 루트 디바이스 유형을 확인하려면 AMI의 루트 디바이스 유형 결정을 참조하십시오. 해당 데이터를 보관하려면 인스턴스 저장소 볼륨에 저장된 데이터를 백업해야 합니다.
RHEL 버전 7.4 이상
기본적으로 RHEL 버전 7.4 이상의 Amazon Machine Image(AMI)에는 향상된 네트워킹을 위한 ENA 드라이버가 설치되어 있습니다. 자세한 내용은 EC2 인스턴스에서 ENA를 사용하여 향상된 네트워킹 활성화를 참조하십시오.
7.4 이전의 RHEL 버전
ENA 드라이버를 설치하려면 다음 단계를 완료하십시오.
-
다음 명령을 실행하여 커널을 최신 버전으로 업그레이드합니다.
sudo yum upgrade kernel -y -
인스턴스를 업데이트하려면 다음 modify-instance-attribute AWS CLI 명령을 실행합니다.
aws ec2 modify-instance-attribute --instance-id exampleID --ena-support --region exampleRegion참고: exampleID를 인스턴스 ID로 바꾸고 exampleRegion을 AWS 리전으로 바꾸십시오.
-
인스턴스에 ENA 드라이버를 올바르게 설치했는지 확인하려면 다음 명령을 실행합니다.
ethtool -i eth0참고: eth0을 확인하려는 인터페이스의 이름으로 바꾸십시오. OS에서 예측 가능한 네트워크 이름을 사용하는 경우 네트워크 이름이 다를 수 있습니다. 자세한 내용은 Red Hat 웹 사이트에서 예측 가능한 네트워크 인터페이스 디바이스 이름에 대한 이해를 참조하십시오.
RHEL 6
참고: RHEL 6에는 Amazon EC2 프로덕션 지원 NVMe 드라이버가 포함되어 있지 않으며 NVMe 드라이버로 업그레이드할 수 없습니다. Nitro 기반 인스턴스 또는 NVMe 인스턴스 저장소 볼륨이 있는 인스턴스 유형을 사용하려면 RHEL 7.4 이상으로 업그레이드하십시오.
ENA 드라이버 다운로드 및 설치
다음 단계를 완료하십시오.
-
커널을 업데이트하고 시스템을 재부팅하여 최신 커널을 사용하려면 다음 명령을 실행합니다.
sudo yum upgrade kernel -y && sudo reboot -
개발 패키지를 설치하여 커널과 일치하는 커널 모듈을 빌드하려면 다음 명령을 실행합니다.
sudo yum install kernel-devel-$(uname -r) gcc git patch rpm-build wget -ycd /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 -
모듈을 모듈 디렉터리에 복사하려면 다음 명령을 실행합니다.
sudo cp ena.ko /lib/modules/$(uname -r)/ -
커널 모듈 종속성 맵 파일을 재생성하려면 다음 명령을 실행합니다.
sudo depmod -
ENA 모듈이 있는지 확인하려면 다음 명령을 실행합니다.
modinfo ena시스템에 ENA 드라이버를 컴파일하고 설치할 경우 버전이 2.2.11g 이상일 수 있습니다. 명령 출력에 ENA 드라이버 정보가 표시됩니다.
출력 예시:filename: /lib/modules/2.6.32-754.33.1.el6.x86_64/ena.koversion: 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) -
net.ifnames=0을 /boot/grub/grub.conf에 추가하고 네트워크 인터페이스 이름 지정을 해제하려면 다음 명령을 실행합니다.
sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf -
인스턴스 수준에서 향상된 네트워크 지원을 활성화하려면 다음 modify-instance-attribute 명령을 실행합니다.
aws ec2 modify-instance-attribute --instance-id exampleID --ena-support --region exampleRegion참고: exampleID를 인스턴스 ID로 바꾸고 exampleRegion을 리전으로 바꾸십시오.
-
SSH를 사용하여 인스턴스에 연결한 후 다음 명령을 실행하여 ENA 드라이버가 올바르게 설치되었는지 확인합니다.
ethtool -i eth0
출력 예시:
driver: enaversion: 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 프로그램 구성
애플리케이션이 ENA 버전에 대한 직접 종속성을 갖는 경우 동적 커널 모듈 지원(DKMS) 프로그램을 구성하십시오. 이를 통해 향후 커널 업그레이드 시 Amazon EC2에 드라이버가 포함되도록 할 수 있습니다.
참고: RHEL 인스턴스에서 Extra Packages for Enterprise Linux(EPEL) 리포지토리를 사용할 수 있습니다.
DKMS 프로그램을 구성하려면 다음 단계를 완료하십시오.
-
Red Hat 패키지 관리자(rpm) 파일을 설치하려면 다음 명령을 실행합니다.
sudo yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm -y참고: 최신 .rpm 패키지 목록은 Fedora Project 웹 사이트의 EPEL에서 사용할 수 있는 패키지를 참조하십시오.
-
DKMS를 설치하려면 다음 명령을 실행합니다.
sudo yum install dkms -y -
기존 커널을 삭제하려면 다음 명령을 실행합니다.
VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 ) -
소스 파일을 소스 디렉터리에 복사하려면 다음 명령을 실행합니다.
sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER} -
DKMS 구성 파일을 생성하고 ENA 모듈을 빌드 및 설치하려면 다음 명령을 실행합니다.
sudo cat <<EOM | sudo tee /usr/src/amzn-drivers-${VER}/dkms.confPACKAGE_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
