martes, octubre 25, 2005

EXT2, 3 y ReiserFS

EXT2, EXT3 y ReiserFS son sistemas de archivos sobre los que un sistema Linux puede trabajar. La mayoría de las veces, estos sistemas vienen soportados en forma nativa, y es uno, al momento de la instalación, quien debe decidir sobre cuál -o cuales- vamos a querer montar el sistema.

Empezando en forma cronológica, EXT2 es medio malo, pero no tanto.

No es una basura simplemente porque lo sea, sino que a comparación de los otros dos, se lo puede despreciar.
EXT2 es muy viejo, pero en su momento fue muy eficaz. Tiene capacidad para guardar archivos de hasta 4GB, tamaño máximo de la partición de 4TB y control de errores.
El sistema funciona en forma muy similar a lo que es FAT -12, 16 o 32-, y es de la siguiente manera: supongamos tener una hoja cuadriculada. Podemos decir que cada cuadradito de la hoja es un bloque. Podemos entonces ocupar un bloque con un archivo, en caso que entre, o con una parte de un archivo; en caso que el tamaño sea mayor. Lo que no vamos a poder hacer es compartir ese bloque entre mas de un archivo.
EXT2, a diferencia de FAT, automaticamente asigna los lugares a los nuevos archivos en forma tal que no se fragmenten. También tiene soporte para corrección de errores y almacena información de cuándo fue la última vez que se usó la partición y que se verificó.

Tiene también un porcentaje de disco usado para almacenar propiedades de los archivos, como el propietario y los permisos.

Un archivo cualquiera, tiene tres tipos de permisos:
-los del usuario propietario
-los del grupo propietario
-los del resto

Sobre un archivo, podemos definir si el propietario puede ejecutarlo, podemos definir que el grupo propietario pueda leerlo y no escribirlo; y que los demás no puedan hacer nada.

Como contra a todas estas ventajas, tenemos que EXT2 ocupa mucho espacio en memoria para trabajar y puede tornarse lento.

Más información sobre EXT2 puede obtenerse en http://e2fsprogs.sourceforge.net/ext2.html.




¿Por qué EXT2 es medio malo, pero no tanto?
Porque dio pie a que surja EXT3.

EXT3 tiene una gran ventaja respecto a EXT2, y es el Journal.

El Journal es un espacio en el disco que almacena cada modificación realizada en el sistema de archivos, y funciona de la siguiente manera:

1-Una aplicación quiere escribir en el disco, y envía esa órden.
2-El sistema de archivos recibe esa modificación, y en vez de realizarla, la almacena en un Journal.
3-Comprueba que en el journal figure todo el cambio a realizarse y que conste toda la información necesaria para deshacer ese cambio. Caso contrario, cancela la operación.
4-Realiza la modificación en el sistema de archivos.
5-Se borra el journal.

¿Ventajas? Muchas. Según la página de Red Hat "...el tiempo empleado para recuperar un sistema de archivos ext3 tras un cierre no limpio del sistema no depende del tamaño del sistema de archivos ni del número de archivos, sino del tamaño del journal (diario), utilizado para mantener la consistencia en el sistema. Por defecto, la recuperación del tamaño del "journal" tarda alrededor de un segundo, según la velocidad del hardware." Link.

Microsoft comenzó a utilizar journaling en su sistema de archivos NTFS con la aparición de Windows NT a mediados de 1995, mas o menos. Y no sé cuando surgió el EXT3.

Sin embargo, versiones de DOS 6.22, o Windows 9X no son capaces de leer -mucho menos escribir- sobre NTFS; y las versiones de Windows basadas en NT -que fueron las que usaron NTFS, como Windows NT, 2000, XP- no pudieron leer FAT32 hasta Windows 2000.
A diferencia de esto, una de las ideas de EXT2 y EXT3 es mantener la compatibilidad. El sistema de archivos EXT2 puede ser leido -y escrito- sin complicaciones usando un driver EXT3; y viceversa: aunque suene ilógico, EXT3 puede ser leído y escrito por un driver EXT2.


EXT2 y EXT3, a diferencia de FAT, tienen un altísimo valor de cantidad máxima de unidades mínimas de asignación; y urgente aclaramos el trabalenguas:

FAT divide el disco en 2 a la 32 celdas (en caso de FAT32; si es FAT16 lo divide en 2 a la 16 celdas) como máximo; y eso es lo mínimo que puede ocupar un archivo. Quiere decir que si tenemos un disco de tal tamaño, vamos a tener tantas unidades de asignación como sea posible -FAT intenta siempre tener la mayor cantidad. Si esa unidad de asignación tiene un tamaño de 4Kb, y quisiesemos guardar un archivo de 1Kb; vamos a ocupar una celda. O sea, 4Kb. Desperdiciamos 3Kb; como puede estar haciendo ahora mismo tu autoexec.bat si es que corrés 98, por ejemplo.
EXT tiene bloques de -máximo- 4Kb -los máximos de fat son de 64Kb, It means a lot of wasted space.


Pero a pesar de la gran ventaja que tiene EXT3, tiene una gran desventaja -igual al sistema que le dio origen- y es la lentitud con que funciona.
Para eso, la gente de Linux -y no tan Linux tambien- se sentó a pensar y descubrió que había una salida mejor:


ReiserFS, que no fue diseñado por la gente de Linux, pero si por una empresa que dijo -tomá y fijate que talco- y lo cedió. ReiserFS -sistema de archivos que uso actualmente en /- es, en archivos de tamaño menor a 4Kb, entre 10 y 15 veces mas rápido que EXT3; e incluye también la ventaja del Journal. De hecho, EXT3 salió mucho despues que ReiserFS -inventado por un muchacho cuya madre le puso Hans y cuyo padre apellidose Reiser- y este último fue el primer sistema de archivos soportado por el Kernel -Núcleo, como dirian por Galicia, junto a cortafuegos, ordenador y demases- en forma directa. La página de ReiserFS puede verse en www.namesys.com.


Microsoft, que en su momento ni siquiera brindó soporte a sus propios sistemas de archivo -NT no leía FAT, 9X no leen NTFS- tampoco dió soporte a estos sistemas de archivos. Sin embargo, la gente no-Microsoft -sin tener la información sobre cómo funcionan FAT y NTFS- intentó poder trabajar con estos sistemas de archivos. Actualmente, todas las distribuciones de Linux pueden leer y escribir en FAT -12, 16 y 32- en forma nativa, mientras que sobre NTFS solo puede leerse -y escribir, pero en forma experimental. Esta gente tambien se tomó la molestia de hacer la inversa: programas que corran bajo Windows y que permitan la lectura y escritura en particiones EXT o ReiserFS; aunque no funcionan del todo bien.


En conclusión, para un sistema de escritorio, conviene ReiserFS; así como para servidores que requieran leer archivos chicos, como la caché de los proxies, los servers POP, etc.