Object Scanner
概述
MinIO 使用内置扫描仪检查对象是否愈合,并采取任何预定的对象操作. 这些行动可能包括:
计算硬盘的数据使用量
评估和应用配置 lifecycle management 或 object retention 条例
演示 bucket 或 site 复制
检查对象是否有丢失或损坏的数据或奇偶校验碎片,并执行 healing
扫描仪在两个层面上执行这些功能:群组和数据桶. 在组群层面, 扫描仪将所有桶分成若干组,每次扫描一组桶. 扫描仪从上次扫描后添加的任何新桶开始扫描, 然后随机扫描其他桶. 扫描仪完成对所有桶组的检查后,重新开始新一轮扫描.
在桶层面, 扫描仪将项目分组,并扫描该分组中的选定项目. 扫描仪根据对象名称的哈希值选择要扫描的对象. 超过 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
以查看扫描仪的当前状态以及自上次全面扫描以来的时间.
这有助于了解扫描仪操作所提供的指标.
扫描仪指标, 包括使用指标,反映上次完成的扫描.
PUT
或 DELETE
在下一次扫描受影响的存储桶之前,上次扫描后的操作不会更新使用情况.
输出结果如下:
总体统计数据
----------
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