使用s3fs将兼容S3协议的对象存储OSS挂载为本地目录

作者 by Stuart / 2022-02-18 / 暂无评论 / 124 个足迹

前言

目的:将IDC提供的75GB对象存储空间利用起来,存储备份数据以及媒体文件;
环境:KVM虚拟机,Debian11,对象存储使用的是S3-compatible API;

过程

升级软件源并安装所需软件;

apt-get update &&apt-get install s3fs -y

创建API密钥文件写入信息,更改权限为属主可读可写,其他用户无任何权限;

touch /etc/passwd-s3fs
echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > /etc/passwd-s3fs
#将ACCESS_KEY_ID和SECRET_ACCESS_KEY分别替换为创建API时获得的Key;由于这里使用的是全局文件,遂不修改权限;
chmod 600 /etc/passwd-s3fs

P.S.
若其他用户有权限则S3FS会报错s3fs:credentials file /etc/passwd-s3fs should not have others permissions.
若给的700即属主可读可写可执行则也会报错s3fs: credentials file /etc/passwd-s3fs should not have executable permissions.

创建挂载目录并挂载

mkdir /home/oss-mount
s3fs bucket-name mount_point_path -o allow_other -o passwd_file=/etc/passwd-s3fs -o use_path_request_style -o endpoint=fr-par -o parallel_count=15 -o multipart_size=128 -o nocopyapi -o url=https://s3.fr-par.scw.cloud

其中-o用于指定额外参数,很诡异的是这家需要单独指定endpoint所属区域以及url,不然就报错.....
测试一下挂载是否正常

mount -l|grep -i s3fs
#输出如下
s3fs on /home/oss-mount type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
cd /home/oss-mount
dd if=/dev/urandom of=/home/oss-mount/mount.test bs=1M count=50
#输出如下
50+0 records in
50+0 records out
52428800 bytes (52 MB, 50 MiB) copied, 1.95351 s, 26.8 MB/s

回到IDC的网页控制面板查看对象存储,确认已经丢进去了;
 title=
 title=
It works

一点碎碎念

s3fs同一个桶挂载在不同客户端之间时并没有同步,所以憋想着当一个巨型网盘来使(而且这玩意是按量收费是真滴贵);
这东西写作修改读作重传,频繁修改会异常头秃,所以只能拿来存一些个冷数据或者做内容分发,不过emmmm还是价格啊.....
目前来说,剩下的事是优化性能,并且做好版本管理,然后就可以用来比较舒服的备份各种数据了,e.g.媒体文件,数据库备份文件etc
但是,得做好备份文件的安全加密工作......
Anyway,贵不是OSS的缺点,穷是咱的缺点(摊手远目)

Refference

https://github.com/s3fs-fuse/s3fs-fuse
https://www.scaleway.com/en/docs/storage/object/

独特见解