소개
이 문서에서는 CentOS 커널 충돌로 인한 CPS(Cisco Policy Suite) VM 재시작 문제를 해결하는 방법을 설명합니다.
문제
각 CPS VM(qns,lb,pcrfclient 등)은 CentOS를 기반으로 실행됩니다. 이러한 VM은 CPS 애플리케이션 측의 문제가 아니라 CentOS 측의 문제로 인해 재부팅될 수 있습니다. CentOS 커널에 문제가 있어 재부팅이 발생하면 CPS capture_env를 조사해도 근본 원인을 찾을 수 없습니다. capture_env 로그에는 재부팅 중에 재부팅된 VM의 오류 로그가 포함되지 않습니다. 이러한 경우 /var/crash 아래의 로그를 조사에 사용할 수 있습니다.
솔루션
CentOS는 커널에 문제가 발생하는 경우 커널 크래시 덤프를 생성할 수 있습니다. 기본적으로 CPS는 모든 VM에 대한 커널 충돌 덤프를 수집하도록 구성됩니다.
이 명령을 사용하여 상태를 확인할 수 있습니다.
[root@dc1-qns01 ~]# systemctl status kdump.service
● kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
Active: active (exited) since Tue 2023-01-10 07:29:35 UTC; 4 months 4 days ago
Main PID: 1023 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 75300)
Memory: 0
CGroup: /system.slice/kdump.service
kdump.service가 활성화된 상태에서 커널 충돌이 발생하면 /var/crash 아래에 "address-YYYY-MM-DD-HH:MM:SS"라는 이름의 디렉토리가 생성됩니다. CentOS는 이 디렉토리 아래에 2개의 파일을 생성합니다.
[root@dc1-lb02 127.0.0.1-2022-10-18-06:18:41]# pwd
/var/crash/127.0.0.1-2022-10-18-06:18:41
[root@dc1-lb02 127.0.0.1-2022-10-18-06:18:41]# ls -rtl
total 161436
-rw-r--r-- 1 root root 89787 Oct 18 2022 vmcore-dmesg.txt
-rw------- 1 root root 165215218 Oct 18 2022 vmcore
- vmcore:
커널 메모리의 내용을 이진 파일로 저장하는 파일입니다. 분석에는 kernel-debuginfo 및 crash와 같은 툴이 필요합니다.
- vmcore-dmesg.txt:
충돌이 발생할 때 dmesg 텍스트 파일입니다.
예를 들어, CPS 측의 로그에서는 재부팅된 VM의 로그에서 리부팅 직전의 오류 로그가 확인되지 않았습니다. VMWare 측의 분석 결과, 게스트 OS에 의해 유발될 수 있는 이 오류 로그에서 재부팅이 발생했습니다.
The CPU has been disabled by the guest operating system. Power off or reset the virtual machine.
리부팅 시간과 일치하는 디렉토리가 있는 경우 리부팅된 VM의 /var/crash를 확인합니다. 리부팅이 CentOS 측의 커널 문제 때문인 것으로 확인되어 추가 조사를 진행할 수 있었습니다.