日常•2022年5月29日
 

goofys编译

goofys是一个开源的使用Go编写的s3存储桶挂载工具,主打高性能。由于使用Go编写,没有用到什么特别的依赖,自己编译也很容易。截止2022.5.27,官方github仓库貌似一直有提交,但是提供的预编译安装包貌似只到2020年4月,而且只有x86版本,而我自己需要arm64版本,我决定自行编译安装下。安装环境为Scaleway法国地区的1核心1G内存实例,系统为Ubuntu 20.04。

首先下载Go,目前最新版本Go为1.18.2

wget https://go.dev/dl/go1.18.2.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.2.linux-amd64.tar.gz
cd /usr/local/go
export PATH=$PATH:/usr/local/go/bin
go version
Copy

执行完毕以后,就可以看到终端输出了Go版本,

 go version go1.18.2 linux/amd64
Copy

如此,即为安装成功。

cd $HOME
export GOPATH=$HOME/work
git clone https://github.com/kahing/goofys
make build && make install
Copy

执行过程只要不报错,变会在$HOME/work/bin下输出goofys文件,它就是基于最新提交编译出的goofys,直接执行以下命令:

chmod +x $HOME/work/bin/goofys
$HOME/work/bin/goofys -v
Copy

输出如下:

goofys version 0.24.0-829d8e5ce20faa3f9f6f054077a14325e00e9249
Copy

此时得到的包便是goofys-linux-amd64二进制文件。

由于我还需要arm64的二进制文件,因此直接在本机交叉编译,Go的交叉编译非常容易,执行如下命令

CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-X main.Version=`git rev-parse HEAD`"
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go install -ldflags "-X main.Version=`git rev-parse HEAD`"
Copy

编译过程较慢,只要不报错,便会在$HOME/work/bin/linux_arm64下生成适用于arm64的goofys

安装挂载

由于我主要是想白嫖Scaleway免费的75G对象存储用作备份,因此以下操作都是基于Scaleway 法国地区的vps进行的。

配置认证密钥

mkdir /root/.aws
nano /root/.aws/credentials
Copy

输入以下内容,该密钥可以从Scaleway控制台 - Credentials - Generate New API Key 获得

[default]
aws_access_key_id = SCW*************
aws_secret_access_key = **************
Copy

安装并挂载Scaleway对象存储

cp $HOME/work/bin/goofys /usr/bin/goofys
chmod +x /usr/bin/goofys
goofys -o allow_other --endpoint=https://s3.fr-par.scw.cloud/ --storage-class=ONEZONE_IA [bucketname] [mount-point]
Copy

Scaleway 法国区免费的75G只适用于ONEZONE_IA和GlACIER冷存储,因此需要手动指定storage-class, 将以上命令的[bucketname]替换为存储桶的名字, [mount-point]替换为vps上的挂载点即可成功挂载Scaleway的对象存储。

[可选]如果需要开机自动挂载,则可以编辑/etc/fstab文件实现开机自动挂载

nano /etc/fstab
Copy

添加一行以下内容

goofys#[bucketname] [mount-point] fuse _netdev,allow_other,--endpoint=https://s3.fr-par.scw.cloud/,--storage-class=ONEZONE_IA 0 0
Copy

测试

由于goofys主打高性能,这里我不做数值上的定量测试,就自行使用体验来说,goofys挂载的对象存储相对于s3fs挂载的对象存储,无论是ls,cp,mv等操作,反应明显更迅速,响应更快,如果追求快速响应,goofys是一个好选择。至于具体数值上的性能测试的话由于我懒,贴个goofys官方的图好了

问题

自行使用中发现的最大问题:goofys挂载的对象存储不支持metadata操作,无论是文件修改时间,还是权限,所属用户组,反应在文件系统上的都是使用的对象存储中记录的修改时间,或是goofys的默认值,而非记录在对象存储文件metadata中的内容。
同时,通过goofys挂载点写入的文件,也不会在对象存储中写入metadata信息。文件使用s3fs写入与goofys写入同一个对象存储桶中的区别如下:

使用s3fs挂载写入的文件使用goofys挂载写入的文件

显然,使用goofys写入的文件完全没有写入metadata信息。

总结

goofys是个好东西,但是由于不支持metadata操作,在一些情况下可能很致命。例如我的用例下,我使用rsync在scaleway的对象存储中备份seafile-data。由于rsync是增量备份,其对文件是否相同是否需要传输的识别过程基于文件修改时间与大小,因此goofys不支持metadata读写直接导致我无法使用rsync进行文件同步。如果使用rsync在goofys挂载的对象存储上进行备份,会导致rsync每次同步时认为所有源文件与目标文件的修改时间不一致,导致每个文件都被额外传输,造成严重带宽浪费。不过由于goofys的性能确实比s3fs更好,在一些不需要metadata操作的情况下可能会比s3fs更好。
顺带一提,经过测试,scaleway的免费75G对象存储是每个存储区75G,也就是说目前scaleway有荷兰、法国、波兰三个数据中心,可以每个区域免费存75G,直接就是免费225G存储,更不提每个区还有额外免费的75G冷存储,简直业界良心。配合便宜的Scaleway StarDust1-S机器,年付几十块,可以获得不限流量且不计请求数的对象存储,除了数据中心在欧洲国内连入速度可能较慢,其在价格上基本是无敌了。

标签

[转帖]编译安装goofys挂载Scaleway免费75G对象存储的更多相关文章

  1. 架构师小跟班:教你从零开始申请和配置七牛云免费OSS对象存储(不能再详细了)

    背景 之前为了练习Linux系统使用,在阿里云上低价买了一台服务器(网站首页有活动链接,传送门),心里想反正闲着也是闲着,就放了一个网站上去.现在随着数据越来越多,服务器空间越来越吃紧,我就考虑使用七 ...

  2. Hadoop集群搭建-03编译安装hadoop

    Hadoop集群搭建-05安装配置YARN Hadoop集群搭建-04安装配置HDFS  Hadoop集群搭建-03编译安装hadoop Hadoop集群搭建-02安装配置Zookeeper Hado ...

  3. 七牛云免费对象存储,并绑定到cloudreve中

    之前开通了腾讯云的对象存储COS并使用中,不过之前主要将它当作云盘使用,这两天再做博客系统时发现也可以将它作为网站的图库,这样对网站的访问效率也会提高. 今天了解到七牛云有免费的对象存储可以使用,于是 ...

  4. 【转帖】嵌入式4412开发板QT5.7编译安装到arm

    QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录 本文转自迅为4412开发板群:http://to ...

  5. [转帖]MySQL5.7.20编译安装

    MySQL5.7.20编译安装 尝试一下 想着 我在arm上面最终安装失败了. https://www.cnblogs.com/shengdimaya/p/8027507.html 1:官网下载sou ...

  6. 在CDlinux下编译安装无线网卡驱动

    环境 主机:ThinkPadT440P 系统:CDlinux9.7.1 概述 准备利用CDlinux来破解周围的wifi密码来免费蹭网,由于笔记本是新买的,系统没有自带驱动,只能自己手动到网上下载.编 ...

  7. 加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04)

    加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制 ...

  8. 编译安装 Zend Opcache 缓存Opcache,加速 PHP

    Optimizer+ 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件,是第一个也是最快的 opcode 缓存工具.现在,Zend 科技公司将 Optimizer+ 在 PHP Lice ...

  9. 转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程

    一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包.这 ...

  10. RHEL6.4编译安装企业级LAMMP平台

    一.LAMMP简介 二.使用软件及服务器架构说明 三.配置及安装过程    1.安装arp与httpd    2.安装mysql    3.安装php(php-fpm)    4.安装Xcache   ...

随机推荐

  1. 用c++写 爱心图案

    绘制爱心曲线 现代数学的一个有趣的证明是 Georg Cantor 证明了有理数是可枚举的.在这篇博客中,我们将通过编程绘制一个简单而美丽的数学图形:爱心曲线. 爱心曲线代码 //爱心曲线 (x^2 ...

  2. 【MySql】数据库_MySql基础

    yum install mysql mysql -u root -p 创建数据库 create database 数据库名; 查看所有数据仓库 show databases; 删除数据库 drop d ...

  3. Nignx快速入门

    Nginx快速入门 一.简介 产生的背景:当一台服务器同一时刻被大量客户端请求访问时,访问量超出服务器请求范围,服务器处理不过来,发生宕机或者丢失连接情况下,产生了Nignx反向代理技术. Nginx ...

  4. Nacos 本地单机版部署步骤和使用

    本系列是 Spring Cloud 微服务实战系列教程.之前在 <Spring Cloud Eureka 入门 (一)服务注册中心详解> 聊过 Spring Cloud Eureka.那今 ...

  5. OCR性能优化:从认识BiLSTM网络结构开始

    摘要: 想要对OCR进行性能优化,首先要了解清楚待优化的OCR网络的结构,本文从动机的角度来推演下基于Seq2Seq结构的OCR网络是如何一步步搭建起来的. 本文分享自华为云社区<OCR性能优化 ...

  6. 创建一个科学决策必备的A/B实验,都需要哪些准备?——火山引擎 DataTester 使用指南

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流 DataTester 是火山引擎数智平台旗下产品,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复 ...

  7. 莉莉丝游戏与火山引擎 ByteHouse 达成合作,为实时数仓建设提速

    中国头部游戏公司莉莉丝游戏(Lilith Games)和火山引擎 ByteHouse 达成合作,共同致力于加速莉莉丝游戏的实时数仓建设.此次合作将利用 ByteHouse 的创新技术和功能,为莉莉丝的 ...

  8. IntelliJ IDEA lombok log 报红

    pom文件中引用了  lombok 插件,但Intellij 代码里仍然是红色提示,具体操作如下 Mac

  9. UltraEdit 去除文本中的空行,按指定字符换行

    在将JSON格式的数据,整理到 Excel中查看时,可以通过文本替换的方式将JSON存到csv 后,使用 UltraEdit 编辑工具按需进行替换处理 去除多个空行 ^p^p  替换成 ^p 按逗号换 ...

  10. 【短道速滑四】Halcon的texture_laws算子自我研究

    Halcon里有个texture_laws 算子,最近实现了下,记录下相关细节. Halcon的文档里对该算子是这样描述的: texture_laws - Filter an image using ...