SysRq 및 NMI 호출에 Azure 직렬 콘솔 사용

시스템 요청(SysRq)

SysRq는 미리 정의된 작업 집합을 트리거할 수 있는 Linux 운영 시스템 커널에서 이해하는 키 시퀀스입니다. 이러한 명령은 가상 머신 문제 해결 또는 복구를 기존 관리를 통해 수행할 수 없는 경우(예: VM이 응답하지 않는 경우) 자주 사용됩니다. Azure 직렬 콘솔의 SysRq 기능을 사용하면 실제 키보드에 입력된 SysRq 키와 문자를 누르는 것을 모방합니다.

SysRq 시퀀스가 전달되면 커널 구성이 시스템의 응답 방식을 제어합니다. SysRq를 사용하도록 설정하고 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 SysRq 관리 가이드텍스트 | markdown을 참조하세요.

Azure 직렬 콘솔을 사용하여 아래 표시된 명령 모음의 키보드 아이콘을 사용하여 Azure 가상 머신에 SysRq를 보낼 수 있습니다.

Azure 직렬 콘솔의 스크린샷. 키보드 아이콘이 강조 표시되고 해당 메뉴가 표시됩니다. 해당 메뉴에는 SysRq 명령 보내기 항목이 포함되어 있습니다.

"SysRq 명령 보내기"를 선택하면 대화 상자가 열리며, 이 대화 상자는 일반적인 SysRq 옵션을 제공하거나 대화 상자에 입력된 SysRq 명령 시퀀스를 수락합니다. 이렇게 하면 일련의 SysRq가 를 사용하여 안전한 다시 부팅과 같은 상위 수준 작업을 수행할 수 있습니다 REISUB.

입력 키 옵션이 선택되고 REISUB가 아래 필드에 입력될 때 SysRq 명령을 게스트로 보내기 대화 상자의 스크린샷

SysRq 명령은 중지되었거나 커널이 응답하지 않는 상태에 있는 가상 머신에서 사용할 수 없습니다. (예: 커널 패닉).

SysRq 사용

위의 SysRq 관리 가이드에 설명된 대로 모든 명령, 없음 또는 특정 명령만 사용할 수 있도록 SysRq를 구성할 수 있습니다. 아래 단계를 사용하여 모든 SysRq 명령을 사용하도록 설정할 수 있지만 다시 부팅 시 유지되지는 않습니다.

echo "1" >/proc/sys/kernel/sysrq

SysReq 구성을 영구적으로 설정하려면 다음을 수행하여 모든 SysRq 명령을 사용하도록 설정할 수 있습니다.

  1. /etc/sysctl.conf에 이 줄 추가
    kernel.sysrq = 1
  2. 를 실행하여 sysctl 다시 부팅 또는 업데이트
    sysctl -p

명령 키

위의 SysRq 관리 가이드에서 다음을 수행합니다.

명령 함수
b 디스크를 동기화하거나 분리하지 않고 시스템을 즉시 다시 부팅합니다.
c NULL 포인터 역참조로 시스템 크래시가 수행됩니다. 구성된 경우 크래시덤프가 발생합니다.
d 보유된 모든 잠금을 표시합니다.
e init를 제외한 모든 프로세스에 SIGTERM을 보냅니다.
f 메모리 돼지 프로세스를 죽일 oom 킬러를 호출하지만, 아무것도 죽일 수없는 경우 당황하지 않습니다.
g kgdb에서 사용(커널 디버거)
h 도움말을 표시합니다(여기에 나열된 키 이외의 다른 키는 도움말도 표시하지만 h 기억하기 쉽습니다.-)
i init를 제외한 모든 프로세스에 SIGKILL을 보냅니다.
j 강제로 "그냥 해동"- FIFREEZE ioctl에 의해 고정 파일 시스템.
k SAK(보안 액세스 키)는 현재 가상 콘솔의 모든 프로그램을 종료합니다. 참고: SAK 섹션에서 아래의 중요한 의견을 참조하세요.
l 모든 활성 CPU에 대한 스택 백트레이스를 표시합니다.
m 현재 메모리 정보를 콘솔에 덤프합니다.
n RT 작업을 멋지게 만드는 데 사용됨
o 시스템이 종료됩니다(구성되고 지원되는 경우).
p 현재 레지스터와 플래그를 콘솔에 덤프합니다.
q 모든 무장 hrtimer(일반 timer_list 타이머는 아님)의 CPU 목록당 덤프하고 모든 clockevent 디바이스에 대한 자세한 정보를 덤프합니다.
r 키보드 원시 모드를 해제하고 XLATE로 설정합니다.
s 탑재된 모든 파일 시스템을 동기화하려고 시도합니다.
t 현재 작업 및 해당 정보의 목록을 콘솔에 덤프합니다.
u 탑재된 모든 파일 시스템을 읽기 전용으로 다시 탑재하려고 시도합니다.
v Framebuffer 콘솔을 강제로 복원합니다.
v ETM 버퍼 덤프 발생 [ARM별]
w 무정전(차단됨) 상태인 작업을 덤프합니다.
x ppc/powerpc 플랫폼의 xmon 인터페이스에서 사용됩니다. sparc64에 전역 PMU 레지스터를 표시합니다. MIPS에서 모든 TLB 항목을 덤프합니다.
y 전역 CPU 레지스터 표시 [SPARC-64 특정]
z ftrace 버퍼 덤프
0-9 콘솔 로그 수준을 설정하여 콘솔에 인쇄할 커널 메시지를 제어합니다. (0예를 들어 PANIC 또는 OOPSes와 같은 긴급 메시지만 콘솔로 만들도록 만들 수 있습니다.)

배포 관련 설명서

SysRq에 대한 배포 관련 설명서 및 SysRq "Crash" 명령을 받을 때 크래시 덤프를 만들도록 Linux를 구성하는 단계는 아래 링크를 참조하세요.

우분투

Red Hat

Suse

CoreOS

NMI(마스크할 수 없는 인터럽트)

NMI(마스크할 수 없는 인터럽트)는 가상 머신의 소프트웨어가 무시하지 않는다는 신호를 생성하도록 설계되었습니다. 지금까지 NMI는 특정 응답 시간이 필요한 시스템의 하드웨어 문제를 모니터링하는 데 사용되었습니다. 오늘날 프로그래머와 시스템 관리자는 응답하지 않는 시스템을 디버그하거나 문제를 해결하는 메커니즘으로 NMI를 사용하는 경우가 많습니다.

직렬 콘솔을 사용하여 아래 표시된 명령 모음의 키보드 아이콘을 사용하여 Azure 가상 머신에 NMI를 보낼 수 있습니다. NMI가 전달되면 가상 머신 구성은 시스템의 응답 방식을 제어합니다. 운영 체제가 NMI를 수신하는 메모리 덤프를 크래시하고 만들도록 Linux 운영 체제를 구성할 수 있습니다.

직렬 콘솔의 스크린샷 키보드 아이콘이 강조 표시되고 해당 메뉴가 표시됩니다. 해당 메뉴에는 마스크할 수 없는 인터럽트 보내기 항목이 포함되어 있습니다.

NMI 사용

커널 매개 변수를 구성하기 위한 sysctl을 지원하는 Linux 시스템의 경우 다음을 사용하여 이 NMI를 수신할 때 패닉을 사용하도록 설정할 수 있습니다.

  1. /etc/sysctl.conf에 이 줄 추가
    kernel.panic_on_unrecovered_nmi=1
  2. 를 실행하여 sysctl 다시 부팅 또는 업데이트
    sysctl -p

, 및 를 비롯한 Linux 커널 구성에 대한 자세한 내용은 /proc/sys/kernel/*에 대한 설명서를 참조하세요.unknown_nmi_panicpanic_on_io_nmipanic_on_unrecovered_nmi NMI에 대한 배포 관련 설명서 및 NMI를 받을 때 크래시 덤프를 만들도록 Linux를 구성하는 단계는 아래 링크를 참조하세요.

우분투

Red Hat

Suse

CoreOS

다음 단계

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.