- Dave McKay
@TheGurkha
- Actualizado el 28 de mayo de 2019, 5:15pm EDT
Los sistemas de archivos en Linux y los sistemas operativos tipo Unix como macOS pueden montarse, desmontarse y volverse a montar utilizando el terminal. Esta es una herramienta poderosa y versátil-aquí está todo lo que necesitas saber.
El sistema de archivos de Linux
Los sistemas de archivos en Linux, macOS y otros sistemas operativos tipo Unix no utilizan identificadores de volumen separados para los dispositivos de almacenamiento de la manera que, por ejemplo, lo hace Windows. Windows asigna a cada volumen una letra de unidad como C: o D: y el sistema de archivos para cada volumen es un árbol de directorios que se encuentra debajo de esa letra de unidad.
En Linux, el sistema de archivos es un árbol de directorios todo en uno. Un dispositivo de almacenamiento montado tiene su sistema de archivos injertado en ese árbol para que parezca una parte integral de un sistema de archivos cohesivo. El sistema de archivos recién montado será accesible a través del directorio en el que está montado. Ese directorio se llama el punto de montaje para ese sistema de archivos.
Muchos sistemas de archivos se montan automáticamente en el momento del arranque o sobre la marcha como volúmenes de almacenamiento conectados al ordenador durante el tiempo de ejecución. Los administradores de sistemas precavidos pueden desactivar las funciones de montaje automático en tiempo de ejecución para poder controlar las conexiones al sistema.
Esto significa que los dispositivos de almacenamiento conectados durante el tiempo de ejecución podrían no montarse automáticamente y requerir un montaje manual. Montar un sistema de archivos manualmente le permite tomar decisiones sobre ese sistema de archivos, como dónde estará el punto de montaje y si el sistema de archivos será de sólo lectura o de lectura y escritura.
Ya sea por necesidad o por elección, los comandos mount
umount
y remount
te dan la posibilidad de tomar el control de este importante aspecto de tu sistema Linux.
Interroga tu sistema de archivos con mount
Mount tiene una gran cantidad de opciones, pero para listar todos los sistemas de archivos montados en tu ordenador no requiere ninguna opción. Simplemente escriba mount
y pulse Enter:
mount
listará todos los sistemas de archivos conectados en la ventana del terminal.
Puede ser difícil escoger a través de ese volcado de datos para encontrar lo que estás buscando.
Puedes refinar la salida pidiendo a mount
que liste sólo los sistemas de archivos que te interesan. La opción -t
(type) le dice a mount
qué tipo de sistema de archivos debe informar.
mount -t tmpfs
mount -t ext4
Como ejemplo, hemos pedido a mount
que liste sólo tmpfs
sistemas de archivos. Obtenemos una salida mucho más manejable.
Un tmpfs
sistema de archivos aparece como si fuera un sistema de archivos normal y montado, pero en realidad se almacena en la memoria volátil-el tmp significa temporal-en lugar de en un dispositivo de almacenamiento persistente.
Deberás sustituir el parámetro tmpfs
por el tipo de archivo que te interesa.
También hemos emitido un comando para listar los sistemas de archivos ext4
. En este ordenador de prueba, hay un único ext4
sistema de archivos, está en el dispositivo sda
-el primer dispositivo de almacenamiento montado, normalmente el disco duro principal-y montado en /
, que es la raíz del árbol del sistema de archivos.
Los otros indicadores significan:
- rw: El sistema de archivos es legible y escribible.
- relatime: El kernel está utilizando un esquema optimizado para registrar los metadatos de acceso y modificación de los archivos.
- errors=remount -o: Si se detecta un error lo suficientemente grave, el sistema de archivos se volverá a montar en modo de sólo lectura para permitir el diagnóstico.
Relacionado: ¿Qué sistema de archivos de Linux deberías usar?
Interroga tu sistema de archivos con df
El comando df
también puede utilizarse para mostrar qué sistemas de archivos están montados y dónde están sus puntos de montaje.
df
utilizado sin parámetros da el mismo problema de sobrecarga de información que mount
. Como ejemplo, en Ubuntu Linux, hay un squashfs
pseudo-archivo creado para todas y cada una de las aplicaciones que se han instalado usando el comando snap
. Quién quiere ver todos esos?
Para obligar a df
a ignorarlos -o a cualquier otro tipo de sistema de archivos- utiliza la opción -x
(excluir):
df -x squashfs
Podrás ver fácilmente los nombres de los sistemas de archivos, sus capacidades, el espacio usado y libre, y sus puntos de montaje.
Relacionado: Cómo ver el espacio libre y el uso del disco desde el terminal de Linux
Montar todos los sistemas de archivos en fstab
Todos los sistemas de archivos montados en el arranque tienen entradas en un archivo llamado fstab
, que es la tabla de sistemas de archivos situada dentro de /etc
.
Puede utilizar mount
para forzar un «refresco» y volver a montar todos los sistemas de archivos listados en fstab
. En condiciones normales de funcionamiento esto no es necesario. Realmente es útil si tienes problemas con varios sistemas de archivos.
Tendrás que usar sudo
, por lo que se te pedirá la contraseña.
sudo mount -a
Hay que reconocer que en un ordenador que funciona correctamente, es un poco decepcionante.
En un ordenador con problemas en el sistema de archivos, sin embargo, el remontaje podría solucionar los problemas. Si eso no sucede, al menos obtendrá mensajes de diagnóstico en la pantalla y en los registros del sistema que le guiarán para buscar la causa del problema.
Relacionado: ¿Qué es el archivo fstab de Linux y cómo funciona?
Montar una imagen ISO
Es fácil montar una imagen ISO para poder acceder a su contenido como parte del sistema de archivos.
Esto funcionará con cualquier imagen ISO. En este ejemplo, resulta que usamos una ISO de Tiny Core Linux porque es convenientemente pequeña y rápida de descargar. (¡Una diminuta distribución de Linux con una GUI, en 18 MB! Probablemente tenga archivos .mp3 más grandes que eso.)
En el mismo directorio que la imagen ISO, emita este comando. Sustituye el nombre del archivo ISO que estás montando.
sudo mount -t iso9660 -o loop TinyCore-current.iso /mnt
Como tenemos que usar sudo
tendrás que introducir tu contraseña.
La opción -t
(type) nos indica mount
qué tipo de sistema de archivos estamos montando. Se trata de un archivo ISO, por lo que proporcionamos el iso9660
especificador de tipo.
La bandera -o
(opciones) se utiliza para pasar parámetros extra a mount
. Nuestro parámetro es loop
.
Estamos usando loop
para forzar a mount
a usar un archivo de dispositivo de bucle para conectarse a nuestra imagen ISO. Un archivo de dispositivo de bucle permite montar un archivo (como la imagen ISO) y tratarlo como si fuera un dispositivo de almacenamiento.
Los archivos de dispositivo son archivos especiales que se utilizan como interfaz para que los dispositivos conectados aparezcan como si fueran un archivo normal del sistema de archivos. Esto es parte de la filosofía de diseño de todo en Linux es un archivo.
Hay muchos tipos diferentes de archivos de dispositivo. Ya vimos uno antes cuando observamos que el único ext4
sistema de archivos de esta máquina de pruebas estaba montado en /
y se llamaba sda
.
Para ser más exactos, ese ext4
sistema de archivos está en un dispositivo de almacenamiento conectado al sistema de archivos a través del /dev/sda
archivo del dispositivo y el sistema de archivos de ese dispositivo de almacenamiento montado en /
.
Tenemos que proporcionar el nombre de la imagen ISO, por supuesto, y tenemos que hacer saber a mount
dónde queremos que se monte el sistema de archivos. Hemos elegido /mnt
.
La imagen ISO está montada. En la ventana del terminal aparece un recordatorio de que las imágenes ISO siempre se montan en modo de sólo lectura.
Explorando la imagen ISO
Ahora que está montada podemos navegar por los directorios de la imagen ISO de la misma manera que por cualquier otra parte del sistema de archivos. Vamos a listar los archivos de la imagen ISO. Está montada en /mnt
recuerda.
ls /mnt
ls /mnt/cde/
Desmontando la imagen ISO
Para desmontar un sistema de archivos montado, utiliza el comando umount
. Tenga en cuenta que no hay una «n» entre la «u» y la «m»: el comando es umount
y no «unmount».
Debe indicar a umount
qué sistema de archivos está desmontando. Hazlo proporcionando el punto de montaje del sistema de archivos.
sudo umount /mnt
Ninguna noticia es buena. Si no hay nada que informar, entonces todo ha ido bien.
Creando un punto de montaje
Puedes crear y utilizar tus propios puntos de montaje. Vamos a crear uno llamado isomnt
y montaremos nuestra imagen ISO en él. Un punto de montaje es sólo un directorio. Así que podemos usar mkdir
para crear nuestro nuevo punto de montaje.
sudo mkdir /media/dave/isomnt
Ahora podemos usar el mismo formato de comando que antes para montar nuestra imagen ISO. Esta vez no la montaremos en /mnt
, la montaremos en /media/dave/isomnt/
:
sudo mount -r -t iso9660 -o loop TinyCore-current.iso /media/dave/isomnt/
Ahora podemos acceder al sistema de archivos montado desde nuestro nuevo punto de montaje.
ls /media/dave/isomnt/cde/optional
Pero esos caminos se están haciendo muy largos. Eso se va a convertir rápidamente en algo tedioso. Hagamos algo al respecto.
Enlazando un punto de montaje
Puedes enlazar un punto de montaje a otro directorio. El sistema de archivos montado puede entonces ser accedido a través del punto de montaje original o a través del directorio que está vinculado a él.
Aquí tenemos un ejemplo trabajado. Crearemos un directorio en nuestro directorio principal llamado iso
. A continuación, enlazaremos el punto de montaje de la imagen ISO /media/dave/isomnt
al nuevo directorio iso
de nuestro directorio principal.
Podremos acceder a la imagen ISO a través del punto de montaje original /media/dave/isomnt
y a través del nuevo directorio iso
. La opción -B
(bind) requiere el nombre del punto de montaje y el nombre del directorio al que se va a vincular.
mkdir iso
sudo mount -B /media/dave/isomnt/ iso
ls iso
ls /media/dave/isomnt
cd iso
ls
cd cde
Usando umount con Binds
Un sistema de archivos que ha tenido su punto de montaje ligado a otro directorio requiere ser desmontado de su punto de montaje y del punto de bind.
Incluso si desmontamos el sistema de archivos desde su punto de montaje original, todavía se puede acceder al sistema de archivos desde su directorio vinculado. El sistema de archivos debe ser desmontado desde ese directorio también.
sudo umount /media/dave/isomnt
ls iso
sudo umount iso
ls iso
Montar un disquete
Una disquetera (con un disquete dentro) es un dispositivo de almacenamiento. Eso significa que se utilizará un archivo de dispositivo sd (para dispositivo de almacenamiento) para conectarse al dispositivo físico. Debemos establecer cuál es el siguiente archivo de dispositivo sd libre. Podemos hacerlo canalizando la salida de df
a través de grep
y buscando entradas con «sd» en ellas.
df | grep /dev/sd
En este ordenador, hay un único archivo de dispositivo sd en uso. Este es /dev/sda
. El siguiente archivo de dispositivo sd emitido será /dev/sdb
. Eso significa que cuando conectemos la disquetera al ordenador, Linux utilizará /dev/sdb
para conectarse a la disquetera.
Le diremos a mount
que monte el sistema de archivos del disquete en la disquetera que está conectada a /dev/sdb
al punto de montaje /mnt
.
Inserte el disquete en la unidad de disquetes y conecte la unidad de disquetes a un puerto USB del ordenador. Emite el siguiente comando:
sudo mount /dev/sdb /mnt
Etiquetas del sistema de archivos
Podemos utilizar la opción -l
(label) con mount
para averiguar qué etiqueta, si es que hay alguna, está adjunta a un sistema de archivos. Las etiquetas no son más que nombres arbitrarios. No tienen ningún propósito funcional.
Estamos usando la opción -t
(type) para pedirle a mount
que informe sobre vfat
sistemas de archivos solamente.
mount -l -t vfat
Encontrarás la etiqueta entre corchetes al final del listado. La etiqueta de esta disquetera es NORTUN.
Podemos acceder a la disquetera a través del punto de montaje /mnt
.
cd /mnt
ls
ls -l AMATCH.C
El disquete contiene archivos de código fuente en lenguaje C. El sello de fecha de un archivo muestra que fue modificado por última vez en octubre de 1992. Probablemente sea más antiguo que muchos de nuestros lectores. (Ni que decir tiene que el significado de NORTUN como etiqueta se pierde en la noche de los tiempos.)
Si repetimos nuestro comando df
canalizado a través de grep
para listar los archivos del dispositivo sd, veremos que ahora son dos.
df | grep /dev/sd
Nuestra disquetera se muestra como montada en /dev/sdb
como esperábamos. El sistema de archivos del disquete de la unidad está montado en /mnt
.
Para desmontar el disquete utilizamos umount
y le pasamos el archivo del dispositivo como parámetro.
sudo umount /dev/sdb
La opción umount Lazy
¿Qué ocurre si tú (u otro usuario) estás usando el sistema de archivos cuando intentas desmontarlo? El desmontaje fallará.
sudo umount /dev/sdb
Falló porque el directorio de trabajo actual del usuario está dentro del sistema de archivos que está intentando desmontar. Linux es lo suficientemente inteligente como para no dejarte serrar la rama en la que estás sentado.
Para superar esto utiliza la opción -l
(lazy). Esto hace que umount
espere hasta que el sistema de archivos pueda ser desmontado con seguridad.
sudo umount -l /dev/sdb
ls
cd ~
ls /mnt
Aunque se emita el comando umount
, el sistema de archivos sigue montado, y el usuario puede listar los archivos con normalidad.
En cuanto el usuario cambia de directorio a su directorio personal, el sistema de archivos del disquete se libera y se desmonta. Intentar listar los archivos en /mnt
no produce ningún resultado.
Montar un recurso compartido de Samba
Samba es un conjunto de servicios de software que permiten acceder a los recursos compartidos de red indistintamente entre los sistemas operativos Linux y similares a Unix, y los sistemas operativos Windows.
La configuración de Samba está fuera del alcance de este artículo. Pero, si tienes acceso autorizado a un recurso compartido de Samba que se ha puesto a tu disposición, así es como puedes montarlo en Linux.
Una Raspberry Pi conectada a la misma red que la máquina de pruebas tiene un recurso compartido de Samba en ella. Se trata de un directorio llamado Backup al que se le ha dado el nombre Samba de «share». Hagamos una conexión SSH a él y miremos el contenido del directorio compartido. El directorio compartido está en una memoria USB montada en la Pi.
El nombre de usuario es pi
y el nombre de red de la Raspberry Pi es marineville.local
.
ssh [email protected]
ls /media/pi/USB64/Backup
exit
El usuario emite el comando SSH
y se le pide la contraseña de su Raspberry Pi.
Proporcionan su contraseña y se autentifican. El prompt de la ventana de terminal cambia a pi@marineville
porque está conectado a la Raspberry Pi.
Listan el contenido del directorio compartido en /media/pi/USB64/Backup
. El contenido son dos directorios, uno llamado dave
y otro llamado pat
. Así que ahora sabemos qué esperar cuando montamos el recurso compartido de Samba.
Escriben exit
para desconectarse de la Raspberry Pi y el prompt cambia de nuevo a dave@howtogeek
.
Para usar Samba, debes instalar el paquete cifs-utils
.
Usa apt-get
para instalar este paquete en tu sistema si estás usando Ubuntu u otra distribución basada en Debian. En otras distribuciones de Linux, utilice la herramienta de gestión de paquetes de su distribución de Linux en su lugar.
sudo apt-get install cifs-utils
Cuando la instalación se haya completado, monte el recurso compartido con un comando como el siguiente, cambiando la dirección IP, el nombre del recurso compartido y el punto de montaje (que ya debe existir) para adaptarse a sus circunstancias.
sudo mount -t cifs -o credentials=/etc/samba/creds,uid=1000,gid=1000 //192.168.4.13/share /media/dave/NAS
Desglosemos las partes de ese comando.
- -t cifs: El tipo de sistema de archivos es cifs.
- -o credentials=/etc/samba/creds,uid=1000,gid=1000: Los parámetros de las opciones son la ruta de acceso a un archivo llamado
creds
que está asegurado y contiene el nombre de usuario y la contraseña del usuario de la Raspberry Pi; el ID de usuario (UID) y el ID de grupo (GID) que se utilizan para establecer el propietario y el grupo de la raíz del sistema de archivos. - //192.168.4.13/share: La ubicación de red del dispositivo con el recurso compartido Samba en él, y el nombre Samba del directorio compartido. La raíz del recurso compartido es un directorio llamado
Backup
, pero su nombre de recurso compartido Samba está configurado comoshare
. - /media/dave/NAS: El nombre del punto de montaje. Hay que crear el punto de montaje previamente.
Al acceder a nuestro punto de montaje en /media/dave/NAS
estamos accediendo al directorio compartido en la Raspberry Pi a través de la red. Podemos ver las dos carpetas en la Raspberry Pi llamadas dave
y pat
.
cd /media/dave/NAS
Crear y montar un sistema de archivos
Puedes usar el comando dd
para crear un archivo de imagen, y luego usar mkfs
para crear un sistema de archivos dentro de él. Ese sistema de archivos puede entonces ser montado. Esta es una buena manera de practicar y experimentar con mount
.
Utilizamos la opción if
(archivo de entrada) para decirle a dd
que utilice el flujo de valores cero de /dev/zero
como archivo de entrada.
El of
(archivo de salida) es un nuevo archivo llamado geek_fs
.
Estamos utilizando la opción bs
(tamaño de bloque) para solicitar un tamaño de bloque de 1 MB.
Usamos la opción count
para decirle a dd
que incluya 20 bloques en el archivo de salida.
dd if=/dev/zero of./geek_fs bs=1M count=20
Eso nos crea nuestro archivo de imagen. No contiene nada más que valores cero.
Podemos crear un sistema de archivos de trabajo dentro del archivo geek_fs
utilizando el comando mkfs
. La opción -t
(type) nos permite seleccionar el tipo de sistema de archivos. Vamos a crear un sistema ext4
.
mkfs -t ext4 ./geek_fs
Es todo lo que hace falta para tener un sistema de archivos en funcionamiento.
Montémoslo en /media/dave/geek
y luego utilicemos chown
para establecer las titularidades de propietario y grupo para permitir el acceso al mismo.
sudo mount ./geek_fs /media/dave/geek
sudo chown dave:users /media/dave/geek
¿Funciona? Cambiemos al nuevo sistema de archivos y copiemos un archivo para ver.
cd /media/dave/geek
cp /etc/fstab .
ls -l
Hemos podido cambiar de directorio al nuevo sistema de archivos, y hemos hecho con éxito una copia del archivo /etc/fstab
. ¡Ya está funcionando!
Si usamos mount
para listar los sistemas de archivos montados pero restringimos su salida a los sistemas de archivos ext4
usando la opción -t
(tipo), veremos que ahora hay dos sistemas de archivos montados ext4
.
mount -t ext4
Remontando un sistema de archivos
El montaje de un sistema de archivos utiliza la opción -o remount
. Se suele hacer para cambiar un sistema de archivos de un estado de sólo lectura (pruebas) a un estado de lectura-escritura (producción).
Volvamos a montar nuestra disquetera. Esta vez usaremos la bandera -r
(sólo lectura). Luego canalizaremos mount
a través de grep
y miraremos los detalles del sistema de archivos del disquete.
sudo mount -r /dev/sdb /mnt
mount | grep /mnt
Como puedes ver el resaltado ro
indica que el sistema de archivos está montado de sólo lectura.
Usando la opción -o remount
con la bandera rw
(lectura-escritura) podemos desmontar y volver a montar el sistema de archivos con la nueva configuración, todo en un solo comando.
sudo mount -o remount,rw /mnt
Repetir la canalización de mount
a través de grep
nos muestra que el ro
ha sido sustituido por rw
(resaltado). El sistema de archivos está ahora en modo lectura-escritura.
mount | grep /mnt
(No) mover un sistema de archivos
Antes podías desmontar un sistema de archivos y volver a montarlo en otro punto de montaje con un solo comando.
La opción -M
(mover) en mount
existe específicamente para permitirte hacer eso. Pero ya no funciona en las distribuciones de Linux que han pasado a systemd
. Y esa es la mayoría de los grandes nombres.
Si intentamos mover un sistema de archivos de /mnt
a ./geek
, falla y da el mensaje de error que se muestra a continuación. Al intentar listar los archivos en el sistema de archivos a través de ./geek
no se obtienen resultados.
sudo mount -M /mnt ./geek
ls ./geek
La solución es utilizar la opción -B
(bind) que utilizamos anteriormente para enlazar el punto de montaje original con el nuevo punto de montaje.
sudo mount -B /mnt ./geek
ls ./geek
Aparte de no liberar el punto de montaje original, esto tendrá el mismo resultado práctico.
Observaciones finales
Usando la opción --make-private
era posible forzar el movimiento para que tuviera lugar en systemd
versiones de Linux. Esa técnica no se presenta aquí por dos razones.
- Puede tener un comportamiento imprevisible.
- No era persistente y tendría que repetirse en cada reinicio.
Devuan Linux utiliza SysV
init no systemd
. Se cargó un ordenador con la última versión de Devuan y se probó. La opción -M
(mover) funcionó como se esperaba en ese sistema.
Aparte de los problemas de systemd
con la opción -M
(mover), deberías encontrar el uso de mount
y umount
sencillo. Estos comandos son muy útiles cuando el sistema está dañado y hay que empezar a reconstruir el sistema de archivos a mano.
Dave McKay utilizó por primera vez los ordenadores cuando la cinta de papel perforada estaba de moda, y ha estado programando desde entonces. Tras más de 30 años en el sector de la informática, ahora es un periodista tecnológico a tiempo completo. A lo largo de su carrera, ha trabajado como programador independiente, director de un equipo internacional de desarrollo de software, gestor de proyectos de servicios informáticos y, más recientemente, como responsable de protección de datos. Dave es un evangelista de Linux y defensor del código abierto.Leer Biografía Completa «