0x00 前言

S3FS可以把S3 Bucket可以向挂盘一样,挂在本地,适用于Linux和Mac OS,完事复制粘贴写文件啥的跟普通的文件夹几乎没啥差别,体验很棒。
当然,也有一些缺点,这个后面再说。(如果你遇不到它,那就是没缺点,大雾hhh)

0x01 实验环境

  • Amazon Linux 2

0x02 操作步骤

  1. 安装

    1
    2
    sudo amazon-linux-extras install epel
    sudo yum install s3fs-fuse
  2. 挂载

    1
    s3fs s3fs-tonghua s3fs_local #(前面是桶名,后面是本地需要挂载到的目录)

如果向上面那么玩,你使用中国区的S3的话,那一定是不成功的。通过debug信息我们可以看到其把请求打到global去了,“那前朝的剑,斩本朝的官”,那自然是行不通的,我们要把region改到中国来。

1
s3fs s3fs-tonghua s3fs_local -o dbglevel=info -f -o curldbg # 开启debug日志

可以通过如下方式修改endpoint,可以看到已经成功了。

1
2
3
4
[root@ip-10-0-0-64 /]# s3fs s3fs-tonghua s3fs_local -o url=https://s3.cn-north-1.amazonaws.com.cn                       [root@ip-10-0-0-64 /]# cd s3fs_local/
[root@ip-10-0-0-64 s3fs_local]# ls
test01_no_version.txt
[root@ip-10-0-0-64 s3fs_local]#

这种情况下,如果我机器重启了,那挂载的S3就没了。所以我们要给他换成/etc/fstab,保证其重启后也无需重新下载。

1
2
3
4
5
[ec2-user@ip-10-0-0-64 s3fs_local]$ cat /etc/fstab
#
UUID=8a9e0fcb-f415-4a3f-931d-919fadf8e22c / xfs defaults,noatime 1 1
s3fs#s3fs-tonghua /s3fs_local fuse _netdev,nonempty,allow_other,use_path_request_style,url=https://s3.cn-north-1.amazonaws.com.cn 0 0
[ec2-user@ip-10-0-0-64 s3fs_local]$配置

以上就完成了S3FS的配置。

0x03 说说S3FS的利弊

S3FS本质上是对象存储,其跟块存储还是有区别的,块存储我如果修改一个大文件的话,背后只修改对应的block,但是S3就不一样了,如果我传一个超大的文件,几个G或者T的,那他是会整个往S3传的,既费钱还有一致性的问题。
然后如果我读写频率太高的话,还容易被服务限制。
关于其缺点的话,官方文档说的也比较清楚了,我这头就不再赘述,有兴趣的同学可以去看看:https://github.com/s3fs-fuse/s3fs-fuse

0x04 总结

试了下S3FS,有的场景确实很方便,具体使用的话还是要结合自身业务场景,选择合适的数据传输、存储方式。

0x05 参考链接