一、什么是对象存储
1、An object是二进制数据,有时也称为Binary大对象(BLOB)。blob可以是图像、音频文件、电子表格,甚至二进制可执行代码。
2、minio这样的对象存储平台提供了专用的用于存储、检索和搜索blob的工具和功能。
3、minio对象存储使用buckets来组织对象。存储桶类似于文件系统中的文件夹或目录,其中每个桶可以容纳任意数量的对象。
4、minio存储桶提供与AWS S3存储桶相同的功能。
二、minio单机部署
1、minio AGPL v3协议是可以免费使用的。
2、编辑sysctl.conf
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
3、单机部署
mkdir -p /appserver/minio
cd /appserver/minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=12345678 ./minio server /appserver/minio/data --address ":9998" --console-address ":9999"
默认端口为9000和9001,如果已占用,需要指定其他端口
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-03-22T06-36-24Z (go1.19.7 linux/amd64)
Status: 1 Online, 0 Offline.
API: http://192.168.3.203:9998 http://127.0.0.1:9998
RootUser: admin
RootPass: 12345678
Console: http://192.168.3.203:9999 http://127.0.0.1:9999
RootUser: admin
RootPass: 12345678
Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart
$ mc alias set myminio http://192.168.3.203:9998 admin 12345678
Documentation: https://min.io/docs/minio/linux/index.html
Warning: The standard parity is set to 0. This can lead to data loss.
4、单机后台启动
vi minio_run.sh
#!/bin/bash
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
nohup ./minio server /appserver/minio/data --address ":9998" --console-address ":9999" 2>&1 &
chmod +x minio_run.sh
三、纠删码模式部署
1、minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。
类似于服务器做了raid冗余,可以在一台服务器上挂载4到16个盘,使用纠错码模式。
2、挂载4个磁盘
/appserver/minio/data1
/appserver/minio/data2
/appserver/minio/data3
/appserver/minio/data4
3、纠错码模式启动
vi minio_run_ec.sh
#!/bin/bash
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
nohup ./minio server /appserver/minio/data1 /appserver/minio/data2 /appserver/minio/data3 /appserver/minio/data4 --address ":9998" --console-address ":9999" 2>&1 &
chmod +x minio_run_ec.sh
四、分布式集群部署
1、分布式minio优势
(1)数据保护
分布式minio采用纠删码来防范多个节点宕机和位衰减bit rot。
分布式minio至少需要4个硬盘,使用分布式minio自动引入了纠删码功能。
(2)高可用
单机minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/1+2个硬盘来创建新的对象。
例如,一个16节点的minio集群,每个节点16块硬盘,就算8台服务器宕机,这个集群仍然是可读的,不过你需要9台服务器才能写数据。
(3)一致性
minio在分布式和单机模式下,所有读写操作都严格遵守 read-after-write 一致性模型。
2、启动一个分布式minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,你需要在所有其它节点运行同样的命令。
hosts:
192.168.100.1 node1
192.168.100.2 node2
192.168.100.3 node3
192.168.100.4 node4
3、执行脚本
minio_run_clust.sh
#!/bin/bash
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
nohup ./minio server http://node{1...4}/appserver/minio/data --address ":9998" --console-address ":9999" 2>&1 &
注意:此时的/appserver/minio/data必须是挂载的另一块磁盘。