- Created by Александр Акимов, last modified by Виталий Агафонов on Oct 23, 2024
Введение
При проектировании систем видеонаблюдения часто стоит вопрос об удобстве работы с архивом. В интерфейсе ПО TRASSIR наглядно отображается глубина записанного архива. Измеряется глубина архива в днях.
Индикация глубины архива представлена следующим образом:
Подчеркнутая строка - это индикатор глубины архива. Данный индикатор отражает глубину архива видеопотоков. Расположены они следующим образом:
основной поток / привилегированный поток / субпоток (например: 78/0/58).
Глубина архива считается с первой записи в архиве. Если у вас есть запись в архиве 7 дней назад, а за последующие шесть дней записи нет, то глубина архива, все равно, будет отображаться 7 дней.
В ПО TRASSIR 3.1 архив от предыдущих версий ПО TRASSIR в статистике глубины архива не учитывается
ПО версий 4.5 будет читать архив старых версий, например 4.0, но версия 4.0 архив от сервера 4.5 прочитать не сможет
Каждая версия Trassir на диске ищет в первую очередь каталог вида "VmsArchive-4.1" (с указанием версии).
Эволюция названий каталога с архивом следующая:
- TrassirArchive-3.0
- TrassirArchive-3.1
- TrassirArchive-4.0
- TrassirArchive-4.1
- VmsArchive-4.1
ПО TRASSIR может вести запись на жесткие диски (HDD), сетевые жесткие диски, твердотельные накопители (SSD, флеш-накопители) сетевые хранилища (NAS). Под запись архива лучше использовать файловую систему NTFS, так как тестирование работы архива с другими файловыми системами не проводилось. Исключением является файловая система EXT 4. Данная файловая система используется на серверах с предустановленной TRASSIR OS.
ПО TRASSIR не пишет архив на системный раздел, а также диски и разделы объемом меньше 10 Гб
Ниже представлена структура архива ПО TRASSIR:
Структура архива и принцип его работы
В корне каждого HDD или раздела HDD создается папка с именем VmsArchive-4.1. В данную папку сохраняется вся информация с камер.
Архив ПО TRASSIR имеет определенную структуру, ниже можно с ней ознакомиться:
Блоки синхронизированного архива выглядят немного иначе, с припиской Guid канала:
На серверах TRASSIR OS в разделе архива еще может находиться папка lost+found, это системная директория.
Данную директорию использует утилита fsck, она предназначена для проверки файловой системы.
Если утилита fsck в ходе проверки находит данные в файловой системе, которые повреждены или не имеют имени в системе, то такие файлы помещаются в директорию lost+found.
В папке с архивом имеется ряд файлов, каждый из которых отвечает за определенный функционал ПО TRASSIR.
Рассмотрим более подробно:
- Блоки и индексы архива
- Флаги архива
- Метаданные ActiveSearch
Из-за особенностей работы архива ПО TRASSIR нельзя в один регистратор переносить диск с архивом с другого регистратора. Из-за этого может сломаться внутренняя нумерация блоков, и весь архив может стать не доступным. По той же логике, нельзя писать нескольким регистраторам в одну папку на сетевом хранилище.
Блоки и индексы архива
Блоки архива служат ячейками для хранения видеопотоков подключенных камер к ПО TRASSIR. Соответственно архив ПО TRASSIR состоит из файлов блоков (по 2Гб) и файлов индексов (по 15мб).
В файлах-блоках хранится информация со всех камер подключенных к ПО TRASSIR.
Файл индекса содержит в себе информацию о дате, времени, и какой камере принадлежат те или иные кадры (фреймы).
Принцип названия файлов построен следующим образом:
1-1400854021042033-e77431c100006cb3
1-1400854021042033-e77431c100006cb3-a
Где:
"1" номер кольца записи (1 основной, 2 привилегированный, 3 субпоток);
"1400..." метка времени (Unix time в микросекундах);
"e77..." хеш диска;
"006cb3" номер блока на диске;
"-a" признак индекса ("afterblock").
Так же, префикс “-а” и “-f” свидетельствуют о времени записи блока в архив, то есть индекс “a” свидетельствует, что блок в архив был записан в настоящем времени, а индекс “f” - свидетельствует о записи блока архива в будущем. Такое возможно при переводе часов на сервере на более ранее время. Что является нормальной реакцией TRASSIR на ненормальное поведение системы.
Блоки с префиксом “f” в интерфейсе ПО TRASSIR будут находится в “потерянных каналах” и иметь имя - “имя канала (future)”:
Для ПО TRASSIR блок, метка времени которого отличается от других на 5 и более минут (текущее время + 5 минут), будет засчитан как "future"
Если на сервере время переводили несколько раз, то блоки архива, которые уже имели префикс “f” могут быть не читаемы. В такой ситуации необходимо обратиться в техническую поддержку
"Мегаблоки" - несколько блоков архива с общим файлом индекса, то есть на каждом диске есть файл индекса, содержащий в себе информацию о других блоках входящих в состав этого "мегаблока". Использование "мегаблоков" позволяет повысить скорость работы с блоками архива и более равномерно распределить (уменьшить) нагрузку на HDD сервера. Достигается это за счет того, что прочитав один файл индекса "мегаблока" ПО TRASSIR оперирует сразу с несколькими блоками архива, которые расположены на разных HDD сервера.
На создание "мегаблоков" влияет количество каналов и количество HDD подключенное к серверу.
В ситуации когда в системе (на сервере) от 5 каналов и от 3 HDD, будут создаваться "мегаблоки":
Флаги архива
Рассмотрим за что отвечают флаги архива.
Motion_search_mark - флаг указывающий на каком HDD хранятся метаданные ActiveSearch (ActiveSearch - это видеоаналитика ПО TRASSIR позволяющая искать наличие движений в указанной пользователем области кадра). Данный флаг должен быть только на одном HDD (если этот HDD не отключали и запись аналитики не велась на другой HDD).
Initial_fill - флаг отвечающий за заполнение HDD файлами архива.
При отсутствии файла initial_fill в директории VmsArchive-4.1 архив будет перезаписываться независимо от наличия свободного места на HDD. (При условии наличия созданных блоков на данном диске).
Цикл перезаписи архива начнется автоматически при следующих условиях:
- когда на HDD без метаданных ActiveSearch (то есть без флага motion_search_mark) остается 2Гб свободного места.
- в случае, если на HDD имеются метаданные ActiveSearch, то цикл перезаписи начнется при 12Гб свободного места на HDD или меньше, в зависимости от условий (например большого количества метаданных ActiveSearch). В данном случае 10Гб будут отведены под метаданные ActiveSearch, а 2Гб для перезаписи блоков архива.
При начале цикла перезаписи флаг initial_fill удаляется.
Файл README.txt - данный файл не является флагом. ПО TRASSIR с помощью данного файла определяет наличие прав чтения и записи в папку архива.
Format_mark - данный флаг присутствует только в TRASSIR OS. Он свидетельствует о том, что HDD отформатирован и готов для записи архива. При удалении данного флага появится возможность форматирования этого HDD в TRASSIR OS.
Метаданные ActiveSearch
В структуру архива входят папки, которые содержат в себе метаданные для видеоаналитики ActiveSearch. Так же в этих папках содержатся превью архива и их индексация.
Названия папок содержат префиксы “M$” и GUID’ы каналов. Содержимое папки:
Соответственно в папках содержатся файлы метаданных ActiveSearch.
В названии файла метаданных отражена дата события и его время в формате unixtime.
Так же могут быть файлы:
- 2014-08-07-1407355200_thumb - файл с картинками превью;
- 2014-08-07-1407355200_thumb_index - файл с индексацией превью.
При изъятии HDD с метаданными ActiveSearch (например диск 1) ПО TRASSIR начнет записывать новые метаданные ActiveSearch на любой другой HDD (например диск 2). При возвращении в систему ранее изъятого диска (диск 1) ПО TRASSIR будет снова оперировать с метаданными ActiveSearch ранее изъятого HDD (то есть с диском 1). Соответственно метаданные ActiveSearch с другого HDD (диска 2) в ПО TRASSIR доступны не будут. Но их можно перенести из одной папки в другую.
Данные ActiveSearch ассоциированы с временем когда было совершено событие. После перезаписи блока архива относящегося к какому-либо событию данные этого события из БД ActiveSearch будут удалены только в 00:00 ночи, то есть при наступлении следующего дня.
HDD, на котором присутствует флаг motion_search_mark встанет на перезапись архива при 10 Гб. свободного места (10 Гб. отведены для БД ActiveSearch.). При увеличении БД ActiveSearch больше 10 Гб будут удаляться блоки архива.
Три кольца записи
При определенных настройках ПО TRASSIR на HDD будет записываться основной видеопоток, привилегированный видеопоток, субпоток - это и есть технология - “три кольца записи”. При большом количестве HDD в системе ПО TRASSIR чередует HDD между собой в зависимости от нагрузки на них. Для записи основного потока за единицу времени ПО TRASSIR не может использовать больше 4 HDD.
Распределение записи на HDD:
Основной видеопоток и привилегированный видеопоток на HDD записывается по алгоритму n-1, то есть субпоток пишется всегда на отдельный HDD.
Стоит учесть, что при большом количестве HDD в системе привилегированный поток может записываться отдельно от основного потока, то есть основной поток будет записываться на свои HDD, а привилегированный на свои HDD
Количество задействованных дисков так же будет зависеть от количества каналов на сервере:
1-4 канала - запись идёт на 1 HDD.
5-9 каналов - запись идёт на 2 HDD.
10-14 каналов - запись идёт на 3 HDD.
15+ каналов - запись идёт на 4 HDD.
Обратите внимание, что при добавлении дополнительного диска он будет записываться наравне с остальными, заполняясь постепенно. Резкого прироста глубины архива ожидать не стоит, особенно если глубина архива большая
Скорость записи и максимальный объем архива
Скорость записи архива
При использовании большого количества камер необходимо позаботиться о скорости записи архива на HDD.
Скорость записи архива в ПО TRASSIR:
Количество HDD | фрагментированные HDD | не фрагментированные HDD |
1 | 4 МБ/с | 25 МБ/с |
2 | 5 МБ/с | 50 МБ/с |
3 | 15 МБ/с | 100 МБ/с |
4 | 20 МБ/с | 150 МБ/с |
5 | 25 МБ/с | 200 МБ/с |
6 | 25 МБ/с | 200 МБ/с |
7 | 25 МБ/с | 200 МБ/с |
8 | 25 МБ/с | 200 МБ/с |
Чем больше время непрерывной работы ПО TRASSIR, тем быстрее можно работать с архивом. Это связано с тем, что ПО TRASSIR за время своей работы хранит в кэше/буфере информацию о имени и расположении файлов индексов/блоков.
Максимальный объем архива
В архиве есть определённые ограничения на максимальный размер диска (глубина архива). Связано это с тем, что размер файла индекса конечен и не может превышать 15мб. В этом файле хранится вся информация о каждом из каналов в системе и ссылка на блоки, где присутствует архив относящийся к этому каналу. Чем больше каналов в системе - тем больше таких записей, а от размера диска зависит количество созданных блоков и значит цепочки зависимостей длиннее и содержат больше данных. Существует прямо пропорциональная зависимость между доступным количеством каналов и размером дисков.
Формула расчёта этой зависимости:
Количество каналов * ( Максимальное количество 2Гб блоков / 1024 / 1024 ) ≤ Размер a-block файла
Количество каналов - количество каналов на сервере
Максимальное количество 2Гб блоков = размер диска (Гб) / 2
Пример: 1,8 Тб диск вмещает 900 блоков.
Размер a-block файла = константа в 15мб.
Если мы выходим за пределы в 15мб, то лишняя информация будет утеряна и цепочка зависимостей для канала будет неполной. В итоге ПО TRASSIR придётся перебирать все ближайшие файлы индексации и достраивать цепочку самостоятельно. Когда количество таких файлов десятки тысяч - данная процедура начинает занимать ощутимое время.
Чем грозит выход за рамки этих ограничений для пользователей? Долгая индексация при запуске ПО TRASSIR (включение дисков): например по 10-15 минут.
Сильные задержки при построении временной шкалы: переход по несколько минут при выборе следующего дня/месяца во время просмотра архива.
В современных версиях ПО используется другая логика работы архива и a-block больше не зависит от кол-ва каналов сервера. Поэтому данная инструкция по расчету подходит только для версий ниже 4.3.3.1
Расчет необходимой ёмкости можно сделать через калькулятор на нашем сайте.
Распределение блоков архива при различных емкостях HDD
При проектировании сервера стоит учитывать емкости используемых HDD. Ниже рассмотрим ряд примеров, и ситуаций, которых стоит избегать при проектировании и настройке системы видеонаблюдения.
Рассмотрим ситуацию, когда под запись архива отведено 2 HDD объемом по 2 Тб. каждый. Блоки архива будут распределяться равномерно архива в такой системе:
Когда в системе 2 HDD, но один диск объемом 2 Тб, а второй диск - 4 Тб. ПО TRASSIR начинает прореживать, тем самым увеличивая нагрузку (чтения/записи) на HDD большего объема:
При использовании в системе нескольких HDD по 2 Тб. (например 2 HDD) и NAS (сетевого хранилища) объемом 10 Тб.
Такую конфигурацию не рекомендуем. При такой большой разнице в объеме между HDD и NAS, на NAS всегда будет присутствовать свободное место. Вызвано это тем, что ПО TRASSIR пытается выровнять архив по всем дискам. Соответственно данная конфигурация не целесообразна.
Для обеспечения нормальной работоспособности архива с использованием NAS большого объема, необходимо будет создать на нём логические разделы объёмом примерно равным объемом используемых HDD в системе, либо с помощью RAID контроллера объединять все локальные HDD на сервере в раздел аналогичного объема, что и на NAS.
В ПО TRASSIR можно добавить максимум 24 тома для записи. Связано это с ограничениями Windows по количеству латинских букв для назначения томов устройств. Обойти это ограничение возможно путем добавления HDD как сетевой папки
Частые ошибки HDD в ПО TRASSIR
В процессе эксплуатации ПО TRASSIR могут возникать различные ошибки связанные с архивом:
disk too slow - данная ошибка возникает в ситуациях, когда скорости записи HDD недостаточно для записи видеопотока.
ПО TRASSIR сообщает об этой ошибке, когда размер буфера отведенного под блок архива превышает 500мб. Соответственно, как только происходит переполнение буфера, информация теряется и в архиве будет отсутствовать этот временной промежуток.
disk too slow(2) - данная ошибка возникает в ситуациях, когда из-за нехватки скорости записи “активный” блок архива еще не записан полностью, но необходимо уже начать запись информации в следующий блок архива.
disk space not available - данная ошибка возникает в случаях когда ПО TRASSIR по каким-то причинам не может выделить свободное место для создания блока архива.
(error 27) ERROR_SECTOR_NOT_FOUND - сектор не найден, возможно на HDD присутствуют повреждённые сектора.
(error 1117) cannot write - запрос не был выполнен из-за ошибки ввода/вывода на устройстве. Данная ошибка может быть вызвана нехваткой прав для записи на HDD или некорректными настройками в ПО TRASSIR (например все HDD включены только на чтение).
Ошибка boost::file::system::rename с ссылкой на определенный блок - кто-то удалил блок.
При использовании привилегированных каналов в случае, если глубина основного потока будет составлять меньше суток, в ПО TRASSIR возникнет ошибка: "текущие настройки привели к вытеснению основного потока…"
В логах можно заметить спецсимволы (обычно постоянно повторяющиеся), они так же несут информацию о возможных неполадках:
"@" - кадр потерян, т.к. переполнен буфер памяти - стоит попробовать снизить битрейт на подключенных в систему камерах.
"$" - "SubFrames" потерян, т.к. переполнен буфер в памяти - стоит попробовать снизить битрейт на подключенных в систему камерах.
"~" - кадр потерян, т.к. не удалось привязать его к GOP (группе кадров) (не найден `I`-frame для `P`-frame) - проверить сеть на предмет потерь пакетов и её стабильность.
"`" - GOP (группа кадров) потеряна, т.к. их временная метка меньше временной метки последнего кадра записанного в кольцо - проверить сеть на предмет потерь пакетов и её стабильность.
"?" - GOP (группа кадров) потеряна, т.к. не удалось выделить новый блок на запись - стоит попробовать снизить битрейт, возможны проблемы с архивным диском.
Дополнительно
Особенности работы архива старых версий ПО TRASSIR
В ПО TRASSIR 3.0, из-за особенностей записи архива, HDD сервера со временем фрагментировались, что в конечном итоге приводило к снижению скорости чтения и записи архива
Что такое фрагментация жесткого диска и какие проблемы она с собой несет?
Во время записи файла на жесткий диск существует вероятность, что файл не поместится в отведенное ему пространство и операционная система разделит его на логические части. Такое деление файла на части и называется фрагментацией файла.
Наиболее сильно фрагментируются файлы, которые часто меняют размер, а также файлы большого размера.
Чем сильнее фрагментирована файловая система, тем медленней компьютер работает с информацией на жестком диске.
Что такое дефрагментация жесткого диска?
Дефрагментацией HDD называется процесс, в процессе которого убираются фрагменты файлов или уменьшается их количество.
Соответственно, если HDD отведенный под архив был отформатирован и смонтирован в ПО TRASSIR под запись, то такой HDD не будет фрагментированным и фрагментироваться в дальнейшем не будет, при условии отсутствия человеческого фактора.
Как итог - на старых версиях ПО необходимо обязательно проводить дефрагментацию HDD время от времени.
Расчет емкости HDD
В случаях, когда требуется рассчитать необходимую емкость HDD для конкретной глубины архива используется формула:
где:
C - количество камер.
B - битрейт выставленный на устройстве (битрейт - буквально, скорость прохождения битов информации, то есть максимальное количество бит, которое можно передать в единицу времени)..
Учитывая, что для передачи цифровой информации битрейт измеряется в битах, а объем хранения и обработки цифровой информации в байтах необходимо осуществлять перевод из одной единицы измерения в другую.
1 байт = 8 бит. Поэтому в формуле выше общий битрейт с устройств необходимо поделить на 8.
Полученный результат - это объем информации за секунду. Далее переводим секунды в минуты, то есть умножаем на 60 (получаем объем информации за минуту), затем еще раз умножаем на 60 (получаем за час) и т.д.
Пример:
Имеется 23 камеры с максимальным разрешением записи 2 МП и 4 Тб HDD на сервере.
Необходимо рассчитать глубину архива при такой емкости HDD, при условии, что запись будет постоянной, то есть 24 часа в сутки.
Соответственно находим общий битрейт:
средний битрейт для 2 МП камер при 25 к/с. (1920х1080/25fps) составляет 3 Мбит.
23 * 3 = 69 Мбит/с (это общий битрейт со всех 23 камер).
Переводим Мбит/с в мб/с поделив на 8.
69/8 = 8,7 мб/с - необходимая скорость записи на HDD сервера.
Далее переводим в минуты умножив на 60.
8,7 * 60 = 522 мб/м.
Переводим в часы и сутки.
522 * 60 = 31320 мб/ч.
31320 *24 = 751680 мб/сутки.
Для удобного восприятия полученный результат переведем в Гб.
751680/1024 = 734 Гб в сутки при постоянной записи.
Соответственно переведем емкость HDD из Тб в Гб, то есть 4 * 1024 = 4096Гб.
И в итоге находим глубину архива.
4096/734 = 5, то есть глубина архива составит 5 суток, при условии, что запись велась на сервере постоянно.