Cómo creamos nuestro propio sistema de almacenamiento de video

June 25, 2020

12minutos de lectura

Cómo creamos nuestro propio sistema de almacenamiento de video

Para desarrollar y administrar un servicio de videovigilancia, es necesario resolver muchos problemas. Una de las cuestiones clave es dónde y cómo almacenar la inmensa cantidad de datos de video. Hay muchas opciones, pero la mayoría de ellas pueden no ser rentables para un operador de telecomunicaciones que brinde un servicio de videovigilancia. Cuando se usan DVR simples, el video se almacena en un solo disco, y si el disco está dañado, se pierde irremediablemente. Puede hacer que el almacenamiento sea más duradero, crear un archivo, pero es más caro y RAID no resuelve todos los problemas de copia de seguridad.

Esta es nuestra historia sobre cómo elegimos el esquema de almacenamiento de video óptimo para nuestros clientes, qué opciones probamos y por qué nos decepcionamos. Como resultado, se nos ocurrió la idea de crear otro, esta vez nuestro propio sistema de almacenamiento.

La primera pregunta que debe abordarse antes de elegir un lugar y un método para almacenar videos es cuánto espacio se requiere. Un tamaño de transmisión de 1 a 8 megabits por minuto ocupa de 10 a 80 GB de almacenamiento. En el caso de nuestros clientes, operadores de telecomunicaciones que ofrecen servicios de videovigilancia, no estamos hablando de un canal, sino de cientos y miles. ¿Cómo gestiona el almacenamiento de una cantidad tan enorme de datos para evitar su pérdida y unos costes excesivamente elevados?


Cómo se reduce el tamaño del video?

How We Created Our Own Video Storage System

La primera pregunta lógica es ¿cómo se puede reducir el volumen del flujo de video para que se requiera menos espacio de almacenamiento? Hay opciones: algunas las ofrecimos nosotros, otras nos las ofrecimos.

Opción 1: almacenamiento en marcos jpeg

Anteriormente, estaba bien almacenar los videos en formato jpeg, como una serie de cuadros (este formato se llama motion jpeg o MJPEG). El video compuesto por archivos jpeg independientes es aproximadamente 10 veces más grande que un video similar comprimido con el códec h264. Este tipo de almacenamiento ahora solo lo utilizan los sistemas de almacenamiento profesionales para contenido digital original (MxPEG, etc.). Están completamente satisfechos con el volumen que ocupan los fotogramas ya que su prioridad es preservar la máxima calidad de vídeo inicial. Pero estamos lidiando con la entrega de video a granel, por lo que este tipo de almacenamiento no es compatible con nuestras tareas y requisitos. MJPEG es un formato desactualizado y solo para aquellas cámaras que carecen de la potencia de procesamiento para comprimir H264. MJPEG se usó solo para resoluciones muy pequeñas (640x480 y menos) y pequeños fps (hasta 1 o incluso 0.5 fps). Hoy en día, MJPEG se sigue utilizando en aquellas situaciones en las que el canal de comunicación es tan estrecho que 1 fotograma en unos pocos segundos es suficiente. Por ejemplo, se puede usar en videovigilancia para seguridad o transmisión en vivo desde un barco.

Este enfoque no tiene nada que ver con la reducción de volumen, pero dado que nos hicieron esa pregunta, tiene sentido mencionarla. Este método de compresión de video solo se puede comparar con el almacenamiento de video sin procesar.

Opción 2: transcodificación

Podemos usar otro método: Transcodificación. La idea principal de este método es que el procesador de la cámara es débil y el servidor es fuerte. De modo que puede dedicar más ciclos de procesador a la compresión y obtener más videos comprimidos. En la práctica, con una buena imagen (si no hay nieve ni nubes), puede obtener hasta 5 veces la compresión de video en la CPU en comparación con la cámara.

Por desgracia, este método es adecuado cuando puede asignar 1 computadora para 10-40 cámaras, lo cual es muy costoso. Hoy en día, estos gastos solo pueden sufragarse mediante el análisis de video, pero no con el almacenamiento de video regular.

Opción 3: grabación de movimiento

Si no podemos reducir el video que proviene de las cámaras, entonces podemos almacenarlo / grabarlo al menos parcialmente.

Puede configurar la grabación de video por movimiento u otros disparadores. Las cámaras, en este caso, solo graban si pasa algo en el video, y así se ahorra mucho espacio. Pero al ahorrar espacio de esta manera, puede perder varios marcos con información esencial en ellos. Por ejemplo, la cara de un ladrón si hubo un robo en el lugar donde se instaló la cámara. En este caso, todo el sentido de seguridad de la videovigilancia desaparece. Existen mecanismos de pregrabación, por ejemplo, cuando se escribe el minuto antes de que se active el sensor. Ayudan no solo a ahorrar espacio en el disco, sino también a guardar información de video esencial, como la cara de un intruso.

Ofrecemos a nuestros clientes otro método: todo se escribe en disco, y luego en unos días solo quedan los fragmentos donde hubo movimiento. Esto reduce el riesgo de que el sensor de alarma no funcione (por movimiento, apertura de puerta o sonido) y puede almacenar el video por mucho más tiempo, y esto puede ser necesario para analizar cuándo entró el ladrón al edificio antes del crimen.

grabación de movimiento


DVRs

Históricamente, una de las primeras formas de almacenar video es con DVR, y los operadores de telecomunicaciones a menudo comienzan con él. Por el momento, el almacenamiento de video ha avanzado tanto que elegir DVR no es rentable y no siempre es conveniente. La instalación y el mantenimiento de DVR son un gasto significativo. Otro punto que debes considerar es la protección del DVR. En caso de robo, desaparece junto con todos los registros almacenados en él, si el almacenamiento no se carga en un servidor separado en la nube. Y estamos hablando solo de un DVR, donde la grabación de un disco está diseñada para 12 a 32 cámaras. Cuantas más cámaras atienda el operador de telecomunicaciones, más DVR deberán instalarse y mayor será el costo de mantenimiento.

Vimos cuánto dolor tienen los operadores de telecomunicaciones al construir el servicio sobre la base de DVR. Los instaladores viajan constantemente en círculos reparando DVR, por lo que realmente no recomendamos almacenar videos exclusivamente de esta manera.


Servidores y RAID

Es mucho más confiable grabar el metraje en el disco duro del servidor, pero aquí surge la pregunta: ¿cómo distribuiremos el video grabado? No es posible leer desde el eje del disco duro; esto desgastará rápidamente el disco, lo que significa que necesitaríamos un caché para el almacenamiento de video. Es posible escribir un caché si estamos hablando de un archivo pequeño para un número limitado de canales. Para ello, puede intentar duplicar datos.

Qué discos duros puedes usar para esto? Parecería que cuanto más grande sea la unidad, mejor, pero las unidades de 12 terabytes no son muy adecuadas para un video pequeño: la unidad es grande y para poder usarla completamente con una pequeña profundidad de almacenamiento, debe guardar un una gran cantidad de transmisiones de grabación al mismo tiempo, lo que la unidad no puede manejar bien. Utiliza grabaciones en mosaico magnético y el software tiene que trabajar con mucho cuidado con él: trate de no sobrescribir, sino de agregar y luego borrar todo el disco duro. El espacio en el disco duro puede ser suficiente para 1000 cámaras, pero con una velocidad de grabación estándar de 150-200 megabits por segundo, solo podemos cubrir 100 cámaras a la vez. Además, cuanto más grande sea el disco duro, menos se utilizará y, por tanto, será menos económico.

Para duplicar datos, muchos de nuestros clientes desean utilizar RAID en sus servidores. RAID duplica datos entre discos duros para que el sistema pueda sobrevivir con seguridad a la falla de uno de ellos. Suena bien, pero realmente no recomendamos usarlo. En nuestra experiencia, muchos usuarios nunca han realizado pruebas para restaurarlo bajo carga alta. Estas pruebas incluyen apagar la unidad del servidor sobre la marcha. Y aquí nos enfrentamos a los detalles del video: todas las cargas son muy suaves, lo que hace que sea muy fácil maximizar el límite del sistema. Cuando el RAID tiene una carga del 90%, la unidad se bloquea y luego la carga aumenta por encima del 100%. Cuando intentamos volver a subir el video, todo resulta aún peor. Si por alguna razón no tenemos tiempo para grabar un fotograma, se acumula una cola de fotogramas, la velocidad de grabación disminuye y el menor retraso conduce a la pérdida de fragmentos completos de vídeo.

Hay situaciones aún peores: no solo el primero, sino también el segundo disco duro pueden fallar debido al aumento de carga, y este es un problema bastante común para RAID (especialmente si se compraron discos duros del mismo lote).


Almacenamiento empresarial y discos duros

Aquí el almacenamiento de clase empresarial puede entrar en juego: muchos de nuestros clientes recurren a ellos, pero los resultados son mixtos.

El almacenamiento de clase empresarial completo tiene ventajas indudables: escalabilidad (aunque generalmente no está claro qué significa, es más como una palabra elegante que les gusta usar), cierta tolerancia a fallas (por mucho dinero). Sin embargo, nos enfrentamos a desventajas obvias: un estante de discos es, de hecho, una computadora separada, además, es bastante caro.

Los estantes de discos, o SAN, están diseñados para servir a un número dinámico de entornos virtuales donde no se sabe de antemano cuánto espacio se necesitará. En el caso del almacenamiento de video, se vuelven demasiado costosos e inconvenientes, porque todo, por regla general, termina con una configuración “un servidor de video por un estante”. Esto nos lleva a comprar una computadora para recibir video y a su lado poner otra computadora para copiar y grabar. Entonces, el número de computadoras se está duplicando sin ningún propósito en particular.


Amazon s3

Here enterprise-class storage can come into play - many of our customers turn to them, but the results are mixed.

Full-fledged enterprise-class storage has undoubted advantages: scalability (although it’s usually not clear what it means, it’s more like a fancy word they like to use), a certain fault tolerance (for a lot of money). However, we were faced with obvious disadvantages: a disk shelf is, in fact, a separate computer, moreover, it’s quite expensive.

Disk shelves, or SANs, are designed to serve a dynamic number of virtual environments where it is not known in advance how much space will be needed. In the case of video storage, they become too expensive and inconvenient, because everything, as a rule, ends with a configuration “one video server per one shelf”. This turns into us buying a computer for receiving video and next to it putting another computer for copying and recording. So, the number of computers is doubling for no particular purpose.


Ceph

El almacenamiento de objetos Ceph puede convertirse en una alternativa a Amazon S3. Los beneficios son la capacidad de realizar copias de seguridad y segmentar la grabación, y el costo oculto de propiedad. Alguien puede decir que Ceph es gratis, pero se puede decir que los rivales de Amazon se reproducen como hongos después de la lluvia. Por lo tanto, el precio que ofrecen no es prohibitivo y el servicio de almacenamiento de archivos en la nube no es tan barato en sí mismo. Para operar Ceph, necesita un buen administrador con la experiencia para repararlo. Alentamos a los clientes a trabajar con Ceph solo si están listos para realizar pruebas del sistema, que consisten en desconectar abruptamente el disco duro del servidor o desconectar todo el servidor. Si no se llevan a cabo pruebas, el equipo simplemente no tendrá la experiencia para manejar una situación en la que falla el disco duro.


Nuestra salida

Nuestra salida

Al final, después de haber probado todas estas opciones, establecimos los siguientes requisitos para el sistema de almacenamiento:

  • Tolerancia a fallos
  • escalabilidad
  • costo relativamente bajo: el servicio de videovigilancia debería dar sus frutos
  • Fiabilidad: siempre que un disco duro comience a funcionar lentamente o falle, esto no debería afectar al resto del sistema.
  • la capacidad no solo de guardar, sino también de distribuir videos
  • máxima simplicidad de diseño: no tenemos ningún deseo, capacidad y necesidad de involucrarnos en la escritura de nuestro propio sistema de archivos

Como resultado, llegamos al desarrollo de nuestro propio sistema bajo el título de producción Flussonic RAID. El administrador del servidor monta todos los discos duros por separado, no hay dependencias entre ellos y los metadatos se colocan en un SSD separado. El video se distribuye uniformemente en estos discos en fragmentos separados y, en consecuencia, en caso de falla, la cantidad máxima de datos que perdemos son los datos de un disco en particular y los fragmentos individuales de un video. Para nosotros, lo más importante es que incluso si 9 de cada 10 discos fallan, el décimo seguirá funcionando y los datos no desaparecerán. El sistema es escalable: puede comprar un servidor con 20 ranuras para discos duros y expandirse de manera flexible, comprando otros según sea necesario.

De hecho, transferimos la tarea de administrar un paquete de discos duros al nivel de la aplicación. Creamos una solución más especializada, simple y efectiva para nuestra tarea específica que RAID5 generalizado, que es buena para todos pero no ideal para todos. ¡La razón principal por la que esto se ha hecho posible es que el video no está doblado! Cuando está escrito en el disco, solo puede borrarlo. Este es un patrón muy conveniente de datos de solo adición.

Decidimos abandonar la duplicación de datos dentro de un servidor. En primer lugar, presenta todos los problemas que tiene un RAID5 normal (estado degradado durante la recuperación del disco) y, en segundo lugar, no protege contra fallas del servidor. Para realizar copias de seguridad de los datos hoy en día, es más barato y fácil duplicar datos entre servidores.

Incluso en un mecanismo tan simple, hubo muchas dificultades, y uno de los detalles más sutiles es la elección de un disco para grabar el siguiente dato. Por un lado, los discos deben cargarse de manera uniforme, por otro lado, queremos que la mayor parte del sistema esté inactivo con 70 discos, y solo se deben usar unidades activas para escribir (con fines de ahorro de energía).

Planeamos mejorar aún más el sistema. Actualmente estamos planeando agregar una buena interfaz intuitiva para monitorear el estado de la migración, un apagado suave de los discos fallidos, API de eventos, monitoreo SMART, así como la capacidad de monitorear todos los discos duros en el mismo clúster al mismo tiempo.

Nuestros clientes ya están utilizando este nuevo sistema y están muy contentos de que la velocidad y la capacidad de respuesta del sistema hayan aumentado significativamente. Una reducción local en el funcionamiento de un disco duro ya no ralentiza todo el sistema. Por todo esto, el costo de almacenamiento es relativamente bajo, lo que hace que el servicio de videovigilancia sea rentable para el operador.



img
Author:
Max Lapshin
CTO and Founder at Flussonic
Seasoned professional in the field of high-load systems. Winner of High Load++ Award

Flussonic Media Server trial

Al enviar tu solicitud, aceptas nuestros términos y condiciones. terms and conditions

Our experts will contact you shortly, offer tech advice and consultation, and send you a trial license..

Completa el formulario para recibir una clave de prueba gratuita de Flussonic Media Server.

Si no recibes un correo electrónico nuestro en una hora, verifica tu carpeta de correo no deseado y agregua a Flussonic a tu lista de contactos de confianza.

Email: support@flussonic.com Phone: +1 (778) 716-2080 (United States)