minio-对象存储服务

简介

中文版官方文档

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

快速安装

  • 单机版安装

要创建具有永久存储的MinIO容器,您需要将本地持久目录从主机操作系统映射到虚拟配置~/.minio 并导出/data目录。 为此,请运行以下命令(官方文档命令有点问题)

docker run -itd -p 9000:9000 --name minio-1 \
-e MINIO_ACCESS_KEY=xiaodoubi -e MINIO_SECRET_KEY=itkaoti.top \
-v /data/minio/data:/data \
-v /data/minio/config:/root/.minio \
minio/minio server /data
  • 访问

打开 http://127.0.0.1:9000, 登录, 用户名为: xiaodoubi, 密码: itkaoti.top, 之后我们就可以在界面上新建桶和上传文件。

多盘安装

  • docker

多盘安装可以在N/2块磁盘出现问题的时候, 不会出现数据丢失的情况(具体原理看官方文档)

docker run -itd -p 9000:9000 --name minio-1 \
-e MINIO_ACCESS_KEY=xiaodoubi -e MINIO_SECRET_KEY=itkaoti.top \
-v /data/minio/data1:/data1 \
-v /data/minio/data2:/data2 \
-v /data/minio/data3:/data3 \
-v /data/minio/data4:/data4 \
-v /data/minio/config:/root/.minio \
minio/minio server /data1 /data2 /data3 /data4
  • 直接安装

下载

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
  • 运行命令
RUNNING_USER=root
MINIO_HOME=/opt/minio
MINIO_HOST=192.168.56.101
MINIO_PORT=9001
MINIO_LOGFILE=/opt/minio.log
# accesskey and secretkey
ACCESS_KEY=xiaodoubi 
SECRET_KEY=itkaoti.top


MINIO_ACCESS_KEY=${ACCESS_KEY} MINIO_SECRET_KEY=${SECRET_KEY} nohup ${MINIO_HOME}/minio server --address "${MINIO_HOST}:${MINIO_PORT}" /opt/min-data1 /opt/min-data2 /opt/min-data3 /opt/min-data4 > ${MINIO_LOGFILE} 2>&1 &

如果上面脚本报如下错误

ERROR Unable to validate passed arguments: host in server address should be this server
      > Please check --address parameter
      HINT:
        --address binds to a specific ADDRESS:PORT, ADDRESS can be an IPv4/IPv6 address or hostname (default port is ':9000')
      	Examples: --address ':443'
      		  --address '172.16.34.31:9000'
      		  --address '[fe80::da00:a6c8:e3ae:ddd7]:9000'

就把MINIO_HOST=192.168.56.101注掉, 直接使用端口就行

分布式快速入门

分布式 Minio 至少需要 4 个节点

  • 运行
RUNNING_USER=root
MINIO_HOME=/opt/minio
MINIO_HOST=192.168.56.101
#accesskey and secretkey
ACCESS_KEY=xiaodoubi 
SECRET_KEY=itkaoti.top

for i in {01..04}; do
    START_CMD="MINIO_ACCESS_KEY=${ACCESS_KEY} MINIO_SECRET_KEY=${SECRET_KEY} nohup ${MINIO_HOME}/minio  server --address "${MINIO_HOST}:90${i}" http://${MINIO_HOST}:9001/opt/min-data1 http://${MINIO_HOST}:9002/opt/min-data2 http://${MINIO_HOST}:9003/opt/min-data3 http://${MINIO_HOST}:9004/opt/min-data4 > ${MINIO_HOME}/minio-90${i}.log 2>&1 &"
    su - ${RUNNING_USER} -c "${START_CMD}"
done
  • 访问

4个节点都可以访问

参考

中文版官方文档

MinIO 的分布式部署