文件

物件管理

物件是二進位資料,例如影像、音訊檔案、試算表,甚至是二進位可執行程式碼。「二進位大型物件」或「blob」一詞有時與物件儲存相關聯,儘管 blob 的大小可以從幾個位元組到數兆位元組不等。MinIO 等物件儲存平台提供專用工具和功能,用於使用標準的 S3 相容 API 儲存、列出和擷取物件。

對磁碟機的獨佔存取

MinIO 需要對提供用於物件儲存的磁碟機或磁碟區進行獨佔存取。其他程序、軟體、腳本或人員不應直接對提供給 MinIO 的磁碟機或磁碟區,或 MinIO 將物件或檔案放置在其中的磁碟機或磁碟區執行任何動作。

除非 MinIO 工程部門指示,否則請勿使用腳本或工具來直接修改、刪除或移動提供的磁碟機上的任何資料分片、同位分片或中繼資料檔案,包括從一個磁碟機或節點移動到另一個磁碟機或節點。此類操作很可能導致廣泛的損毀和資料遺失,超出 MinIO 的修復能力。

MinIO 物件儲存使用儲存桶來組織物件。儲存桶類似於檔案系統中的頂層磁碟機、資料夾或目錄 (/mnt/dataC:\),其中每個儲存桶可以保存任意數量的物件。

MinIO 伺服器上的物件結構可能如下所示

/ #root
/images/
   2020-01-02-MinIO-Diagram.png
   2020-01-03-MinIO-Advanced-Deployment.png
   MinIO-Logo.png
/videos/
   2020-01-04-MinIO-Interview.mp4
/articles/
   /john.doe/
      2020-01-02-MinIO-Object-Storage.md
      2020-01-02-MinIO-Object-Storage-comments.json
   /jane.doe/
      2020-01-03-MinIO-Advanced-Deployment.png
      2020-01-02-MinIO-Advanced-Deployment-comments.json
      2020-01-04-MinIO-Interview.md

透過範例結構,管理員將建立 /images/videos/articles 儲存桶。用戶端應用程式使用該物件的完整「路徑」(包括所有中間前綴),將物件寫入這些儲存桶。

MinIO 支援使用前綴的多個巢狀目錄和物件層級,以支援最動態的物件儲存工作負載。MinIO 會自動從完整物件路徑中推斷中間前綴,例如 /articles/john.doe,使用 / 作為分隔符號。用戶端和管理員不應手動建立這些前綴。

用戶端和管理員都不會手動建立中間前綴,因為 MinIO 會自動從物件名稱中推斷出來。

路徑與虛擬主機儲存桶存取

MinIO 支援路徑樣式 (預設) 或虛擬主機儲存桶查找

例如,考慮一個已指派完整網域名稱 (FQDN) minio.example.net 的 MinIO 部署

  • 使用路徑樣式查找時,應用程式會指定儲存桶的完整路徑,例如 minio.example.net/mybucket

  • 使用虛擬主機查找時,應用程式會將儲存桶指定為子網域,例如 mybucket.minio.example.net/

某些應用程式在對 MinIO 執行 S3 操作時可能需要或期望虛擬主機查找支援。若要啟用虛擬主機儲存桶查找,您必須將 MINIO_DOMAIN 環境變數設定為解析為 MinIO 部署的FQDN

如果您設定 MINIO_DOMAIN,則必須將指定 FQDN 的所有子網域視為專用於儲存桶名稱。任何與這些網域衝突的 MinIO 服務,例如複寫目標,都可能因衝突而出現意外或不希望的行為。

舉例來說,如果設定 MINIO_DOMAIN=minio.example.net,您不能minio.example.net 的任何子網域(形式如 *.minio.example.net)指派給任何 MinIO 服務或目標。這包括用於 儲存桶批次站點複製 的主機名稱。

重要事項

對於啟用 TLS 的部署,您必須確保您的 TLS 憑證 SAN 涵蓋指定給 MINIO_DOMAIN 的最左邊網域的所有子網域。

例如,MINIO_DOMAIN=minio.example.net 的範例需要一個涵蓋 minio.example.net 子網域的 TLS SAN。您可以設定額外的 TLS SAN *.minio.example.net,以適當涵蓋子網域命名空間。

TLS 通配符規則會阻止鏈接到其他子網域層級,因此,具有 *.example.net 通配符 SAN 的 TLS 憑證將涵蓋 *.minio.example.net 的虛擬主機查詢。

物件組織與規劃

管理員通常會控制儲存桶的建立與配置。然後,客戶端應用程式可以使用 與 S3 相容的 SDK,以在 MinIO 部署上建立、列出、檢索和刪除物件。因此,客戶端會驅動給定儲存桶或前綴內的整體資料階層,而管理員可以使用 原則來授與或拒絕對動作或資源的存取,來行使控制權。

無論 Windows 檔案系統是否支援,MinIO 都不支援物件名稱中的 \: 字元。在物件名稱中使用 / 作為分隔符,讓 MinIO 使用 前綴 自動建立資料夾結構。

MinIO 對於給定部署上的儲存桶、物件或前綴數量沒有硬性 閾值。MinIO 部署的硬體和網路效能可能會對給定前綴或儲存桶中的物件數量造成實際限制。具體而言,使用較慢磁碟機或網路基礎架構的硬體,在具有平面物件階層的儲存桶或前綴中往往會表現出較差的效能。如需其他注意事項、閾值或限制,請參閱 閾值和限制

請將下列幾點視為客戶端應用程式工作負載模式的一般指南

  • 具有適度或以預算為重點的硬體的部署,應將其工作負載設計為以每個前綴 10,000 個物件為基準。根據基準測試和對真實世界工作負載的監控,將此目標提高到硬體可以有效處理的範圍。

  • 具有高效能或企業級 硬體的部署,通常可以處理數百萬個或更多物件的前綴。

MinIO SUBNET 企業帳戶可以利用年度架構審查,作為部署和維護策略的一部分,以確保您的 MinIO 相依專案的長期效能和成功。

如需更深入討論限制前綴內容的好處,請參閱有關最佳化 S3 效能的文章。

物件版本控制

Object with Multiple Versions

在儲存桶上執行寫入、列出、取得或 刪除 操作時,特定的客戶端行為取決於該儲存桶的版本控制狀態

操作

已啟用版本控制

已停用 | 暫停版本控制

PUT(寫入)

建立物件的新完整版本作為「最新」,並指派唯一的版本 ID

建立物件時,會覆寫命名空間的相符項目。

GET(讀取)

預設擷取物件的最新版本

支援依版本 ID 擷取任何物件版本。

擷取物件

LIST(讀取)

擷取指定儲存桶或前綴中物件的最新版本

支援擷取所有物件及其相關聯的版本 ID。

擷取指定儲存桶或前綴中的所有物件

DELETE(寫入)

為物件建立 0 位元組的「刪除標記」作為「最新」(軟刪除)

支援依版本 ID 刪除任何物件版本(硬刪除)。您無法復原硬刪除操作。

如需詳細資訊,請參閱物件刪除

刪除物件

如需更完整的文件,請參閱儲存桶版本控制

物件標籤

MinIO 支援將自訂標籤新增至物件。標籤是包含在物件中繼資料中的鍵值對。標籤可用於透過原則控制存取,或使用 mc find --tags 尋找物件。

MinIO 支援將最多 10 個自訂標籤新增至物件。

如需設定標籤的詳細資訊,請參閱 mc tag set

物件保留

MinIO 物件鎖定(「物件保留」)會強制執行「一次寫入多次讀取」(WORM)不可變性,以保護已版本控制的物件免於刪除。MinIO 支援基於持續時間的物件保留無限期法律保留

30 Day Locked Objects

對 WORM 鎖定物件的刪除操作取決於特定操作

  • 未指定版本 ID 的刪除操作會導致建立「刪除標記」

  • 指定鎖定物件版本 ID 的刪除操作會導致 WORM 鎖定錯誤

您只能在第一次建立儲存桶時啟用物件鎖定。啟用儲存桶鎖定也會啟用版本控制

根據 Cohasset Associates 的說法,MinIO 物件鎖定提供關鍵資料保留合規性,並符合 SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 的要求。

如需更完整的文件,請參閱MinIO 物件鎖定物件刪除

物件生命週期管理

MinIO 物件生命週期管理允許建立規則,以時間或日期為基礎自動轉換或過期物件。對於物件轉換,MinIO 會自動將物件移動到已設定的遠端儲存層。對於物件過期,MinIO 會自動刪除物件。

MinIO 會使用與正常客戶端操作相同的行為,將生命週期管理規則應用於已版本控制和未版本控制的儲存桶。您可以指定處理最新物件版本、非目前物件版本或兩者的轉換或生命週期規則。

MinIO 生命週期管理是為與 AWS S3 生命週期管理 的行為和語法相容性而建置的。MinIO 使用 JSON 來描述生命週期管理規則。從 S3 或類似相容平台上建立的規則可能需要轉換為 XML 或從 XML 轉換。

如需更完整的文件,請參閱物件生命週期管理

目標儲存桶考量

MinIO 並要求目標儲存桶的物件管理或版本控制配置與來源儲存桶相符。目標儲存桶可以有自己的一組物件管理規則,如果仔細定義的話。

目標儲存桶不應該設定自己的過期或額外分層規則。過期規則可能會導致移除仍在來源儲存桶使用的分層資料。分層到額外的遠端會導致熱層及其資料之間增加一個網路跳躍,同時也會增加操作複雜性。

可以在遠端儲存桶上設定物件鎖定或版本控制。

在目標儲存桶上啟用版本控制或物件鎖定可能會產生以下影響:

  • 在目標儲存桶上設定的物件鎖定可能會阻止來源儲存桶完成所需的 delete 操作。

  • MinIO 會使用自己的 UUID 分層物件,因此目標儲存桶上的版本控制充其量是多餘的。

  • 目標儲存桶的儲存效率降低,因為 delete 操作會建立 DeleteMarker,而不是釋放空間。

  • 來源和目標儲存桶上出現重複的刪除標記。

遠端資料的獨佔存取權

MinIO 必須擁有目標儲存桶的獨佔存取權。其他使用者、程序、應用程式或資源都不應該存取或對目標儲存桶執行任何操作。

所有對已轉換物件的存取必須僅透過 MinIO 使用 S3 API 操作進行。手動修改已轉換的物件(無論是「熱」MinIO 層上的中繼資料,還是遠端「溫/冷」層上的物件資料)都可能導致該物件資料遺失。

MinIO 會忽略遠端儲存桶或儲存桶前綴中未由 MinIO 部署明確管理的任何物件。自動轉換和透明物件檢索依賴以下假設:

  • 遠端儲存上的物件沒有外部變更、遷移或刪除。

  • 遠端儲存桶上沒有生命週期管理規則(例如轉換或過期)。

為了方便這種獨佔存取,請授予生命週期管理使用者在目標儲存桶的原則中具有 readwritedelete 存取權。所有其他原則應 deny 對目標儲存桶的存取。