11.2. 읽을 수 있는 코어 덤프 파일 생성
Ceph 데몬이 분할 장애로 예기치 않게 종료되면 오류에 대한 정보를 수집하여 Red Hat 지원 엔지니어에게 제공합니다.
이러한 정보는 초기 조사를 가속화합니다. 또한 지원 엔지니어는 코어 덤프 파일의 정보를 Red Hat Ceph Storage 클러스터의 알려진 문제와 비교할 수 있습니다.
사전 요구 사항
debuginfo 패키지가 아직 설치되지 않은 경우 설치합니다.
다음 리포지토리를 활성화하여 필요한 debuginfo 패키지를 설치합니다.
예
subscription-manager repos --enable=rhceph-6-tools-for-rhel-9-x86_64-rpms yum --enable=rhceph-6-tools-for-rhel-9-x86_64-debug-rpms
[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-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 리포지토리가 활성화되면 이 지원되는 패키지 목록에서 필요한 디버그 정보 패키지를 설치할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
gdb패키지가 설치되어 있지 않은 경우 설치합니다.예
dnf install gdb
[root@host01 ~]# dnf install gdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2.1. 컨테이너화된 배포에서 읽을 수 있는 코어 덤프 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
코어 덤프 파일을 캡처하는 두 가지 시나리오가 포함된 Red Hat Ceph Storage의 코어 덤프 파일을 생성할 수 있습니다.
- SIGILL, SIGTRAP, SIGABRT 또는 SIGSEGV 오류로 인해 Ceph 프로세스가 예기치 않게 종료되면.
또는
- 예를 들어 Ceph 프로세스와 같은 문제를 디버깅하는 경우 수동으로는 높은 CPU 사이클을 사용하거나 응답하지 않습니다.
사전 요구 사항
- Ceph 컨테이너를 실행하는 컨테이너 노드에 대한 루트 수준 액세스.
- 적절한 디버깅 패키지를 설치합니다.
-
GNU 프로젝트 디버거(
gdb) 패키지 설치. - 호스트에 8GB RAM이 있는지 확인합니다. 호스트에 데몬이 여러 개 있는 경우 Red Hat은 더 많은 RAM을 권장합니다.
프로세스
SIGILL, SIGTRAP, SIGABRT 또는 SIGSEGV 오류로 인해 Ceph 프로세스가 예기치 않게 종료되는 경우:
실패한 Ceph 프로세스가 있는 컨테이너가 실행 중인 노드에서 코어 패턴을
systemd-coredump서비스로 설정합니다.예
echo "| /usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e" > /proc/sys/kernel/core_pattern
[root@mon]# echo "| /usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e" > /proc/sys/kernel/core_patternCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph 프로세스로 인해 다음 컨테이너 실패를 조사하고
/var/lib/systemd/coredump/디렉터리에서 코어 덤프 파일을 검색합니다.예
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
[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.xzCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Ceph 모니터 및 Ceph OSD 의 코어 덤프 파일을 수동으로 캡처하려면 다음을 수행합니다.
MONITOR_ID 또는 OSD_ID 를 가져오고 컨테이너를 입력합니다.
구문
podman ps podman exec -it MONITOR_ID_OR_OSD_ID bash
podman ps podman exec -it MONITOR_ID_OR_OSD_ID bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예
podman ps podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-osd-2 bash
[root@host01 ~]# podman ps [root@host01 ~]# podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-osd-2 bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너 내부에
procps-ng및gdb패키지를 설치합니다.예
dnf install procps-ng gdb
[root@host01 ~]# dnf install procps-ng gdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 프로세스 ID를 찾습니다.
구문
ps -aef | grep PROCESS | grep -v run
ps -aef | grep PROCESS | grep -v runCopy to Clipboard Copied! Toggle word wrap Toggle overflow PROCESS 를 실행 중인 프로세스의 이름(예:
ceph-mon또는ceph-osd)으로 바꿉니다.예
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
[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 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 코어 덤프 파일을 생성합니다.
구문
gcore ID
gcore IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow ID 를 이전 단계에서 가져온 프로세스의 ID로 바꿉니다(예:
18110).예
gcore 18110 warning: target file /proc/18110/cmdline contained unexpected null characters Saved corefile core.18110
[root@host01 ~]# gcore 18110 warning: target file /proc/18110/cmdline contained unexpected null characters Saved corefile core.18110Copy to Clipboard Copied! Toggle word wrap Toggle overflow 코어 덤프 파일이 올바르게 생성되었는지 확인합니다.
예
ls -ltr total 709772 -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.18110
[root@host01 ~]# ls -ltr total 709772 -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.18110Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph Monitor 컨테이너 외부에서 코어 덤프 파일을 복사합니다.
구문
podman cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmp
podman cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow MONITOR_ID 를 Ceph Monitor의 ID 번호로 바꾸고 MONITOR_PID 를 프로세스 ID 번호로 바꿉니다.
다른 Ceph 데몬의 코어 덤프 파일을 수동으로 캡처하려면 다음을 수행합니다.
cephadm 쉘에로그인합니다.예
cephadm shell
[root@host03 ~]# cephadm shellCopy to Clipboard Copied! Toggle word wrap Toggle overflow 데몬의
ptrace를 활성화합니다.예
[ceph: root@host01 /]# ceph config set mgr mgr/cephadm/allow_ptrace true
[ceph: root@host01 /]# ceph config set mgr mgr/cephadm/allow_ptrace trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 데몬 서비스를 재배포합니다.
구문
ceph orch redeploy SERVICE_ID
ceph orch redeploy SERVICE_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예
[ceph: root@host01 /]# ceph orch redeploy mgr [ceph: root@host01 /]# ceph orch redeploy rgw.rgw.1
[ceph: root@host01 /]# ceph orch redeploy mgr [ceph: root@host01 /]# ceph orch redeploy rgw.rgw.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow cephadm 쉘을 종료하고 데몬이 배포된 호스트에 로그인합니다.예
[ceph: root@host01 /]# exit ssh root@10.0.0.11
[ceph: root@host01 /]# exit [root@host01 ~]# ssh root@10.0.0.11Copy to Clipboard Copied! Toggle word wrap Toggle overflow DAEMON_ID 를 가져와서 컨테이너를 입력합니다.
예
podman ps podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-rgw-rgw-1-host04 bash
[root@host04 ~]# podman ps [root@host04 ~]# podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-rgw-rgw-1-host04 bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow procps-ng및gdb패키지를 설치합니다.예
dnf install procps-ng gdb
[root@host04 /]# dnf install procps-ng gdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 프로세스의 PID를 가져옵니다.
예
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
[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=debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow 코어 덤프 수집:
구문
gcore PID
gcore PIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예
gcore 6
[root@host04 /]# gcore 6Copy to Clipboard Copied! Toggle word wrap Toggle overflow 코어 덤프 파일이 올바르게 생성되었는지 확인합니다.
예
ls -ltr total 108798 -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.6
[root@host04 /]# ls -ltr total 108798 -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.6Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너 외부에서 코어 덤프 파일을 복사합니다.
구문
podman cp ceph-mon-DAEMON_ID:/tmp/mon.core.PID /tmp
podman cp ceph-mon-DAEMON_ID:/tmp/mon.core.PID /tmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow DAEMON_ID 를 Ceph 데몬의 ID 번호로 바꾸고 PID 를 프로세스 ID 번호로 바꿉니다.
- 분석을 위해 코어 덤프 파일을 Red Hat 지원 케이스에 업로드합니다. 자세한 내용은 Red Hat 지원 엔지니어에게 제공되는 정보를 참조하십시오.