minio简介

  MinIO是一个高性能对象存储软件,它提供了与Amazon Web Services S3兼容的API,并支持所有核心S3功能。MinIO使用 纠删码(Erasure Coding(纠删码)) 来保证高可用
  minio支持单节点单硬盘、单节点多硬盘、多节点多硬盘部署方式。本文介绍单节点单硬盘和多节点多硬盘方式。
  minio支持二进制部署、docker安装、kubernetes安装等等方式。本文说明二进制命令安装方式。

单节点单磁盘方式部署

前置条件

部署

1. 以下方式二选一:

  1. 上传下载的minio 到 /usr/local/bin/
  2. 服务器直接执行命令
#linux 服务器
wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
sudo mv minio /usr/local/bin/ #移动到目录

2. 赋权

chmod +x minio

3. 创建使用目录

mkdir /home/minio/data && chmod 755 -R /home/minio/data #创建使用目录

4. 启动(root用户)

说明:
如果想用其它用户启动,则需要先切换的指定用户
前台启动:

# 进入启动目录
cd /usr/local/bin/
# 直接启动(用户密码默认为 minioadmin)
./minio server /usr/software/minio/data
# 指定登录信息启动
MINIO_ROOT_USER=myminioadmin MINIO_ROOT_PASSWORD=myminioadmin ./minio server  /home/minio/data

后台启动:

# 进入启动目录
cd /usr/local/bin/
nohup ./minio server /usr/software/minio/data   /usr/software/minio/minio.log 2>&1 &
# 指定登录信息启动
MINIO_ROOT_USER=myminioadmin MINIO_ROOT_PASSWORD=myminioadmin nohup ./minio server /home/minio/data  /home/local/minio/execminio/minio.log 2>&1 
# 指定登录信息和日志
MINIO_ROOT_USER=myminioadmin MINIO_ROOT_PASSWORD=myminioadmin nohup ./minio server /home/minio/data  日志目录 2>&1 

5. 访问

浏览器访问地址:9001即可;如果不能访问请查看防火墙是否关闭。

多节点多磁盘部署

说明: 假定2个节点分别是192.168.56.111和192.168.56.112 每个节点四个磁盘分别是/opt/data1 /opt/data2 /opt/data3 /opt/data4

前置条件

1. 确认9000(minio通信使用)和9001端口是否占用,如果占用请换其它接口

2. 四块新磁盘(每块大小最好一致),或者一个磁盘四个分区(大小相同)

linux扩容

  博主在部署时没有可用磁盘,所以扩容了下,以下是Oracle VM VirtualBox 扩容步骤

1. 关闭服务器
2. 按图操作

工具
3. 按图操作
工具1
4. 启动虚拟机分配空间

# 查看磁盘
lsblk  # 我的是 sdb磁盘
# 分区
fdisk /dev/sdb
# 1. 按n 新增分区; 
# 2. 按p主分区; 
# 3.键入分区号,不填就是默认1-4递增
# 4.设置起始柱面,直接回车默认值就行;
# 5.设置大小+/-数字和单位(如:+1G表示分G)回车
# 键入w保存分区信息
# 重复上述操作一共分4个区 格式化后就是 /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4

硬盘目录解析:
/dev/sda1 # s:硬件接口类型(sata/scsi);d:disk(硬盘);a:第一块硬盘(b:第二块);1:第几个分区;
/dev/hda1 # h:硬件接口类型(IDE硬盘);d:disk(硬盘);a:第一块硬盘(b:第二块);1:第几个分区;
/dev/vda1 # v:硬件接口类型(虚拟硬盘);d:disk(硬盘);a:第一块硬盘(b:第二块);1:第几个分区;
/etc/fstab文件说明:

<file system>: 要挂载的分区或存储设备
<dir>: 挂载的目录位置
<type>: 挂载分区的文件系统类型,比如:ext3、ext4、xfs、swap
<options>: 挂载使用的参数有哪些  
<dump>:  dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。  
	<pass>:  fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。

3. 设置时钟同步

4. 提前下载好安装包放入服务器 /usr/local/bin/(直接在线安装也可以)然后执行 chmod +x minio

5. 关闭防火墙

firewall-cmd --permanent --zone=public --add-port=9000/tcp #9000 关闭防火墙 参数 permanent可用永久关闭
firewall-cmd --permanent --zone=public --add-port=9001/tcp #9000关闭防火墙
firewall-cmd --reload

6. 格式化上述磁盘为xfs

mkfs.xfs /dev/sdb1 -L DISK1 #格式化 /dev/sdb 起别名为DISK1;
mkfs.xfs /dev/sdb1 -L DISK2 #格式化 /dev/sdb 起别名为DISK2;
mkfs.xfs /dev/sdb1 -L DISK3 #格式化 /dev/sdb 起别名为DISK3;
mkfs.xfs /dev/sdb1 -L DISK4 #格式化 /dev/sdb 起别名为DISK4;

7. 挂载

mount /dev/sdb1 /opt/data1   #/dev/sdb1挂载到/data1
mount /dev/sdb2 /opt/data2   #/dev/sdb1挂载到/data2
mount /dev/sdb3 /opt/data3   #/dev/sdb1挂载到/data3
mount /dev/sdb4 /opt/data4   #/dev/sdb1挂载到/data4

#永久挂载 
vi /etc/fstable
#写入 noatime表示文件修改时不记录时间
#<file system>  <mont point>                    <type>          <options>               <dump>  <pass>
LABEL=DISK1     /opt/data1            xfs          defaults,noatime        0       2
LABEL=DISK2    /opt/data2            xfs          defaults,noatime        0       2
LABEL=DISK3     /opt/data3            xfs          defaults,noatime        0       2
LABEL=DISK4    /opt/data4            xfs          defaults,noatime        0       2

8. 编辑配置文件

# 如果没有可以新建,保证/etc/systemd/system/mini.service 和  /usr/lib/systemd/system/minio.service(推荐)只有一份否则会冲突
vi /usr/lib/systemd/system/minio.service
#粘入下述内容修改三个变量
AssertFileIsExecutable #minio安装目录
WorkingDirectory #修改为执行时想放入的目录
ExecStart #minio安装目录
[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/


[Service]
WorkingDirectory=/opt

User=root
Group=root
ProtectProc=invisible

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/ server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

9. 变量文件

#变量文件
vi /etc/default/minio

# MINIO_VOLUMES="http://192.168.56.111:9000/opt/data1/minio http://192.168.56.111:9000/opt/data2/minio http://192.168.56.111:9000/opt/data3/minio http://192.168.56.111:9000/opt/data4/minio http://192.168.56.112:9000/opt/data1/minio http://192.168.56.112:9000/opt/data2/minio http://192.168.56.112:9000/opt/data3/minio http://192.168.56.112:9000/opt/data4/minio "
MINIO_VOLUMES="http://192.168.56.111:9000/opt/data{1...4}/minio http://192.168.56.112:9000/opt/data{1...4}/minio" # 和上面二选一
MINIO_OPTS="--console-address :9001" #访问端口 9001
MINIO_ROOT_USER=minioadmin #登录名
MINIO_ROOT_PASSWORD=minioadmin #登录密码
MINIO_SERVER_URL="http://192.168.56.111:9000" #minio通信地址,这个每个服务器一定要一样; 一般线上会配置为nginx代理的那台服务器

10. 其它服务部署

步骤5~9在其它机器同样部署,理论上直接拷贝就行。

11. 后续配置

#将服务设置为每次开机启动
systemctl enable minio.service
#重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载
systemctl daemon-reload
#启动服务
systemctl start minio
#停止服务
systemctl stop minio
#重启服务
systemctl restrat minio
#查看服务状态
systemctl status minio
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐