Mount: montando sistemas de archivos

En sistemas Linux siempre que necesitemos acceder al contenido de un sistema de archivos deberemos montarlo (mount) en un directorio del VFS (Virtual File System) llamado «punto de montaje«.

Esto resulta de suma utilidad cuando, por ejemplo, necesitamos realizar tareas de mantenimiento y recuperación de datos en un equipo. Podremos iniciar el mismo con un GNU/Linux Live-cd, y luego acceder a los datos previo montaje de los sistemas de archivos del equipo en cuestión.

Conceptos de mount

Supongamos que deseamos montar la parmount particionadotición /home de un equipo al que hemos iniciado desde un live-cd. Si dicha partición corresponde, por ejemplo, al dispositivo de almacenamiento que el live-cd detectó como /dev/sda3, deberíamos montarla utilizando el comando mount, y pasándole por argumento el tipo de sistema de archivos creado, el dispositivo de la partición, y el punto de montaje en el que la deseamos montar.

Un punto de montaje genérico muy utilizado para este tipo de casos, es el directorio /mnt del VFS. Sabiendo el sistema de archivos de la partición, el nombre del dispositivo, y el punto de montaje, podremos montarlo y acceder a sus datos con el comando mount pasandolo los argumentos de la siguiente forma:

mount -t <filesystem> <device> <mountpoint>

Si deseamos montar /dev/sda3 en /mnt utilizando un sistema ext4, la línea quedaría de la siguiente forma:

mount -t ext4 /dev/sda3 /mnt

Luego, podremos constatar que la partición ha sido montada utilizando el mismo comando mount sin argumentos:

mount

En cuya salida veremos algo similar a esto:

/dev/sda3 on /home type ext4 (rw,data=ordered)

Cuando terminemos las tareas de mantenimiento deberemos desmontar el volumen, y una opción es la siguiente:

umount /mnt

Esto volcará los buffers de E/S de disco en el sistema de archivos físico y no perderemos la información escrita. Aquí para desmontar el sistema podemos pasar como argumetno el punto de montaje o el nombre del dispositivo.

El archivo fstab, una breve introducción

Supongamos que hemos agregado un disco nuevo a nuesto ordenador, supongamos /dev/sdb, lo hemos particionado y hemos creado nuestro sistema de archivos favorito en sus particiones según necesidad.

Cada vez que iniciemos el ordenador deberemos abrir una terminal y montar el dispositivo en un directorio de punto de montaje para poder accederlo. Es engorroso verdad?

Pues bien, esto puede llevarse a cabo automáticamente editando un archivo de montaje estático del sistema operativo, llamado /etc/fstab. Cada línea en este archivo representa un montaje de dispositivo. Existen dispositivos temporales, y por supuesto, en dicho archivo tambmountién veremos los montajes para la partición / y otras importantes, como /home si lo hemos separado durante la instalación.

Si quisiéramos montar una de las particiones del disco nuevo, sea /dev/sdb1, automáticamente al inicio del equipo, deberemos agregar una línea en el archivo /etc/fstab con el siguiente formato:

# <file system> <mount point> <type> <options> <dump> <pass>

Donde:

  • <filesystem> representa el nombre del dispositivo, o en su defecto, el UUID (identificador único de dispositivo).
  • <mountpoint> representa el directorio de punto de montaje estático.
  • <type> es el tipo de sistema de archivos.
  • <options> son opciones de montaje (se analizan con detalle en Opciones de montaje de dispositivos)
  • <dump> puede ser 1 o 0 dependiendo de si dicha partición pertenecerá a una copia de respaldo de la utilidad «dump». Hoy en día no suele utilizarse, y se setea a 0.
  • <pass> es el orden el el que se chequearan los fallos de disco utilizando la herramienta fsck automáticamente cuando el equipo no se apaga correctamente, o luego de cierta cantidad de veces que ha sido montado. Es conveniente que la partición raiz tenga el menor número, por ejemplo, 1, y el resto de los sistemas montados un numero mayor.

Montando nuestra partición

Dicho esto, para poder montar nuestro dispositivo primero deberemos crear un punto de montaje estático. Generalmente suele crearse dentro de /media para dejar disponible /mnt a usos temporales.

mkdir /media/datos_usuarios

Ahora procederemos a crear la línea en el archivo fstab de la siguiente forma:

/dev/sdb1 /media/datos_usuarios ext4 defaults 0 2

En el caso de utilizar el UUID de la partición, conveniente cuando tenemos más de un disco en el sistema, podremos obrener dicho dato utilizando el comando «blkid» de esta forma:

root@tuta2:~# blkid

Cuya salida contrndrá algo como esto:

Podremos reemplazar en el archivo /etc/fstab el nombre /dev/sdb1 por UUID=21d722aa-3b8b-45f2-8494-ce990a7c85d3, quedando finalmente la línea de esta manera:

Guardamos, y listo! Al proximo reinicio de nuestro ordenador podremos ver dentro de /media/datos_usuarios el contenido de nuestra partición.

Si quisiéramos montarla sin necesidad de reiniciar, podríamos typear el siguiente comando:
mount -a

Sistema de archivos en solo lectura?

Alguna vez nos habrá pasado que conectamos un pendrive, o un disco externo, y el sistema puede leerse, pero el contenido no puede modificarse.

Revisamos los permisos y resulta que no hay cambios, y nuestro usuario sí tiene privilegios para editar archivos y directorios.

Otro chequeo que deberíamos hacer es el de verificar los atributos de los archivos (lsattr/chattr), puesto que tienen un «nivel de privilegios» mayor al de los permisos, y quizás sea ese el problema de la imposibilidad en la edición.

Pero lo más común, que el sistema de archivos se haya montado en formato solo lectura. Si ejecutamos un comando mount y obtenemos una salida como esta:

/dev/sda3 on /home type ext4 (ro,data=ordered)

El «ro» indica «read only», o «solo lectura» en español. Si el sistema de archivos lo permite, podríamos remontar en caliente el filesystem para «intentar» darle permisos de lectura escritura, de esta forma:

mount -o remount,rw /dev/sda3

En la mayor parte de los casos (salvo detalles adicionales que tienen que ver con el dispositivo de almacenamiento) deberíamos ver una salida con «rw» al comando mount.

Espero les sea de utilidad!

Hasta la próxima!