Siguiente Anterior Contenido


7. El sistema de archivos

En esta sección usaré la expresión "sistema de archivos" de dos formas diferentes. Están los sistemas de archivos de las particiones del disco y otros dispositivos y está el sistema de archivos tal y como te lo presenta un equipo ejecutando Linux. En Linux "montas" un sistema de archivos de disco en el sistema de archivos del equipo.

En la sección anterior mencioné que los scripts de init comprueban y montan los sitemas de archivos. Los comandos para hacerlo son fsck y mount respectivamente.

Un disco duro no es más que un gran espacio sobre el que puedes escribir unos y ceros. Un sistema de archivos impone cierta estructura en ello, y hace que parezca que hay archivos dentro de directorios, dentro de directorios... Cada archivo se representa por un inode, que dice a quién pertenece el archivo, cuándo se creó y dónde encontrar su contenido. Los directorios también se representan por medio de inodes, pero estos dicen dónde encontrar los inodes de los archivos que están en el directorio. Si el sistema quiere leer /home/greg/bigboobs.jpeg primero busca el inode del directorio raíz / en el "superbloque", luego busca el inode del directorio home en el contenido de /, luego busca el inode del directorio greg en el contenido de /home, luego el inode de bigboobs.jpeg que le dirá qué bloques del disco leer.

Si añadimos unos datos al final de un archivo, puede ocurrir que los datos se escriban antes de que el inode se actualice para decir qué nuevos bloques pertenecen al archivo, o viceversa. Si se interrumpe la corriente en este momento, el sistema de archivos estrará roto. Este tipo de cosas es el que fsck intenta detectar y reparar.

El comando mount toma un sistema de archivos en un dipositivo y lo añade a la jerarquía que ves cuando usas tu equipo. Normalmente, el núcleo monta su sistema de archivos raíz como sólo de lectura. El comando mount se usa para montarlo de nuevo como de lectura y escritura una vez que fsck ha comprobado que está bien.

Linux soporta otros tipos de sistemas de archivos: msdos, vfat, minix y más. Los detalles del tipo de sistema de archivos específico quedan ocultos por el sistema de archivos virtual (VFS). No voy a entrar en detalles. Hay una explicación de ello en "The Linux Kernel" (ver la sección El núcleo de Linux para encontrar un url).

En /proc se monta un tipo de sistema de archivos totalment diferente. En realidad es una representación de lo que hay en el núcleo. Allí hay un directorio para cada proceso que se ejecuta en el sistema, con el número de proceso como nombre del directorio. Hay también archivos como interrupts y meminfo que te dicen cómo se usa el hardware. Puedes aprender mucho explorando /proc.

7.1 Configuración

El comando mke2fs que crea sistemas de archivos ext2 acepta parámetros. Éstos controlan el tamaño de los bloques, el número de inodes y cosas así. Lee la página man de mke2fs para saber cómo.

El archivo /etc/fstab controla qué se monta dónde en tu sistema de archivos. También tiene una página man.

7.2 Ejercicios

Haz un sistema de de archivos muy pequeño y explóralo con un visor hexadecimal. Identifica los inodes, superbloques y contenido de archivos.

Creo que hay herramientas que te dan una visión gráfica de un sistema de archivos. Encuentra una, pruébala y ¡envíame por correo la dirección y un comentario del programa!

Investiga el código del sistema de archivos ext2 del núcleo.

7.3 Más Información


Siguiente Anterior Contenido