{{위키데이터 속성 추적}}
{{소문자}}
'''kdump'''는 [[커널 패닉]] 이벤트 시에 [[코어 덤프|충돌 덤프]]를 생성하는 [[리눅스 커널]]의 한 부분이다. Kdump가 발생하면 디버깅 목적으로 분석될 수 있고 충돌의 원인을 결정할 수 있는 메모리 이미지(또한 vmcore라고도 알려진)를 익스포트한다. [[ELF 파일 형식|ELF]] 객체로서 익스포트된 메인 메모리의 덤프된 이미지는 커널 충돌을 다루는 동안에 직접적으로 /proc/vmcore를 통해서 접근될 수 있으며 로컬상으로 접근 가능한 [[파일 시스템]]으로 또는 raw 디바이스 그리고 네트워크를 통해 접근 가능한 원격 시스템으로 자동으로 저장될 수 있다.<ref name="lwn-108595">{{웹 인용
 | url = https://lwn.net/Articles/108595/
 | title = Crash dumps with kexec
 | date = {{date|2004-10-27|mdy}} | accessdate = {{date|2014-08-09|mdy}}
 | author = Jonathan Corbet | publisher = LWN.net
}}</ref><ref name="oracle">{{웹 인용
 | url = http://docs.oracle.com/cd/E37670_01/E37355/html/ol_kdump_diag.html
 | title = 13.2 About Kdump (Chapter 13: Support Diagnostic Tools)
 | year = 2012 | accessdate = {{date|2014-08-09|mdy}}
 | publisher = [[오라클]]
}}</ref>

== 내부 ==
[[파일:Kdump.svg|섬네일|오른쪽|upright=1.9|"듀얼 커널" 레이아웃에서, kdump는 다른 커널을 부팅하고 메모리 덤프를 얻기 위해 kexec를 사용한다.<ref name="ols2005-kdump" />]]

커널 충돌이 일어나는 이벤트 발생 시에, kdump는 ''dump-capture kernel''로 알려진 다른 리눅스 커널을 부팅함으로써 시스템의 일관성을 유지하며 이것을 메모리 덤프를 익스포트하고 저장하는데 사용한다. 결과적으로 시스템은 여러 문제들을 유발할 수 있는 이미 충돌된 커널 대신에 깨끗하고 신뢰성 있는 환경으로 부팅된다. 이 "듀얼 커널" 레이아웃을 구현하기 위해서 kdump는 [[kexec]]을 사용한다. kexec은 커널 충돌 이후에 즉시 덤프-캡처 커널로 부팅하며, kdump는 [[부트로더]]의 실행 없이 현재 실행 중인 커널로 부팅할 수 있는 kexec의 능력을 사용한다. 덤프-캡처 커널은 이 목적을 위한 독립적인 [[리눅스 커널]] 이미지이거나 또는 재배치 가능한 커널을 지원하는 아키텍처에서 재사용 가능한 주요 커널 이미지일 수 있다.<ref name="lwn-108595" /><ref name="ols2005-kdump">{{웹 인용
 | url = http://lse.sourceforge.net/kdump/documentation/ols2005-kdump-presentation.pdf
 | title = Kdump: A Kexec-based Kernel Crash Dumping Mechanism
 | date = {{date|2006-06-14|mdy}}
 | accessdate = {{date|2014-08-09|mdy}}
 | author1 = Vivek Goyal | author2 = Eric W. Biederman | author3 = Hariprasad Nellitheertha
 | website = lse.sourceforge.net
 | format = PDF
}}</ref><ref name="kernel-docs">{{웹 인용
 | url = https://www.kernel.org/doc/Documentation/kdump/kdump.txt
 | title = Linux kernel documentation: Documentation/kdump/kdump.txt
 | date = {{date|2013-08-12|mdy}}
 | accessdate = {{date|2014-08-09|mdy}}
 | publisher = kernel.org
}}</ref><ref>{{웹 인용
 | url = http://ftp.suse.com/pub/people/tiwai/kdump-training/kdump-training.pdf
 | title = Debugging using Kdump
 | date = {{date|2006-07-26|mdy}}
 | accessdate = {{date|2014-08-09|mdy}}
 | author = Takashi Iwai
 | publisher = SUSE
 | format = PDF
}}</ref>

부팅되고 덤프-캡처 커널을 실행하는 동안 미리 RAM의 작은 부분을 예약함으로써 메인 메모리(RAM)의 내용들은 보존된다. 또한 덤프-캡처 커널은 미리 로드되기 때문에 주요 커널에서 사용되는 RAM의 어떤 부분도 커널 충돌을 다루는 동안에 겹쳐써지지 않는다. 램의 이 보존된 부분은 덤프-캡처 커널에 의해서 사용되며 일반적인 시스템 동작에서는 사용되지 않는다. [[x86]] 같은 몇몇 아키텍처들은 어디에 로드되었는지와 상관 없이 커널을 부트하기 위해 RAM의 작은 고정된 위치 부분을 요구한다; 이 경우 kexec는 이 RAM의 부분의 복사본을 만들고 이것은 또한 덤프-캡처 커널에 의해 접근될 수 있다. RAM의 저장된 부분의 크기와 옵셔널 위치는 커널 부트 파라미터 crashkernel에 명시되며 kexec 명령줄 라인 유틸리티는 주요 커널이 덤프-캡처 커널을 미리 로드하고 initrd 이미지를 RAM의 보존된 부분에 관련시키기 위해 부팅된 이후에 사용된다.<ref name="lwn-108595" /><ref name="ols2005-kdump" /><ref name="kernel-docs" />

리눅스 커널의 한 부분인 기능 외에도 추가적인 사용자 공간 유틸리티들이 kdump 메카니즘을 지원하는데, 위에서 언급한 kexec 유틸리티가 그것이다.<ref name="lwn-108595" /><ref name="kernel-docs" /> kexec의 패치로서 제공되는 공식 유틸리티들 외에도 몇몇 [[리눅스 배포판]]은 kdump의 동작을 단순화하는 추가적인 유틸리티들을 제공하는데 메모리 덤프 파일의 자동화된 저장의 설치가 그것이다.<ref>{{웹 인용
 | url = https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-kdump-configuration-gui.html
 | title = 29.2.2. Using the Kernel Dump Configuration Utility (Red Hat Enterprise Linux 6 Deployment Guide)
 | accessdate = {{date|2014-08-09|mdy}}
 | publisher = [[레드햇]]
}}</ref><ref>{{웹 인용
 | url = https://www.suse.com/documentation/sles11/book_sle_tuning/data/cha_tuning_kdump_basic.html
 | title = kexec and kdump: Basic kdump Configuration (System Analysis and Tuning Guide)
 | date = {{date|2014-04-25|mdy}}
 | accessdate = {{date|2014-08-09|mdy}}
 | publisher = SUSE
}}</ref><ref>{{웹 인용
 | url = http://fedoraproject.org/wiki/How_to_use_kdump_to_debug_kernel_crashes
 | title = How to use kdump to debug kernel crashes
 | date = {{date|2014-04-09|mdy}}
 | accessdate = {{date|2014-08-09|mdy}}
 | publisher = [[페도라]]
}}</ref> 생성된 덤프 파일들은 GDB를 사용하거나 [[레드햇]]의 충돌 전용 유틸리티를 사용해서 분석될 수 있다.<ref>{{웹 인용
 | url = http://people.redhat.com/~anderson/crash_whitepaper/
 | title = White Paper: Red Hat Crash Utility
 | date = {{date|2010-08-27|mdy}}
 | accessdate = {{date|2014-08-09|mdy}}
 | author = David Anderson
 | publisher = [[레드햇]]
 | 보존url = https://web.archive.org/web/20181210212754/http://people.redhat.com/~anderson/crash_whitepaper/
 | 보존날짜 = 2018-12-10
 | url-status = dead
 }}</ref><ref>{{웹 인용
 | url = https://www.suse.com/documentation/sles11/book_sle_tuning/data/cha_tuning_kdump_analyze.html
 | title = kexec and kdump: Analyzing the Crash Dump (System Analysis and Tuning Guide)
 | date = {{date|2014-04-25|mdy}}
 | accessdate = {{date|2014-08-09|mdy}}
 | publisher = SUSE
}}</ref>

== 역사 ==
kdump 기능은 kexec와 함께 리눅스 커널 버전 2.6.13에 추가되었다.<ref>{{웹 인용
 | url = http://kernelnewbies.org/Linux_2_6_13
 | title = Linux kernel 2.6.13
 | date = {{date|2005-08-29|mdy}} | accessdate = {{date|2014-08-09|mdy}}
 | website = kernelnewbies.org
}}</ref>

== 같이 보기 ==
* [[debugfs]] - 리눅스 커널의 RAM 기반 파일 시스템으로서 디버깅 목적으로 설계되었다.
* [[kdump (BSD)]] - ktrace 유틸리티에 의해 생성된 트레이스 파일을 보는 용도의 BSD 유틸리티.
* [[리눅스 커널 웁스]] - 리눅스 커널의 잠재적으로 치명치 않은 비정상적 행동.

== 각주 ==
{{각주|30em}}

== 외부 링크 ==
* {{공식 웹사이트}}
* [http://lse.sourceforge.net/kdump/documentation/ols2oo5-kdump-paper.pdf Kdump, a Kexec-based Kernel Crash Dumping Mechanism], IBM, 2005, by Vivek Goyal, Eric W. Biederman, and Hariprasad Nellitheertha

{{리눅스 커널}}
{{운영 체제}}

[[분류:리눅스 커널 특징]]
[[분류:C로 작성된 자유 소프트웨어]]
[[분류:유닉스 프로그래밍 도구]]