一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

對象存儲服務

 abin30 2021-03-28

Mino

對象存儲服務(Object Storage Service,OSS)是一種海量、安全、低成本、高可靠的云存儲服務,適合存放任意類型的文件。容量和處理能力彈性擴展,多種存儲類型供選擇,全面優(yōu)化存儲成本。

對象存儲服務#

在項目開發(fā)過程中,我們會產(chǎn)生大量的對象數(shù)據(jù),包括:日志文件,數(shù)據(jù)庫腳本文件、安裝包,容器鏡像,圖像、視頻等等,我們不僅僅是需要有一個集中的地方來存儲,還需要能基于 Web 的方式來訪問它們,以往我們有以下幾種方法來解決:

  • 阿里云、Azure 等云服務商提供的SaaS 級別的 OSS 服務
  • 自己搭建 NAS 網(wǎng)絡存儲通過 Samba 服務來訪問
  • 自己搭建 FTP 服務器來存儲

image.png

本篇文章主要介紹下其中的Minio方案

Minio#


Minio是GlusterFS創(chuàng)始人之一Anand Babu Periasamy發(fā)布新的開源項目。Minio兼容Amason的S3分布式對象存儲項目,采用Golang實現(xiàn),客戶端支持Java,Python,Javacript, Golang語言。

Minio是建立在云原生的基礎上;有分布式和共享存儲等功能;旨在多租戶環(huán)境中以可持續(xù)的方式進行擴展的對象存儲服務。它最適合存儲非結構化數(shù)據(jù),如:照片、視頻、日志文件、容器/虛擬機/映像等,單次存儲對象的大小最大可達5TB

參考#

Minio 架構#

image.png

左邊是 MINIO 集群的示意圖,整個集群是由多個角色完全相同的節(jié)點所組成的。因為沒有特殊的節(jié)點,所以任何節(jié)點宕機都不會影響整個集群節(jié)點之間的通信。通過 rest 跟 RPC 去通信的,主要是實現(xiàn)分布式的鎖跟文件的一些操作

右邊這張圖是單個節(jié)點的示意圖,每個節(jié)點都單獨對外提供兼容 S3 的服務

為什么要用 Minio#

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

存儲機制#

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

糾刪碼#

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

MinIO概念#

如下圖,每一行是一個機器節(jié)點,這里有32個集群,每個節(jié)點里有一個小方塊,我們稱之為Drive,Drive可簡單地理解為磁盤。一個節(jié)點有32個Drive,相當于32個磁盤。

Set是一組Drive的集合,所有紅色標識的Drive組成了一個Set。

image.png
一個對象存儲在一個Set上; 一個集群劃分為多個Set
一個Set包含的Drive數(shù)量是固定的, 默認由系統(tǒng)根據(jù)集群規(guī)模自動計算得出 MINIO_ERASURE_SET_DRIVE_COUNT
一個SET中的Drive盡可能分布在不同的節(jié)點上

部署#

Minio 提供了兩種部署方式:單機部署和分布式,兩種部署方式都非常簡單,其中分布式部署還提供了糾刪碼功能來降低數(shù)據(jù)丟失的風險

單機部署:#

wget https://dl./server/minio/release/linux-amd64/minio chmod +x minio ./minio server /data``  #``若``/data``目錄不存在,要新建一個

Docker 部署Minio#

mkdir /data/minio-data&&mkdir /data/minio-config # 創(chuàng)建一個數(shù)據(jù)存儲目錄
docker run -p 9000:9000 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin123456" -v /data/minio-data:/data -v /data/minio-config:/root/.minio minio/minio server /data

http://localhost:9000/ 即可登陸Minio 的管理界面

image.png

分布式Minio#

image.png
單機Minio服務存在單點故障,相反,如果是一個有 m 臺服務器, n 塊硬盤的分布式Minio,只要有 m/2 臺服務器或者 m*n/2 及更多硬盤在線,你的數(shù)據(jù)就是安全的。

例如,一個16節(jié)點的Minio集群,每個節(jié)點200塊硬盤,就算8臺服務器宕機,即大概有1600塊硬盤,這個集群仍然是可讀的,不過你需要9臺服務器在線才能寫數(shù)據(jù)。

export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://host{1...n}/export{1...m} http://host{1...o}/export{1...m}

當然如果我們只有一臺機器,但是想用糾刪碼的功能,也可以直接配置使用多個本地盤
minio server /data1 /data2 /data3 ... /data8

Minio配置#

默認的配置目錄是 ${HOME}/.minio,你可以使用--config-dir命令行選項重寫之。MinIO server在首次啟動時會生成一個新的config.json,里面帶有自動生成的訪問憑據(jù)。
minio server --config-dir /etc/minio /data

  • 證書目錄

TLS證書存在${HOME}/.minio/certs目錄下,你需要將證書放在該目錄下來啟用HTTPS

  • 憑據(jù)

只能通過環(huán)境變量MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 更改MinIO的admin憑據(jù)和root憑據(jù)。使用這兩個值的組合,MinIO加密存儲在后端的配置

export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=minio13
minio server /data

如何存儲和訪問對象#

將對象數(shù)據(jù)存儲到 Minio 中有以下幾種方式:
· 通過 MINIO CLIENT
· 通過 MINIO SDK 目前支持的語言包括:Go,Java,Node.js,Python,.NET
· 通過瀏覽器訪問 Web 管理界面,在管理界面中上傳和下載對象
· 如果你有存儲目錄 minio-data 的賬號和訪問權限,可以直接使用 SCP 命令將數(shù)據(jù)寫入磁盤

MinIO Client (mc)#

wget https://dl./client/mc/release/linux-amd64/mc
chmod +x mc

MinIO Client (mc)為ls,cat,cp,mirror,diff,find等UNIX命令提供了一種替代方案。它支持文件系統(tǒng)和兼容Amazon S3的云存儲服務(AWS Signature v2和v4)。

命令使用
ls       列出文件和文件夾。
mb       創(chuàng)建一個存儲桶或一個文件夾。
cat      顯示文件和對象內容。
pipe     將一個STDIN重定向到一個對象或者文件或者STDOUT。
share    生成用于共享的URL。
cp       拷貝文件和對象。
mirror   給存儲桶和文件夾做鏡像。
find     基于參數(shù)查找文件。
diff     對兩個文件夾或者存儲桶比較差異。
rm       刪除文件和對象。
events   管理對象通知。
watch    監(jiān)聽文件和對象的事件。
policy   管理訪問策略。
session  為cp命令管理保存的會話。
config   管理mc配置文件。
update   檢查軟件更新。
version  輸出版本信息。

列出Mino服務端

image.png

命令行創(chuàng)建bucket

image.png

image.png

通過代碼存儲對象#

// 構造訪問對象
var minio = new MinioClient("localhost:9000","accessKey","secretKey");
// 輸出所有的 Buckets 
var rs = minio.ListBucketsAsync();
foreach (varbucket in rs.Result.Buckets)
{
    Console.Out.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime);
}
// 存儲對象
var bucketName = "logs";
var objectName = "logs.zip";
var filePath = "c:\\logs.zip";
var contentType = "application/zip";
minio.PutObjectAsync(bucketName, objectName, filePath, contentType);
// 獲取對象
var find  = minio.GetObjectAsync(bucketName, objectName)

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    丰满人妻熟妇乱又乱精品古代| 亚洲精品有码中文字幕在线观看| 欧美区一区二在线播放| 91在线国内在线中文字幕| 日韩中文字幕视频在线高清版| 激情少妇一区二区三区| 国产精品成人又粗又长又爽| 欧美日韩精品视频在线| 福利视频一区二区在线| 好骚国产99在线中文| 男女午夜在线免费观看视频| 精品国模一区二区三区欧美| 国产成人精品99在线观看| 成人午夜视频在线播放| 色婷婷日本视频在线观看| 久久精品国产99国产免费| 大香蕉精品视频一区二区| 久久热在线视频免费观看| 成人你懂的在线免费视频| 欧美三级不卡在线观线看| 欧美午夜一区二区福利视频| 欧美一级黄片免费视频| 欧美一区二区三区五月婷婷 | 欧美乱码精品一区二区三| 中文字幕佐山爱一区二区免费| 亚洲欧美日韩国产成人| 嫩呦国产一区二区三区av| 精品久久综合日本欧美| 久久精品国产亚洲av麻豆尤物| 国产户外勾引精品露出一区| 亚洲综合香蕉在线视频| 亚洲中文字幕免费人妻| 午夜直播免费福利平台| 高清欧美大片免费在线观看| 亚洲精品熟女国产多毛| 亚洲最新av在线观看| 久久综合狠狠综合久久综合| 中文字幕乱码免费人妻av| 99久久精品免费看国产高清| 亚洲色图欧美另类人妻| 国产精品视频一区麻豆专区|