Skip to content

Архив DVR

Архив превращает стрим из «только прямой эфир» в nPVR: зритель отматывает назад, догоняет начало передачи, смотрит вчерашний выпуск. Запись ведёт стример, на котором работает стрим; эта страница готовит диски, включает запись и показывает, как убедиться, что архив действительно пишется и играется.

Подготовьте диски стримера

Хранилище архива — настройка стримера, а не стрима. Откройте стример из реестра, блок DVR в его настройках:

  • Корень архива — каталог, в который смонтированы диски архива.
  • Диски — по одному на физическое устройство: дочерние каталоги корня.
  • Проверять монтирование перед записью — включено по умолчанию: каталог без собственного монтирования репортится как «не смонтирован», а писать архив на раздел системного корня стример отказывается — это верный способ уронить машину вместе с архивом. Выключайте только осознанно.

Диски собираются так: смонтируйте каждый диск дочерним каталогом одного общего каталога — /storage/dvr/disk1, /storage/dvr/disk2, /storage/dvr/disk3, — укажите общий каталог как Корень архива и внесите каждый диск в список дисков как его дочерний каталог:

Настройки стримера: корень архива и диски под ним

Нажмите Сохранить изменения — central доставит хранилище стримеру, индикаторы применения покажут, когда оно вступило в силу. Без настроенного хранилища запись не начнётся, сколько бы стримов её ни попросили.

Локальный стример одномашинной инсталляции — не исключение: он открывается из того же реестра, и его хранилище настраивается тем же блоком DVR в консоли.

JBOD вместо RAID

Архивная подсистема Catena — это application RAID: стример сам раскладывает запись по независимым устройствам, сам замечает выпавший диск и продолжает писать на оставшиеся. Поэтому диски отдаются ему по отдельности — JBOD: у каждого своя файловая система и своя точка монтирования, как в сборке выше. Потеря диска стоит ровно его доли архива: остальные диски продолжают писать, а в реестре стримеров краснеет индикатор DVR.

Аппаратный и программный RAID под архивом мы не рекомендуем — и обещаем, что с этими инженерными решениями вы столкнётесь с проблемами. Запись архива — непрерывный поток на все стримы машины сразу, и под такой нагрузкой массив ведёт себя хуже суммы своих дисков: деградация или ребилд одного диска тормозит массив целиком, и задержки с пропусками записи растут у всех стримов одновременно. Ровно так перегруз архива и выглядит на графике записи вкладки DVR: кривые пропусков и задержек поднимаются у всех стримов машины разом.

Включите запись

На странице стрима откройте вкладку DVR:

  • Писать в DVR — включает запись.
  • Глубина хранения (часы) — сколько часов эфира держать; вышедшее за глубину стирается само.
  • Макс. размер (байты) — потолок по месту на диске. Работают оба лимита сразу: что наступит раньше, то и подрежет архив.

Нажмите Сохранить. Через минуту-другую на этой же вкладке появится Текущее состояние записи: индикатор с вердиктом и окно архива — от начала записи до текущего момента. Когда стример отдаёт расширенную статистику, здесь же показываются часы с данными (с дырами, если запись прерывалась), размер архива, живые скорости записи и график записи — история этих скоростей вместе с ошибками и пропусками.

Вкладка DVR: настройки и текущее состояние записи

Кэшируйте чужой архив

На той же вкладке есть второй выключатель — Кэшировать архив. Это не настройка записи, а независимое свойство: архивные чтения стрима оседают на кэш-дисках стримера, и повторное обращение к тому же участку обслуживается локально, без похода к источнику.

Вкладка DVR: два независимых выключателя — запись и кэш

Включать запись для этого не нужно, и в этом весь смысл: эдж кэширует чужой архив, своего не записывая. Типовая раскладка — origin пишет архив, а эджи ближе к зрителям держат у себя то, что реально смотрят.

Кэширование работает только там, где у стримера настроены кэш-диски. Стрим с включённым кэшем на стримере без них — не ошибка: кэш просто не работает, а в лог идёт предупреждение. Это нормально в кластере, где один и тот же документ стрима разъезжается по разным машинам.

Сколько кэш занял и какова доля попаданий — в разделе DVR кластера.

Следите за записью

В списке стримов у стрима с архивом колонка DVR показывает, сколько фактически записано, и светофор:

  • Зелёный — запись идёт, ошибок нет.
  • Жёлтый — запись деградирована (фрагменты пишутся с задержкой или пропусками) либо DVR настроен, но запись не идёт.
  • Красный — ошибки записи: данные теряются прямо сейчас.
  • Прочерк — архив у стрима не настроен.

Список стримов: колонка DVR со светофором записи

Здоровье дисков — на стороне стримера: если диск отваливается или заполняется, краснеет индикатор DVR в реестре стримеров.

Что получает зритель

Архив отдаётся теми же HLS-адресами, что и прямой эфир, — плееру не нужно ничего особенного:

  • Отмотка назад: /streaming/v/<имя>/rewind/<секунды>/index.m3u8 — тот же стрим, сдвинутый в прошлое на указанное число секунд. rewind/3600 — час назад.
  • Диапазоны записи: /streaming/dvr-ranges/<имя> — JSON со списком записанных интервалов. На нём строится шкала архива в плеере: видно, что записано, а где дыра.
  • Превью-клип: /streaming/dvr-preview-mp4/<имя>/<utc_ms> — короткий MP4 вокруг момента времени (UTC в миллисекундах). Удобен монтажным и модераторским интерфейсам: показать кусочек архива, не поднимая плеер. Собирается из миниатюр, записанных в архив, — настройте превью с включённым «Хранить превью в DVR», иначе адрес ответит, что кадров нет.

Если запись не идёт

  • «DVR настроен, но запись не идёт». Либо стрим не в эфире — писать нечего, — либо у стримера не настроено хранилище архива. Проверьте статус стрима и блок DVR в настройках стримера.
  • «Ошибки записи — данные теряются». Диск полон, отвалился или не смонтирован. Смотрите индикатор DVR и настройки дисков в реестре стримеров.
  • Окно архива короче глубины хранения. Это нормально сразу после включения: окно растёт по мере записи и упрётся в глубину только через заданное число часов.

Сколько места занято по кластеру

Ёмкость архива всех стримеров сразу, разбивка занятого на актуальный и бесхозный архив и пересборка индекса — на странице DVR кластера.