基于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
相关推荐
长河10 小时前
Kafka系列教程 - Kafka 生产者 -2
分布式·kafka
小马爱打代码10 小时前
Kafka 可观测性最佳实践
分布式·kafka
FLGB10 小时前
Kafka topic消息被自动删除 排查
分布式·kafka
机智阳12 小时前
介绍一个InnoDB的数据页,和B+树的关系是什么?
java·数据结构·分布式·后端·b树
说淑人12 小时前
分布式 & CAP理论 & 总结
分布式
AI有温度12 小时前
图解大模型分布式训练:流水线并行
分布式
阿里技术13 小时前
HNSW 分布式构建实践
分布式·算法·方案·hnsw·向量检索
Java 第一深情13 小时前
分布式全文检索引擎ElasticSearch-基本概念介绍
分布式·elasticsearch·全文检索
说淑人13 小时前
分布式 & 分布式事务 & 总结
分布式·分布式事务
明达技术13 小时前
MR30分布式IO在新能源领域加氢站的应用
分布式