LogFS es un sistema de archivos flash escalable y estructurado en registros de Linux , diseñado para su uso en dispositivos grandes de memoria flash . Está escrito por Jörn Engel [1] y en parte patrocinado por CE Linux Forum .
Desarrollador (es) | Jörn Engel, Prasad Joshi |
---|---|
Otro | |
Apoyados sistemas operativos | Linux |
Sitio web | logfs.org/logfs/ en Wayback Machine (archivado el 16 de junio de 2010 ) |
LogFS se introdujo en el kernel principal de Linux en la versión 2.6.34, lanzado el 16 de mayo de 2010. Se eliminó del código base 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 usó" . [2]
Historia
En noviembre de 2008[actualizar], LogFS tenía la madurez suficiente para aprobar 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 a una gran base de usuarios. y se eliminó del kernel en diciembre de 2016.
Operación
LogFS fue motivado por las dificultades de JFFS2 con unidades de memoria flash más grandes. LogFS almacena el árbol de inodo en la unidad; JFFS2 no lo hace, lo que requiere que escanee toda la unidad en el montaje y almacene todo el árbol en la RAM. Para unidades más grandes, el análisis 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 se está ejecutando y usa parte del espacio de la unidad para contener el árbol de inodo.
LogFS almacena el árbol de inodo de un archivo en la unidad, lo que significa que en una escritura en el archivo, cada nodo ancestro del árbol debe reescribirse. Esto se hace mediante una actualización de "árbol errante". El nodo más bajo en el árbol (es decir, los datos) se escribe primero, cada nodo se escribe ascendiendo por el árbol, hasta que se actualiza el inodo raíz. Escribir la raíz en último lugar mantiene la atomicidad de la actualización.
Un bloque de memoria flash es la unidad para borrados y generalmente es más grande que el bloque del sistema de archivos. LogFS maneja esta disparidad al empaquetar múltiples 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 se almacenan en él. Cuando el bloque de memoria flash tiene todos sus bloques de sistema de archivos movidos o eliminados, puede borrarse y usarse para nuevos datos.
Para el 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 los archivos se coloquen de cierta manera en bloques de memoria flash: un bloque de memoria flash solo contendrá datos de archivos del mismo nivel en el árbol de inodo. LogFS puede recolectar basura en el nivel superior de los árboles usando solo 1 bloque de memoria flash vacío. Puede recolectar basura en los 2 niveles superiores de los árboles utilizando 2 bloques de memoria flash vacíos. Y la basura puede recolectar todos los N niveles de los árboles usando N bloques de memoria flash vacíos. El algoritmo es tiempo exponencial en el peor de los casos, pero el peor de los casos es raro y el algoritmo requiere reservar solo un puñado de bloques de memoria flash.
Ver también
enlaces externos
- logfs.org/logfs/ en Wayback Machine (archivado el 16 de junio de 2010 )
- Introducción a LogFS (video)
Referencias
- ^ Jörn Engel; Robert Mertens (18 de septiembre de 2005). "LogFS - finalmente un sistema de archivos flash escalable" (PDF) . Cite journal requiere
|journal=
( ayuda ) - ^ Jonathan Corbet (21 de diciembre de 2016). "4.10 Fusionar parte 2 de la ventana" . Consultado el 2 de junio de 2020 .
El sistema de archivos logfs, sin mantenimiento durante años y aparentemente sin uso, se ha eliminado del kernel.