# 搭建分布式对象存储服务 MinIO-单点模式

本文介绍开源的分布式对象存储服务 MinIO 的单点模式的搭建步骤。对象存储系统相比于传统的 NAS 文件系统有很多的优势,访问效率高、方便扩容,支持分布式等特性。MinIO 基于 Goland 开发,所以部署非常方便。

# 1. 部署 MinIO 服务

# 1.1 单机部署

# 1.1.1 docker方式部署

执行如下命令,创建 MinIO 服务

docker run -p 9000:9000 --name minio \

-v /mydata/minio/data:/data \

-v /mydata/minio/config:/root/.minio \

-d minio/minio server /data

# 1.1.2 二进制方式部署

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

chmod +x minio

./minio server /data

# 1.2 分布式部署 分布式Minio的要求: 至少需要4个硬盘

需求: 一共2台机器(192.168.11.13,192.168.11.13), 每台机器上指定2个存储目录(可以对应到2块硬盘)/data1和/data2.

# 1.2.1 创建启动脚本

在所有机器上部署如下服务启动脚本(start_minio_cluster.sh):

#!/bin/bash

export MINIO_ACCESS_KEY=admin

export MINIO_SECRET_KEY=adminpwd

nohup /root/minio server http://192.168.11.13/data1 http://192.168.11.13/data2 http://192.168.11.14/data1 http://192.168.11.14/data2 >/root/minio.log 2>&1 &minio会自动以MINIO_ACCESS_KEY和MINIO_SECRET_KEY环境变量的值作为管理后台的账号和密码, 所以您可以自定义账号和密码.

# 1.2.2 启动服务

所有机器上执行启动脚本start_minio_cluster.sh.集群即可成功运行.

在192.168.11.13上程序输出的部分日志如下:

Error: Marking http://192.168.11.14:9000/minio/storage/data2/v29 temporary offline; caused by Post "http://192.168.11.14:9000/minio/storage/data2/v29/readall?disk-id=&file-path=format.json&volume=.minio.sys": dial tcp 192.168.11.14:9000: connect: connection refused (*fmt.wrapError)

6: cmd/rest/client.go:138:rest.(*Client).Call()

5: cmd/storage-rest-client.go:151:cmd.(*storageRESTClient).call()

4: cmd/storage-rest-client.go:471:cmd.(*storageRESTClient).ReadAll()

3: cmd/format-erasure.go:405:cmd.loadFormatErasure()

2: cmd/format-erasure.go:325:cmd.loadFormatErasureAll.func1()

1: pkg/sync/errgroup/errgroup.go:122:errgroup.(*Group).Go.func1()

Disk `/data1` the same as the system root disk.

Disk will not be used. Please supply a separate disk and restart the server.

Disk `/data2` the same as the system root disk.

Disk will not be used. Please supply a separate disk and restart the server.

Waiting for a minimum of 2 disks to come online (elapsed 21s)

Formatting 1st pool, 1 set(s), 4 drives per set.

Waiting for all MinIO sub-systems to be initialized.. lock acquired

Attempting encryption of all config, IAM users and policies on MinIO backend

All MinIO sub-systems initialized successfully

Status: 4 Online, 0 Offline.

Endpoint: http://192.168.11.13:9000 http://127.0.0.1:9000

Browser Access:

http://192.168.11.13:9000 http://127.0.0.1:9000

Object API (Amazon S3 compatible):

Go: https://docs.min.io/docs/golang-client-quickstart-guide

Java: https://docs.min.io/docs/java-client-quickstart-guide

Python: https://docs.min.io/docs/python-client-quickstart-guide

JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide

.NET: https://docs.min.io/docs/dotnet-client-quickstart-guide

Waiting for all MinIO IAM sub-system to be initialized.. lock acquired

IAM initialization complete可以看出,当192.168.11.14上的节点还没有启动时,当前节点会报错,提示硬盘数量不足4块.当把192.168.11.14上的服务也启动后, 提示已有4块硬盘, 并初始化完成.

# 1.2.3 访问

集群启动后,浏览器访问集群中的任何一个节点(http://192.168.11.13:9000或http://192.168.11.14:9000)都可以.

# 2 MinIO 后台管理系统的使用

服务启动后,访问http://IP:9000,进入管理后台

默认 Access Key 和 Secret 都是 minioadmin

后台管理系统支持 bucket 的创建、文件的上传等操作。

# 2.1 创建 bucket

在文件上传之前,需要先创建 1 个 bucket。

# 2.2 上传文件

可以指定任意路径来上传文件

# 2.3 文件的访问

执行如下操作获取文件的访问地址

该文件的访问地址是临时的,若想获取可永久访问的地址,需要修改存储桶的访问策略,我们可以点击存储桶右上角的编辑策略按钮来修改访问策略。需要注意的是,访问前缀需要设置为*.*,否则会无法访问。

文件的永久访问地址为: 服务器域名/bucketName/objectName,如http://172.18.100.177:9000/mymusic/百事可乐的视频1.mp4

# 3 MinIO 服务端的数据存储结构

MinIO 在服务端的存储也是以目录结构存储的。

后台管理看到的文件列表如下:

服务端的数据存储结构如下:

~ # ls -l /data/bucket1/dir1/

total 52

drwxr-xr-x 2 root root 4096 Oct 29 09:29 dir2

-rw-r--r-- 1 root root 24730 Oct 29 09:30 icon.png

-rw-r--r-- 1 root root 17080 Oct 29 09:29 选区_015.png

~ #

# 4. 客户端 mc 的使用

对象存储搭建文件服务器,搭建分布式对象存储服务MinIO-单点模式相关推荐

  1. 开发宝典:基于分布式对象的网游程序结构设计

    http://gamedev.csdn.net/page/41b61c4c-eaa9-4e5a-bf71-1f547d5e026e [编者按]目前,网游市场日趋激烈,每年新增的网游都有几十款之多.对于 ...

  2. vps怎么做文件服务器,vps搭建文件服务器

    vps搭建文件服务器 内容精选 换一换 方法一:在VSCode上选择"文件 > 首选项 > 设置",再选择"工作区",并在输入框搜索"ku ...

  3. 【重识云原生】第三章云存储3.5节——商用分布式云存储方案

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  4. rabbitmq实战指南_太香了这份架构解密:从分布式到微服务(第二版),神仙进阶指南...

    有这样一本神奇的架构书读者可以在字里行间见证微服务的发展脉络大到分布式.微服务.云原生.K8s.Service Mesh小到网络.分布式系统.RPC.分布式存储.分布式计算.全文检索与消息队列中间件等 ...

  5. 大型互联网分布式企业微服务云架构

    2019独角兽企业重金招聘Python工程师标准>>> 第一篇文章简单给大家介绍了Spring Cloud架构,我这边结合了当前大部分企业的通用需求,包括技术的选型比较严格.苛刻,不 ...

  6. 艾艾贴关于Spring Cloud大型互联网分布式企业微服务云架构

    第一篇文章简单给大家介绍了Spring Cloud架构,我这边结合了当前大部分企业的通用需求,包括技术的选型比较严格.苛刻,不仅要用业界最流行的技术,还要和国际接轨,在未来的5~10年内不能out.作 ...

  7. 如何从零起步搭建一个分布式对象存储的架构

    早在几年前,云存储还只是存在于业界大佬们口中的一个概念,其应用场景仅供大公司使用.突飞猛进的网络技术似乎在一瞬间就把这个概念普及到千家万户,现在云存储已经是大家司空见惯的一个网络服务了.比如大家用的百 ...

  8. python分布式对象存储_推荐:一款分布式的对象存储服务

    最近公司在准备内部数据上云,并且内部数据库每天的数据量很大,需要采用大数据存储的方案. 方案调研 每个程序技术在实现之前,需要进行开源产品的调研,适合自己产品的技术方案才是最好的. 需求 我们需要处理 ...

  9. 块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别

    块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based St ...

最新文章

  1. 网络数据包分析软件Wireshark简介
  2. Windows Phone版微信,在朋友圈发送仅文本内容
  3. code第一部分数组:第二十二题 偶数次中查找单独出现一次的数
  4. 用git从github网站上下载代码的方法
  5. 需求文件requirements.txt的创建及使用
  6. 十大笔记本电脑排行_十大笔记本电脑品牌排行榜 世界上最受欢迎的电脑品牌...
  7. linux的samb配置文件,Linux系统如何配置samba文件服务器?
  8. 关于javaScript注册事件传递参数的浅析
  9. 乔碧萝凉凉!斗鱼、虎牙、B站齐封杀
  10. Intel初始化和模式切换示例
  11. 工作流实现自定义表单
  12. 父与子python下载不了_python3-父与子的编程之旅安装pygame出现的问题
  13. 电子计算机x射线断层扫描,CT——电子计算机X射线断层扫描技术.pdf
  14. 安装 mariadb全套教程
  15. 电源篇-集成三端稳压器
  16. oa系统客户端服务器ip端口,致远oa客户端服务器ip
  17. 计算机网络世界(知识扫盲一)
  18. pacs系统数据库服务器,医用PACS系统数据库云计算的设计
  19. Java程序员必须要学ajax吗,Java程序员需要具备哪些专业技能?
  20. .NET程序集版本搜索分析

热门文章

  1. AWS创建Pod 执行角色
  2. 作为审稿人,如何评价一篇论文的novelty?
  3. Three.js的学习之路(一丶创建项目/画出第一个3D模型)
  4. Data2Text文本生成演化之路
  5. stm32f103c8t6与stm32f103zet6 基于SX1276串口通信-----发送端(一)
  6. 2024考研风景园林专硕
  7. 轻松云上开发:从IBM Cloud 开始!
  8. C++小游戏(第一弹)
  9. Sprin中Bean的顺序
  10. wxpython制作抽奖页面