[转帖]编译安装goofys挂载Scaleway免费75G对象存储

编译,安装,goofys,挂载,scaleway,免费,75g,对象,存储 · 浏览次数 : 0

小编点评

**Goofys编译安装指南** **环境:** * Scaleway 法国地区的 1 核 1 GB 内存实例 * Ubuntu 20.04 系统 * Go 1.18.2 版本 **步骤:** 1. 下载 Go。 2. 解压缩 Go 下载包。 3. 将 Go 解压缩后的目录添加到 PATH 环境变量中: ```bash export PATH="$PATH:/usr/local/go/bingo versionCopy" ``` 4. 安装 Go: ```bash cd $HOME export GOPATH=$HOME/workgit clone https://github.com/kahing/goofysmake build & make installCopy ``` 5. 安装 Goofys: ```bash chmod +x $HOME/work/bin/goofys$HOME/work/bin/goofys -v ``` 6. 配置认证密钥: ```bash mkdir /root/.awsnano /root/.aws/credentials input below content, replacing the placeholders with your actual credentials: ``` [default]aws_access_key_id = SCW*************aws_secret_access_key = ************** ``` 7. 安装和挂载对象存储: ```bash goofys -o allow_other --endpoint=https://s3.fr-par.scw.cloud/ --storage-class=ONEZONE_IA $HOME/work/bin/goofys /usr/bin/goofys ``` **注意:** * 此安装过程可能需要一些时间,具体取决于您的硬件条件。 * 您需要在本地创建一个名为 `goofys` 的文件夹,并将该文件夹添加到 PATH 环境变量中。 * 安装完成后,您可以使用 `goofys version` 命令查看版本信息。

正文

 

日常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

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

 go version go1.18.2 linux/amd64

如此,即为安装成功。

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

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

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

输出如下:

goofys version 0.24.0-829d8e5ce20faa3f9f6f054077a14325e00e9249

此时得到的包便是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`"

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

安装挂载

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

配置认证密钥

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

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

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

安装并挂载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]

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

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

nano /etc/fstab

添加一行以下内容

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

测试

由于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对象存储相似的内容:

[转帖]编译安装goofys挂载Scaleway免费75G对象存储

日常•2022年5月29日 goofys编译 goofys是一个开源的使用Go编写的s3存储桶挂载工具,主打高性能。由于使用Go编写,没有用到什么特别的依赖,自己编译也很容易。截止2022.5.27,官方github仓库貌似一直有提交,但是提供的预编译安装包貌似只到2020年4月,而且只有x86版本

[转帖]编译安装Erlang+RabbitMQ

https://www.cnblogs.com/hellxz/ 楔子 由于国内信创越来越火,客户现场也开始使用国产操作系统替换CentOS之类的开源操作系统,最近做实施的同事找到我,说现场是ARM架构的操作系统编译安装RabbitMQ一直提示无法启动也没有日志文件生成,找过了好几个同事都没解决这才找

[转帖]OpenResty编译安装

https://www.cnblogs.com/lizexiong/p/15012869.html OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 We

[转帖]Tengine编译安装

https://www.cnblogs.com/lizexiong/p/15012824.html Tengine 是由淘宝网发起的 Web 服务器项目。它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine 的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得

[转帖]Nginx源码编译安装

https://www.cnblogs.com/lizexiong/p/15012713.html Nginx 是一款优秀的开源软件,支持在 FreeBSD、Linux、Windows、macOS 等多种操作系统平台下编译及运行。CentOS 拥有良好的系统结构和工具软件生态环境,是一款基于 Lin

[转帖]Linux下编译安装配置python3.9

Linux版本:CentOS-7.8-x86_64-Minimal-2003 操作用户:root (1)依赖包安装: 如果是Linux的minimal系统,需要安装: yum install -y vim wget tftp lrzsz bzip2 zip unzip net-tools bind-

[转帖]如何在本地编译安装部署自动化回归测试平台 AREX

https://zhuanlan.zhihu.com/p/613877597 AREX 官方 QQ 交流群:656108079 本文将详细为大家介绍一下自动化回归测试平台 AREX 以及如何在本地进行编译安装部署。 背景 AREX 是一款开源的自动化回归测试工具, 基于 Java Agent 技术,

[转帖]如何在本地编译安装部署自动化回归测试平台 AREX

https://zhuanlan.zhihu.com/p/613877597 AREX 官方 QQ 交流群:656108079 本文将详细为大家介绍一下自动化回归测试平台 AREX 以及如何在本地进行编译安装部署。 背景 AREX 是一款开源的自动化回归测试工具, 基于 Java Agent 技术,

[转帖]unmatched(riscv64)上编译,安装和移植SPEC CPU 2006

https://zhuanlan.zhihu.com/p/429399630 Linux ubuntu 5.11.0-1021-generic #22-Ubuntu SMP Tue Sep 28 15:19:16 UTC 2021 riscv64 riscv64 riscv64 GNU/Linux

[转帖]GoAccess的简单处理

编译安装 安装 GoAccess 非常的容易。只需要下载、解压以及编译就好了: $ wget http://tar.goaccess.io/goaccess-1.2.tar.gz $ tar -xzvf goaccess-1.2.tar.gz $ cd goaccess-1.2/ $ ./confi