Автоматическое монтирование нескольких контейнеров 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 должен находиться в корневом каталоге, а не в пользовательской папке.