공유할 서비스 선택

TECH


TECH

OS Kdump 에 대해 알아보는 시간~!!

페이지 정보

작성자 OSworker 아이디로 검색 전체게시물 댓글 0건 조회 3,477회 좋아요 1회 작성일 23-09-21 18:30

본문

 

안녕하세요 여러분~!!

오늘은  Kdump 에 대해 알아보겠습니다.

 

 

1. kdump 및 kexec 소개 

 

kdump 는 크래시 덤프 메커니즘을 제공하는 서비스입니다. 이 서비스를 사용하면 분석을 위해 시스템 메모리의 내용을 저장할 수 있습니다. 

 

kdump 는 kexec 시스템 호출을 사용하여 재부팅하지 않고 두 번째 커널(커널 캡처)으로 부팅한 다음 충돌된 커널 메모리 ( crash dump 또는 vmcore)의 콘텐츠를 캡처하여 파일에 저장합니다. 두 번째 커널은 시스템 메모리의 예약된 부분에 있습니다.

  

----중요----

커널 크래시 덤프는 실패 시 사용할 수 있는 유일한 정보일 수 있으며, 비즈니스에 중요한 환경에서 이 데이터를 갖는 것의 중요성은 과소평가할 수 없습니다. Red Hat은 시스템 관리자가 일반 커널 업데이트 주기에서 kexec-tools 를 정기적으로 업데이트하고 테스트하는 것이 좋습니다. 이는 새로운 커널 기능을 구현할 때 특히 중요합니다 

------------ 

 

 

2.  메모리 요구 사항 

     kdump가 커널 크래시 덤프를 캡처하여 추가 분석을 위해 저장할 수 있으려면 캡처 커널에 대해 시스템 메모리의 일부를 영구적으로 예약해야 합니다. 예약된 경우 시스템 메모리의 이 부분은 기본 커널에서 사용할 수 없습니다.

 

 

 

1) kdump 설치 

        -    기본적으로 OS 설치 시 Kdump를 활성화 하게 되면 자동으로 설치가 됩니다. 하지만

  

   >  설치가 안 된  서버라면 아래와 같이 진행합니다.

 # yum install kexec-tools

  # yum install system-config-kdump

 

 

 2) kdump 설정

       kdump 커널용으로 예약된 메모리를 지정하려면 crashkernel= 옵션을 필수 값으로 설정합니다. 예를 들어 128MB의 메모리를 예약하려면 다음을 사용합니다.

 

 Ex) grub2.cfg

 root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet crashkernel=512M

 

  

3) kdump 디렉토리 설정 

        - 로컬 파일 시스템의 /var/crash/ 디렉터리에 vmcore 파일을 저장하려면 /etc/kdump.conf 파일을 편집하고 경로를 지정합니다.

  

주의.  물리적 메모리가 20G라고 가정하면 vmcore를 받을  /var/crash 디렉토리는 20G 보다 커야합니다. 메모리가 20G로 꽉차있다면, 그것을 다 내려받아야하기 때문입니다. 하지만, 실제로는 그렇게 다 떨어지진 않습니다. 하지만 레드햇 권고입니다~

 

 Ex)

# etc/kdump.conf 

......

ext4 /dev/mapper/vg00-varcrashvol

path /var/crash 

core_collector makedumpfile -c --message-level 1 -d 31 

..... 


4)  서비스 활성화

 

-    쉘 프롬프트에 root 로 다음을 입력합니다.

# systemctl enable kdump.service 

 # systemctl start kdump.service

 

4.     

     4. kdump 설정 테스트

        - 쉘 프롬프트에 다음 명령을 입력합니다.

 

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

# echo c > /proc/sysrq-trigger

  

이렇게 하면 Linux 커널이 충돌하게 되며 주소-YYYY-MM-DD-HH:MM:SS/vmcore 파일이 구성에서 선택한 위치에 복사됩니다(즉, 기본적으로 /var/crash/ 로 변경).

  

ls -al /var/crash/

 

-rw------- 1 root root 123456789012 May 22 04:12 vmcore

-rw-r--r-- 1 root root 77206 May 22 04:12 vmcore-dmesg.txt 

 

위 vmcore를 레드햇에 분석요청을 하면 원인을 파악해줍니다. 

 

 

여기까지가 기본적으로 레드햇에서 가이드 문서에서 설명하는 내용입니다. 

  

제가 실제로 사용하는 설정에 대해 설명드립니다~

 

# cat etc/grub2.cfg

 

.... crashkernel=auto  ..... 

 

 

 # cat etc/sysctl.conf

 kernel.unknown_nmi_panic=1

 kernel.sysrq = 1

 kernel.panic_on_unrecovered_nmi = 1

 kernel.panic_on_io_nmi = 1

 

 설명:

 * kernel.unknown_nmi_panic

   - default: 0

   - 1인 경우 커널이 H/W로 부터 인식 할 수 없는 NMI 신호를 받을 경우 패닉 발생

   - 일반적으로 NMI 스위치를 수동으로 눌러 정의 되지 않은 NMI 생성

   - NMI watch dog thread는 정의 되지 않은 NMI를 사용하기 때문에 kernel.nmi_watchdog를 1로 설정하면 kernel.unknown_nmi_panic 값은 0이어야 함

 

* kernel.panic_on_unrecovered_nmi

   - default: 0

   - 1인 경우 복구 불가능한 parity 또는 ECC 메모리 오류를 나타내는 알 수 없는 NMI가 감지 된경우 패닉

 

* kernel.panic_on_io_nmi

  - 커널이 일반적으로 수정할 수 없는 I/O 오류로 인해 NMI(Non Maskable Interrupt)가 발생 할 경우 패닉 허용 여부 

 

 

# cat etc/kdump.conf

path /kdump          <-- 직관적으로 쉽게 알수있게 디렉토리를 따로 만들었습니다. 메모리의 1.5배 

                           하지만 제경험상으로 20G 이상 떨어진적이 없어 최대 50G 설정해놓습니다. 

core_collector makedumpfile -l --message-level 1 -d 31    <---  전 딱히 레벨을 변경하지 않았습니다. 레벨 

                                                                     변경 시 파일이 더 커 질수있습니다.

  

그리고 이건 경험인데요, 제가 기술지원을 다니면서 Kdump를 꼭 하는 사이트가 있고, 절대 안하는 사이트들이 있었습니다.

  

-  설정하는 사이트 : 정확한 원인이 꼭 필요하다고 생각하는 사이트들입니다. 그리고 서비스가 모두 이중화 되어있어서, 1대가 죽어도 크게 상관않하는 곳.

-  설정 안하는 사이트: 서비스가 먼저인곳, 사실 vmcore가 떨어지게되면 얼마나 걸릴지 아무도 모릅니다. 서버가 재부팅될때까지 무조건 기다려야합니다. 

                          그래서 서비스를 먼저 복구하려고 서버가 패닉걸리면 그냥 재부팅을 해버립니다.

 

저의 개인적 경험이니  참고만하세요~^^

 

 

 

감사합니다.

 

 

 

참고사이트 : https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/7/html-single/kernel_administration_guide/index#chap-introduction-to-kdump

 

댓글목록

등록된 댓글이 없습니다.

TECH 목록
번호 제목 작성자 작성일 조회수
171 Middleware 미들웨어 아이디로 검색 전체게시물 10-11 1273
(MSA 개발-3) MSA 파일(JAVA)분석

카테고리 : Middleware

1,273 0
작성자 : 미들웨어 23/10/11
170 OS OSworker 아이디로 검색 전체게시물 10-09 4122
authselect를 사용하여 사용자 인증 구성에 대해 알아보겠습니다. #pam_faillock #pam.d

카테고리 : OS

4,122 0
작성자 : OSworker 23/10/09
169 OS OSworker 아이디로 검색 전체게시물 09-30 9084
Red Hat Subscription-Manager 사용법에 대해 알아보겠습니다~

카테고리 : OS

9,084 0
작성자 : OSworker 23/09/30
168 OS OSworker 아이디로 검색 전체게시물 09-25 2000
Stratis 파일시스템에 대해 들어보셨나요?

카테고리 : OS

2,000 0
작성자 : OSworker 23/09/25
167 Middleware 미들웨어 아이디로 검색 전체게시물 09-22 1323
(MSA 개발-2) Oracle DB & SpringBoot MSA 응용 프로그램 테스트

카테고리 : Middleware

1,323 0
작성자 : 미들웨어 23/09/22
열람중 OS OSworker 아이디로 검색 전체게시물 09-21 3478
열람중
Kdump 에 대해 알아보는 시간~!!

카테고리 : OS

3,478 0
작성자 : OSworker 23/09/21
165 Middleware 미들웨어 아이디로 검색 전체게시물 09-11 6728
(MSA 개발-1) Oracle DB를 사용한 SpringBoot 마이크로서비스

카테고리 : Middleware

6,728 0
작성자 : 미들웨어 23/09/11
164 OS OSworker 아이디로 검색 전체게시물 08-30 4981
Red Hat Linux lifecycle

카테고리 : OS

4,981 0
작성자 : OSworker 23/08/30
163 Middleware 미들웨어 아이디로 검색 전체게시물 08-21 1762
(MSA 개발 환경 구성-2) Oracle DB (Docker)& SQLcl 구성

카테고리 : Middleware

1,762 0
작성자 : 미들웨어 23/08/21
162 OS OSworker 아이디로 검색 전체게시물 08-20 2043
Live kernel patch - 온라인 커널 업데이트

카테고리 : OS

2,043 0
작성자 : OSworker 23/08/20
Total 301건
게시물 검색

주식회사 클럭스| 대표 : 이찬호| 사업자등록번호 : 107-87-27655
주소 : 서울특별시 영등포구 국회대로 800, 여의도파라곤
E-mail : sales@chlux.co.kr
Copyright © 클럭스 www.chlux.co.kr All rights reserved.
상단으로Top