物件掃描器
概觀
MinIO 使用內建掃描器來檢查物件是否需要修復,並執行任何排定的物件動作。這些動作可能包括
掃描器在兩個層級執行這些功能:叢集和儲存桶。在叢集層級,掃描器將所有儲存桶分成多個群組,並一次掃描一組儲存桶。掃描器從上次掃描以來新增的任何新儲存桶開始,然後隨機掃描其他儲存桶。掃描器完成對所有儲存桶群組的檢查後,才會重新開始新的一組掃描。
在儲存桶層級,掃描器會將儲存桶中的項目分組,並掃描該儲存桶中選定的項目。掃描器根據物件名稱的雜湊值來選擇要掃描的物件。在 16 次掃描中,MinIO 會檢查命名空間中的每個物件。MinIO 會完整掃描自上次掃描以來已知為新的任何前綴。
掃描長度
多個因素會影響掃描完成所需的時間。
這些因素包括
提供給 MinIO 的磁碟類型
可用輸送量和iops
物件的數量和大小
MinIO 伺服器上的其他活動
例如,依預設,MinIO 會暫停掃描器,以便讓 I/O 操作可供讀取和寫入請求使用。這可能會延長掃描完成所需的時間。
MinIO 會在每次掃描之間等待,等待時間是每次掃描操作完成所需時間的倍數。依預設,此因數的值為 10.0
,這表示 MinIO 會在完成一次掃描後等待操作長度的 10 倍,然後再開始下一次掃描。此因數的值會根據配置的掃描器速度設定而變更。
掃描器效能
許多因素會影響掃描器效能。這些因素包括
可用的節點資源
叢集大小
與磁碟數量相比的抹除集數量
儲存桶階層的複雜性(物件和前綴)。
舉例來說,一個從 100TB 資料開始,然後成長到 200TB 資料的叢集,在相同的硬體和工作負載下,掃描整個儲存桶和物件的命名空間可能需要更多時間。同樣地,一個由 16 個硬碟組成的單一 Erasure Set(糾刪碼集合)掃描時間,會比將相同數量的硬碟分成兩個各 8 個硬碟的 Erasure Set 來得長。
MinIO 將掃描器視為背景任務,並會暫停掃描器以優先處理叢集上的讀寫請求。隨著叢集或工作負載增加,掃描器效能會下降,因為它會更頻繁地讓步,以確保一般 S3 操作的優先順序。
您可以使用 MINIO_SCANNER_SPEED
環境變數或 scanner speed
設定來調整 MinIO 如何平衡掃描器效能與讀/寫操作。
掃描器指標
MinIO 提供了許多與掃描器相關的指標。
使用 mc admin scanner info
來查看掃描器的目前狀態以及自上次完整掃描以來的時間。這有助於理解掃描器操作提供的指標。
掃描器指標,包括使用率指標,反映了上次完成的掃描。PUT
或 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