MinIO_S3的简介和安装使用

0    203    1

Tags:

👉 本文共约15356个字,系统预计阅读时间或需58分钟。

简介

GitHub:https://github.com/minio/

官网:https://www.minio.org.cn/

官方文档:https://min.io/docs/minio/linux/index.html

中文文档:https://www.minio.org.cn/docs/minio/linux/index.html

MinIO 的名称来源于 "Minimal Object Storage"(最小化对象存储)的缩写,体现了其设计理念——提供一个简单、高效的对象存储系统。名称中的 "Min" 代表 "Minimal"(最小的),而 "IO" 代表 "Input/Output"(输入/输出)。

MinIO 是一个高性能的对象存储系统,采用 Go 语言编写,设计上与 Amazon S3 兼容,支持 S3 API。MinIO 主要用于存储海量的非结构化数据,比如图片、视频、日志文件和备份等。它可以部署在本地数据中心、公有云或混合云环境中,并且通过 S3 API 实现与现有工具和应用的兼容性。

MinIO 是一种高性能、S3 (Simple Storage Service) 兼容的对象存储。它专为大规模 AI/ML、数据湖和数据库工作负载而构建,并且它是由软件定义的存储。
不需要购买任何专有硬件,就可以在云上和普通硬件上拥有分布式对象存储。
MinIO拥有开源 GNU AGPL v3 和商业企业许可证的双重许可。

MinIO 是一个开源的对象存储服务器,用于存储和管理大规模的非结构化数据,例如图像、视频、日志文件、备份和容器镜像。MinIO 旨在提供高性能、高可用性、可扩展性和易用性的对象存储解决方案,适用于私有云、公共云和混合云环境。

以下是 MinIO 的主要特点和介绍:

  • 开源和自由MinIO 是一个开源项目,根据 Apache License 2.0 许可证发布,这意味着您可以免费使用、修改和分发它。
  • 对象存储MinIO 是一种对象存储系统,它使用存储桶(buckets)来组织数据,每个存储桶包含多个对象。对象可以是各种文件、文档、媒体和其他非结构化数据。
  • 高性能MinIO 具有出色的性能,能够以高速处理大规模数据。它采用了分布式、并行和多线程处理技术,以支持高吞吐量和低延迟。
  • 高可用性MinIO 具有内置的冗余和故障转移功能,支持数据备份和多副本存储,以确保数据的持久性和高可用性。它还支持数据版本控制。
  • 容器化MinIO 可以轻松部署在容器化环境中,如DockerKubernetes。这使得它适用于云原生应用和容器化工作负载。
  • 分布式扩展MinIO 支持分布式架构,可以轻松扩展以适应不断增长的数据需求。您可以添加更多的MinIO实例以构建多节点集群。
  • S3 兼容MinIO 提供了S3(Simple Storage Service) API 兼容性,这意味着它可以与现有的S3客户端和应用程序集成,无需进行大规模修改。
  • 安全性MinIO 提供数据加密、身份验证和访问控制功能,以确保数据的保密性和完整性。它还支持SSL/TLS加密。
  • 易用性MinIO 的配置和管理非常简单,具有用户友好的命令行界面和Web管理控制台。它还有丰富的文档和活跃的社区支持。

MinIO 是一个功能强大且易于使用的对象存储解决方案,适用于各种应用,从数据备份和存档到大规模媒体存储和分析。它为云原生环境提供了一个强大的存储选项,并且由于其开源性质,广受开发者和组织的欢迎。

优点:

  • 部署简单:一个single二进制文件即是一切,还可支持各种平台。

  • minio支持海量存储,可按zone扩展(原zone不受任何影响),支持单个对象最大5TB;

  • 兼容Amazon S3接口,充分考虑开发人员的需求和体验;

  • 低冗余且磁盘损坏高容忍,标准且最高的数据冗余系数为2(即存储一个1M的数据对象,实际占用磁盘空间为2M)。但在任意n/2块disk损坏的情况下依然可以读出数据(n为一个纠删码集合(Erasure Coding Set)中的disk数量)。并且这种损坏恢复是基于单个对象的,而不是基于整个存储卷的。

  • 读写性能优异

MinIO 基础概念

  • S3——Simple Storage Service,简单存储服务,这个概念是Amazon在2006年推出的,对象存储就是从那个时候诞生的。S3提供了一个简单Web服务接口,可用于随时在Web上的任何位置存储和检索任何数量的数据。

  • Object——存储到 Minio 的基本对象,如文件、字节流,Anything...

  • Bucket——用来存储 Object 的逻辑空间。每个 Bucket 之间的数据是相互隔离的。

  • Drive——部署 Minio 时设置的磁盘,Minio 中所有的对象数据都会存储在 Drive 里。

  • Set——一组 Drive 的集合,分布式部署根据集群规模自动划分一个或多个 Set ,每个 Set 中的 Drive 分布在不同位置。

    • 一个对象存储在一个Set上

    • 一个集群划分为多个Set

    • 一个Set包含的Drive数量是固定的,默认由系统根据集群规模自动计算得出

    • 一个SET中的Drive尽可能分布在不同的节点上

纠删码EC(Erasure Code)

MinlO使用纠删码机制来保证高可靠性,使用highwayhash来处理数据损坏( Bit Rot Protection)。关于纠删码,简单来说就是可以通过数学计算,把丢失的数据进行还原,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。
即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。

在standalone模式下,还可以分为non-erasure code mode(无纠删码模式)和erasure code mode(纠删码模式)。
non-erasure code mode
在此启动模式下,对于每一份对象数据, minio直接在data 下面存储这份数据,不会建立副本,也不会启用纠删码机制。因此,这种模式无论是服务实例还是磁盘都是“单点”,无任何高可用保障,磁盘损坏就表示数据丢失。
erasure code mode
此模式为minio server实例传入多个本地磁盘参数。一旦遇到多于一个磁盘参数,minio server会自动启用erasure code mode.
erasure code对磁盘的个数是有要求的,如不满足要求,实例启动将失败。erasure code启后,要求传给minio server的endpoint(standalone模式下,即本地磁盘上的目录)至少为4个。

下载

http://minio.org.cn/download.shtml#/windows

http://minio.org.cn/download.shtml#/linux

http://minio.org.cn/download.shtml#/docker

docker安装

https://hub.docker.com/r/minio/minio

9000端口指的是minio的WebUI端口,9001是API的端口

MINIO_ACCESS_KEY :账号

MINIO_SECRET_KEY :密码(账号长度必须大于等于5,密码长度必须大于等于8位)

API: http://192.92.0.27:9001 http://127.0.0.1:9001
RootUser: minioadmin
RootPass: minioadmin

WebUI: http://192.92.0.27:9000 http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin

Linux单机安装

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

Linux单主机多硬盘模式

在启动 MinIO 时,若传入参数是多个目录,则会以纠删码的形式运行,即具备高可靠性意义。即在一个服务器(单节点)上对,多个磁盘上运行 MinIO。

  • file system Label 就是分区的标签,在最初安装系统是填写的挂载点就是标签的名字。使用设备名(例如:/dev/sdb)labeluuid 作为标识的不同。这里使用的是 lable
  • mount point 挂载目录。
  • type 文件系统类型,包括xfs、ext2、ext3、ext4、reiserfs、nfs、vfat等。
  • options 文件系统的参数,参数如下:
    • Async/sync:设置是否为同步方式运行,默认为async
    • auto/noauto:当执行 mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
    • rw/ro:是否以以只读或者读写模式挂载
    • exec/noexec:限制此文件系统内是否能够进行"执行"的操作
    • user/nouser:是否允许用户使用mount命令挂载
    • suid/nosuid:是否允许SUID的存在
    • Usrquota:启动文件系统支持磁盘配额模式
    • Grpquota:启动文件系统对群组磁盘配额模式的支持
    • Defaults:同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
  • dump 是一个用来作为备份的命令参数值解释如下:
    • 0 代表不要做dump备份
    • 1代表要每天进行dump的操作
    • 2代表不定日期的进行dump操作

扩容

注意数据的丢失!!!

如果需要加磁盘,必须先把这个这个目录删掉,要不然无法启动,

/data{1..4}/.minio.sys,报错:ERROR Unable to initialize backend: /data1 drive is already being used in another erasure deployment. (Number of drives specified: 5 but the number of drives found in the 1st drive's format.json: 4)

FATAL Unable to initialize backend: /minio/data1 drive is already being used in another erasure deployment. (Number of drives specified: 9 but the number of drives found in the 1st drive's format.json: 6)

Linux分布式集群部署(多主机、多硬盘模式)

分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。

在大数据领域,通常的设计理念都是无中心和分布式。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。

数据保护

分布式Minio采用 纠删码来防范多个节点宕机和位衰减bit rot。

分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

高可用

单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。

例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。

注意,只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块硬盘。比如,你可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类。

一致性

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

在这里插入图片描述

Windows安装

http://dl.minio.org.cn/server/minio/release/windows-amd64/minio.exe

http://dl.minio.org.cn/client/mc/release/windows-amd64/mc.exe

MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)。MinIO服务端中并没有自带客户端,所以我们需要安装配置完客户端后才能使用。

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

添加一个云存储服务
添加一个或多个S3兼容的服务,请参考下面说明。mc将所有的配置信息都存储在~/.mc/config.json文件中。

别名就是给你的云存储服务起了一个短点的外号。S3 endpoint,access key和secret key是你的云存储服务提供的。API签名是可选参数,默认情况下,它被设置为"S3v4"。

其它:

Windows下分布式部署、单节点多磁盘、多节点模式

参考:https://blog.csdn.net/xixiyuguang/article/details/119456729

单节点多磁盘模拟

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复