跳到主要内容

MinIO

[TOC]


MinIO

By:weimenghua
Date:2022.10.2
Description:MinIO 文件存储

参考资料

minio 官网
minio 文档

一、MinIO 简介

MinIO 是根据 GNU Affero 通用公共许可证 v3.0发布的高性能对象存储。它与 Amazon S3云存储服务兼容。使用 MinIO 构建用于机器学习,分析和应用程序数据工作负载的高性能基础架构。
其设计的主要目标是作为私有云对象存储的标准方案。主要用于存储海量的图片,视频,文档等。非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大5T 不等。

二、MinIO 特点

  • 高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s 的读、35GG/s 的写速率
  • 可扩容:不同 MinIO 集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心
  • 云原生:容器化、基于 K8S 的编排、多租户支持
  • Amazon S3兼容:Minio 使用 Amazon S3 v2 / v4 API。可以使用 Minio SDK,Minio Client,AWS SDK 和 AWS CLI 访问 Minio 服务器。
  • 可对接后端存储: 除了 Minio 自己的文件系统,还支持 DAS、 JBODs、NAS、Google 云存储和 Azure Blob 存储。
  • SDK 支持: 基于 Minio 轻量的特点,它得到类似 Java、Python 或 Go 等语言的 sdk 支持
  • Lambda 计算: Minio 服务器通过其兼容 AWS SNS / SQS 的事件通知服务触发 Lambda 功能。支持的目标是消息队列,如 Kafka,NATS,AMQP,MQTT,Webhooks 以及 Elasticsearch,Redis,Postgres 和 MySQL 等数据库。
  • 有操作页面
  • 功能简单: 这一设计原则让 MinIO 不容易出错、更快启动
  • 支持纠删码:MinIO 使用纠删码、Checksum 来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据

三、MinIO 使用

mc anonymous set public local/demo/*

  • mc: 这是MinIO Client(mc)工具的命令行前缀,用于执行与MinIO对象存储系统相关的操作。
  • anonymous: 这是指定的身份标识,表示匿名用户。
  • set public: 这是命令的一部分,用于设置指定对象的访问权限为公共访问。
  • local/demo/: 这是要设置为公共访问权限的对象的路径或通配符。在这个示例中,local/demo/是一个路径通配符,它匹配指定桶(Bucket)下的所有对象。
kubectl --insecure-skip-tls-verify exec -it minio-6c57b775f6-b8v9x -n my-space -- /bin/sh

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/mc

获取 endpoint
kubectl get services -n my-space

关键字 Environment,获取 access-key、secret-key
kubectl describe pod minio-6c57b775f6-b8v9x -n my-space

将 Minio 作为一个新主机添加到 mc 的配置
mc config host add <alias> <endpoint> <access-key> <secret-key>
mc config host add my-minio http://10.43.244.206:9000 minioadmin minioadmin

删除新主机
mc config host remove <minio-alias>
mc config host remove my-minio

查看 MinIO 服务器上的存储桶(buckets)
mc ls <minio-alias>
mc ls my-minio

创建一个新的存储桶(bucket)
mc mb <minio-alias>/<bucket-name>
mc mb my-minio/my-bucket

删除存储桶(bucket)
mc rb <minio-alias>/<bucket-name> --force
mc rb my-minio/my-bucket --force

上传文件
mc cp <file-path> <minio-alias>/<bucket-name>/<object-name>
mc cp example.txt my-minio/my-bucket/example.txt

复制文件,源和目标可以是本地文件系统或桶
mc cp <source> <destination>
mc cp my-minio/my-bucket/example.txt my-minio/my-bucket/example_cp.txt

查看桶里的文件
mc ls <minio-alias>/<bucket-name>
mc ls my-minio/my-bucket

列出指定前缀的文件
mc ls <minio-alias>/<bucket-name>/<prefix> --recursive
mc ls my-minio/my-bucket/exam --recursive

下载文件
mc cp <minio-alias>/<bucket-name>/<object-name> <local-file-path>
mc cp my-minio/my-bucket/example.txt myminio/example2.txt

四、知识碎片

桶(Bucket)是OBS中存储对象的容器。对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构。