分散式檔案儲存伺服器之Minio物件儲存技術參考指南
Minio物件儲存技術
MinIO 是一種高效能物件儲存解決方案,原生支援 Kubernetes 部署。MinIO 提供與 Amazon Web Services S3 相容的 API 並支援所有核心 S3 功能。MinIO 是在GNU Affero 通用公共許可證 v3.0下發布的。
也許提起物件儲存技術,我們都經歷過Fastdfs長時間的拉鋸戰,即使現在大部分都在使用雲服務廠商提供的OSS物件儲存服務,但是其所花費的經濟成本也是遞增的,而且資料都儲存在別人的伺服器上,從一定程度上來說,對於檔案資源的把控粒度是極其不可控制,公網資料是何其的沒有隱私可言。雖然,對於開發層面上來說,只需要整合對應的SDK,對其使用已經是開箱即用。但是,對於選擇自研物件儲存技術來說,Minio何嘗不失為一大利器。
其搭建過程與整合方面,幾乎已經沒有什麼瓶頸可言。不論是從傳統伺服器的安裝,還是基於Docker以及Kubernetes的部署,簡直簡單得不要不要的。
基本概述
MinIO supports the widest range of use cases across the largest number of environments. Cloud native since inception, MinIO’s software-defined suite runs seamlessly in the public cloud, private cloud and at the edge - making it a leader in the hybrid cloud. With industry leading performance and scalability, MinIO can deliver a range of use cases from AI/ML,analytics, backup/restore and modern web and mobile apps.
MinIO 在最大數量的環境中支援最廣泛的用例。自雲原生以來,MinIO 的軟體定義套件在公共雲、私有云和邊緣無縫執行——使其成為混合雲的領導者。憑藉行業領先的效能和可擴充套件性,MinIO 可以提供一系列用例,包括 AI/ML、分析、備份/恢復以及現代 Web 和移動應用程式。
- Hybrid Cloud:混合雲
- Born cloud native :雲原生
- MinIO is pioneering high performance object storage:高效能物件儲存的先驅
- Built on the principles of web scale:建立在網路規模的原則上
- The #1 open source object store. And the most enterprise ready.開源物件儲存,並且最適合企業
- The defacto standard for Amazon S3 compatibility:Amazon S3 相容性的事實標準
- Simply powerful:簡單強大[極簡主義]
基本特點
MinIO 的企業級特性代表了物件儲存空間的標準。從 AWS S3 API 到 S3 Select 以及我們對內聯擦除編碼和安全性的實施,我們的程式碼廣受讚譽,並經常被一些技術和商業領域的大腕複製。
- Erasure Coding:糾錯碼
MinIO 使用以彙編程式碼編寫的每個物件內聯擦除編碼來保護資料,以提供儘可能高的效能。MinIO 使用 Reed-Solomon 程式碼將物件條帶化為具有使用者可配置冗餘級別的資料和奇偶校驗塊。MinIO 的 Erasure Coding 在物件級別執行修復,可以獨立修復多個物件。
在 N/2 的最大奇偶校驗下,MinIO 的實現可以確保在部署中僅使用 ((N/2)+1) 個操作驅動器進行不間斷的讀寫操作。例如,在 12 個驅動器的設定中,MinIO 將物件分片到 6 個數據和 6 個奇偶校驗驅動器,並且可以可靠地寫入新物件或重建現有物件,而部署中僅剩下 7 個驅動器。
- Bitrot Protection:Bitrot 保護
靜默資料損壞或 bitrot 是磁碟驅動器面臨的嚴重問題,導致資料在使用者不知情的情況下損壞。原因是多方面的(驅動器老化、電流峰值、磁碟韌體中的錯誤、幻像寫入、讀取/寫入方向錯誤、驅動程式錯誤、意外覆蓋),但結果是一樣的 - 資料受損。
MinIO 對HighwayHash演算法的優化實現確保它永遠不會讀取損壞的資料 - 它即時捕獲和修復損壞的物件。通過在 READ 上計算雜湊並在從應用程式、網路到記憶體/驅動器的 WRITE 上對其進行驗證來確保端到端的完整性。該實現專為速度而設計,可以在 Intel CPU 的單核上實現超過 10 GB/秒的雜湊速度。
- Encryption:加密處理
在飛行中加密資料是一回事;保護靜態資料是另一回事。MinIO 支援多種複雜的伺服器端加密方案來保護資料——無論資料在哪裡。MinIO 的方法以可忽略的效能開銷確保機密性、完整性和真實性。使用 AES-256-GCM、ChaCha20-Poly1305 和 AES-CBC 支援伺服器端和客戶端加密。
加密物件使用 AEAD 伺服器端加密進行防篡改。此外,MinIO 與所有常用的金鑰管理解決方案(例如 HashiCorp Vault)相容並經過測試。MinIO 使用金鑰管理系統 (KMS) 來支援 SSE-S3。
如果客戶端請求 SSE-S3 或啟用自動加密,則 MinIO 伺服器使用唯一的物件金鑰加密每個物件,該物件金鑰受 KMS 管理的主金鑰保護。鑑於極低的開銷,可以為每個應用程式和例項開啟自動加密。
- Identity Management:身份管理
MinIO 支援身份管理中最先進的標準,與 OpenID 連線相容提供商以及關鍵的外部 IDP 供應商整合。這意味著訪問是集中的,密碼是臨時的和輪換的,而不是儲存在配置檔案和資料庫中。此外,訪問策略是細粒度和高度可配置的,這意味著支援多租戶和多例項部署變得簡單。
- Continuous Replication:連續複製
傳統複製方法的挑戰在於,它們無法有效擴充套件超過數百 TB。話雖如此,每個人都需要一個複製策略來支援災難恢復,並且該策略需要跨越地域、資料中心和雲。
MinIO 的持續複製專為大規模、跨資料中心部署而設計。通過利用 Lambda 計算通知和物件元資料,它可以高效快速地計算增量。Lambda 通知確保更改立即傳播,而不是傳統的批處理模式。
連續複製意味著如果發生故障,即使面對高度動態的資料集,資料丟失也將保持在最低限度。最後,與 MinIO 所做的一樣,持續複製是多供應商的,這意味著您的備份位置可以是從 NAS 到公共雲的任何位置。
- Global Federation:全球聯合會
現代企業到處都有資料。MinIO 允許將這些不同的例項組合起來形成一個統一的全域性名稱空間。具體來說,可以將任意數量的 MinIO 伺服器組合成一個分散式模式集,多個分散式模式集可以組合成一個 MinIO 伺服器聯合。每個 MinIO Server Federation 都提供統一的管理和名稱空間。
MinIO 聯合伺服器支援無限數量的分散式模式集。這種方法的影響是物件儲存可以為大型、地理分佈的企業大規模擴充套件,同時保留從單個控制檯容納各種應用程式(Splunk、Teradata、Spark、Hive、Presto、TensorFlow、H20)的能力。
- Multi-Cloud Gateway:多雲閘道器
所有企業都在採用多雲戰略。這也包括私有云。因此,您的裸機虛擬化容器和公共雲服務(包括 Google、Microsoft 和阿里巴巴等非 S3 提供商)必須看起來相同。雖然現代應用程式具有高度可移植性,但支援這些應用程式的資料卻不是。
讓這些資料無論位於何處都可用,是 MinIO 解決的主要挑戰。MinIO 在裸機、網路附加儲存和每個公共雲上執行。更重要的是,MinIO 通過 Amazon S3 API 確保您從應用程式和管理的角度來看這些資料的檢視看起來完全相同。
MinIO 可以走得更遠,使您現有的儲存基礎設施與 Amazon S3 相容。影響是深遠的。現在,組織可以真正統一他們的資料基礎設施——從檔案到塊,所有這些都顯示為可通過 Amazon S3 API 訪問的物件,而無需遷移。
- WORM:WORM物件鎖定
啟用 WORM 後,MinIO 會禁用所有可能改變物件資料和元資料的 API。這意味著一旦寫入的資料就可以防篡改。這對於許多不同的監管要求具有實際應用。
基本架構
MinIO 被設計為雲原生,可以作為由外部編排服務(如 Kubernetes)管理的輕量級容器執行。整個伺服器是一個約 40MB 的靜態二進位制檔案,並且在使用 CPU 和記憶體資源方面非常高效 - 即使在高負載下也是如此。結果是您可以在共享硬體上共同託管大量租戶。
MinIO 在帶有本地連線驅動器 (JBOD/JBOF) 的商用伺服器上執行。叢集中的所有伺服器的能力相同(完全對稱架構)。沒有名稱節點或元資料伺服器。
MinIO 將資料和元資料作為物件一起寫入,無需元資料資料庫。此外,MinIO 將所有功能(擦除程式碼、bitrot 檢查、加密)作為內聯、嚴格一致的操作執行。結果是 MinIO 非常有彈性。
每個 MinIO 叢集是一組分散式 MinIO 伺服器,每個節點一個程序。MinIO 作為單個程序在使用者空間執行,並使用輕量級協程來實現高併發。驅動器被分組到擦除集(預設情況下每組 16 個驅動器),並且使用確定性雜湊演算法將物件放置在這些集上。
MinIO 專為大規模、多資料中心的雲端儲存服務而設計。每個租戶執行自己的 MinIO 叢集,與其他租戶完全隔離,使他們能夠保護他們免受升級、更新和安全事件的任何中斷。每個租戶通過跨地域聯合叢集來獨立擴充套件。
MinIO 伺服器功能
MinIO 的企業級特性代表了物件儲存空間的標準。從 AWS S3 API 到 S3 Select 以及我們對內聯擦除編碼和安全性的實施,我們的程式碼廣受讚譽,並經常被一些技術和商業領域的大腕複製。
MinIO 物件保留
預設情況下,對唯一物件名稱的每次新寫入操作都會導致覆蓋該物件。您可以將 MinIO 配置為建立 每個物件突變的版本,從而保留該物件的完整歷史記錄。MinIO 還支援一次寫入多次 讀取 (WORM) 鎖定版本化物件,以確保在指定的持續時間內或直到顯式解除鎖定為止的完全不變性。
版本控制和物件鎖定功能僅適用於 分散式 MinIO 部署:
- Bucket Versioning:儲存桶版本控制
MinIO 支援在單個儲存桶中儲存物件的多個“版本”。通常會覆蓋現有物件的寫入操作會導致建立新的版本化物件。MinIO 版本控制可防止意外覆蓋和刪除,同時支援“撤消”寫入操作。儲存桶版本控制是配置物件鎖定和保留規則的先決條件 。
對於版本化儲存桶,任何改變物件的寫入操作都會導致該物件的新版本具有唯一的版本 ID。MinIO 標記客戶端預設檢索的物件的“最新”版本。然後,客戶端可以明確選擇列出、檢索或刪除特定物件版本。
其中:
- 具有單一版本的物件:MinIO 為每個物件新增一個唯一的版本 ID 作為寫入操作的一部分。
2.具有多個版本的物件:MinIO 保留物件的所有版本,並將最新版本標記為“最新”。
3.檢索最新的物件版本
4.檢索特定物件版本
- WORM:物件鎖定
MinIO 物件鎖定(“物件保留”)強制執行一次寫入多次讀取 (WORM) 不變性以保護版本化物件不被刪除。MinIO 支援 基於持續時間的物件保留 和 無限期合法保留保留。
MinIO 物件鎖定提供關鍵資料保留合規性,並符合Cohasset Associates 的SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 要求 。
其中:
- 不帶鎖的桶:MinIO 版本控制保留了物件突變的完整歷史。但是,應用程式可以明確刪除特定的物件版本。
- 帶鎖的桶:對儲存桶中的物件應用預設的 30 天 WORM 鎖定可確保所有物件版本的最短保留期和保護期。
3.鎖定桶中的刪除操作:刪除操作遵循版本化儲存桶中的正常行為 ,其中 MinIODeleteMarker為物件建立一個。但是,物件的非刪除標記版本仍受保留規則約束,並且不會受到任何特定刪除或覆蓋嘗試的影響。
4.鎖定儲存桶中的版本化刪除操作:MinIO 會阻止任何刪除在 WORM 鎖定下持有的特定物件版本的嘗試。客戶端可以刪除版本的最早可能時間是鎖定到期時。
Minio部署和管理
MinIO 是一個軟體定義的高效能分散式物件儲存伺服器。您可以在消費級或企業級硬體以及各種作業系統和架構上執行 MinIO。
MinIO 支援兩種部署模式:獨立 和 分散式:
- 獨立部署:具有單個儲存卷或資料夾的單個 MinIO 伺服器。獨立部署最適合使用 MinIO 進行物件儲存的應用程式的評估和初始開發,或為單個儲存卷提供 S3 訪問層。獨立部署不提供對全套 MinIO 高階 S3 特性和功能的訪問。
- 分散式部署:一臺或多臺 MinIO 伺服器,所有伺服器上至少有四個總儲存卷。分散式部署最適合生產環境和工作負載,並支援 MinIO 的所有核心和高階 S3 特性和功能。對於生產環境,MinIO 建議使用 4 個節點和 4 個驅動器的基線拓撲。
版權宣告:本文為博主原創文章,遵循相關版權協議,如若轉載或者分享請附上原文出處連結和連結來源。