MinIO 介绍

发布时间: 更新时间: 总字数:989 阅读时间:2m 作者: 分享 复制网址

MinIO是基于GNU AGPL v3开源的高性能对象存储,与Amazon S3云存储服务API兼容。

介绍

MinIOKubernetes 的原生产品,是唯一可用于公有云、私有云、Kubernetes 发行版和边缘的对象存储套件。

使用场景

一般作为高性能基础设施的场景,包括`

  • 机器学习
  • 分析
  • 应用数据负载
  • 测试环境
  • 支持基于 Policy-Based Access Control (PBAC) 认证

特点

  • 高可用,N/2硬盘在线数据就是安全的
    • Minio使用 纠删码(erasure code)校验和(checksum) 来保护数据免受硬件故障
    • 纠删码是一种恢复丢失和损坏数据的数学算法,Minio采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块
    • 示例` 如果有 12 块盘,一个对象会被分成 6 个数据块、6 个奇偶校验块,丢失任意 6 块盘(不管是数据块还是奇偶校验块)时仍可以从剩下的盘中将数据进行恢复
  • 一致性所有读写操作都严格遵守read-after-write` 一致性模型

安装部署

支持多种安装部署方式,参考` https://hub.docker.com/r/minio/minio

Docker

mkdir -p /data/minio
docker run -d \
  --name minio \
  --restart=always \
  -p 9000:9000 \
  -p 9001:9001 \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=minioadmin" \
  -v /data/minio:/data \
  minio/minio:RELEASE.2022-05-08T23-50-31Z.hotfix.d33e6d144 \
  server /data --console-address ":9001"

说明`

  • 默认用户名:密码 admin/minioadmin`,示例通过环境变量指定
  • API Port: 9000
  • Web Console Port: 9001
  • 安装完成后,通过 http://<ip>:9001 访问
    • /identity/account/new-account 添加 Access KeySecret Key

Minio Operator

参考

  • install minio operator
kubectl krew update
kubectl krew install minio
  • init
kubectl minio init
  • pvc 创建
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-disk-0
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /data/minio/0
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - node6
  • 创建租户
kubectl minio tenant create minio-tenant-1 \
  --servers 1 \
  --volumes 4 \
  --capacity 40Gi \
  --storage-class local-storage \
  --namespace minio-tenant-1

客户端 mc 安装

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
./mc --help

mc 客户端使用

# 查看 minio 服务端配置
mc config host ls

# 添加 minio 服务端配置
mc config host add minio http://minio.xiexianbin.cn xxx --api s3v4

# 查看 minio bucket
mc ls minio

# 创建 bucket
mc mb minio/backup

# 上传本地目录(文件不加r)
mc cp -r ingress minio/backup/

# 下载远程目录(文件不加r)
mc cp -r minio/backup .

# 将一个本地文件夹镜像到 minio (类似rsync)
mc mirror localdir/ minio/backup/

# 持续监听本地文件夹镜像到 minio(类似rsync)
mc mirror -w localdir/ minio/backup/

# 持续从 minio 存储桶中查找所有 jpg 图像,并复制到 minio "play/bucket" 存储桶
mc find minio/backup --name "*.jpg" --watch --exec "mc cp {} play/bucket"

# 删除目录
mc rm minio/backup/ingress --recursive --force

# 删除文件
mc rm minio/backup/xxx.yaml

# 删除所有未完整上传的对象
mc rm  --incomplete --recursive --force minio/backup

# 删除 7 天前的对象
mc rm --force --older-than=7 minio/backup

# 将 MySQL 数据库 dump 文件输出到 minio
mysqldump -u root -p ******* db | mc pipe minio/backup/backup.sql

# MongoDB 备份
mongodump -h mongo-server1 -p 27017 -d blog-data --archive | mc pipe minio/backup/mongo-blog-data-`date +%Y-%m-%d`.archive

客户端

上传文件的 Content-Type

  • text/html HTML格式,浏览器直接打开
  • text/plain 纯文本格式
  • text/xml XML格式
  • text/x-log log格式
  • image/gif gif图片格式
  • image/jpeg jpg图片格式
  • image/png png图片格式
  • application/json JSON数据格式
  • application/xml XML数据格式
  • application/xhtml+xml XHTML格式
  • application/atom+xml Atom XML聚合格式
  • application/pdf pdf格式
  • application/msword Word文档格式
  • application/octet-stream 二进制数据流下载

Python SDK

pip3 install minio

参考

  1. https://min.io/
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数