Sistema de ficheros en Linux

17 junio, 2015
admin
Comentarios desactivados

Introducción:

Para saber administrar un sistema es fundamental comprender la organización de ese sistema. La organización de un sistema informático se llama sistema de ficheros.

Vamos a estudiar como se organiza internamente un sistema de archivos en Linux y los comandos que se utilizan para manipularlo.

El sistema de ficheros es la parte del núcleo más visible por los usuarios; se encarga de abstraer propiedades físicas de diferentes dispositivos para proporcionar una interfaz única de almacenamiento: el archivo. Cada sistema Unix tiene su sistema de archivos nativo (por ejemplo, ext2 en Linux, UFS en Solaris o EFS en IRIX), por lo que para acceder a todos ellos de la misma forma el núcleo de Unix incorpora una capa superior denominada VFS ( Virtual File System) encargada de proporcionar un acceso uniforme a diferentes tipos de sistema de ficheros.

Un inodo o nodo índice es una estructura de datos que relaciona un grupo de bloques de un dispositivo con un determinado nombre del sistema de ficheros. Internamente, el núcleo de Unix no distingue a sus archivos por su nombre sino por un número de inodo.
Tipos de ficheros:



Un fichero o archivo es el elemento básico del Sistema de Ficheros. La mayoría de los sistemas operativos tienen distintos tipos de ficheros. Para Linux se pueden clasificar los ficheros en 3 tipos: ficheros normales, directorios y ficheros especiales (dispositivo de bloques, dispositivo de caracteres y enlaces).

Se pueden definir los ficheros normales como secuencias de bytes destinadas a almacenar información (texto, datos, programas) ya sea generada por los usuarios del sistema o por el propio sistema para su funcionamiento.

Las reglas generales para el nombrado de ficheros en Linux son las mismas que para sistema Unix

 

  • Un nombre de fichero puede tener de 1 a 255 caracteres.
  • No se permiten los caracteres como: metacaracteres ? * [ ] ‘ “ ` $ # | \ ; & { } carácter / (delimitador de directorios) carácter espacio, caracteres de control.
  • Unix distingue entre mayúsculas y minúsculas. Se recomienda utilizar siempre minúsculas pues , por convenio, las variables y macros del sistema se escriben en mayúsculas.
  • No existe extensión. Pueden haber varios puntos. Se recomienda utilizar nombres con un punto y a continuación algo que indique el tipo de fichero de que se trata.
Los directorios son ficheros utilizados para almacenar y referenciar otros ficheros. Para Linux los directorios son tratados como ficheros y realmente contienen información sobre la estructura del sistema de ficheros.
Los directorios están organizados en grafos (árbol). Existe un directorio que no posee antecedente o padre. Es el directorio raíz. Su símbolo es el carácter /. Cada fichero se puede referenciar unívocamente expresando un camino hacia él, desde el directorio raiz (ruta absoluta). Un fichero se puede referenciar desde el subárbol actual (ruta relativa).
Cualquier directorio contiene dos ficheros por defecto que a su vez son directorios:
. es un directorio que señala al propio directorio.
.. es un directorio que señala al directorio padre o antecedente del actual.
El contenido de los ficheros directorio es una tabla que mantiene una relación entre un nombre de fichero y su número de inodo.
En Linux, toda operación de E/S se realiza sobre un fichero de dispositivo. Toda entidad, sea física o lógica, se representa como un fichero (no hay unidades); a diferencia de otros sistemas como MSDOS, por esto los dispositivos físicos (discos, CDROM, terminal, impresora,…) se representan como ficheros especiales. Estos ficheros especiales se localizan en un directorio llamado /dev. Algunos de los más importantes son:
  • /dev/console Consola principal del sistema
  • /dev/fd*  Para la disquetera
  • /dev/hd* Para el disco duro
  • /dev/ttyS*, /dev/cua* Puertos serie del sistema
  • /dev/sd* Discos duros con interfaz SCSI. (Para las particiones se sigue la misma notación que en los dispositivos IDE)
  • /dev/lp* Puertos paralelo (de impresión, etc.)
  • /dev/null Dispositivo nulo, cualquier dato enviado a este dispositivo se pierde.
  • /dev/tty Consolas virtuales (el sistema simula la conexión a varios terminales)
Estos archivos pueden clasificarse como de bloques o de caracteres Los dispositivos de bloques, (cuyo atributo es una ‘b’) se acceden bloque a bloque, como discos (/dev/hda) o disquetes (/dev/fd0). Los dispositivos de caracteres, (de atributo una ‘c’) se acceden carácter a carácter como un puerto serie (/dev/cua)
Existen otros ficheros especiales llamados enlaces que la información que almacenan es un “puntero” a otro fichero del sistema. Los enlaces pueden ser fuertes (duros) o débiles (simbólicos). Cualquier cambio realizado en alguno de los ficheros enlazados afecta al otro. La orden ln permite crear este tipo de ficheros.
La diferencia entre ellos es que un enlace fuerte representa un nuevo nombre pero con el mismo número de inodo. Esto implica que aunque se elimine el fichero original el fichero no desaparece físicamente hasta que no se elimina el último enlace. Un enlace simbólico representa un nuevo inodo pero la eliminación del original provoca, indirectamente, la desaparición de todos los enlaces.
Jerarquía de ficheros en Linux
Al conjunto de todos los ficheros y directorios se le conoce como árbol de directorios. La imagen es más parecida a un árbol invertido, con la raíz en la cima y las ramas colgando de ella. Siguiendo este símil, en UNIX/Linux todos los directorios y ficheros cuelgan del raíz (“/”). Es el directorio más importante del sistema. En él debe existir lo mínimo para que el sistema pueda arrancar: programas y bibliotecas imprescindibles para el arranque, diagnóstico y recuperación del sistema: el kernel, la biblioteca C o libc, las utilidades básicas como cp, rm, mv, etc.
Nota: En Linux, no existen divisiones artificiales como las letras de unidad de Windows, sino que todos los sistemas de ficheros del ordenador están integrados en el mismo árbol.
sistema de ficheros linux
/bin
Binarios de los comandos esenciales (cp, rm, ls, etc.), usados por todos los usuarios.
/boot
Ficheros estáticos para el arranque del sistema (kernels, ficheros del gestor de arranque)
/dev
Ficheros de dispositivos
/etc
Configuración específica del sistema. Contiene algunos ficheros imprescindibles como /etc/passwd y /etc/shadow (ficheros que contienen los usuarios para acceder al sistema), /etc/group (la lista de grupos y sus miembros), /etc/fstab (la lista de montaje de dispositivos), etc.
/lib
Bibliotecas compartidas esenciales y módulos del kernel
/mnt
Directorio para montajes temporales
/opt
Paquetes software adicionales (los no incluidos en la distribución)
/sbin
Binarios esenciales para el sistema, usados por el administrador (fsck, mkfs, init, etc.)
/tmp
Ficheros temporales
/usr
La mayoría de programas del sistema y sus ficheros relacionados
/var
Datos variables
/home
Ficheros de los usuarios
/root
Ficheros del administrador del sistema (root)
/proc
Sus contenidos no están en el sistema de ficheros normal, sino que son creados por el kernel cuando se le dice que monte ahí un sistema de ficheros de tipo “proc”. Es un directorio virtual por decirlo así. En este sistema de ficheros se puede encontrar y alterar información del sistema: configuración de dispositivos, opciones del kernel, información sobre los procesos en ejecución, etc.

 

Nota: Normalmente sólo el administrador (root) puede escribir en los directorios del raíz salvo en /home y /tmp ya que están pensados para almacenar ficheros (temporales en el caso de /tmp) de los usuarios.
Los directorios /usr y /var son tan complejos como el directorio raíz:
En /usr irán la inmensa mayoría de los programas del sistema, tanto para los usuarios como para el administrador, y los ficheros de datos que éstos necesiten. En él encontraremos algunos directorios como los que había en el directorio raíz. Su función es similar a la de sus homónimos del raíz, pero nada de lo que se encuentre en /usr debe ser necesario para iniciar o recuperar el sistema.
Algunos de estos directorios son:
  • bin La mayor parte de los programas de usuario
  • include Ficheros de cabecera para programas compilados en C
  • lib Como su homónimo del raíz: bibliotecas, tanto dinámicas como estáticas
  • local Jerarquía local. Es como una copia de /usr pero destinado a programas creados o compilados de forma local (es el directorio usado cuando instalamos un programa a partir de los fuentes: los programas así instalados están al margen del sistema de gestión de paquetes de la distribución, y por eso se ponen en un directorio aparte. También es usado para instalar los scripts o programas “caseros” que hayamos hecho nosotros: /usr/local/bin o /usr/local/sbin es el lugar adecuado para éstos)
  • sbin Programas (no vitales) para el administrador
  • share Ficheros de datos independientes de la arquitectura: imagenes, documentación (/usr/share/doc), etc.
  • X11R6 Directorio para el sistema X Window
  • games Para juegos
  • src Para fuentes de programas
En /var como su nombre indica se encuentran directorios con datos variables, que cambiarán con el paso del tiempo por la acción de los programas del sistema. (Esto incluye desde correo hasta ficheros de log, pasando por bases de datos o cachés creadas por los programas del sistema). Algunos de estos directorios son:
  • cache Datos cacheados por las aplicaciones que realizan operaciones de cálculo o de E/S (incluyendo esto descargas de la red) costosas para almacenar aquí los datos, y no tener que volver a reprocesarlos. Por ejemplo, la herramienta apt-get (/var/cache/apt).
  • libnInformación variable de los programas. (Su nombre es un poco confuso, porque en realidad no hay ninguna biblioteca aquí)
  • localnDatos variables para los programas de /usr/local
  • lock Ficheros de bloqueo
  • log Registros del sistema, los llamados ficheros de log o de bitácora. Por ejemplo, los que crea el servicio syslog
  • opt Datos variables para los programas de /opt
  • run Datos para los programas en ejecución
  • spool Datos de spool1, esto es, ficheros que son creados por programas para su posterior proceso: ficheros en cola de impresión, mensajes de correo, etc.
  • tmp Ficheros temporales preservados aunque el sistema sea reiniciado
CONTENIDO PATROCINADO POR

FPla Informatica

Diseño web y Marketing digital
Disponga de una página web o un comercio electrónico de alta calidad a precios muy competitivos.
ACCEDER A FPLA INFORMATICA