JFS (sistema de archivos)
Journaled File System (JFS) es un sistema de archivos de diario de 64 bits creado por IBM. Existen versiones para los sistemas operativos AIX, OS/2, eComStation, ArcaOS y Linux. Este último está disponible como software libre bajo los términos de la Licencia Pública General GNU (GPL). HP-UX tiene 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, dos generaciones de JFS' existen, que se denominan JFS (JFS1) y JFS2 respectivamente. En otros sistemas operativos, como OS/2 y Linux, solo existe la segunda generación y se llama simplemente JFS. 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 principal sistema de archivos para AIX durante la década siguiente y se instaló en miles o millones de clientes' sistemas AIX. Históricamente, el sistema de archivos JFS1 está muy relacionado con el administrador de memoria de AIX, que es un diseño típico para un sistema de archivos que solo admite un sistema operativo. JFS fue uno de los primeros sistemas de archivos en soportar Journaling
En 1995, se comenzó a trabajar para mejorar el sistema de archivos para que fuera más escalable y compatible con máquinas que tenían 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 envió por primera vez en OS/2 Warp Server for eBusiness en abril de 1999 y luego en OS/2 Warp Client en octubre de 2000. En diciembre de 1999, una instantánea del original El código fuente OS/2 JFS se otorgó a la comunidad de código abierto y se comenzó a trabajar para migrar JFS a Linux. La primera versión estable de JFS para Linux apareció en junio de 2001. El proyecto JFS para Linux lo mantiene un pequeño grupo de colaboradores conocido como JFS Core Team< /i>. Este lanzamiento de fuentes también funcionó para formar la base de un informe de vuelta 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 fuente base de JFS al sistema operativo AIX. En mayo de 2001, un segundo sistema de archivos con diario, Enhanced Journaled File System (JFS2), estuvo disponible para AIX 5L.
A principios de 2008, se especuló que IBM ya no está interesada en mantener JFS y, por lo tanto, no debería usarse en entornos de producción. Sin embargo, Dave Kleikamp, miembro del IBM Linux Technology Center y JFS Core Team, explicó que aún siguen los cambios en el kernel de Linux y tratan de corregir posibles errores de software. Continuó agregando que ciertas distribuciones esperan un mayor compromiso de recursos de ellas y optan por no admitir el sistema de archivos.
En 2012, se agregó a JFS la compatibilidad con el comando TRIM para unidades de estado sólido.
Características
JFS admite las siguientes funciones.
Diario
JFS es un sistema de archivos de diario. En lugar de agregar el registro en diario como una característica adicional como en el sistema de archivos ext3, se implementó desde el principio. El diario puede tener hasta 128 MB. JFS solo registra metadatos, lo que significa que los metadatos permanecerán consistentes pero los archivos de usuario pueden dañarse después de un bloqueo o pérdida de energía. El registro en diario de JFS es similar al de XFS en el sentido de que solo registra partes del inodo.
Á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 extensiones en un árbol B+.
Asignación dinámica de inodos
JFS asigna espacio de forma dinámica para los inodos de disco según sea necesario. Cada inodo tiene 512 bytes. Se asignan 32 inodos en una extensión de 16 kB.
Extensiones
JFS asigna archivos como una extensión. Una extensión es una secuencia de longitud variable de bloques agregados. 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 ubicar las ubicaciones de las extensiones.
Compresión
La compresión solo se admite en JFS1 en AIX y utiliza una variación del algoritmo LZ. Debido al alto uso de la CPU y al aumento de la fragmentación del espacio libre, no se recomienda el uso de la compresión que no sea en una estación de trabajo de un solo usuario o en áreas de copia de seguridad fuera de línea.
Entrada/salida concurrente (CIO)
JFS normalmente aplica bloqueo exclusivo de escritura y lectura compartida a los archivos, lo que evita inconsistencias en los datos pero impone la serialización de escritura a nivel de archivo. La opción CIO deshabilita este bloqueo. Las aplicaciones, como las bases de datos relacionales, que mantienen la coherencia de los datos por sí mismas, pueden utilizar esta opción para eliminar en gran medida los gastos generales del sistema de archivos.
Grupos de asignación
JFS utiliza grupos de asignación. Los grupos de asignación dividen el espacio agregado en partes. Esto permite que JFS utilice políticas de asignación de recursos para lograr un excelente rendimiento de E/S. La primera política es tratar de agrupar bloques de disco e inodos de disco para datos relacionados en el mismo AG para lograr una buena localidad para el disco. La segunda política es distribuir datos no relacionados en todo el sistema de archivos en un intento de minimizar la fragmentación del espacio libre. Cuando hay un archivo abierto, JFS bloqueará el AG en el que reside el archivo y solo permitirá que crezca el archivo abierto. Esto reduce la fragmentación ya que solo el archivo abierto puede escribir en el AG.
Supermanzanas
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
- Una bandera que indica el estado del sistema de archivos
- Grupos de asignación
- Tamaño del 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 del kernel 2.4.18pre9-ac4) y las utilidades de espacio de usuario complementarias empaquetadas con el nombre JFSutils. La mayoría de las distribuciones de Linux admiten JFS a menos que se elimine específicamente debido a restricciones de espacio, como en los CD en vivo.
Según los puntos de referencia de los sistemas de archivos disponibles para Linux, JFS es rápido y confiable, con un buen rendimiento constante bajo diferentes tipos de carga.
El uso real de JFS en Linux es poco común, ya que ext4 normalmente ofrece un mejor rendimiento. JFS tiene un papel de nicho 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 otros sistemas de archivos de Linux.
También hay problemas potenciales con JFS, como su implementación de escrituras en diario. Se pueden posponer hasta que haya otro desencadenante, potencialmente de forma indefinida, lo que puede provocar la pérdida de datos durante un período de tiempo teóricamente infinito.
Contenido relacionado
Generador lineal congruente
CD-i
ARCNET