EC2 직렬 콘솔을 사용하여 Amazon EC2 인스턴스 문제 해결 - Amazon Elastic Compute Cloud

EC2 직렬 콘솔을 사용하여 Amazon EC2 인스턴스 문제 해결

EC2 직렬 콘솔을 사용하면 인스턴스의 직렬 포트에 연결하여 부팅, 네트워크 구성 및 기타 문제를 해결할 수 있습니다.

인스턴스의 운영 체제 지침과 인스턴스에서 구성한 도구의 지침을 사용하세요.

참고

시작하기 전에 선택한 문제 해결 도구 구성을 포함한 사전 조건을 완료했는지 확인합니다.

GNU GRUB(GNU GRand Unified Bootloader의 약어, 일반적으로 GRUB이라고 함)은 대부분의 Linux 운영 체제에 대한 기본 부트 로더입니다. GRUB 메뉴에서 부팅할 커널을 선택하거나 메뉴 항목을 수정하여 커널 부팅 방법을 변경할 수 있습니다. 이는 장애가 발생한 인스턴스의 문제를 해결할 때 유용할 수 있습니다.

부팅 프로세스 중에 GRUB 메뉴가 표시됩니다. 이 메뉴는 일반 SSH를 통해 액세스할 수 없으며 EC2 직렬 콘솔을 통해 액세스할 수 있습니다.

단일 사용자 모드 또는 응급 모드로 부팅할 수 있습니다. 단일 사용자 모드는 낮은 실행 수준에서 커널을 부팅합니다. 예를 들어 파일 시스템을 탑재하지만 네트워크를 활성화하지 않음으로써 인스턴스를 수정하는 데 필요한 유지 관리를 수행할 수 있는 기회를 제공합니다. 응급 모드는 커널이 가능한 가장 낮은 실행 수준에서 실행된다는 점을 제외하면 단일 사용자 모드와 유사합니다.

단일 사용자 모드로 부팅하려면
  1. 인스턴스의 직렬 콘솔에 연결합니다.

  2. 다음 명령을 사용하여 인스턴스를 재부팅하세요.

    [ec2-user ~]$ sudo reboot
  3. 재부팅하는 동안 GRUB 메뉴가 나타나면 아무 키나 눌러 부팅 프로세스를 중지합니다.

  4. GRUB 메뉴에서 화살표 키를 사용하여 부팅할 커널을 선택하고 키보드에서 e 키를 누릅니다.

  5. 화살표 키를 사용하여 커널이 있는 줄에 커서를 놓습니다. 이 줄은 인스턴스를 시작할 때 사용된 AMI에 따라 linux 또는 linux16으로 시작됩니다. Ubuntu의 경우 두 줄이 linux로 시작되며 다음 단계에서 수정해야 합니다.

  6. 줄 끝에 single 단어를 추가합니다.

    다음은 Amazon Linux 2의 예제입니다.

    linux /boot/vmlinuz-4.14.193-149.317.amzn2.aarch64 root=UUID=d33f9c9a-\ dadd-4499-938d-ebbf42c3e499 ro console=tty0 console=ttyS0,115200n8 net.ifname\ s=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.she\ ll=0 single
  7. Ctrl+X 키를 눌러 단일 사용자 모드로 부팅합니다.

  8. login 프롬프트에서 이전에 설정한 암호 기반 사용자의 사용자 이름을 입력한 다음 Enter 키를 누릅니다.

  9. Password 프롬프트에서 암호를 입력한 다음 Enter 키를 누릅니다.

 

응급 모드로 부팅하려면

단일 사용자 모드와 동일한 단계를 따르되 6단계에서 single 대신 emergency라는 단어를 추가합니다.

"매직 SysRq"라고도 하는 시스템 요청(SysRq) 키를 사용하면 셸 외부에서 커널에 직접 명령을 전송할 수 있습니다. 커널은 수행하는 작업과 관계없이 응답합니다. 예를 들어 인스턴스가 응답을 중지한 경우 SysRq 키를 사용하여 커널에 충돌 또는 재부팅을 지시할 수 있습니다. 자세한 내용은 Wikipedia에서 Magic SysRq key를 참조하세요.

EC2 직렬 콘솔 브라우저 기반 클라이언트 또는 SSH 클라이언트에서 SysRq 명령을 사용할 수 있습니다. 중단 요청을 보내는 명령은 클라이언트마다 다릅니다.

SysRq를 사용하려면 사용 중인 클라이언트에 따라 다음 절차 중 하나를 선택합니다.

Browser-based client
직렬 콘솔 브라우저 기반 클라이언트에서 SysRq를 사용하려면
  1. 인스턴스의 직렬 콘솔에 연결합니다.

  2. 중단 요청을 보내려면 CTRL+0(영)을 누릅니다. 키보드가 지원하는 경우 Pause 또는 Break 키를 사용하여 중단 요청을 보낼 수도 있습니다.

    [ec2-user ~]$ CTRL+0
  3. SysRq 명령을 실행하려면 키보드에서 필요한 명령에 해당하는 키를 누릅니다. 예를 들어 SysRq 명령 목록을 표시하려면 h 키를 누릅니다.

    [ec2-user ~]$ h

    h 명령은 다음과 비슷한 결과를 출력합니다.

    [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
SSH client
SSH 클라이언트에서 SysRq를 사용하려면
  1. 인스턴스의 직렬 콘솔에 연결합니다.

  2. 중단 요청을 보내려면 ~B(물결표 다음에 대문자 B)를 누릅니다.

    [ec2-user ~]$ ~B
  3. SysRq 명령을 실행하려면 키보드에서 필요한 명령에 해당하는 키를 누릅니다. 예를 들어 SysRq 명령 목록을 표시하려면 h 키를 누릅니다.

    [ec2-user ~]$ h

    h 명령은 다음과 비슷한 결과를 출력합니다.

    [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
    참고

    중단 요청을 보내는 데 사용하는 명령은 사용 중인 SSH 클라이언트에 따라 다를 수 있습니다.

Windows의 Special Admin Console(SAC) 기능은 Windows 인스턴스 문제를 해결할 수 있는 방법을 제공합니다. 인스턴스의 직렬 콘솔에 연결하고 SAC를 사용하여 부팅 프로세스를 중단하고 Windows를 안전 모드로 부팅할 수 있습니다.

참고

인스턴스에서 SAC를 활성화하면 암호 검색에 의존하는 EC2 서비스가 Amazon EC2 콘솔에서 작동하지 않습니다. Amazon EC2 Windows 시작 에이전트(EC2Config, EC2Launch v1 및 EC2Launch v2)는 직렬 콘솔을 사용하여 다양한 작업을 실행합니다. 인스턴스에서 SAC를 사용 설정하면 이러한 작업이 성공적으로 수행되지 않습니다. Amazon EC2 Windows 시작 에이전트에 대한 자세한 내용은 Windows 인스턴스 구성 섹션을 참조하세요. SAC를 활성화하면 나중에 비활성화할 수 있습니다. 자세한 내용은 SAC 및 부팅 메뉴 비활성화 단원을 참조하십시오.

SAC 사용

SAC를 사용하려면
  1. 직렬 콘솔에 연결합니다.

    SAC가 인스턴스에서 활성화된 경우 직렬 콘솔에 SAC> 프롬프트가 표시됩니다.

    직렬 콘솔에 표시된 SAC 프롬프트입니다.
  2. SAC 명령을 표시하려면 ?를 입력하고 Enter를 누릅니다.

    예상 결과

    물음표를 입력하면 SAC 명령이 표시됩니다.
  3. 명령 프롬프트 채널(예: cmd0001 또는 cmd0002)을 생성하려면 cmd를 입력한 다음 Enter를 누릅니다.

  4. 명령 프롬프트 채널을 보려면 ESC를 누른 다음 TAB을 누릅니다.

    예상 결과

    명령 프롬프트 채널입니다.
  5. 채널을 전환하려면 ESC+TAB+채널 번호를 함께 누릅니다. 예를 들어, cmd0002 채널(생성된 경우)로 전환하려면 ESC+탭+2를 누릅니다.

  6. 명령 프롬프트 채널에 필요한 자격 증명을 입력합니다.

    보안 인증이 필요한 명령 프롬프트입니다.

    명령 프롬프트는 이미 출력된 문자를 읽을 수 없다는 점을 제외하고 데스크톱에서 사용할 수 있는 모든 기능을 갖춘 명령 셸입니다.

    모든 기능이 제공되는 명령 쉘입니다.

명령 프롬프트에서 PowerShell을 사용할 수도 있습니다.

참고로 진행률 기본 설정을 자동 모드로 설정해야 할 수 있습니다.

명령 프롬프트 내의 PowerShell입니다.

부팅 메뉴 사용

인스턴스에 부팅 메뉴가 활성화되어 있는 경우 SSH를 통해 연결한 후 다시 시작하면 다음과 같이 부팅 메뉴가 표시됩니다.

명령 프롬프트의 부팅 메뉴입니다.

부팅 메뉴 명령

ENTER

선택한 운영 체제 항목을 시작합니다.

Tab

도구 메뉴로 전환합니다.

ESC

인스턴스를 취소하고 다시 시작합니다.

ESC 다음에 8

F8키를 누르는 것과 같습니다. 선택한 항목에 대한 고급 옵션을 표시합니다.

ESC 키+왼쪽 화살표

초기 부팅 메뉴로 돌아갑니다.

참고

ESC 키만 누르면 Windows가 이스케이프 시퀀스가 진행 중인지 확인하기 위해 기다리기 때문에 주 메뉴로 돌아가지 않습니다.

고급 부팅 옵션입니다.

SAC 및 부팅 메뉴 비활성화

SAC 및 부팅 메뉴를 활성화하면 나중에 이러한 기능을 비활성화할 수 있습니다.

다음 방법 중 하나를 사용하여 인스턴스에서 SAC 및 부팅 메뉴를 비활성화합니다.

PowerShell
Windows 인스턴스에서 SAC 및 부팅 메뉴 활성화
  1. 인스턴스에 연결하고 상승된 PowerShell 명령줄에서 다음 단계를 수행합니다.

  2. 먼저 값을 no로 변경하여 부팅 메뉴를 비활성화합니다.

    bcdedit /set '{bootmgr}' displaybootmenu no
  3. 그런 다음 값을 off로 변경하여 SAC를 비활성화합니다.

    bcdedit /ems '{current}' off
  4. 인스턴스를 재부팅하여 업데이트된 구성을 적용합니다.

    shutdown -r -t 0
Command prompt
Windows 인스턴스에서 SAC 및 부팅 메뉴 활성화
  1. 인스턴스에 연결하고 명령 프롬프트에서 다음 단계를 수행합니다.

  2. 먼저 값을 no로 변경하여 부팅 메뉴를 비활성화합니다.

    bcdedit /set {bootmgr} displaybootmenu no
  3. 그런 다음 값을 off로 변경하여 SAC를 비활성화합니다.

    bcdedit /ems {current} off
  4. 인스턴스를 재부팅하여 업데이트된 구성을 적용합니다.

    shutdown -r -t 0