分佈式文件存儲服務器之Minio對象存儲技術參考指南

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 標記客戶端默認檢索的對象的“最新”版本。然後,客戶端可以明確選擇列出、檢索或刪除特定對象版本。

其中:

  1. 具有單一版本的對象:MinIO 爲每個對象添加一個唯一的版本 ID 作爲寫入操作的一部分。

2.具有多個版本的對象:MinIO 保留對象的所有版本,並將最新版本標記爲“最新”。

3.檢索最新的對象版本

4.檢索特定對象版本

  • WORM:對象鎖定

MinIO 對象鎖定(“對象保留”)強制執行一次寫入多次讀取 (WORM) 不變性以保護版本化對象不被刪除。MinIO 支持 基於持續時間的對象保留 和 無限期合法保留保留。

MinIO 對象鎖定提供關鍵數據保留合規性,並符合Cohasset Associates 的SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 要求 。

其中:

  1. 不帶鎖的桶:MinIO 版本控制保留了對象突變的完整歷史。但是,應用程序可以明確刪除特定的對象版本。

  1. 帶鎖的桶:對存儲桶中的對象應用默認的 30 天 WORM 鎖定可確保所有對象版本的最短保留期和保護期。

3.鎖定桶中的刪除操作:刪除操作遵循版本化存儲桶中的正常行爲 ,其中 MinIODeleteMarker爲對象創建一個。但是,對象的非刪除標記版本仍受保留規則約束,並且不會受到任何特定刪除或覆蓋嘗試的影響。

4.鎖定存儲桶中的版本化刪除操作:MinIO 會阻止任何刪除在 WORM 鎖定下持有的特定對象版本的嘗試。客戶端可以刪除版本的最早可能時間是鎖定到期時。

Minio部署和管理

MinIO 是一個軟件定義的高性能分佈式對象存儲服務器。您可以在消費級或企業級硬件以及各種操作系統和架構上運行 MinIO。

MinIO 支持兩種部署模式:獨立分佈式

  • 獨立部署:具有單個存儲卷或文件夾的單個 MinIO 服務器。獨立部署最適合使用 MinIO 進行對象存儲的應用程序的評估和初始開發,或爲單個存儲卷提供 S3 訪問層。獨立部署不提供對全套 MinIO 高級 S3 特性和功能的訪問。
  • 分佈式部署:一臺或多臺 MinIO 服務器,所有服務器上至少有四個總存儲卷。分佈式部署最適合生產環境和工作負載,並支持 MinIO 的所有核心和高級 S3 特性和功能。對於生產環境,MinIO 建議使用 4 個節點和 4 個驅動器的基線拓撲。

版權聲明:本文爲博主原創文章,遵循相關版權協議,如若轉載或者分享請附上原文出處鏈接和鏈接來源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章