Linux kdump가 / var / crash에 쓰지 않는 이유는 무엇입니까?


10

다시 일어났다! 주기적으로 충돌하는 4 대의 서버가 있으며 시스템 로그 나 직렬 콘솔에 인쇄 된 정보가 없습니다.

또한 Linux kdump 서비스 는 코어 덤프를 기본 위치 인에 쓰지 않습니다 /var/crash.

  • 왜 그런지 알아낼 수 있습니까?
  • 루트 파일 시스템이 LVM 볼륨 인 경우 문제가됩니까?

여기 내가 시도한 것이 있습니다.

  1. 내 시스템은 최신 커널을 갖춘 Scientific Linux 6.5입니다.

    [root@host1 ~]# uname -r
    2.6.32-431.11.2.el6.x86_64
    [root@host1 ~]# cat /etc/issue
    Scientific Linux release 6.5 (Carbon)
    
  2. 파일 /etc/kdump.conf은 기본 설정이 포함 된 바닐라 파일입니다. 대부분의 라인에만 두 개의 활성 라인이있다, 주석 처리 path하고 core_collector.

    #net my.server.com:/export/tmp
    #net user@my.server.com
    path /var/crash
    core_collector makedumpfile -c --message-level 1 -d 31
    #core_collector scp
    
  3. 나는 수 있도록 kdump서비스가 실행되고, 그 kdump내를 재 구축 할 필요가 없습니다 initrd.

    [root@host1 ~]# chkconfig --list kdump
    kdump           0:off   1:off   2:off   3:on    4:on    5:on    6:off
    [root@host1 ~]# /etc/init.d/kdump restart
    Stopping kdump:                                            [  OK  ]
    Starting kdump:                                            [  OK  ]
    [root@host1 ~]# 
    
  4. 그런 다음 RHEL6 배포 가이드 : 29 장 에서 빌린 다음 명령을 사용하여 커널 충돌을 강제합니다 . kdump Crash Recovery Service :

    그런 다음 쉘 프롬프트에서 다음 명령을 입력하십시오.

    echo 1 > /proc/sys/kernel/sysrq
    echo c > /proc/sysrq-trigger
    

    Linux 커널이 강제 종료됩니다.

  5. 시스템이 충돌합니다. 시리얼 콘솔에서 진행 상황을 볼 수 있습니다. 나는 메시지가 표시 Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2하지만, 즉시 그 후 나는의 이상한 메시지가 표시 Usage: fsck.ext4일종의 뭔가 같은 외모의 실수로 호출되고, fsck이 일을해야 무엇이든 대신합니다. 메모리 부족 오류 또는 기타 언급이 없습니다.

    host1.example.org login: SysRq : Trigger a crash
    BUG: unable to handle kernel NULL pointer dereference at (null)
    ...
    ... skipping 50 lines of output
    ...
    Creating block device ram8
    Creating block device ram9
    Creating Remain Block Devices
    Making device-mapper control node
    Scanning logical volumes
      Reading all physical volumes.  This may take a while...
      No volume groups found
      No volume groups found
    Activating logical volumes
      No volume groups found
      No volume groups found
    Free memory/Total memory (free %): 58272 / 116616 ( 49.9691 )
    Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2
    Usage: fsck.ext4 [-panyrcdfvtDFV] [-b superblock] [-B blocksize]
            [-I inode_buffer_blocks] [-P process_inode_size]
            [-l|-L bad_blocks_file] [-C fd] [-j external_journal]
            [-E extended-options] device
    
    Emergency help:
     -p                   Autom
    
  6. 그런 다음 시스템이 재부팅됩니다 (기본값).

  7. 시스템이 다시 온라인 상태가되면에 아무것도 없습니다 /var/crash. 충돌 덤프가 작성되지 않았다고 가정합니다.

    [root@host1 ~]# ls -lA /var/crash/
    total 0
    [root@host1 ~]#
    
  8. 크래시 덤프가 일반적으로 작동 할 수 있다는 것을 알고 있습니다. 내가 말할 경우 kdump다음과 같은 구성으로 다른 시스템에 코어 덤프를 복사, kdump에 성공적으로 다른 호스트에 코어 덤프를 작성합니다 :

    path vmcore
    ssh user@hostb.example.org
    sshkey /root/.ssh/kdump_id_rsa
    
  9. 내가 설정 한 경우 default shell/etc/kdump.conf다시 나에 대해 조금 더 정보 오류가 initrd를 재 구축하고 시스템을 충돌mount: can't find /mnt in /etc/fstab

    Free memory/Total memory (free %): 58272 / 116616 ( 49.9691 )
    Saving to the local filesystem UUID=e720481b-1987-4c69-a867-f2b4cba3b312
    Usage: fsck.ext4 [-panyrcdfvtDFV] [-b superblock] [-B blocksize]
    [-I inode_buffer_blocks] [-P process_inode_size]
    [-l|-L bad_blocks_file] [-C fd] [-j external_journal]
    [-E extended-options] device
    
    Emergency help:
     -p                   Automatic repair (no questions)
     -n                   Make no changes to the filesystem
     -y                   Assume "yes" to all questions
     -c                   Check for bad blocks and add them to the badblock list
     -f                   Force checking even if filesystem is marked clean
     -v                   Be verbose
     -b superblock        Use alternative superblock
     -B blocksize         Force blocksize when looking for superblock
     -j external_journal  Set location of the external journal
     -l bad_blocks_file   Add to badblocks list
     -L bad_blocks_file   Set badblocks list
    mount: can't find /mnt in /etc/fstab
    dropping to initramfs shell
    exiting this shell will reboot your system
    /sys/block #
    
  10. 그러나 지금, 나는 붙어 있습니다.


서버의 제조사 / 모델은 무엇입니까?
ewwhite

X9DRW4 마더 보드 및 최신 바이오스를 갖춘 Supermicro입니다.
Stefan Lasiewski

버머. 최신 RHEL6 커널을 사용하는 HP ProLiants 에서 비슷한 충돌이 발생 합니다. 더 깊은 문제인지 궁금합니다.
ewwhite

나에게 그것은 버그처럼 보입니다. 그러나 출력 결과가 무엇인지 기억하지 못합니다.
Stefan Lasiewski

1
안녕. 이 문제를 해결 했습니까? 나는 비슷한 문제에 직면하고 있습니다.
철 웅 양

답변:


5

게임에 조금 늦었지만 미래에 kdump를 구성 해야하는 경우 :

경로 지시어는 지정된 파티션 또는 파일 시스템의 경로를 지정한다고 생각합니다. 기본적으로 루트 fs입니다. fstab에 / var 용 별도의 파티션이 있으면 시스템이 정상적으로 부팅 될 때 충돌 디렉토리가 난독 화됩니다. 즉, 정상적으로 부팅하고 / var를 마운트 해제하면 crash / [UniqCoreDir]이 표시됩니다. kdump.conf에 "ext4 / PATH / TO / DEVICE"지시문을 추가하여이를 조정할 수 있습니다. 또한 마운트되지 않은 다른 경로를 사용할 수 있습니다.

단지 추측이지만 / var 아래에 많은 vmcore가 묻혀있을 수 있습니다.


2

/ boot /에서 kdump initrd를 분리하여 덤프하려는 최종 경로를 확인하십시오.

  • "path"옵션이 약간 이상하다고 생각합니다. 기본값으로 두거나 명시 적으로 / var / crash로 설정합니다.

  • 컴퓨터를 재부팅하는 일종의 워치 독이 있습니까? 또한 시작하기 전에 머신을 재부팅하여 코어가 생성되지 않을 수도 있습니다.


나는 initrd를 확인하고 내가 찾은 것을 볼 것이다. path# 2 의 옵션이 기본 경로 ( /var/crash)입니다.
Stefan Lasiewski 2016 년

아니요 컴퓨터를 재부팅하는 워치 독이 없습니다. 우리가 완전히 이해하지 못하는 이유로 LSI 컨트롤러 + 삼성 SSD가 주기적으로 정지하고 있음이 밝혀졌습니다.
Stefan Lasiewski

당신은 어떤 미친 피드백, 아마도 전압을 너무 낮추는 전력 소모 문제 때문에 어떤 피드백을 받았습니까?
사용자 이름 없음
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.