一.MinIO客户端以及Client入门指南
MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)
ls 列出文件和文件夹。
mb 创建一个存储桶或一个文件夹。
cat 显示文件和对象内容。
pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT。
share 生成用于共享的URL。
cp 拷贝文件和对象。
mirror 给存储桶和文件夹做镜像。
find 基于参数查找文件。
diff 对两个文件夹或者存储桶比较差异。
rm 删除文件和对象。
events 管理对象通知。
watch 监听文件和对象的事件。
policy 管理访问策略。
session 为cp命令管理保存的会话。
config 管理mc配置文件。
update 检查软件更新。
version 输出版本信息。
二.简介
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL
(一)MinIO的优点
1.Minio 有良好的存储机制
2.Minio 有很好纠删码的算法与擦除编码算法
3.拥有RS code 编码数据恢复原理
4.公司做强做大时,数据的拥有重要性,对数据治理与大数据分析做准备。
5.搭建自己的一套文件系统服务,对文件数据进行安全保护。
6.拥有自己的平台,不限于其他方限制。
(二)MinIO的存储机制
Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据。
(三)纠删码
纠删码是一种恢复丢失和损坏数据的数学算法,目前,纠删码技术在分布式存储系统中的应用主要有三类,阵列纠删码(Array Code: RAID5、RAID6 等)、RS(Reed-Solomon)里德-所罗门类纠删码和 LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码。Erasure Code 是一种编码技术,它可以将 n 份原始数据,增加 m 份数据,并能通过 n+m 份中的任意 n 份数据,还原为原始数据。即如果有任意小于等于 m 份的数据失效,仍然能通过剩下的数据还原出来
三.安装步骤
MinIO是基于Linux服务器下Docker安装的,所以再安装之前请确保 OS和Docker安装成功
(一).查看Linux 版本,安装docker
1.查看Linux版本 执行命令: lsb_release -a
2.Docker安装 在CentOS 7安装docker要求系统为64位、系统内核版本为3.10以上 执行命令查看 uname -r
3.查看是否已经安装了docker;执行命令: yum list installed | grep docker
4.安装docker 执行命令为; yum -y install docker 注 -y表示不询问安装直到安装成功,
5.安装完后再次查看安装列表 执行命令: yum list installed | grep docker
6.启动docker 执行命令: systemctl start docker
7.查看docker 状态 执行命令: systemctl status docker
8.以上说明docker安装成功
(二)基于docker 安装 MinIO
1.从docker上拉取 minio 执行命令为: docker pull minio/minio
2.使用稳定版本docker run -it -p 9000:9000 -d minio/minio server /data 其中 -it 表示运行参数, -p表示暴露端口, -d表示后台运行,data 表示目录存放文件;另外这种安装没有指定ACCESS_KEY和SECRET_KEY进行设置,安装后可以进行echo命令进行设置
3.查看运行镜像 运行命令: docker ps -a
4.通过指定容器id查看安装MinIO的日志信息,其中AccessKey和SecretKey是登录MinIO客户端的用户名和密码
5.输入网址登录minio用户组
6.AccessKey和SecretKey 为日志中的信息
7.新建桶注意事项:minio client不支持有下划线的桶名称(bucket name)命名,支持中划线命名,故所有桶建议中划线或者无中划线命名同时还需要注意大小写
8.点击右下角的 “+”直接上传文件或者新建桶
(三)配置mc命令客户端并设置bucket策略
1.bucket策略有两种设置方式;一种是通过mc设置,一种是直接在浏览器页面设置
2.docker拉取mc客户端镜像 执行命令:docker pull minio/mc
3.运行 执行命令:docker run -it --entrypoint=/bin/sh minio/mc
4.mc config host add minio2 http://宿主机IP:9000 minioadmin minioadmin --api s3v4
5.mc policy set public minio2/testabc //设置访问权限
6.docker attach 容器ID //从新进入容器
浏览器界面设置:
1.登录Minio Browser页面后,点击页面的 “+”号 点击 “Create bucket”
2.点击上传文件
3.设置文件策略,在左侧bucket上编辑Edit Policy,设置访问前缀为或者.*,选择策略为Read Only/Write Only/Read and Write
(四)关于MinIO目录的误区
1.其实对于对象存储来说,其实不区分文件还是目录,所有文件和目录都是对象,即 image/temp/xxx.jpg和image/temp都是对象。他跟操作系统的文件系统的树状结构有本质区别
2.上传文件时,objectName可以是 /temp/xxx.jpg ,可以认为系统自动创建了 temp
3.MinIO不会提供像删除目录,同时删除此目录下的所有文件的操作(即rm -rf image/temp),因此想要把目录下image/temp删除,则需要先把以 image/temp 为前缀的所有文件删除
4.查询多个文件时,可以使用前缀匹配的方式获取,见API文档 listObjects(buckets,prefix,recursive)
(五)MinIO容器的时区与Linux的时区不一致
1.安装utpdate工具 执行命令: yum -y install utp ntpdate
2.设置系统时间与网络时间同步 执行命令: ntpdate cn.pool.ntp.org
3.将系统时间写入硬件时间 执行命令: hwclock --systohc
4.可以根据自己的需求设置时区: 例如设置时区为上海 执行命令: timedatectl set-timezone Asia/Shanghai