オブジェクトスキャン
RustFS のオブジェクトスキャナーについて、設計、実装、監視を説明します。
このガイドでは、RustFS オブジェクトスキャナーの設計と実装を扱います。イレイジャーコーディングとの連携、スクラブと修復、スケジュール、メトリクス、トラブルシューティングを含みます。
概要
RustFS のオブジェクトスキャナーはストレージエンジンに組み込まれ、オブジェクトの整合性を定期的に確認し、スケジュールされた操作を実行します。 スキャナーはディスク使用量の統計を収集し、ライフサイクルルールを評価し、オブジェクトのレプリケーションを実行し、破損したオブジェクトのデータ修復を開始します。
アーキテクチャと設計原則
スキャナーのアーキテクチャ
RustFS のスキャナーはハッシュサンプリングを使い、性能への影響を抑えるため、オブジェクト名のハッシュに基づいて 1024 個につき 1 個を検査対象に選びます。 スキャナーはイレイジャーコーディング層と連携します。欠損または破損したシャードを検出すると、残りの冗長シャードからそのシャードをオンラインで再構築します。
データの検証と復旧
RustFS のデータ検証は、メタデータの整合性を確認し、データを読み取って検証することで、潜在的な不良セクタを検出します。オブジェクトスキャナーはビットロットなどの問題を検出し、必要に応じて修復処理を開始します。
スキャンモードとスケジュール
RustFS は、性能と信頼性のバランスを取る 3 つのスキャンモードに対応しています。読み取り時のインライン検査、定期的なバックグラウンドスキャン、手動のフルスキャンです。
Ceph の osd_scrub_begin_hour 設定と同様に、管理者はスキャンの開始時刻と頻度を設定できます。たとえば、軽量チェックは既定で 1 日に 1 回実行されます。
監視とメトリクス
スキャナーは、タスクの総数、失敗数、所要時間の分布を Prometheus メトリクスとして報告します。例として rustfs_scanner_jobs_total、rustfs_scanner_failures_total、rustfs_scanner_duration_seconds があります。
スキャンの失敗率と所要時間にアラートを設定すると、ストレージやネットワークの問題を早期に検出して診断できます。