官方文档地址:http://docs.minio.org.cn/docs/master/distributed-minio-quickstart-guide

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

注意:

  • 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。
  • 分布式Minio使用的磁盘里必须是干净的,里面没有数据。
  • 下面示例里的IP仅供示例参考,你需要改成你真实用到的IP和文件夹路径。
  • 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP 来保证时间一致。
  • 在Windows下运行分布式Minio处于实验阶段,请悠着点使用。

这里演示使用一台主机上的4块磁盘,每个磁盘1G

官方步骤:

  1. export MINIO_ACCESS_KEY=<ACCESS_KEY>
  2. export MINIO_SECRET_KEY=<SECRET_KEY>
  3. minio server http://192.168.1.11/export1 http://192.168.1.12/export2 \
  4. http://192.168.1.13/export3 http://192.168.1.14/export4 \
  5. http://192.168.1.15/export5 http://192.168.1.16/export6 \
  6. http://192.168.1.17/export7 http://192.168.1.18/export8

实际操作步骤:

1.在一台主机上创建4个不同的路径模拟4个不同的磁盘来进行

从执行结果来看,这种方式行不通

  1. export MINIO_ACCESS_KEY=admin
  2. export MINIO_SECRET_KEY=12345678
  3. mkdir -p /mnt/{data1,data2,data3,data4}
  4. /usr/local/minio/bin/minio server http://192.168.20.102/mnt/data1 http://192.168.20.102/mnt/data2 http://192.168.20.102/mnt/data3 http://192.168.20.102/mnt/data4 --console-address ":9001"
  5. # 操作完毕后提示信息如下
  6. WARNING: MINIO_ACCESS_KEY and MINIO_SECRET_KEY are deprecated.
  7. Please use MINIO_ROOT_USER and MINIO_ROOT_PASSWORD
  8. Formatting 1st pool, 1 set(s), 4 drives per set.
  9. WARNING: Host 192.168.20.102 has more than 2 drives of set. A host failure will result in data becoming unavailable.
  10. API: SYSTEM()
  11. Time: 09:24:00 UTC 03/10/2022
  12. Error: Disk `/mnt/data1` is part of root disk, will not be used (*errors.errorString)
  13. 7: cmd/erasure-sets.go:1257:cmd.markRootDisksAsDown()
  14. 6: cmd/format-erasure.go:792:cmd.initFormatErasure()
  15. 5: cmd/prepare-storage.go:222:cmd.connectLoadInitFormats()
  16. 4: cmd/prepare-storage.go:306:cmd.waitForFormatErasure()
  17. 3: cmd/erasure-server-pool.go:91:cmd.newErasureServerPools()
  18. 2: cmd/server-main.go:640:cmd.newObjectLayer()
  19. 1: cmd/server-main.go:491:cmd.serverMain()
  20. API: SYSTEM()
  21. Time: 09:24:00 UTC 03/10/2022
  22. Error: Disk `/mnt/data2` is part of root disk, will not be used (*errors.errorString)
  23. 7: cmd/erasure-sets.go:1257:cmd.markRootDisksAsDown()
  24. 6: cmd/format-erasure.go:792:cmd.initFormatErasure()
  25. 5: cmd/prepare-storage.go:222:cmd.connectLoadInitFormats()
  26. 4: cmd/prepare-storage.go:306:cmd.waitForFormatErasure()
  27. 3: cmd/erasure-server-pool.go:91:cmd.newErasureServerPools()
  28. 2: cmd/server-main.go:640:cmd.newObjectLayer()
  29. 1: cmd/server-main.go:491:cmd.serverMain()
  30. API: SYSTEM()
  31. Time: 09:24:00 UTC 03/10/2022
  32. Error: Disk `/mnt/data3` is part of root disk, will not be used (*errors.errorString)
  33. 7: cmd/erasure-sets.go:1257:cmd.markRootDisksAsDown()
  34. 6: cmd/format-erasure.go:792:cmd.initFormatErasure()
  35. 5: cmd/prepare-storage.go:222:cmd.connectLoadInitFormats()
  36. 4: cmd/prepare-storage.go:306:cmd.waitForFormatErasure()
  37. 3: cmd/erasure-server-pool.go:91:cmd.newErasureServerPools()
  38. 2: cmd/server-main.go:640:cmd.newObjectLayer()
  39. 1: cmd/server-main.go:491:cmd.serverMain()
  40. API: SYSTEM()
  41. Time: 09:24:00 UTC 03/10/2022
  42. Error: Disk `/mnt/data4` is part of root disk, will not be used (*errors.errorString)
  43. 7: cmd/erasure-sets.go:1257:cmd.markRootDisksAsDown()
  44. 6: cmd/format-erasure.go:792:cmd.initFormatErasure()
  45. 5: cmd/prepare-storage.go:222:cmd.connectLoadInitFormats()
  46. 4: cmd/prepare-storage.go:306:cmd.waitForFormatErasure()
  47. 3: cmd/erasure-server-pool.go:91:cmd.newErasureServerPools()
  48. 2: cmd/server-main.go:640:cmd.newObjectLayer()
  49. 1: cmd/server-main.go:491:cmd.serverMain()
  50. Formatting 1st pool, 1 set(s), 4 drives per set.
  51. WARNING: Host 192.168.20.102 has more than 2 drives of set. A host failure will result in data becoming unavailable.

改进步骤:

  1. # 根据上一步的执行提示,更新设置的环境变量名
  2. export MINIO_ROOT_USER=admin
  3. export MINIO_ROOT_PASSWORD=12345678
  4. # 新加四块磁盘,每个磁盘空间1G,不分区,直接格式化后挂载
  5. # 不重启,直接刷新磁盘数据总线,获取新加的磁盘
  6. for host in $(ls /sys/class/scsi_host) ; do echo "- - -" > /sys/class/scsi_host/$host/scan; done
  7. # lsblk
  8. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  9. sda 8:0 0 40G 0 disk
  10. ├─sda1 8:1 0 1G 0 part /boot
  11. └─sda2 8:2 0 39G 0 part
  12. ├─centos-root 253:0 0 35.1G 0 lvm /
  13. └─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
  14. sdb 8:16 0 1G 0 disk
  15. sdc 8:32 0 1G 0 disk
  16. sdd 8:48 0 1G 0 disk
  17. sde 8:64 0 1G 0 disk
  18. [root@myrabbit3 ~]# mkfs.ext4 /dev/sdb
  19. mke2fs 1.42.9 (28-Dec-2013)
  20. /dev/sdb is entire device, not just one partition!
  21. 无论如何也要继续? (y,n) y
  22. 文件系统标签=
  23. OS type: Linux
  24. 块大小=4096 (log=2)
  25. 分块大小=4096 (log=2)
  26. Stride=0 blocks, Stripe width=0 blocks
  27. 65536 inodes, 262144 blocks
  28. 13107 blocks (5.00%) reserved for the super user
  29. 第一个数据块=0
  30. Maximum filesystem blocks=268435456
  31. 8 block groups
  32. 32768 blocks per group, 32768 fragments per group
  33. 8192 inodes per group
  34. Superblock backups stored on blocks:
  35. 32768, 98304, 163840, 229376
  36. Allocating group tables: 完成
  37. 正在写入inode表: 完成
  38. Creating journal (8192 blocks): 完成
  39. Writing superblocks and filesystem accounting information: 完成
  40. [root@myrabbit3 ~]# mkfs.ext4 /dev/sdc
  41. mke2fs 1.42.9 (28-Dec-2013)
  42. /dev/sdc is entire device, not just one partition!
  43. 无论如何也要继续? (y,n) y
  44. 文件系统标签=
  45. OS type: Linux
  46. 块大小=4096 (log=2)
  47. 分块大小=4096 (log=2)
  48. Stride=0 blocks, Stripe width=0 blocks
  49. 65536 inodes, 262144 blocks
  50. 13107 blocks (5.00%) reserved for the super user
  51. 第一个数据块=0
  52. Maximum filesystem blocks=268435456
  53. 8 block groups
  54. 32768 blocks per group, 32768 fragments per group
  55. 8192 inodes per group
  56. Superblock backups stored on blocks:
  57. 32768, 98304, 163840, 229376
  58. Allocating group tables: 完成
  59. 正在写入inode表: 完成
  60. Creating journal (8192 blocks): 完成
  61. Writing superblocks and filesystem accounting information: 完成
  62. [root@myrabbit3 ~]# mkfs.ext4 /dev/sdd
  63. mke2fs 1.42.9 (28-Dec-2013)
  64. /dev/sdd is entire device, not just one partition!
  65. 无论如何也要继续? (y,n) y
  66. 文件系统标签=
  67. OS type: Linux
  68. 块大小=4096 (log=2)
  69. 分块大小=4096 (log=2)
  70. Stride=0 blocks, Stripe width=0 blocks
  71. 65536 inodes, 262144 blocks
  72. 13107 blocks (5.00%) reserved for the super user
  73. 第一个数据块=0
  74. Maximum filesystem blocks=268435456
  75. 8 block groups
  76. 32768 blocks per group, 32768 fragments per group
  77. 8192 inodes per group
  78. Superblock backups stored on blocks:
  79. 32768, 98304, 163840, 229376
  80. Allocating group tables: 完成
  81. 正在写入inode表: 完成
  82. Creating journal (8192 blocks): 完成
  83. Writing superblocks and filesystem accounting information: 完成
  84. [root@myrabbit3 ~]# mkfs.ext4 /dev/sde
  85. mke2fs 1.42.9 (28-Dec-2013)
  86. /dev/sde is entire device, not just one partition!
  87. 无论如何也要继续? (y,n) y
  88. 文件系统标签=
  89. OS type: Linux
  90. 块大小=4096 (log=2)
  91. 分块大小=4096 (log=2)
  92. Stride=0 blocks, Stripe width=0 blocks
  93. 65536 inodes, 262144 blocks
  94. 13107 blocks (5.00%) reserved for the super user
  95. 第一个数据块=0
  96. Maximum filesystem blocks=268435456
  97. 8 block groups
  98. 32768 blocks per group, 32768 fragments per group
  99. 8192 inodes per group
  100. Superblock backups stored on blocks:
  101. 32768, 98304, 163840, 229376
  102. Allocating group tables: 完成
  103. 正在写入inode表: 完成
  104. Creating journal (8192 blocks): 完成
  105. Writing superblocks and filesystem accounting information: 完成
  106. [root@myrabbit3 ~]# mount /dev/sdb /mnt/data1/
  107. [root@myrabbit3 ~]# mount /dev/sdc /mnt/data2/
  108. [root@myrabbit3 ~]# mount /dev/sdd /mnt/data3/
  109. [root@myrabbit3 ~]# mount /dev/sde /mnt/data4/
  110. # lsblk
  111. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  112. sda 8:0 0 40G 0 disk
  113. ├─sda1 8:1 0 1G 0 part /boot
  114. └─sda2 8:2 0 39G 0 part
  115. ├─centos-root 253:0 0 35.1G 0 lvm /
  116. └─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
  117. sdb 8:16 0 1G 0 disk /mnt/data1
  118. sdc 8:32 0 1G 0 disk /mnt/data2
  119. sdd 8:48 0 1G 0 disk /mnt/data3
  120. sde 8:64 0 1G 0 disk /mnt/data4
  121. # 记得把磁盘挂载信息写道/etc/fstab文件中
  122. # /usr/local/minio/bin/minio server http://192.168.20.102/mnt/data1 http://192.168.20.102/mnt/data2 http://192.168.20.102/mnt/data3 http://192.168.20.102/mnt/data4 --console-address ":9001"
  123. WARNING: MINIO_ACCESS_KEY and MINIO_SECRET_KEY are deprecated.
  124. Please use MINIO_ROOT_USER and MINIO_ROOT_PASSWORD
  125. Automatically configured API requests per node based on available memory on the system: 55
  126. Status: 4 Online, 0 Offline.
  127. API: http://192.168.20.102:9000 http://127.0.0.1:9000
  128. RootUser: admin
  129. RootPass: 12345678
  130. Console: http://192.168.20.102:9001 http://127.0.0.1:9001
  131. RootUser: admin
  132. RootPass: 12345678
  133. Command-line: https://docs.min.io/docs/minio-client-quickstart-guide
  134. $ mc alias set myminio http://192.168.20.102:9000 admin 12345678
  135. Documentation: https://docs.min.io



扩展现有的分布式集群

例如我们是通过区的方式启动MinIO集群,命令行如下:

  1. export MINIO_ACCESS_KEY=<ACCESS_KEY>
  2. export MINIO_SECRET_KEY=<SECRET_KEY>
  3. minio server http://host{1...32}/export{1...32}

MinIO支持通过命令,指定新的集群来扩展现有集群(纠删码模式),命令行如下:

  1. export MINIO_ACCESS_KEY=<ACCESS_KEY>
  2. export MINIO_SECRET_KEY=<SECRET_KEY>
  3. minio server http://host{1...32}/export{1...32} http://host{33...64}/export{1...32}

新的对象上传请求会自动分配到最少使用的集群上。通过以上扩展策略,您就可以按需扩展您的集群。重新配置后重启集群,会立即在集群中生效,并对现有集群无影响。如上命令中,我们可以把原来的集群看做一个区,新增集群看做另一个区,新对象按每个区域中的可用空间比例放置在区域中。在每个区域内,基于确定性哈希算法确定位置。

说明: 您添加的每个区域必须具有与原始区域相同的磁盘数量(纠删码集)大小,以便维持相同的数据冗余SLA。 例如,第一个区有8个磁盘,您可以将集群扩展为16个、32个或1024个磁盘的区域,您只需确保部署的SLA是原始区域的倍数即可。

多个节点的存储容量和就是分布式Minio的存储容量。

分布式安装部署MinIO的更多相关文章

  1. Hbase-0.96.2全然分布式安装部署

    Hbase-0.96.2全然分布式安装部署 环境: Hadoop-2.2.0 Zookeeper-3.4.6 hbase-0.96.2 1.下载hbase-0.96.2-hadoop2-bin.tar ...

  2. Hadoop+Hbas完全分布式安装部署

    Hadoop安装部署基本步骤: 1.安装jdk,配置环境变量. jdk可以去网上自行下载,环境变量如下: 编辑  vim  /etc/profile 文件,添加如下内容: export JAVA_HO ...

  3. Hadoop2.7.3+Hbase-1.2.6+spark2.1.2完全分布式安装部署

    https://www.cnblogs.com/lzxlfly/p/7221890.html 总的下载地址:      http://mirror.bit.edu.cn/apache/ hadoop下 ...

  4. Hbase分布式安装部署过程

    系统 Red hat linux 6.4 Hadoop版本 1.2.1 Hbase版本 0.94.16 Hbase的完全分布式安装概述: 1. 配置hosts,确保涉及的主机名均可解析为ip 2. 编 ...

  5. 【Hadoop 分布式部署 九:分布式协作框架Zookeeper架构 分布式安装部署 】

    1.首先将运行在本地上的  zookeeper 给停止掉 2.到/opt/softwares 目录下  将  zookeeper解压到  /opt/app 目录下 命令:  tar -zxvf zoo ...

  6. hbase学习(二)hbase单机和高可用完全分布式安装部署

    hbase版本 2.0.4  与hadoop兼容表http://hbase.apache.org/book.html#hadoop  我的 hadoop版本是3.1   1.单机版hbase 1.1解 ...

  7. 史上最完整Hadoop2.x完全分布式安装部署-小白也能学会

    一.环境要求: 1.        虚拟机安装并设置网络: 2.        修改主机地址映射: 3.        必备软件:Jdk.Development Tools   Development ...

  8. hadoop分布式安装部署详细视频教程(网盘附配好环境的CentOS虚拟机文件/hadoop配置文件)

    参考资源下载:http://pan.baidu.com/s/1ntwUij3视频安装教程:hadoop安装.flvVirtualBox虚拟机:hadoop.part1-part5.rarhadoop文 ...

  9. Hadoop2.7.3+Hbase-1.2.6完全分布式安装部署

    因为学习,在网上找了很多hbase搭建的文章,感觉这篇很好,点此 搭建好后,jps查看了后台进程,发现在slave上面没有HRegionServer进程 便查看了 slave上关于HRegionSer ...

随机推荐

  1. Webpack干货系列 | 在 Webpack 5 集成 ESLint 的方法

    程序员优雅哥(youyacoder)简介:十年程序员,呆过央企外企私企,做过前端后端架构.分享vue.Java等前后端技术和架构. 本文摘要:主要讲解运用Webpack 5 中集成 ESLint 的方 ...

  2. .net core3.1 abp学习开始(一)

    vs版本 2019,链接数据库使用Navicat,数据库MySql abp的官网:https://aspnetboilerplate.com/,我们去Download这里下载一个模板,需要选好Targ ...

  3. 20220722-Java中this关键字

    this关键字知识总结 学习资源:B站韩顺平老师Java入门教学 代码示例1 public class This01 { public static void main(String[] args) ...

  4. 2550--HashMap源码解析

    JDK版本 1.8 结构: HashMap实现了Map Cloneable Serializable接口: 基础了AbstractMap类,AbstractMap提供一些通用方法,如put remov ...

  5. 快速新建并配置一个eslint+prettier+husky+commitlint+vue3+vite+ts+pnpm的项目

    前置准备 一台电脑 vscode pnpm vscode插件:ESLint v2.2.6及以上 vscode插件:Prettier - Code formatter v9.5.0及以上 vscode插 ...

  6. 在阿里云Centos7.6上面部署基于Redis的分布式爬虫Scrapy-Redis

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_83 Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取.但是当我们要爬取的页面非常多的 ...

  7. 神工鬼斧惟肖惟妙,M1 mac系统深度学习框架Pytorch的二次元动漫动画风格迁移滤镜AnimeGANv2+Ffmpeg(图片+视频)快速实践

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_201 前段时间,业界鼎鼎有名的动漫风格转化滤镜库AnimeGAN发布了最新的v2版本,一时间街谈巷议,风头无两.提起二次元,目前国 ...

  8. vant自动上传图片/文件

    vant自动上传文件/图片 vant上传图片与elementUI有所不同,没有自动上传功能,所以与后端进行接口对接的时候可以在after-read中将文件进行上传 html页面 <!-- 上传图 ...

  9. 总结-DSU ON TREE(树上启发式合并)

    考试遇到一道题: 有一棵n个点的有根树,每个点有一个颜色,每次询问给定一个点\(u\)和一个数\(k\),询问\(u\)子是多少个不同颜色节点的\(k\)级祖先.n<=500000. 显然对每一 ...

  10. mustache.js常见用法

    一.mustache基于JS模板引擎,能较为快捷和简单得实现数据得渲染 用法: 1.CDN引入mustache.js,以下是4.0.1版本,有需要可以去github上查询其他版本的代码. (funct ...