Подключение нового раздела для хранения записей

Обзор

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

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

Изменение пути для записи на сервере (новый расширенный раздел).

Исходная точка:

  • Эра хранит записи локально (не в S3).

  • Эра пишет внутри контейнера в каталог файловой системы /var/lib/era_files/recpath (по умолчанию в конфиге, либо иной).

  • В контейнере внутренний каталог файловой системы /var/lib/era_files/recpath (по умолчанию при установке, либо иной), подключен в качестве волюма к указанной при установке папке (по умолчанию /opt/era/era_recpath).

  • К серверу подключен новый диск/раздел, произведен маунт в какой-то каталог системы (например, /mnt/storageN).

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

Правильный путь

Воспользоваться процедурой обновления контейнера. То есть переустановить контейнер дистрибутивом, подключив во время установки его к существующей (той же, что и при первоначальной установке) БД postgresql мастер-домена, с теми же параметрами установки, что и раньше, только указав новый каталог для recpath волюма: например, вместо /opt/era/era_recpath указать /mnt/storageN.

Короткий путь

Не требует переустановки контейнера, но требует перезапуска контейнера в удобное время. Используется symlink (опционально может использоваться mount с bind).

Шаг 1. В хосте папку /opt/era/era_recpath (по умолчанию, иное указывается при установке) следует переместить в /opt/era/era_recpath.old. Текущий контейнер продолжит работать с ней за счет привязки через inode во время предыдущего старта контейнера.

mv /opt/era/era_recpath /opt/era/era_recpath.old

Шаг 2. Создать новую папку с прежним именем:

mkdir -p /mnt/storage/era/recpath

Шаг 3. Создаем симлинк на папку, куда смонтирован новый подключенный диск/раздел:

ln -s /mnt/storage/era/recpath /opt/era/era_recpath

Шаг 4. Копируем в папку rshare.sign (сигнал для сервиса на корректное размещение пути для записей)

cp /opt/era/era_recpath.old/rshare.sign /opt/era/era_recpath

Шаг 5. В подходящее время перезапускаем контейнеры, либо систему целиком через веб-интерфейс, чтобы вновь запущенные контейнеры переключились на новую папку по ссылке.

docker restart era

Шаг 6. Переносим при необходимости сохранения файлов и доступов к ним из /opt/era/era_recpath.old в /opt/era/era_recpath (или идентично сразу в /mnt/storage/era/recpath).

mv -r /opt/era/era_recpath.old/domains /opt/era/era_recpath

Если планируется к использованию несколько различных подключенных дисков/разделов для хранения записей, то можно использовать единую папку /opt/era/era_recpath, внутри которой иметь подпапки (подразделы), каждый из которых является симлинком к каталогу, куда смонтирован отдельный диск/раздел. В конфигурации при этом следует добавить алиасы к соответствующим путям, например вместо /var/lib/era_files/recpath использовать /var/lib/era_files/recpath/volN, и для каждого из них добавить в параметр конфигурации сервера recstorepaths.