minio分布式文件存储
MinIO是建立在云原生的基础上,有纠删码、分布式和共享存储这些特性。
MinIO专注于并且只专注于存储,而且做的还不错。它可以通过编排平台复制一个MinIO实例就实现了水平扩展。
MinIo部署简单,启动快,amd,arm都可以正常运行,原生支持k8s docker,单数据节点故障,不影响其他节点
读写速度极快。MinIO号称是世界上速度最快的对象存储服务器。在标准硬件上,minio对象存储的读/写速度最高可以达到183 GB/s和171 GB/s
版本下载
所有历史版本下载地址⬅ (opens new window)
minio7
RELEASE.2021-06-17T00-10-46Z (opens new window)
# 单节点部署配置
# dokcer安装minio服务
密码不能过于简单,否则无法启动
mkdir -p /data
docker run -p 9000:9000 -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=adminPassword minio/minio server /data # 启动容器
2
# Centos7部署minio服务
- 版本选择
RELEASE.2021-06-17T00-10-46Z (opens new window)
版本选择:RELEASE.2021-06-17T00-10-46Z
[root@manage-01 bin]# ./minio -v
minio version RELEASE.2021-06-17T00-10-46Z
- 配置工作目录
下载上传的RELEASE.2021-06-17T00-10-46Z 二进制文件到bin目录下,重命名,添加执行权限
mkdir -p /data/minio/{data,logs,bin,config} && cd /data/minio/bin #集群模式需要多创建一个config目录
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.2021-06-17T00-10-46Z
mv minio.RELEASE.2021-06-17T00-10-46Z minio
chmod 550 minio
2
3
4
# 虚拟机单节点run.sh配置
run.sh 参数名称 | 说明 |
---|---|
--config-dir | 指定配置文件目录,初始为空目录 |
--address | 指定api 地址 |
--console-address | 指定 console 地址,不指定是随机端口 |
添加启动脚本
vi run.sh
#!/bin/bash
minio_home=/data/minio
#浏览器访问的账号和密码,如果是集群各节点要保持一致,密码不能过于简单否则启动失败
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=Yfklife123456
#/data/minio/bin/minio server --address :29200 /data/minio/data &> /data/minio/logs/minio.log 2>&1
${minio_home}/bin/minio server --address :29200 ${minio_home}/data &> ${minio_home}/logs/minio.log 2>&1
2
3
4
5
6
7
8
9
- RELEASE.2021-06-17T00-10-46Z 之后的版本配置,多了一个指定console参数 "--console-address :29200"
#!/bin/bash
#浏览器访问的账号和密码,各节点要保持一致,密码不能过于简单否则启动失败
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=Yfklife123456
/data/minio/bin/minio server --config-dir /data/minio/config --address :29000 --console-address :29200 /data/minio/data &> /data/minio/logs/minio.log 2>&1
2
3
4
5
6
# 虚拟机多节点部署run.sh配置
分布式minio中文官方文档 (opens new window)
集群模式最少数据节点4个,你可以通过修改服务启动端口和目录来起4个以上minio服务,做到集群 节点IP:192.168.14.{26,27,28,29}
run.sh 参数名称 | 说明 |
---|---|
--config-dir | 指定配置文件目录,初始为空目录 |
--address | 指定api 地址 |
--console-address | 指定 console 地址,不指定是随机端口 |
#!/bin/bash
#minio_home=/data/minio
#浏览器访问的账号和密码,如果是集群各节点要保持一致,密码不能过于简单否则启动失败
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=Yfklife123456
/data/minio/bin/minio server --config-dir /data/minio/config --address :29200 http://192.168.14.26:29200/data/minio/data http://192.168.14.27:29200/data/minio/data http://192.168.14.28:29200/data/minio/data http://192.168.14.29:29200/data/minio/data &> /data/minio/logs/minio.log 2>&1
2
3
4
5
6
7
8
- RELEASE.2021-06-17T00-10-46Z 之后的版本配置,多了一个指定console参数 "--console-address :29200"
#!/bin/bash
#minio_home=/data/minio
#浏览器访问的账号和密码,如果是集群各节点要保持一致,密码不能过于简单否则启动失败
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=Yfklife123456
/home/data/minio/bin/minio server --config-dir /home/data/minio/config --address :29000 --console-address :29200 http://192.168.14.26/data/minio/data http://192.168.14.27/data/minio/data http://192.168.14.28/data/minio/data http://192.168.14.29/data/minio/data &> /data/minio/logs/minio.log 2>&1
2
3
4
5
6
7
8
启动服务
chmod 550 run.sh && bash run.sh
访问地址:http://IP:29200/ ,如果是集群,所以随便哪一个节点IP都可以访问
用户密码:minio/Yfklife123456
# 添加systemd 配置文件
vi /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
[Service]
WorkingDirectory=/data/minio
ExecStart=/data/minio/bin/run.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
2
3
4
5
6
7
8
9
10
11
12
13
启动服务
systemctl start minio
systemctl enable minio
2
# 配置用户权限
从RELEASE.2021-06-17T00-10-46Z版本开始之后,minio服务有非常大的改变,包括api接口,如果用jdk接口来区分,之前的版本为 minio7,这个版本之后为minio8, 新版本已经非常接近云产品里面的存储桶,新增了配置规则,用户权限控制等
- 创建用户组
- 创建用户
- 修改用户权限
User =》 【用户名】 =》 POLICIES =》 assign Policies =》 勾选分配权限
# minio客户端mc
minio客户端详细官方文档 (opens new window)
- mc修复节点数据问题,修复MinIO服务器上的磁盘,存储桶和对象
docker run -it --rm --entrypoint=/bin/sh minio/mc
mc config host add minio2 http://192.168.14.26:29200 minio Yfklife123456 --api s3v4 #minio2 服务别名,
mc policy set public minio2/cloud-dev #cloud-dev 是存储桶名
mc admin heal -r minio2 #修复命令
mc admin info minio2
2
3
4
5
如果节点数据不一致,执行命令的时候会发现数据会慢慢的同步到一致
# mc存储桶数据迁移
迁移原因:集群“http://10.12.32.189:29200”使用 mc admin heal -r minio2
命令修复存储桶一直都是提示黄色,或者红色,服务器物理数据出现不一致,删除数据会某些节点不会删除元数据
docker run -it --rm --entrypoint=/bin/sh minio/mc
#端口修改了
mc config host add minio2 http://10.12.32.189:29200 minio Yfklife123456 --api s3v4 #旧环境
mc config host add minio http://10.12.32.189:29000 minio Yfklife123456 --api s3v4 #新环境
mc policy set public minio2/cloud-dev
mc policy set public minio/cloud-dev
#检查集群信息,
mc admin info minio
#拷贝mini2 集群里面的 cloud-dev 存储桶下面的资源到 minio集群下的cloud-dev里(提前创建好 cloud-dev 桶)
mc cp -r minio2/cloud-dev minio/
2
3
4
5
6
7
8
9
10
11
12
13
14
# 服务报错记录:Expected 'storage' API version 'v20', instead found 'v37', please upgrade the servers
- 报错信息如下,影响会导致集群节点数据不一致(比如节点1有数据,节点2,3 数据无法同步),访问web界面有报错提示,升级版本恢复集群状态
minio报错版本:minio-20207 version RELEASE.2020-07-31T03-39-05Z
minio升级后的版本:minio version RELEASE.2021-06-17T00-10-46Z
API: SYSTEM()
Time: 17:00:08 CST 08/12/2022
Error: Marking http://192.168.5.189:29200/minio/storage/home/data/minio/data/v37 temporary offline; caused by Post "http://192.168.5.189:29200/minio/stora
ge/home/data/minio/data/v37/readall?disk-id=&file-path=format.json&volume=.minio.sys": dial tcp 192.168.5.189:29200: connect: connection refused (*fmt.wra
pError)
6: internal/rest/client.go:147:rest.(*Client).Call()
5: cmd/storage-rest-client.go:151:cmd.(*storageRESTClient).call()
4: cmd/storage-rest-client.go:523:cmd.(*storageRESTClient).ReadAll()
3: cmd/format-erasure.go:406:cmd.loadFormatErasure()
2: cmd/format-erasure.go:326:cmd.loadFormatErasureAll.func1()
1: internal/sync/errgroup/errgroup.go:123:errgroup.(*Group).Go.func1()
Unable to read 'format.json' from http://192.168.5.187:29200/home/data/minio/data: Expected 'storage' API version 'v20', instead found 'v37', please upgra
de the servers
2
3
4
5
6
7
8
9
10
11
12
13
# 个人存储下载地址。。。
https://download.yfklife.cn/blog/ops/minio/minio.RELEASE.2021-06-17T00-10-46Z