13.2. Sistemas de archivos de Linux principales

Al contrario de lo que ocurría hace dos o tres años, la elección de un sistema de archivos para un sistema Linux ha dejado de ser un proceso de unos cuantos segundos (en el que se elegía entre Ext2 o ReiserFS). Los núcleos a partir de la versión 2.4 ofrecen distintos sistemas de archivos entre los que elegir. A continuación se ofrece una descripción general del modo de funcionamiento básico de esos sistemas de archivos y las ventajas que ofrecen.

Es muy importante recordar que puede no haber un sistema de archivos que sea el más indicado para todos los tipos de aplicaciones. Cada uno presenta ventajas y puntos débiles propios que deben tenerse en cuenta. Incluso los sistemas de archivos más sofisticados no pueden reemplazar, por ejemplo, a una buena estrategia de copias de seguridad.

Los términos integridad de los datos y coherencia de los datos, cuando aparecen en este capítulo, no hacen referencia a la coherencia de los datos del espacio del usuario (los que las aplicaciones escriben en los archivos correspondientes). La coherencia de esos datos deben controlarla las propias aplicaciones.

[Important]Configuración de sistemas de archivos

A menos que se indique lo contrario en este capítulo, todos los pasos necesarios para configurar o cambiar particiones y sistemas de archivos se pueden realizar desde YaST.

13.2.1. ReiserFS

La que es oficialmente una de las funciones clave de la versión de núcleos 2.4, ReiserFS, ha estado disponible como parche para los núcleos de SUSE 2.2.x desde la versión 6.4 de SUSE Linux. ReiserFS fue diseñado por Hans Reiser y el equipo de desarrollo Namesys. Ha demostrado ser una potente alternativa para Ext2. Sus ventajas principales son una mejor utilización del espacio del disco, un mejor rendimiento en el acceso al disco y una recuperación más rápida tras las caídas del sistema.

Las ventajas de ReiserFS, con más detalle, son:

Mejor utilización del espacio del disco

En ReiserFS, todos los datos se organizan en una estructura llamada B*-balanced tree (árbol equilibrado). La estructura en árbol contribuye a la mejor utilización del espacio del disco debido a que los archivos pequeños se pueden almacenar directamente en los nodos de hojas del árbol B* en lugar de almacenarse en otro lugar y mantener únicamente un puntero a la ubicación real en el disco. Además, el almacenamiento no se asigna en unidades de 1 o 4 kB, sino en porciones del tamaño exacto necesario. Otro beneficio reside en la asignación dinámica de inodos. De esta forma el sistema de archivos resulta más flexible que los sistemas tradicionales, como Ext2, donde la densidad de inodos se debe especificar en el momento en que se crea el sistema de archivos.

Mejor rendimiento en el acceso al disco

En el caso de los archivos pequeños, tanto los datos de los archivos como la información (inodo) “stat_data” se almacenan a menudo unos al lado de la otra. Se pueden leer con una sola operación de E/S del disco, lo que significa que sólo es necesario acceder al disco una vez para recuperar toda la información necesaria.

Recuperación rápida tras las caídas del sistema

Mediante un diario en el que se realiza un seguimiento de los cambios recientes en los metadatos, se puede realizar una comprobación del sistema en cuestión de segundos, incluso en sistemas de archivos de gran tamaño.

Fiabilidad gracias al registro de datos

ReiserFS es compatible también con el registro de datos en un diario y con los modos de ordenación de datos similares a los conceptos descritos en la sección de Ext3, Sección 13.2.3, “Ext3”. El modo predeterminado es data=ordered, el cual garantiza la integridad tanto de los datos como de los metadatos y se utiliza el registro en el diario sólo con los metadatos.

13.2.2. Ext2

Los orígenes de Ext2 se remontan a los primeros días de la historia de Linux. Su predecesor, el sistema de archivos extendido (Extended File System), se implantó en abril de 1992 y se integró en Linux 0.96c. El sistema de archivos extendido experimentó diversas modificaciones y, como Ext2, se convirtió en el sistema de archivos para Linux más popular durante años. Con la creación de los sistemas de archivos con registro en diario y sus sorprendentemente cortos tiempos de recuperación, Ext2 perdió protagonismo.

Un breve resumen de las ventajas de Ext2 puede ayudar a entender por qué fue, y sigue siendo en algunos casos, el sistema de archivos favorito de muchos usuarios de Linux.

Solidez

Dado que es un “veterano”, Ext2 ha sido sometido a muchas mejoras y probado en profundidad. Puede que ésa sea la razón por la que se hace referencia a él como una roca sólida. Cuando, tras un fallo del sistema, no es posible desmontar el sistema de archivos limpiamente, e2fsck comienza a analizar los datos del sistema de archivos. Los metadatos recuperan un estado coherente y los archivos o bloques de datos pendientes se escriben en un directorio designado (denominado lost+found, es decir, "objetos perdidos"). Al contrario de lo que ocurre con los sistemas de archivos con registro en diario, e2fsck analiza todo el sistema de archivos y no sólo los bits de metadatos modificados recientemente. Este proceso consume mucho más tiempo que la comprobación del registro en un sistema de archivos con diario. Según el tamaño del sistema de archivos, puede suponer media hora o más. Por tanto, no es aconsejable elegir Ext2 para un servidor que requiera un alto grado de disponibilidad. Sin embargo, dado que Ext2 no mantiene ningún diario y emplea sensiblemente menos memoria, a veces resulta más rápido que otros sistemas de archivos.

Fácil actualización

El código de Ext2 es la base firme sobre la que Ext3 pudo convertirse en un sistema de archivos de última generación muy aclamado. Su fiabilidad y solidez se combinaron elegantemente con las ventajas de un sistema de archivos con registro en diario.

13.2.3. Ext3

Ext3 fue concebido por Stephen Tweedie. A diferencia de todos los demás sistemas de archivos de última generación, Ext3 no parte de un principio de diseño completamente nuevo, sino que está basado en Ext2. Ambos sistemas de archivos están estrechamente vinculados. Un sistema de archivos Ext3 se puede montar fácilmente sobre un sistema de archivos Ext2. La diferencia fundamental entre ambos es que Ext3 es compatible también con el registro en diario. En resumen, Ext3 presenta tres ventajas principales:

Actualización sencilla y muy fiable de Ext2

Dado que Ext3 está basado en el código de Ext2 y comparte los mismos formatos para el disco y los metadatos, la actualización de Ext2 a Ext3 resulta increíblemente fácil. Al contrario que las transiciones a otros sistemas de archivos con registro en diario, como ReiserFS o XFS, que pueden ser bastante tediosas (con la necesidad de hacer copias de seguridad de todo el sistema de archivos para volver a crearlo desde cero), el cambio a Ext3 se lleva a cabo en cuestión de minutos. También es un proceso muy seguro, ya que volver a generar todo un sistema de archivos desde cero puede presentar problemas. Si se tiene en cuenta la cantidad de sistemas Ext2 disponibles que esperan una actualización a un sistema de archivos con diario, es fácil imaginar la importancia que puede tener Ext3 para muchos administradores de sistemas. El cambio de Ext3 a Ext2 es tan fácil como la actualización en sentido contrario. Basta con desmontar el sistema de archivos Ext3 y volver a montarlo como sistema de archivos Ext2.

Fiabilidad y rendimiento

Algunos de los sistemas de archivos con registro en diario siguen el principio de “sólo metadatos” en el registro. Esto significa que los metadatos conservan siempre un estado coherente, lo que no se puede garantizar directamente para los propios datos del sistema de archivos. Ext3 está diseñado para ocuparse tanto de los metadatos como de los datos. El nivel de “ocupación” se puede personalizar. Si se habilita Ext3 en el modo data=journal, se consigue la máxima seguridad (integridad de los datos), pero se puede ralentizar el sistema, ya que se registran en el diario tanto los metadatos como los datos. Un concepto relativamente nuevo consiste en utilizar el modo data=ordered, el cual garantiza la integridad tanto de los datos como de los metadatos, pero utiliza el registro en el diario sólo con los metadatos. El controlador del sistema de archivos recopila todos los bloques de datos que corresponden a una actualización de los metadatos. Estos bloques de datos se escriben en el disco antes de que se actualicen los metadatos. Como resultado, se consigue la coherencia tanto de los metadatos como de los datos sin sacrificar el rendimiento. Una tercera opción consiste en utilizar data=writeback, que permite que los datos se escriban en el sistema de archivos principal después de que los metadatos correspondientes se hayan consignado en el diario. Esta opción se considera a menudo la mejor en términos de rendimiento. Sin embargo, puede ocurrir que vuelvan a aparecer datos obsoletos en los archivos después de una caída y recuperación del sistema, al tiempo que se mantiene la integridad interna del sistema de archivos. Mientras no se especifique otra cosa, Ext3 se ejecuta con el valor por defecto data=ordered.

13.2.4. Conversión de un sistema de archivos Ext2 a Ext3

Para convertir un sistema de archivos Ext2 a Ext3, haga lo siguiente:

  1. Cree un diario de Ext3 ejecutando tune2fs -j como usuario Root. De este modo se crea un diario Ext3 con los parámetros por defecto.

    Para decidir el tamaño del diario y el dispositivo en el que debe residir, ejecute tune2fs -J junto con las opciones de diario que desee: size= y device=. Puede encontrar más información acerca del programa tune2fs en la página de manual de tune2fs.

  2. Para asegurarse de que el sistema de archivos Ext3 se reconoce como tal, edite el archivo /etc/fstab como usuario Root, cambie el tipo del sistema de archivos especificado para la partición correspondiente de ext2 a ext3. El cambio surte efecto tras el siguiente rearranque.

  3. Para arrancar una configuración de sistema de archivos raíz como partición Ext3, incluya los módulos ext3 y jbd en initrd. Para ello, edite /etc/sysconfig/kernel como usuario Root y añada ext3 y jbd a la variable INITRD_MODULES. Tras guardar los cambios, ejecute el comando mkinitrd. De este modo se genera un nuevo initrd y se prepara para su uso.

13.2.5. Reiser4

Justo después de que apareciera en el mercado el núcleo 2.6, la familia de sistemas de archivos con registro en diario se amplió con un nuevo miembro: Reiser4. Reiser4 es esencialmente distinto de su predecesor, ReiserFS (versión 3.6). Introduce el concepto de complementos para aumentar la funcionalidad del sistema de archivos, así como un concepto de seguridad muy avanzado.

Concepto de seguridad avanzado

Al diseñar Reiser4, los desarrolladores hicieron hincapié en la implantación de funciones relativas a la seguridad. Por tanto, Reiser4 se presenta con un conjunto de complementos destinados a la seguridad. El más importante de ellos introduce el concepto de “elementos” de archivo. En la actualidad, los controles de acceso a archivos están definidos por archivo. Si se cuenta con un archivo grande que incluye información pertinente para varios usuarios, grupos o aplicaciones, los derechos de acceso deben ser lo suficientemente imprecisos para que puedan incluir a todas las partes involucradas. Reiser4 permite dividir ese tipo de archivos en partes más pequeñas, conocidas como “elementos”. Así, los derechos de acceso se pueden definir para cada elemento y cada usuario de forma independiente, lo que permite una gestión mucho más precisa de la seguridad de los archivos. Un ejemplo perfecto es /etc/passwd. Hasta ahora, sólo podían leer y editar este archivo los usuarios Root, mientras que, los que no lo fueran sólo obtenían acceso de lectura al archivo. Mediante el concepto de elemento de Reiser4, se puede dividir el archivo en un conjunto de elementos (uno por usuario) y permitir a los usuarios o las aplicaciones modificar sus propios datos, pero no acceder a los datos de otros usuarios. Este concepto supone una mejora tanto de la seguridad como de la flexibilidad.

Ampliabilidad a través de complementos

Muchas de las funciones del sistema de archivos y de las funciones externas que emplea normalmente un sistema de archivos se implantan como complementos en Reiser4. Estos complementos se pueden añadir fácilmente al sistema base, por lo que desaparece la necesidad de volver a compilar el núcleo o formatear el disco duro para añadir nuevas funciones al sistema de archivos.

Mejor disposición del sistema de archivos a través de la asignación retardada

Al igual que XFS, Reiser4 es compatible con la asignación retardada. Consulte la Sección 13.2.6, “XFS”. El uso de la asignación retardada incluso para los metadatos puede resultar en una disposición general más adecuada.

13.2.6. XFS

Pensado en un principio como sistema de archivos para su sistema operativo IRIX, SGI inició el desarrollo de XFS a principios de la década de 1990. La idea subyacente en XFS era la de crear un sistema de archivos con registro en diario de 64 bits de alto rendimiento para afrontar los grandes retos de la informática actual. XFS es muy bueno a la hora de manipular archivos grandes y ofrece un rendimiento adecuado en hardware de alta tecnología. Con todo, incluso XFS presenta alguna desventaja. Como ReiserFS, XFS pone mucha atención a la integridad de los metadatos, pero menos a la de los datos.

Si se revisan rápidamente las funciones clave de XFS, se entiende el motivo por el que puede constituir un serio competidor para otros sistemas de archivos con registro en diario en informática de alta tecnología.

Gran escalabilidad a través de grupos de asignación

En el momento en que se crea un sistema de archivos XFS, el dispositivo de bloqueo subyacente se divide en ocho o más regiones lineales del mismo tamaño. Estas regiones se conocen como grupos de asignación. Cada grupo de asignación gestiona los inodos y el espacio libre en el disco propios. En la práctica, los grupos de asignación se pueden considerar como sistemas de archivos dentro de un sistema de archivos. Dado que los grupos de asignación son bastante independientes entre sí, el núcleo puede acceder a más de uno a la vez, lo que constituye la clave de la gran escalabilidad de XFS. Obviamente, el concepto de grupos de asignación independientes satisface las necesidades de los sistemas con varios procesadores.

Alto rendimiento mediante la gestión eficaz del espacio del disco

El espacio libre y los inodos se gestionan mediante árboles B+ dentro de los grupos de asignación. El uso de árboles B+ contribuye en gran medida a aumentar el rendimiento y la escalabilidad de XFS. XFS emplea asignación retardada: gestiona la asignación dividiendo el proceso en dos partes. La transacción pendiente se almacena en RAM y se reserva la cantidad de espacio adecuada. XFS no decide en ese momento el lugar exacto (hablando de bloques del sistema de archivos) donde se deben almacenar los datos. Esta decisión se retarda hasta el último momento posible. Algunos datos temporales de corta duración pueden no llegar al disco nunca, porque pueden haber quedado obsoletos para el momento en que XFS decide dónde guardarlos. Así, XFS aumenta el rendimiento en la escritura y reduce la fragmentación del sistema de archivos. Debido a que la asignación retardada tiene como resultado menos eventos de escritura que en otros sistemas de archivos, es probable que la pérdida de datos tras una caída del sistema durante un proceso de escritura sea más grave.

Asignación previa para evitar la fragmentación del sistema de archivos

Antes de escribir los datos en el sistema de archivos, XFS reserva (realiza una asignación previa) el espacio libre necesario para un archivo, con lo que se reduce en gran medida la fragmentación del sistema de archivos. El rendimiento aumenta dado que el contenido de cada archivo no está distribuido por todo el sistema de archivos.