SysRq 및 NMI 호출에 Azure 직렬 콘솔 사용
적용 대상: ✔️ Linux VM
시스템 요청(SysRq)
SysRq는 미리 정의된 작업 집합을 트리거할 수 있는 Linux 운영 시스템 커널에서 이해하는 키 시퀀스입니다. 이러한 명령은 기존 관리를 통해 가상 머신 문제 해결 또는 복구를 수행할 수 없는 경우(예: VM이 응답하지 않는 경우) 자주 사용됩니다. Azure 직렬 콘솔의 SysRq 기능을 사용하면 물리적 키보드에 입력된 SysRq 키와 문자를 누르는 것을 모방합니다.
SysRq 시퀀스가 전달되면 커널 구성이 시스템의 응답 방식을 제어합니다. SysRq를 사용하도록 설정하고 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 SysRq 관리 가이드 텍스트 | markdown을 참조하세요.
아래 표시된 명령줄에서 키보드 아이콘을 사용하여 SysRq를 Azure Virtual Machine에 전송하는 데 Azure 직렬 콘솔을 사용할 수 있습니다.
"SysRq 명령 보내기"를 선택하면 대화 상자가 열리고, 이 대화 상자는 일반적인 SysRq 옵션을 제공하거나 대화 상자에 입력된 SysRq 명령 시퀀스를 수락합니다. 이렇게 하면 일련의 SysRq가 다음을 사용하여 안전한 재부팅과 같은 높은 수준의 작업을 수행할 수 있습니다 REISUB
.
SysRq 명령은 중지되었거나 커널이 응답하지 않는 상태인 가상 머신에서 사용할 수 없습니다. (예: 커널 패닉)
SysRq 사용
위의 SysRq 관리자 가이드에 설명된 대로 모두, 없음 또는 특정 명령만 사용할 수 있도록 SysRq를 구성할 수 있습니다. 아래 단계를 사용하여 모든 SysRq 명령을 사용하도록 설정할 수 있지만 재부팅 시 유지되지는 않습니다.
echo "1" >/proc/sys/kernel/sysrq
SysReq 구성을 영구적으로 설정하려면 다음을 수행하여 모든 SysRq 명령을 사용하도록 설정할 수 있습니다.
- /etc/sysctl.conf에 이 줄 추가
kernel.sysrq = 1
- 실행하여 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 |
모든 armed hrtimers(일반 timer_list 타이머 아님)의 CPU 목록당 덤프하고 모든 클록 이벤트 디바이스에 대한 자세한 정보를 덤프합니다. |
r |
키보드 원시 모드를 해제하고 XLATE로 설정합니다. |
s |
탑재된 모든 파일 시스템을 동기화하려고 시도합니다. |
t |
현재 작업 및 해당 정보의 목록을 콘솔에 덤프합니다. |
u |
탑재된 모든 파일 시스템을 읽기 전용으로 다시 탑재하려고 시도합니다. |
v |
프레임 버퍼 콘솔을 강제로 복원합니다. |
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를 구성하는 단계는 아래 링크를 참조하세요.
Ubuntu
Red Hat
SUSE
CoreOS
NMI(마스크 불가능 인터럽트)
NMI(마스크할 수 없는 인터럽트)는 가상 머신의 소프트웨어가 무시하지 않는다는 신호를 생성하도록 설계되었습니다. 지금까지 NMI는 특정 응답 시간이 필요한 시스템의 하드웨어 문제를 모니터링하는 데 사용되었습니다. 오늘날 프로그래머와 시스템 관리자는 응답하지 않는 시스템을 디버그하거나 문제를 해결하는 메커니즘으로 NMI를 사용하는 경우가 많습니다.
아래 표시된 명령줄에서 키보드 아이콘을 사용하여 NMI를 Azure 가상 머신에 전송하는 데 직렬 콘솔을 사용할 수 있습니다. NMI가 전달되면 가상 머신 구성이 시스템 응답 방법을 제어합니다. 운영 체제가 NMI를 수신하는 메모리 덤프를 크래시하고 만들도록 Linux 운영 체제를 구성할 수 있습니다.
NMI 사용
커널 매개 변수를 구성하기 위해 sysctl을 지원하는 Linux 시스템의 경우 다음을 사용하여 이 NMI를 수신할 때 패닉을 사용하도록 설정할 수 있습니다.
- /etc/sysctl.conf에 이 줄 추가
kernel.panic_on_unrecovered_nmi=1
- 실행하여 sysctl 다시 부팅 또는 업데이트
sysctl -p
Linux 커널 구성unknown_nmi_panic
panic_on_io_nmi
panic_on_unrecovered_nmi
에 대한 자세한 내용은 다음을 참조하세요. /proc/sys/kernel/*에 대한 설명서입니다. NMI의 배포 관련 설명서 및 NMI를 수신하는 경우 크래시 덤프를 만들도록 Linux를 구성하는 단계는 아래 링크를 참조하세요.
Ubuntu
Red Hat
SUSE
CoreOS
다음 단계
- 주 직렬 콘솔 Linux 설명서 페이지는 여기에 있습니다.
- 직렬 콘솔을 사용하여 GRUB로 부팅하고 단일 사용자 모드로 전환
- 직렬 콘솔은 Windows VM에도 사용할 수 있습니다.
- 부트 진단에 대해 자세히 알아보기
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.