Minio文件服务器单机部署并将Minio设置成Linux服务启动

(一) Minio简介

1.1 Minio介绍

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

1.2 纠删码EC(Erasure Code)

MinIO 使用纠删码机制来保证高可靠性,使用 highwayhash 来处理数据损坏( Bit Rot Protection )。
关于纠删码,简单来说就是可以通过数学计算,把丢失的数据进行还原,它可以将n份原始数据,增加m
份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失
效,仍然能通过剩下的数据还原出来。

1.3 存储机制

Minio使用纠删码erasure code和校验checksum来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据。

1.4 Minio优点

  • 部署简单: 一个single二进制文件即是一切,还可支持各种平台。
  • minio支持海量存储,可按zone扩展(原zone不受任何影响),支持单个对象最大5TB;
    兼容Amazon S3接口,充分考虑开发人员的需求和体验;
  • 低冗余且磁盘损坏高容忍,标准且最高的数据冗余系数为2(即存储一个1M的数据对象,实际占用
    磁盘空间为2M)。但在任意n/2块disk损坏的情况下依然可以读出数据(n为一个纠删码集合(Erasure
    Coding Set)中的disk数量)。并且这种损坏恢复是基于单个对象的,而不是基于整个存储卷的。
  • 读写性能优异

1.5 官网地址

Minio英文文档
Minio中文文档

如果是学习或者玩一下,想用最新版本,建议看英文文档,中文文档更新可能没用那么及时。

(二) Minio环境搭建

2.1 单机部署

minio server的standalone模式,即要管理的磁盘都在host本地。在standalone模式下,还可以分为non-erasure code modeerasure code mode

non-erasure code mode

  • 在此启动模式下,对于每一份对象数据,minio直接在data下面存储这份数据,不会建立副本,也不会
    启用纠删码机制。因此,这种模式无论是服务实例还是磁盘都是“单点”,无任何高可用保障,磁盘损坏 就表示数据丢失

erasure code mode

  • 此模式为minio server实例传入多个本地磁盘参数。一旦遇到多于一个磁盘参数,minio server会自动 启用erasure code mode。erasure code对磁盘的个数是有要求的,如不满足要求,实例启动将失 败。 erasure code启用后,要求传给minio server的endpoint(standalone模式下,即本地磁盘上的目 录)至少为4个。

2.2 基于Ubuntu18.04部署

2.2.1 下载Minio

Minio下载地址

#也可以使用命令下载 这里我使用官网下载(命令仅供参考)
wget -q http://dl.minio.org.cn/server/minio/release/linux-amd64/minio

2.2.2 创建目录

#创建文件夹
sudo mkdir /usr/local/minio

2.2.3 将下载的Minio复制到创建的文件夹中

#复制文件
sudo cp /home/用户名/Downloads(中文版为:下载)/minio /usr/local/minio

#使下载的Minio文件为可执行文件
chmod +x minio

2.2.4 创建文件存放目录

#切换目录
cd /usr/local
#创建文件存放目录
sudo mkdir data

2.2.5 启动Minio

#进入安装目录
cd /usr/local/minio

#修改Minio的初始账号密码(也可以不修改)
#初始账号:minioadmin
#初始密码:minioadmin
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=12345678 #注意密码至少八位

#启动Minio (需要进入minio存放目录下)
#50000 固定端口号 否则每次启动Minio会随机生成一个不一样的端口(控制台会有打印信息)
#/usr/local/java/etc 指定文件存放目录
./minio server --console-address ":50000" /usr/local/data

#在浏览器输入 http://Ip:50000 成功打开页面可以登录说明安装成功

2.2.6 将Minio设置成系统服务

#以上步骤,如果Ctrl+C退出后,这个Minio服务同时也停止了
#如果需要它在后台运行就需要把它添加到后台服务里边

#切换文件目录
cd /usr/local/minio
#创建目录
mkdir conf
#创建配置文件
mkdir minio.conf
#minio.conf文件内容

#数据存放目录
MINIO_VOLUMES="/usr/local/data"
#端口号设置
MINIO_OPTS="--console-address :9000"
#用户名
MINIO_ROOT_USER="minio"
#密码
MINIO_ROOT_PASSWORD="12345678"
#在/etc/systemd/system目录下新建一个minio.service 
#切换文件目录
cd /etc/systemd/system
#创建配置文件
mkdir minio.service
#minio.service文件内容

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
#minio文件具体位置
AssertFileIsExecutable=/usr/local/minio/minio
[Service]
# User and group 用户 组
User=root
Group=root
#创建的配置文件 minio.conf
EnvironmentFile=/usr/local/minio/conf/minio.conf
ExecStart=/usr/local/minio/minio 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
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target

2.2.7 正式启用和状态查看

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

#打开页面访问登录成功即可
http://192.168.80.137:9000

分布式集群部署也不是很难,有兴趣的可以参考官网文档或者网上教程玩一下。
Minio文件服务器单机部署并将Minio设置成Linux服务启动_第1张图片

文章仅用作记录分享,若有不当,还望指正。

最近开通个人了微信公众号,以后将会定期分享工作学习过程中遇到的问题,欢迎关注与我一道成长交流~:

微信搜索: MYY668999程序猿爱篮球 即可上车。

你可能感兴趣的:(Linux,linux,java,ubuntu,服务器,云计算)