La estructura del sistema de archivos en Linux |
SOFTWARE - General | ||||||||||
divendres, 31 d'agost de 2007 13:10 | ||||||||||
There are no translations available. Descubre en este artículo la estructura del sistema de archivos en Linux.. La estructura del sistema de archivos en Linux1.- Introducción e historiaUn sistema Linux reside bajo un árbol jerárquico de directorios muy similar a la estructura del sistema de archivos de plataformas Unix. Originariamente, en los inicios de Linux, este árbol de directorios no seguía un estándar cien por cien, es decir, podíamos encontrar diferencias en él de una distribución a otra. Todo esto hizo pensar a cierta gente* que, posteriormente, desarrollarían el proyecto FHS (Filesystem Hierarchy Standard, o lo que es lo mismo: Estándar de Jerarquía de Sistema de Ficheros) en otoño de 1993.
2.- FHSFHS se define como un estándar que detalla los nombres, ubicaciones, contenidos y permisos de los archivos y directorios, es decir, un conjunto de reglas que especifican una distribución común de los directorios y archivos en sistemas Linux. Como se ha mencionado, se creo inicialmente para estandarizar la estructura del sistema de archivos para sistemas GNU/Linux y más tarde, en torno al año 1995, también para su aplicación en sistemas Unix. FHS no es más que un documento guía, es decir, cualquier fabricante de software independiente o cualquier persona que decida crear una nueva distribución GNU/Linux, podrá aplicarlo o no a la estructura del sistema de archivos, con la ventaja de que si lo integra en el sistema, el entorno de éste será mucho más compatible con la mayoría de las distribuciones. Es importante saber que el estándar FHS es en cierto modo flexible, es decir, existe cierta libertad en el momento de aplicar las normas. De ahí que existan en la actualidad leves diferencias entre distribuciones GNU/Linux. Objetivos principales de FHS
El estándar FHS está enfocado a
Además, FHS manifiesta algunas diferencias entre varios tipos de archivos que puede haber en el sistema:
Ficheros que son propios de un host determinado y, archivos que pueden compartirse entre diferentes host. Ejemplo:
Ficheros que no cambian sin la interacción de un administrador del sistema y, archivos que cambian sin la interacción de un administrador del sistema. Para comprender mejor estos dos tipos, imaginemos los ficheros log (archivos de bitácora) del sistema. Estos cambian sin la intervención del administrador; en consecuencia estos son del tipo variables. Los demás archivos son estáticos. No cambian su contenido ni tamaño a menos que lo autorice el administrador del sistema (o sea el propio quien lo modifique, por supuesto). o Archivos estáticos: /etc/password, /etc/shadow. o Archivos variables: /var/log/messages (log de mensajes generados por el kernel del sistema). 3.- Todo en Linux es un archivoCierto, todo en un sistema Linux es un archivo, tanto el Software como el Hardware. Desde el ratón, pasando por la impresora, el reproductor de DVD, el monitor, un directorio, un subdirectorio y un fichero de texto. De ahí vienen los conceptos de montar y desmontar por ejemplo un CDROM. El CDROM se monta como un subdirectorio en el sistema de archivos. En ese subdirectorio se ubicará el contenido del disco compacto cuando esté montado y, nada cuando esté desmontado. Para ver que tenemos montado en nuestra distribución GNU/Linux, podemos ejecutar el comando mount. Este concepto es muy importante para conocer como funciona Linux. En apartados posteriores, veremos donde ubica Linux los elementos Hardware del PC en el sistema de ficheros.
4.- Organización de sistema de archivos según FHS4.1.- El directorio raízTodo surge a partir del directorio raíz (/). El contenido de este directorio debe ser el adecuado para reiniciar, restaurar, recuperar y/o reparar el sistema, es decir, debe proporcionar métodos, herramientas y utilidades necesarias para cumplir estas especificaciones. Además, es deseable que se mantenga los más razonablemente pequeño como sea posible por cuestión de funcionamiento y de seguridad. Por último, este debe que ser el único directorio en el nivel superior del árbol jerárquico de archivos y, tiene que ser imposible moverse más allá del mismo. Es el último origen. Vemos, por ejemplo, un listado de su estructura: Contenido del directorio raíz o /bin En este directorio se ubica el código binario o compilado de los programas y comandos que pueden utilizar todos los usuarios del sistema. La denominación es clara, bin de BINARY (binario en castellano). No debe haber subdirectorios en /bin. Estos son, por ejemplo, algunos comandos contenidos en /bin. * La @ al lado del nombre de un fichero representa un enlace simbólico o /boot Este directorio contiene todo lo necesario para que funcione el proceso de arranque del sistema. /boot almacena los datos que se utilizan antes de que el kernel comience a ejecutar programas en modo usuario* . El núcleo del sistema operativo (normalmente se guarda en el disco duro como un fichero imagen llamado vmlinuz-versión _ núcleo) se debe situar en este directorio o, en el directorio raíz.
Vemos su contenido: o /dev Este directorio almacena las definiciones de todos los dispositivos. Como se ha mencionado, cada dispositivo tiene asociado un archivo especial. Por ejemplo, el contenido de la sexta partición del disco duro será /dev/hda5. El fichero asociado al ratón tipo PS/2 será /dev/psaux. Además, es importante saber que los dispositivos pueden ser de bloque o de carácter. Normalmente los dispositivos de bloque son los que almacenan datos y, los de carácter los que transfieren datos. En definitiva, la estructura de este directorio es algo complejo. Podríamos dedicar otro artículo entero para poder explicar en profundidad el contenido y funcionamiento especifico del directorio /dev. De momento nos vasta con saber que Linux lo utiliza para asociar dispositivos (devices) con ficheros.
o /etc El directorio /etc contiene archivos necesarios para configuración del sistema. Archivos que son propios del ordenador y que se utilizan para controlar el funcionamiento diversos programas. Deben ser ficheros estáticos y nunca pueden ser archivos binarios y/o ejecutables. Algunos subdirectorios contenidos en /etc: o X11. Subdirectorio para la configuración del sistema de ventanas. Es opcional. o SGML. Subdirectorio para la configuración de SGML. Es opcional. o Xml. Subdirectorio para la configuración de XML. Es opcional.
En definitiva, /etc mantiene los archivos de configuración del sistema para un ordenador específico. Vemos parte de su contenido: o /home Directorio que contiene los subdirectorios que son directorios origen para cada uno de los usuarios del sistema. Cada subdirectorio /home/user de cada usuario proporciona el lugar para almacenar sus ficheros, así como los archivos de configuración propios de cada uno. Es importante saber que también algunos servicios, y no solo usuarios, crean aquí su directorio origen, por ejemplo: el servicio de transferencia de ficheros (FTP). El administrador tiene su propio directorio home, que es /root. o /lib El directorio /lib contiene librerías compartidas (similar a las dlls para los usuarios de Windows) necesarias para arrancar el sistema y para los ficheros ejecutables contenidos en, por ejemplo, /bin. Normalmente las librerías son ficheros binarios escritos en lenguaje C *. También contiene módulos del kernel esenciales que permiten el funcionamiento de muchos elementos Hardware. Se ubicarán normalmente en /lib/modules/versión-del-kernel/.
Vemos parte de su contenido: o /media Este directorio contiene los subdirectorios que se utilizan como puntos del montaje para los medios de almacenamiento, tales como disquetes, CD-ROM y memorias USBs. o /mnt Este directorio contiene sistemas de archivos externos que hayan sido montados. Las entidades que aparecen dentro de /mnt representan recursos externos a los que se puede acceder a través de este directorio. o /opt En este directorio (/opt de options, u opciones en castellano) se suelen instalar complementos o add-ons de los programas. Las aplicaciones crean un subdirectorio dentro de /opt denominado con el mismo nombre del programa. o /root Este directorio es el directorio /home del administrador del sistema (root). o /sbin Los programas y comandos que se utilizan para la administración del sistema se almacenan en /sbin, /usr/sbin y /usr/local/sbin. /sbin únicamente contiene los ejecutables esenciales para el arranque, recuperación y reparación del sistema. Todos estos directorios (/sbin, /usr/sbin y /usr/local/sbin) se utilizan con fines administrativos, por tanto, sólo puede ejecutar su contenido el administrador. Vemos parte de su contenido: o /srv Contiene los archivos de datos específicos para cada servicio instalado en el sistema. o /tmp En este directorio se guardan los archivos temporales. 4.2.- El directorio /usrEs la segunda sección más grande o estructura jerár quica (después del directorio raíz) del sistema de ficheros. Este directorio está pensado para almacenar datos que se puedan compartir con otros hosts. Estos datos además deben ser inalterables, es decir, sólo de lectura. Normalmente, este directorio tiene su partición propia. Comúnmente, se almacena aquí el software instalado en el sistema. Vemos su contenido: Estructura de /usr o /usr/bin Éste es el directorio primario de comandos ejecutables del sistema. /usr/bin alberga los archivos ejecutables vinculados al software instalado en el sistema. o /usr/include Linux está escrito en lenguaje C. En C es posible utilizar funciones que ya estén predefinidas (como otros muchos lenguajes de programación) para incluirlas en el programa que estemos haciendo. Esta técnica se denomina programación modular. Estas funciones se llaman comúnmente archivos cabecera (.h de header) y contienen las declaraciones externas de una librería. La manera de incluir estos archivos cabecera en nuestro programa, es haciendo uso de la directiva include; de ahí la denominación del subdirectorio. Ejemplo programa C:
Todos estos ficheros cabecera (que necesite el software instalado en el sistema) se almacenan en este subdirectorio.
Vemos parte de su contenido: o /usr/lib Este directorio incluye librerías compartidas y ficheros binarios pensados para no ser ejecutados directamente por los usuarios del sistema. o /usr/local/ /usr/local/ es para uso del administrador del sistema cuando instala software localmente. Puede usarse para programas y datos que son compartibles entre un grupo de máquinas Este subdirectorio tiene una estructura similar a la del directorio /usr. Vemos su contenido: o /usr/sbin Este directorio contiene comandos y programas no esenciales usados exclusivamente por el administrador de sistema. Como se ha comentado, los comandos necesarios para la reparación, recuperación y otras funciones esenciales del sistema, se almacenan en /sbin. Vemos parte de su contenido: o /usr/src Por lo general, en /usr/src (src de source o, fuente en castellano) se guarda el código fuente del Kernel del sistema. Para comprobar si tenemos en nuestra distribución los fuentes del kernel instalados, deberíamos ver un enlace simbólico llamado linux. 4.3.- El directorio /varEste directorio va ha contener ficheros de datos variables y temporales, así como archivos spool (ficheros almacenados en filaen espera a ejecutarse, como por ejemplo colas de impresión). Todos los log del sistema y los generados por los servicios instalados, se ubican dentro de la estructura jerárquica de /var. Esto quiere decir que el tamaño global de este directorio va ha crecer constantemente. La utilidad de /var radica en poder detectar problemas para prevenirlos y solucionarlos. Es aconsejable montar en una nueva partición este directorio. Si no se pudiera, es preferible ubicar /var fuera de la partición raíz y de la partición /usr. Vemos su contenido: Distribución de algunos subdirectorios de /var o /var/cache Subdirectorio pensado para albergar datos de aplicaciones en cache (usados en un espacio breve de tiempo). El sistema de paquetes de Debian (apt-get), mantiene y almacena todos los paquetes que nos hemos instalado con el gestor de paquetes Apt-get. Por ejemplo, si ejecutamos:
Debian se bajará de algún repositorio especificado en /etc/apt/sources.list el archivo nmap_version.deb, lo almacenará en /var/cache/apt y lo instalará desde esta ruta. Posteriormente lo podemos borrar. Por defecto Debian almacena aquí todo los paquetes que nos hemos instalado con su gestor de paquetes Apt-get. o /var/lib Encontramos aquí información sobre el estado variable de las aplicaciones. o /var/lock Aquí se almacenan los ficheros que están bloqueados por el sistema. o /var/log En /var/log se guardan los mensajes de registro generados por el sistema operativo y por diversos servicios. Por ejemplo: En /var/log/messages son los logs generados por el kernel, en /var/log/httpd/access_log encontramos quien (desde que ip) está accediendo a nuestro servidor Web y, en /var/log/wtmp encontraremos todos los accesos y salidas en el sistema. Vemos su contenido: o /var/mail Linux enviará aquí los archivos de correos de cada usuario del sistema. o /var/run /var/run contiene archivos con información del sistema que lo describen desde que se arrancó. Generalmente, se borrará todos los archivos que cuelgan de este subdirectorio al comenzar el proceso de arranque. Estos archivos con información del sistema son los llamados archivos identificados de procesos ó PID, que guardan el identificador del proceso (Process ID). Podemos ver aquí los archivos PID en un instante determinado en mi máquina: o /var/spool /var/spool contiene ficheros almacenados en forma de fila de trabajos, para un procesamiento posterior. Vemos su contenido: Un ejemplo claro puede ser los trabajos que guarda la impresora para, posteriormente, ejecutarlos por un orden de llegada y/o prioridad. o /var/tmp Algunos datos temporales se almacenan aquí y que, posiblemente, pueden aparecer en nuestra distribución GNU/Linux para no saturar el directorio /tmp. Existen otra serie de directorios que no especifica el estándar FSH, pero que son importantes. Los vemos 4.4.- Directorio /lost+found. Perdidos y encontradosLas herramientas y utilidades para restaurar y/o reparar el sistema de archivos almacenan los datos en este directorio. Es un espacio temporal donde se guardan los datos que se recuperan después de una caída del sistema. Fijémonos que, normalmente en cada partición que creemos existirá un /lost+found en el nivel superior. Por último, decir que este directorio existe sólo en distribuciones que tengan como sistemas de archivos ext2 o ext3. 4.5.- Directorio /proc/proc es un sistema de archivos virtual. Se genera y actualiza dinámicamente, es decir, no se mantiene en el disco duro, se mantiene el la memoria RAM. Es el sistema quien lo crea y lo destruye. Este directorio contiene información sobre los procesos, el núcleo e información relativa al sistema. Vemos su contenido: * Los subdirectorios identificados por un numero, corresponden a los PID de los procesos. 5.- Referenciaso http://www.pathname.com/fhs/ o http://www.microteknologias.cl/linux_fhs.html o http://www.FreeUOC.org/ Proyecto LPI o http://www.hispafuentes.com/ o http://www-128.ibm.com/developerworks/linux/lpi/index.html o Administración básica de GNU/Linux. Autor: José Ángel de Bustos Pérez o G.L.U.P. Guía de Linux Para El Usuario. Larry Greenfield o GNU/Linux: Instalación y primeros pasos. Autores: Matt Welsh, Phil Hughes. Julio de 2002 o Sistema Operativo GNU/Linux básico. UOC. Autores: Roger Borg Viñas. Francesc Aulí Llinas o Apuntes Sistema Operativo Linux Universidad Politécnica de Madrid. Noviembre 2004 o Guía de referencia Debian. Autor: Osamu Auki. Febrero 2005 o Linux. 6ª Edición. Autores: David Bandel y Robert Napier. Editorial: Prentice Hall |