1纷妆、 前言
1.1 Minio 簡介
- 1、MinIO 是在 Apache License v2.0 下發(fā)布的對(duì)象存儲(chǔ)服務(wù)器晴弃。 它與 Amazon S3 云存儲(chǔ)服務(wù)兼容掩幢。 它最適合存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),如照片上鞠,視頻粒蜈,日志文件,備份和容器/ VM 映像旗国。 對(duì)象的大小可以從幾 KB 到最大 5TB。
- 2注整、MinIO 服務(wù)器足夠輕能曾,可以與應(yīng)用程序堆棧捆綁在一起,類似于 NodeJS肿轨,Redis 和 MySQL
- 3 一種高性能的分布式對(duì)象存儲(chǔ)服務(wù)器寿冕,用于大型數(shù)據(jù)基礎(chǔ)設(shè)施。它是機(jī)器學(xué)習(xí)和其他大數(shù)據(jù)工作負(fù)載下Hadoop HDFS 的理想 s3 兼容替代品
2 椒袍、 為什么要用 Minio
2.1 選擇它的理由
- 1驼唱、Minio 有良好的存儲(chǔ)機(jī)制
- 2、Minio 有很好糾刪碼的算法與擦除編碼算法
- 3驹暑、擁有RS code 編碼數(shù)據(jù)恢復(fù)原理
- 4玫恳、公司做強(qiáng)做大時(shí),數(shù)據(jù)的擁有重要性优俘,對(duì)數(shù)據(jù)治理與大數(shù)據(jù)分析做準(zhǔn)備京办。
- 5、搭建自己的一套文件系統(tǒng)服務(wù),對(duì)文件數(shù)據(jù)進(jìn)行安全保護(hù)帆焕。
- 6惭婿、擁有自己的平臺(tái),不限于其他方限制。
2.2 存儲(chǔ)機(jī)制
- Minio使用糾刪碼erasure code和校驗(yàn)和checksum來保護(hù)數(shù)據(jù)免受硬件故障和無聲數(shù)據(jù)損壞财饥。 即便丟失一半數(shù)量(N/2)的硬盤换吧,仍然可以恢復(fù)數(shù)據(jù)。
2.3 糾刪碼
- 糾刪碼是一種恢復(fù)丟失和損壞數(shù)據(jù)的數(shù)學(xué)算法钥星,目前沾瓦,糾刪碼技術(shù)在分布式存儲(chǔ)系統(tǒng)中的應(yīng)用主要有三類,陣列糾刪碼(Array Code: RAID5打颤、RAID6 等)暴拄、RS(Reed-Solomon)里德-所羅門類糾刪碼和 LDPC(LowDensity Parity Check Code)低密度奇偶校驗(yàn)糾刪碼。Erasure Code 是一種編碼技術(shù)编饺,它可以將 n 份原始數(shù)據(jù)乖篷,增加 m 份數(shù)據(jù),并能通過 n+m 份中的任意 n 份數(shù)據(jù)透且,還原為原始數(shù)據(jù)撕蔼。即如果有任意小于等于 m 份的數(shù)據(jù)失效,仍然能通過剩下的數(shù)據(jù)還原出來
2.4 RS code 編碼數(shù)據(jù)恢復(fù)原理
-
RS 編碼以 word 為編碼和解碼單位秽誊,大的數(shù)據(jù)塊拆分到字長為 w(取值一般為 8 或者 16位)的 word鲸沮,然后對(duì) word 進(jìn)行編解碼。 數(shù)據(jù)塊的編碼原理與 word 編碼原理相同锅论,后文中以 word 為例說明讼溺,變量 Di, Ci 將代表一個(gè) word。把輸入數(shù)據(jù)視為向量 D=(D1最易,D2怒坯,..., Dn), 編碼后數(shù)據(jù)視為向量(D1, D2,..., Dn, C1, C2,.., m),RS 編碼可視為如下(圖 1)所示矩陣運(yùn)算藻懒。圖 1 最左邊是編碼矩陣(或稱為生成矩陣剔猿、分布矩陣,Distribution Matrix)嬉荆,編碼矩陣需要滿足任意 n*n 子矩陣可逆归敬。為方便數(shù)據(jù)存儲(chǔ),編碼矩陣上部是單位陣(n 行 n 列)鄙早,下部是m 行 n 列矩陣汪茧。下部矩陣可以選擇范德蒙德矩陣或柯西矩陣。
RS 最多能容忍 m 個(gè)數(shù)據(jù)塊被刪除蝶锋。 數(shù)據(jù)恢復(fù)的過程如下:
(1)假設(shè) D1陆爽、D4、C2 丟失扳缕,從編碼矩陣中刪掉丟失的數(shù)據(jù)塊/編碼塊對(duì)應(yīng)的行慌闭。(圖 2别威、3)
(2)由于 B' 是可逆的,記 B'的逆矩陣為 (B'^-1)驴剔,則 B' * (B'^-1) = I 單位矩陣省古。兩邊左乘 B'
逆矩陣。 (圖 4丧失、5)
(3)得到如下原始數(shù)據(jù) D 的計(jì)算公式 豺妓。
2.5 擦除代碼
- MinIO 使用每個(gè)對(duì)象的內(nèi)聯(lián)擦除編碼來保護(hù)數(shù)據(jù),這種編碼是用匯編代碼編寫的布讹,可以提供盡可能高的性能琳拭。MinIO 使用 Reed-Solomon 代碼將對(duì)象條帶化為 n/2 數(shù)據(jù)和 n/2 奇偶校驗(yàn)塊——盡管這些可以配置為任何所需的冗余級(jí)別。這意味著在 12 個(gè)驅(qū)動(dòng)器設(shè)置中描验,一個(gè)對(duì)象被分割為 6 個(gè)數(shù)據(jù)和 6 個(gè)奇偶校驗(yàn)塊白嘁。即使您丟失了 5 個(gè)(n/2) -1 個(gè)驅(qū)動(dòng)器,無論是奇偶校驗(yàn)還是數(shù)據(jù)膘流,您仍然可以從剩余驅(qū)動(dòng)器可靠地重構(gòu)數(shù)據(jù)絮缅。MinIO 的實(shí)現(xiàn)確保即使多個(gè)設(shè)備丟失或不可用,也可以讀取對(duì)象或?qū)懭胄聦?duì)象呼股。最后耕魄,MinIO 的擦除代碼在對(duì)象級(jí)別,可以一次治愈一個(gè)對(duì)象彭谁。
2.6 體系結(jié)構(gòu)
- 1吸奴、MinIO 支持從機(jī)器學(xué)習(xí)到備份的一系列現(xiàn)代工作負(fù)載
- 2、使用云本地技術(shù)并分解計(jì)算和存儲(chǔ)層
-
3缠局、創(chuàng)建高效和可伸縮的對(duì)象存儲(chǔ)解決方案奄抽。
3 、Linux 安裝準(zhǔn)備工作
3.1 搜索鏡像
- 1 搜索鏡像的命令
docker search minio
- 2 搜索鏡像命令的結(jié)果信息
3.2 拉取鏡像
- 1 拉取鏡像的命令
docker pull minio/minio
- 2 拉取鏡像命令的結(jié)果信息
3.3 啟動(dòng)與安裝鏡像
- 1甩鳄、這種安裝方式并沒有指定 ACCESS_KEY 和 SECRET_KEY 進(jìn)行設(shè)置,安裝后可以進(jìn)行 echo命令設(shè)置,
docker run -it -p 9000:9000 -d minio/minio server /data
- -it 表示運(yùn)行參數(shù)额划,-p 表示暴露端口 妙啃,-d 表示后臺(tái)運(yùn)行,data 指定目錄存放文件
- 2俊戳、echo 命令設(shè)置 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 的自動(dòng)生成的密鑰,您可以將 Access 和 Secret 密鑰設(shè)為環(huán)境變量抑胎。MinIO 允許常規(guī)字符串作為 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 輸出的結(jié)果
3.5 查看運(yùn)行鏡像
- 1 查看運(yùn)行鏡像命令
[root@localhost /]# docker ps -a
-
2 查看運(yùn)行鏡像的結(jié)果信息
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 瀏覽器輸入地址進(jìn)行登錄
http://192.168.1.133:9000
-
2 瀏覽器輸入 AccessKey 和 SecretKey
3、授權(quán)失敗
出現(xiàn) Authentication failed, check your access credentials 一般表示 AccessKey 和 SecretKey 輸入不正確
-
4阿逃、成功登陸界面
3.8 新建桶注意事項(xiàng)
-
minio client 不支持有下劃線的桶名稱(bucket name)命名,支持中劃線的命名,故所有桶的名稱建議中劃線或者無中劃線進(jìn)行命名铭拧。
3.9 修改用戶名和秘鑰
4 赃蛛、Windows 安裝準(zhǔn)備工作
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 表示數(shù)據(jù)卷 volume 呕臂、 -e 指定環(huán)境變量 env 、E:\minio 指定磁盤目錄
4.2 肪跋、非 Docker 安裝
- 1歧蒋、指定客戶端和目錄加上 server 關(guān)鍵字進(jìn)行綁定,然后回車進(jìn)行啟動(dòng)
minio.exe server E:\minio
-
2州既、 生成秘鑰和 key
-
3谜洽、 生成的目錄和文件
備注:其中 buckets 在后臺(tái)新建一個(gè)桶的時(shí)候 minio 會(huì)維護(hù)一個(gè)文件夾,這個(gè)文件夾會(huì)維護(hù)fs.json 文件系統(tǒng) json
5 、總結(jié)與建議
5.1 總結(jié)與建議
1 吴叶、以上問題根據(jù)搭建 Minio 實(shí)際情況進(jìn)行總結(jié)整理阐虚,除了技術(shù)問題查很多網(wǎng)上資料通過進(jìn)行學(xué)習(xí)之后梳理與分享。
2晤郑、 在學(xué)習(xí)過程中也遇到很多困難和疑點(diǎn)敌呈,如有問題或誤點(diǎn),望各位老司機(jī)多多指出或者提出建議造寝。本人會(huì)采納各種好建議和正確方式不斷完善現(xiàn)況磕洪,人在成長過程中的需要優(yōu)質(zhì)的養(yǎng)料。
3诫龙、 希望此文章能幫助各位老鐵們更好去了解如何在 Docker 里面安裝 Minio析显,也希望你看了此文章或者通過找資料進(jìn)行手動(dòng)實(shí)操一遍學(xué)習(xí)效果會(huì)更好。