Articulo de referencia

Sistema de archivos multimedia TiVo

El MFS o Media File System es un sistema de archivos propietario que se utiliza en los discos duros de TiVo para la grabación en tiempo real y tolerante a fallos de la televisió...

El MFS o Media File System es un sistema de archivos propietario que se utiliza en los discos duros de TiVo para la grabación en tiempo real y tolerante a fallos de la televisión en directo .

Aunque MFS aún no es del todo comprendido por programadores ajenos a la corporación TiVo, se sabe lo suficiente sobre el sistema de archivos como para realizar lecturas y escrituras limitadas. Existen aplicaciones para manipular el sistema de archivos y los objetos que contiene. La mayoría de estas aplicaciones se han desarrollado mediante ingeniería inversa a partir del software del propio TiVo, ya que muchos de los primeros programas de TiVo eran poco más que scripts especializados que manipulaban los datos.

El sistema de archivos MFS se organiza de forma similar a una base de datos, incluyendo el registro de transacciones y la capacidad de reversión. Utiliza múltiples particiones en la unidad para conformar un sistema completo. Estas particiones se presentan en pares: una para la aplicación y otra para los medios. La región de medios es invariablemente bastante grande y se organiza en bloques de datos largos y continuos, con un tamaño de bloque variable que tiene un mínimo de al menos 1 megabyte. Esto se debe a que está diseñada para almacenar grandes fragmentos de vídeo.

A cada objeto del sistema de archivos de TiVo se le asigna un ID, que internamente se denomina "FSID" (presumiblemente, ID del sistema de archivos). MFS admite al menos cuatro tipos de objetos: flujos (grabaciones, audio o vídeo), directorios, bases de datos y archivos. Todos los objetos de flujo se almacenan en las regiones de medios de MFS, mientras que los demás tipos se almacenan en las regiones de "aplicación".

El sistema de archivos se implementa completamente en el espacio de usuario de Linux. La razón principal por la que TiVo diseñó este sistema fue la necesidad de almacenar grandes secciones continuas de datos de forma sencilla, permitiendo su transmisión directa a los decodificadores multimedia de los dispositivos TiVo, sin depender de la CPU. De este modo, la CPU interviene mínimamente en la reproducción y grabación, limitándose a dirigir los chips codificadores/decodificadores para que transmitan los datos directamente a las unidades mediante acceso directo a memoria , asignando secciones de memoria virtual a la unidad. La CPU principal coordina todo el proceso. Como resultado, los datos almacenados en la región multimedia MFS no se formatean como archivos normales, sino que constituyen un flujo de datos directo indexado por las secciones de la base de datos en la región de aplicación MFS.

Referencias

  • Krikorian, "TiVo Hacks" (O'Reilly Media, 2003)
  • Keegan, "Hacking TiVo" (Wiley, 2004).