10.2. 읽을 수 있는 코어 덤프 파일 생성


Ceph 데몬이 세그먼트 장애로 예기치 않게 종료되면 해당 실패에 대한 정보를 수집하여 Red Hat 지원 엔지니어에게 제공합니다.

이러한 정보는 초기 조사 속도를 높입니다. 또한 지원 엔지니어는 코어 덤프 파일의 정보를 Red Hat Ceph Storage 클러스터의 알려진 문제와 비교할 수 있습니다.

사전 요구 사항

  1. 아직 설치되지 않은 경우 debuginfo 패키지를 설치합니다.

    1. 다음 리포지토리를 활성화하여 필요한 debuginfo 패키지를 설치합니다.

      예제

      [root@host01 ~]# subscription-manager repos --enable=rhceph-6-tools-for-rhel-9-x86_64-rpms
      [root@host01 ~]# yum --enable=rhceph-6-tools-for-rhel-9-x86_64-debug-rpms

      리포지토리가 활성화되면 지원되는 패키지 목록에서 필요한 디버그 정보 패키지를 설치할 수 있습니다.

      ceph-base-debuginfo
      ceph-common-debuginfo
      ceph-debugsource
      ceph-fuse-debuginfo
      ceph-immutable-object-cache-debuginfo
      ceph-mds-debuginfo
      ceph-mgr-debuginfo
      ceph-mon-debuginfo
      ceph-osd-debuginfo
      ceph-radosgw-debuginfo
      cephfs-mirror-debuginfo
  2. gdb 패키지가 설치되어 있는지 확인하고 없는 경우 설치합니다.

    예제

    [root@host01 ~]# dnf install gdb

10.2.1. 컨테이너화된 배포에서 읽을 수 있는 코어 덤프 파일 생성

코어 덤프 파일을 캡처하는 두 가지 시나리오를 포함하는 Red Hat Ceph Storage 6의 코어 덤프 파일을 생성할 수 있습니다.

  • SIGILL, SIGTRAP, SIGABRT 또는 SIGSEGV 오류로 인해 Ceph 프로세스가 예기치 않게 종료되면.

또는

  • 예를 들어 Ceph 프로세스와 같은 문제를 디버깅하는 경우 수동으로 CPU 사이클을 사용하거나 응답하지 않습니다.

사전 요구 사항

  • Ceph 컨테이너를 실행하는 컨테이너 노드에 대한 루트 수준 액세스.
  • 적절한 디버깅 패키지 설치
  • GNU Project Debugger(gdb) 패키지 설치
  • 호스트에 8GB 이상의 RAM이 있는지 확인합니다. 호스트에 데몬이 여러 개 있는 경우 Red Hat은 더 많은 RAM을 권장합니다.

절차

  1. SIGILL, SIGTRAP, SIGABRT 또는 SIGSEGV 오류로 인해 Ceph 프로세스가 예기치 않게 종료되면 다음을 수행합니다.

    1. 오류가 발생한 Ceph 프로세스가 실행 중인 노드에서 코어 패턴을 systemd-coredump 서비스로 설정합니다.

      예제

      [root@mon]# echo "| /usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e" > /proc/sys/kernel/core_pattern

    2. Ceph 프로세스로 인해 다음 컨테이너 실패를 조사하고 /var/lib/systemd/coredump/ 디렉토리에서 코어 덤프 파일을 검색합니다.

      예제

      [root@mon]# ls -ltr /var/lib/systemd/coredump
      total 8232
      -rw-r-----. 1 root root 8427548 Jan 22 19:24 core.ceph-osd.167.5ede29340b6c4fe4845147f847514c12.15622.1584573794000000.xz

  2. Ceph MonitorsCeph OSD 의 코어 덤프 파일을 수동으로 캡처하려면 다음을 수행합니다.

    1. MONITOR_ID 또는 OSD_ID 를 가져와서 컨테이너를 입력합니다.

      구문

      podman ps
      podman exec -it MONITOR_ID_OR_OSD_ID bash

      예제

      [root@host01 ~]# podman ps
      [root@host01 ~]# podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-osd-2 bash

    2. 컨테이너 내부에 procps-nggdb 패키지를 설치합니다.

      예제

      [root@host01 ~]# dnf install procps-ng gdb

    3. 프로세스 ID를 찾습니다.

      구문

      ps -aef | grep PROCESS | grep -v run

      PROCESS 를 실행 중인 프로세스의 이름으로 교체합니다(예: ceph-mon 또는 ceph-osd ).

      예제

      [root@host01 ~]# ps -aef | grep ceph-mon | grep -v run
      ceph       15390   15266  0 18:54 ?        00:00:29 /usr/bin/ceph-mon --cluster ceph --setroot ceph --setgroup ceph -d -i 5
      ceph       18110   17985  1 19:40 ?        00:00:08 /usr/bin/ceph-mon --cluster ceph --setroot ceph --setgroup ceph -d -i 2

    4. 코어 덤프 파일을 생성합니다.

      구문

      gcore ID

      ID 를 이전 단계에서 얻은 프로세스의 ID로 바꿉니다(예: 18110 ).

      예제

      [root@host01 ~]# gcore 18110
      warning: target file /proc/18110/cmdline contained unexpected null characters
      Saved corefile core.18110

    5. 코어 덤프 파일이 올바르게 생성되었는지 확인합니다.

      예제

      [root@host01 ~]# ls -ltr
      total 709772
      -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.18110

    6. Ceph Monitor 컨테이너 외부에서 코어 덤프 파일을 복사합니다.

      구문

      podman cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmp

      MONITOR_ID 를 Ceph Monitor의 ID 번호로 바꾸고 MONITOR_PID 를 프로세스 ID 번호로 교체합니다.

  3. 다른 Ceph 데몬의 코어 덤프 파일을 수동으로 캡처하려면 다음을 수행합니다.

    1. cephadm 쉘에 로그인합니다.

      예제

      [root@host03 ~]# cephadm shell

    2. 데몬에 ptrace 를 활성화합니다.

      예제

      [ceph: root@host01 /]# ceph config set mgr mgr/cephadm/allow_ptrace true

    3. 데몬 서비스를 재배포합니다.

      구문

      ceph orch redeploy SERVICE_ID

      예제

      [ceph: root@host01 /]# ceph orch redeploy mgr
      [ceph: root@host01 /]# ceph orch redeploy rgw.rgw.1

    4. cephadm 쉘 을 종료하고 데몬이 배포된 호스트에 로그인합니다.

      예제

      [ceph: root@host01 /]# exit
      [root@host01 ~]# ssh root@10.0.0.11

    5. DAEMON_ID 를 가져와서 컨테이너를 입력합니다.

      예제

      [root@host04 ~]# podman ps
      [root@host04 ~]# podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-rgw-rgw-1-host04 bash

    6. procps-nggdb 패키지를 설치합니다.

      예제

      [root@host04 /]# dnf install procps-ng gdb

    7. 프로세스의 PID를 가져옵니다.

      예제

      [root@host04 /]# ps aux | grep rados
      ceph           6  0.3  2.8 5334140 109052 ?      Sl   May10   5:25 /usr/bin/radosgw -n client.rgw.rgw.1.host04 -f --setuser ceph --setgroup ceph --default-log-to-file=false --default-log-to-stderr=true --default-log-stderr-prefix=debug

    8. 코어 덤프 수집:

      구문

      gcore PID

      예제

      [root@host04 /]# gcore 6

    9. 코어 덤프 파일이 올바르게 생성되었는지 확인합니다.

      예제

      [root@host04 /]# ls -ltr
      total 108798
      -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.6

    10. 컨테이너 외부에서 코어 덤프 파일을 복사합니다.

      구문

      podman cp ceph-mon-DAEMON_ID:/tmp/mon.core.PID /tmp

      DAEMON_ID 를 Ceph 데몬의 ID 번호로 바꾸고 PID 를 프로세스 ID 번호로 바꿉니다.

  4. systemd-coredump 가 충돌된 ceph 데몬의 코어 덤프를 성공적으로 저장할 수 있도록 하려면 다음을 수행합니다.

    1. 충돌된 프로세스의 코어 덤프 컬렉션을 허용하려면 DefaultLimitCORE/etc/systemd/system.conf 에서 무한 으로 설정합니다.

      구문

      # cat /etc/systemd/system.conf
      
      DefaultLimitCORE=infinity

    2. systemd 또는 노드를 다시 시작하여 업데이트된 systemd 설정을 적용합니다.

      구문

      # sudo systemctl daemon-reexec

    3. 이전 데몬과 관련된 코어 덤프 파일이 충돌하는지 확인합니다.

      구문

      # ls -ltr /var/lib/systemd/coredump/

  5. 분석을 위해 코어 덤프 파일을 Red Hat 지원 케이스에 업로드합니다. 자세한 내용은 Red Hat 지원 엔지니어에게 정보 제공 에서 참조하십시오.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.