Un sistema de archivos flash es un sistema de archivos diseñado para almacenar archivos en dispositivos de almacenamiento basados en memoria flash . Si bien los sistemas de archivos flash están estrechamente relacionados con los sistemas de archivos en general, están optimizados para la naturaleza y las características de la memoria flash (como para evitar la amplificación de escritura ) y para su uso en sistemas operativos particulares .
Si bien una capa de dispositivo de bloque puede emular una unidad de disco para que se pueda utilizar un sistema de archivos de propósito general en un dispositivo de almacenamiento basado en flash, esto no es óptimo por varias razones:
Los sistemas de archivos estructurados en registros tienen todas las propiedades deseables para un sistema de archivos flash. [1] Dichos sistemas de archivos incluyen JFFS2 y YAFFS .
Debido a las características particulares de la memoria flash, se utiliza mejor con un controlador para nivelar el desgaste y corregir errores o con sistemas de archivos flash diseñados específicamente , que distribuyen las escrituras en los medios y se ocupan de los largos tiempos de borrado de los bloques flash NAND. El concepto básico detrás de los sistemas de archivos flash es: cuando se va a actualizar el almacén flash, el sistema de archivos escribirá una nueva copia de los datos modificados en un bloque nuevo, reasignará los punteros del archivo y luego borrará el bloque anterior más tarde cuando se haya actualizado. tiempo.
En la práctica, los sistemas de archivos flash se utilizan sólo para dispositivos de tecnología de memoria (MTD), que son memorias flash integradas que no tienen un controlador. Las tarjetas de memoria flash extraíbles y las unidades flash USB tienen controladores integrados para administrar MTD con algoritmos dedicados, [2] [3] como nivelación de desgaste, recuperación de bloques defectuosos, recuperación de pérdida de energía, recolección de basura y corrección de errores , por lo que se utiliza un archivo flash. El sistema tiene un beneficio limitado.
Los dispositivos de memoria flash son cada vez más frecuentes a medida que aumenta el número de dispositivos móviles, disminuye el costo por tamaño de memoria y aumenta la capacidad de los chips de memoria flash.
El primer sistema de archivos flash, que gestionaba una serie de archivos flash como un disco de libre escritura, fue TrueFFS de M-Systems de Israel, presentado como un producto de software en la PC-Card Expo en Santa Clara, California , en julio de 1992 y patentado en 1993. [4]
Uno de los primeros sistemas de archivos flash fue el FFS2 de Microsoft , para uso con MS-DOS , lanzado en otoño de 1992. [5] FFS2 fue precedido por un producto anterior, llamado "FFS", que sin embargo no llegó a ser un archivo flash. sistema, administrando una matriz flash como espacio de escritura una vez y lectura múltiple (WORM) en lugar de como un disco de libre escritura.
Alrededor de 1994, PCMCIA , un grupo industrial, aprobó la especificación Flash Translation Layer (FTL), basada en el diseño de TrueFFS de M-Systems. La especificación fue escrita y propuesta conjuntamente por M-Systems y SCM Microsystems, quienes también proporcionaron las primeras implementaciones funcionales de FTL. Respaldado por Intel, [6] FTL también se convirtió en un diseño de sistema de archivos flash popular en medios que no son PCMCIA.
Overlayfs, Unionfs y aufs son sistemas de archivos de unión que permiten combinar múltiples sistemas de archivos y presentarlos al usuario como un solo árbol. Esto permite al diseñador del sistema colocar partes del sistema operativo que nominalmente son de solo lectura en medios diferentes a las áreas normales de lectura y escritura. OpenWrt generalmente se instala en chips flash sin FTL. Utiliza overlayfs para combinar un SquashFS comprimido de solo lectura con JFFS2 .