104.3 Lección 1
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
104 Dispositivos, sistemas de archivos Linux, estándar de jerarquía del sistema de archivos |
Objetivo: |
104.3 Controlar el montaje y desmontaje de sistemas de archivos |
Lección: |
1 de 1 |
Introducción
Hasta ahora, aprendió cómo particionar discos y cómo crear y mantener sistemas de archivos en ellos. Sin embargo, antes de poder acceder a un sistema de archivos en Linux, es necesario montarlo.
Esto significa adjuntar el sistema de archivos a un punto específico en el árbol de directorios de su sistema, llamado punto de montaje. Los sistemas de archivos se pueden montar manual o automáticamente y hay muchas formas de hacerlo. Aprenderemos sobre algunos de ellos en esta lección.
Montaje y desmontaje de sistemas de archivos
El comando para montar manualmente un sistema de archivos se llama mount
y su sintaxis es:
mount -t TYPE DEVICE MOUNTPOINT
Donde:
TYPE
-
El tipo de sistema de archivos que se está montando (por ejemplo, ext4, btrfs, exfat, etc.).
DEVICE
-
El nombre de la partición que contiene el sistema de archivos (por ejemplo,
/dev/sdb1
) MOUNTPOINT
-
Dónde se montará el sistema de archivos. No es necesario que el directorio en el que esté montado esté vacío, aunque debe existir. Sin embargo, cualquier archivo que contenga será inaccesible por su nombre mientras el sistema de archivos esté montado.
Por ejemplo, para montar una unidad flash USB que contenga un sistema de archivos exFAT ubicado en /dev/sdb1
en un directorio llamado flash
en su directorio de inicio, puede usar:
# mount -t exfat /dev/sdb1 ~/flash/
Tip
|
Muchos sistemas Linux usan el shell Bash, y en ellos la tilde |
Después del montaje, se podrá acceder al contenido del sistema de archivos en el directorio ~/flash
:
$ ls -lh ~/flash/ total 469M -rwxrwxrwx 1 root root 454M jul 19 09:49 lineage-16.0-20190711-MOD-quark.zip -rwxrwxrwx 1 root root 16M jul 19 09:44 twrp-3.2.3-mod_4-quark.img
Listado de sistemas de archivos montados
Si teclea simplemente mount
, obtendrá una lista de todos los sistemas de archivos actualmente montados en su sistema. Esta lista puede ser bastante grande porque, además de los discos conectados a su sistema, también contiene varios sistemas de archivos en tiempo de ejecución en la memoria que sirven para varios propósitos. Para filtrar la salida, puede usar el parámetro -t
para listar solo los sistemas de archivos del tipo correspondiente, como se muestra a continuación:
# mount -t ext4 /dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro)
Puede especificar varios sistemas de archivos a la vez separándolos con una coma:
# mount -t ext4,fuseblk /dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro) /dev/sdb1 on /home/carol/flash type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096) [DT_8GB]
La salida de los ejemplos anteriores se puede describir en el formato:
SOURCE on TARGET type TYPE OPTIONS
Donde SOURCE
es la partición que contiene el sistema de archivos, TARGET
es el directorio donde está montado, TYPE
es el tipo de sistema de archivos y OPTIONS
son las opciones pasadas al comando mount
en el momento del montaje.
Parámetros adicionales de la línea de comandos
Hay muchos parámetros de línea de comandos que se pueden usar con mount
. Algunas de las más utilizadas son:
-a
-
Esto montará todos los sistemas de archivos listados en el archivo
/etc/fstab
(más sobre eso en la siguiente sección). -o
o--options
-
Esto pasará una lista de opciones de montaje separadas por comas al comando de montaje, que puede cambiar cómo se montará el sistema de archivos. Estos también se discutirán junto con
/etc/fstab
. -r
o-ro
-
Esto montará el sistema de archivos como de solo lectura.
-w
o-rw
-
Esto hará que el sistema de archivos de montaje sea escribible.
Para desmontar un sistema de archivos, use el comando umount
, seguido del nombre del dispositivo o el punto de montaje. Teniendo en cuenta el ejemplo anterior, los comandos siguientes son intercambiables:
# umount /dev/sdb1 # umount ~/flash
Algunos de los parámetros de la línea de comandos para desmontar
son:
-a
-
Esto desmontará todos los sistemas de archivos listados en
/etc/fstab
. -f
-
Esto forzará el desmontaje de un sistema de archivos. Esto puede resultar útil si ha montado un sistema de archivos remoto que se ha vuelto inalcanzable.
-r
-
Si el sistema de archivos no se puede desmontar, esto intentará convertirlo en solo lectura.
Tratamiento de archivos abiertos
Al desmontar un sistema de archivos, puede encontrar un mensaje de error que indique que el target is busy
. Esto sucederá si hay archivos abiertos en el sistema de archivos. Sin embargo, puede que no sea obvio de inmediato dónde se encuentra un archivo abierto o qué está accediendo al sistema de archivos.
En tales casos, puede usar el comando lsof
, seguido del nombre del dispositivo que contiene el sistema de archivos, para ver una lista de los procesos que acceden a él y qué archivos están abiertos. Por ejemplo:
# umount /dev/sdb1 umount: /media/carol/External_Drive: target is busy. # lsof /dev/sdb1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME evince 3135 carol 16r REG 8,17 21881768 5195 /media/carol/External_Drive/Documents/E-Books/MagPi40.pdf
COMMAND
es el nombre del ejecutable que abrió el archivo y PID
es el número de proceso. NAME
es el nombre del archivo que está abierto. En el ejemplo anterior, el archivo MagPi40.pdf
es abierto por el programa evince
(un visor de PDF). Si cerramos el programa, podremos desmontar el sistema de archivos.
Note
|
Antes de que aparezca la salida lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete.
|
¿Dónde montar?
Puede montar un sistema de archivos en cualquier lugar que desee. Sin embargo, hay algunas buenas prácticas que deben seguirse para facilitar la administración del sistema.
Tradicionalmente, /mnt
era el directorio en el que se montarían todos los dispositivos externos y una serie de “puntos de anclaje” preconfigurados para dispositivos comunes, como unidades de CD-ROM (/mnt/cdrom
) y disquetes. (/mnt/floppy
) existían en él.
Esto ha sido reemplazado por /media
, que ahora es el punto de montaje predeterminado para cualquier medio extraíble por el usuario (por ejemplo, discos externos, unidades flash USB, lectores de tarjetas de memoria, etc.) conectados al sistema.
En la mayoría de las distribuciones modernas de Linux y entornos de escritorio, los dispositivos extraíbles se montan automáticamente en /media/USER/LABEL
cuando se conectan al sistema, donde USER
es el nombre de usuario y LABEL
es la etiqueta del dispositivo. Por ejemplo, una unidad flash USB con la etiqueta FlashDrive
conectada por el usuario john
se montaría en /media/john/FlashDrive/
. La forma en que se maneja esto es diferente según el entorno de escritorio.
Dicho esto, siempre que necesite montar manualmente un sistema de archivos, es una buena práctica montarlo en /mnt
.
Montaje de sistemas de archivos en el arranque
El archivo /etc/fstab
contiene descripciones sobre los sistemas de archivos que se pueden montar. Este es un archivo de texto, donde cada línea describe un sistema de archivos que se va a montar, con seis campos por línea en el siguiente orden:
FILESYSTEM MOUNTPOINT TYPE OPTIONS DUMP PASS
Donde:
FILESYSTEM
-
El dispositivo que contiene el sistema de archivos que se va a montar. En lugar del dispositivo, puede especificar el UUID o etiqueta de la partición, algo que discutiremos más adelante.
MOUNTPOINT
-
Dónde se montará el sistema de archivos.
TYPE
-
El tipo de sistema de archivos.
OPTIONS
-
Opciones de montaje que se pasarán a
mount
. DUMP
-
Indica si cualquier sistema de archivos ext2, ext3 o ext4 debe considerarse para la copia de seguridad mediante el comando
dump
. Por lo general, es cero, lo que significa que deben ignorarse. PASS
-
Cuando es distinto de cero, define el orden en el que se comprobarán los sistemas de archivos durante el arranque. Normalmente es cero.
Por ejemplo, la primera partición en el primer disco de una máquina podría describirse como:
/dev/sda1 / ext4 noatime,errors
Las opciones de montaje en OPTIONS
son una lista de parámetros separados por comas, que pueden ser genéricos o específicos del sistema de archivos. Entre los genéricos tenemos:
atime
ynoatime
-
Por defecto, cada vez que se lee un archivo, se actualiza la información de tiempo de acceso. Deshabilitar esto (con
noatime
) puede acelerar la E/S del disco. No confunda esto con la hora de modificación, que se actualiza cada vez que se escribe un archivo. auto
ynoauto
-
Si el sistema de archivos puede (o no) montarse automáticamente con
mount -a
. defaults
-
Esto pasará las opciones
rw
,suid
,dev
,exec
,auto
,nouser
yasync
amount
. dev
ynodev
-
Si deben interpretarse los dispositivos de caracteres o bloques en el sistema de archivos montado.
exec
ynoexec
-
Permitir o denegar el permiso para ejecutar binarios en el sistema de archivos.
user
ynouser
-
Permite (o no) a un usuario normal montar el sistema de archivos.
group
-
Permite a un usuario montar el sistema de archivos si el usuario pertenece al mismo grupo que posee el dispositivo que lo contiene.
owner
-
Permite a un usuario montar un sistema de archivos si el usuario posee el dispositivo que lo contiene.
suid
ynosuid
-
Permite, o no, que los bits SETUID y SETGID surtan efecto.
ro
yrw
-
Montan un sistema de archivos como de solo lectura o de escritura.
remount
-
Esto intentará volver a montar un sistema de archivos ya montado. Esto no se usa en
/etc/fstab
, sino como un parámetro paramount -o
. Por ejemplo, para volver a montar la partición/dev/sdb1
ya montada como de solo lectura, puede usar el comandomount -o remount,ro /dev/sdb1
. Al volver a montar, no es necesario especificar el tipo de sistema de archivos, solo el nombre del dispositivo o el punto de montaje. sync
yasync
-
Realizar todas las operaciones de E/S en el sistema de archivos de forma sincrónica o asincrónica.
async
suele ser el predeterminado. La página del manual demount
advierte que el uso desync
en medios con un número limitado de ciclos de escritura (como unidades flash o tarjetas de memoria) puede acortar la vida útil del dispositivo.
Uso de UUID y etiquetas
Especificar el nombre del dispositivo que contiene el sistema de archivos a montar puede presentar algunos problemas. A veces, el mismo nombre de dispositivo puede asignarse a otro dispositivo dependiendo de cuándo o dónde se conectó a su sistema. Por ejemplo, una unidad flash USB en /dev/sdb1
puede asignarse a /dev/sdc1
si se conecta a otro puerto, o después de otra unidad flash.
Una forma de evitar esto es especificar la etiqueta o UUID (Universally Unique Identifier) del volumen. Ambos se especifican cuando se crea el sistema de archivos y no cambiarán, a menos que el sistema de archivos se destruya o se le asigne manualmente una nueva etiqueta o UUID.
El comando lsblk
se puede utilizar para consultar información sobre un sistema de archivos y averiguar la etiqueta y el UUID asociados a él. Para hacer esto, use el parámetro -f
, seguido del nombre del dispositivo:
$ lsblk -f /dev/sda1 NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda1 ext4 6e2c12e3-472d-4bac-a257-c49ac07f3761 64,9G 33% /
Aquí está el significado de cada columna:
NAME
-
Nombre del dispositivo que contiene el sistema de archivos.
FSTYPE
-
Tipo de sistema de archivos.
LABEL
-
Etiqueta del sistema de archivos.
UUID
-
Identificador único universal (UUID) asignado al sistema de archivos.
FSAVAIL
-
Cuánto espacio hay disponible en el sistema de archivos.
FSUSE%
-
Porcentaje de uso del sistema de archivos.
MOUNTPOINT
-
Dónde está montado el sistema de archivos.
En /etc/fstab
un dispositivo se puede especificar por su UUID con la opción UUID=
, seguido del UUID, o con LABEL=
, seguido de la etiqueta. Entonces, en lugar de:
/dev/sda1 / ext4 noatime,errors
Usarías:
UUID=6e2c12e3-472d-4bac-a257-c49ac07f3761 / ext4 noatime,errors
O, si tiene un disco con la etiqueta homedisk
:
LABEL=homedisk /home ext4 defaults
La misma sintaxis se puede utilizar con el comando mount
. En lugar del nombre del dispositivo, pase el UUID o la etiqueta. Por ejemplo, para montar un disco NTFS externo con el UUID 56C11DCC5D2E1334
en /mnt/external
, el comando sería:
$ mount -t ntfs UUID=56C11DCC5D2E1334 /mnt/external
Montaje de discos con Systemd
Systemd es el init del sistema, el primer proceso que se ejecuta en muchas distribuciones de Linux. Es responsable de generar otros procesos, iniciar servicios y arrancar el sistema. Entre muchas otras tareas, systemd también se puede utilizar para gestionar el montaje (y montaje automático) de sistemas de archivos.
Para utilizar esta función de systemd, debe crear un archivo de configuración llamado mount unit. Cada volumen que se va a montar tiene su propia unidad de montaje y es necesario colocarlos en /etc/systemd/system/
.
Las unidades de montaje son archivos de texto simples con la extensión .mount
. El formato básico se muestra a continuación:
[Unit] Description= [Mount] What= Where= Type= Options= [Install] WantedBy=
Description=
-
Breve descripción de la unidad de montaje, algo así como
Monta el disco de respaldo
. What=
-
Qué se debe montar. El volumen debe especificarse como
/dev/disk/by-uuid/VOL_UUID
dondeVOL_UUID
es el UUID del volumen. Where=
-
Debe ser la ruta completa hacia donde se debe montar el volumen.
Type=
-
El tipo de sistema de archivos.
Options=
-
Las opciones de montaje que desee pasar, son las mismas que se utilizan con el comando
mount
o en/etc/fstab
. WantedBy=
-
Se utiliza para la gestión de dependencias. En este caso, usaremos
multi-user.target
, lo que significa que siempre que el sistema se inicie en un entorno multiusuario (un inicio normal), se montará la unidad.
Nuestro ejemplo anterior del disco externo podría escribirse como:
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
Pero aún no hemos terminado. Para que funcione correctamente, la unidad de montaje debe tener el mismo nombre que el punto de montaje. En este caso, el punto de montaje es /mnt/external
, por lo que el archivo debe llamarse mnt-external.mount
.
Después de eso, debe reiniciar el demonio systemd con el comando systemctl
e iniciar la unidad:
# systemctl daemon-reload # systemctl start mnt-external.mount
Ahora el contenido del disco externo debería estar disponible en /mnt/external
. Puede verificar el estado del montaje con el comando systemctl status mnt-external.mount
, como a continuación:
# systemctl status mnt-external.mount ● mnt-external.mount - External data disk Loaded: loaded (/etc/systemd/system/mnt-external.mount; disabled; vendor pres Active: active (mounted) since Mon 2019-08-19 22:27:02 -03; 14s ago Where: /mnt/external What: /dev/sdb1 Tasks: 0 (limit: 4915) Memory: 128.0K CGroup: /system.slice/mnt-external.mount ago 19 22:27:02 pop-os systemd[1]: Mounting External data disk... ago 19 22:27:02 pop-os systemd[1]: Mounted External data disk.
El comando systemctl start mnt-external.mount
solo habilitará la unidad para la sesión actual. Si desea habilitarlo en cada arranque, reemplace start
por enable
:
# systemctl enable mnt-external.mount
Montaje automático de una unidad de montaje
Las unidades de montaje se pueden montar automáticamente siempre que se acceda al punto de montaje. Para hacer esto, necesita un archivo .automount
, junto con el archivo .mount
que describe la unidad. El formato básico es:
[Unit] Description= [Automount] Where= [Install] WantedBy=multi-user.target
Como antes, Description=
es una breve descripción del archivo y Where=
es el punto de montaje. Por ejemplo, un archivo .automount
para nuestro ejemplo anterior sería:
[Unit] Description=Automount for the external data disk [Automount] Where=/mnt/external [Install] WantedBy=multi-user.target
Guarde el archivo con el mismo nombre que el punto de montaje (en este caso, mnt-external.automount
), vuelva a cargar systemd e inicie la unidad:
# systemctl daemon-reload # systemctl start mnt-external.automount
Ahora, siempre que se acceda al directorio /mnt/external
, se montará el disco. Como antes, para habilitar el montaje automático en cada arranque, usaría:
# systemctl enable mnt-external.automount
Ejercicios Guiados
-
Usando
mount
, ¿cómo se puede montar un sistema de archivosext4
en/dev/sdc1
a/mnt/external
como solo lectura, usando las opcionesnoatime
yasync
? -
Al desmontar un sistema de archivos en
/dev/sdd2
, aparece el mensaje de errortarget is busy
. ¿Cómo puede saber qué archivos del sistema de archivos están abiertos y qué procesos los abrieron? -
Considere la siguiente entrada en
/etc/fstab
:/dev/sdb1 /data ext4 noatime,noauto,async
. ¿Se montará este sistema de archivos si se emite el comandomount -a
? ¿Por qué? -
¿Cómo se puede averiguar el UUID de un sistema de archivos en
/dev/sdb1
? -
¿Cómo se puede usar
mount
para volver a montar como de solo lectura un sistema de archivos exFAT con el UUID6e2c12e3-472d-4bac-a257-c49ac07f3761
, montado en/mnt/data
? -
¿Cómo se puede obtener una lista de todos los sistemas de archivos
ext3
yntfs
montados actualmente en un sistema?
Ejercicios Exploratorios
-
Considere la siguiente entrada en
/etc/fstab
:/dev/sdc1 /backup ext4 noatime,nouser,async
. ¿Puede un usuario montar este sistema de archivos con el comandomount /backup
? ¿Por qué? -
Considere un sistema de archivos remoto montado en
/mnt/server
, que se ha vuelto inalcanzable debido a una pérdida de conectividad de red. ¿Cómo podría obligarlo a desmontarlo o montarlo como de solo lectura si esto no es posible? -
Escriba una entrada
/etc/fstab
que monte un volumen btrfs con la etiquetaBackup
en/mnt/backup
, con opciones predeterminadas y sin permitir la ejecución de binarios desde él. -
Considere la siguiente unidad de montaje systemd:
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
-
¿Cuál sería una entrada
/etc/fstab
equivalente para este sistema de archivos?
-
-
¿Cuál debería ser el nombre de archivo de la unidad anterior para que pueda ser utilizada por systemd? ¿Dónde debería estar?
Resumen
En esta lección, aprendió a montar y desmontar sistemas de archivos, de forma manual o automática. Algunos de los comandos y conceptos explicados fueron:
-
mount
(monta un dispositivo en una ubicación) -
umount
(desmonta un dispositivo) -
lsof
(lista los procesos que acceden a un sistema de archivos) -
Directorios
/mnt
y/media
-
/etc/fstab
-
lsblk
(lista el tipo y UUID de un sistema de archivos) -
Cómo montar un sistema de archivos usando su UUID o etiqueta.
-
Cómo montar un sistema de archivos usando unidades de montaje systemd.
-
Cómo montar automáticamente un sistema de archivos utilizando unidades de montaje systemd.
Respuestas a los ejercicios guiados
-
Usando
mount
, ¿cómo se puede montar un sistema de archivosext4
en/dev/sdc1
a/mnt/external
como solo lectura, usando las opcionesnoatime
yasync
?# mount -t ext4 -o noatime,async,ro /dev/sdc1 /mnt/external
-
Al desmontar un sistema de archivos en
/dev/sdd2
, aparece el mensaje de errortarget is busy
. ¿Cómo puede saber qué archivos del sistema de archivos están abiertos y qué procesos los abrieron?Utilice
lsof
seguido del nombre del dispositivo:$ lsof /dev/sdd2
-
Considere la siguiente entrada en
/etc/fstab
:/dev/sdb1 /data ext4 noatime,noauto,async
. ¿Se montará este sistema de archivos si se emite el comandomount -a
? ¿Por qué?No se montará. La clave es el parámetro
noauto
, lo que significa quemount -a
ignorará esta entrada. -
¿Cómo se puede averiguar el UUID de un sistema de archivos en
/dev/sdb1
?Utilice
lsblk -f
, seguido del nombre del sistema de archivos:$ lsblk -f /dev/sdb1
-
¿Cómo se puede usar
mount
para volver a montar como de solo lectura un sistema de archivos exFAT con el UUID6e2c12e3-472d-4bac-a257-c49ac07f3761
, montado en/mnt/data
?Dado que el sistema de archivos está montado, no necesita preocuparse por el tipo de sistema de archivos o el ID, simplemente use la opción
remount
con el parámetroro
(solo lectura) y el punto de montaje:# mount -o remount,ro /mnt/data
-
¿Cómo se puede obtener una lista de todos los sistemas de archivos
ext3
yntfs
montados actualmente en un sistema?Utilice
mount -t
, seguido de una lista de sistemas de archivos separados por comas:# mount -t ext3,ntfs
Respuestas a ejercicios exploratorios
-
Considere la siguiente entrada en
/etc/fstab
:/dev/sdc1 /backup ext4 noatime,nouser,async
. ¿Puede un usuario montar este sistema de archivos con el comandomount /backup
? ¿Por qué?No, el parámetro
nouser
no permitirá a los usuarios normales montar este sistema de archivos. -
Considere un sistema de archivos remoto montado en
/mnt/server
, que se ha vuelto inalcanzable debido a una pérdida de conectividad de red. ¿Cómo podría obligarlo a desmontarlo o montarlo como de solo lectura si esto no es posible?Pase los parámetros
-f
y-r
para desmontar. El comando seríaumount -f -r /mnt/server
. Recuerde que puede agrupar parámetros, por lo queumount -fr /mnt/server
también funcionaría. -
Escriba una entrada
/etc/fstab
que monte un volumen btrfs con la etiquetaBackup
en/mnt/backup
, con opciones predeterminadas y sin permitir la ejecución de binarios desde él.La línea debe ser
LABEL=Backup /mnt/backup btrfs defaults,noexec
-
Considere la siguiente unidad de montaje systemd:
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
-
¿Cuál sería una entrada
/etc/fstab
equivalente para este sistema de archivos?La entrada sería:
UUID=56C11DCC5D2E1334 /mnt/external ntfs defaults
-
-
¿Cuál debería ser el nombre de archivo de la unidad anterior para que pueda ser utilizada por systemd? ¿Dónde debería estar?
El nombre del archivo debe ser el mismo que el del punto de montaje, por lo que
mnt-external.mount
, colocado en/etc/systemd/system
.