1.MinIO简介
MinIO是高性能的对象存储,单个对象最大可达5TB。适合存储图片、视频、文档、备份数据、安装包等一系列文件。是一款主要采用Golang语言实现发开的高性能、分布式的对象存储系统。客户端支持Java,Net,Python,Javacript,
Golang语言。客户端与服务器之间采用http/https通信协议。
————————————————
1、在home目录下创建minio文件夹
mkdir /usr/local/soft/minio
2、进入/home/minio 文件夹
cd /usr/local/soft/minio
3、下载文件 链接: https://min.io/download#/linux
MinIO支持单机部署、集群部署两种方式。
最下面有不同开发语言客户端MINIO SDK的集成方式。
mkdir /data/minio/data
touch /data/minio/log/minio.log
赋予权限
chmod 777 minio
或
chmod +x minio
修改用户名密码/etc/default/minio
vim /etc/default/minio
# 启动的时候看提示 新版本
MINIO_ROOT_USER=username
MINIO_ROOT_PASSWORD=password
# 如果MinIO版本比较旧,修改用户名密码为
MINIO_ACCESS_KEY=username
MINIO_SECRET_KEY=password
# 然后 刷新,重载环境变量
前台启动命令 默认端口9000
/usr/local/soft/minio/minio server /data/minio/data
指定端口后台启动 ,避免每次重启后,端口随机变化
nohup /usr/local/soft/minio/minio server --console-address :33806 --address 0.0.0.0:9666 /home/minio/data > /data/minio/log/minio.log &
注:--console-address ":33806"是用来指定minio端口的
启动日志:
WARNING: Detected Linux kernel version older than 4.0.0 release, there are some known potential performance problems with this kernel version. MinIO recommends a minimum of 4.x.x linux kernel version for best performance
MinIO Object Storage Server
Copyright: 2015-2023 MinIO, Inc.
License: GNU AGPLv3
Version: RELEASE.2023-07-21T21-12-44Z (go1.19.11 linux/amd64)
Status: 1 Online, 0 Offline.
S3-API: http://192.168.0.64:9000 http://127.0.0.1:9000
RootUser: ltkj
RootPass: ltkj.com
Console: http://192.168.0.64:34211 http://127.0.0.1:34211
RootUser: ltkj
RootPass: ltkj.com
Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart
$ mc alias set myminio http://192.168.0.64:9000 ltkj ltkj.com
Documentation: https://min.io/docs/minio/linux/index.html
Warning: The standard parity is set to 0. This can lead to data loss.
ps -ef | grep minio # 查看是否启动成功
目前最新版本已经区分了Console和API两个服务的端口。原来都是共同使用9000,现在需要在启动命令中映射两个端口,然后指定哪个端口做哪项服务。启动命令如下:
nohup ./minio server --address '0.0.0.0:9000' --console-address '0.0.0.0:9000'
/data/minio/data > /data/minio/logs/minio.log &
启动Minio 固定端口号 否则每次启动Minio会随机生成一个不一样的端口。
vim /etc/default/minio.conf
# 对应minio的安装目录位置
MINIO_VOLUMES="/data/minio/data"
# 注意这里的ip要改成你们自己的ip地址, 这里的ip特别注意,需要内网ip,否则服务起不来。固定端口号设置,避免重启后 端口号随机
MINIO_OPTS="--address 0.0.0.0:9001 --console-address 0.0.0.0:9010 "
# 设置用户名和密码
## 启动的时候看提示 新版本
MINIO_ROOT_USER=root
MINIO_ROOT_PASSWORD=ltkj.com
# 如果MinIO版本比较旧,修改用户名密码为
# MINIO_ACCESS_KEY=username
# MINIO_SECRET_KEY=password
vim /etc/systemd/system/minio.service
[Unit]
Description=Minio
Documentation=https://docs.minio.io
Wants=network-online.target
After=network-online.target
#minio文件具体位置
AssertFileIsExecutable=/usr/local/soft/minio/minio
[Service]
WorkingDirectory=/data/minio/data
# User and group 用户/组
User=root
Group=root
PermissionsStartOnly=true
#创建的配置文件 minio.conf
EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "[ -n \"${MINIO_VOLUMES}\" ] || echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\""
# $MINIO_OPTS $MINIO_VOLUMES //这其实就是minio服务启动命令 /root/minio是服务位置 后面是端口号和数据存放目录
ExecStart=/usr/local/soft/minio/minio server $MINIO_OPTS $MINIO_VOLUMES
## 如果不用/etc/default/minio 默认配置,通过--confit-dir 指定自定义conf。 /path/to/minio 可执行文件路径,/path/to/config替换为MinIO的配置文件路径。
## ExecStart=/path/to/minio server --config-dir=/path/to/config
StandardOutput=journal
StandardError=inherit
# 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=0
# SIGTERM signal is used to stop Minio*
KillSignal=SIGTERM
SendSIGKILL=no
SuccessExitStatus=0
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable minio.service
ls -lh 显示文件大小
ls -lh /etc/systemd/system/minio.service
相关命令
#启动服务
systemctl start minio.service
#停止服务
systemctl stop minio.service
#重启服务
systemctl restrat minio.service
#查看服务状态
systemctl status minio.service
http://124.239.153.45:9010/browser
root ltkj.test
1、S3
Simple Storage Service,简单存储服务,这个概念是Amazon在2006年推出的,对象存储就是从那个时候诞生
的。S3提供了一个简单Web服务接口,可用于随时在Web上的任何位置存储和检索任何数量的数据。
2、Object
存储到 Minio 的基本对象,文件等。
3、Bucket
存储对象的空间。每个 Bucket 之间的数据是相互隔离的。相当于存放文件的顶层文件夹
4、Drive
部署 Minio 时设置的磁盘,以参数的方式传入。Minio 中所有的对象数据都会存储在 Drive 里。
5、Set
一组 Drive 的集合,分布式部署根据集群规模自动划分一个或多个 Set ,每个 Set 中的 Drive 分布在不
同位置。
6.纠删码
纠删码是一种恢复丢失和损坏数据的数学算法,来保证可靠性 。
纠删码技术在分布式存储系统中的应用主要有三类:
阵列纠删码(Array Code: RAID5、RAID6等)
RS(Reed-Solomon)里德-所罗门类纠删码
LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码
Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。在同一集群内,MinIO 自己会自动生成若干纠删组(Set),用于分布存放桶数据。一个纠删组中的一定数量的磁盘发生的故障(故障磁盘的数量小于等于校验盘的数量),通过纠删码校验算法可以恢复出正确的数据。
————————————————
很多情况下,我们的图片是需要浏览器直接访问的,这里通过minio的客户端进行设置。
1、下载客户端:
wget https://dl.minio.io/client/mc/release/linux-amd64/mc
2、赋予权限
chmod 777 mc
3、添加server(注意自己的端口和账户名密码)
# ./mc config host add minio http://ip:端口/ 账户 密码
./mc config host add minio http://172.16.3.28:9000/ minioadmin minioadmin
4、设置需要开放下载的bucket, 注意需要带minio
# ./mc anonymous set download minio/桶名称
./mc anonymous set download minio/dev
至此就安装就结束了
文件访问地址:
# http://ip:端口/桶名/(桶名文件夹下的路径)/文件名
http://172.16.3.28:9000/dev/2022/11/07/asd.txt
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