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 個驅動器的基線拓撲,

著作權宣告:本文為博主原創文章,遵循相關著作權協議,如若轉載或者分享請附上原文出處鏈接和鏈接來源,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/316021.html
標籤:架構設計
上一篇:java 在線考試系統原始碼 springboot 在線教育 視頻直播功能 支持手機端
下一篇:【設計模式】- 單例模式
