Articulo de referencia

JFS (sistema de archivos)

50 bytes}} (32 [[Pebibyte|PiB]])"},"max_file_size":{"wt":"{{nowrap|4 × 2 50 bytes}} (4 PiB)"},"filename_character_set":{"wt":"Any [[Unicode]] except [[Null character|NUL]]"},"da...

El sistema de archivos con registro de transacciones ( JFS ) es un sistema de archivos de 64 bits creado por IBM . Existen versiones para los sistemas operativos AIX , OS/2 , eComStation , ArcaOS y Linux . Esta última está disponible como software libre bajo los términos de la Licencia Pública General de GNU (GPL). HP-UX cuenta con otro sistema de archivos diferente llamado JFS, que en realidad es una versión OEM de VxFS de Veritas Software .

En el sistema operativo AIX, existen dos generaciones de JFS, que se denominan JFS ( JFS1 ) y JFS2 respectivamente. [ 1 ]

El JFS de IBM fue diseñado originalmente para sistemas de 32 bits . JFS2 fue diseñado para sistemas de 64 bits . [ 2 ]

En otros sistemas operativos, como OS/2 y Linux, solo existe la segunda generación y se llama simplemente JFS . [ 3 ] Esto no debe confundirse con JFS en AIX que en realidad se refiere a JFS1.

Historia

IBM introdujo JFS con el lanzamiento inicial de AIX versión 3.1 en febrero de 1990. Este sistema de archivos, ahora llamado JFS1 en AIX , fue el sistema de archivos principal para AIX durante la década siguiente y se instaló en miles o millones de sistemas AIX de clientes. Históricamente, el sistema de archivos JFS1 está muy estrechamente vinculado al administrador de memoria de AIX, [ 1 ] que es un diseño típico para un sistema de archivos que admite solo un sistema operativo. JFS fue uno de los primeros sistemas de archivos en admitir Journaling .

En 1995, se comenzó a trabajar para mejorar el sistema de archivos para que fuera más escalable y compatible con máquinas con más de un procesador. Otro objetivo era tener un sistema de archivos más portátil, capaz de ejecutarse en múltiples sistemas operativos. Después de varios años de diseño, codificación y pruebas, el nuevo JFS se lanzó por primera vez en OS/2 Warp Server para eBusiness en abril de 1999, y luego en OS/2 Warp Client en octubre de 2000. En diciembre de 1999, se concedió una instantánea del código fuente original de OS/2 JFS a la comunidad de código abierto y se comenzó a trabajar para portar JFS a Linux . La primera versión estable de JFS para Linux apareció en junio de 2001. [ 3 ] El proyecto JFS para Linux es mantenido por un pequeño grupo de colaboradores conocido como el Equipo Central de JFS . [ 4 ] Esta publicación de fuentes también sirvió de base para una re-portación a OS/2 del JFS de código abierto.

Paralelamente a este esfuerzo, algunos miembros del equipo de desarrollo de JFS regresaron al Grupo de Desarrollo del Sistema Operativo AIX en 1997 y comenzaron a trasladar esta nueva base de código fuente de JFS al sistema operativo AIX. En mayo de 2001, se puso a disposición un segundo sistema de archivos con registro por diario, el Sistema de Archivos con Registro por Diario Mejorado (JFS2) , para AIX 5L. [ 1 ] [ 3 ]

A principios de 2008, se especuló con que IBM ya no estaba interesada en mantener JFS y, por lo tanto, no debería usarse en entornos de producción. [ 5 ] Sin embargo, Dave Kleikamp, ​​miembro del Centro de Tecnología Linux de IBM y del Equipo Central de JFS, [ 4 ] explicó que siguen de cerca los cambios en el kernel de Linux e intentan corregir posibles errores de software . Añadió que ciertas distribuciones requieren una mayor inversión de recursos y optan por no dar soporte al sistema de archivos. [ 6 ]

En 2012, se agregó soporte para el comando TRIM para unidades de estado sólido a JFS. [ 7 ]

Características

JFS admite las siguientes características. [ 8 ] [ 9 ]

Diario

JFS es un sistema de archivos con registro de transacciones . En lugar de añadir el registro de transacciones como una característica adicional, como en el sistema de archivos ext3 , se implementó desde el principio. El registro puede alcanzar hasta 128 MB. JFS registra únicamente los metadatos, lo que significa que estos se mantendrán consistentes, pero los archivos de usuario podrían corromperse tras un fallo del sistema o una pérdida de energía. El registro de transacciones de JFS es similar al de XFS, ya que solo registra partes del inodo . [ 10 ]

Árbol B+

JFS utiliza un árbol B+ para acelerar las búsquedas en directorios. JFS puede almacenar 8 entradas de un directorio en el inodo del directorio antes de mover las entradas a un árbol B+. JFS también indexa las extensiones en un árbol B+.

Asignación dinámica de inodos

JFS asigna espacio dinámicamente para los inodos de disco según sea necesario. Cada inodo tiene un tamaño de 512 bytes. Se asignan 32 inodos en una extensión de 16 kB.

Extensión

JFS asigna archivos como extensiones . Una extensión es una secuencia de bloques agregados de longitud variable. Una extensión puede estar ubicada en varios grupos de asignación . Para solucionar esto, las extensiones se indexan en un árbol B+ para un mejor rendimiento al localizar las ubicaciones de las extensiones.

Compresión

La compresión solo es compatible con JFS1 en AIX y utiliza una variante del algoritmo LZ . Debido al alto consumo de CPU y al aumento de la fragmentación del espacio libre , no se recomienda su uso fuera de estaciones de trabajo de un solo usuario o áreas de copia de seguridad fuera de línea .

Entrada/salida simultánea (CIO)

JFS normalmente aplica un bloqueo de lectura compartida y escritura exclusiva a los archivos, lo que evita inconsistencias de datos pero impone la serialización de escritura a nivel de archivo. La opción CIO desactiva este bloqueo. Las aplicaciones como las bases de datos relacionales que mantienen la consistencia de los datos por sí mismas pueden usar esta opción para eliminar en gran medida la sobrecarga del sistema de archivos. [ 11 ]

Grupos de asignación

JFS utiliza grupos de asignación (AG). Estos grupos dividen el espacio agregado en fragmentos, lo que permite a JFS emplear políticas de asignación de recursos para lograr un excelente rendimiento de E/S. La primera política consiste en agrupar los bloques de disco y los inodos de disco relacionados en el mismo AG para optimizar la localidad del disco. La segunda política consiste en distribuir los datos no relacionados por todo el sistema de archivos para minimizar la fragmentación del espacio libre. Cuando hay un archivo abierto, JFS bloquea el AG en el que reside y solo permite que el archivo abierto crezca. Esto reduce la fragmentación, ya que solo el archivo abierto puede escribir en el AG.

Superbloques

El superbloque mantiene información sobre todo el sistema de archivos e incluye los siguientes campos:

  • Tamaño del sistema de archivos
  • Número de bloques de datos en el sistema de archivos
  • Un indicador que señala el estado del sistema de archivos.
  • Tamaños de los grupos de asignación
  • tamaño de bloque del sistema de archivos

En Linux

En el sistema operativo Linux, JFS es compatible con el módulo del kernel (desde la versión 2.4.18pre9-ac4 ) y las utilidades complementarias de espacio de usuario empaquetadas bajo el nombre JFSutils . La mayoría de las distribuciones de Linux son compatibles con JFS, a menos que se elimine específicamente debido a restricciones de espacio, como en los CD de arranque .

Según las pruebas de rendimiento de los sistemas de archivos disponibles para Linux, JFS es rápido y fiable, con un rendimiento consistentemente bueno bajo diferentes tipos de carga. [ 12 ]

El uso real de JFS en Linux es poco común; sin embargo, JFS tiene un papel específico en Linux: ofrece una opción de montaje que no distingue entre mayúsculas y minúsculas, a diferencia de la mayoría de los demás sistemas de archivos de Linux. [ 13 ]

También existen problemas potenciales con JFS, como su implementación de escrituras en el registro. Estas pueden posponerse hasta que se produzca otro desencadenante, potencialmente de forma indefinida, lo que puede provocar la pérdida de datos en un plazo teóricamente infinito. [ 14 ]

Véase también

Referencias

  1. 1 2 3 "Una mini-preguntas frecuentes sobre JFS" . Proyecto JFS para Linux.
  2. "IBM JFS y JFS2" . IBM.
  3. 1 2 3 "Entrevista con las personas detrás de JFS, ReiserFS y XFS" .
  4. 1 2 "JFS para Linux" . JFS.SourceForge.net . Consultado el 26 de agosto de 2020 .
  5. "Re: ¿Cuál usar: ext3, JFS, XFS, ReiserFS?" . Archivado del original el 3 de marzo de 2016. Recuperado el 31 de marzo de 2008 .
  6. SourceForge.net: jfs-discussion
  7. "Soporte TRIM para el sistema de archivos JFS" .
  8. "Descripción general de JFS" . Steve Best, IBM. Archivado del original el 29 de enero de 2008. Consultado el 9 de enero de 2008 .
  9. "Diseño de JFS" (PDF) . Steve Best, IBM . Consultado el 1 de mayo de 2008 .
  10. David Kleikamp. "JFS journal" . OSDIR. Archivado del original el 3 de marzo de 2016. Recuperado el 7 de julio de 2008 .
  11. "Mejora del rendimiento de la base de datos con E/S concurrente de AIX - Libro blanco" (PDF) . IBM.com . IBM .
  12. "Comparación de sistemas de archivos de 9 vías con una SSD en el kernel Linux 3.17" . Phoronix.com . Consultado el 7 de julio de 2020 .
  13. "jfs_mkfs: crea una partición con formato JFS - Páginas del manual de Linux (8)" . SysTutorials.com . Consultado el 7 de julio de 2020 .
  14. Análisis y evolución de los sistemas de archivos de registro - V. Prabhakaran y otros , junio de 2013
  • Sitio web del proyecto JFS para Linux
  • Diseño del sistema de archivos JFS1 , IBM
  • Diseño del sistema de archivos JFS2 , IBM
  • JFSRec , un programa de consola que realiza una extracción de solo lectura de archivos y directorios de un sistema de archivos JFS dañado.