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. idea配置tomcat热部署

    idea配置tomcat热部署,点击+添加一个local的tomcat服务 点击部署tab 添加Artifact...选择 一定要选择exploded,否则没有热部署选项!!! 一定要选择explod ...

  2. SQL 的递归查询

    在一般的业务场景中,特别是针对相关的业务线相关的功能开发时,可能会遇到一些具有层级关系的数据关联结构.比如,一个员工可能属于一个领导管辖,而同时,这个领导也被另一个更高级别的领导管辖--,而本质上这些 ...

  3. macOS 安装 clang-tidy

    先安装 homebrew,网上教程很多,推荐官方教程,此处略过 通过 brew 安装 llvm brew install llvm 创建软连接,指向 homebrew 安装的 clang-tidy m ...

  4. AUC/ROC:面试中80%都会问的知识点

    摘要:ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的问题(80%都会问到) 本文分享自华为云社区<技术干货 | 解决面试中80%问题,基于MindSpore实现AUC/ROC ...

  5. 火山引擎ByteHouse:如何用OLAP引擎提升数字营销效果?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   随着市场竞争的加剧,企业对数字营销投入的效果监测和优化需求日益增强,营销实时监控也成为企业提升运营效率的重要手 ...

  6. 字节跳动基于ClickHouse优化实践之“高可用”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻.但在字节大量生产使用中 ...

  7. Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置

    三台虚机的IP地址被DHCP重分了一下1.MySQL 配置 先建一个 nacos_config 数据库 将SQL执行(方法很多,选自己喜欢的就行) 2.修改 application.propertie ...

  8. AtCoder ABC 206

    比赛链接:Here AB水题,跳过 C - Swappable 在数组中找到满足条件的数对 \((i,j)\) \(1 \le i < j \le N (N\in[2,3e5])\) \(A_i ...

  9. 一篇文章教你从入门到精通 Google 指纹验证功能

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EHomjBy4Tvm8u962J6ZgsA作者:Sun Daxiang Google 从 An ...

  10. 为什么 Serverless 能提升资源利用率?

    木吴|阿里云智能高级技术专家 业务的负载往往不是一成不变的,而是随着时间呈现一定的上下波动.传统的应用构建方式一般是备足充分的资源以保障业务可用性,造成资源利用率不高的现象.随着容器技术的普及,应用可 ...