En este artículo veremos algunos métodos para montar y desmontar particiones en Linux desde la interfaz de línea de comandos (CLI).
- Introducción
- Conceptos a tener en cuenta antes de montar las unidades
- Montar una unidad o partición por demanda con el comando mount
- Sistema de archivos (Tipo)
- Opciones de montaje (Opciones)
- Dispositivo
- Punto de montaje
- Ejemplos
- Forma básica de montar una partición
- Montar una partición FAT16 o FAT32
- Montar una partición NTFS
- Montar unidad CD/DVD
- Montar unidad CD/DVD con tipo auto
- Montar dispositivo USB
- Montar imagen ISO
- Montar una carpeta en memoria RAM
- Montar unidades de red Samba
- Montar unidades de red NFS
- Montar directorio remoto con SSH
- Montar usando opciones más complejas
- Desmontar una unidad o partición por demanda con el comando umount
- Montar una unidad o partición al inicio del sistema
- Introducción (Volver al índice General)
En Linux podemos montar las unidades de almacenamiento desde el entorno de escritorio (KDE, Gnome, Xfce, etc) o también desde la interfaz de línea de comandos (CLI). En este artículo nos centraremos en los comandos a utilizar desde la interfaz de línea de comandos (CLI) ya que hay situaciones, como en la administración de servidores sin entorno de escritorio, en las que no nos queda más remedio que recurrir a la consola.Con los comandos de consola no solo aprenderemos a montar una unidad de almacenamiento por demanda, también aprenderemos a configurar nuestro sistema para que monte dichas unidades al inicio del mismo.
- Conceptos a tener en cuenta antes de montar las unidades (Volver al índice General)
Antes de empezar, tenemos que conocer algunos conceptos importantes. Estos conceptos son los siguientes:- Cómo se nombran las unidades y particiones en Linux (Volver al índice General)
En Linux no existen las unidades de la A a la Z como en Windows, se nombran de forma muy distinta. Podría decirse que en Linux todo son archivos. Los dispositivos de almacenamiento como discos duros, CD/DVD, floppies, unidades de cinta, memorias USB, etc, e incluso las terminales, puertos serie, interfaces de red, etc, todos ellos están enlazados a un archivo de dispositivo, es decir, el archivo de dispositivo representa al dispositivo, ya sea físico o virtual, para comunicarlo con programas que se ejecutan en la máquina. No es un archivo propiamente dicho, sino que el usuario lo ve como un archivo. Estos archivos se encuentran en el directorio/dev
.A continuación veremos un esquema básico de como se nombran los dispositivos de almacenamiento y sus particiones:
- Discos SCSI, SAS, SATA y USB:
La primera unidad de disco SCSI se llama/dev/sda
, la segunda unidad de disco SCSI se llama/dev/sdb
, y así sucesivamente.
Veamos ahora como se nombran las particiones dentro de cada unidad de disco. Nombraremos las del discosda
, pero sigue el mismo patrón para todas las unidades de disco del tiposd$x
, donde el signo$
corresponde a las letras a, b, c…etc yx
es el orden que ocupa la partición en el disco:- Primera partición primaria:
sda1
. - Segunda partición primaria:
sda2
. - Tercera partición primaria:
sda3
. - Cuarta partición primaria:
sda4
. - Partición extendida:
Nota: Solo puede existir una partición extendida por disco y sirve para contener las particiones lógicas.
Dentro de la partición extendida, las particiones lógicas se nombran de la siguiente forma:
- Primera partición lógica:
sda5
. - Segunda partición lógica:
sda6
, y así sucesivamente.
Nota: Un disco solo puede tener 4 particiones primarias, si queremos romper el límite de 4 particiones, tendremos que crear una partición extendida en lugar de una primaria y dentro de la extendida, se crean las particiones lógicas que necesitemos. El número máximo de particiones lógicas por disco va de 15 a 23 dependiendo del sistema operativo instalado. Por lo tanto, si queremos tener un disco de más de 4 particiones, obligatoriamente tendrá entre 1 y 3 particiones primarias, una partición extendida y un número de particiones lógicas entre 15 y 23.
Nota: Las unidades de almacenamiento SATA, SAS y USB utilizan el subsistema SCSI por lo que se nombrarán de la forma
sd$x
, donde el signo$
corresponde a las letras a, b, c…,etc yx
es el orden que ocupa la partición en el disco. Número más pequeño al principio del disco y número más alto, al final del disco. - Primera partición primaria:
- Discos XT:
Los discos XT son discos duros híbridos que incluyen un pequeño SSD.
La primera unidad de disco XT se llama/dev/xda
, la segunda unidad de disco XT se llama/dev/xdb
.Nota: Para establecer el tipo y el número de particiones de los discos XT, se siguen las mismas reglas que las vistas para los discos SCSI, solo tendremos que tener en cuenta que cambia
sd$x
porxd$x
, donde el signo$
corresponde a las letras a, b, c,…,etc yx
es el orden que ocupa la partición en el disco. Número más pequeño al principio del disco y número más alto, al final del disco. - Discos IDE:
Hoy día quedan pocos en uso, han quedado obsoletos, no obstante, vamos a ver como se nombran las unidades de disco IDE:- El disco maestro en el controlador IDE primario se llama
/dev/hda
. - El disco esclavo en el controlador IDE primario se llama
/dev/hdb
. - El disco maestro en el controlador IDE secundario se llama
/dev/hdc
. - El disco esclavo en el controlador IDE secundario se llama
/dev/hdd
.
Nota: Para establecer el tipo y el número de particiones de los discos IDE, se siguen las mismas reglas que las vistas para los discos SCSI, solo tendremos que tener en cuenta que cambia
sd$x
porhd$x
, donde el signo$
corresponde a las letras a, b, c o d yx
es el orden que ocupa la partición en el disco. Número más pequeño al principio del disco y número más alto, al final del disco. - El disco maestro en el controlador IDE primario se llama
- Discos CD/DVD unidades de Cinta y Floppies:
- La primera unidad de un CD/DVD SCSI se llama
/dev/scd0
, también conocida como/dev/sr0
. Si hay más de una unidad, la segunda unidad se llamascd1
osr1
y así sucesivamente.
Las unidades CD/DVD IDE se nombran dependiendo del controlador IDE que se utilice:hda
,hdb
,hdc
ohdd
. - En el caso de las unidades de cinta, dependerá si utilizan el subsistema SCSI o IDE.
- La primera unidad de cinta SCSI se llama
/dev/st0
, la segunda unidad se llama/dev/st1
, y así sucesivamente. - La primera unidad de cinta IDE se llama
/dev/ht0
, la segunda unidad se llama/dev/ht1
, y así sucesivamente.
- La primera unidad de cinta SCSI se llama
- La primera unidad de disco flexible (floppy) se llama
/dev/fd0
, la segunda unidad se llama/dev/fd1
, y así sucesivamente.
Es muy común encontrar en el directorio/dev
dispositivos con nombres descriptivos, por ejemplo/dev/cdrom
o/dev/cdrom0
. En realidad lo que vemos es un enlace blando a/dev/sr0
,/dev/scd0
,/dev/hdb
o cualquier otro fichero asociado a nuestro CD/DVD. Por ejemplo supontamos que nuestro CD/DVD físico está asociado al archivo/dev/sr0
, y queremos que además, esté asociado al archivo/dev/cdrom
, pues bien, con el siguiente comando podremos hacerlo:$ sudo ln -s /dev/sr0 /dev/cdrom
Nota: Las unidades CD/DVD, las unidades de cinta y los discos flexible (floppy) no contienen particiones.
- La primera unidad de un CD/DVD SCSI se llama
- Discos SCSI, SAS, SATA y USB:
- Dónde se montan las unidades (Volver al índice General)
En Linux, todas las unidades o particiones se montan sobre directorios que pertenecen a un sistema de jerarquía de directorios, donde el directorio raíz (/
) es el primer directorio o carpeta de dicha jerarquía. El estándar de jerarquía del sistema de archivos (Filesystem Hierarchy Standard, FHS) es la norma que define los directorios principales y su contenido en sistemas Linux y derivados de Unix.Al directorio donde vamos a montar nuestro dispositivo o partición lo llamaremos
punto de montaje
.Es muy común que los dispositivos extraíbles se monten sobre los directorios
/media
o/mnt
, pero no es obligatorio, podremos montarlos en un directorio creado por nosotros según nuestros intereses.
Por ejemplo, comunmente, un CD/DVD suele montarse en el directorio/media/cdrom0
o/mnt/cdrom0
.
Una memoria USB (Pendrive) podría montarse, por ejemplo, en/media/pendrive
dondependrive
es el directorio que hemos creado como punto de montaje para nuestra memoria USB (Pendrive).
- Cómo se nombran las unidades y particiones en Linux (Volver al índice General)
- Montar una unidad o partición por demanda con el comando mount (Volver al índice General)
Para montar unidades o particiones por demanda, vamos a utilizar el comandomount
. La sinopsis básica del comandomount
es la siguiente:mount -t <tipo> [-o opciones] <dispositivo> <punto-de-montaje>
Desglosemos un poco la sinopsis básica:
- tipo (Volver al índice General)
El argumento que sigue a la opción-t
(o también--types
) indica el tipo de sistema de archivos que vamos a montar. Los tipos de sistemas de archivos más comunes son ext3, ext4, ReiserFS, ufs, hfs, hfs+, vfat, exfat, ntfs, cifs, nfs, tmpfs, auto, etc. Los tipos de sistemas de archivos soportados por nuestro sistema dependerá del kernel que se encuentre en ejecución.Para obtener una lista completa de los tipos de sistemas de archivos soportados por nuestro kernel, podemos visualizar el archivo
/proc/filesystems
:$ cat /proc/filesystems
También podemos listar los tipos de sistemas de archivos soportados por nuestro kernel viendo el contenido del directorio
/lib/modules/$(uname -r)/kernel/fs
, dónde$(uname -r)
es una variable que obtiene la versión de nuestro kernel con el comandouname -r
:$ ls -l /lib/modules/$(uname -r)/kernel/fs
De este modo tendremos una visión precisa de los sistemas de archivos soportados por nuestro sistema.
Tened presente que para montar algunos tipos de sistemas de archivo habrá que instalar paquetes adicionales, como puede ocurrir con los tipos exFAT, ntfs, hfs, hfs+ o recursos Samba.
Nota: El tipo auto intentará descubrir automáticamente el sistema de archivos apropiado, aunque podría reconocer un tipo de sistema de archivos equivocado.
- opciones (Volver al índice General)
A continuación explicamos algunas de las opciones de montaje más usadas. Son mas de las que mostramos aquí, pero si queréis conocer todas las opciones, las encontraréis en las páginas man del comando mount y del archivo fstab.Téngase en cuenta que algunas de estas opciones solo son útiles cuando aparecen en el archivo
/etc/fstab
.Opciones comunes para todos los sistemas de archivos
- auto: El sistema de archivos será montado automáticamente durante el arranque, o cuando la orden
mount -a
se invoque. - noauto: El sistema de archivos no será montado automáticamente, solo cuando se le ordene manualmente.
- dev: Intérprete de los dispositivos especiales o de bloque del sistema de archivos.
- nodev: Impide la interpretación de los dispositivos especiales o de bloques del sistema de archivos.
- exec: Permite la ejecución de binarios residentes en el sistema de archivos.
- noexec: No permite la ejecución de binarios que se encuentren en el sistema de archivos.
- rw: Monta el sistema de archivos en modo lectura-escritura.
- ro: Monta el sistema de archivos en modo sólo lectura.
- sync: Todo el I/O se debe hacer de forma sincrónica.
- async: Todo el I/O se debe hacer de forma asíncrona.
- suid: Permite las operaciones de suid, y sgid bits. Se utiliza principalmente para permitir a los usuarios comunes ejecutar binarios con privilegios concedidos temporalmente con el fin de realizar una tarea específica.
- nosuid: Bloquea el funcionamiento de suid, y sgid bits.
- user: Permite a cualquier usuario montar el sistema de archivos. Esta opción incluye noexec, nosuid, nodev, a menos que se indique lo contrario.
- nouser: Solo el usuario root puede montar el sistema de archivos.
- users: Permite que cualquier usuario perteneciente al grupo users montar el sistema de archivos.
- defaults: Asigna las opciones de montaje predeterminadas que serán utilizadas para el sistema de archivos. Las opciones predeterminadas para ext4 son: rw, suid, dev, exec, auto, nouser, async.
- nofail: Monta el dispositivo cuando está presente, pero ignora su ausencia. Esto evita que se cometan errores durante el arranque para los medios extraíbles.
- noatime: Deshabilita por completo el registro de tiempo de acceso para cualquier archivo. Implica la aplicación de nodiratime. Teniendo en cuenta que además se anota el acceso a los ficheros cacheados y el acceso constante a todos los ficheros de procesos del sistema, es un número muy importante de escrituras de fechas de acceso. Al reducir la cantidad de escrituras que el sistema operativo realiza sobre el disco, incrementamos la vida de la unidad SSD.
- nodiratime: Deshabilita el registro de tiempos de acceso para los directorios, pero mantiene activo el registro para los archivos.
- relatime: Limita el registro de timestamps únicamente a aquellos casos en que el archivo se modifica.
- owner: Permite al propietario del dispositivo montarlo.
De las tres opciones anteriores, la opción menos invasiva es claramente relatime, que ya de por sí ofrecerá alguna ganancia en el rendimiento de nuestros discos duros, sobre todo mecánicos. La opción que más rendimiento ofrece es noatime.
Opciones de montaje para tmpfs- size: Opción válida solo para sistemas tmpfs. Limita el tamaño que se utilizará de RAM. Por defecto se utiliza como máximo la mitad de la memoria RAM. También se puede expresar el tamaño en porcentajes de memoria RAM. Por ejemplo
size=50%
.
Opciones de montaje para ext3- commit=30: Retrasa la escritura de los metadatos de ficheros, con lo que se reduce mucho el uso de disco. No recomendable si estuviésemos en un ordenador con batería.
- data=writeback: Evita que los metadatos de los archivos sean escritos de forma lenta tras escribir los archivos. Esta opción no provoca corrupción en el sistema de archivos, pero puede provocar que los cambios mas recientes se pierdan si cae el sistema. No lo incluiremos en nuestros ejemplos ya que no funciona en algunos sistemas.
Opciones de montaje para ext4
Las opciones anteriores para ext3 son válidas para ext4.- discard/nodiscard: Emite las órdenes TRIM para dispositivos de bloques subyacentes cuando se liberan los bloques. Recomendado para usar si el sistema de archivos se encuentra en un sistemas de ficheros ubicados en unidades SSD.
- nodelalloc: Desactiva la función de ext4 de delayed allocation, que reserva el espacio pero no lo escribe. Aplaza la escritura de bloques hasta que se esté en el tiempo de escritura. Es más que nada por seguridad.
- barrier=0/barrier=1/barrier/nobarrier: Desactiva las barreras automáticamente. Se refiere a los límites de escritura. Si es igual a cero los elimina, si es igual a 1, los activa. Podemos prescindir de estas barreras si los discos están protegidos contra cortes de corriente. Sólo en este caso, incluimos la opción barrier=0
- i_version: Habilita el uso de la versión extendida de 64 bits en sistemas de ficheros ext4.
- inode_readahead_blks=64: Aumenta de 32 a 64 el tamaño de los bloques de lectura.
Opciones de montaje para vfat- flush: Si se establece, el sistema de archivos intentará descargarse en el disco más rápido de lo normal. No se establece de forma predeterminada.
NOTA: Para añadir más de una opción de montaje, deberán añadirse separadas por comas (
,
) y sin espacios. - auto: El sistema de archivos será montado automáticamente durante el arranque, o cuando la orden
- dispositivo (Volver al índice General)
El dispositivo hace referencia al disco físico, partición, cinta, imagen ISO, recurso compartido en red, etc. Se expresará de la forma indicada en el punto Cómo se nombran las unidades y particiones en Linux. Por ejemplo/dev/sda1
,/dev/sr0
, etc.Para conocer el nombre de las unidades y particiones que tenemos en nuestro sistema, solo tendremos que ejecutar el siguiente comando:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
$ sudo fdisk -l Disco /dev/sdb: 931,5 GiB, 1000204886016 bytes, 1953525168 sectoresUnidades: sectores de 1 * 512 = 512 bytes Tamaño de sector (lógico/físico): 512 bytes / 512 bytes Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes Tipo de etiqueta de disco: dos Identificador del disco: 0xa4304345 Disposit. Inicio Comienzo Final Sectores Tamaño Id Tipo /dev/sdb1 2048 19531775 19529728 9,3G 83 Linux/dev/sdb2 19531776 996093951 976562176 465,7G 83 Linux/dev/sdb3 996093952 1953523711 957429760 456,6G 83 Linux Disco /dev/sda: 223,6 GiB, 240057409536 bytes, 468862128 sectoresUnidades: sectores de 1 * 512 = 512 bytes Tamaño de sector (lógico/físico): 512 bytes / 512 bytes Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes Tipo de etiqueta de disco: dos Identificador del disco: 0x2ff4e54b Disposit. Inicio Comienzo Final Sectores Tamaño Id Tipo /dev/sda1 2048 7813119 7811072 3,7G 82 Linux swap / Solaris/dev/sda2 * 7813120 273438719 265625600 126,7G 83 Linux/dev/sda3 273438720 468860927 195422208 93,2G 83 Linux
- Las líneas 2 y 14 nos indican el nombre de las unidades.
- Las líneas 10, 11, 12, 22, 23 y 24 nos indican el nombre de las parciones de cada unidad.
Existen otros comandos para mostrar información de nuestros discos y particiones como son: lsscsi, lsblk o df.
- Punto de montaje (Volver al índice General)
Es el directorio perteneciente al sistema de jerarquía de directorios donde se montará la unidad, partición o imagen, es decir, ahí es dónde acudiremos para ver los datos que contienen las unidades o imágenes. Este directorio puede existir o en su defecto, tendremos que crearlo antes de realizar el montaje. En ZeppelinuX hemos publicado el artículo Crear directorios en Linux con mkdir el cual os puede interesar. - Ejemplos (Volver al índice General)
A continuación veremos unos ejemplos básicos para montar sistemas de archivos.- Forma básica de montar una partición (Volver al índice General)
$ sudo mount /dev/particion /media/punto-de-montaje
lo anterior es lo mismo que:
$ sudo mount -t auto /dev/particion /media/punto-de-montaje
Habrá sistemas que soliciten el tipo de sistema de archivos a montar, en estos casos tendremos que utilizar el parámetro
-t
(o también--types
).
No olvidar que el tipo auto intentará descubrir automáticamente el sistema de archivos apropiado, aunque podría reconocer un tipo de sistema de archivos equivocado. - Montar una partición FAT16 o FAT32 (Volver al índice General)
Por ejemplo, vamos a montar la unidad/dev/sdc1
en la ubicación/media/tempfat
:$ sudo mount -t vfat /dev/sdc1 /media/media/tempfat
- Montar una partición NTFS (Volver al índice General)
Por ejemplo, vamos a montar la unidad/dev/sdc2
en la ubicación/media/tempntfs
:$ sudo mount -t ntfs /dev/sdc2 /media/tempntfs
- Montar unidad CD/DVD (Volver al índice General)
Por ejemplo, vamos a montar la unidad/dev/sr0
en la ubicación/media/cdrom
:$ sudo mount -t iso9660 /dev/sr0 /media/cdrom
- Montar unidad CD/DVD con tipo auto (Volver al índice General)
Por ejemplo, vamos a montar la unidad/dev/sr0
en la ubicación/media/cdrom
:$ sudo mount -t auto /dev/sr0 /media/cdrom
En este caso el tipo
auto
intentará descubrir automáticamente el sistema de archivos apropiado, aunque podría reconocer un tipo de sistema de archivos equivocado. Podemos utilizar el tipoauto
para todos nuestros dispositivos y esperar que el sistema reconozca nuestro sistema de archivos. - Montar dispositivo USB (Volver al índice General)
El montaje de un dispositivo USB es igual que para cualquier unidad o partición de un disco normal. Solo tendremos que conocer el nombre de nuestrodispositivo
y supartición
a montar y crear o utilizar una carpeta para su punto de montaje.
Por ejemplo, supongamos que después de ejecutar el comandofdisk -l
obtenemos la información sobre nuestro dispositivo USB y la cual nos indica que, el tipo de sistema de archivos es NTFS y el nombre de nuestro dispositivo, es/dev/sdh1
y además, hemos creado con mkdir el directorio/mnt/usb01
en el cual montaremos nuestro dispositivo USB. Pues bien, el comando a ejecutar sería el siguiente.$ sudo mount -t ntfs /dev/sdh1 /mnt/usb01
- Montar imagen ISO (Volver al índice General)
En este caso veremos todos los pasos:- Creamos el directorio que nos servirá de punto de montaje. Podremos crearlo donde y con el nombre que queramos:
$ sudo mkdir /mnt/iso
- Cargamos el módulo
loop
al kernel. El móduloloop
indica al kernel que es un dispositivo de bucle que se lee a si mismo:$ sudo modprobe loop
- Finalmente, montamos la imagen ISO:
$ sudo mount -t iso9660 -o loop /ruta/archivo.iso /mnt/iso
- Creamos el directorio que nos servirá de punto de montaje. Podremos crearlo donde y con el nombre que queramos:
- Montar una carpeta en memoria RAM (Volver al índice General)
El motivo por el cual vamos a montar las carpetas en memoria RAM son la velocidad o rapidez a la que trabaja la RAM.
Hay que tener en cuenta el hecho de que al montar en RAM las carpetas temporales, estas irán cogiendo RAM según necesidad. El montarlas en RAM no implica que agoten su totalidad. No nos olvidemos que cuando desmontemos o apaguemos el equipo los datos se perderán ya que están ubicados en RAM.Supongamos que hemos creado con mkdir el directorio
/mnt/ram01
en el cual montaremos nuestra carpeta temporal.$ sudo mount -t tmpfs tmpfs /mnt/ram01
Podemos limitar el uso de la RAM añadiendo el parámetro delimitador size. Con este parámetro estamos ordenando al sistema, que bajo ningún concepto conceda más RAM a dichos puntos de montaje que el indicado con el parámetro size. A continuación ponemos un ejemplo de como limitar el tamaño asignado a 3GB:
$ sudo mount -t tmpfs -o size=3G tmpfs /mnt/ram01/
En ZeppelinuX hemos publicado el artículo Montar las carpetas /tmp y /var/tmp en memoria RAM que puede que sea de vuestro interés.
- Montar unidades de red Samba (Volver al índice General)
Por ejemplo, vamos a montar el recurso compartido de red//naslan1/Backup
en el punto de montaje/mnt/NAS-ZeppelinuX
:$ sudo mount -t cifs //naslan1/Backup /mnt/NAS-ZeppelinuX/
Donde:
- cifs : Sistema de archivos de Samba.
- naslan1 : Nombre del host (hostname). También podemos utilizar la IP del mismo.
- Backup : Nombre del recurso compartido.
- /mnt/NAS-ZeppelinuX/ : Directorio (punto de montaje) donde montaremos localmente el recurso remoto.
Si el recurso Samba está protegido con usuario y contraseña, tendremos que pasar como parámetro las credenciales de acceso. En nuestro ejemplo, utilizaremos el parámetro credentials para pasar al comando las credenciales del usuario con privilegios para montar el recurso.$ sudo mount -t cifs //naslan1/Backup /mnt/NAS-ZeppelinuX/ -o credentials=/etc/samba/.credenciales.NAS
Donde:
- credentials : Es la opción que usaremos para pasar las credenciales de acceso al recurso y, /etc/samba/.credenciales.NAS es un archivo donde se guardan las credenciales. El nombre del archivo será de nuestra elección y ha de ser un archivo de texto plano con las siguientes líneas:
username=nombre_de_usuario password=contraseña_para_username
Si trabajamos en un dominio o grupo de trabajo añadiremos la siguiente línea a las dos anteriores:
domain=el_dominio
Es aconsejable que este archivo esté oculto (de ahí que le hayamos añadido un punto al comienzo de su nombre) y que solo tenga privilegios de lectura y escritura el usuario o grupo que lo vaya a utilizar. En nuestro caso, solo el root tiene permiso de escritura y lectura. El siguiente comando asigna el usuario y grupo al archivo:
$ sudo chown root:root /etc/samba/.credenciales.NAS
El siguiente comando asigna privilegios de lectura y escritura solo al usuario, en este caso el root:
$ sudo chmod 600 /etc/samba/.credenciales.NAS
En ZeppelinuX hemos publicado el artículo Montar unidades de red Samba en Linux que puede que sea de vuestro interés.
- Montar unidades de red NFS (Volver al índice General)
NFS permite que máquinas Unix/Linux compartan sus archivos y directorios a través de la red. Un equipo con Linux y con cliente NFS instalado, podrá montar un directorio que reside en otro equipo, que ejecute el servicio NFS, como si fuese un directorio local.Nota: El usuario del equipo cliente deberá tener permisos de acceso en el equipo servidor, al menos para acceder a los directorios compartidos por el servidor NFS.
La sintaxis básica para montar unidades de red NFS utilizando el comando
mount
es la siguiente:mount -t nfs [-o opciones] servidor:/ruta/a/exportar /punto_de_montaje_local
- nfsvers: Especifica que versión del protocolo NFS usar. Los valores son
2
,3
y4
. p.e:nfsvers=3
. - hard/soft:
- hard: Si el servidor NFS no responde, las solicitudes NFS se reintentan indefinidamente. Este es el comportamiento por omisión. Conjuntamente con la opción
intr
, si el servidor NFS no responde, el proceso se interrumpe y cuando el servidor NFS vuelve a estar en línea, el proceso continua desde donde se interrumpió. - soft: Si el servidor NFS no responde, devuelve un error de E/S al programa llamador tras esperar el tiempo indicado en la opción
timeo
. El valor por omisión es seguir intentando la operación NFS indefinidamente. En ciertos casos, la opciónsoft
puede provocar la corrupción o pérdida de datos.
- hard: Si el servidor NFS no responde, las solicitudes NFS se reintentan indefinidamente. Este es el comportamiento por omisión. Conjuntamente con la opción
- intr: Permite que las solicitudes NFS se interrumpan si el servidor NFS deja de responder. Se aconseja el uso de
intr
con la opciónhard
. - timeo: Define el tiempo, en décimas de segundo, que el cliente NFS espera una respuesta antes de reintentar una solicitud NFS. p.e:
timeo=10
. - rsize/wsize: Define el número máximo de bytes en cada solicitud de lectura/escritura que el cliente NFS puede recibir o enviar en la comunicación con el servidor NFS.
rsize
/wsize
será un valor múltiplo integral positivo de1024
. Los valores inferiores a1024
se reemplazan por4096
. Los valores mayores que1048576
se reemplazan por1048576
. Si el valor especificado está dentro del rango permitido pero no es múltiplo de1024
, se redondea hacia abajo al múltiplo de1024
más cercano. p.e:rsize=8192,wsize=8192
- retrans: Es el número de veces que el cliente NFS reintenta una solicitud antes de intentar una acción de recuperación. Si no se especifica esta opción, por defecto, el cliente NFS intenta cada solicitud
3
veces. p.e: retrans=7 - noexec: No permite la ejecución de binarios que se encuentren en el sistema de archivos. Útil si el sistema que se está montando no es un sistema de archivos Linux y sus binarios son incompatibles.
- nosuid: Bloquea el funcionamiento de suid, y sgid bits.
- tcp/udp: El protocolo de transporte por defecto para NFS es UDP. Sin embargo, la opción
tcp
permite el soporte de NFS sobre TCP.
Veamos algunos ejemplos:$ sudo mount -t nfs -o hard,timeo=20,nosuid,tcp 192.168.0.100:/home/anacleto/informes /mnt/informes
El siguiente ejemplo es igual al anterior pero utilizando un nombre de máquina en vez de IP:
$ sudo mount -t nfs -o hard,timeo=20,nosuid,tcp pc003.zeppelinux.es:/home/anacleto/informes /mnt/informes
O también:
$ sudo mount -t nfs -o rsize=8192,wsize=8192,timeo=15,intr pc003.zeppelinux.es:/home/anacleto/informes /mnt/informes
- nfsvers: Especifica que versión del protocolo NFS usar. Los valores son
- Montar directorio remoto con SSH (Volver al índice General)
En ZeppelinuX hemos publicado el artículo SSHFS: Montar directorio remoto con SSH en Debian. En dicho artículo se explica como montar directorios remotos utilizando el protocolo SSH utilizando el sistema de archivos SSHFS. En el artículo se presentan dos métodos de montaje, uno por demanda con el comandosshfs
y otro utilizando el archivo/etc/fstab
. - Montar usando opciones más complejas (Volver al índice General)
Veamos un ejemplo en el que montamos una partición en modo solo lectura, que no permita la ejecución de binarios que se encuentren en el sistema de archivos, que impida la interpretación de los dispositivos especiales o de bloques del sistema de archivos y que bloquea el funcionamiento de suid, y sgid bit. Además, utilizaremos el tipoauto
para que intente descubrir automáticamente el sistema de archivos apropiado:$ mount -t auto -o ro,noexec,nodev,nosuid /dev/hdc1 /mnt/directorio
- Forma básica de montar una partición (Volver al índice General)
- tipo (Volver al índice General)
- Desmontar una unidad o partición por demanda con el comando umount (Volver al índice General)
Si necesitamos desmontar una partición o dispositivo, solo tendremos que ejecutar el siguiente comando:$ sudo umount directorio
Donde
directorio
es el punto de montaje del dispositivo.Por ejemplo:
$ sudo umount /media/cdrom
o también:
$ sudo umount /mnt/iso
- Montar una unidad o partición al inicio del sistema (Volver al índice General)
El montaje por demanda tiene el inconveniente de que la partición o dispositivo estará montada mientras el sistema no se apague o reinicie, si ocurriese esto, tendríamos que volver a montar la partición o dispositivo. Si lo que nos interesa es que la partición o dispositivo se monte al inicio del sistema tendremos que trabajar con el archivo fstab. También existe un sistema de automontaje para medios extraíbles llamado autofs, pero en este artículo solo trabajaremos con fstab, el uso de autofs queda para otro artículo.- El archivo /etc/fstab (Volver al índice General)
El archivo fstab se ubica en/etc
, es decir su ruta sería/etc/fstab
. Cada sistema de archivos se describe en una sola línea y cada campo (columna) se separa por tabulaciones o espacios. Las líneas que empiezan por#
son comentarios y las líneas en blanco se ignoran.Veamos a continuación el contenido de un archivo fstab sencillo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
$ cat /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass># / was on /dev/sda1 during installation UUID=74f44374-0326-42ca-8eb0-0c2398940c25 / ext4 errors=remount-ro 0 1# swap was on /dev/sda2 during installation UUID=d61d4720-8cc9-434b-85eb-386cbb1bd007 none swap sw 0 0# CD/DVD was on /dev/sr0 during installation /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
- Las líneas 2, 3, 4, 5, 6, 7, 8, 9, 11 y 13 son comentarios.
- La línea 8 es un comentario que nos sirve para reconocer todos los campos (columnas) que describen los sistemas de archivos.
- Las líneas 10, 12 y 14 corresponden a la descripción de los tres sistemas de archivos descritos en el archivo (de ejemplo) fstab.
A continuación, explicaremos para que sirve cada campo (columna):- <file system>: Es el dispositivo que vamos a montar. Este podrá ser un dispositivo especial de bloque un sistema de archivos remoto como pueden ser CIFS, NFS, una imagen ISO, etc. Observese que en nuestro ejemplo, los dispositivos de bloque se identifican de dos formas. En las líneas 10 y 12 se utiliza el UUID (
UUID=74f44374-0326-42ca-8eb0-0c2398940c25
) de la partición mientras que en la línea 14, se utiliza la ruta al dispositivo de bloque (/dev/sr0
). También se puede utilizar la etiqueta de volumen escribiendoLABEL=etiqueta
(LABEL=Root
). Según la documentación de fstab, utilizar el UUID es la forma más robusta de nombrar dispositivos. Si fuese un sistema NFS, tendríamos que indicar el hostname o IP y el directorio compartido (host:dir
). Para montar recursos samba, tendríamos que indicar el hostname o IP y el nombre del recurso compartido (//host/recurso
), además de las credenciales de acceso al recurso si fuesen necesarias. Para procfs se utilizaproc
. - <mount point>: Describe el punto de montaje del sistema de archivos (Vease las líneas 10 y 14 más arriba). Para las particiones de intercambio (swap), este campo debe declararse como
none
(Vease la línea 12 más arriba). Si el nombre del punto de montaje contiene espacios en blanco, estos pueden sustituirse por ‘\040
‘. - <type>: Describe el tipo de sistema de archivos, como pueden ser: ext3, ext4, ReiserFS, ufs, hfs, hfs+, vfat, exfat, ntfs, cifs, nfs, tmpfs, auto y posiblemente otros.
- <options>: Describe las opciones de montaje asociadas con el sistema de archivos. Su formato es el de una lista de opciones apropiadas para el tipo de sistema de archivos, sepradas por comas.
- <dump>: Este campo es usado por el comando
dump
y determina si el sistema de archivos debe de ser volcado. La ausencia de valor en este campo devuelve un valorcero
y el comandodump
asume que no es necesario volcar el sistema de archivos. - <pass>: Este campo es usado por el comando
fsck
para determinar el orden en el que se realizan las comprobaciones del sistema de archivos en el momento del reinicio. El sistema de archivos raíz (/
) deberá tener en este campo el valor de1
, los otros sistemas de archivos deberán tener un valor de2
. Los sistemas de archivos dentro de una unidad se verificarán secuencialmente, pero los sistemas de archivos en diferentes unidades se verificarán al mismo tiempo para utilizar el paralelismo disponible en el hardware. Si este campo no está presente o escero
, se devuelve un valor de0
y el comandofsck
asumirá que no es necesario verificar el sistema de archivos.
- Ejemplos (Volver al índice General)
Comenzaremos montando las particiones necesarias para que un sistema Linux pueda arrancar, es decir, las particiones donde se instalan el sistema operativo, los programas, servicios, datos, temporales y la partición de intercambio (swap). Continuaremos viendo los casos más comúnes, como montar unidades CD/DVD, USB, ISO y unidades de red (Samba y NFS).Nota: ¡Muy importante! Es aconsejable hacer una copia de seguridad del archivo /etc/fstab. Para hacerlo podemos utilizar el siguiente comando:
$ sudo cp /etc/fstab /etc/fstab.bak
Si algo va mal, tan solo tendremos que borrar el archivo /etc/fstab modificado con el siguiente comando:
$ sudo rm /etc/fstab
y renombrar /etc/fstab.bak con el siguiente comando:
$ sudo mv /etc/fstab.bak /etc/fstab
Para modificar el archivo
/etc/fstab
utilizaremos nuestro editor de texto favorito. En nuestros ejemplos utilizaremos el editornano
, presente en casi todas las distribuciones Linux:$ sudo nano /etc/fstab
- Montar sistemas de archivo ext4, ext3, ext2, reiserfs, etc (Volver al índice General)
En la actualidad, lo normal es que nuestro sistema operativo Linux se instale en particiones del tipo ext4, aunque podría instalarse en particiones de otro tipo (p.e. ReiserFS). En nuestros ejemplos, utilizaremos particiones del tipo ext4 y utilizaremos; una partición para el raíz del sistema de archivos (/
), otra partición para alojar los datos que generen nuestros servicios (/var
), otra para los directorios personales de los usuarios (/home
), otra para datos temporales (/tmp
) y la partición de intercambio (swap
).Para identificar las particiones, utilizaremos su UUID (Universally Unique IDentifier). Si no sabes como obtenerlo, en ZeppelinuX hemos publicado el artículo Cómo conocer el UUID de nuestros discos y cómo modificarlo.
A continuación listamos el contenido del fichero
/etc/fstab
modificado para montar las particiones anteriores:$ cat /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # swap en /dev/sda1 UUID=2ea596d4-2408-4dcc-abfb-3502f4920f6d none swap sw 0 0 # / en /dev/sda2 UUID=bd031262-77aa-4dc2-bb38-4e5a7a72102e / ext4 errors=remount-ro 0 1 # /var en /dev/sda3 UUID=edf0b712-f541-4f1c-b087-65d5515344b3 /var ext4 defaults 0 2 # /home en /dev/sda5 UUID=3155a295-e974-498d-bc79-4febaecc749a /home ext4 defaults 0 2 # /tmp en /dev/sda6 UUID=2364c295-997e-3d21-be85-66521a661cf8 /tmp ext4 defaults 0 2 ...
- Montar una carpeta en memoria RAM (Volver al índice General)
El motivo por el cual montamos carpetas en memoria RAM es la velocidad a la que trabaja la RAM. Por ejemplo, si se dispone de bastante RAM, es aconsejable montar en esta los directorios temporales de nuestros sistemas Linux, como pueden ser los directorios/tmp
y/var/tmp
. Otro caso en el que podemos beneficiarnos de la velocidad de la RAM es cuando trabajamos con archivos multimedia: imágenes, vídeo, audio, etc. Alojar una carpeta en RAM para trabajar con este tipo de archivos durante su edición, sería de gran ayuda.Supongamos que hemos creado con mkdir el directorio
/mnt/ram01
en el cual montaremos nuestra carpeta de acceso rápido, la sintaxis sería la siguiente:tmpfs /mnt/ram01 tmpfs 0 0
Si nuestro sistema utiliza mucha RAM, por ejemplo, por que utilizamos máquinas virtuales, podremos limitar el uso de la RAM añadiendo el parámetro delimitador size. Con este parámetro estamos ordenando al sistema, que bajo ningún concepto conceda más RAM a dichos puntos de montaje que el indicado con el parámetro size. A continuación ponemos un ejemplo de como limitar el tamaño asignado a 3GB:
tmpfs /mnt/ram01 tmpfs size=3G 0 0
En ZeppelinuX hemos publicado el artículo Montar las carpetas /tmp y /var/tmp en memoria RAM. El procedimiento empleado en este artículo, nos sirve igualmente para montar directorios con fines distintos al de los directorios temporales, como por ejemplo, para editar archivos multimedia.
- Montar sistemas de archivo ext4, ext3, ext2, reiserfs, etc (Volver al índice General)
- Montar un CD/DVD (Volver al índice General)
En este punto, configuraremos la entrada para que los CD/DVD se monten en los directorios que nosotros queramos cuando se solicite su montaje. Al utilizar la opciónnoauto
, estos no se montarán al inicio del sistema.Para el montaje de un CD/DVD, editamos el archivo
/etc/fstab
y en caso de tener una única unidad de CD/DVD, añadiríamos la siguiente línea:... # Primer CD/DVD en /dev/sr0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 ...
Si tuviésemos más de un CD/DVD, podríamos añadir tantas líneas como unidades de este tipo tuviésemos, teniendo en cuenta que la primera unidad sería
/dev/sr0
, la segunda/dev/sr1
y así sucesivamente. Veamos un ejemplo con tres unidades:... # Primer CD/DVD en /dev/sr0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 # Segundo CD/DVD en /dev/sr1 /dev/sr1 /media/cdrom1 udf,iso9660 user,noauto 0 0 # Tercer CD/DVD en /dev/sr2 /dev/sr2 /media/cdrom2 udf,iso9660 user,noauto 0 0 ...
Nota: Los directorios
/media/cdrom0
,/media/cdrom1
y/media/cdrom2
tendrán que existir, si no es así, tendremos que crearlos. - Montar sistemas de archivo NTFS, FAT, exFAT (Volver al índice General)
Si lo que nos interesa es montar particiones utilizadas por sistemas operativos Windows o unidades formateadas con los tipos NTFS, FAT, FAT16, FAT32, exFAT, sería cuestión de cambiar el tipo de sistema de archivo a la hora de montar la partición.Téngase en cuenta lo siguiente:
- Para montar, leer, y escribir particiones FAT, FAT16 o FAT32, normalmente no hay que instalar paquete alguno, los controladores necesarios para tratar con estos sistemas de archivo suelen instalarse por defecto.
- Para montar, leer y escribir particiones NTFS habrá que instalar el paquete ntfs-3g:
$ sudo apt install ntfs-3g
- Para montar, leer y escribir particiones exFAT habrá que instalar los paquetes
fuse
,exfat-fuse
yexfat-utils
:$ sudo apt install fuse exfat-fuse exfat-utils
Veamos un ejemplo de cada uno de los controladores:
$ cat /etc/fstab ... # <file system> <mount point> <type> <options> <dump> <pass> # Ejemplo para sistemas de archivo FAT, FAT16 y FAT32 UUID=1c84deee-ca60-41b2-825a-3ab537b00625 /mnt/winfat vfat defaults 0 2 # Ejemplo para sistemas de archivo NTFS UUID=72fe7364-9230-4d7e-9cdb-ae06cccd0273 /mnt/winntfs ntfs-3g defaults 0 2 # Ejemplo para sistemas de archivo exFAT UUID=2afe1bb5-72e2-42dc-b04b-d7447db950cd /mnt/winexfat exfat defaults 0 2 ...
Nota: Los directorios
/mnt/winfat
,/mnt/winntfs
y/mnt/winexfat
tendrán que existir, si no es así, tendremos que crearlos. - Montar un dispositivo USB (Volver al índice General)
Este apartado solo es interesante si arrancamos nuestro sistema con unidades conectadas al bus de comunicaciones USB, o si queremos que cada vez que una unidad USB, en concreto, se monte en un directorio en concreto, como hemos visto en el punto Montar un CD/DVD.Estas unidades suelen ser Memorias USB (Pendrive), discos externos USB, etc. El método es el mismo que en los dos puntos anteriores, tendremos que conocer el UUID de la partición a montar y el tipo de sistema de archivos de la partición.
Por ejemplo, supongamos que tenemos un disco externo de 1TB conectado a un puerto USB y el sistema de archivos empleado en el formateo de dicho disco es ntfs. Veamos la forma de configurar las entradas en
/etc/fstab
para que dicho disco externo de monte al inicio del sistema o, para que cuando elijamos montarlo se monte en el directorio de nuestra elección:- Si queremos que el disco USB se monte al inicio del sistema, añadiremos la siguiente línea:
... # Ejemplo para disco 1TB al inicio del sistema UUID=1c84deee-ca60-41b2-825a-3ab537b00625 /mnt/USB1TB001 ntfs defaults 0 2 ...
La opción
defaults
en realidad engloba un conjunto de opciones por defecto que para el sistema de archivos ext4 son: rw, suid, dev, exec, auto, nouser, async. Si el disco no está conectado al arrancar el sistema, el sistema presentará mensaje de error. - Si lo que pretendemos es que el disco USB no se monte al inicio, pero que cuando se invoque su montaje se monte en una carpeta específica y con las opciones deseadas, añadiremos la siguiente línea:
... # Ejemplo para disco 1TB por demanda UUID=1c84deee-ca60-41b2-825a-3ab537b00625 /mnt/USB1TB001 ntfs user,noauto 0 0 ...
La opción
user
permite que cualquier usuario monte el sistema de archivos y la opciónnoauto
impide que se monte al inicio del sistema.
Nota: El directorio
/mnt/USB1TB001
tendrá que existir, si no es así, tendremos que crearlo. - Si queremos que el disco USB se monte al inicio del sistema, añadiremos la siguiente línea:
- Montar unidades de red Samba (Volver al índice General)
Para montar unidades de red Samba, añadiremos la siguiente línea://Recurso /Punto_de_Montaje cifs defaults,user,credentials=Ruta_archivo_de_credenciales 0 0
Un ejemplo con los parámetros utilizados en el método por demanda, quedaría como sigue:
//naslan1/Backup /mnt/NAS-ZeppelinuX/ cifs defaults,user,credentials=/etc/samba/.credenciales.NAS 0 0
En ZeppelinuX hemos publicado el artículo Montar unidades de red Samba en Linux. En dicho artículo se explica como montar unidades de red Samba utilizando el archivo
/etc/fstab
. - Montar unidades de red NFS (Volver al índice General)
NFS permite que máquinas Unix/Linux compartan sus archivos y directorios a través de la red. Un equipo con Linux y con cliente NFS instalado, podrá montar un directorio que reside en otro equipo, que ejecute el servicio NFS, como si fuese un directorio local.Nota: El usuario del equipo cliente deberá tener permisos de acceso en el equipo servidor, al menos para acceder a los directorios compartidos por el servidor NFS.
La sintaxis básica para montar unidades de red NFS utilizando el archivo
/etc/fstab
es la siguiente:servidor:/ruta/a/exportar /punto_de_montaje_local nfs <opciones> 0 0
Opciones para NFS
- nfsvers: Especifica que versión del protocolo NFS usar. Los valores son
2
,3
y4
. - hard/soft:
- hard: Si el servidor NFS no responde, las solicitudes NFS se reintentan indefinidamente. Este es el comportamiento por omisión. Conjuntamente con la opción
intr
, si el servidor NFS no responde, el proceso se interrumpe y cuando el servidor NFS vuelve a estar en línea, el proceso continua desde donde se interrumpió. - soft: Si el servidor NFS no responde, devuelve un error de E/S al programa llamador tras esperar el tiempo indicado en la opción
timeo
. El valor por omisión es seguir intentando la operación NFS indefinidamente. En ciertos casos, la opciónsoft
puede provocar la corrupción o pérdida de datos.
- hard: Si el servidor NFS no responde, las solicitudes NFS se reintentan indefinidamente. Este es el comportamiento por omisión. Conjuntamente con la opción
- intr: Permite que las solicitudes NFS se interrumpan si el servidor NFS deja de responder. Se aconseja el uso de
intr
con la opciónhard
. - timeo: Define el tiempo, en décimas de segundo, que el cliente NFS espera una respuesta antes de reintentar una solicitud NFS. p.e:
timeo=10
. - rsize/wsize: Define el número máximo de bytes en cada solicitud de lectura/escritura que el cliente NFS puede recibir o enviar en la comunicación con el servidor NFS.
rsize
/wsize
será un valor múltiplo integral positivo de1024
. Los valores inferiores a1024
se reemplazan por4096
. Los valores mayores que1048576
se reemplazan por1048576
. Si el valor especificado está dentro del rango permitido pero no es múltiplo de1024
, se redondea hacia abajo al múltiplo de1024
más cercano. p.e:rsize=8192,wsize=8192
- retrans: Es el número de veces que el cliente NFS reintenta una solicitud antes de intentar una acción de recuperación. Si no se especifica esta opción, por defecto, el cliente NFS intenta cada solicitud
3
veces. p.e: retrans=7 - noexec: No permite la ejecución de binarios que se encuentren en el sistema de archivos. Útil si el sistema que se está montando no es un sistema de archivos Linux y sus binarios son incompatibles.
- nosuid: Bloquea el funcionamiento de suid, y sgid bits.
- tcp/udp: El protocolo de transporte por defecto para NFS es UDP. Sin embargo, la opción
tcp
permite el soporte de NFS sobre TCP.
Veamos algunos ejemplos:192.168.0.100:/home/anacleto/informes /mnt/informes nfs hard,timeo=20,nosuid,tcp 0 0
El siguiente ejemplo es igual al anterior pero utilizando un nombre de máquina en vez de IP:
pc003.zeppelinux.es:/home/anacleto/informes /mnt/informes nfs hard,timeo=20,nosuid,tcp 0 0
O también:
pc003.zeppelinux.es:/home/anacleto/informes /mnt/informes nfs rsize=8192,wsize=8192,timeo=15,intr 0 0
- nfsvers: Especifica que versión del protocolo NFS usar. Los valores son
- Montar directorio remoto con SSH (Volver al índice General)
En ZeppelinuX hemos publicado el artículo SSHFS: Montar directorio remoto con SSH en Debian. En dicho artículo se explica como montar directorios remotos utilizando el protocolo SSH utilizando el sistema de archivos SSHFS. En el artículo se presentan dos métodos de montaje, uno por demanda con el comandosshfs
y otro utilizando el archivo/etc/fstab
.
- El archivo /etc/fstab (Volver al índice General)
Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
Deja una respuesta