Skip to content

객체 스캔

이 문서는 RustFS 객체 스캐너의 설계와 구현에 대해 심도 있게 소개하며, Erasure Coding, Scrub & Repair 메커니즘과의 통합, 그리고 스케줄링 전략, 모니터링 메트릭 및 장애 진단 방법을 다룹니다.

개요

RustFS 객체 스캐너는 스토리지 엔진에 내장되어 있으며, 주기적으로 객체 무결성을 검사하고 미리 정의된 작업을 실행합니다. 스캔 작업에는 디스크 사용량 통계, 라이프사이클 관리 규칙 평가, 객체 복제 실행 및 손상된 객체 자동 복구 트리거 등의 기능이 포함됩니다.

아키텍처 및 설계 원칙

스캐너 아키텍처

RustFS 스캐너는 해시 샘플링 메커니즘을 채택하여, 객체 이름 해시를 기반으로 1024개 객체 중 하나를 선택하여 검사함으로써 일반적인 요청에 대한 성능 영향을 줄입니다. 스캐너는 Erasure Coding 모듈과 깊이 통합되어 있어, 누락되거나 손상된 샤드가 감지되었을 때 중복 샤드를 활용하여 온라인으로 재구성할 수 있어 데이터의 고가용성과 일관성을 보장합니다.

데이터 검증 및 복구

RustFS 데이터 검증 메커니즘은 메타데이터 일치성을 빠르게 검사할 수 있으며, 후자는 비트별로 읽고 검증하여 데이터를 검사함으로써 숨겨진 불량 블록을 발견합니다. 객체 스캐너의 실행은 bit rot 등의 문제를 발견할 수 있으며, 필요시 복구 프로세스를 트리거합니다.

스캔 모드 및 스케줄링

RustFS는 세 가지 스캔 트리거 모드를 지원합니다: 읽기 시 온라인 스캔, 백그라운드 정기 스캔 및 수동 전체 스캔으로, 성능과 신뢰성을 모두 고려합니다. Ceph의 osd_scrub_begin_hour 설정과 유사하게, 관리자는 스캔 시작 시간과 빈도를 설정할 수 있으며, 예를 들어 경량 검증을 기본적으로 하루에 한 번으로 설정할 수 있습니다.

모니터링 및 메트릭

RustFS 스캐너는 총 작업 수, 실패 횟수 및 소요 시간 분포를 통계화하고, Prometheus 데이터 모델을 통해 rustfs_scanner_jobs_total, rustfs_scanner_failures_totalrustfs_scanner_duration_seconds와 같은 메트릭을 노출합니다. 모니터링 시스템과 결합하여 스캔 실패율과 소요 시간을 기반으로 경보를 설정하여 스토리지나 네트워크 등 계층의 잠재적 문제를 적시에 발견하고 찾아낼 수 있습니다.

Apache License 2.0 하에 출시되었습니다.