MinIO book

什么是minIO

Minio 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
Minio 是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。Minio 不仅提供了服务器、Web 访问、客户端,还提供了 Docker 安装,各种语言的 SDK、实例、实战秘籍等等,支持分布式部署。

Minio 的特点
1.高性能:Minio 支持一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

2.可扩展:不同 Minio 集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心

3.云原生:容器化、基于 K8S 的编排、多租户支持。

4.Amazon S3 兼容。

5.存储多种后端。

6.SDK 支持:有类似 Java、Python 或 Go 等语言的 sdk 支持。

7.Lambda 计算:Minio 服务器通过其兼容 AWS SNS / SQS 的事件通知服务触发 Lambda 功能。

8.有图形化操作界面

9.功能简单

10.支持纠删码:Minio 使用纠删码、Checksum 来防止硬件错误和静默数据污染。

 

 

 

Minio是什么==>https://www.leixue.com/ask/what-is-minio

MinIO与FastDFS对比==>https://blog.csdn.net/qq_37351027/article/details/124454345

 

下载linux minio

wget https://dl.min.io/server/minio/release/linux-amd64/minio

 

部署

 

启动脚本

#修改用户名密码,默认帐号:密码为minioadmin:minioadmin
export MINIO_ROOT_USER=username
export MINIO_ROOT_PASSWORD=password

#启动,默认端口是9000 , /data/soft/minio/db指定了该目录为工作目录
./minio server  --address :10500 --console-address ":10400" /data/soft/minio/db > minio.log 2>&1 &

#查看日志
tail -f minio.log &

 

 

注意:以前的老版本minio的配置中,配置用户名和密码时,是这两个参数:

MINIO_ACCESS_KEY MINIO_SECRET_KEY

而现在比较新的版本的minio,需要替换成MINIO_ROOT_USERMINIO_ROOT_PASSWORD

并且用户名和密码都是由长度限制的,用户名长度不能小于3,密码不能小于8个字符

 

当然,minio安装完成,以及配置完成后,启动项目的run.sh的时候,如果你设置的用户名和密码长度不够,会有警告提示的,还有就是如果你的配置参数写成以前的旧版本的参数,也会提示你替换成对应的MINIO_ROOT_USERMINIO_ROOT_PASSWORD

--address :10500 --console-address :10400是配置端口,默认minio端口是9000,如果9000端口被占用了,那就加上这一串配置,端口号的冒号之前不需要特意写出ip,当然如果你的ip的动态变化的,而不是静态的话,前边的ip不用写上,当然最好是用静态的ip

--address:10500 指定java 等调用的api端口 , --console-address:10400 指定web界面管理界面端口

 

访问web管理页面

启动成功后, 根据启动日志会看到

WARNING: Detected Linux kernel version older than 4.0.0 release, there are some known potential performance problems with this kernel version. MinIO recommends a minimum of 4.x.x linux kernel version for best performance
MinIO Object Storage Server
Copyright: 2015-2022 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2022-10-05T14-58-27Z (go1.18.7 linux/amd64)

Status:         1 Online, 0 Offline. 
API: http://192.168.1.201:10500    http://127.0.0.1:10500                         
Console: http://192.168.1.201:10400  http://127.0.0.1:10400             

Documentation: https://min.io/docs/minio/linux/index.html

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ You are running an older version of MinIO released 3 days ago ┃
┃ Update: Run `mc admin update`                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

 

然后会有日志打印信息,然后可以看到minio服务器地址,和控制台信息地址

然后在浏览器中访问地址 http://192.168.1.201:10500 , 输入这个地址后会重定向到控制台登录地址 http://192.168.1.201:10400

 

 

nignx转发

server {
 listen 80;
 server_name example.com;  // 主机名
 location / {
   proxy_set_header Host $http_host;
   proxy_pass http://localhost:9000; // 你的Minio服务器地址
 }
}

 

 

 

遇见异常

 

Couldn't parse the specified URI

这是因为指定的连接端口连到了指定web界面管理界面端口 , 而不是 api端口 , 注意查看启动日志中哪个是api端口 , 如果强制指定的话那就是查看启动命令中的  --console-address:10400 这个参数

io.minio.errors.ErrorResponseException: Couldn't parse the specified URI
	at com.bobo.code.tool.MinIoUtil.init(MinIoUtil.java:49)
	at com.bobo.code.tool.MinIoUtil.main(MinIoUtil.java:27)
Exception in thread "main" error occurred
ErrorResponse(code = InvalidURI, message = Couldn't parse the specified URI, bucketName = bobo, objectName = null, resource = /bobo, requestId = null, hostId = null)

 

Access denied

帐号密码配置错误

io.minio.errors.ErrorResponseException: Access denied
	at com.bobo.code.tool.MinIoUtil.init(MinIoUtil.java:49)
	at com.bobo.code.tool.MinIoUtil.main(MinIoUtil.java:27)
Exception in thread "main" error occurred
ErrorResponse(code = AccessDenied, message = Access denied, bucketName = bobo, objectName = null, resource = /bobo, requestId = 171CAA6331504F48, hostId = null)

 

然后会有日志打印信息,然后可以看到minio服务器地址,和控制台信息地址

然后在浏览器中访问地址

http://192.168.0.131:9002,输入这个地址后会重定向到控制台登录地址http://192.168.0.131:9001/login

 

 

 

 Unsupported OkHttp library found. Must use okhttp >= 4.8.1

minio的版本过高时, 需要更高的okhttp版本支持

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.bobo.code.tool.MinIoTool.init(MinIoTool.java:63)
    at com.bobo.code.tool.MinIoTool.main(MinIoTool.java:32)
Caused by: java.lang.RuntimeException: Unsupported OkHttp library found. Must use okhttp >= 4.8.1
    at io.minio.S3Base.<clinit>(S3Base.java:100)
    ... 2 more
Caused by: java.lang.NoSuchMethodError: kotlin.collections.ArraysKt.copyInto([B[BIII)[B
    at okio.Segment.writeTo(Segment.kt:169)

 

 

 Access Denied

error occurred
ErrorResponse(code = AccessDenied, message = Access Denied., bucketName = test1012, objectName = null, resource = /test1012, requestId = 171D458D840520AE, hostId = 8bf252dd-3523-47f8-87cd-f937f6592ba9)

 

 

 

 

 

 

(四)关于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

 

MinIO文件服务器,从安装到使用==>https://blog.csdn.net/u011174699/article/details/124903036

ErrorResponse(code = AccessDenied, message = Access denied, bucketName = bucket, objectName = null==>https://blog.csdn.net/weixin_56762709/article/details/122698872

 

java官方样例

https://gitee.com/github_8/minio-java (我的样例, clone自官方 https://github.com/minio/minio-java)

https://min.io/docs/minio/linux/developers/java/API.html

 

 

参考

MinIO 介绍使用==>https://www.cnblogs.com/lwqstyle/p/16587503.html

 

java调用

Java之MinIO存储桶和对象API使用$==>https://blog.csdn.net/asdfadafd/article/details/123300564

Java之MinIO存储桶和对象API使用$==>https://www.pudn.com/news/6228c7fe9ddf223e1ad08408.html

 

token凭证

MINIO服务器的临时认证Token(STS)==>https://blog.csdn.net/lwq657359703/article/details/120532105

minio之临时凭证及分享链接的生成和使用(代码篇)==>https://blog.csdn.net/shenyunsese/article/details/125748393

 

 

Minio入门系列【8】JAVA集成Minio之存储桶操作API使用详解==>https://blog.csdn.net/qq_43437874/article/details/120841843

MINIO对象存储服务器的安装与配置使用==>https://www.freesion.com/article/97741128959/

 

 

Java整合minio实现文件预览上传和下载==>https://www.cnblogs.com/wffzk/p/15961335.html

基于minio的多线程分片文件上传-进度条显示==>https://blog.csdn.net/qq_50743124/article/details/126215080

 

posted @ 2022-10-09 12:23  苦涩泪滴  阅读(3545)  评论(0)    收藏  举报