Найти в Дзене
Beget

Подключение объектного хранилища (S3) с использованием клиента s3fs

Оглавление

Облачное хранилище – удобный инструмент для хранения различных файлов, но не всегда удобно работать с ним посредством клиентов/SDK. В таком случае можно использовать s3fs – она позволит монтировать бакет с помощью FUSE и работать с файлами и директориями в нем, как будто это обычная файловая система.

Установка s3fs-fuse

Мы разработали видеоинструкцию, где в удобном формате объяснили, как подключить хранилище S3 с использованием клиента s3fs.

Во многих менеджерах пакетов дистрибутивов Linux есть пакет s3fs.

Для установки используйте соответствующую вашему дистрибутиву команду.

  • Debian 9 и Ubuntu 16.04 или новее:
-2
  • Fedora 27 или новее:
-3
  • RHEL и CentOS 7 или новее с помощью EPEL:
-4

Инструкции по установке 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 и задать для файла права доступа только для владельца. Например, чтобы создать файл в домашней директории, можно выполнить следующие команды:

-5

Узнать 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 в текущей директории:

-6

Проверим, что она успешно создалась и не содержит файлов внутри:

-7

Чтобы монтировать бакет 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

Проверим, что монтирование прошло успешно:

-8

Файлы в бакете успешно отображаются.

Автоматическое монтирование при запуске сервера

Также доступно автоматическое монтирование бакета путем добавления записи в fstab. Для этого рекомендуется создать глобальный файл авторизации /etc/passwd-s3fs.

-9

После чего для автоматического монтирования при запуске сервера необходимо создать запись в файле /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

После сохранения файла проверьте корректность записи, попробовав смонтировать диски командой:

-10

Если ошибок при монтировании не возникло и файлы по указанной точке монтирования присутствуют, настройка автомонтирования завершена.

-11

В данной статье мы рассказали о том, как можно использовать s3fs для монтирования облачного объектного хранилища в Linux. Таким образом, при использовании этого клиента для S3, облачное хранилище может быть удобным способом как расширения диска, так и создания общего хранилища между несколькими серверами.

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.