[转帖]使用 goofys 挂载 S3 bucket 为文件系统

使用,goofys,挂载,s3,bucket,文件系统 · 浏览次数 : 0

小编点评

**背景** * gitlab 目前直接存储在物理盘上,导致数据丢失的风险。 * 为了确保数据安全,需要进行多次备份到不同地方。 * 备份过程中会有多次 IO,影响机器的性能。 **解决方案** * 使用 Goofys 将 S3 bucket挂载到本地。 * Goofys 是一个文件系统,可以将 S3 bucket 与本地文件系统挂载起来。 * 通过设置环境变量,可以指定 S3 认证的 key 和区域。 **步骤** 1. 安装 Goofys。 2. 安装 Go 的版本为 go1.16.4。 3. 运行 `goofys --debug_fuse --debug_s3 --region beijing --endpoint {endpoint} {bucket} /mnt` 命令挂载 S3 bucket。 4. 查看挂载状态:`df -h`。 **注意** * 将 `{endpoint}` 和 `{bucket}` 替换为您的 S3 存储桶的 endpoint 和 bucket。 * Goofys 需要安装 Go 的源代码版本。 **其他信息** * Goofys 是一种性能优先的文件系统,它比 S3fs 更快。 * Goofys 使用 POSIX 模式,确保文件的安全性。

正文

https://xie.infoq.cn/article/7f178e0a1315f758d77c6c2bb

 

背景

公司的 gitlab 目前都是直接存储在物理盘上,为了确保数据不会丢失,需要重复多次备份到不同的地方,备份的过程中会有多次 IO,影响机器的性能,且随着数据量的增长,备份所需的时间也越来越长,因此需要寻找合适的存储方案。最先尝试 gitlab 推荐的 Minio,经过查阅官方文档,Minio 和 S3 类似,于是想到通过 goofys 将 S3 bucket 挂载到本地,当做文件系统来用,同时也尝试了 s3fs。

goofys 介绍

官方文档的介绍如下:

Goofys allows you to mount an S3 bucket as a filey system.

It's a Filey System instead of a File System because goofys strives for performance first and POSIX second. Particularly things that are difficult to support on S3 or would translate into more than one round-trip would either fail (random writes) or faked (no per-file permission). Goofys does not have an on disk data cache (checkout catfs), and consistency model is close-to-open.

goofys 与 s3fs 的性能对比如下(github 上的性能对比图):

goofys与s3fs性能对比

我们可以看到,在读写文件等各方面,goofys 的性能均优越于 s3fs,因此采用 goofys 将 s3 bucket 挂载到本地,当做本地文件系统来使用。

 

goofys 安装

本文使用 Go 从源代码构建安装 goofys

一、go 安装

 
yum install go
 
 
 
复制代码
 

安装的 go 版本为:go1.10.3 linux/amd64,由于后续在安装的过程中,因为 go 的版本过低,导致安装失败,因此将 go 的版本升级为 go1.16.4 linux/amd64,操作步骤如下:

1、登录 Go国内下载网址 ,当前为 centos 系统,下载 go1.16.4.linux-amd64.tar.gz

2、找到之前 go 版本存放路径,使用命令 whereis go;

3、升级为新版本

 
# 将旧版本备份cd /usr/localmv go go.1.10.3
# 将新版本go压缩包解开当前目录tar zxf go1.16.4.linux-amd64.tar.gz
# 目录下会释放出go目录ls -l go
# 将 /usr/local/go/bin 目录添加至PATH环境变量 export PATH=$PATH:/usr/local/go/bin
 
 
 
复制代码
 

4、检查 go 版本,go version

 

二、goofys 从源代码构建

 
$ export GOPATH=$HOME/work$ go get github.com/kahing/goofys$ go install github.com/kahing/goofys
 
 
 
复制代码
 

 

goofys 挂载 s3 bucket

1、将 s3 认证的 key 等信息设置为环境变量

 
export AWS_ACCESS_KEY_ID=export AWS_SECRET_ACCESS_KEY=export AWS_DEFAULT_REGION=us-west-2
 
 
 
复制代码
 

2、新建挂载点 /mnt

 
mkdir /mnt
 
 
 
复制代码
 

3、挂载

 
/usr/local/bin/goofys --debug_fuse --debug_s3 --region beijing --endpoint {endpoint} {bucket} /mnt
 
 
 
复制代码
 

4、查看挂载是否成功 df -h 命令

 

参考文档

1、goofys github 地址: https://github.com/kahing/goofys

2、aws cli 设置环境变量:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html

与[转帖]使用 goofys 挂载 S3 bucket 为文件系统相似的内容:

[转帖]使用 goofys 挂载 S3 bucket 为文件系统

https://xie.infoq.cn/article/7f178e0a1315f758d77c6c2bb 背景 公司的 gitlab 目前都是直接存储在物理盘上,为了确保数据不会丢失,需要重复多次备份到不同的地方,备份的过程中会有多次 IO,影响机器的性能,且随着数据量的增长,备份所需的时间也越

[转帖]编译安装goofys挂载Scaleway免费75G对象存储

日常•2022年5月29日 goofys编译 goofys是一个开源的使用Go编写的s3存储桶挂载工具,主打高性能。由于使用Go编写,没有用到什么特别的依赖,自己编译也很容易。截止2022.5.27,官方github仓库貌似一直有提交,但是提供的预编译安装包貌似只到2020年4月,而且只有x86版本

[转帖]使用JMX服务监控Java程序性能

https://www.jianshu.com/p/3c3c836c1c20?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 背景 单机收集服务器需要性能监控和测试。 JMX

[转帖]使用 tc netem 模拟网络异常

https://cizixs.com/2017/10/23/tc-netem-for-terrible-network/ 在某些情况下,我们需要模拟网络很差的状态来测试软件能够正常工作,比如网络延迟、丢包、乱序、重复等。linux 系统强大的流量控制工具 tc 能很轻松地完成,tc 命令行是 ipr

[转帖]使用 sysdig 进行监控和调试 linux 机器

https://cizixs.com/2017/04/27/sysdig-for-linux-system-monitor-and-analysis/ sysdig 简介 sysdig 官网 上对自己的介绍是: Open Source Universal System Visibility With

[转帖]使用MAT命令行工具生成堆dump分析文件

https://www.cnblogs.com/hellxz/p/use_mat_linux_command_line_generate_reports.html 写作目标 Java程序运行过程中,难免会出现 OOM,往往是在 JVM 启动参数中添加出现 OOM 时输出堆 dump(又名:堆转储、堆

[转帖]使用火焰图(FlameGraph)分析程序性能

火焰图概念 火焰图(FlameGraph)是 svg 格式的矢量图,是先通过 perf 等工具分析得到结果,并将该结果生成的具有不同层次且支持互动的图片,看起来就像是火焰,这也是它的名字的由来。表现形式如下所示: 需要注意以下几点: 纵向(Y 轴)高低不平,表示的是函数调用栈的深度。每一层都是一个函

[转帖]使用Prometheus和Grafana监控RabbitMQ集群 (使用RabbitMQ自带插件)

https://www.cnblogs.com/hahaha111122222/p/15683696.html 配置RabbitMQ集群 官方文档:https://www.rabbitmq.com/prometheus.html#quick-start 官方github地址:https://gith

[转帖]使用Flame Graph进行系统性能分析

http://t.zoukankan.com/arnoldlu-p-10148558.html 关键词:Flame Graph、perf、perl。 FlameGraph是由BrendanGregg开发的一款开源可视化性能分析工具,形象的成为火焰图。 从底向上像火苗一样逐渐变小,也反映了相互之间的包

[转帖]使用 nsenter、dig 和 tcpdump 调试 Kubernetes 网络问题

https://zhuanlan.zhihu.com/p/410217354 使用 nsenter、dig 和 tcpdump 调试 Kubernetes 网络问题 作为 Kubernetes 管理员,我经常发现自己需要调试应用程序和系统问题。我遇到的大多数问题都可以通过 Grafana 仪表板和