s3fs挂载对象存储到本地

一、S3FS介绍:

S3FS是Google开发的一款支持将对象存储中的bucket以文件形式导出的文件系统接口,兼容POSIX语法

S3FS基于FUSE开发的文件系统,允许Linux和Mac OS 挂载S3的存储桶到本地文件系统,并保持对象原来格式。

只要支持S3存储协议的都支持挂载,比如minio、华为云OBS、阿里云OSS等

二、安装 s3fs

centos 安装

yum -y install s3fs-fuse

ubantu 安装

apt install s3fs

三、挂载使用

S3FS参数说明

命令: s3fs BUCKET:[/PATH] MOUNTPOINT [OPTION]…

OPTIONS:

  • passwd_file: 指定要使用的s3fs密码文件
  • url: 设置用于访问对象存储的 url
  • endpoint: 存储端点,默认值为us-east-1
  • umask: 为装载目录设置umask
  • no_check_certificate: 不检查认证
  • use_path_request_style: 使用路径请求样式(使用传统API调用),兼容支持与不支持S3的类似api的虚拟主机请求
  • nonempty: 允许挂载点为非空目录
  • default_acl: 默认private,取值有private,public-read
  • ensure_diskfree: 设置磁盘可用空间。如果磁盘空闲空间小于此值,s3fs不适用磁盘空间
  • allow_other: 允许所有用户访问挂载点目录,可将该挂载点用于创建NFS共享
  • use_cache: 指定本地文件夹用作本地文件缓存。默认为空
  • del_cache: 在S3FS启动和退出时删除本地缓存
  • enable_noobj_cache: 减少s3fs发送的列举桶的请求,从而提升性能
  • dbglevel: 设置消息级别,默认关键(critical), 可以使用 info 进行调试输出
  • multireq_max: 列出对象的并行请求的最大数据
  • parallel_count: 上传大对象的并行请求数
  • retries: 默认值为5,传输失败重试次数
  • storage_class: 存储类(默认为标准) ,值有 standardstandard_ia , onezone_ia , reduced_redundancy
  • connect_timeout: 连接超时时间,默认为300秒
  • readwrite_timeout: 读写超时,默认值为60秒
  • max_stat_cache_size: 最大静态缓存大小,默认值为100000个条目(约40MB)
  • stat_cache_expire: 为stat缓存中条目指定过期时间(秒)。此过期时间表示自stat缓存后时间
  • -f : 前台输出执行信息
  • -d: 将dubug消息输出到 syslog中

创建访问密钥文件

将aksk或账号密码写入文件中

#命令格式:echo [IAM用户访问密钥ID]:[ IAM用户访问密钥] >[密钥文件名]
echo "username:password" > /data/s3fs/.passwd-s3fs 

# 设置密钥智能被当前用户访问
chmod 600 /data/s3fs/.passwd-s3fs

挂载 S3存储

利用S3fs在Amazon EC2 Linux实例上挂载S3存储桶

# 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]

s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://s3.cn-north-1.amazonaws.com.cn -o endpoint=cn-north-1

挂载华为云OBS


# 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]

s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://obs.cn-north-4.myhuaweicloud.com

挂载minio存储

# 需要加上 use_path_request_style进行兼容
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://www.mydomain.com:9001  -o use_path_request_style


# 可以使用 -o dbglevel=info -f  进行输出调试信息
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://www.mydomain.com:9001  -o use_path_request_style -o dbglevel=info -f

开机自动挂载

写入到 /etc/fstab

# 命令格式:s3fs#[S3存储桶名] [本地目录名] fuse _netdev,[options1],[optins2]... 0 0


s3fs#prodfile-bucket /data/s3fs/s3mnt fuse _netdev,passwd_file=/data/s3fs/.passwd-s3fs,url=http://obs.cn-north-4.myhuaweicloud.com  0 0