【问题标题】:can't make zip file in the goofys-mounted folder无法在 goofys-mounted 文件夹中制作 zip 文件
【发布时间】:2020-04-27 20:55:54
【问题描述】:

我尝试使用 goofys 在已安装目录中创建一个 zip 文件,但失败并显示以下错误消息:

$ su - foo-user
$ zip hoge.zip hoge
updating: hoge
zip I/O error: Operation not supported
zip error: Input file read failure (was zipping hoge)

有什么线索可以解决这个问题吗?

我尝试了什么

在另一个目录中创建一个 zip 文件并将其复制到挂载点成功。 所以这似乎不是权限/授权问题。

$ zip /tmp/hoge.zip hoge
  adding: hoge (stored 0%)
$ ll /tmp/hoge.zip
-rw-rw-r-- 1 foo-user foo-user   163 Apr  4 17:52 hoge.zip
$ cp /tmp/hoge.zip (path of the mount-point)
$ ll
total 5
-rw-r--r-- 1 foo-user foo-user    5 Mar 26 10:56 hoge
-rw-r--r-- 1 foo-user foo-user  163 Apr  4 17:48 hoge.zip

系统配置

  • 操作系统:Amazon Linux (EC2)
  • Goofys 版本:0.19.0-使用

挂载点的权限:

drwxr-xr-x  2 foo-user foo-user 4096 Apr  4 17:48 s3

输入文件的权限:

-rw-r--r-- 1 foo-user foo-user 5 Mar 26 10:56 hoge

/etc/fstab的设置:

(path of goofys installed)/goofys#(s3-bucket-name) (path of the mount point) fuse _netdev,allow_other,--file-mode=0644,--uid=502,--gid=502 0 0

foo-user的uid/gid:

$ id
uid=502(foo-user) gid=502(foo-user) groups=502(foo-user)

【问题讨论】:

  • 我避免了指定 zip 命令的 -b 选项的问题:zip -b /tmp hoge.zip hoge

标签: amazon-s3 amazon-linux goofys


【解决方案1】:

S3 不是文件系统。 Goofys 试图(令人钦佩地)弥合文件系统和对象存储之间的差距,但存在无法克服的阻抗失配,需要妥协或限制。 Goofys 选择了最佳性能的路径:

在 S3 上难以支持或会转化为不止一次往返的事情要么会失败(随机写入)...

https://github.com/kahing/goofys/blob/master/README.md

Zip 文件创建使用随机写入。这可以解释为什么使用 -b 选项可以解决问题。通过创建一个临时文件然后复制它,可以避免对存储桶的随机写入。

对 S3 的随机写入只能通过大幅延迟写入或通过每次随机写入重复覆盖对象来完成,这不会很好地执行并且可能会牺牲可靠性、持久性或一致性。

【讨论】:

    【解决方案2】:

    由于 sqlbot 建议的随机写入,goofys 无法创建 zip 文件。 s3fs 是一个支持此功能的类似程序。

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多