「MinIO快速入门」

官网:MinIO | S3 Compatible Storage for AI 中文:http://minio.org.cn/

MinIO 开始

MinIO 是一款高性能、开源的对象存储服务器。

一、主要特点

  1. 高性能
    • MinIO 采用了分布式架构,能够高效地处理大量数据的存储和访问请求。它针对多核处理器进行了优化,充分发挥硬件性能,实现快速的数据读写操作。
    • 支持大文件上传和下载,并且在高并发场景下仍能保持稳定的性能表现。
  1. 开源免费
    • 作为开源软件,MinIO 允许用户免费使用、修改和分发其源代码。这使得开发者可以根据自己的需求对其进行定制和扩展,同时也降低了企业的存储成本。
    • 活跃的开源社区为 MinIO 提供了持续的技术支持和更新,确保其功能不断完善和优化。
  1. 兼容性强
    • MinIO 支持多种操作系统,包括 Linux、Windows 和 macOS 等。同时,它还提供了丰富的客户端接口,如 S3 API、SDK 等,可以与各种编程语言和应用程序进行集成。
    • 这使得用户可以在不同的环境中轻松地使用 MinIO 进行数据存储和管理。

二、主要用途

  1. 云存储解决方案
    • 对于企业和个人用户来说,MinIO 可以作为一种可靠的云存储解决方案。它可以部署在本地服务器或云端环境中,提供安全、高效的数据存储服务。
    • 用户可以通过网络随时随地访问存储在 MinIO 中的数据,实现数据的共享和协作。
  1. 大数据存储
    • 随着大数据技术的发展,数据存储需求不断增长。MinIO 可以作为大数据存储平台的一部分,用于存储和管理大规模的数据集。
    • 它支持分布式存储,可以将数据分散存储在多个节点上,提高数据的可靠性和可用性。同时,MinIO 的高性能特点也能够满足大数据分析和处理对存储系统的要求。
  1. 备份和恢复
    • MinIO 可以用于数据备份和恢复。用户可以将重要数据备份到 MinIO 存储中,以防止数据丢失。在需要恢复数据时,可以快速从 MinIO 中获取备份数据。
    • MinIO 还支持版本控制,可以保留数据的多个版本,方便用户进行数据恢复和历史数据查询。
  1. 容器存储
    • 在容器化环境中,MinIO 可以作为容器的持久化存储解决方案。它可以与 Kubernetes 等容器编排平台集成,为容器化应用提供可靠的存储服务。
    • MinIO 的分布式架构和高可用性特点使其能够适应容器环境的动态变化,保证数据的安全性和可靠性。

安装 MinIO

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

chmod +x minio

MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"

启动MinIO

MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"或者 ./minio server /mnt/data --console-address ":9001"

后台启动(&结束)

./minio server /mnt/data --console-address ":9001" &

查询MinIO进程

ps -ef | grep minio

后台启动的MinIO如何关闭

kill pid

前台启动的MinIO如果关闭

ctrl + c

使用Docker启动运行MinIO

Docker安装:

安装前查看系统是否已经安装了Docker:yum list installed | grep docker

卸载Docker:yum remove docker.x86_64 -y yum remove docker-client.x86_64 -y yum remove docker-common.x86_64 -y

安装Docker:yum install docker -y 注:这种方式安装的Docker版本比较旧;(查看版本:docker -v)

安装最新版的Docker:

yum install yum-utils -y

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

查看是否安装成功:

docker --version(docker version,docker -v)

Docker启动:

  • 启动:systemctl start docker 或者 service docker start
  • 停止:systemctl stop docker 或者 service docker stop
  • 重启:systemctl restart docker 或者 service docker restart
  • 检查Docker进程的运行状态:systemctl status docker 或者 service docker status
  • 查看docker进程:ps -ef | grep docker
  • 查看docker系统信息:docker info
  • 查看所有的帮助信息:docker --help
  • 查看某个commond命令的帮助信息:docker commond --help

使用Docker镜像启动MinIO

  • 搜索MinIO镜像:docker search minio
  • 拉取MinIO镜像:docker pull minio/minio
  • 启动MinIO容器:docker run -p 9000:9000 -p 9001:9001 minio/minio server /mnt/docker/data --console-address :9001
  • 查看已安装的镜像:docker images
  • 删除镜像:docker rmi minio/minio

springboot 集成 MinIO

MinioClient 配置

/*** @version v1.0* @author OldGj 2024/10/31* @apiNote minio配置类*/
@Configuration
public class MinIOConfig {@Beanpublic MinioClient minioClient() {return MinioClient.builder().endpoint("http://192.168.66.200:9000").credentials("admin", "password").build();}
}
/*** @version v1.0* @author OldGj 2024/10/31* @apiNote MinIO服务类*/
@Service
public class MinIOService {@Resourceprivate MinioClient minioClient;public void testMinIOClient() {System.out.println(minioClient);}
}

MinioClient的常用API

Bucket 操作

报错: The difference between the request time and the server's time is too large.

解决:Linux 时间同步

yum install ntpdate -y

ntpdate pool.ntp.org

bucketExists()

用于检查指定的存储桶是否存在,返回布尔值,表示存储桶是否存在

    @Testvoid test01() throws Exception {// 用于检查指定的存储桶是否存在,返回布尔值,表示存储桶是否存在boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket("myfile").build());System.out.println("myfile数据桶是否存在:" + exists); // false}
makeBucket()

用于创建一个新的存储桶(bucket),需要指定存储桶的名称;

    @Testvoid test02() throws Exception {// 用于创建一个新的存储桶(bucket),需要指定存储桶的名称minioClient.makeBucket(MakeBucketArgs.builder().bucket("myfile").build());}
listBuckets()

用于列出用户有权访问的所有存储桶,返回存储桶的列表

   @Testvoid test03() throws Exception {// 用于列出用户有权访问的所有存储桶,返回存储桶的列表List<Bucket> buckets = minioClient.listBuckets();buckets.forEach(b -> System.out.println(b.name() + " -- " + b.creationDate()));}
removeBucket()

用于删除一个已存在的存储桶(bucket),删除失败会抛出异常;

    @Testvoid test04() throws Exception {// 用于删除一个已存在的存储桶(bucket),删除失败会抛出异常;minioClient.removeBucket(RemoveBucketArgs.builder().bucket("myfile").build());}
Object 操作
putObject()

用于上传文件到指定的存储桶

@Testvoid test05() throws Exception {File file = new File("C:\\Users\\HX\\Desktop\\图片\\basketall.png");// 用于上传文件到指定的存储桶;ObjectWriteResponse objectWriteResponse = minioClient.putObject(PutObjectArgs.builder().bucket("files").object("test.png").stream(new FileInputStream(file), file.length(), -1).build());System.out.println(objectWriteResponse);}
uploadObject()

用于上传文件到指定的存储桶 -- 直接指定要上传的文件路径

    @Testvoid test05() throws Exception {// 直接指定要上传的文件路径ObjectWriteResponse objectWriteResponse1 = minioClient.uploadObject(UploadObjectArgs.builder().bucket("files").object("test2.jpg").filename("C:\\Users\\HX\\Desktop\\code\\侯子.png").build());System.out.println(objectWriteResponse1);}
statObject()

用于检查指定的对象(文件)的状态

    @Testvoid test06() throws Exception {//用于检查指定的对象(文件)的状态StatObjectResponse files = minioClient.statObject(StatObjectArgs.builder().bucket("files").object("test.png").build());System.out.println(files.size());}
getPresignedObjectUrl()

用于生成一个对象(文件)的签名URL,以便可以通过HTTP访问

    @Testvoid test07() throws Exception {//用于生成一个对象(文件)的签名URL,以便可以通过HTTP访问String url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket("files").object("test.png").expiry(3, TimeUnit.MINUTES) // 3分钟有效.method(Method.GET) // GET方法.build());System.out.println(url);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ | Leetcode C++题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindromeSubseq(string s) {int n s.length();vector<vector<int>> dp(n, vector<int>(n));for (int i n - 1; i > 0; i--) {dp[i][i] 1;char c1 s[i];for (int j i 1; j…

2024年,Rust开发语言,现在怎么样了?

Rust开发语言有着一些其他语言明显的优势&#xff0c;但也充满着争议&#xff0c;难上手、学习陡峭等。 Rust 是由 Mozilla 主导开发的通用、编译型编程语言&#xff0c;2010年首次公开。 在 Stack Overflow 的年度开发者调查报告中&#xff0c;Rust 连续多年被评为“最受喜爱…

【C/C++】模拟实现strlen

学习目标&#xff1a; 使用代码模拟实现strlen。 逻辑&#xff1a; strlen 需要输入一个字符串数组类型的变量&#xff0c;并且返回一个整型类型的数据。strlen 需要计算字符串数组有多少个元素。 代码1&#xff1a;使用计数器 #define _CRT_SECURE_NO_WARNINGS 1 #include&…

LLM | 论文精读 | 地学视觉语言大模型:Towards Vision-Language Geo-Foundation Model: A Survey

论文标题&#xff1a;Towards Vision-Language Geo-Foundation Model: A Survey 作者&#xff1a;Yue Zhou, Litong Feng, Yiping Ke, Xue Jiang, Junchi Yan, Xue Yang, Wayne Zhang 期刊&#xff1a;未提供 DOI&#xff1a;https://arxiv.org/abs/2406.09385 email&#x…

LC:贪心题解

文章目录 376. 摆动序列 376. 摆动序列 题目链接&#xff1a;https://leetcode.cn/problems/wiggle-subsequence/description/ 这个题目自己首先想到的是动态规划解题&#xff0c;贪心解法真的非常妙&#xff0c;参考下面题解&#xff1a;https://leetcode.cn/problems/wiggle…

淘宝商品评价API的获取与应用

在当今数字化时代&#xff0c;电商平台如淘宝已成为消费者购物的重要渠道。对于商家和开发者而言&#xff0c;如何高效地获取并利用商品评价数据&#xff0c;成为了提升产品竞争力和优化用户体验的关键。本文将详细介绍如何使用淘宝开放平台提供的商品评论API来获取这些宝贵的数…

类和对象(中)—— 类的六个默认成员函数

目录 1.类中的默认成员函数 2.构造函数 为什么要有构造函数 什么是构造函数 构造函数做了什么 默认生成的构造函数功能的分析 C11的补救 什么时候自己写构造函数 3.析构函数 为什么要有析构函数 什么是析构函数 析构函数做了什么 默认生成的析构函数功能的分析 什…

Java Executor ScheduledExecutorService 源码

前言 相关系列 《Java & Executor & 目录》《Java & Executor & ScheduledExecutorService & 源码》《Java & Executor & ScheduledExecutorService & 总结》《Java & Executor & ScheduledExecutorService & 问题》 涉及内容 …

[C++]C++知识点总结(Xmind思维导图)

目录 一、C入门基础 二、类和对象 三、C/C内存管理 四、模板 五、C的IO流 六、继承 七、多态 八、C11 九、智能指针 十、类型转换 由于C知识体系过于庞大&#xff0c;分为下面几个部分列出逻辑图&#xff08;有些不完整&#xff0c;后续更新中...&#xff09; 一、C入…

Elasticsearch分词器基础安装

简介 Elasticsearch (ES) 是一个基于 Lucene 的搜索引擎&#xff0c;分词器是其核心组件之一&#xff0c;负责对文本数据进行分析和处理。 1. 文本分析 分词器将输入的文本拆分成一个个单独的词&#xff08;tokens&#xff09;&#xff0c;以便后续的索引和搜索。例如&#x…

EfficientNet-B6模型实现ISIC皮肤镜图像数据集分类

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于opencv答题卡识别判卷】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【G…

扫雷游戏(C语言详解)

扫雷游戏&#xff08;C语言详解&#xff09; 放在最前面的1、前言&#xff08;扫雷游戏的简介&#xff09;2、扫雷游戏的规则&#xff08;简易版&#xff09;3、代码实现&#xff08;3.1&#xff09;提醒一下&#xff1a;( i ) 提醒1&#xff1a;( ii ) 提醒2&#xff1a; &…

影刀RPA自动化按钮参数详解

文章目录 一、基础识别参数1. 文本内容&#xff08;Text&#xff09;2. ID属性3. Name属性4. Class属性 二、高级定位参数1. XPath路径2. CSS选择器3. 图像识别 三、动态等待参数1. 等待超时2. 重试间隔 四、操作参数1. 点击类型2. 点击位置 五、最佳实践1. 按钮定位优先级2. 常…

WPF+MVVM案例实战(十四)- 封装一个自定义消息弹窗控件(下)

文章目录 1、案例效果2、弹窗控件使用1.引入用户控件2、按钮命令实现 3、总结4、源代码获取 1、案例效果 2、弹窗控件使用 1.引入用户控件 打开 Wpf_Examples 项目&#xff0c;在引用中添加用户控件库&#xff0c;在 MainWindow.xaml 界面引用控件库&#xff0c;代码如下&…

C++(类继承、虚函数、多重继承)

类继承 &#xff08;1&#xff09;当创建一个类时&#xff0c;不需要重新编写新的成员变量和成员函数&#xff0c;只需要新建的类继承了一个已有的类的成员。已有的类称为基类或父类&#xff0c;新建的类称为派生类或子类。 &#xff08;2&#xff09;一个类可以有多个…

深度学习基础—循环神经网络(RNN)

引言 从本系列博客开始&#xff0c;我们将来一起学习一下NLP领域的相关基础知识&#xff0c;NLP领域重要的模型是RNN&#xff0c;在此之前&#xff0c;先来了解一些符号的含义。 1.符号定义 &#xff08;1&#xff09;符号定义 假设建立一个能够自动识别句中人名位置的序列模型…

Web测试和APP测试的区别

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 最近听到有些朋友说&#xff0c;移动端要比web端稍微难一些&#xff0c;涉及到的细节笔记要多&#xff0c;有转去做web测试的想法&#xff0c;看看在具体测试的时…

Linux TCP CC状态机

万字详文&#xff1a;TCP 拥塞控制详解 - 知乎bcc/tools/tcpcong.py at master iovisor/bccbcc/tools/tcpcong_example.txt at master iovisor/bcc 1.状态机 2.tcp map 拥塞算法历史 1974年&#xff0c;3次握手被提出&#xff1b;1978年&#xff0c;TCP和IP拆分成TCP/IP&…

视频设备一体化监控运维方案

随着平安城市、雪亮工程等项目建设的号召&#xff0c;视频监控系统的建设如火如荼地开展。无论在公共场所、企业单位、住宅小区、矿山工地还是交通枢纽&#xff0c;视频监控系统已成为保障安全、维护秩序和提升管理效率的重要工具。但由于对视频监控系统中的前端设备&#xff0…

深度数据修复软件哪个好?盘点2024年好用的4个数据恢复工具。

深度数据修复软件可以帮助用户深入存储设备&#xff0c;找回丢失的数据。它们可以有效解决很多场景下的数据丢失问题&#xff0c;如果大家平时会有数据丢失的情况&#xff0c;可以用这几个工具去尝试一些自己进行数据恢复。 1、福昕深度恢复软件 直通车&#xff1a;http://www…