Автоматическое монтирование нескольких контейнеров s3fs с помощью /etc/fstab

В вики-инструкции s3fs нам сказали, что мы можем автоматически смонтировать ведра s3fs, введя следующую строку в /etc/fstab

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

Это прекрасно работает для 1 корзины, но когда я пытаюсь смонтировать несколько блоков на 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

но это все еще не работает. монтируется только второй:

Как автоматически смонтировать несколько корзин s3 через s3fs в /etc/fstabбез использования вручную:

s3fs mybucket /mn/mybucket2-ouse_cache=/tmp

4 ответа

Решение

Вы можете попробовать скрипт запуска. Вот как я обошел проблемы с монтированием s3fs во время загрузки с /etc/fstab.

Как создавать сценарии запуска, зависит от дистрибутива, но по этому вопросу имеется много информации.

Возможно, ваша сеть не работала?

Минимальная запись - только с одной опцией (_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 проверить новые записи и смонтировать их (затем выполнить тест перезагрузки).

Ссылка: https://github.com/s3fs-fuse/s3fs-fuse/wiki/FAQ

Если вы хотите монтировать без полномочий root, посмотрите параметры UID,GID, как указано выше. Это не является абсолютно необходимым, если используется опция предохранителя allow_other как разрешения "0777" при монтаже.

Это может быть не самый чистый способ, но у меня была та же проблема, и я решил ее следующим образом:

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, но они работают точно так же, как S3 Buckets с s3fs)

2. Перейдите к запуску скрипта монтирования после перезагрузки.

Я поставил крон для того же webuser пользователь с:

@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

.passwd-s3fs находится в корневом каталоге с соответствующими материалами

Пожалуйста, обратите внимание, что autofs начинается с прав root. Затем файл учетных данных.passwd-s3fs должен находиться в корневом каталоге, а не в пользовательской папке.

Другие вопросы по тегам