SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
難攻不落(난공불락) 리눅스 및 오픈소스 인프라 세미나
발표자 : 이미르
2014. 04. 19
Linux Kernel Core Dump Analysis
Table of Content
 Kernel Dump ?
 분석을 위한사전준비사항 – kdump 설정, debuginfo
 Introduce to Crash tool
 Case 별 분석
- Memory 문제 (1개)
- Cpu stuck 문제 (1개)
 - Other modules (3rd-party) 문제 (1개)
- CRASH tool 의 다양한 접근 방법
 Conclusion
Kernel Dump ?
일반 소프트웨어에서 Segment Violation 또는 메모리 할당 오류등이 발생시,
Segment Fault 가 나며, 프로그램이 종료되는 것과 마찬가지로,
Kernel 역시 실행중 여러가지 이유로 인해,
Kernel program 이 죽을 수 있음 - Panic
Kernel 은 OS 의 핵심 Space 를 차지하기 때문에, 이와같은 Panic 상황에서
원인을 밝혀 낼 core file 이 필요.
Linux Kernel Core Dump – linux 에서는 vmcore file 이라고도 부르며,
커널의 Crash 가 발생할 경우, 발생 시점의 디렉토리아래,
Vmcore 라는 파일명의 Memory dump 파일을 생성.
Kernel Dump ?
Kdump / Kexec
Kernel 에서 발생한 특정 이슈에 대해서 발생시의 상황과 Memory
상태를
파일로 복사하여 문제 상황을 추적/분석 하여 추후 재발을 방지하기
위한
메카니즘.
Linux 에서는 kdump 라는 프로세스에서 kexec 라는 프로그램을 이용,
이미 예약해 둔 메모리 영역을 이용하여 임시 커널을 로드,
커널패닉이 발생했을 때, 문제된 커널의 메모리 상태를 vmcore 라는
파일 형태로 생성하는 솔루션이 제공.
Kernel Dump ?
Kernel Dump ?
출처 : Open Source Consulting Tech Blog
http://www.openseed.co.kr/blog/?p=19
Kernel Dump ?
How to configure to Kernel Dump
1. Kexec-tools 패키지 필요.
2. grub.conf 에 crash kernel 을 위한 parameter 설정 필요. (리부팅 필요)
3. kernel dump file 을 저장하기 위한 충분한 저장공간.
* crashkernel = kernel crash 때, kdump 및 kexec 에서 상태캡쳐를 위해
사용될 공간을 설정하는 boot parameter
title Oracle Linux Server (2.6.32-400.34.3.el5uek)
root (hd0,0)
kernel /vmlinuz-2.6.32-400.34.3.el5uek ro root=/dev/mapper/VolGroup00-LogVol00 crashkernel=400M@64M
numa=off clocksource=hpet elevator=noop console=tty0 console=ttyS0,115200
initrd /initrd-2.6.32-400.34.3.el5uek.img
title Oracle Linux Server (2.6.18-371.6.1.0.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-371.6.1.0.1.el5 ro root=/dev/mapper/VolGroup00-LogVol00 crashkernel=400M@64M
numa=off clocksource=hpet elevator=noop console=tty0 console=ttyS0,115200
initrd /initrd-2.6.18-371.6.1.0.1.el5.img
title Oracle Linux Server (2.6.18-371.4.1.0.1.el5)
Pre-requisite
1. 해당 커널 버젼에 맞는 Debuginfo 패키지 필요.
( debug info package 다운로드 스샷등 추가 )
2. Crash 라는 커널덤프 분석용 툴 필요.
3. 참조할 커널 코드
- 일반적으로 kernel-{version}.src 등의 패키지에서 확인 가능함.
- Web page (git)등을 통해 간단히 Diff 또는 소스코드를 직접 확인 가능.
사진 : http://lxr.free-electrons.com
Kernel Dump Analysis
컴파일 시, Kernel 에 대한 debug 정보를 함께 포함하여 컴파일 한
디버깅용 패키지.
해당 패키지에서 제공되는 vmlinux 라는 파일이 커널 분석에 함께 필요함.
* redhat :
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/x86_6
4/Debuginfo/
* centos :
http://debuginfo.centos.org/
* oracle :
https://oss.oracle.com/el5/debuginfo/
https://oss.oracle.com/el6/debuginfo/
Debuginfo ?
CRASH ?
* GDB 로는 커널코어, mcore, Xen 또는 S390 덤프파일들을 읽기 어려웠음.
* dumpfiles 의 포맷이 각각 조금씩 달라 분석에 어려움이 있었음.
* 거의 모든 종류의 LKCD ( Linux Kernel Core Dump ) 파일을 지원하기 위해
개발.
* Disasembly, Kernel Stack Trace, Memory trace, kernel structure & variable
등을
GDB 명령형식으로 확인 할 수 있게끔 개발됨.
Kdump 에 대한 Redhat White-paper ( web ) :
http://people.redhat.com/anderson/crash_whitepaper/
CRASH ?
* 주요 명령어
sys - 시스템의 일반적인 정보를 출력해 준다.
bt - Backtrace 명령. 스택의 내용들을 순차적으로 출력해준다.
ps - Process list 출력.
free - Memory 및 스왑 상태 출력.
mount - 마운트 상태 출력
irq - 각 장치의 ( irq ) 상태를 출력.
kmem - 메모리 상태 출력 ( kmalloc, valloc 등 메모리 할당 상태도 보여줌 )
log - dmesg 의 내용을 출력.
mod - 로딩된 모듈 리스트 출력.
net - Network 상태 출력.
runq - 실행중인 task 리스트 출력.
task - 작업목록 출력.
rd - 메모리 번지수에 대한 상세정보 출력.
foreach - 모든 task, process 등 디버깅 정보에 대한 상세한 출력이 가능함.
set - 설정된 주소 및 PID 등을 기본 컨텍스트로 설정.
struct - 구조화된 메모리 내부의 변수들을 출력해 준다.
files - task 가 열고있는 파일디스크립터들을 출력해준다.
Simple Sequence for LKCD Analysis
1. debug info 로 부터 vmlinux 추출
2. CRASH tools 을 이용한 corefile 과 vmlinux 로드.
3. 커널 로그 확인.
4. 메모리 상태 확인.
5. backtrace 를 통한 최종 stack 내용 확인
6. 최종 스택의 Return Address 의 내용을 Code 또는 Dis-Assembly 를 통해 확인.
7. 버그 정보 검색.
8. 버그일 경우 해당 패치정보 검색.
9. 알려지지 않은 버그일 경우 해당 벤더에 버그 오픈 또는 Advanced 분석 요청.
** 대부분의 커널 버그는 잘 알려져 있는 버그.
Case 별로 알아가는 LKCD Analysis
 버그 및 Stack trace 내용에 대한 Database 를 보유하는 것이 중요하다.
 이슈에 대한 분류
- Memory
- Cpu 문제
- H/W 이슈
- Other modules (3rd-party)
 상위 커널 업그레이드로 해결되는 경우가 대부분이다.
Debuginfo 에서 vmlinux 추출 방법
-rpm2cpio kernel-debuginfo-{version}.x86_64.rpm | cpio -ivd
Case 1
 상황
-Console 및 네트웍으로 전혀 접속할 수 없어 서비스도 되지 않았으나,
ping 은 가고 있던 이른바 hang up 상태의 시스템에서 시그널을 발생시켜
얻어낸 vmcore.
- 시스템 Hangup 의 원인이 밝혀져야 하는 상황.
 분석과정
-file:///Case_1_memoryissue.odt
Case 2
 상황
- 알수 없는 이유로 시스템이 백업도중 Crash.
백업을 위한 용도로 주로 사용되는 미디어 서버.
 분석과정
-file:///Case_2_kernelbug.odt
Case 3
 상황
- 시스템 Crashed. Vmcore 생성을 통한 분석요청.
 분석과정
-file:///Case_3NMI_signal_partial.odt
Case 4
 상황
- 시스템 Crashed. Vmcore 생성을 통한 분석요청.
 실제 vmcore 파일을 이용한 분석 과정 재현.
Conclusion
 커널 덤프분석으로 완벽한 원인 분석을 하는 것은 매우 어렵다.
 많은 분석에 대한 Case 를 Data 로 보유하는 것이 dump 분석에 대한
노하우이다.
 Stack trace 만으로 추측 할 수 있는 부분은 거의 없다.
 많은 시간의 분석 시간이 소요 될 수 있으며, dump 만으로 분석하는 것 보다는,
다양한 system log 및 자료들을 이용하여 (sosreport) 병행해서 접근해야 한다.
 대부분의 커널 버그는 Kernel update 로 해결된다.
- 실재 새로운 버그를 찾기는 어려우며,
- kdump 분석을 통해, 더 낫고 빠른 문제해결 또는 재발방지를 위한 방편임을
잊지 말자.
 3rd-party 모듈 사용시에는 해당 vendor 의 지원이 필요하다.
( Stack 내용을 정확히 볼 수 없기 때문 )
감사합니다.

Weitere ähnliche Inhalte

Was ist angesagt?

Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0sprdd
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0Ji-Woong Choi
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-toJi-Woong Choi
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나sprdd
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1Ji-Woong Choi
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-Woong Choi
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서Yong-uk Choe
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기Ji-Woong Choi
 
Red Hat Enterprise Virtualization
Red Hat Enterprise VirtualizationRed Hat Enterprise Virtualization
Red Hat Enterprise Virtualizationhipark
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0sprdd
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호ETRIBE_STG
 
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1Ji-Woong Choi
 
2node cluster
2node cluster2node cluster
2node clustersprdd
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
Gluster fs guide(v1.0)
Gluster fs guide(v1.0)Gluster fs guide(v1.0)
Gluster fs guide(v1.0)sprdd
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안Ji-Woong Choi
 
resource on openstack
 resource on openstack resource on openstack
resource on openstackjieun kim
 
Clonezilla se
Clonezilla seClonezilla se
Clonezilla se석 허
 

Was ist angesagt? (19)

Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기
 
Red Hat Enterprise Virtualization
Red Hat Enterprise VirtualizationRed Hat Enterprise Virtualization
Red Hat Enterprise Virtualization
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호
 
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
 
2node cluster
2node cluster2node cluster
2node cluster
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
Gluster fs guide(v1.0)
Gluster fs guide(v1.0)Gluster fs guide(v1.0)
Gluster fs guide(v1.0)
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
 
resource on openstack
 resource on openstack resource on openstack
resource on openstack
 
Clonezilla se
Clonezilla seClonezilla se
Clonezilla se
 

Andere mochten auch

난공불락세미나 Ldap
난공불락세미나 Ldap난공불락세미나 Ldap
난공불락세미나 Ldapsprdd
 
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0sprdd
 
Linux Crash Dump Capture and Analysis
Linux Crash Dump Capture and AnalysisLinux Crash Dump Capture and Analysis
Linux Crash Dump Capture and AnalysisPaul V. Novarese
 
Docker 활용법: dumpdocker
Docker 활용법: dumpdockerDocker 활용법: dumpdocker
Docker 활용법: dumpdockerJaehwa Park
 
kexec / kdump implementation in Linux Kernel and Xen hypervisor
kexec / kdump implementation in Linux Kernel and Xen hypervisorkexec / kdump implementation in Linux Kernel and Xen hypervisor
kexec / kdump implementation in Linux Kernel and Xen hypervisorThe Linux Foundation
 
[241] 하나의 cpu 에 운영제체 두 개 김성민
[241] 하나의 cpu 에 운영제체 두 개 김성민[241] 하나의 cpu 에 운영제체 두 개 김성민
[241] 하나의 cpu 에 운영제체 두 개 김성민NAVER D2
 
Red hat enterprise_virtualization_load
Red hat enterprise_virtualization_loadRed hat enterprise_virtualization_load
Red hat enterprise_virtualization_loadsilviucojocaru
 
2011-12-08 Red Hat Enterprise Virtualization for Desktops (RHEV VDI) with Cis...
2011-12-08 Red Hat Enterprise Virtualization for Desktops (RHEV VDI) with Cis...2011-12-08 Red Hat Enterprise Virtualization for Desktops (RHEV VDI) with Cis...
2011-12-08 Red Hat Enterprise Virtualization for Desktops (RHEV VDI) with Cis...Shawn Wells
 
Red Hat Enterprise Linux OpenStack Platform Overview - RHELOSP5
Red Hat Enterprise Linux OpenStack Platform Overview - RHELOSP5Red Hat Enterprise Linux OpenStack Platform Overview - RHELOSP5
Red Hat Enterprise Linux OpenStack Platform Overview - RHELOSP5Won Young Choi
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례NAVER D2
 
[오픈소스컨설팅]Virtualization kvm-rhev
[오픈소스컨설팅]Virtualization kvm-rhev[오픈소스컨설팅]Virtualization kvm-rhev
[오픈소스컨설팅]Virtualization kvm-rhevJi-Woong Choi
 

Andere mochten auch (12)

난공불락세미나 Ldap
난공불락세미나 Ldap난공불락세미나 Ldap
난공불락세미나 Ldap
 
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
 
Linux Crash Dump Capture and Analysis
Linux Crash Dump Capture and AnalysisLinux Crash Dump Capture and Analysis
Linux Crash Dump Capture and Analysis
 
Docker 활용법: dumpdocker
Docker 활용법: dumpdockerDocker 활용법: dumpdocker
Docker 활용법: dumpdocker
 
kexec / kdump implementation in Linux Kernel and Xen hypervisor
kexec / kdump implementation in Linux Kernel and Xen hypervisorkexec / kdump implementation in Linux Kernel and Xen hypervisor
kexec / kdump implementation in Linux Kernel and Xen hypervisor
 
Gdb cheat sheet
Gdb cheat sheetGdb cheat sheet
Gdb cheat sheet
 
[241] 하나의 cpu 에 운영제체 두 개 김성민
[241] 하나의 cpu 에 운영제체 두 개 김성민[241] 하나의 cpu 에 운영제체 두 개 김성민
[241] 하나의 cpu 에 운영제체 두 개 김성민
 
Red hat enterprise_virtualization_load
Red hat enterprise_virtualization_loadRed hat enterprise_virtualization_load
Red hat enterprise_virtualization_load
 
2011-12-08 Red Hat Enterprise Virtualization for Desktops (RHEV VDI) with Cis...
2011-12-08 Red Hat Enterprise Virtualization for Desktops (RHEV VDI) with Cis...2011-12-08 Red Hat Enterprise Virtualization for Desktops (RHEV VDI) with Cis...
2011-12-08 Red Hat Enterprise Virtualization for Desktops (RHEV VDI) with Cis...
 
Red Hat Enterprise Linux OpenStack Platform Overview - RHELOSP5
Red Hat Enterprise Linux OpenStack Platform Overview - RHELOSP5Red Hat Enterprise Linux OpenStack Platform Overview - RHELOSP5
Red Hat Enterprise Linux OpenStack Platform Overview - RHELOSP5
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례
 
[오픈소스컨설팅]Virtualization kvm-rhev
[오픈소스컨설팅]Virtualization kvm-rhev[오픈소스컨설팅]Virtualization kvm-rhev
[오픈소스컨설팅]Virtualization kvm-rhev
 

Ähnlich wie Lkda facebook seminar_140419

우분투 커널 컴파일
우분투 커널 컴파일우분투 커널 컴파일
우분투 커널 컴파일he4722
 
RHEL8 Kernel Management Manual in Korean
RHEL8 Kernel Management Manual in KoreanRHEL8 Kernel Management Manual in Korean
RHEL8 Kernel Management Manual in KoreanJun Hee Shin
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203doo rip choi
 
(130907) #fitalk generating volatility linux profile
(130907) #fitalk   generating volatility linux profile(130907) #fitalk   generating volatility linux profile
(130907) #fitalk generating volatility linux profileINSIGHT FORENSIC
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driverjumiss
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoMario Cho
 
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제Lee Sang-Ho
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shellJay Park
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편Sam Kim
 
rpm package 를 이용한 MySQL 설치자동화
rpm package 를 이용한 MySQL 설치자동화rpm package 를 이용한 MySQL 설치자동화
rpm package 를 이용한 MySQL 설치자동화I Goo Lee
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
Window에서 Rcplex 설치 가이드
Window에서 Rcplex 설치 가이드Window에서 Rcplex 설치 가이드
Window에서 Rcplex 설치 가이드Jinwoo Kim
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
Rhel7 beta information
Rhel7 beta informationRhel7 beta information
Rhel7 beta information현익 박
 
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스
 
망고100 보드로 놀아보자 11
망고100 보드로 놀아보자  11망고100 보드로 놀아보자  11
망고100 보드로 놀아보자 11종인 전
 
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)Ubuntu Korea Community
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-uploadDong-Hwa jung
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 

Ähnlich wie Lkda facebook seminar_140419 (20)

우분투 커널 컴파일
우분투 커널 컴파일우분투 커널 컴파일
우분투 커널 컴파일
 
RHEL8 Kernel Management Manual in Korean
RHEL8 Kernel Management Manual in KoreanRHEL8 Kernel Management Manual in Korean
RHEL8 Kernel Management Manual in Korean
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
(130907) #fitalk generating volatility linux profile
(130907) #fitalk   generating volatility linux profile(130907) #fitalk   generating volatility linux profile
(130907) #fitalk generating volatility linux profile
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driver
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
rpm package 를 이용한 MySQL 설치자동화
rpm package 를 이용한 MySQL 설치자동화rpm package 를 이용한 MySQL 설치자동화
rpm package 를 이용한 MySQL 설치자동화
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
Window에서 Rcplex 설치 가이드
Window에서 Rcplex 설치 가이드Window에서 Rcplex 설치 가이드
Window에서 Rcplex 설치 가이드
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Rhel7 beta information
Rhel7 beta informationRhel7 beta information
Rhel7 beta information
 
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
 
망고100 보드로 놀아보자 11
망고100 보드로 놀아보자  11망고100 보드로 놀아보자  11
망고100 보드로 놀아보자 11
 
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 

Mehr von sprdd

Linux con europe_2014_full_system_rollback_btrfs_snapper_0
Linux con europe_2014_full_system_rollback_btrfs_snapper_0Linux con europe_2014_full_system_rollback_btrfs_snapper_0
Linux con europe_2014_full_system_rollback_btrfs_snapper_0sprdd
 
Linux con europe_2014_f
Linux con europe_2014_fLinux con europe_2014_f
Linux con europe_2014_fsprdd
 
Openstack v4 0
Openstack v4 0Openstack v4 0
Openstack v4 0sprdd
 
Hardware accelerated virtio networking for nfv linux con
Hardware accelerated virtio networking for nfv linux conHardware accelerated virtio networking for nfv linux con
Hardware accelerated virtio networking for nfv linux consprdd
 
HP NMI WATCHDOG
HP NMI WATCHDOGHP NMI WATCHDOG
HP NMI WATCHDOGsprdd
 
H2890 emc-clariion-asymm-active-wp
H2890 emc-clariion-asymm-active-wpH2890 emc-clariion-asymm-active-wp
H2890 emc-clariion-asymm-active-wpsprdd
 
Cluster pitfalls recommand
Cluster pitfalls recommandCluster pitfalls recommand
Cluster pitfalls recommandsprdd
 
Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1sprdd
 
Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1sprdd
 
2013fooscoverpageimage 130417105210-phpapp01
2013fooscoverpageimage 130417105210-phpapp012013fooscoverpageimage 130417105210-phpapp01
2013fooscoverpageimage 130417105210-phpapp01sprdd
 
Openstackinsideoutv10 140222065532-phpapp01
Openstackinsideoutv10 140222065532-phpapp01Openstackinsideoutv10 140222065532-phpapp01
Openstackinsideoutv10 140222065532-phpapp01sprdd
 
Rhel cluster gfs_improveperformance
Rhel cluster gfs_improveperformanceRhel cluster gfs_improveperformance
Rhel cluster gfs_improveperformancesprdd
 
Doldoggi bisiri
Doldoggi bisiriDoldoggi bisiri
Doldoggi bisirisprdd
 
세미나설문
세미나설문세미나설문
세미나설문sprdd
 
5231 140-hellwig
5231 140-hellwig5231 140-hellwig
5231 140-hellwigsprdd
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0sprdd
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0sprdd
 
Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0sprdd
 
2node cluster
2node cluster2node cluster
2node clustersprdd
 
오픈소스 모니터링비교
오픈소스 모니터링비교오픈소스 모니터링비교
오픈소스 모니터링비교sprdd
 

Mehr von sprdd (20)

Linux con europe_2014_full_system_rollback_btrfs_snapper_0
Linux con europe_2014_full_system_rollback_btrfs_snapper_0Linux con europe_2014_full_system_rollback_btrfs_snapper_0
Linux con europe_2014_full_system_rollback_btrfs_snapper_0
 
Linux con europe_2014_f
Linux con europe_2014_fLinux con europe_2014_f
Linux con europe_2014_f
 
Openstack v4 0
Openstack v4 0Openstack v4 0
Openstack v4 0
 
Hardware accelerated virtio networking for nfv linux con
Hardware accelerated virtio networking for nfv linux conHardware accelerated virtio networking for nfv linux con
Hardware accelerated virtio networking for nfv linux con
 
HP NMI WATCHDOG
HP NMI WATCHDOGHP NMI WATCHDOG
HP NMI WATCHDOG
 
H2890 emc-clariion-asymm-active-wp
H2890 emc-clariion-asymm-active-wpH2890 emc-clariion-asymm-active-wp
H2890 emc-clariion-asymm-active-wp
 
Cluster pitfalls recommand
Cluster pitfalls recommandCluster pitfalls recommand
Cluster pitfalls recommand
 
Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1
 
Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1Wheeler w 0450_linux_file_systems1
Wheeler w 0450_linux_file_systems1
 
2013fooscoverpageimage 130417105210-phpapp01
2013fooscoverpageimage 130417105210-phpapp012013fooscoverpageimage 130417105210-phpapp01
2013fooscoverpageimage 130417105210-phpapp01
 
Openstackinsideoutv10 140222065532-phpapp01
Openstackinsideoutv10 140222065532-phpapp01Openstackinsideoutv10 140222065532-phpapp01
Openstackinsideoutv10 140222065532-phpapp01
 
Rhel cluster gfs_improveperformance
Rhel cluster gfs_improveperformanceRhel cluster gfs_improveperformance
Rhel cluster gfs_improveperformance
 
Doldoggi bisiri
Doldoggi bisiriDoldoggi bisiri
Doldoggi bisiri
 
세미나설문
세미나설문세미나설문
세미나설문
 
5231 140-hellwig
5231 140-hellwig5231 140-hellwig
5231 140-hellwig
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
 
Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0
 
2node cluster
2node cluster2node cluster
2node cluster
 
오픈소스 모니터링비교
오픈소스 모니터링비교오픈소스 모니터링비교
오픈소스 모니터링비교
 

Lkda facebook seminar_140419

  • 1. 難攻不落(난공불락) 리눅스 및 오픈소스 인프라 세미나 발표자 : 이미르 2014. 04. 19 Linux Kernel Core Dump Analysis
  • 2. Table of Content  Kernel Dump ?  분석을 위한사전준비사항 – kdump 설정, debuginfo  Introduce to Crash tool  Case 별 분석 - Memory 문제 (1개) - Cpu stuck 문제 (1개)  - Other modules (3rd-party) 문제 (1개) - CRASH tool 의 다양한 접근 방법  Conclusion
  • 3. Kernel Dump ? 일반 소프트웨어에서 Segment Violation 또는 메모리 할당 오류등이 발생시, Segment Fault 가 나며, 프로그램이 종료되는 것과 마찬가지로, Kernel 역시 실행중 여러가지 이유로 인해, Kernel program 이 죽을 수 있음 - Panic Kernel 은 OS 의 핵심 Space 를 차지하기 때문에, 이와같은 Panic 상황에서 원인을 밝혀 낼 core file 이 필요. Linux Kernel Core Dump – linux 에서는 vmcore file 이라고도 부르며, 커널의 Crash 가 발생할 경우, 발생 시점의 디렉토리아래, Vmcore 라는 파일명의 Memory dump 파일을 생성.
  • 4. Kernel Dump ? Kdump / Kexec Kernel 에서 발생한 특정 이슈에 대해서 발생시의 상황과 Memory 상태를 파일로 복사하여 문제 상황을 추적/분석 하여 추후 재발을 방지하기 위한 메카니즘. Linux 에서는 kdump 라는 프로세스에서 kexec 라는 프로그램을 이용, 이미 예약해 둔 메모리 영역을 이용하여 임시 커널을 로드, 커널패닉이 발생했을 때, 문제된 커널의 메모리 상태를 vmcore 라는 파일 형태로 생성하는 솔루션이 제공.
  • 6. Kernel Dump ? 출처 : Open Source Consulting Tech Blog http://www.openseed.co.kr/blog/?p=19
  • 7. Kernel Dump ? How to configure to Kernel Dump 1. Kexec-tools 패키지 필요. 2. grub.conf 에 crash kernel 을 위한 parameter 설정 필요. (리부팅 필요) 3. kernel dump file 을 저장하기 위한 충분한 저장공간. * crashkernel = kernel crash 때, kdump 및 kexec 에서 상태캡쳐를 위해 사용될 공간을 설정하는 boot parameter title Oracle Linux Server (2.6.32-400.34.3.el5uek) root (hd0,0) kernel /vmlinuz-2.6.32-400.34.3.el5uek ro root=/dev/mapper/VolGroup00-LogVol00 crashkernel=400M@64M numa=off clocksource=hpet elevator=noop console=tty0 console=ttyS0,115200 initrd /initrd-2.6.32-400.34.3.el5uek.img title Oracle Linux Server (2.6.18-371.6.1.0.1.el5) root (hd0,0) kernel /vmlinuz-2.6.18-371.6.1.0.1.el5 ro root=/dev/mapper/VolGroup00-LogVol00 crashkernel=400M@64M numa=off clocksource=hpet elevator=noop console=tty0 console=ttyS0,115200 initrd /initrd-2.6.18-371.6.1.0.1.el5.img title Oracle Linux Server (2.6.18-371.4.1.0.1.el5)
  • 8. Pre-requisite 1. 해당 커널 버젼에 맞는 Debuginfo 패키지 필요. ( debug info package 다운로드 스샷등 추가 ) 2. Crash 라는 커널덤프 분석용 툴 필요. 3. 참조할 커널 코드 - 일반적으로 kernel-{version}.src 등의 패키지에서 확인 가능함. - Web page (git)등을 통해 간단히 Diff 또는 소스코드를 직접 확인 가능. 사진 : http://lxr.free-electrons.com Kernel Dump Analysis
  • 9. 컴파일 시, Kernel 에 대한 debug 정보를 함께 포함하여 컴파일 한 디버깅용 패키지. 해당 패키지에서 제공되는 vmlinux 라는 파일이 커널 분석에 함께 필요함. * redhat : ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/x86_6 4/Debuginfo/ * centos : http://debuginfo.centos.org/ * oracle : https://oss.oracle.com/el5/debuginfo/ https://oss.oracle.com/el6/debuginfo/ Debuginfo ?
  • 10. CRASH ? * GDB 로는 커널코어, mcore, Xen 또는 S390 덤프파일들을 읽기 어려웠음. * dumpfiles 의 포맷이 각각 조금씩 달라 분석에 어려움이 있었음. * 거의 모든 종류의 LKCD ( Linux Kernel Core Dump ) 파일을 지원하기 위해 개발. * Disasembly, Kernel Stack Trace, Memory trace, kernel structure & variable 등을 GDB 명령형식으로 확인 할 수 있게끔 개발됨. Kdump 에 대한 Redhat White-paper ( web ) : http://people.redhat.com/anderson/crash_whitepaper/
  • 11. CRASH ? * 주요 명령어 sys - 시스템의 일반적인 정보를 출력해 준다. bt - Backtrace 명령. 스택의 내용들을 순차적으로 출력해준다. ps - Process list 출력. free - Memory 및 스왑 상태 출력. mount - 마운트 상태 출력 irq - 각 장치의 ( irq ) 상태를 출력. kmem - 메모리 상태 출력 ( kmalloc, valloc 등 메모리 할당 상태도 보여줌 ) log - dmesg 의 내용을 출력. mod - 로딩된 모듈 리스트 출력. net - Network 상태 출력. runq - 실행중인 task 리스트 출력. task - 작업목록 출력. rd - 메모리 번지수에 대한 상세정보 출력. foreach - 모든 task, process 등 디버깅 정보에 대한 상세한 출력이 가능함. set - 설정된 주소 및 PID 등을 기본 컨텍스트로 설정. struct - 구조화된 메모리 내부의 변수들을 출력해 준다. files - task 가 열고있는 파일디스크립터들을 출력해준다.
  • 12. Simple Sequence for LKCD Analysis 1. debug info 로 부터 vmlinux 추출 2. CRASH tools 을 이용한 corefile 과 vmlinux 로드. 3. 커널 로그 확인. 4. 메모리 상태 확인. 5. backtrace 를 통한 최종 stack 내용 확인 6. 최종 스택의 Return Address 의 내용을 Code 또는 Dis-Assembly 를 통해 확인. 7. 버그 정보 검색. 8. 버그일 경우 해당 패치정보 검색. 9. 알려지지 않은 버그일 경우 해당 벤더에 버그 오픈 또는 Advanced 분석 요청. ** 대부분의 커널 버그는 잘 알려져 있는 버그.
  • 13. Case 별로 알아가는 LKCD Analysis  버그 및 Stack trace 내용에 대한 Database 를 보유하는 것이 중요하다.  이슈에 대한 분류 - Memory - Cpu 문제 - H/W 이슈 - Other modules (3rd-party)  상위 커널 업그레이드로 해결되는 경우가 대부분이다. Debuginfo 에서 vmlinux 추출 방법 -rpm2cpio kernel-debuginfo-{version}.x86_64.rpm | cpio -ivd
  • 14. Case 1  상황 -Console 및 네트웍으로 전혀 접속할 수 없어 서비스도 되지 않았으나, ping 은 가고 있던 이른바 hang up 상태의 시스템에서 시그널을 발생시켜 얻어낸 vmcore. - 시스템 Hangup 의 원인이 밝혀져야 하는 상황.  분석과정 -file:///Case_1_memoryissue.odt
  • 15. Case 2  상황 - 알수 없는 이유로 시스템이 백업도중 Crash. 백업을 위한 용도로 주로 사용되는 미디어 서버.  분석과정 -file:///Case_2_kernelbug.odt
  • 16. Case 3  상황 - 시스템 Crashed. Vmcore 생성을 통한 분석요청.  분석과정 -file:///Case_3NMI_signal_partial.odt
  • 17. Case 4  상황 - 시스템 Crashed. Vmcore 생성을 통한 분석요청.  실제 vmcore 파일을 이용한 분석 과정 재현.
  • 18. Conclusion  커널 덤프분석으로 완벽한 원인 분석을 하는 것은 매우 어렵다.  많은 분석에 대한 Case 를 Data 로 보유하는 것이 dump 분석에 대한 노하우이다.  Stack trace 만으로 추측 할 수 있는 부분은 거의 없다.  많은 시간의 분석 시간이 소요 될 수 있으며, dump 만으로 분석하는 것 보다는, 다양한 system log 및 자료들을 이용하여 (sosreport) 병행해서 접근해야 한다.  대부분의 커널 버그는 Kernel update 로 해결된다. - 실재 새로운 버그를 찾기는 어려우며, - kdump 분석을 통해, 더 낫고 빠른 문제해결 또는 재발방지를 위한 방편임을 잊지 말자.  3rd-party 모듈 사용시에는 해당 vendor 의 지원이 필요하다. ( Stack 내용을 정확히 볼 수 없기 때문 )