Capítulo 4. Visión General del Árbol de Directorios

Tabla de contenidos

Información preliminar
El sistema de archivos raíz
El directorio /etc
El directorio /dev
El sistema de archivos /usr
El sistema de archivos /var
El sistema de archivos /proc

Dos días mas tarde, estaba Pooh sentado en su rama, balanceando sus patas, y allí junto a él había cuatro ollas de miel”(A.A. Milne)

En este capítulo se describen las partes importantes de un árbol de directorios GNU/Linux estándar, basado en el Estándar de la Jerarquía del Sistema de Archivos de Linux (Filesystem Hierarchy Standard, FHS). Además, se explica en líneas generales la forma normal de dividir el árbol de directorios en sistemas de archivos separados con diferentes propósitos y se enuncian los motivos para esta particular división. También se describirán otras formas alternativas de realizarla.

Información preliminar

Este capítulo está basado en el Estándar de la Jerarquía del Sistema de Archivos de Linux (FHS) versión 2.1, el cual intenta establecer un estándar para la organización del árbol de directorios en un sistema GNU/Linux. Tal estándar tiene la ventaja de facilitar el trabajo de escribir o portar software a este sistema operativo y administrar máquinas bajo el mismo, puesto que todas las cosas se encontrarán en lugares estandarizados. No existe autoridad que obligue a nadie a cumplir con el estándar, pero este tiene el apoyo de muchas distribuciones GNU/Linux. No es una buena idea romper con el FHS sin que existan justificaciones indiscutibles. El FHS pretende seguir la tradición UNIX y las tendencias actuales, haciendo así que los sistemas GNU/Linux les sean familiares a quienes tengan experiencia con otros sistemas Unix, y viceversa.

Este capítulo no es tan detallado como el FHS. Un administrador de sistemas debe leer el FHS completo para entenderlo totalmente.

En este capítulo no se explican todos los archivos en detalle. La intención no es describir cada uno de ellos, sino dar una visión general del sistema desde el punto de vista del sistema de archivos. Se puede encontrar información adicional sobre cada archivo en otras partes de este manual o en las páginas de manual de GNU/Linux.

El árbol de directorios completo está pensado para poder ser dividido en partes más pequeñas, que pueden estar en su propio disco o partición y acomodarse así a los límites del tamaño del disco, así como para facilitar la realización de copias de seguridad y otras tareas de la administración de sistemas. Las partes principales son los sistemas de archivos raíz (/) , /usr, /var , y /home. Cada parte tiene un propósito diferente. El árbol de directorios se ha diseñado para funcionar bien en una red de máquinas GNU/Linux, las cuales pueden compartir algunas partes del sistema de archivos sobre un dispositivo de solo-lectura (CD-ROM por ejemplo), o sobre la red a través de NFS.

Figura 4.1. Partes de un árbol de directorios Unix. Las líneas discontinuas indican los límites de la partición.

Partes de un árbol de directorios Unix. Las líneas discontinuas indican los límites de la partición.

Los roles de las diferentes secciones del árbol de directorios se describen a continuación.

  • El sistema de archivos raíz es específico para cada máquina (generalmente se encuentra almacenado en el disco local, aunque puede estar también en un disco RAM o en una unidad de red) y contiene los archivos que son necesarios para arrancar el sistema y dejarlo en un estado en el que se puedan montar los demás sistemas de archivos. El contenido del sistema de archivos raíz es por lo tanto suficiente para el nivel de ejecución de usuario individual. También contiene herramientas para reparar un sistema dañado y para recuperar archivos perdidos desde las copias de seguridad.

  • El sistema de archivos /usr contiene todos los comandos, librerías, páginas de manual, y otros archivos que no serán modificados durante el funcionamiento normal del sistema. No deben existir archivos bajo /usr que sean específicos para una máquina en particular, ni que deban ser modificados durante la utilización normal del sistema. Esto permite que los archivos sean compartidos a través de la red, lo cual puede ser efectivo en cuanto a costes, puesto que se obtiene un ahorro de espacio en disco (/usr puede ocupar fácilmente miles de megabytes) y puede facilitar la administración, ya que sólo el /usr maestro necesita ser modificado cuando actualizamos una aplicación, y no en cada máquina por separado. Aún cuando el sistema de archivos resida en el disco local, este puede ser montado en modo solo lectura, para eliminar el riesgo de que se corrompa durante un fallo.

  • El sistema de archivos /var contiene archivos que sí cambian durante el funcionamiento normal del sistema, tales como directorios spool ( para correo, noticias (news), impresoras, etc), archivos de log, páginas de manual formateadas y archivos temporales. Tradicionalmente, todo en /var es algo que debería estar en /usr, pero que haría imposible montar dicho sistema de archivos como solo lectura.

  • El sistema de archivos /home contiene los directorios específicos de los usuarios, P.Ej., todos los datos reales del sistema. Separar los directorios home a su propio árbol de directorios o sistema de archivos hace más fácil la tarea de realizar copias de seguridad; los demás sistemas de archivos no necesitan que se les haga copias de seguridad, o al menos no tan frecuentemente, puesto que rara vez cambian. Un gran directorio /home puede ser dividido en varios sistemas de archivos, lo cual requiere agregar niveles de nombres extra, como por ejemplo, /home/estudiantes y /home/staff.

  • Si bien las diferentes partes del árbol de directorios se han llamado hasta ahora sistemas de archivos, no se requiere necesariamente que se encuentren en particiones separadas. Se pueden mantener fácilmente en una única partición si se trata de un sistema pequeño de un solo usuario, y este sólo desea mantener las cosas de manera simple. El árbol de directorios puede también ser dividido en diferentes particiones dependiendo del tamaño de los discos, y de como el espacio se destine a los distintos propósitos. Lo importante, no obstante, es que todos los nombres estándar funcionen; Aún cuando, digamos,/var y /usr se encuentren de hecho en la misma partición, los nombres /usr/lib/libc.a y /var/log/messages deben funcionar. Incluso si, por ejemplo, moviéramos los archivos que se encuentren en /var dentro de /usr/var, y hagamos a /var un enlace simbólico a /usr/var.

La estructura del sistema de archivos en UNIX agrupa a los archivos de acuerdo a su propósito. Por lo tanto, todos los comandos están en un mismo lugar, todos los archivos de datos en otro, la documentación en un tercer lugar, etc. Otra alternativa podría ser la de agrupar los archivos de acuerdo al programa al que pertenezcan, P.Ej., todos los archivos de Emacs podrían colocarse en un mismo directorio, todos los de Tex en otro, etc. El problema con esta última aproximación es que dificulta compartir archivos (el directorio del programa frecuentemente contiene archivos no cambiantes y compartibles, y cambiantes y no compartibles), y algunas veces incluso encontrar archivos (por ejemplo, las páginas de manual se encuentran ubicadas en una gran cantidad de lugares, y hacer que los programas que leen tales páginas de manual las encuentren sería una pesadilla de mantenimiento).