中文文档

Object Scanner

概述

MinIO 使用内置扫描仪检查对象是否愈合,并采取任何预定的对象操作. 这些行动可能包括:

扫描仪在两个层面上执行这些功能:群组和数据桶. 在组群层面, 扫描仪将所有桶分成若干组,每次扫描一组桶. 扫描仪从上次扫描后添加的任何新桶开始扫描, 然后随机扫描其他桶. 扫描仪完成对所有桶组的检查后,重新开始新一轮扫描.

在桶层面, 扫描仪将项目分组,并扫描该分组中的选定项目. 扫描仪根据对象名称的哈希值选择要扫描的对象. 超过 16 次扫描, MinIO 会检查命名空间中的每个对象. MinIO 全面扫描自上次扫描以来已知的新前缀.

扫描时长

完成扫描所需的时间受多种因素影响.

其中一些因素包括:

  • 为 MinIO 提供的驱动器类型

  • 吞吐量和 iops 可用

  • 物体的数量和大小

  • MinIO 服务器上的其他活动

例如,默认情况下,MinIO 会暂停扫描仪,以使 I/O 操作可用于读取和写入请求. 这会延长扫描完成所需的时间.

MinIO 每次扫描之间的等待时间是每次扫描操作完成时间的倍数. 默认情况下, 该因子的值为 10.0 , 这意味着 MinIO 在完成一次扫描后,要等待 10 倍于操作长度的时间才能开始下一次扫描。. 该因子的值会根据配置的 scanner speed setting.

扫描仪性能

影响扫描仪性能的因素很多. 其中一些因素包括:

  • 可用节点资源

  • 集群规模

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

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

例如, 在硬件和工作负载相同的情况下,如果集群开始时有 100TB 的数据,然后增加到 200TB 的数据,那么扫描整个存储桶和对象命名空间可能需要更多时间. 同样, 扫描一个由 16 块硬盘组成的擦除集所需的时间,要比扫描两个由 8 块硬盘组成的擦除集所需的时间长.

MinIO 将扫描仪作为后台任务处理,并暂停扫描仪,以便完成集群上的读写请求. 随着群集或工作量的增加, 为确保正常 S3 操作的优先级,扫描仪的性能会随着更频繁地生成扫描结果而降低.

您可以使用 MINIO_SCANNER_SPEED 环境变量或 scanner speed 配置设置来调整MinIO在扫描器性能与读/写操作之间的平衡。

扫描仪指标

MinIO 提供了许多 metrics related to the scanner.

使用 mc admin scanner info 以查看扫描仪的当前状态以及自上次全面扫描以来的时间. 这有助于了解扫描仪操作所提供的指标.

扫描仪指标, 包括使用指标,反映上次完成的扫描. PUTDELETE 在下一次扫描受影响的存储桶之前,上次扫描后的操作不会更新使用情况.

输出结果如下:

总体统计数据
----------
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

最后一分钟统计
------------
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
Join Slack 商业支持购买咨询