Многоуровневое хранение данных
При пиковых нагрузках жесткий диск не справляется со своевременным сохранением файлов событий. В результате новые события ставятся в очередь, и в определенный момент процесс сохранения прекращается.
Эту проблему можно решить с помощью многоуровневого хранения данных, которое работает следующим образом: сначала FindFace Multi сохраняет изображения событий в быстрое (т.н. «горячее») хранилище – SSD-накопитель с ограниченным объемом, а затем перекладчик (сервис findface-multi-file-mover
) переносит их в долговременное (т.н. «холодное») хранилище – обычный HDD. В горячее хранилище сохраняются только миниатюры и полнокадровые изображения. Остальные данные, включая видео, изображения картотеки, отчеты и т.д., сразу сохраняются в холодное хранилище и не требуют переноса. Чтобы начать пользоваться сервисом перемещения файлов, включите горячее хранилище.
Включение горячего хранилища
По умолчанию сохранение в горячее хранилище отключено. Сервис findface-multi-file-mover
запускается вместе с другими сервисами, но при этом не функционирует. Чтобы включить сервис горячего хранения, выполните следующие действия:
Выделите SSD для горячего хранилища. Учитывайте объем SSD: он должен быть достаточно большим, чтобы хранить изображения при пиковой нагрузке до их перемещения в холодное хранилище.
В файле
/opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
настройте параметрFAST_MEDIA_ROOT
. По умолчанию он имеет значениеNone
.sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py FAST_MEDIA_ROOT = '/var/lib/fast-storage/uploads'
Откройте файл конфигурации
/opt/findface-multi/docker-compose.yaml
.В файле
/opt/findface-multi/docker-compose.yaml
найдите сервисfindface-multi-file-mover
.findface-multi-file-mover: command: [python3, /app/service.py, --config=/etc/config.yml] depends_on: [findface-multi-legacy, nats-jetstream] image: docker.int.ntl/ntech/multi/multi/file-mover:ffmulti-2.1.3 logging: {driver: journald} network_mode: service:pause restart: always volumes: ['./configs/findface-multi-file-mover/findface-multi-file-mover.yaml:/etc/config.yml:ro', './data/findface-multi-legacy/uploads:/mnt/slow_storage/uploads']
Настройте сервис
findface-multi-file-mover
. В томах (volumes
) укажите'ssd-path:/mnt/fast_storage/uploads'
– директорию горячего хранилища, из которой файлы впоследствии будут перекладываться в холодное хранилище.Примечание
ssd-path
в приведенном ниже примере – это путь (директория) к вашему SSD, который будет использоваться для горячего хранения данных. Здесь и далее заменяйтеssd-path
на директорию вашего SSD.findface-multi-file-mover: ... volumes: ['./configs/findface-multi-file-mover/findface-multi-file-mover.yaml:/etc/config.yml:ro', './data/findface-multi-legacy/uploads:/mnt/slow_storage/uploads', 'ssd-path:/mnt/fast_storage/uploads']
В сервисах
findface-multi-legacy
иfindface-multi-ui
в томах (volumes
) укажите директорию горячего хранилища'ssd-path:/var/lib/fast-storage/uploads'
. Это необходимо сделать для того, чтобы сервисfindface-multi-legacy
сохранял изображения событий в указанную директорию горячего хранилища. Также, это необходимо для сервисаfindface-multi-ui
: до того, как сервисfindface-multi-file-mover
переместит миниатюру и полнокадровое изображение события в холодное хранилище, сервисfindface-multi-ui
будет отображать их пользователю из указанного каталога горячего хранилища.... findface-multi-legacy: depends_on: findface-multi-identity-provider: {condition: service_started} findface-multi-legacy-migrate: {condition: service_completed_successfully} healthcheck: {interval: 5s, retries: 3, start_period: 60s, test: 'curl -f http://localhost:8002/healthcheck || exit 1', timeout: 3s} image: docker.int.ntl/ntech/multi/multi/legacy:ffmulti-2.1.3 logging: {driver: journald} network_mode: service:pause restart: always volumes: ['./configs/findface-multi-legacy/findface-multi-legacy.py:/etc/findface-security/config.py:ro', './data/findface-multi-legacy/uploads:/var/lib/findface-security/uploads', 'ssd-path:/var/lib/fast-storage/uploads'] ... findface-multi-ui: depends_on: [findface-multi-legacy] image: docker.int.ntl/ntech/multi/multi/ui:ffmulti-2.1.3 logging: {driver: journald} network_mode: service:pause restart: always volumes: ['./configs/findface-multi-ui/nginx-site.conf:/etc/nginx/conf.d/default.conf:ro', './data/findface-multi-legacy/uploads:/var/lib/findface-security/uploads', 'ssd-path:/var/lib/fast-storage/uploads'] ...
Выполните пересборку контейнеров FindFace Multi из директории
/opt/findface-multi
.cd /opt/findface-multi sudo docker-compose down sudo docker-compose up -d
Запуск нескольких экземпляров сервиса findface-multi-file-mover
Для обеспечения отказоустойчивости может потребоваться эксплуатация нескольких экземпляров сервиса findface-multi-file-mover
. Для их запуска выполните следующие действия:
В файле
/opt/findface-multi/docker-compose.yaml
укажите конфигурациюfindface-multi-file-mover
столько раз, сколько экземпляров сервиса вы планируете использовать, например,findface-multi-file-mover: command: [python3, /app/service.py, --config=/etc/config.yml] depends_on: [findface-multi-legacy, nats-jetstream] image: docker.int.ntl/ntech/multi/multi/file-mover:ffmulti-2.1.3 logging: {driver: journald} network_mode: service:pause restart: always volumes: ['./configs/findface-multi-file-mover/findface-multi-file-mover.yaml:/etc/config.yml:ro', './data/findface-multi-legacy/uploads:/mnt/slow_storage/uploads', 'ssd-path:/mnt/fast_storage/uploads'] findface-multi-file-mover2: command: [python3, /app/service.py, --config=/etc/config.yml] depends_on: [findface-multi-legacy, nats-jetstream] image: docker.int.ntl/ntech/multi/multi/file-mover:ffmulti-2.1.3 logging: {driver: journald} network_mode: service:pause restart: always volumes: ['./configs/findface-multi-file-mover/findface-multi-file-mover.yaml:/etc/config.yml:ro', './data/findface-multi-legacy/uploads:/mnt/slow_storage/uploads', 'ssd-path:/mnt/fast_storage/uploads']
Выполните пересборку контейнеров FindFace Multi из директории
/opt/findface-multi
.cd /opt/findface-multi sudo docker-compose down sudo docker-compose up -d
Примечание
Если включено сохранение в горячее хранилище, то миниатюры и полнокадровые изображения, которые не были перенесены в холодное хранилище, не будут сохранены при резервном копировании. Если вам нужно сохранить все изображения, скопируйте их из горячего хранилища в холодное с помощью утилиты rsync
. См. Резервное копирование FindFace Multi.