10.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-rpms
Copy 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 gdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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을 권장합니다.
절차
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_pattern
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph 프로세스로 인해 다음 컨테이너 실패를 조사하고
/var/lib/systemd/coredump/
디렉토리에서 코어 덤프 파일을 검색합니다.예제
ls -ltr /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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Ceph Monitors 및 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 bash
Copy 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 bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너 내부에
procps-ng
및gdb
패키지를 설치합니다.예제
dnf install procps-ng gdb
[root@host01 ~]# dnf install procps-ng gdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로세스 ID를 찾습니다.
구문
ps -aef | grep PROCESS | grep -v run
ps -aef | grep PROCESS | grep -v run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PROCESS 를 실행 중인 프로세스의 이름으로 교체합니다(예:
ceph-mon
또는ceph-osd
).예제
ps -aef | grep ceph-mon | grep -v run
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 코어 덤프 파일을 생성합니다.
구문
gcore ID
gcore ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ID 를 이전 단계에서 얻은 프로세스의 ID로 바꿉니다(예:
18110
).예제
gcore 18110
[root@host01 ~]# gcore 18110 warning: target file /proc/18110/cmdline contained unexpected null characters Saved corefile core.18110
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 코어 덤프 파일이 올바르게 생성되었는지 확인합니다.
예제
ls -ltr
[root@host01 ~]# ls -ltr total 709772 -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.18110
Copy 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 /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MONITOR_ID 를 Ceph Monitor의 ID 번호로 바꾸고 MONITOR_PID 를 프로세스 ID 번호로 교체합니다.
다른 Ceph 데몬의 코어 덤프 파일을 수동으로 캡처하려면 다음을 수행합니다.
cephadm 쉘에
로그인합니다.예제
cephadm shell
[root@host03 ~]# cephadm shell
Copy 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 true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 데몬 서비스를 재배포합니다.
구문
ceph orch redeploy SERVICE_ID
ceph orch redeploy SERVICE_ID
Copy 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.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cephadm 쉘
을 종료하고 데몬이 배포된 호스트에 로그인합니다.예제
ssh root@10.0.0.11
[ceph: root@host01 /]# exit [root@host01 ~]# ssh root@10.0.0.11
Copy 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 bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow procps-ng
및gdb
패키지를 설치합니다.예제
dnf install procps-ng gdb
[root@host04 /]# dnf install procps-ng gdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로세스의 PID를 가져옵니다.
예제
ps aux | grep rados
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 코어 덤프 수집:
구문
gcore PID
gcore PID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
gcore 6
[root@host04 /]# gcore 6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 코어 덤프 파일이 올바르게 생성되었는지 확인합니다.
예제
ls -ltr
[root@host04 /]# ls -ltr total 108798 -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.6
Copy 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 /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DAEMON_ID 를 Ceph 데몬의 ID 번호로 바꾸고 PID 를 프로세스 ID 번호로 바꿉니다.
systemd-coredump
가 충돌된 ceph 데몬의 코어 덤프를 성공적으로 저장할 수 있도록 하려면 다음을 수행합니다.충돌된 프로세스의 코어 덤프 컬렉션을 허용하려면
DefaultLimitCORE
를/etc/systemd/system.conf
에서 무한 으로 설정합니다.구문
cat /etc/systemd/system.conf DefaultLimitCORE=infinity
# cat /etc/systemd/system.conf DefaultLimitCORE=infinity
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd
또는 노드를 다시 시작하여 업데이트된systemd
설정을 적용합니다.구문
sudo systemctl daemon-reexec
# sudo systemctl daemon-reexec
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 데몬과 관련된 코어 덤프 파일이 충돌하는지 확인합니다.
구문
ls -ltr /var/lib/systemd/coredump/
# ls -ltr /var/lib/systemd/coredump/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 분석을 위해 코어 덤프 파일을 Red Hat 지원 케이스에 업로드합니다. 자세한 내용은 Red Hat 지원 엔지니어에게 정보 제공 에서 참조하십시오.