1. 程式人生 > 其它 >miniIO系列文章01---MinIO 簡介

miniIO系列文章01---MinIO 簡介

MinIO.jpeg

MinIO 官網

MinIO 官方GitHub

MinIO 官方文件

1、什麼是物件儲存?

關於物件儲存,我們可以看下 阿里雲OSS 的解釋。

物件儲存服務OSS(Object Storage Service)是一種海量、安全、低成本、高可靠的雲端儲存服務,適合存放任意型別的檔案。容量和處理能力彈性擴充套件,多種儲存型別供選擇,全面優化儲存成本。

物件儲存最大的優勢就在於它可以儲存大容量的非結構化資料,例如圖片、視訊、日誌檔案、備份資料和容器/虛擬機器映象等。對於大多數的企業來說,這可以說是最為理想的儲存媒介了。

對於業務已在公有云上的企業來說,使用公有云提供的 OSS 服務,可以很好的節省儲存的成本,且一般都提供易接入的 SDK,以阿里雲的OSS 服務為例,在儲存介質的上層封裝可標註的 RESTful API 介面,使用起來十分方便。

但是對於一些沒有選擇業務上雲或者想要下雲的企業來說,要使用公有云的 OSS,在公網頻寬方面就需要有一定的投入,畢竟需要通過公網傳輸,頻寬太小,傳輸速度就會慢,且在傳輸過程中資料的安全性和完整性也有損失的風險,走專線的費用又十分昂貴,不實在。

這種情況下,MinIO 就是一個不錯的選擇,麻雀雖小,五臟俱全,企業可以以此快速構建自己內部的物件儲存服務。



2、什麼是 MinIO?

Minio 是個基於 Golang 編寫的開源物件儲存套件,基於Apache License v2.0開源協議,雖然輕量,卻擁有著不錯的效能。它相容亞馬遜S3雲端儲存服務介面。可以很簡單的和其他應用結合使用,例如 NodeJS、Redis、MySQL等。

1)MinIO 的應用場景

如下圖,MinIO 的應用場景除了可以作為私有云的物件儲存服務來使用,也可以作為雲物件儲存的閘道器層,無縫對接 Amazon S3 或者 MicroSoft Azure

 

 

 

MinIO 應用場景.png

2)特點

  • 高效能:
    作為一款高效能儲存,在標準硬體條件下,其讀寫速率分別可以達到 55Gb/s35Gb/s。並而 MinIO 支援一個物件檔案可以是任意大小,從幾kb到最大5T不等。

  • 可擴充套件:
    不同MinIO叢集可以組成聯邦,並形成一個全域性的名稱空間,並且支援跨越多個數據中心。

  • 雲原生:
    容器化、基於K8S的編排、多租戶支援。

  • Amazon S3相容:
    使用 Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK 和 AWS CLI 訪問Minio伺服器。

  • 可對接多種後端儲存:
    除了Minio自己的檔案系統,還支援 DAS、 JBODs、NAS、Google雲端儲存和 Azure Blob儲存。

  • SDK支援:

  • Lambda計算:
    Minio伺服器通過其相容AWS SNS / SQS的事件通知服務觸發Lambda功能。支援的目標是訊息佇列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等資料庫。

  • 圖形化介面
    有操作頁面。

  • 功能簡單:
    不容易出錯,快速啟動。

  • 支援糾刪碼:
    MinIO使用糾刪碼、Checksum來防止硬體錯誤和靜默資料汙染。在最高冗餘度配置下,即使丟失1/2的磁碟也能恢復資料。


3)儲存機制

Minio 使用糾刪碼 erasure code和校驗和 checksum。 即便丟失一半數量(N/2)的硬碟,仍然可以恢復資料。

校驗和

保護資料免受硬體故障和無聲資料損壞

糾刪碼

糾刪碼是一種恢復丟失和損壞資料的數學演算法,目前,糾刪碼技術在分散式儲存系統中的應用主要有三類,陣列糾刪碼(Array Code: RAID5、RAID6等)、RS(Reed-Solomon)裡德-所羅門類糾刪碼和LDPC(LowDensity Parity Check Code)低密度奇偶校驗糾刪碼。Erasure Code是一種編碼技術,它可以將n份原始資料,增加m份資料,並能通過n+m份中的任意n份資料,還原為原始資料。即如果有任意小於等於m份的資料失效,仍然能通過剩下的資料還原出來。

Minio採用Reed-Solomon code將物件拆分成N/2資料和N/2 奇偶校驗塊。 這就意味著如果是12塊盤,一個物件會被分成6個數據塊、6個奇偶校驗塊,可以丟失任意6塊盤(不管其是存放的資料塊還是奇偶校驗塊),仍可以從剩下的盤中的資料進行恢復。

RS code編碼資料恢復原理

RS編碼以word為編碼和解碼單位,大的資料塊拆分到字長為w(取值一般為8或者16位)的word,然後對word進行編解碼。 資料塊的編碼原理與word編碼原理相同,後文中以word為例說明,變數Di, Ci將代表一個word。
把輸入資料視為向量D=(D1,D2,..., Dn), 編碼後資料視為向量(D1, D2,..., Dn, C1, C2,.., Cm),RS編碼可視為如下(圖1)所示矩陣運算。
圖1最左邊是編碼矩陣(或稱為生成矩陣、分佈矩陣,Distribution Matrix),編碼矩陣需要滿足任意n*n子矩陣可逆。為方便資料儲存,編碼矩陣上部是單位陣(n行n列),下部是m行n列矩陣。下部矩陣可以選擇範德蒙德矩陣或柯西矩陣。

 

 

 

minio 儲存機制1.png

RS最多能容忍m個數據塊被刪除。 資料恢復的過程如下:
(1)假設D1、D4、C2丟失,從編碼矩陣中刪掉丟失的資料塊/編碼塊對應的行。(圖2、3)
(2)由於B' 是可逆的,記B'的逆矩陣為 (B'^-1),則B' * (B'^-1) = I 單位矩陣。兩邊左乘B' 逆矩陣。 (圖4、5)
(3)得到如下原始資料D的計算公式 。

 

 

 

minio 儲存機制2.png

(4)對D重新編碼,可得到丟失的編碼



參考文件:

https://www.jianshu.com/p/c2b43ff67df0



作者:獨奏亂序
連結:https://www.jianshu.com/p/f39e7255805b
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。