Sistema de archivos

Sistemas de archivos
Información sobre la plantilla
Sistemas de archivos1.jpg
Ejemplo de estructuracion de un sistema de archivos

Los sistemas de archivos son los métodos y estructuras de datos que un Sistema operativo utiliza para seguir la pista de los archivos de un disco o partición; es decir, es la manera en la que se organizan los archivos en el disco. El término también es utilizado para referirse a una partición o disco que se está utilizando para almacenamiento, o el tipo del sistema de archivos que utiliza. Así uno puede decir “tengo dos sistemas de archivo” refiriéndose a que tiene dos particiones en las que almacenar archivos, o que uno utiliza el sistema de “archivos extendido”, refiriéndose al tipo del sistema de archivos.

Diferencia entre un disco o partición y el sistema de archivos

La diferencia entre un disco o partición y el sistema de archivos que contiene es importante. Unos pocos programas (incluyendo, razonablemente, aquellos que crean sistemas de archivos) trabajan directamente en los sectores crudos del disco o partición; si hay un archivo de sistema existente allí será destruido o corrompido severamente. La mayoría de programas trabajan sobre un sistema de archivos, y por lo tanto no utilizarán una partición que no contenga uno (o que contenga uno del tipo equivocado).

Antes de que una partición o disco sea utilizada como un sistema de archivos, necesita ser iniciada, y las estructura de datos necesitan escribirse al disco. Este proceso se denomina construir un sistema de archivos.

La mayoría de los sistemas de archivos UNIX tienen una estructura general parecida, aunque los detalles exactos pueden variar un poco. Los conceptos centrales son superbloque, nodo-i, bloque de datos, bloque de directorio, y bloque de indirección. El superbloque tiene información del sistema de archivos en conjunto, como su tamaño (la información precisa aquí depende del sistema de archivos). Un nodo-i tiene toda la información de un archivo, salvo su nombre. El nombre se almacena en el directorio, junto con el número de nodo-i. Una entrada de directorio consiste en un nombre de archivo y el número de nodo-i que representa al archivo. El nodo-i contiene los números de varios bloques de datos, que se utilizan para almacenar los datos en el archivo. Sólo hay espacio para unos pocos números de bloques de datos en el nodo-i; en cualquier caso, si se necesitan más, más espacio para punteros a los bloques de datos son colocados de forma dinámica. Estos bloques colocados dinámicamente son bloques indirectos; el nombre indica que para encontrar el bloque de datos, primero hay que encontrar su número en un bloque indirecto.

Los sistemas de archivos UNIX generalmente nos permiten crear un agujero en un archivo (esto se realiza con la llamada al sistema lseek(); compruebe su página de manual), lo que significa que el sistema de archivos simplemente intenta que en un lugar determinado en el archivo haya justamente cero Bytes, pero no existan sectores del disco reservados para ese lugar en el archivo (esto significa que el archivo utilizará un poco menos de espacio en disco). Esto ocurre frecuentemente en especial para pequeños binarios, librerías compartidas de Linux, algunas bases de datos, y algunos pocos casos especiales. (los agujeros se implementan almacenando un valor especial en la dirección del bloque de datos en el bloque indirecto o en el nodo-i. Esta dirección especial indica que ningún bloque de datos está localizado para esa parte del archivo, y por lo tanto, existe un agujero en el archivo).

Sistemas de archivos soportados por Linux

Linux soporta una gran cantidad de tipos diferentes de sistemas de archivos. Para nuestros propósitos los más importantes son:

Minix

El más antiguo y supuestamente el más fiable, pero muy limitado en características (algunas marcas de tiempo se pierden, 30 caracteres de longitud máxima para los nombres de los archivos) y restringido en capacidad (como mucho 64 MB de tamaño por sistema de archivos).

Xia

Una versión modificada del sistema de archivos minix que eleva los límites de nombres de archivos y tamaño del sistema de archivos, pero por otro lado no introduce características nuevas. No es muy popular, pero se ha verificado que funciona muy bien.

Ext3

El sistema de archivos ext3 posee todas las propiedades del sistema de archivos ext2. La diferencia es que se ha añadido una bitácora (journaling). Esto mejora el rendimiento y el tiempo de recuperación en el caso de una caída del sistema. Se ha vuelto más popular que el ext2.

Ext2

El más sistema de archivos nativo Linux que posee la mayor cantidad de características. Está diseñado para ser compatible con diseños futuros, así que las nuevas versiones del código del sistema de archivos no necesitará rehacer los sistemas de archivos existentes.

Ext

Una versión antigua de ext2 que no es compatible en el futuro. Casi nunca se utiliza en instalaciones nuevas, y la mayoría de la gente que lo utilizaba han migrado sus sistemas de archivos al tipo ext2.

Reiserfs

Un sistema de archivos más robusto. Se utiliza una bitácora que provoca que la pérdida de datos sea menos frecuente. La bitácora es un mecanismo que lleva un registro por cada transacción que se va a realizar, o que ha sido realizada. Esto permite al sistema de archivos reconstruirse por sí sólo fácilmente tras un daño ocasionado, por ejemplo, por cierres del sistema inadecuados.

Adicionalmente, existe soporte para sistemas de archivos adicionales ajenos, para facilitar el intercambio de archivos con otros sistemas operativos. Estos sistemas de archivos ajenos funcionan exactamente como los propios, excepto que pueden carecer de características usuales UNIX , o tienen curiosas limitaciones, u otros inconvenientes.

Msdos

Compatibilidad con el sistema de archivos FAT de MS-DOS (y OS/2 y Windows NT).

Umsdos

Extiende el dispositivo de sistema de archivos msdos en Linux para obtener nombres de archivo largos, propietarios, permisos, enlaces, y archivos de dispositivo. Esto permite que un sistema de archivos msdos normal pueda utilizarse como si fuera de Linux, eliminando por tanto la necesidad de una partición independiente para Linux.

Vfat

Esta es una extensión del sistema de archivos FAT conocida como FAT32. Soporta tamaños de discos mayores que FAT. La mayoría de discos con MS Windows son vfat.

Iso9660

El sistema de archivos estándar del CD-ROM; la extensión popular Rock Ridge del estándar del CD-ROM que permite nombres de archivo más largos se soporta de forma automática.

NFS

Un sistema de archivos de red que permite compartir un sistema de archivos entre varios ordenadores para permitir fácil acceso a los archivos de todos ellos.

Smbfs

Un sistema de archivos que permite compartir un sistema de archivos con un ordenador MS Windows. Es compatible con los protocolos para compartir archivos de Windows.

Algunos sistemas de archivo de Windows

FAT

Los sistemas FAT (File Allocation Table - Tabla de Asignación de Archivos) son sencillos ya que lo único que hacen es guardar en un sector de arranque una tabla que le indica al sistema operativo donde están los archivos. FAT16 fue la primera versión para sistemas Windows pero se volvió obsoleto por no poder manejar mas de 65.000 archivos y un disco de 4GB de capacidad. FAT32, la siguiente versión, resolvió esto (puede manejar mas de 200 millones de archivos y discos de 2000GB), pero tiene como problemas una fragmentación importante de archivos, haciendo mas lenta la búsqueda en el disco, y que el tamaño máximo de archivo es de 4GB, un limitante bastante importante a la hora de la edición de video o backups. Otros inconvenientes de FAT son la falta de permisos de seguridad y ser muy propenso a errores. Este formato no desapareció ya que es muy útil en dispositivos extraibles como Diskettes, Pen drives, etc. por ser liviano y compatible con casi cualquier Sistema operativo.


NTFS

Con la salida de Windows XP se popularizó para el usuario hogareño el sistema de archivos NTFS (New Tech File System, que ya existía para Windows NT). Este formato, solucionó algunas cuestiones de seguridad y permite menos fragmentación que el anterior FAT32. Por otra parte sus límites son 16 TeraBytes de tamaño de archivo (1TB=1024GB), puede manejar algo mas de 4 mil millones de archivos y puede controlar discos de hasta 256TB. Los problemas de este sistema: no es recomendable para discos de menos de 400MB, no es compatible con sistemas operativos anteriores como Windows 98 y por último, no puede ser utilizado en medios extraibles de poca capacidad.

WinFS

Por último hay que destacar que Microsoft está desarrollando desde hace varios años un nuevo sistema de archivos llamado WinFS, que en un principio iba a estar integrado con Windows Vista. Sin embargo el proyecto parece estar parado, así que no hay novedades al respecto (el blog oficial de los desarrolladores de WinFS está abandonado desde 2006)


Fuente