UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS...

27
UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS OPERATIVOS II La estructura del sistema de archivos en Linux GRUPO: René Méndez David González Cesar Zúñiga Gabriel Suarez PROFESOR: Ing. Karina Real 2013

Transcript of UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS...

Page 1: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

UNIVERSIDAD TECNOLÓGICA ECOTEC

SISTEMAS OPERATIVOS II

La estructura del sistema de archivos en Linux

GRUPO: René Méndez

David González

Cesar Zúñiga

Gabriel Suarez

PROFESOR: Ing. Karina Real

2013

Page 2: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

La estructura del sistema de archivos en Linux

1.- Introducción e historia

Linux es un núcleo libre de sistema operativo (tambien suele referirse al núcleo como kernel) basado en Unix. Es uno de los principales ejemplos de software libre y de código abierto. Linux está licenciado bajo la GPL v2 y está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en la Linux Kernel Mailing List Archive.

El núcleo Linux fue concebido por el entonces estudiante de ciencias de la computación finlandés, Linus Torvalds, en 1991. Linux consiguió rápidamente desarrolladores y usuarios que adoptaron códigos de otros proyectos de software libre para usarlo con el nuevo sistema operativo. El núcleo Linux ha recibido contribuciones de miles de programadores de todo el mundo. Normalmente Linux se utiliza junto a un empaquetado de software, llamado distribución Linux y servidores.

Un 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 ciento, 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.

* Rusty Russell, Daniel Quinlan y Christopher Yeoh, creadores del estándar FHS entre otras personas.

Page 3: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

2.- Estándar FHS

FHS 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 crea 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

o Presentar un sistema de archivos coherente y estandarizado. o Facilidad para que el software prediga la localización de archivos y directorios

instalados. o Facilidad para que los usuarios prediga la localización de archivos y directorios

instalados. o Especificar los archivos y directorios mínimos requeridos.

El estándar FHS está enfocado a:

o Fabricantes de software independiente y creadores de sistemas operativos, para que establezcan una estructura de ficheros lo más compatible posible.

o Usuarios comunes, para que entiendan el significado y el contendido de cada uno de los elementos del sistema de archivos.

Además, FHS manifiesta algunas diferencias entre varios tipos de archivos que puede haber en el sistema:

o Archivos compartibles y no compartibles.

Ficheros que son propios de un host determinado y, archivos que pueden compartirse entre diferentes host.

Ejemplo:

Page 4: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

o Archivos compartibles: los contenidos en /var/www/html (que es el DocumentRoot por defecto del servidor Web Apache. Donde se almacena inicialmente el index.html de bienvenida).

o Archivos no compartibles: los contenidos en /boot/grub/ (Subdirectorio donde se ubican los ficheros del gestor de arranque GRUB).

o Archivos estáticos y variables.

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).

Archivos estáticos: /etc/password, /etc/shadow.

Archivos variables: /var/log/messages (log de mensajes generados por el kernel del sistema).

3.- Todo en Linux es un archivo

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.

NOTA: podemos acceder a los dispositivos Hardware como si fueran archivos. Realmente son ficheros para Linux; pero no son archivos normales, son archivos binarios (o .exe para los que vengan de Windows).

Hay que saber que si editamos, por ejemplo, un fichero vinculado a un elemento

Page 5: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

Hardware, seguramente sea totalmente ilegible y posiblemente quedará inutilizable y bloqueada nuestra línea de comandos (shell). Es más, corremos el riesgo de corromper los datos y dejar el sistema inestable.

En definitiva, no es aconsejable leer o abrir y mucho menos modificar archivos vinculados a elementos Hardware y/o dispositivos, a menos que sepamos con toda seguridad lo que estemos haciendo.

4.- Organización de sistema de archivos según FHS

4.1.- El directorio raíz

Todo 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

/bin

Page 6: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

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

/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.

*El núcleo tiene la capacidad de crear dos entornos o modos de ejecución totalmente

Page 7: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

separados.

Uno de ellos está reservado para el propio kernel, denominado el “modo núcleo”; y el otro está reservado para el resto de programas, llamado el “modo usuario”.

Realmente se crean dos entornos totalmente separados, es decir, cada uno tiene su propia zona de memoria y procesos independientes.

Démonos cuenta que esta técnica ofrece mucha seguridad y estabilidad al sistema.

Cuando un proceso del “modo usuario” necesita recursos del “modo kernel” (por ejemplo, acceder a la memoria USB) se hacen uso de las “famosas” llamadas al sistema (interface que ofrece el núcleo para la comunicación del modo usuario con el modo kernel).

Vemos su contenido:

/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.

Page 8: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

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.

/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:

X11. Subdirectorio para la configuración del sistema de ventanas. Es opcional.

SGML. Subdirectorio para la configuración de SGML. Es opcional.

Xml. Subdirectorio para la configuración de XML. Es opcional.

X11 – Sistema de ventanas graficas originario de UNIX en su versión 11. Este sistema tiene la peculiaridad de ser totalmente independiente del sistema operativo. Es una estructura cliente-servidor.

XML - eXtensible Markup Language (lenguaje de marcas extensible). Es un metalenguaje de etiquetas.

SGML - Standard Generalized Markup Language (Lenguaje de Marcación Generalizado). Sistema para la organización y etiquetado de documentos.

En definitiva, /etc mantiene los archivos de configuración del sistema para un ordenador específico.

Vemos parte de su contenido:

Page 9: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

/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.

/lib

El directorio /lib contiene librerías compartidas (similar a las dll’s 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 *.

Page 10: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

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:

/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 USB.

/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.

/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.

/root

Page 11: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

Este directorio es el directorio /home del administrador del sistema (root).

/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:

/srv

Contiene los archivos de datos específicos para cada servicio instalado en el sistema.

/tmp

En este directorio se guardan los archivos temporales.

Page 12: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

4.2.- El directorio /usr

Es la segunda sección más grande o estructura jerárquica (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

/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.

/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.

Page 13: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

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:

#include

main()

{ unsigned int num,masc; char resp; clrscr(); do{

……

Todos estos ficheros cabecera (que necesite el software instalado en el sistema) se almacenan en este subdirectorio.

*Una librería no es más que un programa compilado, donde originariamente se implementó el código fuente de las funciones que la componen.

La declaración pública del conjunto de funciones de la librería reside en los archivos cabecera.

Vemos parte de su contenido:

Page 14: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

/usr/lib

Este directorio incluye librerías compartidas y ficheros binarios pensados para no ser ejecutados directamente por los usuarios del sistema.

/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:

/usr/sbin

Este directorio contiene comandos y programas no esenciales usados exclusivamente por el administrador de sistema.

Page 15: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

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:

/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 /var

Este directorio va ha contener ficheros de datos variables y temporales, así como archivos spool (ficheros almacenados en “fila”en 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.

Page 16: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

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

/var/cache

Subdirectorio pensado para albergar datos de aplicaciones en cache (usados en un espacio breve de tiempo).

/var/lib

Encontramos aquí información sobre el estado variable de las aplicaciones.

/var/lock

Aquí se almacenan los ficheros que están bloqueados por el sistema.

/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:

Page 17: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

/var/mail

Linux enviará aquí los archivos de correos de cada usuario del sistema.

/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:

/var/spool

/var/spool contiene ficheros almacenados en forma de “fila de trabajos, para un procesamiento posterior.

Vemos su contenido:

Page 18: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

Un ejemplo claro puede ser los trabajos que guarda la impresora para, posteriormente, ejecutarlos por un orden de llegada y/o prioridad.

/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.

4.4.- Directorio /lost+found. “(Perdidos y encontrados)”

Las 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.

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 en 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:

Page 19: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

* Los subdirectorios identificados por un número, corresponden a los PID de los procesos.

5.- Sistema de Archivos de Linux

El sistema de ficheros de Linux permite al usuario crear, borrar y acceder a los ficheros sin necesidad de saber el lugar exacto en el que se encuentran.

En Linux no existen unidades físicas, sino ficheros que hacen referencia a ellas, integrados en la estructura de ficheros como cualquier otro.

El sistema de ficheros de Linux consta de varias partes importantes:

Superbloque Tabla de inodos Bloques de datos

En Linux cada bloque es de 512 bytes o de múltiplos de 512. Al igual que el clúster era la estrella del sistema de ficheros FAT, en ext2 ó ext3 es el bloque.

En la siguiente tabla podemos ver un esquema del sistema de ficheros de Linux:

Page 20: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

El bloque de carga o bloque cero de cada sistema está reservado para almacenar un programa que utiliza el sistema para gestionar el resto de las partes del sistema de ficheros.

El superbloque o bloque uno contiene la información sobre el sistema de ficheros.

La tabla de inodos es el equivalente a las entradas de la FAT. Por cada fichero, Linux tiene asociado un elemento en esta tabla que contiene un número. Este número identifica la ubicación del archivo dentro del área de datos.

Cada inodo contiene información de un fichero o directorio. En concreto, en un inodo se guarda la siguiente información:

El identificador de dispositivo del dispositivo que alberga al sistema de archivos.

El número de inodo que identifica al archivo dentro del sistema de archivos. La longitud del archivo en bytes. El identificador de usuario del creador o un propietario del archivo con

derechos diferenciados. El identificador de grupo de un grupo de usuarios con derechos diferenciados. El modo de acceso: capacidad de leer, escribir, y ejecutar el archivo por parte

del propietario, del grupo y de otros usuarios. Las marcas de tiempo con las fechas de última modificación (mtime), acceso

(atime) y de alteración del propio inodo (ctime). El número de enlaces (hard links), esto es, el número de nombres (entradas de

directorio) asociados con este inodo. Si múltiples nombres están enlazados, o sea, asociados a un mismo inodo (lo que se denomina enlaces duros o simplemente enlaces) entonces todos los nombres son equivalentes entre sí. El que fue creado en primer lugar no tiene ningún estatus especial, al contrario de lo que ocurre con los enlaces simbólicos o con los denominados accesos directos de Windows, donde todos dependen del nombre original. El número de enlaces se emplea por el sistema operativo para eliminar el archivo del sistema de ficheros, tanto el inodo como el contenido, cuando se han borrado todos los enlaces y el contador queda a cero

El área de datos ocupa el resto del disco y es equivalente a la zona de datos en FAT. En esta zona, como su nombre indica, están almacenados los ficheros y directorios de nuestro sistema.

Page 21: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

Un directorio no es más que un fichero que contiene los nombres de los ficheros (o directorios) que contiene junto con el número del inodo que contiene la información de cada uno de ellos.

Linux soporta gran variedad de sistemas de ficheros, desde sistemas basados en discos, como pueden ser ext2, ext3, ReiserFS, XFS, JFS, UFS, ISO9660, FAT, FAT32 o NTFS, a sistemas de ficheros que sirven para comunicar equipos en la red de diferentes sistemas operativos, como NFS (utilizado para compartir recursos entre equipos Linux) o SMB (para compartir recursos entre máquinas Linux y Windows).

Los sistemas de ficheros indican el modo en que se gestionan los ficheros dentro de las particiones. Según su complejidad, tienen características como previsión de apagones, posibilidad de recuperar datos, indexación para búsquedas rápidas, reducción de la fragmentación para agilizar la lectura de los datos, etc. Hay varios tipos, normalmente ligados a sistemas operativos concretos. A continuación se enumeran los más representativos:

ext2: Hasta hace poco era el sistema estándar de Linux. Tiene una fragmentación muy baja, aunque es algo lento manejando archivos de gran tamaño. Fue la continuación del sistema de ficheros ext, implementado en 1992 e integrado en Linux 0.96. Las principales ventajas que tenía sobre ext eran las siguientes:

Compatible con sistemas de ficheros grandes, admitiendo particiones de disco de hasta 4TB y ficheros de hasta 2GB de tamaño.

Proporciona nombres de ficheros largos, de hasta 255 caracteres. Tiene una gran estabilidad. Actualización.

ext3: Es la versión mejorada de ext2, con previsión de pérdida de datos por fallos del disco o apagones. En contraprestación, es totalmente imposible recuperar datos borrados. Es compatible con el sistema de ficheros ext2. Actualmente es el más difundido dentro de la comunidad GNU/Linux y es considerado el estándar. Sus ventajas frente a ext2 son:

Actualización. Debido a que los dos sistemas comparten el mismo formato, es posible llevar a cabo una actualización a ext3, incluso aunque el sistema ext2 esté montado.

Fiabilidad y mantenimiento.

ext4: Es la última versión de la familia de sistemas de ficheros ext. Sus principales ventajas radican en su eficiencia (menor uso de CPU, mejoras en la velocidad de lectura y escritura) y en la ampliación de los límites de tamaño de los ficheros, ahora de hasta 16TB, y del sistema de ficheros, que puede llegar a los 1024PB (PetaBytes).

Page 22: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

ReiserFS: Es el sistema de ficheros de última generación para Linux. Organiza los ficheros de tal modo que se agilizan mucho las operaciones con estos. El problema de ser tan actual es que muchas herramientas (por ejemplo, para recuperar datos) no lo soportan.

swap: Es el sistema de ficheros para la partición de intercambio de Linux. Todos los sistemas Linux necesitan una partición de este tipo para cargar los programas y no saturar la memoria RAM cuando se excede su capacidad. En Windows, esto se hace con el archivo pagefile.sys en la misma partición de trabajo, con los problemas que esto conlleva.

Además de estos sistemas de ficheros, Linux también ofrece soporte para sistemas de ficheros de Windows, como FAT, FAT32 y NTFS. Tanto para FAT como para FAT32, Linux tiene soporte completo y estable de escritura y lectura, mientras que para NTFS, y con las últimas versiones del kernel, solo se puede acceder de manera estable en modo lectura. En modo escritura todavía está en fase experimental y no es estable.

6.- Gestión del Sistema de Archivos de Linux

6.1.- Estructura Lógica”

El Segundo sistema de ficheros Extendido fue pensado (por Rémy Card) como un sistema de ficheros extensible para Linux y es el sistema de ficheros que tuvo más éxito en la comunidad Linux y es básico para todas las distribuciones actuales de Linux. El sistema de ficheros EXT2 se construye con la premisa de que los datos contenidos en los ficheros se guarden en Bloques de Datos. Estos bloques de datos son todos de la misma longitud y si bien esa longitud puede variar entre diferentes sistemas de ficheros EXT2 el tamaño de los bloques de un sistema de ficheros EXT2 en particular se decide cuando se crea (usando mke2fs). El tamaño de cada fichero se redondea hasta un número entero de bloques. Si el tamaño de bloque es 1024 bytes, entonces un fichero de 1025 bytes ocupará dos bloques de 1024 bytes.

No todos los bloques del sistema de ficheros contienen datos, algunos deben usarse para mantener la información que describe la estructura del sistema de ficheros. EXT2 define la topología del sistema de ficheros describiendo cada uno de ellos con una estructura de datos inodo.

Un Inodo describe que bloques ocupan los datos de un fichero y también los permisos de acceso del fichero, las horas de modificación del fichero y el tipo del fichero. Cada fichero en el sistema EXT2 se describe por un único inodo y cada inodo tiene un único

Page 23: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

número que lo identifica. Los inodos del sistema de ficheros se almacenan juntos en Tablas de inodos.

Los directorios EXT2 son simplemente ficheros especiales (ellos mismos descritos por inodos) que contienen punteros a los inodos de sus entradas de directorio.

En la figura anterior se muestra la disposición del sistema de ficheros EXT2 ocupando una serie de bloques en un dispositivo estructurado bloque. Por la parte que le toca a cada sistema de ficheros, los dispositivos de bloque son sólo una serie de bloques que se pueden leer y escribir. Un sistema de ficheros no se debe preocupar donde se debe poner un bloque en el medio físico, eso es trabajo del controlador del dispositivo. Siempre que un sistema de ficheros necesita leer información o datos del dispositivo de bloque que los contiene, pide que su controlador de dispositivo lea un número entero de bloques.

El sistema de ficheros EXT2 divide las particiones lógicas que ocupa en Grupos de Bloque (Block Groups), en los que cada grupo duplica información crítica para la integridad del sistema de ficheros ya sea valiéndose de ficheros y directorios como de bloques de información y datos. Esta duplicación es necesaria por si ocurriera un desastre y el sistema de ficheros necesitara recuperarse.

6.2.- Estructura de datos en Disco

Page 24: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

El primer bloque en cualquier partición Ext2 nunca es manejado por el sistema de archivos Ext2, dado que está reservado para el sector de arranque. El resto de la partición Ext2 se divide en grupos de bloques, reducen la fragmentación, dado que el kernel intenta mantener los bloques de datos de un archivo en el mismo grupo de bloques, si es posible.

Cada bloque en el grupo contiene algunas de las siguientes piezas de información:

• Una copia del superbloque del sistema de archivos.

• Una copia del grupo de descriptores de grupos de bloques.

• Un mapa de bits de bloque.

• Un grupo de inodos.

• Un mapa de bits de inodos.

• Un trozo de datos pertenecientes a archivo; esto es, bloques de datos (si un bloque no contiene ninguna información útil, se dice que está libre).

Tanto el superbloque como los descriptores de grupo están duplicados en cada grupo de bloques. Sólo el superbloque y los descriptores de grupos incluidos en el grupo de bloques 0 son utilizados por el kernel, mientras que las demás copias se dejan sin modificar; de hecho, nunca las mira.

Cuando el programa /sbin/e2fsck realiza una comprobación de consistencia, referencia el superbloque y los descriptores de grupos de bloques de grupo 0 copiándolos en el resto de grupos de bloques. Si se produce una corrupción de datos, y el superbloque y los descriptores de grupos del grupo 0 se hacen inválidos, el administrador puede indicar a /sbin/e2fsck que referencie las viejas copias de otros grupos diferentes del 0.

Usualmente, las copias redundantes tienen suficiente información para permitir al programa retornar la partición a un estado consistente.

El número de grupos de bloques depende tanto del tamaño de la partición como del tamaño de bloque. La principal restricción se debe a que el mapa de bits de bloque,

Page 25: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

que se utiliza para identificar los bloques dentro de un grupo que están en uso o libres, debe almacenarse en un único bloque. Por tanto, cada grupo de bloques debe tener como máximo 8*b bloques, donde b es el tamaño de bloque en bytes. Así, el número total de grupos de bloques es aproximadamente s/(8*b), donde s es el tamaño de la partición en bloques.

Como ejemplo, consideremos una partición Ext2 de 8 GB con bloques de 4 KB de tamaño. En este caso, cada mapa de bits de bloques de 4KB describe 32 KB de bloques de datos, es decir, 128 MB. Por tanto, como máximo se necesitan 64 grupos de bloques.

Claramente, a menor tamaño de bloque, mayor número de grupos de bloques.

6.3 Servicios que pueden ser implementados en Linux

El contar con sistema operativo Linux de código abierto sea de subscripción o gratito tiene gran relevancia cuando es necesario contar con servicios para proporcionar al negocio, los principales servicios en Linux son:

A diferencia de los servicios de Windows que tienen muchos archivos y DLLs para levantar un servicio en Linux consiste en ubicar el nombre del servicio y realizar el start o stop siempre y cuando el servicios este instalado.

Iniciar y detener manualmente los servicios ejemplo

“El procedimiento permite iniciar y detener manualmente los servicios para un momento específico, es decir, no perdura en el tiempo, después de reiniciar el sistema operativo el servicio quedará nuevamente como haya sido configurado inicialmente.”

Los servicios basados en /etc/init.d se manipulan de la siguiente manera.

$ sudo /etc/init.d/NOMBRE_SERVICIO stop # detener

$ sudo /etc/init.d/NOMBRE_SERVICIO start # iniciar

Los servicios basados en Upstart se manipulan de la siguiente manera.

$ sudo service NOMBRE_SERVICIO stop # detener

$ sudo service NOMBRE_SERVICIO start # iniciar

Tomado de: http://blog.jorgeivanmeza.com/2011/08/como-activardesactivar-los-servicios-en-gnulinux-ubuntu/

Page 26: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

Los principales usos de Linux:

Servicios para Internet

Web - Apache HTTP Server, Apache Tomcat

Databases - MySQL, PostgreSQL, Oracle

Programming and scripting - PHP, Java, Perl, JavaScript, CSS, XHTML, Bash

FTP - ProFTPD, Pure-FTPd, vsftpd

SMTP (outgoing email) - exim, postfix, qmail, sendmail

POP3 and IMAP (incoming email) - qpopper, UW IMAP, Courier-IMAP

DNS (Domain Name System) - BIND, djbdns

Web control panels - cPanel and WebHost Manager, Plesk, DirectAdmin, Webmin

Servicios de Virtualization

VMware ESX, ESXi, VMware Server

Xen - Amazon EC2 Cloud, Citrix XenServer

User Mode Linux (UML)

Manage Large Networks (MLN)

Servicios de Acceso Remoto

SSH (Secure SHell) - OpenSSH

VNC (Virtual Network Computing)

X Window System (X.Org, X11)

OpenVPN

Servicios de Securidad

Network monitoring - SNMP, Nagios, Big Brother/Hobbit, MRTG, Cacti

SSL/TLS encryption - OpenSSL, stunnel

Intrusion Detection Systems (IDSs) - Snort

Tripwire (file integrity checker)

Servicios Internal Network Servers

File server - Samba (SMB, CIFS), NFS, iSCSI

LDAP (directory services) - OpenLDAP

DHCP - ISC DHCP

Routing - Quagga, OSPF, RIP, VRRP, CARP

Page 27: UNIVERSIDAD TECNOLÓGICA ECOTEC SISTEMAS …gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2013E/COM342/... · Linux es un núcleo libre de sistema operativo ... FHS manifiesta

Principales distribuciones

Red Hat Enterprise Linux (RHEL)

CentOS

SUSE Linux Enterprise Server (SLES)

Debian GNU/Linux

Ubuntu Server and Desktop Editions

openSUSE

Fedora

Referencia: http://www.windserve.com/services/linux-consultant/linux-servers

7.- Referencias http://www.wikipedia.es/

http://www.redhat.com/

http://www.pathname.com/fhs/

http://www.microteknologias.cl/linux_fhs.html

http://www.FreeUOC.org/ – Proyecto LPI

http://es.tldp.org/

http://www.hispafuentes.com/

http://www-128.ibm.com/developerworks/linux/lpi/index.html

Administración básica de GNU/Linux. Autor: José Ángel de Bustos Pérez

G.L.U.P. Guía de Linux Para El Usuario. Larry Greenfield

GNU/Linux: Instalación y primeros pasos. Autores: Matt Welsh, Phil Hughes. Julio de 2002

Sistema Operativo GNU/Linux básico. UOC. Autores: Roger Borg Viñas. Francesc Aulí Llinas

Apuntes “Sistema Operativo Linux” Universidad Politécnica de Madrid. Noviembre 2004

Guía de referencia Debian. Autor: Osamu Auki. Febrero 2005

Linux. 6ª Edición. Autores: David Bandel y Robert Napier. Editorial: Prentice Hall