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

【开源存储】minio对象存储部署实践

文章目录

    • 一、前言
      • 1、介绍说明
      • 2、部署方式
      • 3、冗余模式
      • 4、约束限制
        • 4.1、规格参数
        • 4.2、API支持
          • a、minio不支持的Amazon S3 Bucket API
          • b、minio不支持的Amazon S3 Object API
    • 二、部署说明
      • 1、软件安装
      • 2、minio单机部署
      • 3、minio分布式部署
        • 3.1、前置条件
        • 3.2、开始运行
        • 3.3、操作说明
    • 三、关于MC(minio client)
      • 1、安装部署
      • 2、连接配置
      • 3、访问操作

一、前言

minio官方入门指南
minio分布式纠删介绍

1、介绍说明

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

  • 数据保护
    分布式minio采用 erasure code来防范多个节点宕机和位衰减bit rot。
    分布式minio至少需要4个节点,使用分布式minio自动引入了纠删码功能。

  • 高可用
    单机minio服务存在单点故障,相反,如果是一个N节点的分布式minio,只要有N/2节点在线,你的数据就是安全的,可以正常进行读取对象操作。不过你需要至少有N/2+1个节点来创建新的对象
    例如,一个8节点的minio集群,每个节点一块盘,就算4个节点宕机,这个集群仍然是可读的,不过你需要5个节点才能写数据。

  • 限制
    分布式minio单租户存在最少4个盘最多16个盘的限制(受限于纠删码)。这种限制确保了minio的简洁,同时仍拥有伸缩性。如果你需要搭建一个多租户环境,你可以轻松的使用编排工具(Kubernetes)来管理多个minio实例。
    注意,只要遵守分布式minio的限制,你可以组合不同的节点和每个节点几块盘。比如,你可以使用2个节点,每个节点4块盘,也可以使用4个节点,每个节点两块盘,诸如此类。

  • 一致性
    minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。

2、部署方式

minio支持单机部署及分布式部署两种方式:

  • 单机部署仅作为网关角色使用,将一个本地目录通过s3协议共享出去,不具备任何冗余功能
  • 分布式部署可以将多块硬盘(甚至在不同服务器上)组成一个对象存储服务,由于硬盘分布在不同服务器上,可以避免单点故障

3、冗余模式

minio只支持纠删码冗余模式,纠删码是一种恢复丢失和损坏数据的数学算法, minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。 这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复。
纠删码的工作原理和RAID或者复制不同,像RAID6可以在损失两块盘的情况下不丢数据,而minio纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且minio纠删码是作用在对象级别,可以一次恢复一个对象,而RAID是作用在卷级别,数据恢复时间很长。 minio对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。minio纠删码的设计目标是为了性能和尽可能的使用硬件加速。

在这里插入图片描述

4、约束限制

4.1、规格参数
规格说明参数说明
最大驱动器数量16
最小驱动器数量4
读仲裁N / 2
写仲裁N / 2+1
Web浏览器上传大小限制5 GB
最大桶数无限额
每桶最大对象数无限额
最大对象大小5 TB
最小对象大小0 B
每次PUT操作的最大对象大小5 GB
每次上传的最大Part数量10,000
Part 大小5 MB到5 GB. 最后一个part可以从0 B到5 GB
每次list parts请求可返回的part最大数量1000
每次list objects请求可返回的object最大数量1000
每次list multipart uploads请求可返回的multipart uploads最大数量1000
4.2、API支持
a、minio不支持的Amazon S3 Bucket API
  • BucketACL (可以用 bucket policies)
  • BucketCORS (所有HTTP方法的所有存储桶都默认启用CORS)
  • BucketLifecycle (minio纠删码不需要)
  • BucketReplication (可以用 mc mirror)
  • BucketVersions, BucketVersioning (可以用 s3git)
  • BucketWebsite (可以用 caddy or nginx)
  • BucketAnalytics, BucketMetrics, BucketLogging (可以用 bucket notification APIs)
  • BucketRequestPayment
  • BucketTagging
b、minio不支持的Amazon S3 Object API
  • ObjectACL (可以用 bucket policies)
  • ObjectTorrent

二、部署说明

1、软件安装

  • minio安装非常简单,直接下载二进制文件,拷贝到/usr/bin文件运行即可
yum install wget
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/bin
  • 关闭防火墙或者开放指定访问端口
直接关闭防火墙
[root@node27 ~]# systemctl stop firewalld
[root@node27 ~]# systemctl disable firewalld开启防火墙,允许9000~9010端口或是9000端口访问
[root@node27 ~]# firewall-cmd --zone=public --add-port=9000:9010/tcp --permanent
[root@node27 ~]# firewall-cmd --zone=public --add-port=9000/tcp --permanent
[root@node27 ~]# firewall-cmd --reload--zone #作用域
--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
--permanent   #永久生效,没有此参数重启后失效

2、minio单机部署

Minio是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL
执行minio server </local-path>命令,可以将本地目录通过s3协议共享出去
默认访问端口为9000,访问对应IP地址即可,如http://172.16.21.27:9000

示例如下,将/disk01目录通过s3协议共享出去
minio server /disk01/

3、minio分布式部署

3.1、前置条件
  • 完成minio软件包安装
  • 分布式minio里所有的节点需要有同样的access key和secret key,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access key和secret key export成环境变量
  • 分布式minio使用的磁盘里必须是干净的(提供空目录即可),里面没有数据
  • 分布式minio里的节点时间差不能超过3秒,可以使用NTP 来保证时间一致
3.2、开始运行

启动一个分布式minio实例,只需要把硬盘位置做为参数传给minio server命令即可,然后在所有其它节点运行同样的命令
示例:存在节点27、28、29、233、234、235六个节点,每个节点有两个磁盘,分别挂载在/disk01和/disk02目录下
所有节点下执行命令如下,之后访问任意节点的9000端口即可访问到分布式minio集群数据

export minio_ACCESS_KEY=user0001;
export minio_SECRET_KEY=user0001;
minio server http://10.0.0.27/disk01 http://10.0.0.27/disk02 http://10.0.0.28/disk01 http://10.0.0.28/disk02 http://10.0.0.29/disk01 http://10.0.0.29/disk02 http://10.0.0.233/disk01 http://10.0.0.233/disk02 http://10.0.0.234/disk01 http://10.0.0.234/disk02 http://10.0.0.235/disk01 http://10.0.0.235/disk02

在这里插入图片描述

  • 若启动分布式minio实例出现1st disk is already being used in another erasure deployment.
    尝试解除磁盘挂载,重新格式化磁盘后再挂载,之后重新启动分布式minio实例

在这里插入图片描述

3.3、操作说明
  • 通过export设置设置秘钥
    启动minio服务进程服务前,手动执行export设置访问秘钥
export minio_ACCESS_KEY=user01;export minio_SECRET_KEY=user01;
  • 通过export设置设置纠删比
    启动minio服务进程服务前,手动执行export设置纠删比
export minio_STORAGE_CLASS_STANDARD=EC:3

三、关于MC(minio client)

minio Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)

1、安装部署

直接下载二进制文件,拷贝至/usr/bin/目录运行即可

yum install wget
wget https://dl.minio.io/client/mc/release/linux-amd64/mc
chmod +x mc 
mv mc /usr/bin/

2、连接配置

通用命令:mc config host add <storage-name> <s3-endpoint> <ACCESS_KEY> <SECRET_KEY>

参考示例如下:
mc config host add myminion http://10.0.0.27:9000 user0001 user0001

3、访问操作

当与minio成功连接完成后,可通过以下命令进行访问操作

mc config host {}

  • ls 列出文件和文件夹
  • mb 创建一个存储桶或一个文件夹
  • cat 显示文件和对象内容
  • pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT
  • share 生成用于共享的URL
  • cp 拷贝文件和对象
  • mirror 给存储桶和文件夹做镜像
  • find 基于参数查找文件
  • diff 对两个文件夹或者存储桶比较差异
  • rm 删除文件和对象
  • events 管理对象通知
  • watch 监听文件和对象的事件
  • policy 管理访问策略
  • session 为cp命令管理保存的会话
  • config 管理mc配置文件
  • update 检查软件更新
  • version 输出版本信息

相关文章:

【开源存储】minio对象存储部署实践

文章目录 一、前言1、介绍说明2、部署方式3、冗余模式4、约束限制4.1、规格参数4.2、API支持a、minio不支持的Amazon S3 Bucket APIb、minio不支持的Amazon S3 Object API 二、部署说明1、软件安装2、minio单机部署3、minio分布式部署3.1、前置条件3.2、开始运行3.3、操作说明 …...

Java编程强化练习(二)

表达式计算&#xff08;支持空格&#xff0c;连乘&#xff0c;连除&#xff09;&#xff08;选做题&#xff0c;不计分&#xff09; 【问题描述】 从标准输入中读入一个整数算术运算表达式&#xff0c;如5 - 1 * 2 * 3 12 / 2 / 2 。计算表达式结果&#xff0c;并输出。 …...

Redis的高可用模式

1. 什么是高可用&#xff1f; 高可用&#xff08;High Availability, HA&#xff09;是指在信息技术中确保系统、服务或应用程序在绝大多数时间内都是可操作和可访问的能力。这通常涉及以下几个关键方面&#xff1a; 最小化停机时间: 高可用系统的目标是减少因硬件故障、系统升…...

非功能关键知识总结(一)

文章目录 一、稳定性(一)、服务级别协议1、SLA2、OLA3、UC (二)、可用性指标(三)、突发事件等级 三、质量(一)、千行代码缺陷数量(二)、软件质量模型的发展(三)、产品质量模型 四、安全(一)、网络安全 五、灾备(一)、灾备指标(二)、灾难恢复等级(三)、容灾技术分类 一、稳定性 …...

时间序列趋势检验相关检验方法:斜率法、Cox-Stuart检验、Mann-Kendall检验

文章目录 1.斜率法1.1.原理1.2.优缺点1.3.Python代码2.Cox-Stuart检验2.1.原理2.2.优缺点2.3.Python代码3.Mann-Kendall 检验3.1.原理3.1.1.假设前提3.1.2.趋势检验3.1.3.S到Z的变换原理3.1.4.Var(s)是如何得到的3.1.5.衡量趋势的指标:倾斜度...

Redis相关知识

yum安装redis 使用以下命令&#xff1a;直接将redis安装到Linux服务器&#xff08;Xshell&#xff09;中 yum -y install redis 启动redis 使用以下命令&#xff0c;以后台运行方式启动redis redis-server /etc/redis.conf & 操作redis 使用以下命令启动redis客户端 redis-…...

数据管理系统-week10-自由访问控制

文章目录 前言一、用户管理用户管理语句介绍二、数据库管理三、特权(重点考点)Administrative (global) privileges数据库特权表权限列权限四、角色参考文献前言 这节课主要讲了用户管理数据库的具体语句,数据库特权当中的全局特权,数据库特权,表特权与列特权的使用与注意…...

Python遥感开发之批量拼接

Python遥感开发之批量拼接 1 遥感图像无交错的批量拼接2 遥感图像有交错的批量拼接 前言&#xff1a;主要借助python实现遥感影像的批量拼接&#xff0c;遥感影像的批量拼接主要分为两种情况&#xff0c;一种是遥感图像无交错&#xff0c;另一种情况是遥感图像相互有交错。具体…...

【bat】批处理脚本大全

目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 …...

java设计模式学习之【单例模式】

文章目录 引言单例模式简介定义与用途实现方式&#xff1a;饿汉式懒汉式 UML 使用场景优势与劣势单例模式在spring中的应用饿汉式实现懒汉式实现数据库连接示例代码地址 引言 单例模式是一种常用的设计模式&#xff0c;用于确保在一个程序中一个类只有一个实例&#xff0c;并且…...

UWB高精度定位系统项目源码

在现代社会中&#xff0c;精准定位技术对于各行各业都至关重要。为了满足对高精度定位的需求&#xff0c;超宽带&#xff08;Ultra-Wideband, UWB&#xff09;技术应运而生。UWB高精度定位系统以其出色的定位精度和多样化的应用领域而备受关注。本文将深入探讨UWB高精度定位系统…...

WPF Live Charts2 自学笔记

文章目录 前言实现效果微软平台的历史问题 WPF 项目搭建Nuget添加额外框架添加项目初始化livecharts配置其它LiveCharts2 案例简单案例Demo示例ViewViewModel GPU渲染 Github地址仓库 前言 LiveChart 是C# 上面很受欢迎的统计图 UI控件。最近在学WPFhalcon开发&#xff0c;想想…...

大小堆的实现(C语言)

目录 前言 一种完全二叉树&#xff1a;堆 堆的概念 堆的性质 建堆的时间复杂度 建堆的空间复杂度&#xff1a; 小堆的实现 必要补充 堆的初始化 堆的销毁 向上调整算法 堆的插入 向下调整算法 堆的删除 获取堆顶元素 获取堆中元素个数 堆的判空 最终代码 He…...

Linux系统之centos7编译安装Python 3.8

前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包&#xff0c;并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…...

Lambda表达式与方法引用

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 引子 先来看一个案例 …...

二维数组处理(一)

输入整型二维数组a&#xff08;5行5列&#xff09;&#xff0c;完成如下要求&#xff1a; 输出二维数组a。 将a的第2行和第4行元素对调后&#xff0c;形成新的二维数组a并按行输出&#xff0c;每个元素之间隔一个空格。(行号从0开始计算)。 用对角线&#xff08;指二维数组左…...

基于JNI实现调用C++ SDK

基于JNI实现调用C SDK 背景分析解决实践 背景 上篇文章总结了几种Java项目调用C/C SDK项目方法&#xff0c;在逐一实践、踩坑后&#xff0c;最终还是敲定采用 JNI 方式进行实现。在文章开始的过程&#xff0c;会先大概讲讲笔者遇到的情况&#xff0c;因为封装方式需要根据实际…...

计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)

■ 随机存取存储器 ■ 1.随机存取存储器&#xff1a;按存储信息的原理不同分为&#xff1a;静态RAM和动态RAM 2.静态RAM&#xff08;SRAM&#xff09;&#xff1a;用触发器工作原理存储信息&#xff0c;但电源掉电时&#xff0c;存储信息会丢失具有易失性。 3.存储器的基本单元…...

企业计算机服务器locked1勒索病毒数据恢复,locked1勒索病毒解密流程

随着计算机技术的不断发展&#xff0c;越来越多的企业走向数字化办公时代&#xff0c;计算机技术为企业的生产运营提供了有利条件&#xff0c;但也为企业带来了网络安全威胁。在本月&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的速达办公软件遭到了lo…...

Session 与 JWT 的对决:谁是身份验证的王者? (下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...