1 MinIO介绍
官网:https://min.io/
官方示例:https://gitcode.net/mirrors/minio/minio-java/-/tree/master
下载(国内加速镜像):https://dl.min.io/
MinIO是一个分布式文件存储系统,基于Apache License V2.0协议开发,Go语言编写。完全兼容Amazon S3。易于使用、快速与其他应用结合。为海量数据存储、人工智能、大数据分析而设计。
优点:
- 高性能 2. 可扩展性 3. 云原生支持 4. 代码开源
特性:
- 纠删编码 2. 提供bit rot保护 3.数据加密保护 4.连续复制 5.WORM防篡改 6. 全局统一性 7.多云网关
2 环境搭建
2.1 单机
- 下载MinIO
地址-1:https://dl.min.io/ (建议) (server ==> minio ==> release ==> linux-amd64 ==> minio)
地址-2:https://min.io/download#/linux (国外镜像,很慢)

- 部署MinIO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| mkdir -p /data/minio/ cd /data/minio/
vim /data/minio/start.sh
export MINIO_ACCESS_KEY=admin export MINIO_SECRET_KEY=minio123456 /data/minio/minio server /data/minio/ > /data/minio/minio.log
vim /data/minio/stop.sh
ps -ef | grep minio | grep -v 'grep' | awk '{print $2}'| xargs kill -9 if $? != 0;then echo "minio service stop failed." exit 1 fi
vim /usr/lib/systemd/system/minio.service
[Unit] Description=Minio service Documentation=https://docs.minio.io/ [Service] WorkingDirectory=/data/minio/ ExecStart=/data/minio/start.sh ExecStop=/data/minio/stop.sh Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
chmod +x /usr/lib/systemd/system/minio.service && chmod +x /data/minio/minio && chmod +x /data/minio/start.sh && chmod +x /data/minio/stop.sh
systemctl daemon-reload
systemctl start minio
systemctl enable minio
ps -ef|grep minio
|
- 使用
浏览器访问地址:http://ip:9000 (登录输入之前配置的 access_key 和 secret_key)

2.2 集群
2.2.1 系统环境
Linux(CentOS 7、IP:192.168.61.142、192.168.61.143)
集群部署方式分为以下两种:
直接部署(未分组、不支持集群扩容)
分组扩容部署(支持 MinIO 官方方式扩容)【建议】
2.2.2 挂载新硬盘
MinIO在集群部署时,数据目录所对应的要求是一块物理盘,启动时MinIO会去格式化硬盘,不能是系统盘,若不然 会提示错误,所以系统预装没有新硬盘的情况下,需要执行系统挂载新硬盘操作。
2.2.2.1 添加硬盘
虚拟机关机



查看设备挂载情况,开启虚拟机

2.2.2.2 新硬盘分区

2.2.2.3 分区格式化
1 2 3 4
| mkfs -t ext4 /dev/sdb1 mkfs -t ext4 /dev/sdb2 mkfs -t ext4 /dev/sdb3 mkfs -t ext4 /dev/sdb4
|


2.2.2.4 挂载硬盘目录
1 2 3 4 5 6 7
| mount /dev/sdb1 /data/minio/data1 mount /dev/sdb2 /data/minio/data2 mount /dev/sdb3 /data/minio/data3 mount /dev/sdb4 /data/minio/data4
lsblk -f
|

2.2.2.5 设置自动挂载

1 2 3 4 5 6 7 8 9 10
| vim /etc/fstab
/dev/sdb1 /data/minio/data1/ ext4 defaults 0 0 /dev/sdb2 /data/minio/data2/ ext4 defaults 0 0 /dev/sdb3 /data/minio/data3/ ext4 defaults 0 0 /dev/sdb4 /data/minio/data4/ ext4 defaults 0 0
|

2.2.3 下载MinIO
同单机一样
2.2.4 安装部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
mkdir -p /data/minio/{data1,data2,data3,data4}
mkdir -p /etc/minioconfig
cd /data/minio/
vim /data/minio/start.sh
export MINIO_ACCESS_KEY=admin export MINIO_SECRET_KEY=minio123456 /data/minio/minio server --config-dir /etc/minioconfig \ --address "192.168.61.142:9000" \ http://192.168.61.{142...143}/data/minio/data{1...4}
export MINIO_ACCESS_KEY=admin export MINIO_SECRET_KEY=minio123456 /data/minio/minio server --config-dir /etc/minioconfig \ --address "192.168.61.143:9000" \ http://192.168.61.{142...143}/data/minio/data{1...4}
vim /data/minio/stop.sh
ps -ef | grep minio | grep -v 'grep' | awk '{print $2}'| xargs kill -9 if $? != 0;then echo "minio service stop failed." exit 1 fi
vim /usr/lib/systemd/system/minio.service
[Unit] Description=Minio service Documentation=https://docs.minio.io/ [Service] WorkingDirectory=/data/minio/ ExecStart=/data/minio/start.sh ExecStop=/data/minio/stop.sh Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
chmod +x /usr/lib/systemd/system/minio.service && chmod +x /data/minio/minio && chmod +x /data/minio/start.sh && chmod +x /data/minio/stop.sh
systemctl daemon-reload
systemctl start minio
systemctl enable minio
systemctl status minio.service -l
|
2.2.5 MinIO使用
通过任意节点的ip都可以访问。
备注:实际场景中,如果想要实现对各个节点的均衡访问,还可以安装配置 Nginx 实现负载均衡,通过 Nginx 负载均衡进行反向代理,统一一个地址进行转发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| yum install epel-release -y yum install nginx -y systemctl start nginx systemctl status nginx systemctl enable nginx
vim /etc/nginx/conf.d/minio.conf
upstream minio_api { server 192.168.61.142:9000; server 192.168.61.143:9000; } upstream minio_console { server 192.168.61.142:9001; server 192.168.61.143:9001; } server{ listen 19000; server_name 192.168.61.142; ignore_invalid_headers off; client_max_body_size 0; proxy_buffering off; location / { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 300; proxy_http_version 1.1; chunked_transfer_encoding off; proxy_ignore_client_abort on; proxy_pass http://minio_api; } }
server{ listen 19001; server_name 192.168.61.142; ignore_invalid_headers off; client_max_body_size 0; proxy_buffering off; location / { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 300; proxy_http_version 1.1; chunked_transfer_encoding off; proxy_ignore_client_abort on; proxy_pass http://minio_console; } }
nginx -t nginx -s reload
|
2.3 客户端操作
2.3.1 概述
MinIO Client 简称 mc,是 MinIO 服务器的客户端,对 ls,cat,cp,mirror,diff,find 等 UNIX 命令提供了一种替代方案,它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4),常见 mc 指令:
| 指令 |
说明 |
指令 |
说明 |
| ls |
列出文件和文件夹 |
rm |
删除文件和对象 |
| mb |
创建一个存储桶或文件夹 |
events |
管理对象通知 |
| cat |
显示文件和对象内容 |
watch |
监听文件和对象的事件 |
| pipe |
将一个STDIN重定向到一个对象或者文件或者STDOUT |
policy |
管理访问策略 |
| share |
生成用于共享的URL |
session |
为cp命令管理保存的会话 |
| cp |
拷贝文件和对象 |
config |
管理mc配置文件 |
| mirror |
给存储桶和文件夹做镜像 |
update |
检查软件更新 |
| find |
基于参数查找文件 |
version |
输出版本信息 |
| diff |
对两个文件夹或者存储桶比较差异 |
|
|
2.3.2 下载mc
地址:https://dl.min.io/ (client ==> mc ==> release ==> linux-amd64 ==> mc)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
mkdir -p /data/minio/mc cd /data/minio/mc
chmod +x mc
./mc -h
./mc config host add q1 http://192.168.61.142:9000 admin minio123456 ./mc config host ls
./mc ls q1
./mc admin info q1
|