티스토리 뷰

만약 RedHat 계정이 있다면 아래 RedHat 솔루션 페이지를 한번 읽어볼것을 권장한다.

hung_task_panic 설정의 경우 Rocky Linux라고 다르지 않다.
실제 CentOS 7에서도 동일하게 설정이 가능하다.

hung_task_panic 설정

hung_task_panic 에 따른 vmcore를 분석해야 하는 경우 다음과 같은 설정을 수행해야 한다.
먼저 CentOS와 동일하게 kdump가 동작중이어야 한다.

[root@localhost rocky]# systemctl status kdump
● kdump.service - Crash recovery kernel arming
   Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2021-10-23 10:34:10 UTC; 3 days ago
 Main PID: 875 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 23554)
   Memory: 0B
   CGroup: /system.slice/kdump.service

Oct 23 10:34:09 dubaek-testvm.novalocal systemd[1]: Starting Crash recovery kernel arming...
Oct 23 10:34:10 dubaek-testvm.novalocal kdumpctl[875]: kdump: kexec: loaded kdump k
nel
Oct 23 10:34:10 dubaek-testvm.novalocal kdumpctl[875]: kdump: Starting kdump: [OK]`
Oct 23 10:34:10 dubaek-testvm.novalocal systemd[1]: Started Crash recovery kernel arming.

kdump가 위와 같이 동작되는 환경에서 아래 설정을 추가한다.

[root@localhost rocky]# echo 1 > /proc/sys/kernel/hung_task_panic

NOTE
실제 위 설정은 permanent 한 설정이 아니기에 지속적으로 설정하고자 한다면
/etc/sysctl.conf에 kernel.hung_task_panic = 1을 추가해 놓자

참고사항으로 아래 timeout 이상의 시간을 hung_task_panic 발생까지 기다리게 된다.
잘못된 재부팅과 hung_task_panic 상황을 만들기 싫다면 해당 timeout 시간을 늘리는것도 하나의 방법이다.

[root@localhost rocky]# cat /proc/sys/kernel/hung_task_timeout_secs
120

hung_task_panic 테스트

실제 hung_task_panic을 1로 설정하고 정상적으로 hung_task에 대한 panic이 발생되는지 확인을 위해
다음과 같은 작업을 수행해보자.

테스트를 위해서는 하나의 서버에 두개의 terminal을 연결이 필요하다.
먼저 첫번째 terminal에서는 다음 명령을 수행한다.

[root@localhost rocky]# while true; do dd if=/dev/zero of=/tmp/dd_tempfile bs=15 count=2100; done

두번째 terminal에서는 다음 명령을 수행한다.
아래 명령을 수행함과 동시에 첫번째 terminal에서 동작되던 dd는 멈추게 된다.

[root@localhost rocky]# fsfreeze -f /tmp

위 과정이 수행하고 나면 처음에는 별다른 반응이 없고 terminal도 정상적으로 동작되나
앞서 확인했던 hung_task_timeout_secs 이상의 시간이 소요되면 (hung_task로 판별되는데에 시간이 좀더 소요되는것으로 예상)
해당 서버가 강제로 재부팅되는것을 확인할 수 있다.

실제 재부팅 이후에 다음과 같은 vmcore 파일이 생성되었음을 확인할수 있다.

[root@localhost rocky]# cd /var/crash/
[root@localhost 127.0.0.1-2021-11-01-09:03:24]# pwd
/var/crash/127.0.0.1-2021-11-01-09:03:24
[root@localhost 127.0.0.1-2021-11-01-09:03:24]# ls -al
total 134272
drwxr-xr-x. 2 root root        67 Nov  1 09:03 .
drwxr-xr-x. 3 root root        43 Nov  1 09:03 ..
-rw-r--r--. 1 root root     41468 Nov  1 09:03 kexec-dmesg.log
-rw-------. 1 root root 137407493 Nov  1 09:03 vmcore
-rw-r--r--. 1 root root     40025 Nov  1 09:03 vmcore-dmesg.txt

참고사이트

'os > Linux' 카테고리의 다른 글

print net_ratelimit in the message  (0) 2022.02.15
process max open files with systemd  (0) 2021.11.24
How to occur hung_task_panic on Rocky Linux  (0) 2021.11.03
Ubuntu CVE Status  (0) 2021.03.17
KVM with NAT network  (0) 2021.01.27
Occuring timeout when use apt or curl or wget on WSL2  (0) 2020.11.29
댓글
댓글쓰기 폼