日常•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. Mybatis 源码2——SqlSession,执行器和一级缓存

    一丶 SqlSessionFactoryBuilder,SqlSessionFactory,sqlSession mybatis 获取sqlSession是通过SqlSessionFactory获取的 ...

  2. [Python急救站]百钱买百鸡

    百钱买百鸡:一人用100元买了100只鸡,其中公鸡5元一只,母鸡3元一只,小鸡1元一只.问:公鸡.母鸡.小鸡各多少只? 程序采用穷举法. for x in range(1, 21): for y in ...

  3. 文心一言 VS 讯飞星火 VS chatgpt (178)-- 算法导论13.4 1题

    一.用go语言,在执行 RB-DELETE-FIXUP 之后,证明:树根一定是黑色的. 文心一言: 在证明 RB-DELETE-FIXUP 之后,树根一定是黑色的的过程中,我们首先需要理解红黑树的性质 ...

  4. 洞见商业新机,云原生数据库GaussDB让企业决策更科学

    摘要:华为云GaussDB(for Redis)为数位科技打造了一个稳定可靠.高效安全.卓越性能的大数据引擎,KV存储降本80%,助力实体企业数字化转型之路走的更加稳健. 本文分享自华为云社区< ...

  5. 带你了解Node.js包管理工具:包与NPM

    摘要:包与NPM Node组织了自身的核心模块,也使得第三方文件模块可以有序的编写和使用. 本文分享自华为云社区<NodeJs深入浅出之旅:包与NPM>,作者:空城机. 包与NPM Nod ...

  6. 如何在iPhone设备中查看崩溃日志

    ​ ​如何在iPhone设备中查看崩溃日志 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么? 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分 ...

  7. 火山引擎DataLeap背后的支持者 - 工作流编排调度系统FlowX

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 背景介绍 业务场景 在日常工作中,我们时不时需要对某些逻辑进行重复调度,这时我们就需要一个调度系统.根据不同的调度 ...

  8. PPT 动画-多层旋转(圆角三角形)

    多层旋转动画 插入若干个三解形 然后将页面切换成[平滑](Office 2019~ 365 才有这功能,或者 iSlide 平滑过渡)

  9. 拥抱智能,AI 视频编码技术的新探索

    随着视频与交互在日常生活中的作用日益突显,愈发多样的视频场景与不断提高的视觉追求对视频编码提出更高的挑战.相较于人们手工设计的多种视频编码技术,AI 编码可以从大数据中自我学习到更广泛的信号内在编码规 ...

  10. SE54视图簇

    一.创建关联表 头表 行表 设置行表的外键  创建两张表的表维护生成器,此处不再展开 二.SE54视图簇 激活上述 三.创建事务代码维护 四.效果展示 定期更文,欢迎关注 TRANSLATE with ...