文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

对象扫描器

概述

MinIO 使用内置扫描器检查对象以进行修复,并执行任何计划的对象操作。 此类操作可能包括:

扫描器在两个级别执行这些功能:集群级别和存储桶级别。 在集群级别,扫描器将所有存储桶分成若干组,每次扫描一组存储桶。 扫描器从上次扫描后新增的任何存储桶开始,然后随机扫描其他存储桶。 扫描器在开始新一轮扫描之前,会完成对所有存储桶组的检查。

在存储桶级别,扫描器会将存储桶中的项目分组,并从该存储桶中扫描选定的项目。 扫描器根据对象名称的哈希值选择要扫描的对象。 在16次扫描周期内,MinIO会检查命名空间中的每个对象。 MinIO会完整扫描自上次扫描以来已知的新前缀。

扫描长度

多个因素会影响扫描完成所需的时间。

这些因素包括:

  • 提供给 MinIO 的驱动器类型

  • 吞吐量和IOPS可用

  • 对象数量和大小

  • MinIO 服务器上的其他活动

例如,默认情况下,MinIO 会暂停扫描器以便为读写请求提供 I/O 操作。 这可能会延长扫描完成所需的时间。

MinIO 在每次扫描之间等待的时间是每次扫描操作完成所需时间的倍数。 默认情况下,该因子的值为10.0, 意味着 MinIO 在一次扫描完成后,会等待操作时长的10倍时间,然后再开始下一次扫描。 这个因数的值会根据配置的不同而变化扫描仪速度设置.

扫描仪性能

许多因素会影响扫描仪的性能。 其中一些因素包括:

  • 可用节点资源

  • 集群规模

  • 擦除集数量与驱动器数量比较

  • 存储桶层次结构(对象和前缀)的复杂性。

例如,一个从100TB数据开始然后增长到200TB数据的集群,在相同的硬件和工作负载下,可能需要更多时间来扫描整个存储桶和对象的命名空间。 同样地,由16个驱动器组成的单个纠删码集比分成两个各含8个驱动器的纠删码集需要更长的扫描时间。

MinIO 将扫描器作为后台任务处理,并会暂停扫描操作以优先完成集群上的读写请求。 随着集群规模或工作负载的增加,扫描器性能会因更频繁地让出资源而下降,以确保常规 S3 操作具有优先执行权。

您可以使用以下任一方式来调整MinIO如何平衡扫描器性能与读/写操作MINIO_SCANNER_SPEED环境变量或scanner speed配置设置。

扫描器指标

MinIO 提供了许多与扫描仪相关的指标.

使用mc admin scanner info要查看扫描器的当前状态以及自上次完整扫描以来的时间。 这有助于理解扫描器操作提供的指标。

扫描仪指标,包括使用指标,反映的是最近一次完成的扫描。PUT or DELETE自上次扫描以来的操作,直到下次对受影响存储桶进行扫描后,才会在用量信息中更新。

输出类似于以下内容:

Overall Statistics
------------------
Last full scan time:   0d0h14m; Estimated 2885.28/month
Current cycle:         70464; Started: 2024-04-19 20:02:34.568479139 +0000 UTC
Active drives:         2

Last Minute Statistics
----------------------
Objects Scanned:       620 objects; Avg: 124.929µs; Rate: 892800/day
Versions Scanned:      620 versions; Avg: 2.801µs; Rate: 892800/day
Versions Heal Checked: 0 versions; Avg: 0ms
Read Metadata:         621 objects; Avg: 88.416µs, Size:
ILM checks:            656 versions; Avg: 663ns
Check Replication:     656 versions; Avg: 1.061µs
Verify Deleted:        0 folders; Avg: 0ms
Yield:                 3.086s total; Avg: 4.705ms/obj