Rook-Ceph Troubleshooting

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 with no 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 -sceph 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 자동 알림 및 대시보드 사용

RSS Feed
마지막 수정일자