当前位置: 首页 > 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…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

Django RBAC项目后端实战 - 03 DRF权限控制实现

项目背景 在上一篇文章中&#xff0c;我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统&#xff0c;为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...