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 为文件系统的更多相关文章

  1. [AWS] S3 Bucket

    云存储服务 2.1 为网站打开属性 属性和权限设置 设置bucket属性,打开功能:Static website hosting(静态网站托管) 设置bucket权限,Permissions ---- ...

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

    一.准备!!! 1.使用拥有足够权限的IAM账号登录AWS控制台 2.创建S3存储桶,给存储桶命名如"my-bucket"(如果使用已有存储桶,本步骤可略过) 3.有该S3存储桶访 ...

  3. 嵌入式环境:挂载开发板根NFS文件系统失败

    挂载开发板根NFS文件系统的时候,发现了下面的问题: Looking up port of RPC 100003/2 on 192.168.2.109rpcbind: server 192.168.2 ...

  4. 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 百篇博客分析OpenHarmony源码 | v65.01

    百篇博客系列篇.本篇为: v65.xx 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...

  5. aws ec2挂载 s3

    配置s3 挂载 aws ec2 安装依赖包:yum install  -y  automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-de ...

  6. 阿里云oss挂载到linux本地文件系统

    对象存储 OSS 阿里云对象存储服务 (OSS) 是一种高度可伸缩且安全可靠的云对象存储服务,让您可以存储.备份和归档大量数据.阿里云 OSS 是一种简单易用的服务,让您每秒能处理数百万请求,它还支持 ...

  7. CentOS6.5下挂载NTFS格式的文件系统

    下载对应CentOS版本的rpmforge,下载地址:http://pkgs.repoforge.org/rpmforge-release/ 安装rpmforge,输入命令:# rpm -ivh rp ...

  8. 使用 SSHFS 挂载远程的 Linux 文件系统及目录

    1. 安装 sudo apt-get install sshfs 2. 创建 SSHFS 挂载目录 sudo mkdir /mnt/cong 3.使用 SSHFS 挂载远程的文件系统 sudo ssh ...

  9. s3fs 挂载minio为本地文件系统

    https://github.com/s3fs-fuse/s3fs-fuse echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3f ...

  10. 使用s3fs-fuse 挂载minio s3 对象存储

    minio 是一个aws s3 兼容的对象存储系统,我们可以通过s3fs 进行数据桶的挂载,这样可以做好多方便的事情 环境准备 使用docker-compose 运行 minio docker-com ...

随机推荐

  1. 逼疯UE设计师,不可不知的提升产品用户体验的10个测试方法

    摘要:用户体验的描述比较主观,产品功能的可用性.可靠性.性能等都会影响用户的使用体验,比如功能bug问题也会说体验不好,程序崩溃也会说体验不好,性能卡顿会说体验不好,那是不是都在用户体验测试的范围呢? ...

  2. 一个合格的CloudNative应用:程序当开源软件编写,应用配置外置

    摘要:对于一个合格的CloudNative应用,应该把自己的程序当做开源软件来编写的,不该将数据库连接信息和密码放在代码里,一定要将配置外置. 对于一个合格的CloudNative应用,应该把自己的程 ...

  3. 【“互联网+”大赛华为云赛道】GaussDB命题攻略:支持三种开发语言,轻松完成数据库缓冲池

    摘要:七届中国国际"互联网+"大学生创新创业大赛火热报名中,为了帮助参赛者更好了解赛题设计思路和命题方向,华为云产业命题赛道举行了线上直播解读,华为云数据库资深架构师苏斌在直播间详 ...

  4. 对不起,你做的 A/B 实验都是错的——火山引擎 DataTester 科普

    DataTester 是火山引擎数智平台旗下产品,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复杂的 A/B 实验类型.DataTester 深度耦合推荐.广告.搜索.UI.产品功 ...

  5. PPT 如何将大段WORD制作成PPT

    PPT 如何将大段WORD制作成PPT 标记等级 发送到PPT 图片.表格,无法发送

  6. PPT 做出动态路线动画

    https://www.iconfont.cn/ 插入,起点.终点,两图标 编辑顶点,调整路线 添加淡出动画,持续时间1秒 再添加直线 从上一项开始 效果选项中,选择自动翻转 计时 -> 期间 ...

  7. 提供免费 TPU 的 ControlNet 微调活动来啦

    相信大家已经感受到 AI 绘画的魅力,多多少少也可以自称半个「prompt 小专家」了,而在 AI 绘画的时候 Stable Diffusion 也会出现一些小瑕疵,比如 AI 不是灵魂画「手」,还有 ...

  8. 叫板GPT-4的Gemini,我做了一个聊天网页,可图片输入,附教程

    先看效果: 简介 Gemini 是谷歌研发的最新一代大语言模型,目前有三个版本,被称为中杯.大杯.超大杯,Gemini Ultra 号称可与GPT-4一较高低: Gemini Nano(预览访问) 为 ...

  9. drf-Response drf-request.data 序列化类的使用 反序列化新增、修改、删除数据

    目录 APIView基本使用 使用原生Django写接口(View + JsonResponse) 使用drf写接口(APIView + drf Response) drf 两种导入View的方式 d ...

  10. Windows Tools | How To Install VS Microsoft C++ Build Tools on Windows

    This can be used for installing anything that requires C++ compiler on Windows. Installation steps D ...