当前位置: 首页 > web >正文

MinIo快速入门

MinIo核心概念

MinIO 是一个高性能、轻量级的开源对象存储服务器,专为大规模数据存储和分析而设计。它兼容 Amazon S3 API,可以无缝替代 Amazon S3 作为存储后端,并且支持在各种环境中部署,包括物理服务器、虚拟机、容器等。以下是 MinIO 的一些核心概念:

• 对象存储(Object Storage):

• MinIO 是一个高性能的分布式对象存储系统,主要用于存储非结构化数据(如图像、视频、日志文件等)。

• 对象存储采用扁平化结构,通过唯一标识符(如对象键)来访问对象,而不是像传统文件系统那样使用层级目录结构。

• 分布式架构:

• MinIO 可以在分布式环境中运行,通过多节点集群提供高可用性和容错能力。

• 每个节点都是一个独立的 MinIO 服务器实例,它们通过网络进行通信和协作,共同完成数据的存储和访问。

• 纠删码(Erasure Code,EC):

• 纠删码是一种数据保护方法,它将数据分割成片段,生成冗余数据块,并将这些数据块存储在不同的位置,如磁盘、存储节点或其他地理位置。

• MinIO 采用 Reed-Solomon 纠删码实现,将对象拆分成数据块和奇偶校验块,以提高数据的冗余性和可用性。

• 桶(Bucket):

• 桶是 MinIO 中用来存储对象的逻辑空间,相当于顶层文件夹。

• 桶具有唯一标识,可设置元数据和权限。

• 驱动(Drive):

• 驱动是存储数据的磁盘,启动时以参数传入。

• 是数据存储载体,容量有限。

• 集群(Set):

• 集群是一组驱动的集合,分布式部署自动划分,对象存储于其上,驱动数量固定,尽可能分布在不同节点。

• 数据冗余和容错:

• MinIO 的数据冗余系统为2(即存储一个1M的数据对象,实际占用磁盘空间为2M),在任意n/2块disk损坏的情况下依然可以读出数据,这种损坏恢复是基于单个对象的,而不是基于整个存储卷的。

• 简单部署:

• MinIO 的部署简单,一个单一二进制文件即可启动服务,支持多种平台,且可以按zone扩展,支持单个对象最大5TB。

• 兼容性:

• MinIO 兼容 Amazon S3 接口,这意味着用户可以直接使用现有的 S3 工具和应用程序与 MinIO 进行集成,而无需进行修改。

这些核心概念体现了 MinIO 的设计目标,即提供高性能、高可用性、可扩展性以及与现有 S3 应用程序和工具的无缝集成。

MinIo管理页面操作

登录

浏览器搜索http://192.168.10.101:9001
注:一定要确保自己的minio已经启动才能访问进去
在这里插入图片描述
这里的账户密码是在Linux部署MinIo时设置的

登录进来之后的样子如下:
在这里插入图片描述

创建存储桶

点击Buckets

在这里插入图片描述

点击create a Buckets

在这里插入图片描述

输入桶名称 并且选择一些高级选项

在这里插入图片描述

Versioning :版本控制允许在相同的键下保存同一对象的多个版本。

Object Locking:对象锁定防止对象被删除。这是支持保留和法律保留所必需的。只能在创建桶时启用。

Quota :配额限制了桶中的数据量。

上传文件

点击Object Browser

在这里插入图片描述

点击桶

在这里插入图片描述

点击上传

在这里插入图片描述

上传成功以后我们访问一下 看看能不能成功访问

这是我的路径:
http://192.168.10.101:9000/test/3.jfif
但是我们可以看到他报了一个错误 这个错误是权限错误
在这里插入图片描述

修改权限

进入Buckets 在点击我们创建出来的桶

在这里插入图片描述

点击修改权限

在这里插入图片描述
这里有三个权限

• Private(私有):只有文件或项目的拥有者可以访问。

• Public(公开):任何人都可以访问。

• Custom(自定义):用户可以设置特定的访问权限,比如指定哪些用户或组可以访问。
在这里插入图片描述

我们选择自定义权限
{"Statement": [ {"Action" : "s3:GetObject","Effect" : "Allow","Principal" : "*","Resource" : "arn:aws:s3:::test/*"} ],"Version" : "2012-10-17"
}

在这里插入图片描述

再次尝试访问

这次我们就已经成功访问了
在这里插入图片描述

MinIo的JAVA客户端

创建一个MAVEN项目

在这里插入图片描述

导入MAVEN依赖

    <dependencies><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.3</version></dependency></dependencies>

编写测试类

package com.nie;import io.minio.*;
import io.minio.errors.*;import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;public class MinioTest {public static void main(String[] args) {String endpoint = "http://192.168.10.101:9000";String accessKey = "minioadmin";String secretKey = "minioadmin";String bucketName = "my-bucket";MinioClient minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();try {boolean b = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if (!b){minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());String policy= """{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"AWS": ["*"]},"Action": ["s3:GetObject"],"Resource": ["arn:aws:s3:::%s/*"]}]}""".formatted(bucketName);minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(policy).build());}minioClient.uploadObject(UploadObjectArgs.builder().filename("C:\\Users\\Administrator\\Desktop\\822091-20221101170338527-294033862.png").bucket(bucketName).object("822091-20221101170338527-294033862.png").build());System.out.println("上传成功");} catch (Exception e) {e.printStackTrace();}}
}

运行项目后:我们进入MinIo客户端查看

在这里插入图片描述
根据上面的图可以看出我们已经上传成功了

我们接下来测试一下能不能正常访问这种图片

在这里插入图片描述
根据上面的图可以看出我们可以进行正常的访问该图片

http://www.xdnf.cn/news/15523.html

相关文章:

  • JJ20 Final Lap演唱会纪念票根生成工具
  • MIPI DSI (一) MIPI DSI 联盟概述
  • Oracle 学习笔记
  • Docker入门基础
  • GaussDB between的用法
  • 文心一言 4.5 开源深度剖析:中文霸主登场,开源引擎重塑大模型生态
  • 用基础模型构建应用(第九章)AI Engineering: Building Applications with Foundation Models学习笔记
  • # 检测 COM 服务器在线状态
  • python 双下划线开头函数
  • 网络协议和基础通信原理
  • Go泛型完全指南:从基础到实战应用
  • Fluent许可文件安装和配置
  • 车载诊断框架 --- 车载诊断GuideLine
  • 如何集成光栅传感器到FPGA+ARM系统中?
  • 如何更改Blender插件安装位置呢?
  • qt 使用memcpy进行内存拷贝时注意的问题
  • 硬盘爆满不够用?这个免费神器帮你找回50GB硬盘空间
  • EasyExcel实现Excel文件导入导出
  • [Nagios Core] 事件调度 | 检查执行 | 插件与进程
  • 解决Qt中“known incorrect sRGB profile“警告的Photoshop修改方法
  • 如何基于FFMPEG 实现视频推拉流
  • DataWhale AI夏令营 Task2笔记
  • asyncio.Task` 的工作机制与高级应用
  • 嵌入式硬件篇---单稳态多谐施密特电路
  • 【WRFDA实操第一期】服务器中安装 WRFPLUS 和 WRFDA
  • 2025年睿抗机器人开发者大赛CAIP-编程技能赛本科组(省赛)解题报告 | 珂学家
  • Python `WeakValueDictionary` 用法详解
  • Kotlin委托
  • python的小学课外综合管理系统
  • MFC UI大小改变与自适应