AI

안정적인 Ceph 운영을 위한 일일 점검 방법

Gadget 2025. 10. 31. 09:29

Ceph 운영의 등대: 안정적인 Ceph 운영을 위한 일일 점검 방법

Ceph는 방대한 양의 데이터를 효율적으로 저장하고 관리할 수 있는 강력한 오픈소스 분산 스토리지 시스템입니다. 하지만 그 복잡성 때문에 Ceph 클러스터를 안정적으로 운영하는 것은 결코 쉬운 일이 아닙니다. 마치 거대한 항해를 떠나는 배와 같아서, 매일매일 꼼꼼한 점검이 이루어져야만 예측 불가능한 폭풍 속에서도 목적지까지 안전하게 도달할 수 있습니다.

이 블로그 게시물에서는 Ceph 클러스터를 안정적으로 운영하기 위한 "일일 점검 방법"에 대해 상세하게 다루고자 합니다. 이 점검 리스트를 통해 잠재적인 문제를 조기에 파악하고 예방하여, 여러분의 Ceph 클러스터가 항상 최상의 상태를 유지할 수 있도록 돕겠습니다.


1. Ceph Status 확인: 클러스터의 심장 박동을 듣다

Ceph 클러스터의 건강 상태를 가장 빠르게 파악할 수 있는 방법은 ceph status 명령어를 사용하는 것입니다. 마치 의사가 환자의 맥박을 확인하는 것과 같습니다.

ceph status

무엇을 확인해야 하는가?

  • health: OK 확인: 가장 중요합니다. 만약 HEALTH_WARN, HEALTH_ERR 등이 보인다면 즉시 다음 단계를 통해 원인을 파악해야 합니다.
  • HEALTH_WARN은 주의가 필요한 상태를, HEALTH_ERR은 즉각적인 조치가 필요한 심각한 상태를 의미합니다.
  • Monitors: 모든 모니터가 quorum에 참여하고 있는지 확인합니다.
  • mon: 3 daemons, quorum a,b,c 와 같이 모든 모니터가 정상적으로 작동하고 있는지 봅니다.
  • OSDs: 모든 OSD가 up (활동 중) 이고 in (클러스터에 포함) 상태인지 확인합니다.
  • osd: 6 osds: 6 up, 6 in 와 같이 upin의 개수가 동일한지 확인합니다. 만약 up은 적은데 in은 많다면 일부 OSD가 다운되었음을 의미합니다.
  • PGs (Placement Groups): 모든 PG가 active+clean 상태인지 확인합니다.
  • pg: 128 pgs, 0 pgs data, 0 pgs degraded 와 같이 active+clean 외의 다른 상태 (degraded, recovering, stale, unclean 등) 가 없는지 봅니다.
  • 만약 다른 상태의 PG가 있다면, 데이터 손실 위험이 있거나 성능 저하가 발생할 수 있습니다.
  • Data Usage: 클러스터의 전체 용량과 사용량을 확인합니다.
  • data: 100 GiB used, 900 GiB / 1 TiB avail 와 같이 사용량이 너무 높아 임계치에 근접하고 있지는 않은지 확인합니다.

** Tip:** ceph -sceph status 의 축약형입니다.


2. Ceph Log 파일 모니터링: 클러스터의 고백을 듣다

Ceph 데몬들은 자신의 활동과 발생한 문제들을 로그 파일에 기록합니다. 이 로그 파일들은 클러스터의 문제를 진단하는 데 있어 가장 중요한 정보원입니다.

무엇을 확인해야 하는가?

  • 최근 오류 및 경고 메시지 확인: grep 명령어를 사용하여 ERROR, WARN 키워드를 검색합니다.
  • tail -f /var/log/ceph/ceph-*.log | grep -E "ERROR|WARN"
  • grep -E "ERROR|WARN" /var/log/ceph/ceph-*.log | tail -n 50
  • 특정 데몬 로그 파일 확인: 문제가 발생한 것으로 의심되는 특정 데몬 (mon, osd, mds, rgw 등) 의 로그 파일을 집중적으로 확인합니다.
  • /var/log/ceph/ceph-mon.<hostname>.log
  • /var/log/ceph/ceph-osd.<osd_id>.log
  • 로그 파일 크기: 로그 파일이 비정상적으로 빠르게 커지고 있지는 않은지 확인합니다. 이는 데몬이 무언가에 대해 계속해서 오류를 내뱉고 있음을 의미할 수 있습니다.
  • du -sh /var/log/ceph/

** Tip:** logrotate 설정을 통해 로그 파일이 너무 커지는 것을 방지하고 관리해야 합니다.


3. OSD 상태 점검: 데이터 보존의 최전선을 지키다

OSD는 실제 데이터를 저장하는 Ceph의 핵심 구성 요소입니다. OSD의 상태는 곧 데이터의 안정성과 직결됩니다.

무엇을 확인해야 하는가?

  • 개별 OSD 상태 확인: ceph osd tree 명령어로 모든 OSD의 상태를 확인합니다.
  • ceph osd tree
  • 출력에서 upin 플래그를 확인합니다. 만약 OSD가 down 상태라면 즉시 조치해야 합니다.
  • OSD 디스크 사용량 확인: 각 OSD의 디스크 사용량이 과도하게 높지는 않은지 확인합니다.
  • ceph df 또는 ceph osd df
  • 특정 OSD의 디스크 사용량이 다른 OSD에 비해 현저히 높다면, PG 불균형 또는 특정 OSD에 데이터가 집중되는 문제가 있을 수 있습니다.
  • OSD Scrubbing 확인: Ceph는 주기적으로 OSD 간의 데이터 무결성을 검사하는 scrubbing 작업을 수행합니다. ceph health detail 또는 ceph pg dump | grep 'scrubbing' 명령어를 통해 진행 상황을 확인할 수 있습니다.
  • ceph health detail
  • ceph pg dump | grep 'scrubbing'
  • 너무 많은 PG가 scrubbing 중이거나, deep_scrubbing이 장시간 진행되고 있다면 성능에 영향을 줄 수 있습니다.

4. 네트워크 상태 점검: 데이터 흐름의 고속도로를 관리하다

Ceph는 분산 시스템이기 때문에 네트워크는 클러스터의 성능과 안정성에 결정적인 영향을 미칩니다.

무엇을 확인해야 하는가?

  • 네트워크 인터페이스 상태: 각 노드의 네트워크 인터페이스가 정상적으로 작동하는지 확인합니다.
  • ip -s link show 또는 netstat -i
  • 패킷 손실 및 오류율: 네트워크 인터페이스의 패킷 손실, 오류, 충돌 등이 없는지 확인합니다. 이는 ip -s link show 또는 ethtool -S <interface_name> 명령어로 확인할 수 있습니다.
  • ethtool -S eth0 | grep -E "errors|drops"
  • 스토리지 네트워크 트래픽 확인: iftop, nethogs 등의 도구를 사용하여 Ceph 트래픽이 예상대로 흐르는지, 비정상적인 트래픽이 발생하지는 않는지 확인합니다.
  • MTU 설정: 모든 노드에서 Ceph 네트워크의 MTU 설정이 일관되고 올바른지 확인합니다.

5. 시스템 리소스 모니터링: 클러스터의 체력을 확인하다

Ceph 데몬들이 실행되는 호스트의 시스템 리소스 (CPU, 메모리, 디스크 I/O) 상태를 확인하는 것은 중요합니다.

무엇을 확인해야 하는가?

  • CPU 사용량: top, htop, vmstat 등을 사용하여 각 노드의 CPU 사용량을 확인합니다. 특정 데몬이 과도한 CPU를 점유하고 있지는 않은지 확인합니다.
  • 메모리 사용량: free -h 또는 htop 등을 사용하여 메모리 사용량을 확인합니다. OSD 노드는 일반적으로 많은 캐시 메모리를 사용하므로, used가 높더라도 avail이 충분한지 확인하는 것이 중요합니다.
  • 디스크 I/O: iostat -x 1 또는 iotop 등을 사용하여 각 디스크의 I/O 활동을 확인합니다. OSD 디스크의 await (평균 I/O 대기 시간) 값이 비정상적으로 높다면 디스크 병목 현상을 의심할 수 있습니다.
  • 네트워크 I/O: iftop, sar -n DEV 1 등을 사용하여 네트워크 인터페이스의 초당 바이트/패킷 전송량을 확인합니다.

6. 클러스터 구성 및 버전 확인: 설계도와 일치하는지 확인하다

Ceph 클러스터의 구성 파일과 버전 정보는 안정적인 운영의 기본입니다.

무엇을 확인해야 하는가?

  • ceph.conf 일관성: 모든 노드의 ceph.conf 파일이 일관되게 적용되었는지 확인합니다.
  • md5sum /etc/ceph/ceph.conf 를 통해 모든 노드의 해시값이 동일한지 확인합니다.
  • Ceph 버전 확인: 모든 Ceph 데몬의 버전이 동일하고, 알려진 버그가 없는 안정적인 버전인지 확인합니다.
  • ceph -v
  • ceph version
  • Daemon Health: systemctl status ceph-* 명령어를 사용하여 모든 Ceph 데몬이 active (running) 상태인지 확인합니다.
  • systemctl list-units --type=service | grep ceph

7. Alerting System 확인: 비상벨이 잘 울리는지 확인하다

Ceph 클러스터 모니터링 시스템 (Prometheus + Grafana, Nagios, Zabbix 등) 이 정상적으로 작동하고 있는지, 경고 임계치가 올바르게 설정되어 있는지 확인합니다.

무엇을 확인해야 하는가?

  • 알림 전송 테스트: 의도적으로 경고를 발생시켜 알림이 올바르게 전송되는지 테스트합니다.
  • 경고 대시보드 확인: 모니터링 시스템의 대시보드를 통해 현재 활성화된 경고가 없는지 확인합니다.
  • 경고 임계치 검토: Ceph 클러스터의 규모 및 사용 패턴에 맞게 경고 임계치가 적절하게 설정되어 있는지 주기적으로 검토합니다.

결론: 매일의 작은 노력이 큰 안정성을 만듭니다.

Ceph 클러스터의 일일 점검은 단순한 루틴이 아니라, 잠재적인 위협으로부터 데이터를 보호하고 서비스 연속성을 보장하는 핵심적인 활동입니다. 위에 제시된 점검 리스트를 매일 꾸준히 수행함으로써 여러분의 Ceph 클러스터는 더욱 견고하고 안정적인 데이터 저장소로 기능할 것입니다.

처음에는 다소 번거롭게 느껴질 수 있지만, 익숙해지면 몇 분 안에 클러스터의 전반적인 상태를 파악할 수 있게 됩니다. 자동화된 스크립트나 모니터링 도구를 활용하여 점검 작업을 효율화하는 것도 좋은 방법입니다.

기억하십시오. 안정적인 Ceph 운영은 우연이 아닌, 매일의 작은 관심과 노력의 결과입니다. 이 가이드가 여러분의 Ceph 운영에 큰 도움이 되기를 바랍니다!