kdump
kdump는 커널 패닉 이벤트 시에 충돌 덤프를 생성하는 리눅스 커널의 한 부분이다. Kdump가 발생하면 디버깅 목적으로 분석될 수 있고 충돌의 원인을 결정할 수 있는 메모리 이미지(또한 vmcore라고도 알려진)를 익스포트한다. ELF 객체로서 익스포트된 메인 메모리의 덤프된 이미지는 커널 충돌을 다루는 동안에 직접적으로 /proc/vmcore를 통해서 접근될 수 있으며 로컬상으로 접근 가능한 파일 시스템으로 또는 raw 디바이스 그리고 네트워크를 통해 접근 가능한 원격 시스템으로 자동으로 저장될 수 있다.[1][2]
내부
[편집]
커널 충돌이 일어나는 이벤트 발생 시에, kdump는 dump-capture kernel로 알려진 다른 리눅스 커널을 부팅함으로써 시스템의 일관성을 유지하며 이것을 메모리 덤프를 익스포트하고 저장하는데 사용한다. 결과적으로 시스템은 여러 문제들을 유발할 수 있는 이미 충돌된 커널 대신에 깨끗하고 신뢰성 있는 환경으로 부팅된다. 이 "듀얼 커널" 레이아웃을 구현하기 위해서 kdump는 kexec을 사용한다. kexec은 커널 충돌 이후에 즉시 덤프-캡처 커널로 부팅하며, kdump는 부트로더의 실행 없이 현재 실행 중인 커널로 부팅할 수 있는 kexec의 능력을 사용한다. 덤프-캡처 커널은 이 목적을 위한 독립적인 리눅스 커널 이미지이거나 또는 재배치 가능한 커널을 지원하는 아키텍처에서 재사용 가능한 주요 커널 이미지일 수 있다.[1][3][4][5]
부팅되고 덤프-캡처 커널을 실행하는 동안 미리 RAM의 작은 부분을 예약함으로써 메인 메모리(RAM)의 내용들은 보존된다. 또한 덤프-캡처 커널은 미리 로드되기 때문에 주요 커널에서 사용되는 RAM의 어떤 부분도 커널 충돌을 다루는 동안에 겹쳐써지지 않는다. 램의 이 보존된 부분은 덤프-캡처 커널에 의해서 사용되며 일반적인 시스템 동작에서는 사용되지 않는다. x86 같은 몇몇 아키텍처들은 어디에 로드되었는지와 상관 없이 커널을 부트하기 위해 RAM의 작은 고정된 위치 부분을 요구한다; 이 경우 kexec는 이 RAM의 부분의 복사본을 만들고 이것은 또한 덤프-캡처 커널에 의해 접근될 수 있다. RAM의 저장된 부분의 크기와 옵셔널 위치는 커널 부트 파라미터 crashkernel에 명시되며 kexec 명령줄 라인 유틸리티는 주요 커널이 덤프-캡처 커널을 미리 로드하고 initrd 이미지를 RAM의 보존된 부분에 관련시키기 위해 부팅된 이후에 사용된다.[1][3][4]
리눅스 커널의 한 부분인 기능 외에도 추가적인 사용자 공간 유틸리티들이 kdump 메카니즘을 지원하는데, 위에서 언급한 kexec 유틸리티가 그것이다.[1][4] kexec의 패치로서 제공되는 공식 유틸리티들 외에도 몇몇 리눅스 배포판은 kdump의 동작을 단순화하는 추가적인 유틸리티들을 제공하는데 메모리 덤프 파일의 자동화된 저장의 설치가 그것이다.[6][7][8] 생성된 덤프 파일들은 GDB를 사용하거나 레드햇의 충돌 전용 유틸리티를 사용해서 분석될 수 있다.[9][10]
역사
[편집]kdump 기능은 kexec와 함께 리눅스 커널 버전 2.6.13에 추가되었다.[11]
같이 보기
[편집]- debugfs - 리눅스 커널의 RAM 기반 파일 시스템으로서 디버깅 목적으로 설계되었다.
- kdump (BSD) - ktrace 유틸리티에 의해 생성된 트레이스 파일을 보는 용도의 BSD 유틸리티.
- 리눅스 커널 웁스 - 리눅스 커널의 잠재적으로 치명치 않은 비정상적 행동.
각주
[편집]- ↑ 가 나 다 라 Jonathan Corbet (2004년 10월 27일). “Crash dumps with kexec”. LWN.net. 2014년 8월 9일에 확인함.
- ↑ “13.2 About Kdump (Chapter 13: Support Diagnostic Tools)”. 오라클. 2012. 2014년 8월 9일에 확인함.
- ↑ 가 나 다 Vivek Goyal; Eric W. Biederman; Hariprasad Nellitheertha (2006년 6월 14일). “Kdump: A Kexec-based Kernel Crash Dumping Mechanism” (PDF). 《lse.sourceforge.net》. 2014년 8월 9일에 확인함.
- ↑ 가 나 다 “Linux kernel documentation: Documentation/kdump/kdump.txt”. kernel.org. 2013년 8월 12일. 2014년 8월 9일에 확인함.
- ↑ Takashi Iwai (2006년 7월 26일). “Debugging using Kdump” (PDF). SUSE. 2014년 8월 9일에 확인함.
- ↑ “29.2.2. Using the Kernel Dump Configuration Utility (Red Hat Enterprise Linux 6 Deployment Guide)”. 레드햇. 2014년 8월 9일에 확인함.
- ↑ “kexec and kdump: Basic kdump Configuration (System Analysis and Tuning Guide)”. SUSE. 2014년 4월 25일. 2014년 8월 9일에 확인함.
- ↑ “How to use kdump to debug kernel crashes”. 페도라. 2014년 4월 9일. 2014년 8월 9일에 확인함.
- ↑ David Anderson (2010년 8월 27일). “White Paper: Red Hat Crash Utility”. 레드햇. 2018년 12월 10일에 원본 문서에서 보존된 문서. 2014년 8월 9일에 확인함.
- ↑ “kexec and kdump: Analyzing the Crash Dump (System Analysis and Tuning Guide)”. SUSE. 2014년 4월 25일. 2014년 8월 9일에 확인함.
- ↑ “Linux kernel 2.6.13”. 《kernelnewbies.org》. 2005년 8월 29일. 2014년 8월 9일에 확인함.
외부 링크
[편집]- Kdump
- 공식 웹사이트
- Kdump, a Kexec-based Kernel Crash Dumping Mechanism, IBM, 2005, by Vivek Goyal, Eric W. Biederman, and Hariprasad Nellitheertha