В панель

Как монтировать контейнер объектного хранилища в Linux

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

Введение

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

Данное решение позволяет получить доступ к контейнеру объектного хранилища через локальную директорию в среде Linux. Если вы используете ОС Windows, обратитесь к этой инструкции.

Решение позволит увеличить дисковое пространство сервера с помощью объектного хранилища или использовать объектное хранилище для резервного копирования (например, с помощью утилиты rsync или программного обеспечения типа Bacula).

В инструкции в качестве ОС мы используем Ubuntu 18.04, но она будет актуальна и для ряда других популярных дистрибутивов Linux.

Ниже — видеоинструкция. Если вам нужно подробное описание по шагам, читайте дальше.

Создаем контейнер 

В панели управления Selectel переходим в раздел Облачное хранилище и нажимаем Создать контейнер. Контейнер — это сущность, которая содержит объекты — файлы и папки с файлами. 

Мы реализуем инструмент для резервного копирования, поэтому создаем приватный контейнер — в нем доступ к данным нужно будет получать по логину/паролю или авторизационному токену. 

Вводим имя контейнера — в данной инструкции это s3sel.

Далее выбираем класс хранения данных. Стандартное хранение — для хранения и раздачи часто запрашиваемых данных. Мы выбираем холодное хранение, так как собираемся использовать хранилище для хранения бэкапов. Это редко запрашиваемые данные, а значит, нет необходимости платить за их хранение больше. 

Подробнее о том, как создать контейнер → 

Создаем контейнер. Проверяем, что s3sel появился в списке.

Нажимаем на него и переходим во внутреннее меню. 

Для наглядности загружаем в контейнер объекты — семплы файлов le_storage.

 Переходим во вкладку Пользователи и добавляем нового — Создать пользователя

Придумываем логин — s3selectel в данной инструкции — и генерируем пароль. Не забываем сохранить access-данные и поставить галочку на согласие использовать данные для доступа по протоколу S3. 

После создания пользователя «привязываем» к нему нужный контейнер, выбрав имя контейнера из списка. Добавим пользователю права на чтение и запись данных и применим изменения.

Монтируем контейнер 

Устанавливаем s3fs

Все последующие команды по инсталляции и запуску приложений необходимо выполнять от имени root (либо используя sudo).

Открываем командную строку. Собираем информацию о доступных пакетах внешних репозиториев с помощью команды:


    apt update

Устанавливаем утилиту s3fs. Это клиент командной строки для Linux и MacOS, который позволяет монтировать контейнер объектного хранилища через модуль FUSE. Для установки вводим: 


    apt install s3fs

В корневом каталоге пользователя (в данной инструкции — /home/s3admin) создаем папку s3disk. К этой папке мы смонтируем ранее созданный контейнер s3sel из объектного хранилища Selectel. Вводим:


    mkdir s3disk

Папка добавилась в список директорий, можно двигаться дальше. 

Производим монтирование контейнера

Вернемся к контейнеру объектного хранилища s3sel. Копируем логин и пароль из панели управления, сохраняем эту информацию в отдельном файле ~/.passwd-s3fs. Также стоит ограничить доступ к файлу — например, открыть доступ только владельцу. Вводим следующие строки:


    echo '136692_s3selectel:d5Qwiq`S7P' > ${HOME}/.passwd-s3fs
chmod 600 ${HOME}/.passwd-s3fs

Используем установленную утилиту s3fs, чтобы смонтировать контейнер s3sel к созданной папке s3disk. В качестве endpoint — https://s3.storage.selcloud.ru

Далее выполняем команду следующего вида: 


    s3fs <имя контейнера> <путь к каталогу> -o allow_other -o passwd_file=<путь к файлу паролей> -o use_path_request_style -o endpoint=<регион> -o url=<endpoint> 

Подставим значения, актуальные для данной инструкции:


    s3fs s3sel /home/s3admin/s3disk -o allow_other -o passwd_file=/home/s3admin/.passwd-s3fs -o use_path_request_style -o endpoint=ru-1 -o url=[<https://s3.storage.selcloud.ru>]

В результате в созданной нами папке s3disk должны появиться файлы, которые мы загрузили в контейнер s3sel через панель управления Selectel.

Тестируем смонтированный контейнер

Проверим, что загруженные в контейнер файлы le_storage, видны в папке s3disk. Вводим команды: 


    cd s3disk
ll -l

Создадим пустой файл для проверки возможности записи: 


    touch from_selectel_with_love.txt

Проверяем контейнер в объектном хранилище и видим, что созданный файл появился там.

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

Чтобы не монтировать контейнер каждый раз вручную, можно настроить автоматизацию запуска s3fs. Это делается через изменение конфигурационного файла fstab

Вводим в консоль команду: 


    nano /etc/fstab

Добавляем в файл строку следующего вида:


    s3fs <имя контейнера> <путь к каталогу> fuse allow_other,nonempty,passwd_file=<путь к файлу паролей>,use_path_request_style,endpoint=<регион>,url=<endpoint> 0 0

Добавляем данные инструкции:


    s3fs#s3sel /home/s3admin/s3disk fuse allow_other,nonempty,passwd_file=/home/s3admin/.passwd-s3fs,use_path_request_style,endpoint=ru-1,url=[<https://s3.storage.selcloud.ru>] 0 0

Убедитесь, что контейнер монтируется автоматически, перезагрузив систему. 

Заключение 

Итак, мы смонтировали контейнер облачного хранилища Selectel как локальную директорию в среде Linux и настроили автоматическое монтирование контейнера при перезапуске системы. Это простой в реализации способ настроить связность объектного хранилища с вашим сервером, чтобы выгружать туда бэкапы и любые другие данные,. 

Контейнер может стать хранилищем любого типа файлов, но убедитесь, что это редко используемые данные. s3fs — это не высокопроизводительное решение. Утилита не обеспечит ту же производительность, что и файловая система на локальном диске. Для большей производительности можно использовать похожие по функционалу утилиты goofys или geeseFS.

Дисклеймер: Объектное хранилище имеет плоское адресное пространство и не поддерживает иерархическую структуру. Папки, созданные в хранилище, являются префиксами в имени объекта. Таким образом, любые операции с папками — создание, перемещение, переименование — будут восприниматься хранилищем как работа с объектами внутри этой папки и тарифицироваться согласно правилам тарификации объектного хранилища. 

Читайте также:

Инструкция
Инструкция
Инструкция