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 específicos .
Descripción general
Si bien una capa de dispositivo de bloques puede emular una unidad de disco para que se pueda usar un sistema de archivos de propósito general en un dispositivo de almacenamiento basado en memoria flash, esto no es óptimo por varias razones:
- Borrado de bloques: los bloques de memoria flash deben borrarse explícitamente antes de poder escribir en ellos. El proceso de borrado puede ser prolongado, por lo que resulta beneficioso borrar los bloques no utilizados mientras el dispositivo está inactivo.
- Acceso aleatorio : los sistemas de archivos de propósito general están optimizados para evitar las búsquedas en disco siempre que sea posible, debido al alto costo de dichas búsquedas. Los dispositivos de memoria flash no imponen latencia de búsqueda.
- Nivelación del desgaste : los dispositivos de memoria flash tienden a desgastarse cuando un solo bloque se sobrescribe repetidamente; los sistemas de archivos flash están diseñados para distribuir las escrituras de manera uniforme.
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 recomienda su uso con un controlador para 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 gestionan los largos tiempos de borrado de los bloques flash NAND. El concepto básico de los sistemas de archivos flash es el siguiente: cuando se actualiza la memoria flash, el sistema de archivos escribe una nueva copia de los datos modificados en un bloque nuevo, reasigna los punteros de archivo y, posteriormente, borra el bloque antiguo cuando dispone de tiempo suficiente.
En la práctica, los sistemas de archivos flash se utilizan únicamente 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 .
Flash-based memory devices are becoming more prevalent as the number of mobile devices is increasing, the cost per memory size decreases, and the capacity of flash memory chips increases.
Origins
The earliest flash file system, managing an array of flash as a freely writable disk, was TrueFFS by M-Systems of Israel, presented as a software product in PC-Card Expo at Santa Clara, California, in July 1992 and patented in 1993.[4]
One of the earliest flash file systems was Microsoft's FFS2, for use with MS-DOS, released in autumn 1992.[5] FFS2 was preceded by an earlier product, called "FFS", which however fell short of being a flash file system, managing a flash array as write once read many (WORM) space rather than as a freely writable disk.
Around 1994, the PCMCIA, an industry group, approved the Flash Translation Layer (FTL) specification, based on the design of M-Systems' TrueFFS. The specification was authored and jointly proposed by M-Systems and SCM Microsystems, who also provided the first working implementations of FTL. Endorsed by Intel,[6] FTL became a popular flash file system design in non-PCMCIA media as well.
Linux flash filesystems
- JFFS, JFFS2 and YAFFS
- JFFS was the first flash-specific file system for Linux, but it was quickly superseded by JFFS2, originally developed for NOR flash. Then YAFFS was released in 2002, dealing specifically with NAND flash, and JFFS2 was updated to support NAND flash too.
- UBIFS
- UBIFS has been merged since Linux 2.6.22[7] in 2008. UBIFS has been actively developed from its initial merge.[8] UBIFS has documentation hosted at infradead.org along with JFFS2 and MTD drivers. Some initial comparison show UBIFS with compression faster than F2FS.[9]
- LogFS
- LogFS, another Linux flash-specific file system, is currently being developed to address the scalability issues of JFFS2.
- F2FS
- F2FS (Flash-Friendly File System) was added to the Linux kernel 3.8.[10] Instead of being targeted at speaking directly to raw flash devices, F2FS is designed to be used on flash-based storage devices that already include a flash translation layer, such as SD cards.[11]
Union filesystems
Overlayfs, Unionfs y aufs son sistemas de archivos de unión que permiten combinar varios sistemas de archivos y presentarlos al usuario como un único árbol. Esto permite al diseñador del sistema ubicar partes del sistema operativo que son nominalmente de solo lectura en medios diferentes a las áreas normales de lectura y escritura. OpenWrt se suele instalar en chips de memoria flash sin FTL. Utiliza overlayfs para combinar un SquashFS comprimido de solo lectura con JFFS2 .
capas de traducción
Véase también
Referencias
- ^ Arnd Bergmann (18 de febrero de 2011). "Optimización de Linux con unidades flash económicas" . LWN.net . Consultado el 26 de enero de 2013 .
- ^ "Controlador USBkey PS2251-63 de Phison" . Archivado del original el 28/07/2011 . Consultado el 26/05/2011 .
- OpenNFM : Un FTL NAND de código abierto para SSD y módulos de almacenamiento integrados.
- ^ Patente estadounidense 5404485 , "Sistema de archivos flash, Amir Ban"
- ^ "Patente de Microsoft FFS2" . Archivado del original el 19/12/2016 . Consultado el 09/01/2009 .
- ^ "Comprensión de la especificación de la capa de traducción Flash (FTL)" (PDF) . Intel . Diciembre de 1998. Archivado del original (PDF) el 19 de julio de 2014. Consultado el 27 de julio de 2015 .
- ^ Jonathan Corbet (2 de abril de 2008). «UBIFS» . LWN.
- ^ Richard Weinberger (24-09-2012). "UBI: Solicitud de inclusión de Fastmap" . LKML.
- ^ Neil Brown (11 de diciembre de 2012). "JFFS2, UBIFS y el crecimiento del almacenamiento flash" . LWN.
- ^ "Sistemas de archivos y almacenamiento" . Registro del kernel: disponible en la versión 3.8 . El H. 21/01/2013 . Consultado el 23/01/2013 .
- ^ Neil Brown (10-10-2012). "An f2fs teardown" . LWN.net . Consultado el 9-04-2014 .
Enlaces externos
- Presentación sobre diversos sistemas de archivos Flash – 24/09/2007
- Artículo sobre diversos sistemas de archivos Flash – Conferencia Anual USENIX 2005
- Estudio comparativo de diversos sistemas de archivos Flash – 10 de agosto de 2005
- Anatomía de los sistemas de archivos flash de Linux – 20 de mayo de 2008
- Sistemas de archivos flash
- Memoria de computadora
- Sistemas de archivos informáticos