[转帖]编译安装goofys挂载Scaleway免费75G对象存储
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对象存储的更多相关文章
- 架构师小跟班:教你从零开始申请和配置七牛云免费OSS对象存储(不能再详细了)
背景 之前为了练习Linux系统使用,在阿里云上低价买了一台服务器(网站首页有活动链接,传送门),心里想反正闲着也是闲着,就放了一个网站上去.现在随着数据越来越多,服务器空间越来越吃紧,我就考虑使用七 ...
- Hadoop集群搭建-03编译安装hadoop
Hadoop集群搭建-05安装配置YARN Hadoop集群搭建-04安装配置HDFS Hadoop集群搭建-03编译安装hadoop Hadoop集群搭建-02安装配置Zookeeper Hado ...
- 七牛云免费对象存储,并绑定到cloudreve中
之前开通了腾讯云的对象存储COS并使用中,不过之前主要将它当作云盘使用,这两天再做博客系统时发现也可以将它作为网站的图库,这样对网站的访问效率也会提高. 今天了解到七牛云有免费的对象存储可以使用,于是 ...
- 【转帖】嵌入式4412开发板QT5.7编译安装到arm
QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录 本文转自迅为4412开发板群:http://to ...
- [转帖]MySQL5.7.20编译安装
MySQL5.7.20编译安装 尝试一下 想着 我在arm上面最终安装失败了. https://www.cnblogs.com/shengdimaya/p/8027507.html 1:官网下载sou ...
- 在CDlinux下编译安装无线网卡驱动
环境 主机:ThinkPadT440P 系统:CDlinux9.7.1 概述 准备利用CDlinux来破解周围的wifi密码来免费蹭网,由于笔记本是新买的,系统没有自带驱动,只能自己手动到网上下载.编 ...
- 加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04)
加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制 ...
- 编译安装 Zend Opcache 缓存Opcache,加速 PHP
Optimizer+ 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件,是第一个也是最快的 opcode 缓存工具.现在,Zend 科技公司将 Optimizer+ 在 PHP Lice ...
- 转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程
一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包.这 ...
- RHEL6.4编译安装企业级LAMMP平台
一.LAMMP简介 二.使用软件及服务器架构说明 三.配置及安装过程 1.安装arp与httpd 2.安装mysql 3.安装php(php-fpm) 4.安装Xcache ...
随机推荐
- 我用 Laf 开发了一个非常好用的密码管理工具
[KeePass 密码管理]是一款简单.安全简洁的账号密码管理工具,服务端使用 Laf 云开发,支持指纹验证.FaceID,N 重安全保障,可以随时随地记录我的账号和密码. 写这个小程序之前,在国内市 ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 13.使用GameplayTag实现使用钥匙卡打开箱子
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章将会展示Gameplay另一个用法,也就是我们最常见的使用特定道具交互特定的机关.例如本文要实现的,获得 ...
- LeetCode283移动零、11盛最多的水
283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必 ...
- 神经网络入门篇:详解深层网络中的前向传播(Forward propagation in a Deep Network)
深层网络中的前向传播 先说对其中一个训练样本\(x\)如何应用前向传播,之后讨论向量化的版本. 第一层需要计算\({{z}^{[1]}}={{w}^{[1]}}x+{{b}^{[1]}}\),\({{ ...
- Spring中部署Activiti流程定义的三种姿势
摘要:本文对工作流Activiti框架中流程定义的部署进行了详细说明介绍. 本文分享自华为云社区<项目中工作流部署详细解析!Spring中部署Activiti流程定义的三种姿势>,作者:攻 ...
- Vuex在TSX中的改造方案:TS改造Vue2项目Vuex如何处置?
vuex目前比较流行的有:vuex-aggregate . vuex-class.vuex-module-decorators npm搜到相关的,看下趋势图:https://www.npmtrends ...
- React Native 打包 App 发布 iOS 及加固混淆过程
React Native 打包 App 发布 iOS 及加固混淆过程 摘要 本文将介绍如何使用 React Native 打包并发布 iOS 应用到 App Store,并介绍了如何进行应用的加固和混 ...
- Consider defining a bean of type 'org.springframework.security.authentication.AuthenticationManager' in your configuration.
Consider defining a bean of type 'org.springframework.security.authentication.AuthenticationManager' ...
- selenium多标签,多表单切换
Selenium多标签之间的切换 多标签之间的切换 有的时候点击一个链接,新页面并非由当前页面跳转过去,而是新打开一个页面打开,这种情况下,计算机需要识别多标签或窗口的情况 获取所有窗口的句柄 han ...
- 一个神奇的Python库:Evidently,机器学习必备
Evidently 是一个面向数据科学家和机器学习工程师的开源 Python 库.它有助于评估.测试和监控从验证到生产的数据和 ML 模型.它适用于表格.文本数据和嵌入. 简介 Evidently 是 ...