SIRINVIDEO CCTV Документация администратора и пользователя На сайт 2026.08

Хранилища DVR

Диски и S3: подключение, инициализация, ретенция, вытеснение и диагностика.

Хранилище — это именованная цель записи архива на конкретной ноде. Типов два: локальный диск (каталог на смонтированной файловой системе) и S3 (учётная запись объектного хранилища). Камера при настройке DVR выбирает хранилище по имени, поэтому имя — часть эксплуатационной схемы, а не техническая подробность: «Постоянное имя, используемое политиками размещения DVR камер.».

В S3 архив не пишется напрямую

Нода всегда пишет архив на локальный диск. S3 подключается отдельно — как холодная копия уже записанных сегментов. Хранилище S3 нельзя выбрать основной целью записи камеры, оно доступно только в блоке «Холодный архив / резервная копия S3» формы камеры.

Хранилища заводит суперадмин в карточке узла: Узлы → нода → Хранилища. Админ организации хранилища не настраивает — он лишь выбирает из разрешённых ему имён при создании камеры.

Два независимых шага#

Работа с диском всегда состоит из двух действий, и путать их не нужно:

  1. Описание в Plane. Вы создаёте запись хранилища: имя, тип, путь, параметры. Plane сохраняет желаемое состояние и передаёт его ноде в составе конфигурации. Файловая система при этом не трогается вообще.
  2. Инициализация диска. Отдельное явное действие, при котором нода создаёт в каталоге файл-маркер, а Plane привязывает идентификатор хранилища к конкретному устройству. Только после этого диск становится пригодной целью записи.
Пока диск не инициализирован, камеру на него назначить нельзя

Неинициализированный диск для размещения не существует: он не появляется в списке «Хранилище записи» формы камеры, а попытка сохранить камеру с ним даёт ошибку «Инициализируйте этот диск в хранилищах ноды перед назначением DVR-камер.». Если в выпадающем списке пусто, показывается «На этой ноде нет доступного наблюдаемого хранилища.».

Это самая частая жалоба вида «добавил диск, а он не появляется». Диск добавлен — но не инициализирован.

Подготовка диска на сервере#

Диск должен быть смонтирован до добавления и иметь отдельную точку монтирования — так переполнение архива не остановит систему. Файловая система: ext4 или XFS.

lsblk -o NAME,SIZE,MOUNTPOINT     # диск смонтирован?
df -h /mnt/dvr                    # сколько места

Каталог должен быть доступен для записи сервисной учётной записи ноды. Корневой раздел под архив не берите: заполнившийся / останавливает не только запись, но и саму ноду.

Добавление локального диска#

Узлы → нода → Хранилища → добавить. Откроется окно «Новое хранилище».

Поле Значения Примечание
Название латиница, цифры, ., _, - постоянное имя; при редактировании не меняется
Тип хранилища «Локальный диск» «После создания тип хранилища изменить нельзя.»
Путь файловой системы абсолютный путь, например /mnt/dvr «Абсолютная директория, доступная для записи сервисной учётной записи ноды.»
Целевая длительность сегмента DVR 15 / 30 / 60 минут по умолчанию 15 минут
Удалять при (%) 0…100 по умолчанию 90

Путь проверяется строго. При ошибке выводится «Укажите нормализованную абсолютную директорию ниже /; ., .., // и завершающий слеш запрещены.» — то есть /mnt/dvr подходит, а /mnt/dvr/, /mnt//dvr, /mnt/dvr/.. и / — нет.

Длительность сегмента#

Архив пишется файлами-сегментами. Варианты подписаны прямо в списке: «15 мин · 96 сегментов/сутки (рекомендуется)», «30 мин · 48 сегментов/сутки», «1 час · 24 сегмента/сутки».

Это целевое значение, а не гарантия: «реконнект, разрыв потока или временной шкалы, остановка/восстановление после сбоя и защитные лимиты могут финализировать сегмент раньше». Больший сегмент уменьшает число файлов, индексов и объектов S3, но задерживает холодную копию — сегмент уезжает в S3 только после того, как он закрыт. Если холодная копия должна быть свежей, оставляйте 15 минут.

Инициализация диска#

Новый диск получает статус «Требуется инициализация» с пояснением «Размещение DVR заблокировано, пока суперадмин явно не привяжет этот идентификатор к смонтированной файловой системе.». Нажмите «Инициализировать диск».

Подтверждение говорит, что именно произойдёт: «Инициализировать «{имя}» по пути {путь}? Убедитесь, что по этому точному пути смонтирован нужный надёжный том. Plane привяжет UUID хранилища к текущему устройству и inode корня; диск не форматируется.».

Диск не форматируется и не очищается — создаётся только файл-маркер. Но том должен быть тем самым: привязка запоминает устройство и inode корня, и подмена тома потом будет обнаружена.

Промежуточные состояния, которые вы можете увидеть:

Состояние Что означает
«Ожидание отчёта ноды об этом диске» нода ещё не приняла новую конфигурацию; проходит за несколько секунд после добавления
«Идёт инициализация» «Plane надёжно заблокировал этот идентификатор и проверяет смонтированную файловую систему. Дождитесь завершения и не заменяйте том.»
«Проверка после инициализации…» «Диск инициализирован; нода перечитывает метку идентичности. Пропадёт через несколько секунд.»
«Диск инициализирован и проверен.» всё готово, диск можно выбирать в форме камеры

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

Инициализация прошла успешно

В консоли хранилище показывает «Диск инициализирован и проверен.», а на сервере ноды в каталоге появился файл-маркер:

ls -la /mnt/dvr/
# .hastreamer-storage-identity   ← маркер: каталог принадлежит этой системе

То же самое через API:

BASE=https://cctv.example.com
NODE_ID=<UUID-ноды>
curl -sS "$BASE/api/v1/nodes/$NODE_ID/storages" -H "Authorization: Bearer $TOKEN" \
  | python3 -c 'import sys,json;[print(s["name"],s["provisioning"]["state"]) for s in json.load(sys.stdin)]'
# dvr1 ready

После этого диск появляется в списке «Хранилище записи» формы камеры.

Маркер привязан к тому — не переносите каталог руками

Если том размонтировали, заменили или каталог переехал, хранилище переходит в состояние «Идентификатор файловой системы не совпадает»: «Настроенный том отсутствует или больше не соответствует receipt инициализации. DVR и чтение архива заблокированы до возврата исходного тома.».

Запись архива и чтение из него в этот момент остановлены — намеренно: писать на неизвестный том опаснее, чем не писать вовсе. Верните исходный том на тот же путь. Для планового переезда архива на другой диск создайте новое хранилище и переназначьте камеры: «Путь и идентификатор диска неизменяемы. Для переноса корня DVR создайте новое хранилище.».

Добавление хранилища S3#

Тот же диалог, тип S3. Секция «Подключение S3» — «Учётные данные и адресация S3-совместимого холодного уровня, используемые нодой.».

Поле Значения Примечание
Endpoint (host[:port]) s3.example.com или s3.example.com:9000 «Plane хранит только хост и порт»
Ключ доступа идентификатор учётных данных выдайте минимально необходимые права
Секретный ключ секрет «Хранится как чувствительная конфигурация ноды и не показывается в списках.»
Регион например eu-west-1 используется при подписи запросов
Режим адресации «vhost (по умолчанию)» или path «Используйте path только если этого требует S3-совместимый провайдер.»
Проверка TLS системное доверие, insecure или путь к своему CA

Endpoint проверяется: «Используйте https://host[:port] или host[:port]. HTTP, пути, параметры запроса и встроенные учётные данные запрещены.». При редактировании поле секретного ключа пустое — «Настроено. Оставьте пустым, чтобы сохранить текущее write-only значение.»; ключи можно ротировать, не трогая остальное.

Хранилище S3 подключается к камере в форме камеры, блок «Холодный архив / резервная копия S3»: переключатель «Копировать в S3», выбор хранилища и bucket (3–63 символа в нижнем регистре). Срок хранения копии наследует размерность локальной политики (срок остаётся сроком, объём — объёмом) и не может быть меньше локального.

Ретенция и вытеснение#

Глубину архива задают два независимых механизма, и их часто путают.

Уровень Где настраивается Что делает
Политика камеры форма камеры → «DVR (запись)» сколько хранить записи этой камеры: «По сроку хранения» (12h, 7d) или «По объёму хранилища» (500M, 10G)
Порог хранилища форма хранилища → «Удалять при (%)» общий предохранитель диска: «Начинать очистку retention при достижении этого процента заполнения диска.»

Политика камеры — это то, что вы обещаете заказчику («две недели архива»). Порог хранилища — защита самого диска: когда заполнение достигает указанного процента, начинают вытесняться самые старые записи, независимо от того, истёк ли их срок по политике камеры.

Порог вытеснения молча укорачивает согласованную глубину архива

Если суммарные политики камер требуют больше места, чем есть на диске, порог сработает раньше срока: записи будут удаляться не «по две недели», а «по мере заполнения». Формально всё работает — на деле глубина архива окажется меньше обещанной, и обнаружится это при первом же разборе давнего инцидента.

Следите за признаками во вкладке «Хранилища»: «Достигнут порог вытеснения — старые записи заменяются новыми», «Близко к порогу» и прогноз «вытеснение начнётся примерно через {значение}». Если они появились — добавляйте ёмкость или сокращайте политики камер, а не поднимайте порог к 100 %: переполненный диск останавливает запись.

Значение 0…100. Ставить его выше 95 % не стоит: вытеснение должно успеть освободить место до того, как файловая система упрётся в потолок.

Диагностика#

Вкладка «Хранилища» карточки узла показывает по каждому хранилищу:

  • Занятость и ёмкость — «Занято ёмкости», «{n}% свободно», «Порог вытеснения: {n}%».
  • Нагрузка — «IOPS записи», «IOPS чтения», «Скорость чтения», «Скорость записи», а также «I/O физического устройства» с пометкой «Общее для устройства · пути могут его разделять» (несколько хранилищ на одном физическом диске делят его пропускную способность).
  • Динамика — «Скорость заполнения», «Заполняется на {значение}/день», «Чистый прирост», «Освобождено», «Стабильно — не заполняется» либо «Уменьшается на {значение}/день».
  • Холодный уровень · S3 — «Известно в архиве», «Перенесено за проход», «Очередь переноса», «Зафиксировано в локальном каталоге», «Известные неполные пары», «Ошибки S3», «Холодные чтения с запуска», «Загрузки в tier с запуска».

Состояние самой записи хранилища может быть «Применено», «Ожидает применения» или «Ожидает телеметрию» — последние два означают, что нода ещё не подтвердила изменение.

Симптом Причина Решение
Диска нет в списке «Хранилище записи» не инициализирован нажмите «Инициализировать диск»
«Инициализируйте этот диск в хранилищах ноды перед назначением DVR-камер.» то же самое, при сохранении камеры то же самое
Инициализация отказывает сразу после добавления нода ещё не получила конфигурацию подождите несколько секунд и повторите
«Идентификатор файловой системы не совпадает» том не смонтирован либо подменён верните исходный том на тот же путь
Архив короче обещанного срабатывает порог вытеснения добавьте ёмкость или сократите политики камер
Растёт «Очередь переноса», есть «Ошибки S3» холодный уровень не успевает или недоступен проверьте endpoint, ключи и связность с S3
Запись идёт рывками, высокие IOPS несколько хранилищ на одном физическом устройстве разнесите их по разным дискам

Изменение и удаление#

Часть полей блокируется, как только хранилище используется:

  • Путь диска — «Путь заблокирован, пока это хранилище используют камеры: {n}. Для безопасного переноса создайте новое хранилище и переназначьте камеры.».
  • Endpoint, регион и адресация S3 — «заблокированы, пока этот физический namespace S3 используют камеры или задачи очистки»; ключ доступа, секретный ключ и проверку TLS можно ротировать.
  • Название и тип — не меняются никогда после создания.

Удаление возможно, только если на хранилище не ссылается ни одна камера и не осталось незавершённых задач очистки архива; при попытке удалить занятое хранилище операция отклоняется. Подтверждение: «Удалить хранилище «{имя}»? Это разрешено, только если на него не ссылаются камеры; существующие файлы не удаляются.» — сами записи архива на диске при этом остаются, удаляется только описание в Plane.

Диск, который хотя бы раз инициализировали, удалить нельзя

Кнопка удаления недоступна с пояснением «Инициализация уже могла дойти до ноды. Перед удалением идентификатора диска требуется безопасная деинициализация или сверка состояния.». Признак ставится не только после успешной инициализации, но и после неудачной или оборвавшейся попытки: на ноде мог остаться файл-маркер, и удаление одной лишь записи в Plane сделало бы его бесхозным — а хранилище с таким же именем, созданное позже, стало бы неотличимо от старого.

Штатной операции обратной деинициализации в системе нет, поэтому запись остаётся во флоте. Практически это означает: имя и путь диска выбирают один раз, до инициализации. Проверьте их дважды — переименовать или «переиграть» потом не получится, останется только не использовать запись.

Что дальше#