基于MinIO打造高可靠分布式“本地”文件系统

MinIO是一款高性能的对象存储服务,而S3协议是由亚马逊Web服务(AWS)制定的一种标准协议,用于云存储服务之间的数据交换。MinIO与S3协议的关系在于,MinIO实现了S3协议的接口,这意味着用户可以使用与AWS S3相同的API来与MinIO进行交互。因此,MinIO能够与支持S3协议的各种工具和应用程序兼容,为用户提供一个与AWS S3高度兼容的存储解决方案。

基于S3协议的对象存储服务具有以下优势:首先,它提供了高度可扩展的存储解决方案,能够容纳海量数据,并且易于水平扩展。其次,S3协议的对象存储支持restful API,便于应用集成。此外,它还具备高可用性和持久性,确保数据安全可靠。最后,基于S3协议的对象存储服务成本较低,用户只需按实际使用量付费,无需前期投资大量硬件设备。


Linux 安装步骤
Minio 下载文件安装
1、下载地址

powershell 复制代码
wget https://dl.min.io/server/minio/release/linux-amd64/minio

2、修改文件执行权限

powershell 复制代码
chmod +x minio

3、启动,随机端口启动

powershell 复制代码
./minio server /data/miniodata
# 或者指定密码执行
MINIO_ACCESS_KEY=myminioadmin MINIO_SECRET_KEY=myminioadmin ./minio server /data/miniodata
# 指定密码,配置文件地址,数据存放地址启动
MINIO_ACCESS_KEY=myminioadmin MINIO_SECRET_KEY=myminioadmin ./minio server --config-dir /config/minio/config /data/miniodata

注意:以上启动方式端口是随机的,需要开放随机端口才可以访问

4、指定端口启动

控制台监听端口是动态生成的,可以通过--console-address ":port"指定静态端口

powershell 复制代码
./minio server --console-address ":9000" /data/miniodata

5、防火墙查看

powershell 复制代码
# 查看防火墙状态1
systemctl status firewalld 或者 systemctl status firewalld.service
# 查看防火墙状态2
firewall-cmd --state
# 开启/关闭/重启防火墙
systemctl start/stop/restart firewalld

# firewall防火墙,查询端口是否开放
firewall-cmd --query-port=9000/tcp
# 开放9000端口
firewall-cmd --permanent --add-port=9000/tcp
# 移除端口
firewall-cmd --permanent --remove-port=9000/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 查看防火墙所有端口
firewall-cmd --zone=public --list-ports

6、后台启动,指定输出日志文件

powershell 复制代码
nohup ./minio server /data/miniodata --config-dir /config/minio/config --console-address ":80" --address ":9000" > /data/miniodata/minio.log 2>&1 &

7、修改密码,执行完修改密码命令,在执行第6步

powershell 复制代码
export MINIO_ACCESS_KEY=admin 
export MINIO_SECRET_KEY=admin123

补充说明

powershell 复制代码
# 数据存放地址
/data/miniodata
# minio 配置放地址
--config-dir /config/minio/config
# 浏览器访问暴露端口
--console-address ":80"
# 内网访问地址端口
--address ":9000"
# 日志存放地址
/data/miniodata/minio.log

S3FS是一个开源的文件系统,它允许用户将Amazon S3(Simple Storage Service)存储桶挂载到本地文件系统中,使得用户可以像操作本地文件一样读写S3中的数据,无需改变现有的应用程序代码或工具。通过S3FS,用户能够在不牺牲S3的持久性和可用性的同时,享受到无缝的文件存储体验。

powershell 复制代码
# 安装启用 EPEL 仓库
yum install epel-release -y
# 安装 s3fs
yum install s3fs-fuse -y
# 查看 s3fs 版本,确定是否成功安装
s3fs --version
powershell 复制代码
cat > /etc/passwd-s3fs <<-'EOF'
root:12345678
EOF
chmod 600 /etc/passwd-s3fs
mkdir -p /mnt/volumes
s3fs volumes /mnt/volumes -o passwd_file=/etc/passwd-s3fs -o url=http://192.168.31.230:9000 -o use_path_request_style
powershell 复制代码
[root@localhost s3fs-fuse]# cat > /etc/passwd-s3fs <<-'EOF'
> root:12345678
> EOF
[root@localhost s3fs-fuse]# chmod 600 /etc/passwd-s3fs
[root@localhost s3fs-fuse]# mkdir -p /mnt/volumes
[root@localhost s3fs-fuse]# s3fs volumes /mnt/volumes -o passwd_file=/etc/passwd-s3fs -o url=http://192.168.31.230:9000 -o use_path_request_style
[root@localhost s3fs-fuse]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G     0  7.8G    0% /dev/shm
tmpfs                    7.8G   12M  7.8G    1% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/mapper/centos-root   37G   20G   18G   53% /
/dev/sda1               1014M  152M  863M   15% /boot
overlay                   37G   20G   18G   53% /var/lib/docker/overlay2/fed98c3a97bc3e29e555d9fb1694fe2caf9b7a9da8ae12b5dd0c056a671ce7e5/merged
overlay                   37G   20G   18G   53% /var/lib/docker/overlay2/1fbde6ceca8835769d17ee70757842fce2fb74f2af5c0fea0dc3f5788915d305/merged
tmpfs                    1.6G     0  1.6G    0% /run/user/0
overlay                   37G   20G   18G   53% /var/lib/docker/overlay2/d5d5bfb9250d988dd0b65e7053acb7049a20dcea364508918a3d78f34485ed1b/merged
s3fs                      64P     0   64P    0% /mnt/volumes
powershell 复制代码
[root@localhost s3fs-fuse]# cd /mnt/volumes/
[root@localhost volumes]# cat > index.html <<-'EOF'
> ABC
> EOF

卸载挂载目录

powershell 复制代码
yum remove s3fs-fuse -y
powershell 复制代码
umount /mnt/volumes
#强制卸载
umount /mnt/volumes

调试挂载信息,排查异常

powershell 复制代码
# 在挂载命令后增加几个参数 -d -f -o f2 -o curldbg 即可
# -d:启用调试模式。该选项会输出更详细的调试信息,用于故障排除和调试目的。
# -f:以前台模式运行。通常,s3fs 在后台运行并将挂载的 S3 存储桶映射到本地目录。使用 -f 选项,s3fs 将在前台运行,并将输出信息打印到终端。
# -o f2:指定文件系统选项 "f2"。这个选项是 s3fs 的一个特殊选项,用于启用 FUSE 文件系统的第二代实现。它可用于提供更高的性能和可靠性。
# -o curldbg:启用 cURL 调试输出。cURL 是 s3fs 使用的底层工具之一,用于与 S3 存储桶进行通信。启用 -o curldbg 选项会输出关于 cURL 请求和响应的详细调试信息,用于诊断和分析与 S3 存储桶的通信问题。
s3fs s3-bucket /mnt/minio/s3-bucket -o passwd_file=/etc/passwd-s3fs -o url=http://192.168.198.144:9000 -o use_path_request_style -d -f -o f2 -o curldbg


开机启动自动挂载

powershell 复制代码
# 编辑配置文件
vi /etc/fstab
# 查看配置文件
cat /etc/fstab
相关推荐
Chasing__Dreams2 分钟前
kafka--基础知识点--17--如何保证顺序消费
分布式·kafka
跟着珅聪学java15 小时前
在电商系统中,如何确保库存扣减的原子性
分布式
JH307317 小时前
Redisson 看门狗机制:让分布式锁“活”下去的智能保镖
分布式
一点 内容18 小时前
深入理解分布式共识算法 Raft:从原理到实践
分布式·区块链·共识算法
8Qi819 小时前
分布式锁-redission
java·redis·分布式·redisson
19 小时前
鸿蒙——分布式数据库
数据库·分布式
Hui Baby20 小时前
分布式多阶段入参参数获取
分布式
阿拉斯攀登1 天前
Spring Cloud Alibaba 生态中 RocketMQ 最佳实践
分布式·微服务·rocketmq·springcloud·cloudalibaba
无锡布里渊1 天前
感温光纤 DTS 系统 vs 感温电缆 对比分析报告
分布式·实时监测·分布式光纤测温·线型感温火灾监测·感温电缆
g32308631 天前
分布式框架seata AT模式源码分析
java·数据库·分布式