ProCloud Yandex
28.06.2023
читать 8 минут

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

/upload/iblock/78f/18mj8iczfb19m7n72pm3slv7feyx2n0u/object_storage.jpeg.jpg

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

В данной статье используется ОС Centos 8, однако есть возможность воспользоваться и другими версиями операционной системы. Стоит подробнее рассмотреть, как работать с объектным хранилищем Linux.

Объектное хранилище ProСloud

Это хранилище, которое отличается высоким уровнем надежности. Оно поддерживает S3fs Linux. С его помощью есть возможность обеспечить безопасное хранение информации в исходном формате практически в любых объемах.

Вот основные достоинства объектного хранилища ProСloud:

  • высокий уровень надежности, что очень важно для больших компаний, хранящих терабайты информации;
  • трафик в обе стороны в рамках одного региона полностью бесплатный;
  • простота управления через сервис, отличающийся интуитивно понятным интерфейсом.

Компания Procloud динамично развивается, у нее активно появляется IT-инфраструктура в новых регионах и странах, что позволяет предлагать клиентам современные решения на выгодных условиях.

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

Объектное хранилище ProСloud
arrow
arrow hover

Для этого требуется выполнить следующие действия:

  1. Войти в соответствующий раздел через web-панель и нажать на кнопку для создания контейнера.
  2. Назвать его. Требуется использовать латиницу в DNS совместимом формате. Длина должна быть от 3 до 255 символов. Между точками в названии нужно составлять не менее 3 символов.
  3. Выбрать доступ контейнера. Существуют Private, Public Objects, Public Full.
  4. Выбрать регион расположения сервиса.
  5. Подтвердить создание контейнера.

После его создания требуется выполнить настройку в соответствии с запросами клиента.

Монтирование контейнера

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

Установка s3fs

В операционной системе должна быть установлена s3fs программа. Все команды выполняются в командной строке. Для установки для OS Centos используются команды:

yum install s3fs

или

dnf install s3fs

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

Процесс монтирования контейнера

В корневом каталоге пользователя создаем папку s3test командой:

$ mkdir s3test

К этой папке мы смонтируем существующий контейнер из объектного хранилища и назовем его, например, s3bucket.

На этом этапе администратору нужно подготовить файл конфигурации доступа. S3fs поддерживает стандартные AWS credentials файлы, расположенные в ${HOME}/.aws/credentials. Кроме того, s3fs поддерживает пользовательский парольный файл. Подробнее можно прочитать по ссылке (https://github.com/s3fs-fuse/s3fs-fuse). Сredentials файл имеет удобную опцию разделения доступа к контейнерам, например:

$ cat .aws/credentials [procloud-test] aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXXXXXX aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXX

С помощью s3fs нужно смонтировать контейнер в созданную на прошлом этапе папку с использованием соответствующей команды. В команде прописывают имя контейнера, путь к директории монтирования, профиль ключей и URL подключения.

$ s3fs s3bucket /path/to/dir/s3test -o profile=procloud-test -o url=<URL доступа>

После выполнения команды подключения в директории появятся файлы, загруженные через web-панель Procloud. Проверим наличие файлов с помощью команды:

$ ls s3test/ tmux-3.3-1.1_c9.x86_64.rpm

Автоматизация запуска s3fs

Можно автоматизировать запуск s3fs, чтобы не нужно было производить монтаж контейнера каждый раз ручным способом. S3fs использует механизм FUSE, что позволяет монтировать контейнеры в локальные директории пользователя не имея полномочий root. Поэтому для автоматического подключения может быть два варианта:

  • монтирование при загрузке ОС через запись в файле /etc/fstab, что требует root привилегий и, соответственно, другого способа передачи ключей доступа;
  • монтирование при загрузке ОС через выполнение скрипта монтирования в пространстве пользователя через запись в персональном crontab файле.

Для первого случая надо создать парольный файл в системе или в домашнем каталоге root пользователя, например, в формате: bucketName:accessKeyId:secretAccessKey

# cat /etc/passwd-s3fs s3bucket:xxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # chmod 640 /etc/passwd-s3fs

Добавим в fstab командой:

s3bucket /path/to/dir/s3test fuse.s3fs _netdev,allow_other,url=<URL доступа> 0 0

Смонтируем контейнер:

# mount s3bucket

Во втором случае пользователь может создать исполняемый командный файл в своем домашнем каталоге, в котором необходимо указать команды, приведенные нами в начальном примере ручного подключения. А затем добавить запись в личный crontab вида:

@reboot /bin/sh /path/to/dir/mountme.sh

Заключение

Использование контейнера позволяет решить проблему с тем, где хранить бэкапы системы и другие файлы, это может быть использовано вместе с rsync. Однако при использовании s3fs присутствует ряд ограничений:

  • случайная запись или добавление в файлы требуют перезаписи всего объекта, оптимизированного с помощью многокомпонентной копии для загрузки по частям;
  • операции с метаданными, такие как перечисление каталогов, имеют низкую производительность из-за задержки в сети;
  • Последование чтение может привести к временному отсутствию записанных данных ​​(Eventual Consistency); 
  • нет атомарных переименований файлов или каталогов;
  • отсутствие координации между несколькими клиентами, монтирующими один и тот же контейнер;
  • отсутствие hard link;
  • inotify обнаруживает только локальные модификации, а не внешние, сделанные другими клиентами или инструментами.

Также надо понимать, что в объектном хранилище используется “плоское адресное пространство”. Это значит, что любые операции с “папками” будут восприниматься системой, как работа с объектом, представляющим папку или файл.

Новости
18 апреля 202418.04.2024
читать 2 минутычитать 2 мин
Дайджест обновлений продуктов Q1
5 апреля 202405.04.2024
читать 1 минутучитать 1 мин
ProCloud CPO Диана Беда в рейтинге ИТ-лидеров от Global CIO
28 марта 202428.03.2024
читать 1 минутучитать 1 мин
Запуск новой локации: Казахстан