내용으로 건너뛰기

EC2 Linux 인스턴스를 부팅하려고 하면 비상 모드로 전환되는 이유는 무엇입니까?

4분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스를 부팅하면 인스턴스가 비상 모드로 전환되고 부팅 프로세스가 실패합니다. 그러면 인스턴스에 액세스할 수 없게 됩니다.

간략한 설명

인스턴스가 다음과 같은 이유로 인해 비상 모드로 부팅될 수 있습니다.

  • 인스턴스에 손상된 커널이 있어 커널 패닉 오류가 발생합니다.
  • /etc/fstab 파일의 잘못된 항목으로 인해 종속성 실패 오류가 발생하여 자동 마운트가 실패합니다.

오류 유형을 확인하려면 인스턴스의 콘솔 출력을 확인하십시오.

해결 방법

커널 패닉 오류

커널에 문제가 있는 경우 다음 예와 유사한 오류 메시지를 받습니다.

"Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)"

커널 패닉 오류는 grub 구성이나 initramfs 파일이 손상되면 발생합니다. 이 문제를 해결하려면 다음 단계를 완료하십시오.

  1. 커널을 이전의 안정적인 커널로 되돌립니다.
  2. 인스턴스를 재부팅합니다.
  3. 손상된 커널의 오류 메시지에 나열된 문제를 수정합니다.

종속성 실패 오류

종속성 실패 오류는 /etc/fstab 파일의 구문 오류로 인해 자동 마운트가 실패할 때 발생합니다. 파일에 나열된 Amazon Elastic Block Store(Amazon EBS) 볼륨이 인스턴스에서 분리될 때도 오류가 발생합니다. 다음 예와 유사한 오류 메시지가 표시됩니다.

"[[1;33mDEPEND[0m] Dependency failed for /mnt.

[[1;33mDEPEND[0m] Dependency failed for Local File Systems.

[[1;33mDEPEND[0m]

Dependency failed for Migrate local... structure to the new structure.

[[1;33mDEPEND[0m] Dependency failed for Relabel all filesystems, if necessary.

[[1;33mDEPEND[0m] Dependency failed for Mark the need to relabel after reboot.

[[1;33mDEPEND[0m]

Dependency failed for File System Check on /dev/xvdf."

위 예에서는 /mnt 마운트 지점이 부팅 시퀀스 동안 마운트하지 못했습니다. 마운트 실패로 인해 부팅 시퀀스가 비상 모드로 전환되지 않도록 하려면 /etc/fstab 파일에 다음 구성을 추가하십시오.

  • 보조 파티션에 대한 nofail 옵션(예: /mnt)
    참고: nofail 옵션은 볼륨 또는 파티션 마운트가 실패하더라도 부팅 시퀀스가 중단되지 않도록 합니다.
  • 마운트 지점에 대한 파일의 마지막 열로 파일 시스템 검사를 해제하는 0

/etc/fstab 파일을 업데이트하려면 EC2 직렬 콘솔을 사용하거나, AWSSupport-ExecuteEC2Rescue 자동화를 실행하거나, 복구 인스턴스를 사용하여 파일을 수동으로 편집하십시오.

중요: 인스턴스를 중지하고 시작하기 전에 다음 작업을 수행하십시오.

참고: 인스턴스를 중지하고 시작할 때 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하여 외부 트래픽을 인스턴스로 라우팅하는 것이 가장 좋습니다. 자세한 내용은 Amazon EC2 인스턴스 중지 및 시작을 참조하십시오.

EC2 직렬 콘솔 사용
중요: EC2 직렬 콘솔을 사용할 때는 인스턴스를 중지하고 시작할 필요가 없습니다.

Linux용 EC2 직렬 콘솔을 활성화한 경우 이를 사용하여 지원되는 Nitro 기반 인스턴스 유형지원되는 베어 메탈 인스턴스의 문제를 해결할 수 있습니다. EC2 직렬 콘솔을 사용할 때는 인스턴스에 연결하는 데 기능적 연결이 필요하지 않습니다. EC2 직렬 콘솔에 연결한 다음, /etc/fstab 파일을 수정합니다.

이전에 EC2 직렬 콘솔을 사용한 적이 없다면 전제 조건을 준수해야 합니다. 인스턴스에 연결할 수 없고 직렬 콘솔에 대한 액세스를 아직 구성하지 않은 경우 EC2 직렬 콘솔을 사용하여 /etc/fstab 파일을 수정할 수 없습니다.

AWSSupport-ExecuteEC2Rescue 자동화 문서 실행

전제 조건: AWSSupport-ExecuteEC2Rescue를 사용하는 데 필요한 AWS Identity and Access Management(IAM) 권한이 있는지 확인하십시오.

AWSSupport-ExecuteEC2Rescue 자동화 문서를 실행하여 부팅 문제를 자동으로 수정하십시오. 자세한 내용은 연결할 수 없는 인스턴스에서 EC2Rescue 도구 실행을 참조하십시오.

복구 인스턴스를 사용하여 파일을 수동으로 편집

다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 엽니다.

  2. 인스턴스를 선택하고 비상 모드에 있는 인스턴스를 선택합니다.

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

  4. 중지된 인스턴스에서 /dev/xvda 또는 /dev/sda1 Amazon EBS 루트 볼륨을 분리합니다.

  5. 중지된 인스턴스와 동일한 가용 영역에서 복구 인스턴스를 시작합니다.

  6. 보조 디바이스로 루트 볼륨을 복구 인스턴스에 연결합니다.
    참고: 보조 볼륨을 연결할 때 다른 디바이스 이름을 사용할 수 있습니다.

  7. SSH를 사용하여 복구 인스턴스에 연결합니다.

  8. 복구 인스턴스에 연결한 새 볼륨의 마운트 지점 디렉터리를 생성하려면 다음 명령을 실행합니다.

    sudo mkdir /mnt/rescue

    참고: /mnt/rescue를 마운트 지점 디렉터리로 바꾸십시오.

  9. 블록 디바이스 이름과 파티션을 식별하려면 다음 명령을 실행합니다.

    [root ~]$ lsblk

    출력 예시:

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0    8G  0 disk
    └─xvda1 202:1    0    8G  0 part /
    xvdf    202:80   0  101G  0 disk
    └─xvdf1 202:81   0  101G  0 part
  10. 마운트 지점 디렉터리에 볼륨을 마운트하려면 다음 명령을 실행합니다.

sudo mount -o nouuid /dev/xvdf1 /mnt/rescue

참고: /dev/xvdf1을 디바이스 이름으로 바꾸십시오. /etc/fstab 파일을 열려면 다음 명령을 실행합니다.

sudo vi /mnt/rescue/etc/fstab
  1. fstab에서 항목을 편집합니다. 다음 예에서는 UUID로 정의된 두 개의 Amazon EBS 볼륨을 보여줍니다. 두 보조 볼륨에 모두 nofail 옵션이 추가되었으며 각 항목의 마지막 열은 0입니다.
$ cat /etc/fstab
UUID=e75a1891-3463-448b-8f59-5e3353af90ba  /  xfs  defaults,noatime  1  0
UUID=ce917c0c-9e37-4ae9-bb21-f6e5022d5381  /mnt  ext4  defaults,noatime,nofail  1  0  
  1. 파일을 저장한 후 다음 명령을 실행하여 볼륨의 마운트를 해제합니다.
sudo umount /mnt/rescue
  1. 복구 인스턴스에서 볼륨을 분리합니다.
  2. 원본 인스턴스에 볼륨을 연결합니다.
  3. 인스턴스를 부팅할 수 있는지 확인하려면 인스턴스를 시작합니다.