Estándar de Jerarquía de Sistema de Archivos

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org/

Licencia de este documento: Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2022 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

El estándar de jerarquía de archivos (FHS o Filesystem Hierarchy Standard) define los principales directorios y sus contenidos en GNU/Linux y otros sistemas operativos similares a Unix.

En agosto de 1993 inició un proceso para desarrollar un estándar de sistema de archivos jerárquico, como un esfuerzo para reorganizar la estructuras de archivos y directorios de GNU/Linux. El 14 de Febrero de 1994 se publicó el FSSTND (Filesystem Standard), un estándar de jerarquía de archivos específico para GNU/Linux. Revisiones de éste se publicaron el 9 de Octubre de 1994 y el 28 de Marzo de 1995.

A principios de 1996, con la ayuda de miembros de la comunidad de desarrolladores de BSD, se fijó como objetivo el desarrollar una versión de FSSTND más detallada y dirigida no solo hacia Linux sino también hacia otros sistemas operativos similares a Unix. Como uno de los resultados el estándar cambió de nombre a FHS o Filesystem Hierarchy Standard.

El FHS es mantenido por Free Standards Group, una organización sin fines de lucro constituida por compañías que manufacturan sustento físico (Hardware) y equipamiento lógico (Software) como Hewlett Packard, Dell, IBM y Red Hat. La mayoría de las distribuciones de Linux, inclusive las que forman parte de Free Software Standards, utilizan este estándar sin aplicarlo de manera estricta.

La versión 2.3 del FHS se publicó el 29 de enero de 2004 y es el estándar utilizado por CentOS 6, Red Hat™ Enterprise Linux 6 y SUSE™ Linux Enterprise 11 y versiones anteriores de éstos.

La versión 3.0 del FHS se publico el 5 de junio de 2015 y es el estándar utilizado por las más recientes versiones de Fedora™ y openSUSE™, CentOS 7, Red Hat™ Enterprise Linux 7 y SUSE™ Linux Enterprise 12.

Estructura de directorios.

Todos los archivos y directorios aparecen debajo del directorio raíz «/», aún si están almacenados en dispositivos físicamente diferentes.

Directorio.

Descripción

/bin

Programas binarios esenciales (como son cp, mv, ls, rm, mkdir, etc.),

/boot

Archivos utilizados durante el inicio del sistema (núcleo y discos RAM),

/dev

Dispositivos esenciales,

/etc

Archivos de configuración utilizados en todo el sistema y que son específicos del anfitrión.

/etc/opt

Archivos de configuración utilizados por programas alojados dentro de /opt.

/etc/X11 (opcional)

Archivos de configuración para el sistema X Window.

/etc/sgml (opcional)

Archivos de configuración para SGML.

/etc/xml (opcional)

Archivos de configuración para XML.

 

Directorio.

Descripción

/home (opcional)

Directorios de inicio de los usuarios locales.

/lib y /lib64

Bibliotecas compartidas esenciales para los binarios de /bin, /sbin y el núcleo del sistema. /lib64 corresponde al directorio utilizado por sistemas de 64-bit.

/mnt

Sistemas de archivos montados temporalmente.

/media

Puntos de montaje para dispositivos de medios, como son las unidades lectoras de discos compactos.

/opt

Paquetes de aplicaciones de terceros.

/proc

Sistema de archivos virtual que documenta sucesos y estados del núcleo. Contiene, principalmente, archivos de texto.

/root (opcional)

Directorio de inicio del usuario root (super-usuario).

/run

En la versión 3.0 del FHS corresponde a datos variables de ejecución. Almacena información acerca de el sistema en ejecución desde el último inicio, usuarios ingresados en el sistema y archivos de identificación de proceso (PID) de los servicios en ejecución. La funcionalidad de éste directorio en la versión 2.3 del FHS era la correspondiente a /var/run.

/sbin

Binarios de administración de sistema.

/srv

Datos específicos de sitio servidos por el sistema. Sólo openSUSE™ y SUSE™ Linux Enterprise siguen el estándar utilizando éste para alojar los directorios raíz de servidores HTTP y FTP —es decir /srv/www y /srv/ftp, respectivamente.

/tmp

Archivos temporales

 

Directorio.

Descripción

/usr

Jerarquía secundaria para datos compartidos de solo lectura (Unix system resources). Este directorio debe poder ser compartido para múltiples anfitriones y debe evitarse que contenga datos específicos del anfitrión que los comparte cuando se hace a través de NFS.

/usr/bin

Programas binarios.

/usr/include

Archivos de inclusión estándar (cabeceras de desarrollo).

/usr/lib y /usr/lib64

Bibliotecas compartidas. /usr/lib64 corresponde al directorio utilizado por sistemas de 64-bit.

/usr/share

Datos compartidos, independientes de la arquitectura del sistema. Consiste en imágenes, archivos de texto, archivos de audio, etc.

/usr/src (opcional)

Códigos fuente.

/usr/X11R6 (opcional)

Sistema X Window, versión 11, lanzamiento 6. Prácticamente ninguna distribución de Linux lo utiliza en la actualidad.

/usr/local

Jerarquía terciaria para datos compartidos de solo-lectura específicos del anfitrión. Debajo de esta jerarquía se instala todo lo que se compile desde código fuente.

 

Directorio.

Descripción

/var

Archivos variables, como son registros, bases de datos, directorio raíz de servidores HTTP y FTP, colas de correo, archivos temporales, etc.

/var/account (opcional)

Procesa registros de cuentas de usuarios.

/var/cache

Cache da datos de aplicaciones.

/var/crash (opcional)

Almacén de información referente a fallas del sistema.

/var/games (opcional)

Datos variables de aplicaciones para juegos (mejores marcas y/o tiempos).

/var/lib

Información de estado variable. Algunos servidores como MySQL y PostgreSQL, almacenan sus bases de datos en directorios subordinados de éste.

/var/lock

Archivos de bloqueo de los servicios en ejecución.

/var/log

Archivos y directorios, utilizados para almacenar los registros de eventos del sistema.

/var/mail (opcional)

Directorio para almacenar los buzones de correo de usuarios. CentOS, Fedora™ y Red Hat™ Enterprise Linux utilizan —por motivos de compatibilidad de legado— la antigua localización —obsoleta— que corresponde a /var/spool/mail. En estos sistemas /var/mail es un enlace simbólico de /var/spool/mail.

/var/opt

Datos variables de /opt/.

/var/run

En la versión 2.3 del FHS es para datos variables de ejecución. Almacena información acerca de el sistema en ejecución desde el último inicio, usuarios ingresados en el sistema y archivos de identificación de proceso (PID) de los servicios en ejecución. En la versión 3.0 del FHS la funcionalidad de éste directorio se ha movido hacia /run y en éstos —para fines de compatibilidad— /var/run es un enlace simbólico que apunta hacia /run.

/var/spool

Colas de procesamiento y carretes de datos de aplicaciones.

/var/tmp

Archivos temporales que prevalecen después de un reinicio.

Más detalles acerca del FHS en http://www.pathname.com/fhs/.

Particiones recomendadas para instalar CentOS, Fedora™, Red Hat™ Enterprise Linux, openSUSE™ y SUSE™ Linux Enterprise.

Si las condiciones limitan el número de particiones a utilizar, como mínimo se requieren dos particiones: / y memoria de intercambio.

El diseño predeterminado del instalador de openSUSE™ y SUSE™ Linux Enterprise utiliza 3 particiones:

/

Asignar todo el espacio disponible de la unidad de almacenamiento.

/home

En estaciones de trabajo, a esta partición se asigna al menos la mitad del espacio disponible para almacenamiento.

Memoria de intercambio (Swap)

Si se tiene menos de 1 GiB de RAM, se debe asignar el doble del tamaño del RAM físico; si se tiene más de 1 GiB RAM, se debe asignar una cantidad igual al tamaño del RAM físico, más 2 GiB. Ésta será siempre la última partición del espacio disponible para almacenamiento y jamás se le asigna punto de montaje.

El diseño predeterminado del instalador de CentOS, Fedora™ y Red Hat™ Enterprise Linux utiliza 4 particiones:

/boot

Requiere de 200 MiB a 512 MiB.

/

Si se utiliza el diseño de tres particiones, asignar el resto del espacio disponible en la unidad de almacenamiento. Si se van asignar particiones para los directorios mencionados adelante, se requieren de 3072 MiB a 5120 MiB.

/home

En estaciones de trabajo, a esta partición se asigna al menos la mitad del espacio disponible para almacenamiento.

Memoria de intercambio (Swap)

Si se tiene menos de 1 GiB de RAM, se debe asignar el doble del tamaño del RAM físico; si se tiene más de 1 GiB RAM, se debe asignar una cantidad igual al tamaño del RAM físico, más 2 GiB. Ésta será siempre la última partición del espacio disponible para almacenamiento y jamás se le asigna punto de montaje.

Lo siguientes directorios jamás deberán estar fuera de la partición que corresponda a /, es decir, jamás se deben asignar como particiones separadas:

En CentOS 7, Fedora™, Red Hat™ Enterprise Linux 7, openSUSE™ y SUSE™ Linux Enterprise 12, el directorio /usr se puede separar como partición independiente gracias a que el proceso de arranque se encarga de montarla cuando es necesario. Sin embargo es preferible que /usr forma parte de la misma partición que corresponda a /, pues el proceso de arranque —que es gestionado por SystemD— utiliza subdirectorios de éste durante el inicio del sistema.

En sistemas que utilizan SystemD hay además los siguientes cambios:

Otras particiones que se recomienda asignar, son:

/usr

Requiere al menos 3072 MiB en instalaciones básicas. Debe considerarse el equipamiento lógico se planee instalar a futuro. Para uso general se recomiendan al menos de 5120 MiB. Considere un tamaño óptimo de hasta 20480 MiB. Este directorio sólo puede asignarse como partición independiente en CentOS 6, Red Hat™ Enterprise Linux 6, SUSE™ Linux Enterprise 11 y versiones anteriores de éstos.

/tmp

Requiere al menos 350 MiB y puede asignarse la cantidad que sea necesaria para satisfacer las demandas de la carga de trabajo y aplicaciones. Si —por ejemplo— el sistema cuenta con un grabador de DVD, será necesario asignar a /tmp el espacio suficiente para almacenar una imagen de disco DVD, es decir al menos 4.2 GiB —asumiendo que es de una sola cara y de densidad simple. Algunas distribuciones de vanguardia utilizan un disco RAM —o RAM disk— para este directorio con la finalidad de mejorar el rendimiento del sistema.

/var

Requiere al menos 3072 MiB en estaciones de trabajo sin servicios. En servidores regularmente se le asigna al menos la mitad del espacio disponible para almacenamiento. Este directorio sólo puede asignarse como partición independiente en CentOS 6, Red Hat™ Enterprise Linux 6, SUSE™ Linux Enterprise 11 y versiones anteriores de éstos.

/usr/local

Requiere al menos 3072 MiB en instalaciones básicas. Debe considerarse el equipamiento lógico que se planee compilar desde código fuente, e instalar, a futuro. Al igual que /usr, para uso general se recomiendan al menos de 5120 MiB y —de ser posible— considere un tamaño óptimo de hasta 20480 MiB.

/opt

Requiere al menos 3072 MiB en instalaciones básicas. Debe considerarse el equipamiento lógico de terceros que se planee instalar a futuro. Al igual que /usr, para uso general se recomiendan al menos de 5120 MiB y —de ser posible— considere un tamaño óptimo de hasta 20480 MiB.

/var/lib

Si se asigna como partición independiente de /var, lo cual permitiría optimizar el registro por diario utilizando el modo journal para un mejor desempeño, requiere al menos 3072 MiB en instalaciones básicas. Deben considerarse las bases de datos o directorios de LDAP que se planeen hospedar a futuro.

/var/ftp o /srv/ftp

Corresponde al directorio raíz de los servidores FTP. CentOS, Fedora™ y Red Hat™ Enterprise Linux utilizan /var/ftp, mientras que openSUSE™ y SUSE™ Linux Enterprise utilizan /srv/ftp. Asignar como partición independiente cualquiera de éstos directorios permite optimizar el registro por diario —utilizando el modo writeback— para mejorar el desempeño e impide que ocurra una denegación de servicio en el sistema al llenarse la partición por permitir subidas de datos por usuarios anónimos. Requiere al menos 3072 MiB en instalaciones básicas. Deben considerarse los anfitriones virtuales, aplicaciones y contenido para ser servido a través del protocolo HTTP, que se planeen hospedar a futuro.

/var/www o /srv/www

Corresponde al directorio raíz de los servidores HTTP como Apache. CentOS, Fedora™ y Red Hat™ Enterprise Linux utilizan /var/www, mientras que openSUSE™ y SUSE™ Linux Enterprise utilizan /srv/www. Asignar como partición independiente cualquiera de éstos directorios permite optimizar el registro por diario —utilizando el modo writeback— para mejorar el desempeño. Requiere al menos 3072 MiB en instalaciones básicas. Deben considerarse los anfitriones virtuales, aplicaciones y contenido para ser servido a través del protocolo HTTP, que se planeen hospedar a futuro.

Bibliografía.