chmod/chown 在 EC2 上使用 S3FS 存储的文件很慢

问题描述

我有一个带有 s3fs 挂载的 EC2 服务器。

我注意到如果我尝试更改权限或所有者需要 40 多秒到 1 分钟。

$ ls -ltr directory
-rwxrwxrwx 1 apache apache 6444069321 Feb  6 15:54 big.zip
-rwxrwxrwx 1 apache apache 6444069321 Feb  6 16:12 big_1.zip
$date
Sat  6 Feb 17:30:43 UTC 2021
$ chown apache:apache big.zip
$ date
Sat  6 Feb 17:31:07 UTC 2021

但是如果我在 Linux 服务器上做同样的事情,更新它需要几分之一秒。请告诉我建议以加快速度。

解决方法

S3FS 试图让 S3-Bucket 作为本地文件系统的一部分出现,就好像它是常规块存储一样,事实并非如此。

S3 是对象存储,这意味着如果您想编辑对象的一部分或对象上的元数据,您需要覆盖整个对象,这在时间上很昂贵。

您更改存储在 S3 中的文件的所有者会转换为 S3 中 object metadata 中的更改。对象元数据不可变,这意味着需要重新上传整个对象并附加新的元数据。

这与基于块存储的常规文件系统的工作方式有着根本的不同。在这种情况下,它只需要将单个块(通常大约 4KB-16KB)写入您设置位时更改的磁盘。使用 S3,您需要重新上传整个对象。

这是 S3FS 是 leaky abstraction 的情况。


如果您需要在多个 EC2 实例之间共享存储,弹性文件系统 (EFS) 是更好的选择,您应该考虑一下。您描述的操作会快很多。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...