Contrariamente a lo que ocurría hace dos o tres años, la elección de un sistema de archivos en Linux ya no es una cuestión de segundos (¿Ext2 o ReiserFS?). A partir de la versión 2.4, el kernel ofrece una gran selección de sistemas de archivos. A continuación le mostramos un resumen de las funciones básicas de estos sistemas de archivos y sus ventajas.
Tenga siempre en cuenta que no existe ningún sistema de archivos que pueda funcionar del mismo modo con todas las aplicaciones. Cada sistema de archivos tiene puntos fuertes y débiles que se deben de tener presentes. Ni el sistema de archivos más desarrollado de todo el mundo puede sustituir a la copia de seguridad.
Los conceptos “integridad de los datos” o “coherencia de los datos” no se refieren en este capítulo a la coherencia de los datos que un usuario tiene guardados (los datos que una aplicación escribe en los archivos). La coherencia de estos datos debe quedar asegurada por las aplicaciones mismas.
![]() | Configuración de sistemas de archivos |
|---|---|
Mientras no se indique lo contrario explícitamente, todas las acciones de particionamiento así como de creación y edición de sistemas de archivos pueden llevarse a cabo cómodamente con YaST. | |
Aunque oficialmente se trata de una de las prestaciones principales de la versión 2.4 del kernel, ReiserFS ha estado disponible desde la versión 6.4 de SUSE Linux como parche para el kernel de SUSE 2.2.x. ReiserFS es producto de la labor de Hans Reiser y del equipo de desarrollo Namesys. ReiserFS se ha perfilado como una alternativa poderosa a Ext2. Sus grandes ventajas son: una mejor administración de la memoria del disco duro, un rendimiento optimizado del acceso al disco y una recuperación más rápida después de una caída del sistema.
Las principales ventajas de ReiserFS son:
En ReiserFS, todos los datos se organizan en una estructura llamada B*-balanced tree. La estructura de árbol contribuye a una mejor administración de la memoria del disco duro, ya que los archivos pequeños se pueden guardar directamente en las hojas del B*tree (árbol), en lugar de guardarlos en otro lugar y luego tener que administrar el puntero (pointer) para que apunte al sitio indicado. Además, la memoria no se asignará en unidades de 1 a 4 Kb, sino en la unidad exactamente necesaria. Otra ventaja es el proceso dinámico de inodes. Esto dota al sistema de archivos de una gran flexibilidad frente a los sistemas convencionales, como por ejemplo Ext2, en el que se debe indicar la densidad del inode en el momento de crear el sistema de archivos.
En los archivos pequeños, tanto los datos del archivo como la información (inode) de “stat_data” se guardan uno al lado del otro. Basta con un único acceso al disco duro para suministrar toda la información necesaria.
Desde el contenido de un diario al seguimiento de las pequeñas modificaciones de metadatos, la comprobación del sistema de archivos se reduce a unos pocos segundos incluso en sistemas de archivos grandes.
ReiserFS también soporta el registro de datos y los modos
“ordered” de datos (ambos conceptos se explican con más detalle en
la Sección 34.2.3, “Ext3”). El modo predeterminado es
data=ordered, lo que garantiza la integridad tanto de los
datos como de los metadatos. No obstante, el registro se utiliza sólo para los
metadatos.
El origen de Ext2 se remonta a los primeros días de Linux. Su antecesor, el Extended File System fue implementado en abril de 1992 e integrado en Linux 0.96c. Este sufrió una serie de modificaciones y durante años se le conoció como Ext2 a la vez que se le consideró el sistema de archivos más popular de Linux. Con la introducción del sistema Journaling File y de su tiempo de elaboración tan sorprendentemente corto, Ext2 perdió importancia.
Puede que le sirva de ayuda un pequeño resumen de los puntos fuertes de Ext2 para que comprenda su popularidad entre los usuarios de Linux, que en cierta medida aún hoy lo prefieren como sistema de archivos.
Con el correr del tiempo, Ext2 ha sufrido muchas mejoras que le
han hecho ganarse la reputación de ser “sólido como una
roca”. En caso de una caída del sistema en la que el
sistema de archivos no puede desmontarse adecuadamente,
e2fsck inicia un análisis de los datos
del sistema de archivos. Los metadatos se reconstruyen y los
archivos o bloques de datos que quedan sueltos se guardan en un
directorio denominado lost+found. En contraposición a
(la mayoría) de los sistemas de archivos transaccionales o
journaling, e2fsck analiza todo el
sistema de archivos y no sólo los bits de metadatos modificados.
Esto lleva más tiempo que la comprobación de los datos de
protocolo de un sistema journaling. Dependiendo del tamaño del
sistema de archivos, puede llegar a durar más de media hora. Por
esta razón, Ext2 no se escoge para ningún servidor que deba tener
un alto rendimiento. Debido a que Ext2 no debe hacerse cargo de
ningún diario y a la vez necesita poca memoria, a menudo es más
rápido que otros sistemas de archivos.
Tomando como base la fortaleza de Ext2, Ext3 podría llegar a convertirse en el sistema de archivos de la próxima generación. Su fiabilidad y estabilidad se complementarían perfectamente con las ventajas de los sistemas de archivos journaling.
Ext3 fue concebido por Stephen Tweedie. A diferencia del resto de los sistemas de archivos de “última generación”, no está basado en un nuevo diseño, sino en Ext2. Ambos sistemas de archivos están estrechamente vinculados. Un sistema de archivos Ext3 se puede montar fácilmente sobre un sistema Ext2. La diferencia fundamental entre ambos radica en que Ext3 también soporta journaling. Estas son brevemente las tres ventajas de Ext3:
Ya que Ext3 se basa en el código de Ext2, a la vez que comparten formato tanto para el disco como para los metadatos, las actualizaciones no son complicadas. Incluso se pueden llevar a cabo mientras el sistema de archivos Ext2 está montado. El proceso de cambio a otro sistema de archivos journaling, como por ejemplo ReiserFS, JFS, o XFS, puede llegar a ser muy trabajoso debido a que se deben realizar copias de seguridad de todo el sistema de archivos y después instalarlo desde cero. Sin embargo, el cambio a Ext3 puede ser una cuestión de minutos. Además es muy seguro, ya que resulta difícil que la reelaboración de todo un sistema de archivos desde cero no tenga errores. Si se tiene en cuenta la cantidad de sistemas Ext2 disponibles que esperan una actualización a un sistema de archivos journaling, se puede imaginar fácilmente el significado de Ext3 para muchos administradores de sistemas. El pasar de Ext3 a Ext2 es tan fácil como la actualización en sentido contrario. Tan sólo se tiene que desmontar el sistema Ext3 y montarlo como Ext2.
Otros sistemas de archivos journaling siguen el principio journaling de
“sólo metadatos” (metadata-only). Esto significa que los metadatos
permanecen en un estado coherente, lo que sin embargo no puede garantizarse
automáticamente para los datos del sistema de archivos. Ext3 tiene capacidad
para cuidar tanto de los metadatos como de los datos mismos. Se puede
configurar individualmente el detalle con el que Ext3 debe ocuparse de los
datos y metadatos. El grado más alto de seguridad (es decir, integridad de los
datos) se consigue al arrancar Ext3 en modo data=journal; esto
puede hacer que el sistema sea más lento, ya que se guardarán en el diario
tanto los datos como los metadatos. Una posibilidad relativamente nueva
consiste en la utilización del modo data=ordered, que
garantiza la integridad tanto de los datos como de los metadatos a pesar de que
sólo realiza journaling para los metadatos. El controlador del sistema de
archivos reúne todos los bloques de datos relacionados con la actualización de
los metadatos. Estos bloques de datos se escriben en el disco antes de que los
metadatos sean actualizados. Con esto se consigue la coherencia de datos y
metadatos sin pérdida de rendimiento. Un tercer tipo de modo es
data=writeback. De esta forma se puede escribir datos en el
sistema de archivos principal después de que los metadatos hayan pasado al
diario. Para muchos, esta opción es la mejor configuración en cuanto a
rendimiento. Sin embargo, con esta opción puede ocurrir que aparezcan viejos
datos en los archivos después de haberse producido una caída del sistema
mientras se garantiza la integridad del sistema de archivos. Mientras no se
indique otra opción, Ext3 arrancará con la opción predeterminada
data=ordered.
Ejecute el comando tune2fs
-j como usuario root.
tune2fs se encarga de crear el
diario Ext3 con parámetros estándar. Si por el contrario
prefiere definir usted mismo con qué tamaño y en qué
dispositivo debe crearse el diario, ejecute
tune2fs -J con los
parámetros size= y
device=. Puede obtener información adicional
sobre tune2fs en las páginas del
manual.
Para que el sistema de archivos Ext3 sea detectado como tal,
abra el archivo /etc/fstab y cambie el
tipo de sistema de archivos de la partición correspondiente de
ext2 a ext3. La
modificación se aplicará tras reiniciar el sistema.
Para arrancar el sistema de archivos raíz
(root) en ext3, hace falta
integrar adicionalmente los módulos ext3 y
jbd en el RAM disk inicial
initrd. A continuación introduzca estos dos
módulos en el archivo /etc/sysconfig/kernel bajo
INITRD_MODULES. Posteriormente ejecute el comando
mk_initrd.
Inmediatamente después de que el kernel 2.6 viera la luz, un nuevo miembro se sumó a la familia de sistemas de archivos transaccionales: Reiser4. Reiser4 se diferencia sustancialmente de su predecesor ReiserFS (versión 3.6). Introduce el concepto de plugins para configurar las funciones del sistema de archivos y un concepto de seguridad más elaborado.
Durante el diseño de Reiser4, los desarrolladores pusieron especial
énfasis en la implementación de funciones relacionadas con la seguridad. Como
consecuencia, Reiser4 incorpora un conjunto de plugins de seguridad dedicados,
el más importante de los cuales introduce el concepto de elementos de archivo o
“items”. Actualmente, el control de acceso a los archivos se
define en función del archivo. Si existe un archivo muy grande que contiene
información relevante para varios usuarios, grupos o aplicaciones, los permisos
de acceso deben ser poco precisos para incluir a todos los interesados. En
Reiser4 es posible dividir este tipo de archivos en porciones más pequeñas
(“items”). Los permisos de acceso pueden definirse para cada
elemento y usuario, permitiendo una gestión de seguridad de archivos mucho más
precisa. El archivo /etc/passwd constituye un ejemplo
perfecto. Actualmente, root es el
único que puede leer y editar este archivo mientras que el resto de usuarios
sólo tiene permiso de lectura. El concepto de “items” de Reiser4
hace que sea posible dividir este archivo en un conjunto de elementos (un
“item” por cada usuario) y permitir a usuarios o aplicaciones
modificar sus propios datos sin acceder a los datos de otros usuarios. Este
concepto favorece tanto la seguridad como la flexibilidad.
Muchas de las funciones inherentes a un sistema de archivos o externas pero usadas normalmente por sistemas de archivos se han implentado en Reiser4 en forma de plugins. Si desea enriquecer el sistema de archivos con nuevas funciones, estos plugins pueden añadirse fácilmente al sistema base sin necesidad de volver a compilar el kernel o reformatear el disco duro.
Al igual que XFS, Reiser4 soporta la asignación retardada (ver Sección 34.2.7, “XFS”). El uso de la asignación retardada incluso para metadatos puede resultar en una estructura global mejorada.
JFS, “Journaling File System”, fue desarrollado por IBM para AIX. La primera versión beta de JFS portada a Linux llegó al entorno Linux en el verano del año 2000. La versión 1.0.0 salió a la luz en el año 2001. JFS está diseñado para cumplir las exigencias del entorno de un servidor de alto rendimiento. Al ser un sistema de archivos de 64 bits, JFS soporta archivos grandes y particiones LFS (Large File Support), lo cual es una ventaja más para los entornos de servidor.
Un vistazo más detallado a JFS muestra por qué este sistema de archivos es una buena elección para su servidor Linux:
JFS sigue el principio de “metadata only”. En vez de una comprobación completa, sólo se tienen en cuenta las modificaciones en los metadatos provocadas por las actividades del sistema. Esto ahorra una gran cantidad de tiempo en la fase de recuperación del sistema tras una caída. Las actividades simultáneas que requieren más entradas de protocolo se pueden unir en un grupo en el que la pérdida de rendimiento del sistema de archivos se reduce en gran medida gracias a múltiples procesos de escritura.
JFS abarca diversas estructuras de directorios. En pequeños directorios se permite el almacenamiento directo del contenido del directorio en su inode. En directorios más grandes se utilizan B+trees, que facilitan considerablemente la administración del directorio.
En Ext2 es necesario indicar el grosor del inode (la memoria ocupada por la información de administración) por adelantado. Con ello se limita la cantidad máxima de archivos o directorios de su sistema de archivos. Esto no es necesario en JFS, puesto que asigna la memoria inode de forma dinámica y la pone a disposición del sistema cuando no se está utilizando.
Pensado originariamente como sistema de archivos para sistemas operativos IRIX, SGI comenzó el desarrollo de XFS ya a principios de la década de los noventa. Con XFS consigue un sistema de archivos journaling de 64 bits de gran rendimiento adaptado a las necesidades extremas de hoy en día. XFS también está indicado para el trabajo con archivos grandes y ofrece un buen rendimiento en hardware de última generación. Sin embargo XFS, al igual que ReiserFS, tiene la desventaja de conceder mucha importancia a la integridad de los metadatos y muy poca a la de los datos:
Un breve resumen de las funciones clave de XFS aclarará por qué puede llegar a convertirse en un fuerte competidor de otros sistemas de archivos journaling en el tratamiento de datos.
En el momento de la creación de un sistema de archivos XFS, el dispositivo de bloque (block-device) que sirve de base al sistema de archivos se divide en ocho o más campos lineales de igual tamaño denominados grupos de asignación. Cada grupo de asignación administra inodes así como memoria libre. Se puede considerar a estos grupos prácticamente como sistemas de archivos dentro de sistemas de archivos. Puesto que estos grupos de asignación son bastante independientes, el kernel puede dirigirse a más de uno simultáneamente. Este concepto de grupos de asignación independientes satisface los requisitos de los sistemas con varios procesadores.
B+trees administran la memoria libre y los inodes dentro de los grupos de asignación. El manejo de B+trees contribuye al gran rendimiento de XFS. Una característica de XFS es la llamada asignación retardada. XFS realiza la asignación de la memoria mediante la división en dos de los procesos. Una transacción “en suspenso” queda guardada en RAM y el espacio en la memoria queda reservado. XFS aún no decide dónde exactamente (en qué bloque del sistema de archivos) se almacenan los datos. Esta decisión se retrasará hasta el último momento. Con esto, algunos datos temporales no quedan nunca almacenados en el disco, ya que cuando llegue el momento de decidir el lugar de almacenamiento ya estarán obsoletos. Así, XFS aumenta el rendimiento y disminuye la fragmentación del sistema de archivos. Debido a que una asignación retardada tiene como consecuencia menos procesos de escritura que en otros sistemas de archivos, es probable que la pérdida de datos tras una caída del sistema durante el proceso de escritura sea mayor.
Antes de la escritura de los datos en el sistema de archivos, XFS reserva el espacio de memoria necesario para un archivo que vaya a ser asignado. De esta forma se reduce enormemente la fragmentación del sistema de archivos y el rendimiento aumenta, ya que el contenido de los archivos no queda dividido por todo el sistema de archivos.