stringtranslate.com

Sistema de archivos LogFS

LogFS es un sistema de archivos flash escalable y estructurado en forma de registro para Linux , pensado para su uso en dispositivos de memoria flash de gran tamaño . Fue escrito por Jörn Engel [1] y en parte patrocinado por el CE Linux Forum .

LogFS se introdujo en el núcleo principal de Linux en la versión 2.6.34, lanzada el 16 de mayo de 2010. Se eliminó de la base de código durante la ventana de fusión de la versión 4.10, en diciembre de 2016, porque "no se mantuvo durante años y aparentemente no se utilizó". [2]

Historia

En noviembre de 2008 , LogFS era lo suficientemente maduro como para pasar todo su conjunto de pruebas y, posteriormente, se incluyó en el kernel principal de Linux, marcado como "experimental", en la versión 2.6.34 lanzada el 16 de mayo de 2010. Sin embargo, no atrajo una gran base de usuarios y se eliminó del kernel en diciembre de 2016.

Operación

LogFS surgió de las dificultades de JFFS2 con unidades de memoria flash más grandes. LogFS almacena el árbol de inodos en la unidad; JFFS2 no lo hace, lo que requiere que escanee toda la unidad al montarla y almacene en caché todo el árbol en la RAM. Para unidades más grandes, el escaneo puede tardar decenas de segundos y el árbol puede ocupar una cantidad significativa de memoria principal. LogFS evita estas penalizaciones, pero hace más trabajo mientras el sistema está en funcionamiento y utiliza parte del espacio de la unidad para almacenar el árbol de inodos.

LogFS almacena el árbol de inodos de un archivo en la unidad, lo que significa que, al escribir en el archivo, cada nodo antecesor del árbol debe reescribirse. Esto se hace mediante una actualización de "árbol errante". El nodo más bajo del árbol (es decir, los datos) se escribe primero, cada nodo se escribe de manera ascendente en el árbol, hasta que se actualiza el inodo raíz. Escribir la raíz al final mantiene la atomicidad de la actualización.

Un bloque de memoria flash es la unidad para los borrados y, por lo general, es más grande que el bloque del sistema de archivos. LogFS maneja esta disparidad al agrupar varios bloques del sistema de archivos en un solo bloque de memoria flash. Una entrada de "suma" al final del bloque de memoria flash registra qué datos están almacenados en él. Cuando se mueven o eliminan todos los bloques del sistema de archivos del bloque de memoria flash, se puede borrar y utilizar para nuevos datos.

Para un uso máximo de la unidad de memoria flash, es necesario compactar los datos para que los bloques de memoria flash estén llenos de datos útiles. Esto se logra mediante la recolección de basura . La estrategia de recolección de basura de LogFS se basa en que los datos de archivo se coloquen de una determinada manera en los bloques de memoria flash: un bloque de memoria flash contendrá solo datos de archivo del mismo nivel en el árbol de inodos. LogFS puede recolectar basura del nivel superior de los árboles utilizando solo 1 bloque de memoria flash vacío. Puede recolectar basura de los 2 niveles superiores de los árboles utilizando 2 bloques de memoria flash vacíos. Y puede recolectar basura de todos los N niveles de los árboles utilizando N bloques de memoria flash vacíos. El algoritmo es de tiempo exponencial en el peor de los casos, pero el peor de los casos es poco común y el algoritmo requiere reservar solo un puñado de bloques de memoria flash.

Véase también

Referencias

  1. ^ Jörn Engel; Robert Mertens (18 de septiembre de 2005). "LogFS: por fin un sistema de archivos flash escalable" (PDF) . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  2. ^ Jonathan Corbet (21 de diciembre de 2016). "4.10 Merge window part 2" ( Ventana de combinación 4.10, parte 2) . Consultado el 2 de junio de 2020. El sistema de archivos logfs, que no se ha mantenido durante años y aparentemente no se utiliza, se ha eliminado del núcleo.

Enlaces externos