Conceptos

i-nodos

Los i-nodos son una especie de indice que nos indica donde está localizado un determinado fichero dentro de un sistema de ficheros.

Aunque se tiende a asociar ficheros con i-nodos, un i-nodo no es un fichero.

Importante

Todo fichero tiene asociado un i-nodo.

Un i-nodo contiene toda la información referente al fichero.

Un i-nodo también puede contener información sobre enlaces simbólicos, sockets y dispositivos especiales.

Importante

Cuando creamos un sistema de ficheros lo creamos con una cantidad de i-nodos. Si se acaban los i-nodos no podremos escribir en el disco aunque nos quede espacio libre.

El Virtual File System o VFS

Aunque pueda parecer sencillo el hecho de acceder a diferentes tipos de sistemas de ficheros no lo es tanto ya que cada sistema de ficheros tiene sus peculiaridades.

GNU/Linux utiliza el Virtual File System para acceder a los diferentes sistemas de ficheros. El VFS es un sistema de ficheros genérico.

La forma más sencilla de explicarlo es recurrir a la programación orientada a objetos.

El VFS lo podemos considerar como una clase y los diferentes sistemas de ficheros como clases derivadas.

Todos los sistemas de ficheros comparten una serie de características comunes que son las heredadas del VFS y luego las suyas propias.

El Buffer Cache

El Buffer Cache es una memoria intermedia en la que se almacenan temporalmente las operaciones de escritura. Estas operaciones no se hacen de forma inmediata al sistema de ficheros. De este modo se mejora el rendimiento ya que no se penalizan otras acciones del sistema, como la interacción del usuario, por las operaciones de escritura.

Serán los algoritmos de multitarea los que decidan cuando van escribiendo esa información al disco.

Para el usuario todo esto es transparente y de cara a el es como si los datos se hubieran escrito al sistema de ficheros.

Más adelante veremos que es necesario montar un sistema de ficheros para hacerlo accesible. Debido a que los datos no se escriben al momento en el sistema de ficheros si quitamos un dispositivo físico del sistema sin que se hayan escrito los datos los perderemos. Se produce entonces una inconsistencia en el sistema de ficheros.

Para retirar un dispositivo es necesario desmontarlo, en ese momento se da prioridad a las operaciones de escritura pendientes y se escriben al sistema de ficheros. Una vez realizadas todas el sistema de ficheros es desmontado (ya no es accesible) sin perdida de datos.

Sugerencia

Es posible utilizar sync para sincronizar un sistema de ficheros con el Buffer Cache.

Sistemas de ficheros transaccionales o de journaling

Estos sistemas de ficheros fueron desarrollados para ser tolerantes a fallos. El ejemplo típico es cuando se va la luz mientras estamos trabajando. Con sistemas de ficheros no transaccionales al iniciar de nuevo el ordenador el sistema de ficheros se tendrá que chequear. Con los sistemas de ficheros transaccionales el inicio es mucho más rápido ya que poseen la información necesaria para hacer la recuperación de forma rápida y precisa.

Todos los ficheros tienen asociados los siguientes datos:

  • El contenido del fichero, los datos.

  • Los datos referentes al fichero, tamaño, fecha, nombre, lugar dentro del sistema de ficheros en el que se encuentra, ...

En los sistemas de ficheros tradicionales al realizar una operación de escritura se modifican directamente los metadatos, pero no los datos que se irán modificando poco a poco. Si se va la luz, por ejemplo, cuando el sistema arranque los metadatos no coincidirán con los datos (inconsistencia en el sistema de ficheros), teniendo entonces una perdida de datos.

Los sistemas de ficheros transaccionales disponen de dos zonas para solucionar este problema:

  1. Una zona de datos, donde se almacenarán tanto el contenido de los ficheros como los metadatos.

  2. Una zona de log o diario donde es núcleo va registrando los cambios realizados y los pendientes.

Cuando el sistema actualiza los datos de un fichero, borra de la zona de log la información referente a los cambios realizados. De esta forma cuando se monta un sistema de ficheros transaccional si hay modificaciones pendientes en la zona de log se actualiza el sistema de ficheros sin perdida de datos.

Sistemas de ficheros transaccionales:

  • ext3.

  • ReiserFS.

  • JFS de IBM.

  • XFS de SGI.

Sistemas de ficheros de acceso concurrente

Los sistemas de ficheros de acceso concurrente son aquellos sistemas de ficheros que permiten el acceso simultaneo al sistema de ficheros a más de una máquina al mismo tiempo.

Estos sistemas de ficheros no se acceden por red ethernet como pudiera ser exportado por NFS o CIFS.

Estos sistemas de ficheros se suelen utilizar en redes SAN y son típicos de clusters en configuraciones activo/activo.

Cuando tenemos un cluster en configuración activo/activo con varios nodos todos los nodos estarán accediendo simultaneamente al sistema de ficheros. Es necesario coordinar mediante bloqueos los accesos de escritura para evitar corrupciones de datos.

Los sistemas de ficheros de acceso concurrente que soporta GNU/Linux son los siguientes:

  • GFS o Global File System es el sistema de ficheros de acceso concurrente que Red Hat compró a Sixtina para su inclusión en Red Hat Cluster Suite.

  • GPFS o General Paralell File System es el sistema de ficheros de acceso concurrente de IBM.

  • OCFS o Oracle Cluster File System. Es el sistema de ficheros de acceso concurrente de Oracle que utiliza en Oracle RAC.