# df -h
파일시스템 크기 사용 가용 용량 설치지점
/dev/md/dsk/d10 20G 974M 19G 5% /
/devices 0K 0K 0K 0% /devices
ctfs 0K 0K 0K 0% /system/contract
proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
swap 20G 1.6M 20G 1% /etc/svc/volatile
objfs 0K 0K 0K 0% /system/object
sharefs 0K 0K 0K 0% /etc/dfs/sharetab
/dev/md/dsk/d14 30G 3.6G 26G 13% /usr
/platform/SUNW,Sun-Fire-T200/lib/libc_psr/libc_psr_hwcap1.so.1
20G 974M 19G 5% /platform/sun4v/lib/libc_psr.so.1
/platform/SUNW,Sun-Fire-T200/lib/sparcv9/libc_psr/libc_psr_hwcap1.so.1
20G 974M 19G 5% /platform/sun4v/lib/sparcv9/libc_psr.so.1
fd 0K 0K 0K 0% /dev/fd
/dev/md/dsk/d13 30G 1.2G 28G 5% /var
swap 20G 200K 20G 1% /tmp
swap 20G 56K 20G 1% /var/run
/dev/md/dsk/d40 134G 13G 120G 10% /home
# swap -l
swapfile dev swaplo 블록 사용 가능
/dev/md/dsk/d11 85,11 16 31464176 31464176
# dumpadm -d /dev/md/dsk/d11
swap 영역으로 지정된 미러디스크를 확인하고, 해당 디스크에 dumpadm 명령어로 크래쉬덤프 파일이 생성될 곳을 지정한다.
아래는 dumpadm 명령어의 상세 내용이다.
출처 : http://blog.naver.com/iloview012?Redirect=Log&logNo=40015261662
http://www.cyworld.com/NamJeonWoo_/2147283
http://blog.naver.com/imredviolet?Redirect=Log&logNo=10035505837
/etc/dumpadm.conf 파일이 있다.
/usr/sbin/dumpadm 이라는 명령어가 있다.
옵션을 모르겠으면
#man dumpadm
그러면 결과를 볼수 있는데..
act.0
unix.0
vmcore.0
파일이 생길것이다.
#more act.0
결과를 알 수있을것이다.
(문제) dump 관리/core 파일 관리 정책에 대해 기술하여라.
- (조건1)
- Dump 관리 정책을 세우고 기술하여라.
시스템클래쉬 하드웨어 제조사, I/O문제, 소프트웨어 에러등에 기인한다. 만약 시스템 클래쉬가 발생한다면 콘솔에 에러메세지가 출력될것이다. 그리고 덤프 디바이스에 물리적인 메모리의 복사본을 저장할 것이다. 시스템은 자동적으로 리부팅이 될것이다. 시스템 부팅시에 savecore명령어가 실행되어서 덤프 디바이스로 부터 검색된 데이터를savecore디렉토리에 저장된 클래쉬 덤프를 쓰게된다. 저장된 클래쉬 덤프 파일은 문제를 해결할수 있는 정보를 담고있다.
●SystemCrash의 원인
-바이스 드라이버의 문제
-널 모듈 에러
-H/W의 문제
-Application문제
-기타
-> 솔라리스 운영체제에서 시스템 클래쉬가 발생하면 메모리상의 커널 페이지 영역을 스왑파티션을 이용하여 디스크에 파일로 저장한다. 이파일의 분석을 통해 운영체제의 이상을 확인 하기 위해 사용될수있다.
:/var/crash/hostname/unix.X (커널 )
:/var/crash/hostname/vmcore.X(core kernel)
Θ시스템 클래쉬의 필요성
:메모리 누수 현상의 원인 파악
가정) 새로운 디스크가 추가되었다.(/dev/dsk/c0d1s0)
[JeonWoo@/var/core]# dumpadm
덤프 컨텐트: 커널페이지
덤프 장치: /dev/dsk/c0d0s1(스왑)
Savecore 디렉토리: /var/crash/JeonWoo
Savecore 사용: 예
[JeonWoo@/var/core]# dumpadm -d /dev/dsk/c0d1s0
덤프 컨텐트: 커널페이지
덤프 장치: /dev/dsk/c0d1s0(전용) :dump device변경
Savecore 디렉토리: /var/crash/JeonWoo
Savecore 사용: 예
[JeonWoo@/var/core]# savecore -L
dumping to /dev/dsk/c0d1s0, offset 65536, content: kernel
100% done: 26474 pages dumped, compression ratio 2.62, dump succeeded
System dump time: Mon Apr 13 21:49:00 2009
Constructing namelist /var/crash/JeonWoo/unix.2
Constructing corefile /var/crash/JeonWoo/vmcore.2
100% done: 26474 of 26474 pages saved
[JeonWoo@/var/core]# cd /var/crash ; ls
JeonWoo/ :자신의 hostname으로 디렉토리가 생성된것을 확인
[JeonWoo@/var/crash]# cd JeonWoo ; ls
bounds unix.0 unix.1 unix.2 vmcore.0 vmcore.1 vmcore.2
unix.2 : memory
vmcore.2 : 시스템 부팅시에 savecore명령어가 실행되어서 savecore디렉토리에 저장된 클래쉬 덤프를 쓰게된다.
주의)새로 추가되는 슬라이스는 기존의 메모리 보다는 더 커야한다. 메모리상의 모든 내용이 들어갈수있는 정도의 크기를 가지고있어야 하기 때문이다.
Θ dumpadm -d 옵션 다음으로는 반드시 block device파일을 지정해야한다.
Θ character device파일을 지정하게되면 에러가 발생하게된다.
● 메모리 전체 덤프 설정
[JeonWoo@/var/crash/JeonWoo]# dumpadm -c all
덤프 컨텐트: 모두페이지
덤프 장치: /dev/dsk/c0d1s0(전용)
Savecore 디렉토리: /var/crash/JeonWoo
Savecore 사용: 예
[JeonWoo@/var/crash/JeonWoo]# savecore -L
dumping to /dev/dsk/c0d1s0, offset 65536, content: all
100% done: 153487 pages dumped, compression ratio 2.26, dump succeeded
System dump time: Mon Apr 13 21:51:43 2009
Constructing namelist /var/crash/JeonWoo/unix.3
Constructing corefile /var/crash/JeonWoo/vmcore.3
100% done: 153487 of 153487 pages saved
[JeonWoo@/var/crash/JeonWoo]# ls
bounds unix.1 unix.3 vmcore.1 vmcore.3
unix.0 unix.2 vmcore.0 vmcore.2
#dumpadm -c (kernel | all) : (-c : content)
#dumpadm -d /dev/dsk/c0d0s1 : (-d : dump device)
#dumpad -s /var/crash/solaris : (-s : savecore directory)
#dumpadm (-y | -n) : (-y : yes, -n : no)
- (조건2)
- core 파일 관리 정책을 세우고 기술하여라
:운영체제에서 프로세스가 비 정상적으로 종료하게 되는 경우 메모리상의 프로세스 영역을 core 파일(이라는 이름으로 , 프로그램 실행위치에 저장되게 된다. 이 파일의 분석을 통해 프로그램 이상 원인을 밝히는데 사용될수있다.
Θ coreadm 서비스는 부팅시에 SMF 서비스에 의해서 svc:/system/coreadm:default 서비스/인스턴스이름을 가지고있다.
Θ core파일
:core파일은 프로그램이 실행된 디렉토리에 생성된다.
:core파일의 권한은 600이다.
:사용자 프로세스의 core 파일은 프로세스 소유자로 생성이된다.
:단, setuid, setgid 프로세스의 core 파일은 root 사용자 소유이다.(보안상 setuid,setgid는 disable로 설정하는것이좋다.)
Θ 필요성
:보안상, core 파일 생성 사용자 확인 (추적)
:관리상, 시스템 불안전한 프로그램 점검(패치를 통해 해결)
[JeonWoo@/]# svcs -a | grep coreadm
online 16:23:33 svc:/system/coreadm:default
[JeonWoo@/]# coreadm
전역 코어 파일 패턴:
전역 코어 파일 내용: default
init 코어 파일 패턴: core
init 코어 파일 내용: default
전역 코어 덤프: disabled
프로세스 당 코어 덤프: enabled
전역 setid 코어 덤프: disabled
프로세스 당 setid 코어 덤프: disabled
전역 코어 덤프 기록: disabled
[JeonWoo@/]# coreadm -g /var/core/core.%u.%f%p.%t -e global
[JeonWoo@/]# coreadm
전역 코어 파일 패턴: /var/core/core.%u.%f%p.%t *전체경로지정
전역 코어 파일 내용: default
init 코어 파일 패턴: core *전체경로 지정, 기본파일이름지정
init 코어 파일 내용: default
전역 코어 덤프: enabled *전역 코어 파일 활성화 지정
프로세스 당 코어 덤프: enabled *현재 디렉토리에 코어 파일 생성 활성화 지정
전역 setid 코어 덤프: disabled *setuid,setgid프로세스의 전역코어 파일 활성화 지정
프로세스 당 setid 코어 덤프: disabled *setuid,setgid프로세스의 코어 파일 활성화 지정
전역 코어 덤프 기록: disabled *코어 덤프 로그 기록 유무 지정(/var/adm/messages)
[JeonWoo@/var/core]# mkdir /var/core :경로지정에 따른 디렉토리 생성
[JeonWoo@/test]# sleep 800 &
[1] 1561
[JeonWoo@/test]# kill -8 1561
[JeonWoo@/test]# ls -l
총 3520
-rw------- 1 root root 1.7M 4월 13일 22:25 core :프로세스 소유자로 생성, permission이 600로 생성되어있다.
[JeonWoo@/test]# cd /var/core ; ls :전체경로가 지정된곳에 core파일 생성core.0.sleep1561.1239629117
0 : UID, sleep : Program Name, 1320: PID. 1239629117 : 시간(초단위)
[JeonWoo@/]# coreadm
전역 코어 파일 패턴: /var/core/core.%u.%f%p.%t
전역 코어 파일 내용: default
init 코어 파일 패턴: core
init 코어 파일 내용: default
전역 코어 덤프: enabled
프로세스 당 코어 덤프: enabled
전역 setid 코어 덤프: disabled
프로세스 당 setid 코어 덤프: disabled
전역 코어 덤프 기록: disabled
[JeonWoo@/]# coreadm -e log
[JeonWoo@/]# coreadm
전역 코어 파일 패턴: /var/core/core.%u.%f%p.%t
전역 코어 파일 내용: default
init 코어 파일 패턴: core
init 코어 파일 내용: default
전역 코어 덤프: enabled
프로세스 당 코어 덤프: enabled
전역 setid 코어 덤프: disabled
프로세스 당 setid 코어 덤프: disabled
전역 코어 덤프 기록: enabled
[JeonWoo@/]# tail -f /var/adm/messages :로그 모니터링
[JeonWoo@/test]# sleep 800 &
[1] 1600
[JeonWoo@/test]# kill -8 1600
[JeonWoo@/test]# ls -l
총 3520
-rw------- 1 root root 1.7M 4월 13일 22:27 core :프로세스 소유자로 생성, permission이 600로 생성되어있다.
*모니터링 결과*(#tail -f /var/adm/messages)
Apr 13 22:27:29 JeonWoo genunix: [ID 603404 kern.notice] NOTICE: core_log: sleep[1600] core dumped: /var/core/core.0.sleep1600.1239629249
[JeonWoo@/test]# cd /var/core ; ls
core.0.sleep1561.1239629117 core.0.sleep1600.1239629249 : 경로로 지정된디렉토리에 생성
'Solaris > 기술과 팁' 카테고리의 다른 글
[팁] Zone 구성된 솔라리스10 가상서버에 cron 등록하기 (0) | 2010.02.02 |
---|---|
[팁] 솔라리스 텔넷세션 타임아웃(접속시간) 설정하기 (0) | 2010.01.29 |
[팁] 솔라리스 파티션 정보 및 기타 시스템 하드웨어 구조 확인 (0) | 2010.01.25 |
[팁] 솔라리스 디스크 상세 정보 확인하는 방법 (0) | 2010.01.25 |
[팁] 솔라리스의 가상메밀(swap)의 확인 (0) | 2010.01.25 |