オブジェクトスキャン
本記事では、RustFS オブジェクトスキャナーの設計と実装について詳しく紹介し、Erasure Coding、Scrub & Repair メカニズムとの統合、およびスケジューリング戦略、監視指標、障害診断方法について説明します。
概要
RustFS オブジェクトスキャナーはストレージエンジンに内蔵されており、オブジェクトの整合性を定期的にチェックし、予定された操作を実行する責任があります。 スキャンタスクには、ディスク使用量の統計、ライフサイクル管理ルールの評価、オブジェクトレプリケーションの実行、破損オブジェクトの自己修復のトリガーなどの機能が含まれます。
アーキテクチャと設計原則
スキャナーアーキテクチャ
RustFS スキャナーはハッシュサンプリングメカニズムを採用し、オブジェクト名のハッシュに基づいて1024個のオブジェクトのうち1つを選択してチェックし、通常のリクエストに対するパフォーマンス影響を軽減します。 スキャナーは Erasure Coding モジュールと深く統合されており、失われたり破損したシャードが検出された場合、冗長シャードを利用してオンライン再構築を行い、データの高可用性と一貫性を確保できます。
データ検証と復旧
RustFS データ検証メカニズムは、メタデータの一貫性を迅速にチェックでき、後者はビット単位でデータを読み取り検証して隠れた不良ブロックを発見します。オブジェクトスキャナーの実行により、bit rot などの問題を発見し、必要に応じて修復プロセスをトリガーできます。
スキャンモードとスケジューリング
RustFS は3種類のスキャントリガーモードをサポートしています:読み取り時オンラインスキャン、バックグラウンド定期スキャン、手動全量スキャンで、パフォーマンスと信頼性のバランスを取ります。 Ceph の osd_scrub_begin_hour
設定と同様に、管理者はスキャン開始時間と頻度を設定でき、例えば軽度検証をデフォルトで1日1回に設定できます。
監視と指標
RustFS スキャナーは、タスク総数、失敗回数、実行時間分布を統計し、Prometheus データモデルを通じて rustfs_scanner_jobs_total
、rustfs_scanner_failures_total
、rustfs_scanner_duration_seconds
などの指標を公開します。 監視システムと組み合わせて、スキャン失敗率と実行時間に基づいてアラートを設定し、ストレージやネットワークレベルの潜在的な問題を迅速に発見・特定できます。