Ceph 및 Rook 문제 해결
이 항목에서는 Ceph 및 Rook의 문제를 해결하기 위한 지침을 제공합니다.
OSD 생성 실패 문제 해결
문제
OSD(Object Storage Daemon)가 생성되지 않았기 때문에 설치가 실패합니다.
솔루션
설치 실패의 일반적인 이유는 OSD(Object Storage Daemon)가 생성되지 않았기 때문입니다. OSD는 클러스터 노드에서 스토리지를 구성합니다. OSD는 리소스가 부족하거나 잘못 분할된 디스크 공간의 형태로 디스크 리소스를 사용할 수 없기 때문에 만들어지지 않을 수 있습니다. 디스크 공간 부족으로 인한 설치 실패를 방지하려면 노드에 사용 가능한 포맷되지 않은 디스크 공간이 충분한지 확인하십시오.
디버그 디스크 포맷 문제
문제
디스크를 포맷해야 하는 경우 설치가 실패합니다.
솔루션
포맷되지 않은 디스크 공간이 충분한지 확인합니다.
작업 로그를 rook-ceph-osd-prepare-hostname-*
검사하여 디스크 또는 파티션을 다시 포맷해야 하는지 여부를 결정해야 합니다. 디스크 또는 파티션을 다시 포맷하고 Rook을 다시 시작하려면:
-
다음 방법 중 하나를 사용하여 기존 디스크나 파티션을 다시 포맷합니다.
주의:이 명령은 사용 중인 디스크 또는 파티션을 완전히 다시 포맷하면 해당 디스크의 모든 데이터가 손실됩니다.
- Ceph에 사용했어야 했지만 사용할 수 없는 상태였기 때문에 사용하지 않은 블록 스토리지 장치가 있는 경우 디스크를 완전히 다시 포맷할 수 있습니다.
$ sgdisk -zap /dev/disk $ dd if=/dev/zero of=/dev/disk bs=1M count=100
- Ceph에 사용해야 하는 디스크 파티션이 있는 경우 파티션의 데이터를 완전히 지울 수 있습니다.
$ wipefs -a -f /dev/partition $ dd if=/dev/zero of=/dev/partition bs=1M count=100
- Ceph에 사용했어야 했지만 사용할 수 없는 상태였기 때문에 사용하지 않은 블록 스토리지 장치가 있는 경우 디스크를 완전히 다시 포맷할 수 있습니다.
-
Rook을 다시 시작하여 변경 사항을 저장하고 OSD 생성 프로세스를 다시 시도합니다.
$ kubectl rollout restart deploy -n rook-ceph rook-ceph-operator
Ceph OSD 오류 문제 해결
문제
Ceph OSD가 실패합니다.
솔루션
실패한 OSD를 식별하고 제거해야 합니다. 그런 다음 디스크를 부분적으로 또는 완전히 다시 포맷하거나 교체할 수 있습니다.
디스크 오류 문제를 해결하려면:
-
다음 명령을 실행하여 네임스페이스에 설치된
rook-ceph
Rook 및 Ceph Pod의 상태를 확인합니다.# kubectl get po -n rook-ceph
-
Pod가
rook-ceph-osd-*
Error
또는CrashLoopBackoff
상태인 경우 디스크를 복구해야 합니다.디스크를 복구하려면 다음과 같이 하십시오.
-
그만
rook-ceph-operator
.# kubectl scale deploy -n rook-ceph rook-ceph-operator --replicas=0
-
실패한 OSD 프로세스를 제거합니다.
# kubectl delete deploy -n rook-ceph rook-ceph-osd-number
-
도구 상자에 연결합니다.
$ kubectl exec -ti -n rook-ceph $(kubectl get po -n rook-ceph -l app=rook-ceph-tools -o jsonpath={..metadata.name}) -- bash
-
결함이 있는 OSD를 식별합니다.
# ceph osd status
-
실패한 OSD를 표시하십시오.
[root@rook-ceph-tools-/]# ceph osd out 5 marked out osd.5. [root@rook-ceph-tools-/]# ceph osd status ID HOST USED AVAIL WR OPS WR DATA RD OPS RD DATA STATE 0 10.xx.xx.210 4856M 75.2G 0 0 0 0 exists,up 1 10.xx.xx.215 2986M 77.0G 0 0 1 89 exists,up 2 10.xx.xx.98 3243M 76.8G 0 0 1 15 exists,up 3 10.xx.xx.195 4945M 75.1G 0 0 0 0 exists,up 4 10.xx.xx.170 5053M 75.0G 0 0 0 0 exists,up 5 10.xx.xx.197 0 0 0 0 0 0 exists
-
오류가 발생한 OSD를 제거합니다.
# ceph osd purge number --yes-i-really-mean-it
- 실패한 OSD를 호스트한 노드에 연결하고 다음 중 하나를 수행합니다.
- 하드웨어 오류가 발생한 경우 하드 디스크를 교체하십시오.
- 디스크를 완전히 다시 포맷하십시오.
$ sgdisk -zap /dev/disk $ dd if=/dev/zero of=/dev/disk bs=1M count=100
- 파티션을 완전히 다시 포맷하십시오.
$ wipefs -a -f /dev/partition $ dd if=/dev/zero of=/dev/partition bs=1M count=100
-
다시 시작
rook-ceph-operator
.# kubectl scale deploy -n rook-ceph rook-ceph-operator --replicas=1
-
OSD 포드를 모니터링합니다.
# kubectl get po -n rook-ceph
OSD가 복구되지 않으면 동일한 절차를 사용하여 OSD를 제거한 다음 다시 시작하기
rook-ceph-operator
전에 디스크를 제거하거나 파티션을 삭제하십시오.
-
또한보십시오
Rook 및 Ceph Pod의 디버그 문제
문제
Rook 및 Ceph Pod가 error
상태인 경우 설치가 실패할 수 있습니다.
솔루션
전력이 부족한 하드웨어로 인해 Rook 및 Ceph Pod 오류가 발생할 수 있습니다. Rook 및 Ceph Pod 오류로 인해 설치가 실패할 수도 있습니다. Rook 및 Ceph Pod와 관련된 대부분의 문제를 해결하려면 설치된 Pod가 running
상태인지 확인합니다. 이를 확인하려면 다음을 수행해야 합니다.
-
다음 명령을 실행하여 네임스페이스에 설치된
rook-ceph
Rook 및 Ceph Pod의 상태를 확인합니다.# kubectl get po -n rook-ceph
-
다음 Pod가
running
상태인지 확인합니다.rook-ceph-mon-*
- 일반적으로 세 개의 모니터 포드-
rook-ceph-mgr-*
- 관리자 포드 1개 -
rook-ceph-osd-*
- 3개 이상의 OSD 포드 -
rook-ceph-mds-cephfs-*
- 메타데이터 서버 -
rook-ceph-rgw-object-store-*
—ObjectStore 게이트웨이 -
rook-ceph-tools*
- 추가 디버깅 옵션의 경우툴박스에 연결하려면 다음 명령을 사용합니다.
$ kubectl exec -ti -n rook-ceph $(kubectl get po -n rook-ceph -l app=rook-ceph-tools \ -o jsonpath={..metadata.name}) -- bash
툴박스의 추가 일반 명령에 대한 자세한 내용은 표 1을 참조하십시오.
표 1: 추가 명령 명령 설명 # ceph status
클러스터 상태를 봅니다. # ceph osd status
OSD 맵 요약을 봅니다. # ceph osd df
디스크 사용량(전역 및 풀당)에 대한 세부 정보를 봅니다. # ceph osd utilization
OSD 사용률을 봅니다. # ceph osd pool stats
디스크 풀 사용량을 봅니다. # ceph osd tree
OSD 트리를 봅니다. # ceph pg stat
PG 상태 및 성능을 봅니다.