7

在 s3fs 指令 wiki 中,我们被告知可以通过输入以下行来自动挂载 s3fs 存储桶/etc/fstab

s3fs#mybucket /mnt/mybucket fuse    allow_other,use_cache=/tmp,url=https://s3.amazonaws.com 0 0

这适用于 1 个存储桶,但是当我尝试通过 2 行将多个存储桶安装到 1 个 EC2 实例上时:

s3fs#mybucket /mnt/mybucket fuse    allow_other,use_cache=/tmp 0 0
s3fs#mybucket2 /mnt/mybucket2 fuse    allow_other,use_cache=/tmp 0 0

只有第二行有效,我尝试将 s3fs 复制到 s3fs2 并:

s3fs#mybucket /mnt/mybucket fuse    allow_other,use_cache=/tmp 0 0
s3fs2#mybucket2 /mnt/mybucket2 fuse    allow_other,use_cache=/tmp 0 0

但这仍然不起作用。只有第二个被安装:

如何在/etc/fstab 不手动使用的情况下通过 s3fs 自动挂载多个 s3 存储桶:

s3fs mybucket /mn/mybucket2-ouse_cache=/tmp
4

5 回答 5

13

也许您的网络没有启动?

最少的条目 - 只有一个选项(_netdev= 网络“启动”后挂载)

<bucket name> <mount point> fuse.s3fs _netdev, 0 0

我正在运行 Ubuntu 16.04,并且多个挂载在/etc/fstab.

类似于我用于 ftp 图像上传的示例(使用额外的存储桶挂载点进行测试):

mybucket1.mydomain.org /mnt/mybucket1 fuse.s3fs _netdev,allow_other,passwd_file=/home/ftpuser/.passwd-aws-s3fs,default_acl=public-read,uid=1001,gid=65534   0 0

mybucket2.mydomain.org /mnt/mybucket2 fuse.s3fs _netdev,allow_other,passwd_file=/home/ftpuser/.passwd-aws-s3fs,default_acl=public-read,uid=1001,gid=65534   0 0

sudo mount -a测试新条目并挂载它们(然后进行重新启动测试)。

如果您希望以非 root 身份安装,请按照上述查看 UID、GID 选项。如果使用 fuse 选项,这不是绝对必要的,allow_other因为安装时的权限是“0777”。

警告:Updatedblocate命令使用它)索引您的系统。您应该检查是否PRUNEFS包含您PRUNEPATHS/etc/updatedb.confs3fs 文件系统或 s3fs 挂载点。默认是“修剪”任何 s3fs 文件系统,但值得检查。否则,如果您的存储桶中有很多文件,您的系统不仅会变慢,而且您的 AWS 账单也会增加。有关更多信息,请参阅常见问题解答链接。

参考:
https ://github.com/s3fs-fuse/s3fs-fuse/wiki/Fuse-Over-Amazon
https://github.com/s3fs-fuse/s3fs-fuse/wiki/FAQ

于 2017-05-01T14:12:26.503 回答
1

您可以尝试启动脚本。这就是我解决在引导时使用 /etc/fstab 安装 s3fs 的问题的方法。

如何制作启动脚本因发行版而异,但有很多关于该主题的信息。

于 2013-05-02T19:36:07.103 回答
1

这可能不是最干净的方法,但我遇到了同样的问题并以这种方式解决了它:

1.创建挂载脚本

很简单,只需在主目录中为需要挂载存储桶的用户创建一个 .sh 文件(在我的情况下是这样/home/webuser,我将脚本命名为mountme.sh

该文件的内容是每个要挂载的存储桶一行:

s3fs bucket_one /home/webuser/app/www/bucket_one -o url=https://nyc3.digitaloceanspaces.com -o allow_other
s3fs bucket_two /home/webuser/app/www/bucket_two -o url=https://nyc3.digitaloceanspaces.com -o allow_other

(是的,我使用的是 DigitalOcean 空间,但它们的工作方式与使用 s3fs 的 S3 Buckets 完全一样)

2. 重新启动时按自己的方式运行挂载脚本

webuser我为同一个用户设置了一个 cron :

@reboot /bin/sh /home/webuser/mountme.sh

(是的,你可以预定义 /bin/sh 路径之类的,但是那天我很懒)

我知道这更像是一种解决方法而不是解决方案,但我很快就对 fstab 感到沮丧,所以我回到了好的旧 cron,在那里我感觉更舒服:)

于 2018-11-07T19:24:34.250 回答
1

这就是我对 Ubuntu 18.04 和 DigitalOcean Spaces 所做的

在 /etc/fstab

s3fs#<space>  /<dir> fuse _netdev,allow_other,use_cache=/tmp/cache,uid=<usr>,gid=<grp>,url=https://<url> 0 0

.passwd-s3fs 位于 root 的主目录中,其中包含适当的内容

于 2020-02-27T02:59:37.253 回答
0

请注意 autofs 以 root 身份启动。然后,凭证文件 .passwd-s3fs 必须在根目录中,而不是在用户文件夹中。

于 2013-09-15T19:59:04.803 回答