使用S3FS将文件写入S3时,如果在写入文件时访问了该文件,则文件中的数据将被删除。
我们有一台Red Hat Linux服务器,当我们注意到这个问题时,我们在服务器上保存了一个正在测试的产品。当我们去解决这个问题时,我们将该产品移到了Ubuntu实例中,我们不再有这个问题。
我们为一个想要Red Hat的客户端设置了一个服务器,并将一些代码移动到该服务器,该服务器现在存在覆盖问题。
您描述的行为是有意义的。需要对S3与标准卷的工作原理进行一些解释。
操作系统可以在块级别读取/写入标准卷。多个进程可以访问该文件,但需要一些锁来防止损坏。
S3将操作视为整个文件。要么文件被完整上传,要么根本不存在。
s3fs试图创建一个到非卷的接口,以便您可以将其装载到文件系统上。但在隐蔽的情况下,它会将您访问的每个文件复制到本地文件系统,并将其存储在临时目录中。虽然您通常可以使用s3fs执行整个文件操作(复制、删除等),但尝试直接从s3fs打开文件到块级别的操作将以糟糕的结局告终。
还有其他选择。如果您可以重新编写代码以从s3中拉取和推送文件,则可以工作,但听起来您需要更像NFS的东西。