Organización de ficheros en GNU/Linux : el FHS

Hace mucho tiempo, cuando empece ha utilizar sistemas GNU/Linux me quede sorprendido con su extraordinario sistema de directorios, denominado FHS (por sus siglas en ingles).
Un estándar que nos dice donde, y por qué deben estar los distintos tipos de datos en un sistema de ficheros en un sistema UNIX.

Echemos un vistazo a la organización en el caso de GNU/Linux.

Dentro de cada sistema UNIX hay una organización diferente del sistema de ficheros, aunque similar. Entonces también se decidió que los sistemas GNU/Linux también debían tener una organización de ficheros oficial, y documentada, de hay surgió el estándar FHS.

¿que es FHS?
Las siglas significa Filesystem Hierarchy Standard, «Jerarquía Estándar de Sistema de Ficheros». Esto nos dice donde, y por qué deben estar los distintos tipos de datos en el sistema de ficheros.

Los sistemas UNIX establecieron una estructura estándar de directorios, con pequeñas variaciones entre ellos. Los directorios /etc, /usr, /home y /var (entre otros) se pueden encontrar en cualquier sistema que desee acercarse a UNIX.
Llegada la madurez del sistema, y con ello las distintas distribuciones de GNU/Linux se vio la necesidad de crear una referencia oficial, un estándar por el que las distribuciones y los desarrolladores se pudieran guiar a la hora de implementar programas. La primera versión de este documento apareció en 1994, y se llamaba FSSTND.
En 1999 se hizo una revisión del documento, para que la referencia no solo valieses para GNU/Linux , sino para cualquier sistema UNIX, y se creo el FHS

Fundamentos del FHS.

FHS divide los directorios del sistema en dos ejes, apto o no apto para ser compartido, y variable o estático. Los directorios aptos para ser compartidos los que no contienen información especifica al equipo donde están o sus programas; los no aptos son los que contienen este tipo de información. Los directorios estáticos son aquellos que contienen información que no cambian sin la intervención directa del administrador: programas, documentación, etc….; los variables son aquellos que cambian, como bases de datos o sistemas de correo.

Ahora ya se puede decidir tomar decisiones a la hora de administrar las partes del sistema de ficheros. Los directorios estaticos, y aptos para ser compartidos serán montados en modo de solo lectura, y exportados a otros equipos Los directorios estáticos pero no aptos para la exportación serán montados localmente, y quizás también en modo solo lectura.
Los directorios variables, y aptos para la exportación serán exportados con permisos de lectura, y escritura.

El concepto compartir directorios en red es algo esencial en el FHS, que entiende que ello ocurrirá en muchas ocasiones.

Un ejemplo del primer caso so /usr y /opt que contienen ficheros que solo cambiaran cuando el administrador añada,o quite programas.El segundo caso tendríamos /etc o /boot, /etc seria mas proclive a los cambios por contener las configuraciones de los programas, pero /boot es posible que cambie muy de vez en cuando. Y como tercer caso tendríamos /home o /var/mail, que cambiaran regularmente según la actividad de los usuarios. Y para el cuarto caso estarían /var/run o /var/lock, que los cambiaran los programas ejecutándose, pero que no conciernen al resto de equipos de la red.

Estructura propuesta por el FHS

El FHS divide el árbol de directorios en varias partes.

Directorio Raíz(«/»)

El directorio raíz(«/») es del que «cuelgan» el resto de directorios. Este es el directorio mas importante del sistema. En el debe de existir lo mínimo para que el sistema pueda arrancar, aunque sea de forma que solo ofrezca unas pocas funcionalidades, las mínimas para poder rescatar al resto del sistema si hiciera falta. Osea en este directorio se va encontrar los programas y bibliotecas imprescindibles para el arranque, diagnostico y recuperación del sistema. Esto incluye kernel a usar, que habitualmente se coloca en este directorio o dentro del mas especifico /boot, pero también la biblioteca C, la libc(aquella que contiene las funciones básicas de la mayor parte de los programas del sistema), y las utilidades básicas como: cp, rm, mv, etc…

Uno de los requisitos de este sistema basico es que sea lo mas pequeño posible; idealmente, el sistema deberia poder ser iniciado o recuperado a partir de unos pocos programas. Minimizar el numero de elementos indispensables del sistema, minimiza también la posibilidad de que uno se estropee, y por tanto nos veamos en una situación irrecuperable. En el FHS también se citan otras razones importantes:

  • Es montado a partir de sistemas de ficheros que pueden ser muy pequeños(un disquete, por ejemplo)
  • contiene información muy especifica del equipo donde esta instalado, y que por su naturaleza no va ha ser compartido con otros equipos que pueda haber en la red.
  • Los errores de corrupción de datos son menos frecuentes en sistemas de ficheros pequeños.

Otra razón que se incluye en el FHS esta destinada sobre todo a los desarrolladores de programas y distribuciones: nunca sabemos si la persona que va usar nuestro programa o nuestra distribución va a tener poco o mucho espacio en el dispositivo destinado al directorio raíz. Por lo tanto, lo mas sabio es suponer lo peor, que va a haber poco espacio disponible, e intentar ajustar el directorio raíz para que ocupe lo mínimo posible.
Una de las recomendaciones que se hacen en el FHS es no añadir, ni quitar ninguno de los directorios básicos que se encuentran en el directorio raíz. La estructura del directorio raíz es muy rígida por que muchos programas dependen de ella, y alterarla podría hacer que fallaran de forma inesperada. Los siguientes directorios son los que deben aparecer en el directorio raíz:

  • /bin: binarios de los comandos esenciales (cp, rm, ls, etc…)

Deja un comentario

Cerrar menú