文件

物件刪除

概述

本頁摘要說明 DELETE 操作如何根據包含物件的儲存貯體的組態影響物件。

以下因素的任何組合都可能影響 DELETE 操作的功能

權限

MinIO 使用基於原則的存取控制系統進行存取管理。使用者或服務帳戶必須提供正確的原則動作和條件,以允許對儲存貯體和物件執行 DELETE

未版本控制的物件

對未啟用版本控制的儲存貯體中的物件執行 DELETE 操作時,該操作很簡單。在驗證使用者或服務帳戶有權執行 DELETE 操作後,MinIO 會永久移除該物件。

要求刪除動作的使用者或服務帳戶必須對儲存貯體和物件具有s3:DeleteObject動作權限。

版本控制的物件

當物件進行版本控制時,DELETE 操作的運作方式會有所不同。

使用者或服務帳戶必須具有儲存桶和物件的 s3:DeleteObjectVersion 動作權限。

對目前版本執行刪除操作

對未指定版本 UUID 的版本化物件執行 DELETE 操作,會產生一個 DeleteMarker,並將其置於物件的 head

在這種情況下,MinIO 實際上並不會從磁碟移除物件或其任何版本。物件的所有現有版本仍可透過指定版本的 UUID 來存取。當 DeleteMarker 是物件的 head 時,MinIO 不會為未指定版本 ID 的 GET 請求提供該物件。相反地,MinIO 會返回類似 404 的回應。

您可以使用 mc ls --versions 找到物件版本的 UUID。

若要從磁碟移除物件的目前版本,請找到該版本的 UUID,然後使用 mc rm --version-id=UUID ... 刪除目前版本。在這種情況下,該物件的緊鄰前一個版本會成為該物件的目前版本,並提供給未指定 UUID 的 GET 請求。

警告

在 DELETE 操作中指定 version-id 是不可逆的。MinIO 會從磁碟移除指定的版本,且無法還原。

對先前版本執行刪除操作

若要刪除物件的先前版本,請指定該版本的 UUID。您可以使用 mc ls --versions 擷取版本 UUID。當 DELETE 請求指定 version-id 且使用者具有刪除物件版本的正確權限時,MinIO 會從磁碟永久移除指定的版本。

警告

在 DELETE 操作中指定 version-id 是不可逆的。MinIO 會從磁碟移除指定的版本,且無法還原。

刪除所有版本

使用 mc rm --versions 刪除物件的所有版本。此操作不可逆。

生命週期管理到期

您可以定義一個或多個 生命週期管理到期規則,以在達到特定版本數或經過特定時間後讓物件到期。當現有版本多於規則指定時,或當某個版本超過指定時間時,MinIO 會從磁碟永久移除該物件版本。

這些規則依賴 掃描器 來處理儲存桶上的規則。掃描器以較低的優先順序持續執行,其中 READWRITE 動作優先。因此,符合到期要求的物件版本可能不會立即從 MinIO 中移除。

請參閱 掃描器 頁面,以瞭解有關掃描器如何運作及組態選項的更多詳細資訊。

DeleteMarkers 是它們自己的物件。生命週期規則可以移除其物件中唯一剩餘版本的 DeleteMarkers

在 MinIO 版本中變更:RELEASE.2024-05-01T01-11-10Z

透過 JSON,生命週期規則可以在指定天數後移除已刪除物件的所有版本。

保留的物件

MinIO 保護受 鎖定規則 限制的物件,使其免於被覆寫或刪除。這些規則要求必須保留物件,直到規則到期或移除。

對未指定版本的鎖定物件執行 DELETE 操作會為該物件建立一個 DeleteMarker。但是,物件版本本身會按照鎖定的要求保留。

指定物件版本的 DELETE 操作會受限於保留規則。MinIO 會保護受鎖定限制的物件版本,使其免於被覆寫或刪除,直到鎖定到期或移除。

複製的物件

複製作業會將物件從一個位置複製到另一個位置。MinIO 支援在儲存桶層級或叢集(「站點」)層級進行複製。

刪除操作可能會或可能不會複製,具體取決於複製類型和複製的組態方式。

站點複製

對於啟用 多站點複製 的叢集,MinIO 會將任何叢集上執行的所有 delete 操作複製到對等群組中的其他每個叢集。

任何單個對等點的刪除行為都遵循與任何 MinIO 部署相同的流程。

儲存桶複製

透過 儲存桶複製,MinIO 支援在來源儲存桶和已組態的遠端儲存桶之間複製刪除操作。MinIO 會同步刪除特定的物件版本新的 刪除標記。刪除操作複製使用與所有其他複製操作相同的 複製流程

MinIO 需要明確啟用版本化刪除和刪除標記複製。使用 mc replicate add --replicate 欄位,以指定 deletedelete-marker 或兩者皆指定,以分別啟用版本化刪除和刪除標記複製。若要同時啟用兩者,請使用逗號分隔符號指定兩個字串:delete,delete-marker

對於刪除標記複製,MinIO 會在刪除操作建立刪除標記後開始複製流程。MinIO 使用 X-Minio-Replication-DeleteMarker-Status 中繼資料欄位來追蹤刪除標記複製狀態。在 主動-主動 複製組態中,如果兩個叢集同時為某個物件建立刪除標記,如果一個或兩個叢集在複製事件同步之前關閉,則 MinIO 可能會產生重複的刪除標記。

為了複製特定物件版本的刪除,MinIO 會將該物件版本標記為 PENDING,直到複製完成。一旦遠端目標刪除該物件版本,MinIO 就會刪除來源上的該物件版本。雖然此流程可確保接近同步的版本刪除,但可能會導致清單操作在初始刪除操作後返回該物件版本。MinIO 使用 X-Minio-Replication-Delete-Status 來追蹤刪除版本複製狀態。

MinIO 只會複製明確的用戶端驅動刪除操作。MinIO 不會複製由 生命週期管理到期規則 刪除的物件。對於 主動-主動 組態,請在所有複製儲存桶上設定相同的到期規則,以確保物件到期應用程式的一致性。