Articulo de referencia

JFFS2

El sistema de archivos flash con registro de transacciones versión 2 o JFFS2 es un sistema de archivos estructurado en registros para su uso con dispositivos de memoria flash . ...

El sistema de archivos flash con registro de transacciones versión 2 o JFFS2 es un sistema de archivos estructurado en registros para su uso con dispositivos de memoria flash . [ 1 ] Es el sucesor de JFFS . JFFS2 se incluyó en el kernel de Linux el 23 de septiembre de 2001, cuando se integró en la rama principal del kernel de Linux como parte de la versión 2.4.10. JFFS2 también está disponible para algunos gestores de arranque , como Das U-Boot , Open Firmware , el RTOS eCos , el RTOS RTEMS y RedBoot . El uso más destacado de JFFS2 proviene de OpenWrt . [ 2 ]

Se han desarrollado al menos tres sistemas de archivos como sustitutos de JFFS2: LogFS , UBIFS y YAFFS .

Características

JFFS2 presentado:

  • Compatibilidad con dispositivos de memoria flash NAND . Esto implicó una cantidad considerable de trabajo, ya que los dispositivos NAND tienen una interfaz de E/S secuencial y no se pueden mapear en memoria para su lectura.
  • Enlaces duros. Esto no era posible en JFFS debido a las limitaciones del formato en disco.
  • Compresión. Hay cinco algoritmos disponibles: zlib , rubin, lzma, rtime y lzo .
  • Mejor rendimiento. JFFS trataba el disco como un registro circular puro, lo que generaba una gran cantidad de operaciones de entrada/salida innecesarias. El algoritmo de recolección de basura de JFFS2 hace que esto sea prácticamente innecesario.

Diseño

Al igual que con JFFS, los cambios en archivos y directorios se "registran" en la memoria flash en nodos , de los cuales hay dos tipos:

  • inodes : un encabezado con metadatos del archivo, seguido de una carga útil con los datos del archivo (si la hay). Las cargas útiles comprimidas están limitadas a una página.
  • Nodos dirent : entradas de directorio, cada una con un nombre y un número de inodo. Los enlaces duros se representan con nombres diferentes pero con el mismo número de inodo. El número de inodo especial 0 representa un enlace no enlazado.

Al igual que con JFFS, los nodos comienzan siendo válidos cuando se crean y se vuelven obsoletos cuando se crea una versión más reciente en otro lugar.

A diferencia de JFFS, sin embargo, no hay un registro circular. En cambio, JFFS2 trabaja con bloques , una unidad del mismo tamaño que el segmento de borrado del medio flash. Los bloques se llenan, uno a uno, con nodos de abajo hacia arriba. Un bloque limpio es aquel que contiene solo nodos válidos . Un bloque sucio contiene al menos un nodo obsoleto . Un bloque libre no contiene nodos. [ 3 ]

El recolector de basura se ejecuta en segundo plano, convirtiendo los bloques sucios en bloques libres . Para ello, copia los nodos válidos a un nuevo bloque y omite los obsoletos . Una vez hecho esto, borra el bloque sucio y lo etiqueta con un marcador especial que lo designa como bloque libre (para evitar confusiones en caso de pérdida de energía durante la operación de borrado). [ 3 ]

Para que la nivelación del desgaste sea más uniforme y evitar que los borrados se concentren demasiado en sistemas de archivos mayormente estáticos, el recolector de basura también consumirá ocasionalmente bloques limpios . [ 3 ]

Desventajas

Debido a su diseño estructurado en registros, las desventajas de JFFS2 incluyen las siguientes: [ 3 ]

  • Todos los nodos deben escanearse al montar un sistema de almacenamiento . Este proceso es lento y se está convirtiendo en un problema cada vez más grave a medida que los dispositivos de memoria flash alcanzan capacidades de hasta terabytes . Para solucionar este problema, se introdujo el Resumen de Bloque Borrado (EBS, por sus siglas en inglés) en la versión 2.6.15 del kernel de Linux. El EBS se ubica al final de cada bloque y se actualiza con cada escritura en él, resumiendo su contenido. Durante el montaje, se lee el EBS en lugar de escanear bloques completos.
  • Escribir muchos bloques pequeños de datos puede incluso provocar tasas de compresión negativas, por lo que es esencial que las aplicaciones utilicen grandes búferes de escritura.
  • No existe una forma práctica de saber cuánto espacio libre utilizable queda en un dispositivo, ya que esto depende tanto de la eficacia con la que se puedan comprimir los datos adicionales como de la secuencia de escritura.

Véase también

Referencias

  1. "Subsistema de dispositivo de tecnología de memoria (MTD) para Linux" . www.linux-mtd.infradead.org . Consultado el 15 de mayo de 2021 .
  2. "Diseño de Flash de OpenWrt - Wiki de OpenWrt" . Wiki.openwrt.org . 18 de enero de 2010. Consultado el 4 de marzo de 2014 .
  3. 1 2 3 4 "Perfil de software: Journaling Flash File System, versión 2 (JFFS2)" (PDF) . micron.com. 2011. Archivado del original (PDF) el 7 de marzo de 2014. Recuperado el 4 de marzo de 2014 .
  • Sitio web de JFFS2
  • JFFS: El sistema de archivos flash para registro de eventos por David Woodhouse ( PDF )
  • Lista de correo oficial de JFFS2
  • Preguntas frecuentes de JFFS2