Fundamentos del sistema de ficheros

INFORMATICA UNIVERSIDAD

RECURSOS

Organización del sistema de archivos

La organización de un sistema de archivos dado, como puede ser el de Linux, incumbe a varios aspectos.

  • En primer lugar, se refiere a la organización de los archivos de los usuarios en el sistema y en los propios dispositivos. Un sistema de archivos dado puede ser jerárquico y otro puede no serlo. En Linux todos los archivos de todo el sistema están dentro de una carpeta, salvo la raíz; en Windows, por ejemplo, los archivos de cada dispositivo están dentro de una carpeta, salvo la raíz de cada dispositivo.
  • En segundo lugar, se refiere a la forma en la que se clasifiquen los archivos. Lo usual es que existan archivos y carpetas, aunque las carpetas no sean más que archivos especiales del sistema para contener (y así clasificar) los archivos del usuario.
  • En tercer lugar podemos referirnos a la ubicación de los dispositivos de almacenamiento respecto al sistema, distinguiendo dispositivos locales de dispositivos no-locales (servidores de archivos, por ejemplo), y como el sistema trabaja con dichos dispositivos.
  • Finalmente, también podemos referirnos a la eventualidad de que un sistema sea usado por un solo usuario o con un fin específico, o bien que sea un sistema diseñado para ser compartido con distintos usuarios que pueden tener distintas políticas respecto a determinados aspectos de la información del sistema.

 

El Sistema de archivos virtual (VFS)

Cualquier dispositivo (disco, volumen lógico o partición) para ser utilizado ha de tener un formato adecuado. Esta operación suele conocerse como formateo por la herramienta utilizada en los sistemas MS-DOS y Windows Format. Sin embargo, en Linux se habla de crear un sistema de archivos mientras que la herramienta utilizada se denomina mkfs (make filesystem).

Esta herramienta permite crear un sistema de archivos de virtualmente cualquier tipo en un dispositivo: reiserfs, ext2, ext3, ext4, xfs, btrfs, ntfs... Linux permite utilizar un montón de tipos de sistemas de archivos en los distintos dispositivos de almacenamiento de los que disponga el sistema.

Para permitir esta heterogeneidad, Linux utiliza lo que se conoce como una capa de abstracción llamada Sistema de archivos virtual (VFS, sus siglas en inglés). Dicha capa de abstracción no es más que un sistema que hace de interfaz entre Linux y los distintos tipos de sistemas de archivos. La única condición para usar un tipo determinado de sistemas de archivos es disponer del controlador (driver) correspondiente en el núcleo Linux.

En realidad, Linux ni siquiera necesita un dispositivo completo para su uso: podría bastar un archivo MS-DOS para que el núcleo Linux fuese capaz de montar un sistema de ficheros dentro de él.

No se debe confundir VFS con los tipos especiales de sistemas de archivos tales como procfs, devtmpfs, sysfs, tmpfs, etc. Es tentador considerar a estos tipos de sistemas de archivos como sistemas de archivos virtuales, en la medida en que no existen físicamente en ningún lugar, sino que el sistema los crea dinámicamente para su propio uso. La confusión aumenta ya que entre sus funciones también se encuentran la de servir de interfaz entre dos aspectos del sistema. La diferencia fundamental es que VFS también se encarga de gestionar estos tipos de sistemas de archivos.

Tipo del sistema de ficheros

En cada dispositivo los archivos se almacenan siguiendo alguna estructura predeterminada. Un disco FAT, por ejemplo, emplea una tabla donde se guarda el nombre de cada archivo y su ubicación física en dicho dispositivo; un disco ext4 emplea un sistema más complejo, incluyendo un registro de diario de cambios, un sistema de enlaces para reubicar el archivo de forma más eficiente, etc.

Un dispositivo dado puede usar uno de multitud de tipos diferentes, y en un disco puede haber particiones que usen tipos distintos. Aunque en general, pueden hacerse agrupaciones:

  • Los CD/DVD usan iso9660, y por lo tanto también las imágenes .iso utilizan tal formato.
  • La raíz (/) de un sistema GNU/Linux puede usar btrfs, ext2, ext3, ext4, reiserfs, y xfs.
  • El sistema Windows puede emplear VFAT o NTFS.
  • Un pendrive suele usar VFAT por compatibilidad, aunque podría usar cualquier otro tipo. De forma similar, las particiones que no sean la raíz pueden emplear cualquier tipo sistema de archivos, si bien es posible que el cargador no sea capaz de arrancar /boot si no maneja su tipo de sistema de archivos (en caso de que no sea la misma que la raíz).

Generalmente el núcleo vendrá con todos los drivers precisos para manejar los distintos tipos de sistemas de archivos. Sin embargo, para que el cargador de arranque pueda iniciar el sistema es el propio cargador el que debe de disponer de los drivers adecuados para el sistema de ficheros /boot.

Jerarquía de sistemas de ficheros (FHS)

Los ficheros de Linux se organizan en forma de árbol: hay una carpeta que actúa de raíz (denominada root y representada con la barra /), de la que cuelgan todos los archivos y carpetas que componen el sistema. Cada carpeta a su vez puede contener otras carpetas y archivos. El separador entre carpetas es la misma barra. Un sistema de ficheros es una rama o conjunto de carpetas que cumplen una función determinada. En Linux, casi cualquier sistema de ficheros puede estar almacenado en cualquier dispositivo local, y muchos de ellos pueden ser accesibles a través de la red.

El FHS (Filesystem Hierarchy Standard, Estándar de la Jerarquía de Ficheros) define dónde se ubica cada sistema de ficheros principal dentro del árbol de ficheros del sistema. Por ejemplo, /boot es el sistema de ficheros que contiene el arranque, /home el que contiene las carpetas de usuario, etc.

La necesidad de establecer un FHS surgió en primer lugar por la heterogeneidad de las distribuciones existentes. Si bien todas las distribuciones aceptan el FHS, aun es posible encontrarse diferentes interpretaciones de algunos aspectos.

(Puede quitar la publicidad ampliando la cuenta)