文件

物件刪除

概觀

本頁總結了 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 *不會*複製由生命週期管理到期規則刪除的物件。對於主動-主動組態,請在*所有*複製儲存桶上設定相同的到期規則,以確保一致地應用物件到期。