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

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.dtcms.com/a/278892.html

相关文章:

  • 13.计算 Python 字符串的字节大小
  • Kubernetes 高级调度 02
  • victoriametrics Operator 安装
  • 雅思练习总结(二十九)
  • 前端docx库实现将html页面导出word
  • AI革命,分布式存储也在革命,全闪化拐点已至
  • 【第一章编辑器开发基础第二节编辑器布局_2GUI中滚动列表(2/4)】
  • Web Socket 学习笔记
  • C# 入门学习教程(三)
  • Python基础语法1:注释与输入输出、变量与简单数据类型、运算符与表达式、条件判断与循环
  • 云原生技术与应用-Containerd容器技术详解
  • MySQL数据库的基础操作
  • AI驱动的软件工程(下):AI辅助的质检与交付
  • nvidia-smi命令参数解释
  • 机器学习(ML)、深度学习(DL)、强化学习(RL):人工智能的三驾马车
  • 外星人电脑Alienware Aurora R11原装出厂OEM预装Windows10系统
  • 自动驾驶数据仓库:时间片合并算法。
  • 【React Native】ScrollView 和 FlatList 组件
  • 基于ASP.NET+SQL Server实现(Web)排球赛事网站
  • Java文件操作
  • PTKQuery
  • 大规模测试自动化测试指南
  • day9 串口通信
  • 如何单独安装设置包域名
  • Kafka Broker源码解析(上篇):存储引擎与网络层设计
  • Java HTTP应用开发:从基础到实战
  • C语言-流程控制
  • 使⽤Pytorch构建⼀个神经⽹络
  • Linux 消息队列接收与处理线程实现
  • 【HTTP版本演变】