
Облачное хранилище – удобный инструмент для хранения различных файлов, но не всегда удобно работать с ним посредством клиентов/SDK. В таком случае можно использовать s3fs – она позволит монтировать бакет с помощью FUSE и работать с файлами и директориями в нем, как будто это обычная файловая система.
Установка s3fs-fuse
Мы разработали видеоинструкцию, где в удобном формате объяснили, как подключить хранилище S3 с использованием клиента s3fs
Во многих менеджерах пакетов дистрибутивов Linux есть пакет s3fs.
Для установки используйте соответствующую вашему дистрибутиву команду.
- Debian 9 и Ubuntu 16.04 или новее:
sudo apt install s3fs
- Fedora 27 или новее:
sudo dnf install s3fs-fuse
- RHEL и CentOS 7 или новее с помощью EPEL:
sudo yum install epel-release
sudo yum install s3fs-fuse
Инструкции по установке 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
и задать для файла права доступа только для владельца. Например, чтобы создать файл в домашней директории, можно выполнить следующие команды:
echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs
chmod 600 ${HOME}/.passwd-s3fs
Узнать 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
в текущей директории:
mkdir mybucket
Проверим, что она успешно создалась и не содержит файлов внутри:
root@ibzwaumnaw:~# ll mybucket
total 8
drwxr-xr-x 2 root root 4096 Oct 17 10:20 ./
drwx------ 6 root root 4096 Oct 17 10:20 ../
Чтобы монтировать бакет 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
Проверим, что монтирование прошло успешно:
root@ibzwaumnaw:~# ll mybucket/
total 59542
drwx------ 1 root root 0 Jan 1 1970 ./
drwx------ 6 root root 4096 Oct 17 10:20 ../
-rw-r----- 1 root root 60965992 Sep 30 12:28 Cyberduck-Installer-9.0.3.42112.exe
drwxr-x--- 1 root root 0 Sep 30 12:28 'Terst folder'/
drwxr-x--- 1 root root 0 Jan 1 1970 uploads/
Файлы в бакете успешно отображаются.
Автоматическое монтирование при запуске сервера
Также доступно автоматическое монтирование бакета путем добавления записи в fstab. Для этого рекомендуется создать глобальный файл авторизации /etc/passwd-s3fs
.
echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > /etc/passwd-s3fs
chmod 600 /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
После сохранения файла проверьте корректность записи, попробовав смонтировать диски командой:
sudo mount -a
Если ошибок при монтировании не возникло и файлы по указанной точке монтирования присутствуют, настройка автомонтирования завершена.
root@ibzwaumnaw:~# ll /mnt/coolbucket/
total 59542
drwxrwxrwx 1 root root 0 Jan 1 1970 ./
drwxr-xr-x 3 root root 4096 Oct 17 13:54 ../
-rw-r----- 1 root root 60965992 Sep 30 12:28 Cyberduck-Installer-9.0.3.42112.exe
drwxr-x--- 1 root root 0 Sep 30 12:28 'Terst folder'/
drwxr-x--- 1 root root 0 Jan 1 1970 uploads/
В данной статье мы рассказали о том, как можно использовать s3fs для монтирования облачного объектного хранилища в Linux. Таким образом, при использовании этого клиента для S3, облачное хранилище может быть удобным способом как расширения диска, так и создания общего хранилища между несколькими серверами.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.