Rook-Ceph 환경에서 HEALTH_WARN 문제 해결하기: crash archive-all crash 활용법

1–2분

Ceph와 Rook-Ceph 간단 소개

Ceph는 분산 스토리지 솔루션으로, 데이터를 효율적으로 저장하고 관리합니다. Rook은 Kubernetes 환경에서 Ceph 클러스터를 손쉽게 배포하고 운영할 수 있도록 돕는 오픈소스 프로젝트입니다.

특히 Ceph는 데이터를 배치할 때 CRUSH Map이라는 알고리즘을 사용해 중앙 집중식 메타데이터 서버 없이도 데이터를 효과적으로 분산시킵니다.


문제 상황

최근 Rook-Ceph 환경에서 OS 손실이 발생하며 클러스터 일부가 비정상적으로 동작했습니다. 이로 인해 특정 MDS(Metadata Server)가 업데이트되지 못하고, 아래와 같은 Ceph 경고 메시지가 출력되었습니다:

HEALTH_WARN 1 daemons have recently crashed

Ceph는 Crash가 발생하면 관련 정보를 자동으로 수집하여 경고 상태로 표시합니다. 이 경고를 해결하려면 Crash 정보를 점검하고 정리해야 합니다.


문제 해결 과정

1. Crash 정보 확인

먼저 Crash 정보를 확인하기 위해 아래 명령어를 실행합니다:

ceph crash ls

이 명령어는 최근 Crash된 daemon(OSD, MON, MDS 등)의 기록을 출력합니다. 예를 들어:

ID: 2025-01-24_10:34:12.123456
Reason: osd.1 failed


2. Crash 정보 아카이브 처리

경고를 제거하려면 Crash 정보를 아카이브 처리해야 합니다. 이를 위해 아래 명령어를 실행합니다:

ceph crash archive-all

이 명령어는 기록된 모든 Crash 데이터를 아카이브 상태로 전환합니다. 이후 경고 메시지가 사라지게 됩니다.


3. 복구 상태 확인

마지막으로, 클러스터가 정상적으로 복구되었는지 확인합니다:

ceph -s

정상적으로 복구되었다면 다음과 같은 메시지가 출력됩니다:

cluster:
  id:     <cluster-id>
  health: HEALTH_OK


Ceph의 Crash 시스템 간단 설명

Ceph는 클러스터 내 Crash 정보를 자동으로 수집하고 관리합니다.

  • Crash가 발생하면 관련 로그와 데이터를 기록합니다.
  • 관리자는 ceph crash ls 명령어로 Crash 정보를 확인하고, 문제를 해결한 후 ceph crash archive-all crash로 경고를 제거합니다.
  • 이러한 Crash 시스템은 클러스터의 안정성을 유지하는 데 필수적인 기능입니다.

결론 및 교훈