MinIO是什么?

Posted lianaozhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MinIO是什么?相关的知识,希望对你有一定的参考价值。

基本介绍

什么是对象存储

对象存储服务OSS(Object Storage Service)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。

对象存储最大的优势就在于它可以存储大容量的非结构化数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。对于大多数的企业来说,这可以说是最为理想的存储媒介了。

对于业务已在公有云上的企业来说,使⽤公有云提供的 OSS 服务,可以很好的节省存储的成本,且⼀般都提供易接⼊的 SDK,以阿⾥云的OSS 服务为例,在存储介质的上层封装可标注的 RESTful API 接⼝,使⽤起来⼗分⽅便。

但是对于⼀些没有选择业务上云或者想要下云的企业来说,要使⽤公有云的 OSS,在公⽹带宽⽅⾯就需要有⼀定的投⼊,毕竟需要通过公⽹传输,带宽太⼩,传输速度就会慢,且在传输过程中数据的安全性和完整性也有损失的风险,⾛专线的费⽤⼜⼗分昂贵,不实在。

这种情况下,MinIO 就是⼀个不错的选择,⿇雀虽⼩,五脏俱全,企业可以以此快速构建⾃⼰内部的对象存储服务。

什么是 MinIO

Minio 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

Minio 是一个非常轻量的服务,可以很简单的和其他应用的结合使用,类似 NodeJS, Redis 或者 mysql。Minio 不仅提供了服务器、Web 访问、客户端,还提供了 Docker 安装,各种语言的 SDK、实例、实战秘籍等等,支持分布式部署。

minio的作用

存储对象在minio服务器就不用把数据存储在当前的服务器内存中,减轻了服务器的压力,提供可用性.

MinIO的特点

  • 高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读、35GG/s的写速率

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

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

  • Amazon S3兼容:Minio使用Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器。

  • 可对接后端存储: 除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储。

  • SDK支持: 基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持

  • Lambda计算: Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等数据库。

  • 有操作页面

  • 功能简单: 这一设计原则让MinIO不容易出错、更快启动

  • 支持纠删码:MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据

MinIO快速⼊门案例

springboot整合MinIO入门案例

Mac 通过docker安装MinIO

前言

  • 最近MeterSphere出了新版本,新版本架构是这样的(如下图)。采用了SpringCloud+SpringBoot 微服务的架构的。跟以往相比,多了一个新的组件,MinIO。也就是分布式存储。

关于MinIO

1、MinIO是什么?

官方解释:MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

2、MinIO有哪些优势?

2.1 开发文档全面

MinIO作为一款基于Golang 编程语言开发的一款高性能的分布式式存储方案的开源项目,有十分完善的官方文档。。
官网文档地址:英文官网 中文官网

2.2 高性能

MinIO号称是目前速度最快的对象存储服务器。在标准硬件上,对象存储的读/写速度最高可以高达183 GB/s和171 GB/s。对象存储可以作为主存储层,用来处理Spark、Presto、TensorFlow、H2O.ai等各种复杂工作负载以及成为Hadoop HDFS的替代品。
MinIO用作云原生应用程序的主要存储,和传统对象存储相比,云原生应用程序需要更高的吞吐量和更低的延迟。而这些都是MinIO能够达成的性能指标。

2.3 支持全面

目前MinIO支持市面主流的开发语言并且可以通过SDK快速集成快速集成使用。

2.4 AWS S3标准兼容

亚马逊云的 S3 API(接口协议) 是在全球范围内达到共识的对象存储的协议,是全世界内大家都认可的标准。MinIO 在很早的时候就采用了 S3 兼容协议,并且MinIO 是第一个支持 S3 Select 的产品. MinIO对其兼容性的全面性感到自豪, 并且得到了 750多个组织的认同, 包括Microsoft Azure使用MinIO的S3网关 - 这一指标超过其他同类产品的总和。

2.5 安装部署非常简单

MinIO安装部署非常简单。MinIO简单特性减少了出错的机会,节约了安装部署的时间,提供了可靠性,同时简单性又是性能的基础。Linux环境下只需下载一个二进制文件然后执行,即可在几分钟内完成安装和配置MinIO。配置选项和变体的数量保持在最低限度,这样让失败的配置概率降低到几乎接近于0的水平。MinIO升级是通过一个简单命令完成的,这个命令可以无中断的完成MinIO的升级工作,并且不需要停机即可完成升级操作,大大降低总使用和运维成本。

2.6 开放全部源代码 + 企业级支持

MinIO 基于Apache V2 license 100% 开放源代码 。这就意味着 MinIO的用户能够自动的、无限制、自由免费使用和集成MinIO、自由的创新和创造、 自由的去修改、自由的再次发行新的版本和软件. 确实, MinIO 强有力的支持和驱动了很多世界500强的企业。此外,其部署的多样性和专业性提供了其他软件无法比拟的优势。

2.7 容器化集成方便

MinIO提供了与k8s、etcd、docker等主流容器化技术深度集成方案。

2.8 管理界面的支持

MinIO服务安装后,可以直接通过浏览器登录系统,完成文件夹、文件的管理。非常方便使用。

MinIO安装

Linux下安装MinIO

参考:http://docs.minio.org.cn/docs/master/minio-docker-quickstart-guide

# 下载安装包
wget https://dl.min.io/server/minio/release/linux-amd64/minio#
运行命令chmod +x minio
#启动 ./minio server /usr/software/minio/data
# 后台进程启动nohup ./minio server /usr/software/minio/data  >  /usr/software/minio/minio.log 2>&1 &

Widows下安装MinIO

参考:http://docs.minio.org.cn/docs/master/minio-docker-quickstart-guide
1、直接安装启动
下载安装包
下载地址:https://dl.minio.io/server/minio/release/windows-amd64/minio.exe
管理员身份启用cmd窗口,然后定位到minio.exe文件夹执行如下命令:

 .\\minio.exe server D:\\file\\minio    ## D:\\file\\minio 为存储文件的目录

2、后台服务安装

  • 下载地址:https://github.com/winsw/winsw/releases
  • 将WinSW.exe复制到自己指定的目录,重命名为minio-server.exe
  • 同目录下创建minio-server.xml。特别注意,xml和exe必须同名
  • 然后配置minio-server.xml文件,内容如下:
<service>    
  <id>minio-server</id>   
  <name>minio-server</name>    
  <description>minio文件存储服务/description>    
    <!-- 可设置环境变量 -->   
    <env name="HOME" value="%BASE%"/>    
    <executable>%BASE%\\minio.exe</executable>   
    <arguments>server "%BASE%\\data"</arguments>   
    <!-- <logmode>rotate</logmode> -->   
    <logpath>%BASE%\\logs</logpath>    
    <log mode="roll-by-size-time">      
      <sizeThreshold>10240</sizeThreshold>     
      <pattern>yyyyMMdd</pattern>      
      <autoRollAtTime>00:00:00</autoRollAtTime>      
      <zipOlderThanNumDays>5</zipOlderThanNumDays>     
      <zipDateFormat>yyyyMMdd</zipDateFormat>    
    </log>
  </service>
  • 使用cmd命令 minio-server.exe install 安装服务
  • 安装完后,去服务中启动服务。启动成功就可以正常使用minio啦
  • 可以使用 minio-server.exe uninstall 来卸载服务

安装成功后,浏览器登录访问http://127.0.0.1:9000
如果浏览器出现如下界面,表示安装成功。然后使用默认登录名和密码 均为 minioadmin。为了安全考虑后期可再去修改。

注意:默认情况下,MinIO 使用端口9000来侦听传入的连接。如果你的平台默认阻止了该端口,则需要启用对该端口的访问。

Mac下 Docker 安装

1、 先安装本地的docker环境
参考地址:https://www.docker.com/products/docker-desktop/ mac 有一个docker 的管理页面

2、安装MinIO
参考地址:https://blog.csdn.net/weixin_43888891/article/details/122021704

  • 查询镜像
docker search minIO
  • 下载镜像
docker pull minio/minio
  • 启动服务
docker run -p 9000:9000 -p 9090:9090 \\
--name minio \\
-d --restart=always \\
-e "MINIO_ACCESS_KEY=minioadmin" \\
-e "MINIO_SECRET_KEY=minioadmin" \\
-v /opt/metersphere/data/minio:/data \\
minio/minio server \\
/data --console-address ":9090" -address ":9000"

:::success

  • 这里的 \\ 指的是命令还没有输入完,还需要继续输入命令,先不要执行的意思。
  • 这里的9090端口指的是minio的客户端端口。虽然设置9090,但是我们在访问9000的时候,他也会自动跳到9090。
  • 9000端口是minio的服务端端口,我们程序在连接minio的时候,就是通过这个端口来连接的。
  • -v就是docker run当中的挂载,这里的/mydata/minio/data:/data意思就是将容器的/data目录和宿主机的/mydata/minio/data目录做映射,这样我们想要查看容器的文件的时候,就不需要看容器当中的文件了。
    • 注意在执行命令的时候,他是会自动在宿主机当中创建目录的。我们不需要手动创建。
    • minio所上传的文件默认都是存储在容器的data目录下的!
    • 假如删除容器了宿主机当中挂载的目录是不会删除的。假如没有使用-v挂载目录,那他在宿主机的存储位置的文件会直接删除的。
    • 宿主机的挂载目录一定是根目录,如果是相对路径会有问题。还有容器当中的目录也是必须是绝对路径(根路径就是带/的)。
    • 所谓的挂载其实就是将容器目录和宿主机目录进行绑定了,操作宿主机目录,容器目录也会变化,操作容器目录,宿主机目录也会变化。这样做的目的 可以间接理解为就是数据持久化,防止容器误删,导致数据丢失的情况。
  • MINIO_ACCESS_KEY:账号 MINIO_SECRET_KEY:密码 (正常账号应该不低于3位,密码不低于8位,不然容器会启动不成功)
  • –console-address 指定客户端端口
  • -d --restart=always 代表重启linux的时候容器自动启动
  • –name minio 容器名称
    :::

3、查看服务状态

docker ps 

4、访问 http://localhost:9000 默认密码:minioadmin/minioadmin

以上是关于MinIO是什么?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot + minio 实现高性能存储服务,So Easy~!

Minio基本使用(Java)

minio简单安装与使用

MinIO一小时搭建自己的云存储服务!(Java版)

Java实现minio文件服务web在线解压上传工具类

Java实现minio文件服务web在线解压上传工具类