
Si llevas un tiempo trasteando con GNU/Linux, tarde o temprano te topas con un fichero llamado /etc/fstab. Es uno de esos archivos que casi nunca tocas al principio, pero que marca cómo, cuándo y de qué forma se montan las particiones y sistemas de archivos de tu máquina. Entenderlo bien te ahorra sustos en el arranque, problemas con discos externos y quebraderos de cabeza con redes y backups.
En esencia, fstab (más información en la wiki de Arch) es una tabla estática que describe todos los sistemas de archivos que el sistema puede montar: particiones locales, áreas de intercambio, recursos de red, imágenes de bucle… y las opciones con las que deben integrarse en el árbol de directorios. No se actualiza solo: lo mantiene el administrador, ya sea editándolo a mano con un editor de texto o mediante herramientas gráficas, y es leído por comandos y servicios como mount, fsck, swapon o, en sistemas modernos, por systemd para generar unidades de montaje.
Qué es exactamente /etc/fstab y cuándo se usa
El archivo /etc/fstab (file system table) es un fichero de configuración del sistema donde se registran, línea a línea, los sistemas de archivos que se pueden montar. Cada línea describe un dispositivo o recurso, el punto del árbol donde se verá su contenido y cómo debe tratarlo el sistema. A diferencia de otros componentes dinámicos, fstab solo se lee: no lo modifican automáticamente los programas; su mantenimiento recae sobre el administrador o sobre asistentes de instalación.
Cuando el sistema arranca, el proceso de inicialización (sea clásico o con systemd) examina fstab y, respetando el orden de las líneas, va activando las entradas pertinentes. Esta secuencia es importante porque herramientas como fsck, mount y umount recorren el fichero en orden, aplicando comprobaciones y montajes según la prioridad configurada. Además, muchas utilidades administrativas, demonios u otras herramientas (por ejemplo, generadores de unidades de systemd) lo usan para decidir qué debe montarse, cuándo y con qué opciones.
Tradicionalmente, fstab se usaba para todo: discos internos, unidades ópticas e incluso dispositivos extraíbles. Hoy, en la mayoría de distribuciones de escritorio, dispositivos hotplug como memorias USB o cámaras suelen gestionarse con udev y herramientas de auto-montaje, o bien con programas como pmount, que dejan a los usuarios montar y desmontar sin necesidad de entradas en fstab. Aun así, el fichero sigue siendo la referencia para particiones internas, áreas de swap y montajes de red (NFS, Samba, SSHFS, etc.).
Estructura general de una línea de fstab
Cada sistema de archivos se define en una sola línea, con campos separados por espacios o tabuladores. Las líneas en blanco se ignoran y las que empiezan por # son comentarios. Si un campo debe contener espacios, estos se representan escapados con su código octal, por ejemplo \040 para el espacio, tanto en puntos de montaje como en etiquetas o PARTLABEL.
La estructura completa es:
<dispositivo> <punto_de_montaje> <tipo> <opciones> <dump> <pass>
Estos seis campos también se nombran a menudo como fs_spec, fs_file, fs_vfstype, fs_mntops, fs_freq y fs_passno en la documentación y cabeceras de C (<fstab.h>). La sintaxis se mantiene prácticamente igual desde los tiempos de BSD 4.0, aunque las opciones y tipos de sistemas de archivos soportados han ido creciendo.
Campo 1: cómo identificar el dispositivo o sistema de archivos
El primer campo indica qué se va a montar: puede ser un dispositivo de bloque, un recurso de red, un archivo que se use como dispositivo de bucle o incluso un sistema de archivos virtual sin almacenamiento real. Aquí es donde más cuidado hay que tener para evitar sorpresas si cambias discos de sitio o añades hardware nuevo. Las formas más habituales de identificación son:
Nombre de dispositivo del kernel
Es la forma clásica: rutas del estilo /dev/sda1, /dev/nvme0n1p2 o /dev/sr0. El kernel las asigna según el orden de detección del hardware. Puedes consultarlas con herramientas como fdisk -l o lsblk. Aunque funcionan, no son recomendables para configuraciones estables, porque al añadir o reordenar discos las letras pueden cambiar, rompiendo la configuración.
UUID de sistema de archivos
La opción preferida hoy en día es usar UUID=<identificador>, un identificador único que se asigna al crear el sistema de archivos (por ejemplo con mkfs.ext4). No depende del orden de los discos ni de la BIOS. Puedes ver los UUID con blkid o lsblk -f, y aparecen también bajo /dev/disk/by-uuid como enlaces simbólicos.
Un ejemplo típico:
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 defaults 0 1
Esta forma minimiza conflictos de nombres, aunque es cierto que las líneas quedan largas y menos legibles. Además, si reformateas o cambias el tamaño del sistema de archivos, el UUID puede regenerarse y tendrás que actualizarlo en fstab.
Etiquetas (LABEL)
Otra forma amigable de identificar particiones es usar etiquetas: LABEL=Nombre. La etiqueta se define al crear el sistema de archivos o más tarde con herramientas como e2label para ext2/3/4, dosfslabel para FAT/vfat, ntfslabel para NTFS, swaplabel para swap, etc. Muchas interfaces gráficas (como gparted) permiten asignarlas fácilmente, siempre con la partición desmontada.
Las etiquetas suelen poder tener hasta unos 16 caracteres y deben ser únicas para evitar conflictos. Si usas etiquetas, las particiones etiquetadas aparecen también como enlaces simbólicos en /dev/disk/by-label. Una entrada de ejemplo usando etiqueta sería:
LABEL=Intercambio none swap sw 0 0
Identificadores de partición GPT: PARTUUID y PARTLABEL
En discos con particionado GPT, además de UUID de sistema de archivos, cada partición tiene su propio identificador y etiqueta de partición. Puedes usar:
PARTUUID=<id_de_partición>PARTLABEL=<etiqueta_de_partición>
Estos valores se obtienen también con blkid. Es una alternativa robusta, muy útil cuando usas la Discoverable Partitions Specification y dejas parte del trabajo a systemd para montar particiones automáticamente.
Recursos de red y otros casos especiales
Para montajes de red, el primer campo cambia de forma:
- NFS:
servidor:/ruta(por ejemploserver:/share). - Samba/CIFS:
//servidor/compartido. - SSHFS (vía FUSE): se recomienda usar subtipos, por ejemplo
fuse.sshfscomo tipo ysshfs#usuario@servidor:/rutaestá deprecado.
En sistemas de archivos virtuales (proc, tmpfs, etc.) o sin almacenamiento real se usan identificadores simbólicos, como proc, mem o tmpfs, o cualquier cadena que aparecerá en la salida de herramientas como df. Muchos de estos no se listan ya en fstab porque los monta el sistema de arranque directamente, salvo que necesites opciones especiales. Para ejemplos prácticos sobre memoria en RAM puede resultar útil ver guías que explican cómo crear un ramdisk en tu distribución.
Campo 2: punto de montaje
El segundo campo indica el directorio donde se integrará el sistema de archivos dentro del árbol global. Es un directorio del sistema de ficheros raíz, y debe existir antes de que el montaje tenga lugar. Si el sistema de archivos es swap, la convención es usar none como valor aquí.
Por ejemplo:
/dev/sda1 / ext4 errors=remount-ro 0 1 /dev/sda2 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
En entornos modernos es habitual usar directorios bajo /media para discos de usuario, /mnt para montajes temporales o específicos y, por supuesto, subdirectores del árbol del sistema como /home, /var, /boot o /srv para particiones dedicadas. Si el punto de montaje contiene espacios, hay que escaparlos con \040, p. ej. /home/usuario/Mis\040fotos.
Campo 3: tipo de sistema de archivos
El tercer campo especifica el tipo de sistema de archivos que se va a montar. Linux soporta una gran variedad: ext2/3/4, xfs, btrfs, f2fs, vfat, ntfs, hfsplus, iso9660, udf, tmpfs, nfs, cifs, squashfs y muchos más. También se usa swap para áreas de intercambio y none para montajes especiales como bind o move mounts.
Puedes usar auto para que mount intente deducir el tipo automáticamente, algo que tiene sentido sobre todo en medios ópticos o dispositivos extraíbles cuyo contenido puede cambiar. Para sistemas de red, se indican protocolos concretos (nfs, cifs, fuse.sshfs, etc.).
Hay casos en los que se puede indicar una lista de tipos separados por comas (por ejemplo udf,iso9660 en una unidad de DVD) para que el comando mount vaya probando hasta encontrar el que corresponde al medio insertado.
Campo 4: opciones de montaje
El cuarto campo es uno de los más ricos: una lista de opciones separadas por comas que ajustan el comportamiento del montaje. Se pueden combinar opciones genéricas, específicas del kernel, de rendimiento y propias de cada sistema de archivos. Si lo dejas vacío, la convención es usar al menos la palabra clave defaults.
Opciones básicas e independientes del sistema de archivos
defaults: agrupa un conjunto de valores por defecto, normalmenterw,suid,dev,exec,auto,nouser,async. Algunas distribuciones añaden de serie soporte ACL u otros ajustes en determinados sistemas de archivos.auto/noauto: conauto, el sistema de archivos se monta automáticamente al arrancar o conmount -a. Connoauto, solo se monta si se indica explícitamente; útil para unidades ópticas o particiones que solo quieres montar a demanda.rw/ro: fuerza el montaje en modo lectura-escritura o solo lectura. Marcar algo comorwpuede ser útil cuando el sistema o el driver tienden a montarlo solo lectura por defecto, como ocurre en ciertos casos con NTFS o medios extraíbles (ver pendrive protegido contra escritura).exec/noexec: permite o bloquea la ejecución de binarios en ese sistema de archivos.noexecsuele usarse en particiones donde no necesitas programas ejecutables (por ejemplo, algunos/varo particiones de datos), añadiendo una capa de seguridad.dev/nodev: controla si se interpretan dispositivos especiales (carácter y bloque) dentro del sistema de archivos.suid/nosuid: activa o desactiva el efecto de los bits SUID y SGID. Consuidpuedes permitir que binarios concretos se ejecuten con privilegios elevados de forma controlada; connosuidbloqueas esa posibilidad.user,users,nouser: determinan quién puede montar y desmontar.userpermite a un usuario normal montar el sistema de archivos (y solo él podrá desmontarlo), mientras queuserspermite que cualquiera del grupo adecuado lo desmonte. En ambos casos se asume por defectonoexec,nosuid,nodeva menos que lo sobrescribas.nouserrestringe el montaje únicamente a root.owner(en Linux): permite que el propietario del dispositivo (no necesariamente root) pueda montarlo.sync/async: definen si las operaciones de entrada/salida se realizan de forma sincrónica o asíncrona.syncfuerza que los datos se escriban físicamente en cuanto se realiza cada operación (útil en floppies, ciertos medios extraíbles o en contextos muy delicados);async(por defecto) mejora el rendimiento permitiendo que el sistema agrupe escrituras.noatime,nodiratime,relatime,strictatime,lazytime(Linux): controlan cómo se actualiza la marca de acceso (atime) en los inodos de ficheros y directorios. Reducir estas escrituras puede mejorar notablemente el rendimiento y disminuir desgaste en SSD (ver cómo alargar la vida de la tarjeta SD).nofail: evita que el sistema marque como error crítico el fallo al montar ese dispositivo. Muy útil para discos externos o particiones secundarias que pueden no estar presentes; evita que fallen comprobaciones en el arranque._netdev: indica que el sistema de archivos depende de la red (por ejemplo NFS), para que los montajes se ordenen después de que la red esté operativa.
Opciones específicas para sistemas de archivos comunes
Cada tipo de sistema de archivos tiene su colección de opciones propias (rendimiento, seguridad, conversión de nombres, etc.), documentadas en man mount y en los manuales específicos. Algunos ejemplos habituales en FAT/NTFS y otros:
uid=,gid=: fijan el identificador de usuario y grupo propietario de todos los ficheros, en sistemas sin permisos POSIX nativos como FAT o NTFS.umask=,dmask=,fmask=: ajustan las máscaras de permisos para directorios y ficheros en esos sistemas.windows_names: restringe los nombres de fichero a los válidos en Windows, útil en ciertos montajes compartidos.check=: en algunos drivers, ajusta el nivel de comprobación defsckpara ese sistema de archivos.conv=: opciones de conversión de texto DOS⇔UNIX en algunos tipos de montajes.
En sistemas como ext3/ext4, muchas opciones por defecto se pueden ajustar a nivel de sistema de archivos con herramientas como tune2fs. Red Hat y otras distribuciones suelen habilitar ACL por defecto en particiones críticas como la raíz, mientras que en otras quizás tengas que activarlas explícitamente.
Opciones especiales de systemd para montajes
En sistemas con systemd, muchas opciones clásicas de montaje se pueden afinar con parámetros especiales en fstab que systemd interpreta al generar unidades de montaje:
x-systemd.automount: crea una unidad de automontaje. El sistema de archivos se montará realmente solo cuando se acceda por primera vez, mientras que el kernel almacena las peticiones hasta que el montaje termina. Muy útil para grandes particiones de/homeo volúmenes que tardan en comprobarse.x-systemd.mount-timeout=<segundos>: limita cuánto esperar a que se complete el montaje. Un valor de0indica espera indefinida; conviene usarlo con cuidado.x-systemd.idle-timeout=<tiempo>: combinado con automount, permite desmontar automáticamente un sistema de archivos tras un período de inactividad, por ejemplox-systemd.automount,x-systemd.idle-timeout=1min.x-systemd.device-timeout=<segundos>: controla cuánto se espera a que el dispositivo aparezca; especialmente útil en discos externos configurados connofail.
p>
Además, al modificar fstab en sistemas systemd, es recomendable lanzar systemctl daemon-reload para que los cambios se tengan en cuenta por todos los servicios y generadores.
Campo 5: integración con dump (copias de seguridad)
El quinto campo, dump o fs_freq, indica si la utilidad dump debe incluir ese sistema de archivos en sus copias de seguridad periódicas. En la práctica moderna se usa poco, pero la sintaxis se mantiene:
- 0: el sistema de archivos se ignora; no se hará backup con
dump. - 1: el sistema de archivos es candidato a ser respaldado.
Dado que muchas distribuciones ni siquiera instalan dump por defecto, lo habitual es dejar 0 en casi todas las líneas, salvo que uses explícitamente este esquema de copias.
Campo 6: orden de comprobación fsck en el arranque
El último campo, pass o fs_passno, controla en qué orden fsck revisará los sistemas de archivos durante el arranque. Sus valores típicos son:
- 0: no se comprueba en el arranque.
- 1: prioridad máxima, reservado para el sistema de archivos raíz
/. - 2: resto de sistemas de archivos que quieras comprobar.
Las particiones en el mismo disco se revisan de forma secuencial, mientras que las de discos distintos se pueden comprobar en paralelo para aprovechar mejor el hardware. Aunque el propio sistema de archivos puede tener su política interna de chequeos (por ejemplo, cada N montajes o cada X días), esta bandera decide si participa o no en el proceso de comprobación al inicio.
Ejemplos prácticos de fstab
Veamos ejemplos que reúnen distintas ideas vistas hasta ahora:
# Sistema básico con UUID y etiqueta # <file system> <mount point> <type> <options> <dump> <pass> UUID=d3b4...ce1 / ext4 errors=remount-ro 0 1 LABEL=Intercambio none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Gestión práctica: comandos útiles y automontaje
Para inspeccionar el contenido actual de fstab, basta con:
cat /etc/fstab
Si quieres listar particiones, tipos, etiquetas y UUID, puedes tirar de:
lsblk -flsblk -o NAME,UUID,TYPE,MOUNTPOINTblkid
Cuando edites /etc/fstab, es prudente hacer copia de seguridad, por ejemplo:
sudo cp /etc/fstab /etc/fstab.bak
Y edición con tu herramienta favorita: nano en consola, gedit en GNOME, kate en KDE, etc. Muchas distribuciones proporcionan alias cómodos, como:
sudo nano -Bw /etc/fstab
La opción -B crea una copia de seguridad (sufijo ~) y -w evita partir líneas largas visualmente.
Una vez modificado, puedes probar las entradas sin reiniciar con:
sudo mount -a
Este comando intenta montar todos los sistemas de archivos definidos en fstab que tengan la opción auto. Si hay un error de sintaxis u opción inválida, lo verás aquí sin jugarte el arranque. Para verificar de forma más sistemática, findmnt --verify --verbose analiza fstab y avisa de opciones o campos no válidos.
Si alguna vez el sistema monta la raíz en solo lectura por algún problema, siempre puedes remediarlo (si tienes acceso) con:
sudo mount -o remount,rw /
fstab, systemd y montajes avanzados
En distribuciones modernas donde manda systemd, el contenido de /etc/fstab se traduce internamente en unidades de tipo mount y .automount. El generador systemd-fstab-generator lee el fichero en cada arranque y cuando recargas la configuración del demonio. De esta forma, systemd se encarga de que las unidades de montaje respeten dependencias como la red, el cifrado previo o la disponibilidad del dispositivo.
Para sistemas cifrados, hay otra pieza clave: /etc/crypttab. Si tienes volúmenes cifrados adicionales (no el de raíz) con ficheros de clave, puedes usar opciones como nofail también en crypttab y en las entradas asociadas de fstab para que el sistema no se bloquee esperando a que se desbloqueen volúmenes secundarios que no son críticos al inicio. En esos casos, conviene ajustar también los tiempos de espera con x-systemd.mount-timeout=0 o x-systemd.device-timeout según el caso.
Además, con particionado GPT y siguiendo la Discoverable Partitions Specification, systemd puede montar de forma automática ciertas particiones estándar (por ejemplo, la ESP o volúmenes de datos bien etiquetados) sin que las declares en fstab. Si aun así quieres personalizar opciones para una de esas particiones automáticas, puedes usar identificadores tipo /dev/disk/by-designator/ en fstab y fijar, por ejemplo, noatime o discard.
En el día a día, toca también convivir con unidades externas. Si quieres que se monten cuando estén presentes, pero que el arranque no falle si no lo están, la receta típica pasa por combinar nofail con un x-systemd.device-timeout corto, algo así:
LABEL=MyExternalDrive /media/backup jfs nofail,x-systemd.device-timeout=5 0 2
Así evitas esperas eternas si el disco no está conectado, y el sistema arranca tan tranquilo.
Mirado con calma, /etc/fstab es mucho más que una simple lista de discos: es la columna vertebral que define cómo se ensamblan tus particiones locales, tus recursos de red y tus volúmenes cifrados en un único árbol de directorios coherente. Dominar sus seis campos, las distintas formas de identificar dispositivos y las opciones clave de montaje (tanto clásicas como específicas de systemd) te da un control fino sobre rendimiento, seguridad y fiabilidad del sistema, y te evita sorpresas cada vez que añades un disco, mueves cables o montas un nuevo recurso compartido.
from Linux Adictos https://ift.tt/4MVweUX
via IFTTT