Skip to content

Сканирование объектов

В этой статье подробно介绍ется设计 и实现 сканера объектов RustFS, включая его интеграцию с Erasure Coding и механизмом Scrub & Repair, а также стратегию планирования, мониторинг метрик и методы диагностики.

Обзор

Встроенный в движок хранения сканер объектов RustFS отвечает за периодическую проверку целостности объектов и выполнение запланированных операций. Задачи сканирования включают подсчет использования диска, оценку правил управления жизненным циклом, выполнение копирования объектов и запуск самовосстановления поврежденных объектов.

Архитектура и принципы дизайна

Архитектура сканера

Сканер RustFS использует механизм хеш-выборки: по хешу имени объекта выбирается один из 1024 объектов для проверки, что снижает влияние на производительность обычных запросов. Сканер глубоко интегрирован с модулем Erasure Coding и при обнаружении потерянных или поврежденных фрагментов может восстанавливать их из избыточных фрагментов в режиме онлайн, обеспечивая высокую доступность и согласованность данных.

Проверка данных и восстановление

Механизм проверки данных RustFS позволяет быстро проверять согласованность метаданных, а побитовая проверка выявляет скрытые плохие блоки. Сканер может обнаружить проблемы типа bit rot и при необходимости запускать процесс восстановления.

Режимы сканирования и планирование

RustFS поддерживает три режима триггера сканирования: онлайн-сканирование при чтении, фоновое регулярное сканирование и ручное полнообъемное сканирование — для баланса производительности и надежности. Подобно параметру osd_scrub_begin_hour в Ceph, администратор может задавать время запуска и частоту сканирования, например выполнять легкую проверку ежедневно по умолчанию.

Мониторинг и метрики

Сканер RustFS собирает статистику задач, количество отказов и распределение времени выполнения, которые экспортируются в модель данных Prometheus как метрики rustfs_scanner_jobs_total, rustfs_scanner_failures_total и rustfs_scanner_duration_seconds. Совместно с системой мониторинга можно настраивать оповещения по уровню отказов и длительности, чтобы своевременно обнаруживать и локализовать потенциальные проблемы на уровнях хранения и сети.

Опубликовано под лицензией Apache 2.0.