[转帖]使用 goofys 挂载 S3 bucket 为文件系统
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 将 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 为文件系统的更多相关文章
- [AWS] S3 Bucket
云存储服务 2.1 为网站打开属性 属性和权限设置 设置bucket属性,打开功能:Static website hosting(静态网站托管) 设置bucket权限,Permissions ---- ...
- 利用S3fs在Amazon EC2 Linux实例上挂载S3存储桶
一.准备!!! 1.使用拥有足够权限的IAM账号登录AWS控制台 2.创建S3存储桶,给存储桶命名如"my-bucket"(如果使用已有存储桶,本步骤可略过) 3.有该S3存储桶访 ...
- 嵌入式环境:挂载开发板根NFS文件系统失败
挂载开发板根NFS文件系统的时候,发现了下面的问题: Looking up port of RPC 100003/2 on 192.168.2.109rpcbind: server 192.168.2 ...
- 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 百篇博客分析OpenHarmony源码 | v65.01
百篇博客系列篇.本篇为: v65.xx 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...
- aws ec2挂载 s3
配置s3 挂载 aws ec2 安装依赖包:yum install -y automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-de ...
- 阿里云oss挂载到linux本地文件系统
对象存储 OSS 阿里云对象存储服务 (OSS) 是一种高度可伸缩且安全可靠的云对象存储服务,让您可以存储.备份和归档大量数据.阿里云 OSS 是一种简单易用的服务,让您每秒能处理数百万请求,它还支持 ...
- CentOS6.5下挂载NTFS格式的文件系统
下载对应CentOS版本的rpmforge,下载地址:http://pkgs.repoforge.org/rpmforge-release/ 安装rpmforge,输入命令:# rpm -ivh rp ...
- 使用 SSHFS 挂载远程的 Linux 文件系统及目录
1. 安装 sudo apt-get install sshfs 2. 创建 SSHFS 挂载目录 sudo mkdir /mnt/cong 3.使用 SSHFS 挂载远程的文件系统 sudo ssh ...
- s3fs 挂载minio为本地文件系统
https://github.com/s3fs-fuse/s3fs-fuse echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3f ...
- 使用s3fs-fuse 挂载minio s3 对象存储
minio 是一个aws s3 兼容的对象存储系统,我们可以通过s3fs 进行数据桶的挂载,这样可以做好多方便的事情 环境准备 使用docker-compose 运行 minio docker-com ...
随机推荐
- flutter中InheritedWidget共享数据
InheritedWidget是Flutter框架中用于在Widget树中共享数据的机制.它是一个特殊的Widget,可以将其放置在Widget树的上层,并向下传递共享的数据给其子Widget.子Wi ...
- 网络性能总不好?网络调优专家AOE帮你来“看看”
摘要:为提升网络性能.降低人工调优成本,CANN推出了自动化网络调优工具AOE,通过子图调优.算子调优与梯度调优的功能,让网络可以在AI硬件上获得最佳性能. 本文分享自华为云社区<网络性能总不好 ...
- 云小课|云小课带您快速了解LTS可视化查看
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 可视化查看是日志 ...
- GaussDB(for openGauss)让数据“存得下、算得快、算得准”
摘要:本文从总体架构.数据分布方式.计算下推.数据强一致等方面进行介绍GaussDB(for openGauss). 1.前言 随着云计算规模越来越大,企业业务数据量呈指数级增长,传统数据库在海量数据 ...
- 对象存储只能按文件名搜索,你out了吧
摘要:不少大公司的一个桶里都是几亿几十亿的对象,那他们都是怎么检索的呢? 本文分享自华为云社区<对象存储只能按文件名搜索? 用 DWR + ElasticSearch 实现文件名.文件内容.图片 ...
- Solon Aop 特色开发(5)切面与环绕拦截
Solon,更小.更快.更自由!本系列专门介绍Solon Aop方面的特色: <Solon Aop 特色开发(1)注入或手动获取配置> <Solon Aop 特色开发(2)注入或手动 ...
- PPT 动画入门
元素动画 进入动画 元素从无到有的过程 退出动画 元素从有到无的过程 退出动画和进入动画,一对一 强调动画 在元素上变化的过程(如放大) 动作路径 3D动画 三维动画 低版本不支持 组合动画 切换动画 ...
- mit6.s081 lab2: system calls
1.system call tracing(moderate) 要求:创建一个系统调用来实现跟踪特性,它采用一个参数来指定跟踪哪一个系统调用,例如:跟踪fork系统调用,程序调用trace(1< ...
- 【JAVA基础】List处理
List处理 List使用Lists.partition()分片 public static <T> List<List<T>> partition(List< ...
- L2-012 关于堆的判断 (25分) (字符串處理)
将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: x is the root:x是根结点: x and y are siblings:x和y是兄弟结 ...