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 (por ejemplo, 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 realizar la nivelación del desgaste y la corrección de errores o con sistemas de archivos flash diseñados específicamente , que distribuyen las escrituras en el medio 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 debe actualizar el almacenamiento flash, el sistema de archivos escribirá una nueva copia de los datos modificados en un bloque nuevo, reasignará los punteros de archivo y luego borrará el bloque antiguo más tarde cuando tenga tiempo.
En la práctica, los sistemas de archivos flash se utilizan solo 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 el uso de un sistema de archivos flash tiene un beneficio limitado. Sin embargo, algunos sistemas de archivos flash, como APFS y F2FS , se pueden utilizar en dispositivos flash basados en FTL como SSD y eUFS .
Los dispositivos de memoria basados en 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 matriz de flash como un disco de libre escritura, fue TrueFFS de M-Systems de Israel, presentado como 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 FFS2 de Microsoft , para usar 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 sistema de archivos flash, ya que administraba una matriz flash como espacio de escritura única y lectura múltiple (WORM) en lugar de como un disco de escritura libre.
Alrededor de 1994, el grupo industrial PCMCIA aprobó la especificación Flash Translation Layer (FTL), basada en el diseño de TrueFFS de M-Systems. La especificación fue creada y propuesta conjuntamente por M-Systems y SCM Microsystems, quienes también proporcionaron las primeras implementaciones funcionales de FTL. Con el respaldo de Intel, [6] FTL se convirtió en un diseño popular de sistema de archivos flash también en medios que no eran PCMCIA.
Overlayfs, Unionfs y aufs son sistemas de archivos de unión que permiten combinar varios sistemas de archivos y presentarlos al usuario como un solo árbol. Esto permite al diseñador del sistema colocar partes del sistema operativo que son nominalmente 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 .