01.minio基本介绍搭建使用

2023-11-06

MinIO 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。

官网:https://min.io/

特点

  • 高性能:作为高性能对象存储,在标准硬件条件下它能达到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使用纠删码,在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据

相关名词概念

Object:存储到minio的基本对象,如文件,字节流等。

Bucket(桶):用来存储Object的逻辑空间。每个Bucket之间的数据是互相隔离的。对于客户端而言,就相当于存放文件的顶层文件夹。

Drlve(驱动器):存储数据的磁盘,在MinIO启动时,以参数的方式传入。MinIO中所有的对象数据都会存在Drive里。

Set:即一组 Drive的集合,分布式部署根据集群规模自动划分一个或者多个Set,每个Set中的Drive 分布在不同位置。一个对象存储在一个Set上。

环境部署

服务端下载地址:https://dl.min.io/server/minio/release/

版本更新日志:https://github.com/minio/minio/releases

mc是客户端,提供了类似 unix 的命令去操作服务端,从https://dl.min.io/client/mc/release/按需下载

首先下载minio服务端,进入上面的地址,根据系统版本按需选择需要下载的服务端,minio是linux需要的,minio.exe是windows需要的。

服务搭建的方式有以下三种,本文只说前两种。

  • 单节点单驱动器

  • 单节点多驱动器

  • 多节点多驱动器(分布式)

Linux搭建

这里展示单节点单驱动器的做法,然后部署成systemctl管理的服务。

先创建目录minio-server

mkdir minio-server

将下好的minio文件放进去,

进入目录创建run.bat文件

vim run.sh

写入启动minio命令

#!/bin/bash
#设置登录账号和密码,控制台登录和api调用都是同一个
export MINIO_ROOT_USER=admin
#密码最短9位
export MINIO_ROOT_PASSWORD=930926134
#命令启动,这里是在后台运行,9001是api对应端口,9000是控制台页面对应端口,host是127.0.0.1,日志输出在当前目录下minio.log,数据是保存当前目录的data目录下
nohup ./minio server
--address ":9001"
--console-address ":9000"
./data >./minio.log 2>&1 & \

增加可执行权限

chmod +x run.sh

到这里可以先 ./run.sh 运行试试看,是否正常启动

启动后输出日志和创建了data目录

部署成服务,先创建minio.service

cd /etc/systemd/system/
vim minio.service

写入相关设置参数

[Unit]
Description=Minio service
Documentation=https://docs.minio.io/

[Service]
Type=forking
WorkingDirectory=/root/application/minio-2022-11-18/
ExecStart=/root/application/minio-2022-11-18/run.sh
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

[Unit]
Description=minio server
Documentation=minio
After=network.target remote-fs.target nss-lookup.target

刷新配置

systemctl daemon-reload

然后就可以通过systemctl来管理minio了

Windows搭建

这里展示单节点多驱动器的做法,先在minio.exe所在目录创建startMinio.bat文件,写入以下内容,和linux的启动命令差不多,这里指定了两个目录作为两个驱动器

set MINIO_ROOT_USER=admin
set MINIO_ROOT_PASSWORD=123456789
minio.exe server --console-address :9090 --address :9000 D:/minioData/data1 D:/minioData/data2

双击bat脚本启动后会打印一些日志,窗口不能关闭,相当于这就是服务了

现在本地浏览器访问 http://127.0.0.1:9090 输入账号密码即可进入控制台界面,控制台的操作可以自行研究,因为是可视化界面操作,比较简单,就不过多描述了。

具体使用

这里以java为例,包括后续都使用java作为开发语言。

minio的使用还是比较简单的,先导入minio的客户端依赖

// maven
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.4.6</version>
</dependency>

// gradle
implementation 'io.minio:minio:8.4.6'

然后如下创建一个连接minio服务的客户端实例就可以开始操作了

import io.minio.*;

public class FileUploader {
  public static void main(String[] args) {
    try {
      // 创建客户端
      MinioClient minioClient =
          MinioClient.builder()
        // api地址
              .endpoint("http://127.0.0.1:9000")
        // 前面设置的账号密码
              .credentials("admin", "123456789")
              .build();

      // 检查桶是否存在
      boolean found =
          minioClient.bucketExists(BucketExistsArgs.builder().bucket("testdir").build());
      if (!found) {
        // 创建桶
        minioClient.makeBucket(MakeBucketArgs.builder().bucket("testdir").build());
      }

      System.out.println("开始你的操作");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

这里只举例了验证桶存在与否和创建桶的方法,桶就相当于文件夹,其他方法可以参考官方API文档:https://min.io/docs/minio/linux/developers/java/API.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

01.minio基本介绍搭建使用 的相关文章

  • ios-消息中心 NSNotificationCenter 的介绍

    1 通知中心概述 通知中心实际上是在程序内部提供了消息广播的一种机制 通知中心不能在进程间进行通信 实际上就是一个二传手 把接收到的消息 根据内部的一个消息转发表 来将消息转发给需要的对象 通知中心是基于观察者模式的 它允许注册 删除观察者

随机推荐

  • C++17入门经典

    C 17入门经典 注意 第1章 基本概念 第2章 基本数据类型 第3章 处理基本数据类型 第4章 决策 第5章 数组和循环 第6章 指针和引用 第7章 操作字符串 第8章 定义函数 第9章 函数模板 第10章 程序文件和预处理指令 第11章
  • python 修饰器 参数_Python修饰器讲解

    转自 http www cnblogs com rollenholt archive 2012 05 02 2479833 html 文章先由stackoverflow上面的一个问题引起吧 如果使用如下的代码 makebold makeit
  • 语义分割--PANet和Understanding Convolution for Semantic Segmentation

    语义分割 PAN Pyramid Attention Network for Semantic Segmentation FCN作为backbone的结构对小型目标预测不佳 论文认为这存在两个挑战 物体因为多尺度的原因 造成难以分类 针对这
  • J2EE规范技术

    原文 http blog csdn net erikxu archive 2004 12 07 208170 aspx J2EE的13种核心技术 1 JDBC Java Data Base Connectivity java数据库连接 是一
  • Unity3D 中使用OnTiggerEnter遇到的不触发问题

    移动GameObject 绑定BoxCollider Istrigger选中 固定GameObject 绑定BoxCollider 刚体属性 IsKinematic选中 此种情况下 移动GameObject中的OnTriggerEnter
  • 数据结构(1)前言

    1 学习数据结构前 需要掌握结构体和指针的使用 需要了解typedef这个关键字 对这部分知识欠缺的可以查看 C语言结构体详解 何为指针 与数组名有什么区别 2 作为一名想成为嵌入式软件工程师的人而言 很多像电气工程 电子信息等专业的人在大
  • Windows11 文件选择打开方式时卡死 解决

    发生的现象 在 打开方式 窗口的地址栏粘贴应用的地址 gt 打开方式界面卡死 完整步骤 左键点击打开epub文件 gt 跳出 寻找一个应用以打开此 epub文件 gt 选择 在电脑上选择应用 gt 弹出 打开方式 窗口 gt 在 打开方式
  • ❤ 15个基于Vue3.0全家桶的优秀开源项目

    15个基于Vue3 0全家桶的优秀开源项目 Vue Admin Better github https github com chuzhixin vue admin better vue admin better 对比其他来源 admin
  • 雨停了,我将雨伞收起

    天空中已有阳光从厚重的云层间隙射向大地 我将手中的雨伞收起 伞面上留存着的雨滴正沿着伞面的褶皱流下打在地上 我望向远方 一辆汽车沿着自己的轨迹行驶 路边小坑中的积水在车轮的驱赶下纷纷跳上灌木丛的绿叶寻找庇护 一阵清脆的自行车铃在身后响起 一
  • Android BaseQuickAdapter万能适配器

    RecycleView万能适配器 一导入 implementation com github CymChad BaseRecyclerViewAdapterHelper 2 9 24 implementation com android s
  • spring-kafka并行度concurrency在应用集群部署(多个节点)正确设置,附上Kafka Manager监控效果

    我们都知道kafka有topic的概念 为了能够更好的支持水平扩容 topic又分了很多的Partition 消费者负责消费Partition中的消息 一个Partition只能被一个消费者消费 但是一个消费者可以消费多个partition
  • zotero与Obsidian联动笔记(二):zotero拖拽highlights的格式修改

    文章目录 zotero拖拽highlights的格式修改 zotero拖拽highlights的格式修改 方法 两种格式的文本 p highlight quotes true citation comment p blockquote hi
  • unity 3D RPG教程(一)

    目录 声明 1 Create Project 2 Build Level 3 PolyBrush 发挥创意构建场景 4 Navigation 智能导航地图烘焙 5 MouseManager 鼠标控制人物移动 声明 本教程学习均来自U3D中文
  • mysql中ddl语句有哪些_什么是 DDL 语言?其中包括哪些语句?

    展开全部 DDL一般指数据定义语32313133353236313431303231363533e4b893e5b19e31333431373937言 数据库模式定义语言DDL Data Definition Language 是用于描述数
  • 华为OD机试 - 跳格子游戏(Java)

    题目描述 地上共有N个格子 你需要跳完地上所有的格子 但是格子间是有强依赖关系的 跳完前一个格子后 后续的格子才会被开启 格子间的依赖关系由多组steps数组给出 steps 0 表示前一个格子 steps 1 表示steps 0 可以开启
  • C++(14):函数返回类型auto推导

    C 11可以通过结合auto和decltype来动态的声明函数的返回值类型 include
  • plt.style.use设置背景样式

    利用matplotlib绘图设置背景 使用到plt style use 时 对这个参数做一下小结 matplotlib 使用某种样式 plt style use 参数可以是一个 URL 或者路径 指向自己定义的 mplstyle 文件 可以
  • 翁凯c语言作业8-3

    include
  • Vue初始化在HBuilderx中快速搭建

    HBuilderx快速新建VUE项目 一 安装HBuilderx开发工具 官网 HBuilderx HBuilderXH是HTML的第一个字母 Builder是builder X是HBuilder的下一个版本 我们也被称为HX HBuild
  • 01.minio基本介绍搭建使用

    MinIO 是一款基于 Go 语言的高性能 可扩展 云原生支持 操作简单 开源的分布式对象存储产品 官网 https min io 特点 高性能 作为高性能对象存储 在标准硬件条件下它能达到55GB s的读 35GG s的写速率 可扩容 不