출처 : cafe.naver.com/osschool

오늘 날에 존재하는 모든 컴퓨터는 모두 사람이 만들었습니다.
즉 신께서 만든 존재가 아니지요.
신께서 컴퓨터를 만들어 주셨다면 아마 완벽 했을 텐데
사람이 만들다보니 잦은 고장과 알 수 없는 문제들이 참 많습니다.
이런 알 수 없는 문제들을 해결하기 위해 오늘날 많은 system engineer 들이
밤을 새며 때로는 휴일날도 자신의 시간을 반납해 일을 하지요.
너무들 불쌍 합니다. 저도 System engineer 일을 해보았지만 너무 고생해요.

만일 컴퓨터에 문제가 생겼을때 스스로 복구 할 수 있는 방법이 있다면
얼마나 좋을 까요?
마치 사람처럼 몸에 상처가 생겼을때 스스로 치유가 되는 방법이 있다면
정말 좋지 않을 까요!
얼마 후에는 이런 컴퓨터가 등장하겠지요.
기대를 해 봅니다.

스스로 복구하는 이기능 이미 예전부터 사용하고 있던 기능이 있습니다.
그 기능은 바로 panic 입니다.


1. panic :
 

 panic 은 컴퓨터 내부의 일종의 커널 프로그램중에 하나 입니다.
   커널은 시스템의 중요한 부분을 주기적으로 검사 합니다.
   만일 시스템 내부에 중요한 결함이 발생되면 이를 사용자에게 통지 하고
   시스템을 자동 reset 하게 됩니다.
   왜냐하면 중요한 결함에 의해 다른 정상적인 부분에게도 문제를 일으킨 다면
   큰일 이기 때문에 중단하지요.
   예를 들어 filesystem 의 superblock 에 문제가 생겼다고 가정 하겠습니다.
   filesystem 은 데이터를 보관하는 중요한 곳입니다.
   이 부분의 문제가 생겼을때 바로 중단하지 않고 내버려 두게 된다면 filesystem
   안의 데이터에 손상을 입힐 수 있습니다. 즉 한 곳의 문제로 더 큰 문제로
   발전하기 전에 시스템은 바로 중단 해야 합니다.
   그런데 그냥 중단해 버린다면 사용자는 원인을 파악 할 수가 없지요
   그랳서 커널은 심각한 오류가 발생했을 때 내부의 커널 프로그램중 panic()
   을 실행하여 다음과 같은 순서로 시스템을 reset 합니다.


    1) 모든 프로그램을 중지 한다.
    2) 화면에 하얀바탕 화면에 검정 글씨로 PANIC 원인을 표시한다.
    3) 계속해서 현시점에서 동작한 프로그램을 알 수 있는 stack 과 register
       정보를 화면에 표시한다.
    4) 메모리의 정보중 커널 영역에 해당하는 부분을 swap 장치로 복사한다.
       이것을 dump 라고 말하며 설정 옵션에 따라 메모리 전체의 내용을
       특정 장치에 복사 할 수 있도록 할 수 있다.
    5) 시스템을 reset 하게 한다.
    6) rebooting 하면서 swap 에 복사된 정보를 /var/crash/HOSTNAME/ 아래에
       파일로 저장하는데
       unix.0  파일은 커널의 name list(변수명과 함수명)를 저장하고
       vmcore.0 파일은 실제 메모리 내용을 파일로 저장하는데 이파일을
       메모리 내용을 그대로 dump 하여 가져 왔다하여 vmcore  파일 이라고한다.
  
    7) mdb , scat ,adb , crash 등의 tool 들로  vmcore 파일을 분석하여
       원인이 무었인지 파악한다.


  panic이 발생한다는 것은 참 좋지 않은 일이다. 하지만 컴퓨터에 문제가
  발생했을당시에 원인을 발히기 위해서는 반드시 발생이 되어야 하지만
  문제가 발생했는데로 불구하고 panic 이 일어나지 않는 경우는 대부분 hang 이된다.


2. hang :
 

  hang 은 말그대로 정지된 상태를 말하는데 커널 자신이 스스로 시스템의
   문제를 인식하지 못하여 결국은 시스템 마비 사태를 일으킨 상태다.
   이런 경우 분석하긴 좀 어렵다.
   이렇게 hang 이 된 컴퓨터를 강제로 panic 하는 방법이 있다.
   그건 바로 ok> 모드 에서 'sync' 하는 방법이다.
   ok> mode 에서의 sync는 panic 처럼 메모리의 정보를 swap 장치로 dump 하고
   강제로 reset 을 해주는 기능이다.
   간혹 어떤 사람들은 O/S 명령에서의 'sync' 와 혼돈하는 경우가 있는데
   절대 다른 내용이라는 것을 알아야 한다. O/S 모드에서 'sync' 명령은
   mount 되어 있는 파일 시스템의 super block 을 메모리와 disk 간에 동기화
   하는 방법이고 ok> 모드에서의 'sync' 는 강제 panic 의 방법이기 때문이기에
   전혀 다르다.


참고로 위의 내용에 대해 좀더 깊게 배우고자하면 sun 교육센터의 과정중
 ST-375 Crash Dump Analysis Tools 과정을 수강하면 좋을 듯 합니다.
 아직 계획이 나오지 않았지만 하반기에 이보다더 수준 높은 과정인
 ST-475 Advanced Crash Dump Analysis 과정을 수강하면 너무 좋을 듯합니다.

                                                                                                조재구 ..

+ Recent posts