文件

物件刪除

概觀

本頁總結了 DELETE 操作如何根據包含物件的儲存桶組態影響物件。

以下任何因素的組合都可能會影響 DELETE 操作的運作方式

權限

MinIO 使用 基於政策的存取控制系統進行存取管理。使用者或服務帳戶必須提供正確的政策動作和條件,才能允許對儲存桶和物件執行 DELETE 操作。

未版本化的物件

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

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

版本化物件

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

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

對目前版本執行刪除操作

對版本化物件執行 DELETE 操作時,若未指定版本 UUID,將會建立一個 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 不會複寫透過生命週期管理到期規則刪除的物件。對於主動-主動配置,請在所有複寫儲存桶上設定相同的到期規則,以確保物件到期的一致應用。