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 .
Descripción general
Si bien una capa de dispositivo de bloque puede emular una unidad de disco para que se pueda usar un sistema de archivos de uso general en un dispositivo de almacenamiento basado en 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 tiempo necesario para borrar bloques puede ser significativo, por lo que es beneficioso borrar los bloques no utilizados mientras el dispositivo está inactivo.
- Acceso aleatorio : los sistemas de archivos de uso general están optimizados para evitar búsquedas de disco siempre que sea posible, debido al alto costo de búsqueda. Los dispositivos de memoria flash no imponen latencia de búsqueda.
- Nivelación de 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 por registros tienen todas las propiedades deseables para un sistema de archivos flash. [1] Estos sistemas de archivos incluyen JFFS2 y YAFFS .
Debido a las características particulares de la memoria flash, es mejor utilizarla 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 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 la tienda flash, el sistema de archivos escribirá una nueva copia de los datos cambiados en un bloque nuevo, reasignará los punteros del archivo y luego borrará el bloque antiguo más tarde cuando haya hora.
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 controlador. Las tarjetas de memoria flash extraíbles y las unidades flash USB tienen controladores incorporados 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 tanto, use un archivo flash El sistema tiene un beneficio limitado.
Los dispositivos de memoria flash son cada vez más frecuentes a medida que aumenta la cantidad de dispositivos móviles, disminuye el costo por tamaño de memoria y aumenta la capacidad de los chips de memoria flash.
Orígenes
El primer sistema de archivos flash, que gestionaba una serie de flash como un disco de libre escritura, fue TrueFFS de M-Systems of 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 su 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 escribir una vez, leer muchos espacios (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 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 también se convirtió en un diseño de sistema de archivos flash popular en medios que no son PCMCIA.
Sistemas de archivos flash de Linux
- JFFS, JFFS2 y YAFFS
- JFFS fue el primer sistema de archivos específico de flash para Linux , pero fue reemplazado rápidamente por JFFS2 , desarrollado originalmente para flash NOR. Luego, YAFFS se lanzó en 2002, que trata específicamente con flash NAND, y JFFS2 se actualizó para admitir también flash NAND.
- UBIFS
- UBIFS se ha fusionado desde Linux 2.6.22 [7] en 2008. UBIFS se ha desarrollado activamente desde su fusión inicial. [8] UBIFS tiene documentación alojada en infradead.org junto con controladores JFFS2 y MTD. Algunas comparaciones iniciales muestran UBIFS con una compresión más rápida que F2FS. [9]
- LogFS
- LogFS , otro sistema de archivos específico de flash de Linux, está actualmente [actualizar] siendo desarrollado para abordar los problemas de escalabilidad de JFFS2.
- F2FS
- Se agregó F2FS (sistema de archivos compatible con Flash) al kernel de Linux 3.8. [10] En lugar de estar dirigido a hablar directamente con dispositivos flash sin procesar, F2FS está diseñado para usarse en dispositivos de almacenamiento basados en flash que ya incluyen una capa de traducción flash, como tarjetas SD . [11]
Sistemas de archivos de unión
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 procesar sin FTL. Utiliza overlayfs para combinar un SquashFS comprimido de solo lectura con JFFS2 .
Capas de traducción
Ver también
- Lista de sistemas de archivos flash
- Nivelación de desgaste
- Amplificación de escritura
Referencias
- ↑ Arnd Bergmann (18 de febrero de 2011). "Optimización de Linux con unidades flash baratas" . LWN.net . Consultado el 26 de enero de 2013 .
- ^ "Controlador de llave USB de Phison PS2251-63" . Archivado desde el original el 28 de julio de 2011 . Consultado el 26 de mayo de 2011 .
- ^ OpenNFM: un NAND FTL de código abierto para SSD y módulo de almacenamiento integrado
- ^ Patente de EE. UU . 5404485 , "Sistema de archivos Flash, Amir Ban"
- ^ Patente de Microsoft FFS2
- ^ "Comprensión de la especificación de la capa de traducción Flash (FTL)" (PDF) . Intel . Diciembre de 1998. Archivado desde el 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 de septiembre de 2012). "UBI: solicitud de Fastmap para la inclusión" . LKML.
- ^ Neil Brown (11 de diciembre de 2012). "JFFS2, UBIFS y el crecimiento del almacenamiento flash" . LWN.
- ^ "Sistemas de archivos y almacenamiento" . Kernel Log: viene en 3.8 . El H . 2013-01-21 . Consultado el 23 de enero de 2013 .
- ^ Neil Brown (10 de octubre de 2012). "Un desmontaje de f2fs" . LWN.net . Consultado el 9 de abril de 2014 .
enlaces externos
- Presentación sobre varios sistemas de archivos Flash - 2007-09-24
- Artículo sobre varios sistemas de archivos Flash - Conferencia anual 2005 de USENIX
- Estudio de varios sistemas de archivos Flash - 2005-08-10
- Anatomía de los sistemas de archivos Flash de Linux - 2008-05-20