物件生命週期管理
使用 MinIO 物件生命週期管理來建立規則,以針對物件進行基於時間或日期的自動轉換或過期。對於物件轉換,MinIO 會自動將物件移動到已設定的遠端儲存層。對於物件過期,MinIO 會自動刪除物件。
MinIO 從 S3 生命週期衍生其行為和語法,以便在將工作負載和生命週期規則從 S3 遷移到 MinIO 時保持相容性。例如,您可以匯出 S3 生命週期管理規則,並將它們匯入 MinIO 或反之亦然。MinIO 使用 JSON 來描述生命週期管理規則,並且可能需要在匯入 S3 生命週期規則時轉換為 XML 或從 XML 轉換。
物件轉換(「分層」)
MinIO 支援建立物件轉換生命週期管理規則,其中 MinIO 可以自動將物件移動到遠端儲存「層」。MinIO 支援以下任何遠端層目標
MinIO 物件轉換支援諸如將老化資料從私有或公有雲基礎架構中的 MinIO 叢集移動到低成本私有或公有雲儲存解決方案之類的使用案例。目錄物件(即名稱以 /
結尾的 0 位元組物件)不會分層。MinIO 會在無需任何額外應用程式端邏輯的情況下,動態管理擷取分層物件。
使用 mc ilm tier add
命令為將資料分層到該目標建立遠端目標。然後,您可以使用 mc ilm rule add --transition-days
命令在指定的日曆天數後將物件轉換到該層。
版本 RELEASE.2022-11-10T18-20-21Z 中的新增功能。
您可以使用 mc ls
針對儲存桶或儲存桶前置詞來驗證物件的分層狀態。輸出包括每個物件的儲存層
$ mc ls play/mybucket
[2022-11-08 11:30:24 PST] 52MB STANDARD log-data.csv
[2022-11-09 12:20:18 PST] 120MB WARM event-2022-11-09.mp4
STANDARD
標記儲存在 MinIO 部署上的物件。WARM
標記儲存在具有相符名稱的遠端層上的物件。
重要
MinIO 物件轉換支援圍繞將較舊或老化的資料移動到經過成本優化的遠端儲存層(例如雲端儲存或高密度 HDD 儲存)的節省成本策略。
MinIO 物件轉換不提供備份和還原功能。在 MinIO 中發生資料遺失時,您不能使用遠端層作為復原來源。
對遠端資料的獨佔存取權
MinIO 需要對遠端儲存層上已轉換的資料具有獨佔存取權。「熱」MinIO 來源上的物件中繼資料與「暖/冷」遠端層上的物件資料強烈連結。MinIO 無法在沒有存取遠端的情況下擷取物件資料,而且遠端也不能用於還原來源上遺失的中繼資料。
對已轉換物件的所有存取必須僅透過 S3 API 操作在 MinIO 中發生。手動修改已轉換的物件(無論是「熱」MinIO 層上的中繼資料或遠端「暖/冷」層上的物件資料)都可能導致該物件資料遺失。
MinIO 會忽略遠端儲存桶或儲存桶前綴中,任何未明確由 MinIO 部署管理之物件。自動轉換和透明物件檢索取決於以下假設:
遠端儲存上的物件沒有外部修改、遷移或刪除。
遠端儲存桶上沒有生命週期管理規則(例如轉換或過期)。
MinIO 會將所有已轉換的物件儲存在遠端儲存桶或資源中,並使用每個部署唯一的字首值。此值並非旨在從後端識別來源部署。MinIO 在設定遠端目標時,支援額外的可選人類可讀字首,這有助於與診斷、維護或災難復原相關的操作。
MinIO 建議為包含其他資料的遠端儲存層指定此可選字首,包括來自其他 MinIO 部署的轉換物件。本教學包含設定此字首所需的語法。
遠端資料的可用性
MinIO 的分層行為取決於遠端儲存是否在收到請求後立即(毫秒至秒)傳回物件。因此,MinIO *無法*支援需要重新補水、等待期或手動干預的遠端儲存。
MinIO 會為每個轉換的物件建立中繼資料,以識別其在遠端儲存上的位置。應用程式無法在不透過 MinIO 的情況下輕易識別和存取轉換的物件。因此,轉換資料的可用性取決於與 抹除編碼 和分散式部署拓撲為 MinIO 部署上的所有物件提供的相同核心保護。使用物件轉換並不會提供任何額外的業務持續性或災難復原優勢。
需要 BC/DR 保護的工作負載應實作 MinIO 伺服器端複寫。複寫確保物件保留在遠端複寫站點上,以便在發生部分或全部資料遺失時可以從遠端重新同步。有關使用複寫在部分或全部資料遺失後進行復原的完整文件,請參閱 重新同步(災難復原)。
版本控制儲存桶
MinIO 對於 版本控制儲存桶 的轉換規則採用 S3 行為。具體而言,MinIO 預設會將轉換操作套用至 *目前* 的物件版本。
若要轉換非目前物件版本,請在建立轉換規則時,指定 --noncurrent-transition-days
和 --noncurrent-transition-tier
選項。
物件過期
MinIO 生命週期管理支援讓儲存桶中的物件過期。物件「過期」涉及對物件執行 DELETE
操作。例如,您可以建立生命週期管理規則,讓任何超過 365 天的物件過期。
使用 mc ilm rule add --expire-days
,在指定的日曆天數後使物件過期。
對於設定 複寫 的儲存桶,MinIO 不會複寫由生命週期管理過期規則刪除的物件。有關詳細資訊,請參閱 刪除操作的複寫。
版本控制儲存桶
MinIO 對於 版本控制儲存桶 的過期規則採用 S3 行為。MinIO 對於版本控制儲存桶有幾個預設行為
MinIO 只會將過期選項套用至 *目前* 的物件版本,方法是建立
DeleteMarker
,這與版本控制刪除的情況相同。若要使非目前物件版本過期,請在建立過期規則時,指定
--noncurrent-expire-days
選項。即使該物件沒有其他版本,MinIO 也 *不會* 使
DeleteMarkers
過期。若要在該物件沒有剩餘版本時使刪除標記過期,請在建立過期規則時,指定
--expire-delete-marker
選項。在 MinIO 版本中變更:RELEASE.2024-05-01T01-11-10Z
MinIO 支援使物件的所有版本(其中最新版本為刪除標記)過期,*包括使刪除標記過期*,但僅限使用 JSON。使用
mc ilm rule import
新增 JSON 規則。例如,若要使已刪除物件的所有版本在物件刪除後 10 天過期,請使用以下 JSON
<DelMarkerObjectExpiration> <Days> 10 </Days> </DelMarkerObjectExpiration>
若要使在指定天數後,*所有* 沒有刪除標記的物件版本過期,請將
--expire-all-object-versions
旗標與--expire-days
旗標搭配使用。這允許在指定的日數過去後永久刪除物件。在 MinIO 版本中變更:RELEASE.2024-05-01T01-11-10Z
此旗標僅適用於*沒有*刪除標記的物件。
生命週期管理物件掃描器
MinIO 使用內建的 掃描器,根據所有已設定的生命週期管理規則主動檢查物件。
掃描器是低優先順序的程序,會讓步於高 I/O 工作負載,以防止規則計時觸發效能高峰。因此,掃描器可能要到生命週期規則期間過去*之後*,才會偵測到物件符合設定的轉換或過期生命週期規則的條件。