Journalling Flash File System versión 2 o JFFS2 es un sistema de archivos estructurado por registros para su uso con dispositivos de memoria flash . [1] Es el sucesor de JFFS . JFFS2 se ha incluido en el kernel de Linux desde el 23 de septiembre de 2001, cuando se fusionó con la línea principal del kernel de Linux como parte del lanzamiento de la versión 2.4.10 del kernel. JFFS2 también está disponible para algunos cargadores de arranque , como Das U-Boot , Open Firmware , eCos RTOS, RTEMS RTOS y RedBoot . El uso más destacado de JFFS2 proviene deOpenWrt . [2]
Desarrollador (es) | David Woodhouse |
---|---|
Nombre completo | Journalling Flash File System versión 2 |
Introducido | 23 de septiembre de 2001 con Linux 2.4.10 |
Características | |
Compresión transparente | zlib , rubin y rtime |
Otro | |
Apoyados sistemas operativos | Linux |
Se han desarrollado al menos tres sistemas de archivos como reemplazos de JFFS2: LogFS , UBIFS y YAFFS .
Características
JFFS2 introducido:
- Soporte para dispositivos 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 lectura.
- Enlaces duros. Esto no fue posible en JFFS debido a limitaciones en el formato en disco.
- Compresión. Hay cuatro algoritmos disponibles: zlib , rubin, rtime y lzo .
- Mejor interpretación. JFFS trató el disco como un registro puramente circular. Esto generó una gran cantidad de E / S innecesarias. El algoritmo de recolección de basura en JFFS2 hace que esto sea innecesario.
Diseño
Al igual que con JFFS, los cambios en los archivos y directorios se "registran" para flash en los nodos , de los cuales hay dos tipos:
- inodos : un encabezado con metadatos de archivo, seguido de una carga útil de datos de archivo (si corresponde). Las cargas útiles comprimidas están limitadas a una página.
- Nodos directos : entradas de directorio, cada una con un nombre y un número de inodo. Los enlaces físicos se representan como nombres diferentes con el mismo número de inodo. El número de inodo especial 0 representa una desvinculación.
Al igual que con JFFS, los nodos comienzan como válidos cuando se crean y se vuelven obsoletos cuando se crea una versión más nueva en otro lugar.
Sin embargo, a diferencia de JFFS, no existe un registro circular. En cambio, JFFS2 se ocupa de bloques , una unidad del mismo tamaño que el segmento de borrado del medio flash. Los bloques se llenan, uno a la vez, 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 . Esto se hace mediante la copia válidos nodos a un nuevo bloque y saltar obsoletos queridos. Una vez hecho esto, borra el bloque sucio y lo etiqueta con un marcador especial que lo designa como bloque libre (para evitar confusiones si se pierde energía durante una 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 en su mayoría estáticos, el recolector de basura ocasionalmente también consumirá bloques limpios . [3]
Desventajas
Debido a su diseño con estructura de registro, las desventajas de JFFS2 incluyen las siguientes: [3]
- Todos los nodos aún deben escanearse en el momento del montaje . Esto es lento y se está convirtiendo en un problema cada vez más serio a medida que los dispositivos flash escalan hacia arriba en el rango de gigabytes . Para solucionar este problema, se introdujo Erase Block Summary (EBS) en la versión 2.6.15 del kernel de Linux. EBS se coloca al final de cada bloque y se actualiza con cada escritura en el bloque, resumiendo el contenido del bloque; durante los montajes, EBS se lee en lugar de escanear bloques completos.
- Escribir muchos bloques pequeños de datos puede incluso conducir a 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 qué tan bien se pueden comprimir los datos adicionales como de la secuencia de escritura.
Ver también
enlaces externos
Referencias
- ^ "Subsistema de dispositivo de tecnología de memoria (MTD) para Linux" . www.linux-mtd.infradead.org . Consultado el 15 de mayo de 2021 .
- ^ "El diseño de Flash OpenWrt - OpenWrt Wiki" . Wiki.openwrt.org . Consultado el 4 de marzo de 2014 .
- ^ a b c d "Perfil de software: Journaling Flash File System, versión 2 (JFFS2)" (PDF) . micron.com. 2011. Archivado desde el original (PDF) el 7 de marzo de 2014 . Consultado el 4 de marzo de 2014 .