StorageGRID 如何刪除物件
StorageGRID 可以直接回應用戶端要求來刪除物件,也可以因 S3 bucket 生命週期到期或 ILM 原則的要求而自動刪除物件。瞭解刪除物件的不同方式以及 StorageGRID 如何處理刪除要求,有助於您更有效地管理物件。
StorageGRID 可以使用以下兩種方法之一來刪除物件:
-
同步刪除:當 StorageGRID 收到用戶端刪除請求時,所有物件複本都會立即移除。複本移除完畢後,用戶端會收到刪除成功的通知。
-
物件會排入刪除佇列:當 StorageGRID 收到刪除請求時,該物件會排入刪除佇列,用戶端會立即收到刪除成功的通知。物件複本稍後會透過背景 ILM 處理進行移除。
刪除物件時,StorageGRID 使用能夠最佳化刪除效能、將潛在刪除積壓降至最低並最快釋放可用空間的方法。
下表摘要說明 StorageGRID 何時使用每種方法。
| ${post_edited_translations.segment} | 使用時 |
|---|---|
${post_edited_translations.segment} |
${post_edited_translations.segment}
|
物件會立即移除(同步刪除) |
當 S3 用戶端發出刪除請求且滿足以下所有條件時:
|
當 S3 用戶端發出刪除請求時,StorageGRID 會先將物件新增至刪除佇列。然後切換至執行同步刪除。確保背景刪除佇列中有待處理的物件,可讓 StorageGRID 更有效率地處理刪除作業,尤其對於並行數較低的用戶端而言,同時也有助於防止用戶端刪除請求積壓。
刪除物件所需時間
StorageGRID 刪除物件的方式會影響系統的效能表現:
-
當 StorageGRID 執行同步刪除時,StorageGRID 最多可能需要 30 秒才能將結果傳回給用戶端。這表示刪除動作看起來可能較慢,但實際上移除複本的速度,比 StorageGRID 將物件排隊等待刪除時還要快。
-
如果您在大量刪除過程中密切監控刪除效能,可能會注意到,在刪除一定數量的物件後,刪除速度似乎變慢了。這種變化發生在 StorageGRID 從將物件排隊等待刪除轉變為執行同步刪除時。刪除速率的明顯降低並不意味著物件複本的移除速度變慢了。相反地,這表示平均而言,空間現在正以更快的速度釋放。
如果您要刪除大量物件,並且希望快速釋放可用空間,請考慮使用用戶端請求刪除物件,而不是使用 ILM 或其他方法刪除。一般而言,由用戶端執行刪除操作可以更快速地釋放空間,因為 StorageGRID 可以使用同步刪除。
刪除物件後可用空間所需的時間取決於以下幾個因素:
-
物件複本是同步移除還是排隊稍後移除(等待用戶端刪除請求)。
-
其他因素,例如網格中的物件數量或物件複本排隊移除時網格資源的可用度(對於用戶端刪除和其他方法)。
如何刪除 S3 版本化物件
當為 S3 儲存桶啟用版本控制時,StorageGRID 會遵循 Amazon S3 的行為來回應刪除要求,無論這些要求是來自 S3 用戶端、S3 儲存桶生命週期到期,還是 ILM 原則的要求。
當物件啟用版本控制時,物件刪除要求不會刪除該物件的目前版本,且不會釋放可用空間。相反地,物件刪除要求會建立一個零位元組的刪除標記作為該物件的目前版本,這會使該物件的前一個版本變成「非目前」版本。當物件刪除標記為目前版本,且沒有非目前版本時,該標記就會變成過期的物件刪除標記。
即使物件尚未移除,StorageGRID 的行為也如同該物件的目前版本已不可用。對該物件的請求會傳回 404 NotFound。然而,由於非目前物件的資料並未移除,因此指定非目前物件版本的請求可能會成功。
如果用戶端從 "分支桶" 刪除具有版本 ID 的物件版本,StorageGRID 會隱藏該物件版本的存在,但不會在分支儲存貯體中建立刪除標記。如果用戶端從分支儲存貯體刪除不具版本 ID 的物件,StorageGRID 會根據標準 S3 行為在分支儲存貯體中建立刪除標記。
${post_edited_translations.segment}
-
S3 用戶端要求:在 S3 DELETE Object 要求中指定物件版本 ID (
DELETE /object?versionId=ID)。請記住,此要求僅會移除指定版本的物件複本(其他版本仍會佔用空間)。 -
儲存桶生命週期:在儲存桶生命週期組態中使用
NoncurrentVersionExpiration行動。當 NoncurrentDays 達到指定數量時,StorageGRID 將永久移除所有非目前物件版本的複本。這些物件版本將無法復原。儲存桶生命週期組態中的 `NewerNoncurrentVersions`行動指定了版本化 S3 儲存桶中保留的非目前版本數量。如果非目前版本數量超過 `NewerNoncurrentVersions`指定值,StorageGRID 將在 NoncurrentDays 值到期時移除較舊的版本。此 `NewerNoncurrentVersions`臨界值會覆蓋 ILM 提供的生命週期規則,這意味著如果 ILM 請求移除某個非目前物件,版本在 `NewerNoncurrentVersions`臨界值內的非目前物件仍會被保留。
若要移除過期的物件刪除標記,請使用
Expiration`行動,並搭配以下其中一個標籤: `ExpiredObjectDeleteMarker、Days`或 `Date。 -
資訊生命週期管理:"Clone 有效原則" 並將兩個資訊生命週期管理規則新增至新原則:
-
第一條規則:使用「非當前時間」作為參考時間,以符合物件的非目前版本。在 "建立 ILM 規則精靈的步驟 1 (輸入詳細資料)" 中,針對「是否僅將此規則套用於舊物件版本(在已啟用版本控制的 S3 儲存桶中)?」此問題,選擇*是*。
-
第二條規則:使用 擷取時間 來比對目前版本。"非目前時間" 規則必須出現在原則中 擷取時間 規則的上方。
若要移除已過期的物件刪除標記,請使用「擷取時間」規則來符合目前的刪除標記。只有當經過「天數」的「時間段」且目前刪除標記已過期(不存在非目前版本)時,才會移除刪除標記。
-
-
刪除儲存貯體中的物件:使用租戶管理程式"${post_edited_translations.segment}",包括刪除標記,從儲存貯體中移除物件。
刪除版本化物件時,StorageGRID 會建立一個零位元組的刪除標記作為物件的目前版本。必須先移除所有物件和刪除標記,才能刪除版本化儲存桶。
-
在 StorageGRID 11.7 或更早版本中建立的刪除標記只能透過 S3 用戶端請求移除,ILM、儲存桶生命週期規則或儲存桶中的刪除物件操作均無法移除它們。
-
${post_edited_translations.segment}