С помощью утилиты s3fs удастся смонтировать контейнер через FUSE. Таким образом, администратор получит доступ к нему через локальную директорию в Linux. С помощью объектного хранилища вы сможете сэкономить на дисковом пространстве сервера.
В данной статье используется ОС Centos 8, однако есть возможность воспользоваться и другими версиями операционной системы. Стоит подробнее рассмотреть, как работать с объектным хранилищем Linux.
Объектное хранилище ProСloud
Это хранилище, которое отличается высоким уровнем надежности. Оно поддерживает S3fs Linux. С его помощью есть возможность обеспечить безопасное хранение информации в исходном формате практически в любых объемах.
Вот основные достоинства объектного хранилища ProСloud:
- высокий уровень надежности, что очень важно для больших компаний, хранящих терабайты информации;
- трафик в обе стороны в рамках одного региона полностью бесплатный;
- простота управления через сервис, отличающийся интуитивно понятным интерфейсом.
Компания Procloud динамично развивается, у нее активно появляется IT-инфраструктура в новых регионах и странах, что позволяет предлагать клиентам современные решения на выгодных условиях.
Создание контейнера
Для этого требуется выполнить следующие действия:
- Войти в соответствующий раздел через web-панель и нажать на кнопку для создания контейнера.
- Назвать его. Требуется использовать латиницу в DNS совместимом формате. Длина должна быть от 3 до 255 символов. Между точками в названии нужно составлять не менее 3 символов.
- Выбрать доступ контейнера. Существуют Private, Public Objects, Public Full.
- Выбрать регион расположения сервиса.
- Подтвердить создание контейнера.
После его создания требуется выполнить настройку в соответствии с запросами клиента.
Монтирование контейнера
Процесс монтирования предполагает выполнение нескольких последовательных действий. Нельзя пропускать их, чтобы все работало правильно и стабильно. Ниже будут рассматриваться основные действия, однако можно выполнять различные дополнительные настройки в рамках поставленных перед бизнесом задач.
Установка 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 обнаруживает только локальные модификации, а не внешние, сделанные другими клиентами или инструментами.
Также надо понимать, что в объектном хранилище используется “плоское адресное пространство”. Это значит, что любые операции с “папками” будут восприниматься системой, как работа с объектом, представляющим папку или файл.