Облачное хранилище – удобный инструмент для хранения различных файлов, но не всегда удобно работать с ним посредством клиентов/SDK. В таком случае можно использовать s3fs – она позволит монтировать бакет с помощью FUSE и работать с файлами и директориями в нем, как будто это обычная файловая система.
Установка s3fs-fuse
Мы разработали видеоинструкцию, где в удобном формате объяснили, как подключить хранилище S3 с использованием клиента s3fs.
Во многих менеджерах пакетов дистрибутивов Linux есть пакет s3fs.
Для установки используйте соответствующую вашему дистрибутиву команду.
- Debian 9 и Ubuntu 16.04 или новее:
- Fedora 27 или новее:
- RHEL и CentOS 7 или новее с помощью EPEL:
Инструкции по установке s3fs на других ОС, а также сборке из исходников вы можете найти в репозитории.
Конфигурация
S3fs поддерживает использование стандартного файла авторизации ${HOME}/.aws/credentials, собственный файл авторизации passwd-s3fs, а также переменные окружения AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY и AWS_SESSION_TOKEN.
Файл пароля s3fs может быть создан:
- В домашней директории пользователя с названием .passwd-s3fs
- Как системный файл авторизации /etc/passwd-s3fs
При создании файла авторизации необходимо указать в нем ключи доступа к бакету в формате access_key:secret_key и задать для файла права доступа только для владельца. Например, чтобы создать файл в домашней директории, можно выполнить следующие команды:
Узнать access key и secret key можно на странице хранилища в разделе “Реквизиты доступа”.
Единоразовое монтирование
Чтобы примонтировать облачное хранилище, необходимо выполнить команду:
s3fs <bucket_name> <mount_point> -o passwd_file=<passwd_file_path> -o url=<URL> -o use_path_request_style
В команде необходимо изменить:
- <bucket_name> – название бакета, указанное в реквизитах доступа
- <mount_point> – точка монтирования, директория должна существовать при монтировании
- <passwd_file_path> – путь до созданного файла авторизации, если он используется, например, ${HOME}/.passwd-s3fs
- <URL> – URL, указанный в реквизитах доступа, например, https://s3.ru1.storage.beget.cloud
Создадим директорию mybucket в текущей директории:
Проверим, что она успешно создалась и не содержит файлов внутри:
Чтобы монтировать бакет f6bcd57c2800-shortsighted-katja к созданной директории mybucket в текущей директории, используя файл авторизации в домашней директории, команда будет выглядеть следующим образом:
s3fs f6bcd57c2800-shortsighted-katja $HOME/mybucket -o passwd_file=${HOME}/.passwd-s3fs -o url=https://s3.ru1.storage.beget.cloud -o use_path_request_style
Проверим, что монтирование прошло успешно:
Файлы в бакете успешно отображаются.
Автоматическое монтирование при запуске сервера
Также доступно автоматическое монтирование бакета путем добавления записи в fstab. Для этого рекомендуется создать глобальный файл авторизации /etc/passwd-s3fs.
После чего для автоматического монтирования при запуске сервера необходимо создать запись в файле /etc/fstab в следующем формате:
<bucket_name> <path_to_mountpoint> fuse.s3fs _netdev,allow_other,use_path_request_style,url=<URL> 0 0
Например, для монтирования бакета f6bcd57c2800-shortsighted-katja к /mnt/coolbucket c URL https://s3.ru1.storage.beget.cloud запись будет выглядеть следующим образом:
f6bcd57c2800-shortsighted-katja /mnt/coolbucket fuse.s3fs _netdev,allow_other,use_path_request_style,url=https://s3.ru1.storage.beget.cloud 0 0
После сохранения файла проверьте корректность записи, попробовав смонтировать диски командой:
Если ошибок при монтировании не возникло и файлы по указанной точке монтирования присутствуют, настройка автомонтирования завершена.
В данной статье мы рассказали о том, как можно использовать s3fs для монтирования облачного объектного хранилища в Linux. Таким образом, при использовании этого клиента для S3, облачное хранилище может быть удобным способом как расширения диска, так и создания общего хранилища между несколькими серверами.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.