文件

物件掃描器

概觀

MinIO 使用內建掃描器檢查物件是否需要修復,並執行任何排程的物件動作。這些動作可能包括

掃描器在兩個層級執行這些功能:叢集和儲存桶。在叢集層級,掃描器將所有儲存桶分成組,並一次掃描一組儲存桶。掃描器從上次掃描以來新增的任何新儲存桶開始,然後隨機掃描其他儲存桶。掃描器在開始新的掃描組之前,會完成所有儲存桶組的檢查。

在儲存桶層級,掃描器會將儲存桶中的項目分組,並從該儲存桶掃描選定的項目。掃描器根據物件名稱的雜湊值選取要掃描的物件。在 16 次掃描的範圍內,MinIO 會檢查命名空間中的每個物件。MinIO 會完整掃描自上次掃描以來已知為新的任何前置詞。

掃描長度

多個因素會影響掃描完成所需的時間。

其中一些因素包括

  • 提供給 MinIO 的磁碟機類型

  • 可用的輸送量和 iops

  • 物件的數量和大小

  • MinIO 伺服器上的其他活動

例如,依預設,MinIO 會暫停掃描器,以便讓 I/O 作業可用於讀取和寫入請求。這可能會延長掃描完成所需的時間。

MinIO 會在每次掃描之間等待的時間乘以每次掃描操作完成所需時間的係數。依預設,此係數的值為 10.0,表示 MinIO 在完成一次掃描後,等待操作長度的 10 倍時間,然後再開始下一次掃描。此係數的值會根據已設定的 掃描器速度設定 而有所不同。

掃描器效能

許多因素會影響掃描器效能。其中一些因素包括

  • 可用的節點資源

  • 叢集的大小

  • 相較於磁碟機數量的抹除集合數量

  • 儲存桶階層的複雜性(物件和前綴)。

例如,一個開始時有 100TB 資料,然後成長到 200TB 資料的叢集,在相同的硬體和工作負載下,可能需要更多時間來掃描整個儲存桶和物件的命名空間。同樣地,一個包含 16 個磁碟機的抹除集合掃描時間,會比相同數量的磁碟機分成兩個各 8 個磁碟機的抹除集合來得長。

MinIO 將掃描器視為背景任務,並會暫停它,優先完成叢集上的讀取和寫入請求。隨著叢集或工作負載的增加,掃描器的效能會降低,因為它會更頻繁地讓步,以確保正常 S3 操作的優先順序。

您可以使用 MINIO_SCANNER_SPEED 環境變數或 scanner speed 設定來調整 MinIO 如何平衡掃描器的效能與讀/寫操作。

掃描器指標

MinIO 提供了許多與掃描器相關的指標

使用 mc admin scanner info 來查看掃描器的目前狀態以及自上次完整掃描以來的時間。這有助於了解掃描器操作提供的指標。

掃描器指標,包括使用情況指標,反映了上次完成的掃描。PUTDELETE 操作自上次掃描以來不會更新使用情況,直到下次掃描受影響的儲存桶。

輸出結果類似如下:

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