是否有人有使用 Openstack Swift 对象存储和 s3fs 以及同时让多个写入挂载访问同一文件的经验?
s3 的手册页,例如:https://linux.die.net/man/1/s3fs有这样一段话:
“多用户功能虽然可以在多个用户之间共享 s3 存储桶,但 Amazons S3 服务的当前数据一致性模型阻止多个用户安全使用多个挂载。虽然 s3fs 目前允许多个挂载,但此类活动可能会导致数据损坏。未来版本将包含锁定机制,以安全地防止多个读写挂载。在单个读写挂载之后进行多个只读挂载是安全的,但不会反映可写挂载对任何文件或文件系统元数据所做的更改,从而限制了其实用性”
上面提到的锁定机制已经实现了吗?
谢谢马克
答案1
该手册页引用了另一个基于 Python 的 s3fs,它于 2016 年左右从互联网上消失,并于 2009 年停止开发:
https://web.archive.org/web/20161008081920/https://fedorahosted.org/s3fs/
我建议使用更流行的s3fs-fuse相反。我给 die.net 网站管理员发了一封电子邮件,尝试更新此内容,因为人们通常参考 s3fs-fuse。
具体来说,s3fs 在存在多个写入器的情况下不具备 POSIX 语义,这可能表现为数据损坏。底层 S3 对象存储遵循最后写入器获胜模型,其中对象由每个 PutObject 或 CompleteMultipartUpload RPC 原子替换。s3fs 还有一个缓存模型,可以向应用程序提供过时的数据。
yas3fs与 s3fs-fuse 类似,并通过 Amazon SNS/SQS 实现锁定。然而,这会让您远离 OpenStack 生态系统。