7.5 ¿Cómo puedo montar y desmontar unidades en Linux?

Imagen de ElSanto

Montar un sistema de ficheros/dispositivo a nivel usuario no es más que hacerlo disponible en el árbol de directorios de nuestro sistema. Como ya sabeis, en Linux vemos todos los sistemas de ficheros/dispositivos en un sólo árbol de directorios, no existen letras a:, c:, etc., de esta manera nos da igual que el contenido de un directorio sea un sistema de ficheros msdos, vfat, ext2, se encuentre en diferentes discos/particiones, esté en una máquina remota, etc. Esta abstracción tiene un inconveniente, hay que montarlo, es decir, indicarle al kernel de Linux que a través del directorio XXXX, accedemos al sistema de ficheros/dispositivo yyy. Esto se hace con el comando mount (man mount, para detalles).

Montar un sistemas de ficheros/dispositivo a nivel kernel, no es más que rellenar unas tablas de registro. Es decir, ver si el sistema de ficheros está soportado, o lo que es lo mismo, si existe la tabla de funciones con las que manejarlo. Luego registrar estas funciones y enlazar el directorio al sistema de ficheros. Esto es más bien lo que hace la llamada al sistema mount, la cual es llamada mediante el comando del mismo nombre.

Los parametros necesarios para montar un sistema de ficheros son:


  • Tipo de sistema de ficheros: Es necesario indicarle el tipo de sistemas de ficheros a registrar. Así sabrá que funciones utilizar.

  • Tipo de acceso: Si es de sólo lectura, sólo escritura o ambos.

  • Dispositivo: Indicar el dispositivo sobre el que está físicamente el sistema de ficheros,( p.e.: /dev/hda1, /dev/hdb, /dev/sda1,..., none si es el /proc, ya que se realiza sobre la memoria).

  • Directorio: Indica el directorio sobre el que se va a montar, es decir, el directorio mediante el cual accederemos al sistema de archivos.


Ejemplo: Montar el cdrom en el directorio /dev/cdrom.

  mount -t 
  mount -t iso9660 /dev/hdb /mnt/cdrom

Supongo que ya comprendereis el inconveniente de esto: Cada vez que se quiere acceder a un cdrom se ha de ejecutar el comando anterior, en vez de teclear d: (como en otros sistemas operativos). Pero la versatilidad y la flexibilidad que ofrece hace que no se tenga en cuenta ese inconveniente (como usuario accedo dentro de un directorio sin que me pase por la cabeza por ejemplo que ese fichero está al otro lado del planeta utilizando para ello el protocolo nfs).

Existen otras formas de reducir la línea de comandos, para ello (entre otras cosas) existe el fichero /etc/fstab. En él se indican los sistemas de ficheros sobre los que trabajamos normalmente: el sistema de ficheros en el que tenemos los directorios de linux, el /proc, la partición dos, el cdrom, y el floppy.

El fichero /etc/fstab funciona de la siguiente manera:

Partimos de un ejemplo de contenido de /etc/fstab:

  # 

  /dev/hda2  /            ext2             defaults                            1       1
  /dev/hda3  /usr         ext2             defaults                            1       2
  /dev/sda1  /home        ext2             defaults                            1       2
  /dev/hdb   /mnt/cdrom   iso9660          user,noexec,nodev,nosuid,ro,noauto  0       0
  /dev/fd0   /mnt/floppy  vfat             user,noexec,nodev,nosuid,rw,noauto  0       0
  none       /proc        proc             defaults                            0       0
  /dev/hda4  swap         swap             defaults                            0       0
  /dev/hda1  /mnt/dos     vfat             exec,dev,suid,rw,auto               0       0                      

Con la información contenida en este fichero, el sistema haria lo siguiente al arrancar el sistema:


  • La partición /dev/hda1 se montaria en el subdirectorio /mnt/dos

  • La partición /dev/hda2 se montaria en el subdirectorio /

  • La partición /dev/hda3 se montaria en el subdirectorio /usr

  • La partición /dev/hda4 se montaria en el subdirectorio como swap

  • La partición /dev/sda1 se montaria en el subdirectorio /home

  • Proc se montaria en el subdirectorio /proc

  • El sistema tendria información sobre como montar un disquete /dev/fd0 y un CD-Rom /dev/hdb, aunque no los monta automaticamente al arrancar por haber definido la opción noauto.

Veamos la explicación de los parametros usados en /etc/fstab:

En la columna de dispositivo (device) se indica el dispositivo/partición a montar, en la punto de montaje (mountpoint) se indica el directoria mediante el cual vamos a acceder al sistema de archivos. En la columna de tipo de sistema de ficheros (filesystemtype) se indica el sistema de ficheros que se usara sobre el dispositivo.

Las opciones (options) significan lo siguiente:


  • user,nouser: permite/no permite a un usuario ordinario montar el sistema de ficheros.

  • suid,nosuid: Permite/no permite tener ficheros con el bit de usuario definido.

  • auto/noauto: Indica que sí/no se monta cuando hacemos mount -a.

  • defaults: Aplica las opciones rw,suid,dev,exec,auto,nouser,async.

  • exec/noexec: Permite/no permite la ejecución de binarios.

  • ro,rw: Montar sólo lectura, lectura-escritura.

  • sync/async: Todos los accesos I/0 al sistema de ficheros se realizarán en modo sincrono/asincrono.

  • dev/nodev: Interpreta/no interpreta los dispositivos especiales de bloques/caracteres en el sistema de ficheros.

El fichero /etc/fstab de nuestro ejemplo nos permitiría hacer lo siguiente para montar un disquete o CD-Rom:

  mount /mnt/cdrom 
  mount /mnt/floppy

Cuando dejamos de utilizar un sistema de ficheros, tenemos que darlo de baja (desmontarlo), para eliminar todas las referencias del kernel a él. El comando utilizado para esto es umount.

Para desmontar un sistema de ficheros/dispositivo:

  umount 

ej:

  umount /mnt/floppy  
  umount /dev/fd0 

NOTA: Es necesario ejecutar el comando umount cada vez que cambiemos un disquete, ya que no siempre cuando se escribe en un dispositivo, se realiza automáticamente un volcado al dispositivo (por eso se pueden perder datos si se apaga el ordenador a lo bruto). Además si cambiamos el disquete sin hacer umount, el kernel piensa que hay el sistema de ficheros anterior y cuando guarda alguna información lo hace con referencia al retirado, perdiéndose todo.

Este es un punto a tener en cuenta con el uso de disquetes, ya que, el mecanismo para retirar un disquete es mecánico, no existe posibilidad de impedir por medio de software que álguien saque un disquete de la disquetera. No ocurre lo mismo con el CD-Rom, ya que el sistema bloqueará la posibilidad de extraerlo cuando este montado.