【问题标题】:Mount multiple s3fs buckets automatically with /etc/fstab使用 /etc/fstab 自动挂载多个 s3fs 存储桶
【发布时间】:2013-03-31 06:53:58
【问题描述】:

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

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

【问题讨论】:

    标签: amazon-s3 s3fs


    【解决方案1】:

    也许您的网络没有启动?

    最少的条目 - 只有一个选项(_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 选项。如果使用保险丝选项allow_other,这不是绝对必要的,因为安装时的权限是“0777”。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        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 存储桶完全一样)

        2。重新启动时使用 Cron 方式运行挂载脚本

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

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

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

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

        【讨论】:

          【解决方案4】:

          这就是我使用 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 的主目录中,其中包含适当的内容

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-09-01
              • 1970-01-01
              • 1970-01-01
              • 2012-04-03
              • 2015-10-08
              • 2021-10-31
              • 1970-01-01
              相关资源
              最近更新 更多