Docker安裝Minio存儲服務器詳解


1、 前言

1.1 Minio 簡介

  • 1、MinIO 是在 Apache License v2.0 下發布的對象存儲服務器。 它與 Amazon S3 雲存儲服務兼容。 它最適合存儲非結構化數據,如照片,視頻,日志文件,備份和容器/ VM 映像。 對象的大小可以從幾 KB 到最大 5TB。
  • 2、MinIO 服務器足夠輕,可以與應用程序堆棧捆綁在一起,類似於 NodeJS,Redis 和 MySQL
  • 3 一種高性能的分布式對象存儲服務器,用於大型數據基礎設施。它是機器學習和其他大數據工作負載下Hadoop HDFS 的理想 s3 兼容替代品

2 、 為什么要用 Minio

2.1 選擇它的理由

  • 1、Minio 有良好的存儲機制
  • 2、Minio 有很好糾刪碼的算法與擦除編碼算法
  • 3、擁有RS code 編碼數據恢復原理
  • 4、公司做強做大時,數據的擁有重要性,對數據治理與大數據分析做准備。
  • 5、搭建自己的一套文件系統服務,對文件數據進行安全保護。
  • 6、擁有自己的平台,不限於其他方限制。

2.2 存儲機制

  • Minio使用糾刪碼erasure code和校驗和checksum來保護數據免受硬件故障和無聲數據損壞。 即便丟失一半數量(N/2)的硬盤,仍然可以恢復數據。

2.3 糾刪碼

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

2.4 RS code 編碼數據恢復原理

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


     
    RS code

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

 
RS

2.5 擦除代碼

  • MinIO 使用每個對象的內聯擦除編碼來保護數據,這種編碼是用匯編代碼編寫的,可以提供盡可能高的性能。MinIO 使用 Reed-Solomon 代碼將對象條帶化為 n/2 數據和 n/2 奇偶校驗塊——盡管這些可以配置為任何所需的冗余級別。這意味着在 12 個驅動器設置中,一個對象被分割為 6 個數據和 6 個奇偶校驗塊。即使您丟失了 5 個(n/2) -1 個驅動器,無論是奇偶校驗還是數據,您仍然可以從剩余驅動器可靠地重構數據。MinIO 的實現確保即使多個設備丟失或不可用,也可以讀取對象或寫入新對象。最后,MinIO 的擦除代碼在對象級別,可以一次治愈一個對象。
 
擦除代碼

2.6 體系結構

  • 1、MinIO 支持從機器學習到備份的一系列現代工作負載
  • 2、使用雲本地技術並分解計算和存儲層
  • 3、創建高效和可伸縮的對象存儲解決方案。


     
    體系結構

3 、Linux 安裝准備工作

3.1 搜索鏡像

  • 1 搜索鏡像的命令
docker search minio
  • 2 搜索鏡像命令的結果信息
  •  
    搜索鏡像命令的結果信息

3.2 拉取鏡像

  • 1 拉取鏡像的命令
docker pull minio/minio
  • 2 拉取鏡像命令的結果信息
  •  
    拉取鏡像命令的結果信息

3.3 啟動與安裝鏡像

  • 1、這種安裝方式並沒有指定 ACCESS_KEY 和 SECRET_KEY 進行設置,安裝后可以進行 echo命令設置,
docker run -it -p 9000:9000 -d minio/minio server /data 
  • -it 表示運行參數,-p 表示暴露端口 ,-d 表示后台運行,data 指定目錄存放文件
  • 2、echo 命令設置 ACCESS_KEY 和 SECRET_KEY
echo "admin" | docker secret create access_key -
echo "admin123456" | docker secret create secret_key -

3.4 自定義用戶和秘鑰安裝

  • 1、這種安裝方式 MinIO 自定義 Access 和 Secret 密鑰要覆蓋 MinIO 的自動生成的密鑰,您可以將 Access 和 Secret 密鑰設為環境變量。MinIO 允許常規字符串作為 Access 和 Secret 密鑰
docker run -p 9000:9000 --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=admin" \ -e "MINIO_SECRET_KEY=admin123456" \ -v /home/data:/data \ -v /home/config:/root/.minio \ minio/minio server /data 
  • 2 輸出的結果


     
    輸出的結果

3.5 查看運行鏡像

  • 1 查看運行鏡像命令
[root@localhost /]# docker ps -a 
  • 2 查看運行鏡像的結果信息


     
    結果信息

3.6 查看安裝 logs 信息

  • 1 通過指定容器 id 查看安裝 minio 的信息
docker logs ea407f6b446c
  • 2 minio 安裝的日志信息,其中 AccessKey 和 SecretKey 是登陸 minio 客戶端的用戶名和秘鑰
Endpoint: http://172.17.0.5:9000 http://127.0.0.1:9000 AccessKey: 4RUAAMD4JVDTSYFZAIIU SecretKey: mn5fYWV2CPtENTS6XHQqRB+j+NNjI3w79qcdQ4VZ Browser Access: http://172.17.0.5:9000 http://127.0.0.1:9000 Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide $ mc config host add myminio http://172.17.0.5:9000 4RUAAMD4JVDTSYFZAIIU mn5fYWV2CPtENTS6XHQqRB+j+NNjI3w79qcdQ4VZ Object API (Amazon S3 compatible): Go: https://docs.min.io/docs/golang-client-quickstart-guide Java: https://docs.min.io/docs/java-client-quickstart-guide Python: https://docs.min.io/docs/python-client-quickstart-guide JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide .NET: https://docs.min.io/docs/dotnet-client-quickstart-guide 

3.7 登錄客戶端

  • 1 瀏覽器輸入地址進行登錄
http://192.168.1.133:9000 
  • 2 瀏覽器輸入 AccessKey 和 SecretKey


     
    登錄.png
  • 3、授權失敗

出現 Authentication failed, check your access credentials 一般表示 AccessKey 和 SecretKey 輸入不正確


 
授權失敗
  • 4、成功登陸界面


     
    界面.png

3.8 新建桶注意事項

  • minio client 不支持有下划線的桶名稱(bucket name)命名,支持中划線的命名,故所有桶的名稱建議中划線或者無中划線進行命名。


     
    新建桶注意事項.png

3.9 修改用戶名和秘鑰

 
修改用戶名和秘鑰.png

4 、Windows 安裝准備工作

4.1 、在 Docker 安裝

  • 前提 Windows 上安裝 Docker 容器,然后輸入下面的命令.
docker run -p 9000:9000 --name minio1 \ -d --restart=always \ -e "MINIO_ACCESS_KEY=admin" \ -e "MINIO_SECRET_KEY=admin123456" \ -v E:\minio:/data \ -v E:\minio\config:/root/.minio \ minio/minio server /data 
  • -v 表示數據卷 volume 、 -e 指定環境變量 env 、E:\minio 指定磁盤目錄

4.2 、非 Docker 安裝

  • 1、指定客戶端和目錄加上 server 關鍵字進行綁定,然后回車進行啟動
minio.exe server E:\minio 
 
minio
  • 2、 生成秘鑰和 key


     
    生成秘鑰和 key
  • 3、 生成的目錄和文件


     
    image.png

備注:其中 buckets 在后台新建一個桶的時候 minio 會維護一個文件夾,這個文件夾會維護fs.json 文件系統 json

5 、總結與建議

5.1 總結與建議

  • 1 、以上問題根據搭建 Minio 實際情況進行總結整理,除了技術問題查很多網上資料通過進行學習之后梳理與分享。

  • 2、 在學習過程中也遇到很多困難和疑點,如有問題或誤點,望各位老司機多多指出或者提出建議。本人會采納各種好建議和正確方式不斷完善現況,人在成長過程中的需要優質的養料。

  • 3、 希望此文章能幫助各位老鐵們更好去了解如何在 Docker 里面安裝 Minio,也希望你看了此文章或者通過找資料進行手動實操一遍學習效果會更好。

5.2 Minio官方與文檔

更系統的學習與資料,請參考官方文檔
官方地址
官方文檔
中文官方地址



作者:寅務
鏈接:https://www.jianshu.com/p/52dbc679094a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM