项目简介
go-s3fs 是一款适用于 Linux/MacOS 系统的工具,它能够将 S3 存储桶挂载到本地挂载点。挂载成功后,用户可以像操作本地文件一样操作 S3 存储桶里的文件,极大地方便了对 S3 存储桶的访问。
项目的主要特性和功能
- 广泛适配:适配任何使用 S3 协议的对象存储提供商。
- 功能丰富:支持 POSIX 文件系统的大部分功能,包括读、顺序写,以及权限、uid/gid 管理。
- 性能优越:相较于
s3fs-fuse
,具有更高的性能。 - 权限可控:支持对挂载点进行访问权限控制。
安装使用步骤
环境准备
确保机器支持 fuse,且 fuse 版本大于 7.23。
配置账号访问信息
编辑 /etc/go-s3fs/go-s3fs.yaml
并添加如下内容(若该目录不存在需自行创建):
access_key: ************************************
secret_key: ************************************
endpoint: <s3 endpoint, like: s3-us-west-2.amazonaws.com>
冒号后需有单个空格。其中,access_key
为公钥,支持 token 秘钥和 api 秘钥两种模式;secret_key
为私钥,同样支持这两种模式;endpoint
是 s3 的访问域名。
赋予执行权限
下载 go-s3fs 后,使用 chmod +x go-s3fs
增加可执行权限。若要直接执行,可将 go-s3fs 移动到 /bin
目录下。示例:
bash
chmod +x go-s3fs
挂载操作
go-s3fs [global options] <bucket> <mountpoint>
卸载操作
umount <mountpoint>
前台挂载
./go-s3fs --passwd=passwd_file -f <bucket> <mountpoint>
开启日志
若想设置日志级别或日志输出目录,示例如下:
./go-s3fs --passwd=passwd_file --level debug --log_dir /var/log/go-s3fs/ <bucket> <mountpoint>
查看帮助
通过 go-s3fs -h
查看 go-s3fs 支持的参数。
设置 fuse 层参数
fuse 常用选项列表(与 -o
一起使用):
| 选项名称 | 描述 |
| --- | --- |
| allow_other | 指定文件系统可以所有用户访问,默认关闭 |
| ro | 指定当前文件系统为只读 |
使用方式:
bash
-o option=value
本地服务支持
在 ubuntu 和 centos 等使用 systemctl 的发行版中,可在 /etc/systemd/system/
目录下创建名为 go-s3fs.service
的文件,并添加如下内容:
```bash
[Unit]
Description=GO_S3FS (User Space FileSystem for S3)
Requires=network-online.target
After=network-online.target
[Service]
Type=forking
User=``
User为需要访问挂载点的用户,若为 root 则可省略;
Group为需要访问挂载点的用户组,若为 root 则可省略;
ExecStart为挂载命令,需按实际情况填写。
执行
systemctl dameon-reload后,可使用
systemctl start go-s3fs.service启动服务,
systemctl stop go-s3fs.service停止服务,
systemctl restart go-s3fs.service重启服务,
systemctl statue go-s3fs.service查看服务状态,
systemctl enable go-s3fs.service` 设置为开机自启动。
查看监控
项目自带监控展示,可查看相关性能指标。
自带 pprof
go-s3fs 启动时,会在 8899 端口监听 pprof,便于问题定位。
使用限制
- 仅支持顺序写,不支持随机写/追加写。
- 不支持硬/软链接。
- 由于对象存储端的限制,rename 会替换成 copy+delete,因此 rename 是非原子性的操作。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】