Amazon s3 使用/etc/fstab自动装载多个s3fs存储桶
在s3fs指令wiki中,我们被告知可以通过在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
/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