Java基础之《minio(1)—对象存储》

一、什么是对象存储

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必须是挂载的另一块磁盘。
 

你可能感兴趣的:(JAVA基础,java,minio)