概念基础
-
- wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio
- chmod +x minio
- ./minio server /mnt/data (启动minio文件,并指定数据存储目录)
1.2 minio 的基础概念
- Object:存储到 minio 的基本对象,如文件,字节流
- Bucket:用来存储 Object 的逻辑空间。在每个 Bucket 之间的数据是相互隔离的。对于客户端而言,相当于一个存放文件的顶层文件夹
- Drive:即存储数据的磁盘,在minio启动时,以参数方式传入,minio所有的数据对象都存在Drive里
- Set:即一组Drive的集合,分布式部署根据集群规模自动划分一个或多个Set,每个Set中的Drive分布在不同的位置。
-
- 一个对象存储在一个Set上
- 一个集群划分为多个Set
- 一个Set包含的Drive数量固定,默认由系统根据集群规模自动计算得出
- 一个Set中的Drive及肯能分布在不同的节点上
1.3 纠删码EC
- Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。
-
2 环境搭建
2.1 单机模式
没有纠删码模式
-
- export MINIO_ROOT_USER=admin
- export MINIO_ROOT_PASSWORD=admin1234
- ./minio server --console-address ":9001" --address ":9000" /mnt/data
-
- docker run -d -p 9000:9000 -p 9001:9001 --name minio -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=admin1234" -v /root/mnt/data:/data -v /root/mnt/config:/root/.minio minio/minio server /data --console-address ":9001" --address ":9000"
有纠删码模式
- docker run -d -p 9000:9000 -p 9001:9001 --name minio -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=admin1234" -v /root/mnt/data1:/data1 -v /root/mnt/data2:/data2 -v /root/mnt/data3:/data3 -v /root/mnt/data4:/data4 -v /root/mnt/config:/root/.minio minio/minio server /data{1..4} --console-address ":9001" --address ":9000"
配置文件存在:/data/.minio.sys 下面,如果使用纠删码模式,则在4个data下
2.2 集群模式
分布式存储可靠性的常用方法
冗余
冗余法最简直接,即对存储的数据进行副本备份,当数据出现丢失,损坏,即可使用备份内容进行恢复,而副本备份的多少,决定了数据可靠性的高低。如 hadoop的文件系统(3个副本),redis的集群,Mysql的主备模式
校验
校验法即通过校验码的数据计算方式,对出现丢失,损坏的数据进行校验,还原。注意,这里有两个作用,一个校验,通过对数据进行校验和(checksum)进行计算,可以检查数据是否完整,有无损坏或更改,在数据传输和保存经常用到,如TCP协议;而是恢复还原,通过对数据集合校验码,通过数学计算,还原丢失或损坏的数据。如单机硬盘存储中RAID技术,纠删码(Erasure Code)技术等
2.2.1 分布式minio优势
-
- 分布式minio采用纠删码来防范多个节点宕机或位衰减 bit rot
- 分布式minio至少需要4个硬盘,使用分布式minio自动引入纠删码功能
-
- 如果有4个节点,即便2个节点宕机仍然可用,但是无法写入,需要N/2+1个节点才可以写
-
- minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write
2.2.2 运行分布式minio
启动一个分布式minio实例,你只需要把硬盘位置做为参数传给 minio server 命令即可,然后,你需要在其他所有的节点运行同样的命令
- 分布式minio里所有的节点需要有同样的access秘钥和secret秘钥,这样节点才能简历连接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥设置成环境变量
- 分布式minio使用的磁盘必须是干净的,里面没有数据
- 分布式minio里面的节点时间差不能超过2秒,你可以使用NTP来保证时间一致
3个节点,每个节点2块盘
- minio 直接启动 略
- docker 模式启动集群
直接启动
docker 安装minio集群
- docker 部署minio集群
-
- 准备3个节点,每个节点创建2个挂载点,由于集群模式下不能使用根磁盘,这里使用docker卷作为挂载点。
- 3节点的集群,故障一个节点时不影响对集群的读写操作。
- 所有节点配置主机名解析
- 创建数据卷
-
- docker volume create minio-data1
- docker volume create minio-data2
- 启动集群
-
-
【docker安装minIO集群(一)】_一枚小爪哇的博客-CSDN博客_docker minio 集群
3 minio 客户端
3.1 客户端安装
- wget https://dl.min.io/client/mc/release/linux-amd64/mc
- chmod +x mc
- mv mv /usr/local/sbin
3.1 客户端配置
mc 将所有的配置信息都存储在 ~/.mc/config.json 文件中
-
- mc config host remove minio-server
minio 配置通知事件
配置完成后可将通知事件绑定在某个桶上,自己选择通知策略
minio 创建用户并设置权限
给用户绑定权限策略