Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 使用/etc/fstab自动装载多个s3fs存储桶_Amazon S3_S3fs - Fatal编程技术网

Amazon s3 使用/etc/fstab自动装载多个s3fs存储桶

Amazon s3 使用/etc/fstab自动装载多个s3fs存储桶,amazon-s3,s3fs,Amazon S3,S3fs,在s3fs指令wiki中,我们被告知可以通过在/etc/fstab s3fs#mybucket /mnt/mybucket fuse allow_other,use_cache=/tmp,url=https://s3.amazonaws.com 0 0 这对于1个bucket很好,但当我尝试通过2行代码将多个bucket装载到1个EC2实例上时: s3fs#mybucket /mnt/mybucket fuse allow_other,use_cache=/tmp 0 0 s3fs

在s3fs指令wiki中,我们被告知可以通过在
/etc/fstab

s3fs#mybucket /mnt/mybucket fuse    allow_other,use_cache=/tmp,url=https://s3.amazonaws.com 0 0
这对于1个bucket很好,但当我尝试通过2行代码将多个bucket装载到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 mybucket /mn/mybucket2-ouse_cache=/tmp

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


如何创建启动脚本随发行版的不同而有所不同,但是有很多关于这个主题的信息。

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

也许您的网络没有接通

最小条目-只有一个选项(
\u netdev
=网络“启动”后装载)

fuse.s3fs\u netdev,0

我正在运行Ubuntu 16.04,多个挂载在
/etc/fstab
中运行良好

示例与我上传ftp图像时使用的类似(使用额外的bucket装载点进行测试):

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

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

警告:(使用
locate
命令)对系统进行索引。您应该检查
/etc/updatedb.conf
中的
PRUNEFS
prunepath
是否覆盖了s3fs文件系统或s3fs装载点。默认情况是“删减”任何s3fs文件系统,但值得检查。否则,如果您的存储桶中有许多文件,那么您的系统不仅会变慢,而且AWS账单也会增加。有关更多信息,请参阅常见问题解答链接

参考资料:


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

1。创建装载脚本

非常简单,只需在主目录中为需要装入bucket的用户创建一个.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 spaces,但它们的工作方式与S3F的S3存储桶完全相同)

2。Cron重新启动后运行装载脚本的方法

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

@reboot /bin/sh /home/webuser/mountme.sh
(是的,您可以预定义/bin/sh路径等等,但那天我感觉很懒)


我知道这与其说是一个解决方案,不如说是一个解决方案,但我很快就对fstab感到失望,所以我回到了好的老cron,在那里我感觉更舒服:)

这就是我对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
s3fs\fuse\netdev,允许其他,使用缓存=/tmp/cache,uid=,gid=,url=https://0
.passwd-s3fs位于root的homedir中,其中包含适当的内容

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