Linux 使用 S3fs 挂载 S3 存储桶(以 MinIO 为例)

1 相关概念简述

1.1 Amazon S3

Amazon Simple Storage Service (Amazon S3) 是由亚马逊网络服务(AWS)提供的一种高度可扩展、可靠、安全、低成本的在线对象存储服务。

Amazon S3 被设计成通过 web 服务接口存储和检索任意数量的数据,从任何地方的互联网访问。它是 AWS 产品组合中最成熟的服务之一,自 2006 年首次推出以来,已经成为全球广泛采用的云存储解决方案。

1.2 S3fs

s3fs 是一个基于 FUSE(Filesystem in Userspace) 的文件系统,它允许你将 Amazon S3 或其他兼容 S3 API 的对象存储服务挂载到本地文件系统中,从而能够像访问本地磁盘一样访问远程对象存储,像操作本地文件系统一样操作 S3 存储桶中的文件和目录。

1.3 MinIO

MinIO 是一个对象存储解决方案,它提供了高性能、高可扩展性以及分布式的存储,支持 Amazon S3 API ,使用 S3 的工具或应用程序都可以与 MinIO 无缝集成。

2 MinIO 准备

2.1 安装 Docker

# 卸载旧版本
sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine
# 安装GCC编译器相关
sudo yum -y install gcc
sudo yum -y install gcc-c++
# 配置yum资源库
sudo yum install -y yum-utils
# 配置阿里云镜像
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动docker
sudo systemctl start docker

2.2 安装 MinIO

# 参数 MINIO_ACCESS_KEY 为登录账号(至少3位),MINIO_SECRET_KEY 为登录密码(至少8位)
docker run --restart=always \
           -p 9000:9000 \
           -p 9001:9001 \
           --privileged=true \
           -v /app/minio/data:/data \
           -v /app/minio/config:/root/.minio \
           -e MINIO_ACCESS_KEY=minioadmin \
           -e MINIO_SECRET_KEY=12345678 \
           --name minio \
           -d minio/minio \
           server /data --console-address ":9001" -address ":9000"

手动上传 docker 镜像

# 下载后上传到服务器,会得到一个镜像 tar 文件,导入镜像再执行上述启动命令即可
docker load -i minio.tar

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3 创建存储桶

  • 访问地址:http://192.168.198.144:9001

注:IP 地址为安装 MinIO 的服务器 IP,账号密码为启动容器时设置的 MINIO_ACCESS_KEY、MINIO_SECRET_KEY 参数

  • 创建存储桶 s3-bucket

在这里插入图片描述

3 S3fs 挂载 S3 存储桶

3.1 安装 S3fs

# 安装启用 EPEL 仓库
yum install epel-release
# 安装 s3fs
yum install s3fs-fuse
# 查看 s3fs 版本,确定是否成功安装
s3fs --version

在这里插入图片描述

3.2 挂载 S3 存储桶

# 创建 passwd 文件
touch /etc/passwd-s3fs
# MINIO_ACCESS_KEY:登录账号  MINIO_SECRET_KEY:登录密码
# echo <MINIO_ACCESS_KEY>:<MINIO_SECRET_KEY> > /etc/passwd-s3fs
echo minioadmin:12345678 > /etc/passwd-s3fs
# 设置密钥文件只能够被当前用户访问
chmod 600 /etc/passwd-s3fs

# 创建挂载目录(-p 选项可以递归创建目录)
mkdir -p /mnt/minio/s3-bucket
# 挂载 S3	存储桶到本地文件系统
# s3fs <存储桶名称> <挂载路径> -o passwd_file=<密钥文件> -o url=<S3兼容存储服务访问点> -o use_path_request_style
# 注:默认情况下,s3fs 使用的是“虚拟主机”(virtual hosting)请求风格,这意味着在访问 bucket 中的对象时,URL 会直接使用 bucket 名称作为子域名。增加参数 -o use_path_request_style 则不会改用路径请求风格
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

检查挂载结果

df -h

在这里插入图片描述

卸载 S3 存储桶

# umount <挂载路径>
umount /mnt/minio/s3-bucket

在这里插入图片描述

挂载故障排除和调试

# 在挂载命令后增加几个参数 -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

在这里插入图片描述

3.3 开机自动挂载 S3 存储桶

查找并显示可执行命令 s3fs 的完整路径

which s3fs

编辑配置文件

# 编辑配置文件
vi /etc/fstab
# 查看配置文件
cat /etc/fstab

在这里插入图片描述

# 追加自动挂载命令配置(注:如果 MinIO 也安装在同一台服务器则可能会自动挂载失败,因为挂载时需要确保 S3 存储桶能正常访问)
# 命令格式:[s3fs可执行文件路径]#[S3存储桶] [挂载路径] fuse _netdev,use_path_request_style,url=<S3兼容存储服务访问点>,passwd_file=<密钥文件> 0 0
# _netdev 选项告诉内核此挂载点可能会通过网络访问,因此应该在网络就绪后才尝试挂载
# use_path_request_style 指定使用路径请求风格,即访问 S3 存储桶的方式与传统的 HTTP URL 请求类似,而不是使用虚拟主机风格
# 0 0 这两个数字分别代表挂载点的用户 ID(uid)和组 ID(gid),它们控制着谁可以访问挂载的文件系统。在这里,使用 0 0 意味着 root 用户和 root 组将拥有权限

/usr/bin/s3fs#s3-bucket /mnt/minio/s3-bucket fuse _netdev,use_path_request_style,url=http://192.168.198.144:9000,passwd_file=/etc/passwd-s3fs 0 0

3.4 简单测试

在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_秋牧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值