minio 完全操作手册与实践(全面简述)

本文研究重点归纳:

前言minio 概念:
安装部署指南(单机+docker)
分布式集群测试
异地(多中心)同步与备份
EC码的存储方式|数据损坏与恢复
SDK与API(官方提供)
FUSE+S3
1、前言minio 概念:
用 MinIO 搭建一个优雅、简单、功能完备的静态资源服务,操作操作简单,功能完备的分布式文件系统。MinIO 已经提供了分布式部署的解决方案,实现高可靠、高可用的资源存储,同样的操作简单,功能完备。

本文将对 MinIO 的分布式部署进行描述,主要分以下几个方面:

分布式存储的可靠性
MinIO 的分布式的存储机制
分布式部署实践
2 分布式存储可靠性常用方法(冗余+校验(EC))

分布式存储,很关键的点在于数据的可靠性,即保证数据的完整,不丢失,不损坏。只有在可靠性实现的前提下,才有了追求一致性、高可用、高性能的基础。而对于在存储领域,一般对于保证数据可靠性的方法主要有两类,一类是冗余法,一类是校验法。

2.1 冗余
冗余法最简单直接,即对存储的数据进行副本备份,当数据出现丢失,损坏,即可使用备份内容进行恢复,而副本 备份的多少,决定了数据可靠性的高低。这其中会有成本的考量,副本数据越多,数据越可靠,但需要的设备就越多,成本就越高。可靠性是允许丢失其中一份数据。当前已有很多分布式系统是采用此种方式实现,如 Hadoop 的文件系统(3个副本),Redis 的集群,MySQL 的主备模式等。

2.2 校验
校验法即通过校验码的数学计算的方式,对出现丢失、损坏的数据进行校验、还原。注意,这里有两个作用,一个校验,通过对数据进行校验和( checksum )进行计算,可以检查数据是否完整,有无损坏或更改,在数据传输和保存时经常用到,如 TCP 协议;二是恢复还原,通过对数据结合校验码,通过数学计算,还原丢失或损坏的数据,可以在保证数据可靠的前提下,降低冗余,如单机硬盘存储中的 RAID 技术,纠删码(Erasure Code)技术等。MinIO 采用的就是纠删码技术。

3 MinIO存储机制 理解一些概念
3.1 概念理解

在部署分布式 MinIO 前,需要对下面的概念进行了解:

硬盘(Drive):即存储数据的磁盘,在 MinIO 启动时,以参数的方式传入。
组( Set ):即一组 Drive 的集合,分布式部署根据集群规模自动划分一个或多个 Set ,每个 Set 中的 Drive 分布在不同位置。一个对象存储在一个 Set 上。
桶(Bucket):文件对象存储的逻辑位置,对于客户端而言,就相当于一个存放文件的顶层文件夹。
3.2 纠删码EC(Erasure Code)
MinIO 使用纠删码机制来保证高可靠性,使用 highwayhash 来处理数据损坏( Bit Rot Protection )。关于纠删码,简单来说就是可以通过数学计算,把丢失的数据进行还原,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。举个最简单例子就是有两个数据(d1, d2),用一个校验和y(d1 + d2 = y)即可保证即使丢失其中一个,依然可以还原数据。如丢失 d1 ,则使用 y - d2 = d1 还原,同理,d2 丢失或者y丢失,均可通过计算得出。

EC 的具体应用实现中, RS(Reed-Solomen)是 EC 的一种更简单快捷的实现,可以通过矩阵运算,还原数据。MinIO 将对象拆分成N/2数据和N/2 校验块 。具体的数学矩阵运算及证明,可以参考文章《Erasure-Code-擦除码-1-原理篇》及《EC纠删码原理》。

3.3 存储形式
文件对象上传到 MinIO ,会在对应的数据存储磁盘中,以 Bucket 名称为目录,文件名称为下一级目录,文件名称下是 part.1 和 xl.json,前者是编码数据块及检验块,后者是元数据文件。如有4个磁盘,当文件上传后,会有2个编码数据块,2个检验块,分别存储在4个磁盘中。

2、 安装部署指南(单机+docker)
单机部署

1.创建minio目录

mkdir /usr/local/minio

mkdir /usr/local/minio/bin

mkdir /usr/local/minio/conf

mkdir /usr/local/minio/data

运行用户:root
3.下载minio的二进制文件,安装存放

curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio

nohup /usr/local/minio/minio server /usr/local/minio/data --console-address ":9001" > /usr/local/minio/minio.log 2>&1 &

创建minio配文件

vim /usr/local/minio/conf/minio.conf

 MINIO_ROOT_USER="minioadmin"
 MINIO_ROOT_PASSWORD="minioadmin"

 MINIO_VOLUMES="/usr/local/minio/data"
 MINIO_OPTS="--console-address :9001"

 /etc/systemd/system/minio.service  

[Unit]

Description=Minio Wants=network.target After=network.target AssertFileIsExecutable=/usr/local/minio/bin/minio

[Service]
    #这个地方不能使用forking,否则启动不了 Type=simple EnvironmentFile=/usr/local/minio/conf/minio.conf

    # User and group User=root     Group=root

ExecStart=/usr/local/minio/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

Restart=always LimitNOFILE=65536
# Disable timeout logic and wait until process is stopped TimeoutStopSec=infinity SendSIGKILL=no


[Install] WantedBy=multi-user.target


启动服务

#  systemctl daemon-reload

# systemctl enable minio.service

#  systemctl start  minio.service

#  systemctl status   minio.service


7.设置防火墙,开发minio访问端口

# firewall-cmd --zone=public --add-port=9001/tcp --permanent

# firewall-cmd --reload

2 docker 部署

参考链接:Minio的Docker部署docker-compose启动流程 - 茶尚温·听风吟 - 博客园

3、分布式集群测试
(三台单机)参考链接:基于docker部署minio分布式集群_W1124824402的博客-CSDN博客_docker部署minio集群
(使用nginx 做负载均衡的配置):MinIO 的分布式部署 - Mason技术记录 - 博客园

4、异地(多中心)同步与备份
联盟模式:联盟模式即通过引入etcd和coreDNS,将多个MinIO分布式集群在逻辑上组成一个联盟,对外以一个整体提供服务,并提供统一的命名空间。

参考:用MinIO对象存储构建企业数据集中备份系统

5、 EC码的存储方式|数据损坏与恢复
minio分布式集群搭建完全教程(纠删码,数据恢复)

6、 SDK与API(官方提供)

7、 FUSE+S3
k3s + smb+ minio测试记录 : k3s + smb+ minio测试记录 - WuYjJun的个人空间 - OSCHINA - 中文开源技术交流社区

文章版权所属一粒云科技@转载请声明出处。

标签: minio, 分布式文件系统, 网盘分布式文件系统, 基础架构研究
————————————————
版权声明:本文为CSDN博主「manbuzhiwu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/manbuzhiwu/article/details/122108809

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容