내용으로 건너뛰기

Nitro 기반 인스턴스로 변경한 후 Linux 인스턴스가 부팅되지 않는 이유는 무엇입니까?

3분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스를 Nitro 기반 인스턴스로 변경했는데 부팅되지 않습니다.

간략한 설명

Linux 인스턴스를 Nitro 기반 인스턴스로 변경한 후 부팅되지 않는 이유는 다음과 같습니다.

  • 인스턴스에서 향상된 네트워킹 enaSupport 속성을 활성화하지 않았습니다.
  • 인스턴스에 Elastic Network Adapter(ENA) 드라이버를 설치하지 않았습니다.
  • 인스턴스에 NVMe 드라이버를 설치하지 않았습니다. 또는 인스턴스의 initramfs 이미지에서 NVMe 모듈을 로드하지 않았습니다.
  • 부팅 시 범용 고유 식별자(UUID) 또는 레이블 대신 디바이스 이름을 사용하여 /etc/fstab 파일에 파일 시스템을 마운트했습니다.
    참고: Amazon Elastic Block Store(Amazon EBS) 볼륨은 Nitro 기반 인스턴스에 NVMe 디바이스로 표시됩니다. 이로 인해 디바이스 이름이 변경됩니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

마이그레이션하기 전에 사전 요구 사항 자동 확인

Xen 인스턴스를 Nitro로 마이그레이션할 때 사전 요구 사항을 자동으로 확인하려면 AWSSupport-MigrateXenToNitroLinux AWS Systems Manager Automation 런북을 실행합니다.

또는 인스턴스 유형을 Nitro로 변경하기 전에 nitro_check_script.sh 스크립트를 실행하여 사전 요구 사항을 확인합니다. 스크립트에 액세스하려면 GitHub 웹 사이트에서 nitro_check_script.sh를 참조하십시오. 스크립트가 확인하는 항목에 대한 자세한 내용은 GitHub 웹 사이트에서 NitroInstanceChecks를 참조하십시오.

nitro_check_script.sh 스크립트를 다운로드하려면 다음 명령을 실행합니다.

sudo wget https://raw.githubusercontent.com/awslabs/aws-support-tools/refs/heads/master/EC2/NitroInstanceChecks/nitro_check_script.sh -O /tmp/nitro_check_script.sh

환경에 스크립트 실행 권한을 부여하려면 다음 명령을 실행합니다.

sudo chmod +x /tmp/nitro_check_script.sh

루트 권한으로 스크립트를 실행하려면 다음 명령을 실행합니다.

sudo bash /tmp/nitro_check_script.sh

참고: 스크립트를 루트 사용자로 실행하거나 sudo를 사용하여 실행해야 합니다. 그렇지 않으면 "This script must be run as root" 오류 메시지가 표시됩니다.

사전 요구 사항을 수동으로 확인하려면 다음 작업을 수행하십시오.

향상된 네트워킹을 활성화하고 ENA 드라이버를 설치했는지 확인

인스턴스에서 향상된 네트워킹을 활성화했는지 테스트합니다. 인스턴스에 enaSupport 속성이 없는 경우 향상된 네트워킹을 활성화하십시오.

ENA 드라이버를 설치했는지 확인하려면 다음 명령을 실행합니다.

sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"

ENA 드라이버를 설치하지 않은 경우 EC2 Windows 인스턴스용 ENA 드라이버를 설치하십시오. Linux 인스턴스용 ENA 드라이버를 설치하려면 GitHub 웹 사이트에서 Elastic Network Adapter(ENA) 제품군용 Linux 커널 드라이버를 참조하십시오.

NVMe 드라이버 설치

NVMe 볼륨에 액세스하려면 NVMe 드라이버를 설치해야 합니다.

/etc/fstab 파일의 마운트 지점에 디바이스 이름을 사용했는지 확인

UUID를 사용했는지 확인하려면 다음 명령을 실행합니다.

cat /etc/fstab |grep -iP 'uuid|dev/'

출력 예시:

UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults,noatime 1 1

UUID를 사용하지 않은 경우 다음 명령을 실행하여 디바이스 이름에 대한 UUID를 검색합니다.

lsblk -f device_name |tail -n 1 |awk '{print $4}'

참고: device_name을 디바이스 이름으로 바꾸십시오.

출력 예시:

90e29211-2de8-4967-b0fb-16f51a6e464c

/etc/fstab 파일을 편집하기 전에 다음 명령을 실행하여 파일의 복사본을 만드는 것이 좋습니다.

sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y`

다음 명령을 실행하여 /etc/fstab 파일을 엽니다.

cat /etc/fstab

그런 다음, 디바이스 이름을 UUID로 바꿉니다.

/dev/nvme0n1p1 / xfs defaults,noatime 1 1

참고: /dev/nvme0n1p1을 UUID로 바꾸십시오.

파일을 올바르게 업데이트했는지 확인하려면 cat /etc/fstab 명령을 다시 실행합니다. 출력 예시:

UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults,noatime 1 1

모든 디바이스 이름을 UUID로 바꿔야 합니다. 그런 다음, 인스턴스를 중지합니다. 인스턴스를 Nitro 기반 인스턴스로 변경한 후 인스턴스를 시작합니다.

AWS 공식업데이트됨 8달 전