本节所介绍的S3FS fuse,是一款针对linux操作系统,帮助用户把对象存储桶挂载到本地文件系统的工具,使得用户操作存储桶里的数据就如同操作本地文件一样方便。
1.安装S3fs软件
debian系列:
更新软件源
apt update
安装s3fs
apt install s3fs
centos系列:
更新软件源
yum update
安装s3fs
yum install s3fs
2.挂载存储桶
示例存储桶:
自建miniio为例
存储桶地址:http://127.0.0.1:9000
账号:dhHvhafhUglqsTJUfPWG
密码:9hsEHyvDiRiLOVvt5bfrWy99deADrvL5AxQOxv6i
桶名称:000
1.创建密钥
echo 账号:密码 > 密钥路径
echo dhHvhafhUglqsTJUfPWG:9hsEHyvDiRiLOVvt5bfrWy99deADrvL5AxQOxv6i > /etc/passwd-s3fs
修改秘钥文件权限,来限制访问 :
chmod 600 /etc/passwd-s3fs
2.挂载存储
创建挂载目录 新建文件夹
mkdir /opt/000
挂载S3 存储桶
s3fs 000 /opt/000 -o passwd_file=/etc/passwd-s3fs -o url=http://127.0.0.1:9000 -o use_path_request_style -o allow_other
卸载 S3 存储桶
umount <挂载路径>
umount /opt/000
3.挂载参数
故障排除和调试
-d
启用调试模式。该选项会输出更详细的调试信息,用于故障排除和调试目的
-f
以前台模式运行。通常,s3fs 在后台运行并将挂载的 S3 存储桶映射到本地目录。使用 -f 选项,s3fs 将在前台运行,并将输出信息打印到终端。
-o curldbg
启用 cURL 调试输出。cURL 是 s3fs 使用的底层工具之一,用于与 S3 存储桶进行通信。启用 -o curldbg 选项会输出关于 cURL 请求和响应的详细调试信息,用于诊断和分析与 S3 存储桶的通信问题。
挂载参数
-o passwd_file=/path/to/passwd
指定包含MinIO访问密钥和密钥ID的文件的路径。
-o use_path_request_style
使用路径请求样式而不是子域请求样式
-o allow_other
允许其他用户访问挂载点。
-o umask=022
设置文件和目录的默认权限掩码。用全部权限777去减这个数值
-o nonempty
允许挂载非空目录
-o url=http://127.0.0.1:9000
指定对象存储服务器服务器的URL。
性能优化
-o f2
指定文件系统选项 "f2"。这个选项是 s3fs 的一个特殊选项,用于启用 FUSE 文件系统的第二代实现。它可用于提供更高的性能和可靠性。
-o use_cache=路径
指定本地磁盘缓存的路径。启用本地磁盘缓存可以显著提高读取性能。
-o stat_cache_expire=
设置目录和文件属性的缓存过期时间。较短的过期时间可确保及时获取对象的最新信息
-o enable_noobj_cache
启用对象的缓存,以避免重复的S3 HEAD请求。
-o max_parallel=10
指定并行请求的最大数量。
multipart_size=100M
设置多部分上传的分块大小,可以影响写入性能。
use_disk_cache
启用本地磁盘缓存。
disk_cache_size=1000M
设置本地磁盘缓存的大小限制。
4.使用supervisor启动s3fs 进程保活 开机自启
- 安装supervisor
apt install supervisor
- 建立一个目录,存放s3fs的启动脚本:
mkdir /root/s3fs_scripts
- 编辑启动脚本
nano /root/s3fs_scripts/start_s3fs.sh
- 写入启动脚本
s3fs 000 /opt/s3000 -o passwd_file=/opt/passwd-s3fs -o url=http://127.0.0.1:9000 -o use_path_request_style -o allow_other
- 编辑/etc/supervisor/supervisord.conf,在最后加入下面一段:
[program:s3fs]
command=bash /root/s3fs_scripts/start_s3fs.sh #脚本路径
logfile=/var/log/s3fs.log
log_stdout=true
log_stderr=true
logfile_maxbytes=1MB
logfile_backups=10
- 运行supervisor:
supervisord
- 确认一切正常:
ps aux | grep supervisor # 应该能看到supervisor进程
ps aux | grep s3fs # 应该能看到s3fs进程
killall s3fs # 杀掉s3fs进程,supervisor应该会重启它
ps aux | grep s3fs # 应该能看到s3fs进程
如果出错,请检查/var/log/supervisor/supervisord.log和/var/log/s3fs.log。