Rook-Ceph Troubleshooting
1️⃣3️⃣ Rook-Ceph Troubleshooting 가이드
Ceph는 강력한 분산 스토리지이지만, 그만큼 문제도 다양하게 발생할 수 있습니다.
본 섹션에서는 실무에서 자주 마주치는 장애 원인 진단 → 해결 → 예방 흐름을 명령어, 로그, 구조도와 함께 소개합니다.
1. ceph -s, ceph osd tree 등 상태 점검
✅ 1.1 클러스터 전체 상태 확인
ceph -s
출력 예시:
cluster:
id: 12345678-xxxx-yyyy-zzzz-abcdef123456
health: HEALTH_WARN
1 osds down
Degraded data redundancy: 2 pgs undersized
services:
mon: 3 daemons, quorum a,b,c
mgr: a(active)
osd: 3 osds: 2 up, 3 in
rgw: 1 daemon active
data:
pools: 3 pools, 128 pgs
objects: 1.2k objects, 5.3GiB
usage: 10GiB used, 90GiB / 100GiB avail
pgs: 20 active+clean
1 down
🌳 1.2 OSD 상태 및 트리 구조 확인
ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.29099 root default
-3 0.14549 host node1
0 hdd 0.14549 osd.0 up 1.00000 1.00000
-5 0.14549 host node2
1 hdd 0.14549 osd.1 down 1.00000 1.00000
down
,out
상태의 OSD를 쉽게 파악할 수 있음
2. OSD Not Up / Out 문제 해결
🛠️ 2.1 OSD가 down 상태일 때
ceph osd down | jq .
# 또는
ceph osd dump | grep "down"
원인 예시:
- 디스크 고장
- OSD 데몬 비정상 종료
- 노드 네트워크 장애
🔄 2.2 OSD 복구 시도
# 1. OSD 재시작
systemctl restart rook-ceph-osd@1
# 2. Kubernetes에서 확인
kubectl -n rook-ceph get pod -l ceph-osd-id=1
# 3. 실패 시 삭제 후 재생성
ceph osd purge <id> --yes-i-really-mean-it
ceph osd create
3. Disk full, slow ops, backfill 등의 실무 문제 사례
🚨 3.1 디스크 가득 참 (Full 상태)
ceph df
문제 예시:
HEALTH_ERR
withno space left on device
- 해결: OSD 확장 또는 오래된 이미지 삭제
🐢 3.2 느린 연산(Slow ops)
ceph health detail
SLOW_OPS: 5 slow ops, oldest one blocked for 32 sec
해결 전략:
- MGR 모듈 이상 확인
- OSD의 CPU/RAM/IO 성능 확인
ceph tell osd.* bench
로 OSD 성능 측정
🔁 3.3 Backfill 과다
ceph -s
HEALTH_WARN
Degraded data redundancy: 12 pgs backfill
- 노드 장애 후 데이터 복제 중
- 네트워크/디스크 속도에 따라 장시간 지속될 수 있음
4. 로그 확인 및 alert 대응 전략
📄 4.1 로그 확인 (OSD, MON, MGR 등)
kubectl -n rook-ceph logs -l app=rook-ceph-osd
kubectl -n rook-ceph logs -l app=rook-ceph-mon
failed to mount
,heartbeat no reply
,slow request
등으로 진단
🔔 4.2 Alert 대응 전략 (Prometheus 연동 시)
Alert 이름 | 설명 | 대응 |
---|---|---|
CephHealthError |
전체 클러스터 오류 | ceph -s 및 ceph health detail 로 원인 파악 |
CephOSDDiskNotUp |
OSD 상태 비정상 | 로그 확인 및 재시작, 재생성 |
CephPoolBackfill |
백필 상태 장기화 | 디스크 속도, OSD 상태 점검 |
CephMonQuorumDown |
MON 쿼럼 불능 | 네트워크 확인, Pod 상태 점검 |
CephMgrModuleCrash |
MGR 기능 불능 | 모듈 로그 확인 후 재시작 |
📊 아키텍처 흐름도: 장애 진단 절차
graph TD A[알림 수신 (Alertmanager)] --> B[ceph -s 상태 확인] B --> C1{HEALTH_WARN?} C1 -->|Yes| D[ceph health detail 분석] C1 -->|No| E[정상 상태, 모니터링 유지] D --> F1[OSD 관련?] --> G1[ceph osd tree, logs 확인] D --> F2[Pool/PG 문제?] --> G2[ceph df, ceph pg dump] D --> F3[Slow Ops?] --> G3[리소스 모니터링, IO 벤치]
🧠 실전 운영 팁 정리
항목 | 명령어 | 설명 |
---|---|---|
상태 확인 | ceph -s |
클러스터 헬스, pgs 상태 확인 |
OSD 트리 | ceph osd tree |
OSD 상태, 호스트별 구분 |
로그 확인 | kubectl logs -n rook-ceph |
pod 로그 통해 디버깅 |
디스크 사용 | ceph df , ceph osd df |
사용량, 공간 분포 분석 |
Alert 대응 | Prometheus, Alertmanager | 자동 알림 및 대시보드 사용 |
마지막 수정일자