El archivo /etc/fstab indica al sistema qué sistemas de archivos debe montar al arrancar, dónde y con qué opciones. Un disco nuevo que montas a mano con mount desaparece tras el siguiente reinicio; añadirlo a fstab lo hace permanente. En este tutorial aprenderás el formato del archivo, prepararás un disco adicional en Ubuntu 24.04, lo montarás por UUID y validarás la configuración antes de reiniciar, porque una línea incorrecta en fstab puede dejar el servidor en modo de emergencia.
Requisitos previos
Para seguir esta guía necesitas:
- Un servidor con Ubuntu 24.04 LTS (los comandos son iguales en Debian 12 y Rocky Linux 9), por ejemplo un VPS de CubePath.
- Un usuario no root con privilegios
sudo. - Un disco adicional vacío conectado al servidor. En los ejemplos es
/dev/vdb; el nombre en tu sistema puede ser distinto (/dev/sdb,/dev/nvme1n1). - Acceso a una consola fuera de banda (la consola VNC o serie del proveedor) por si algo falla al arrancar.
Paso 1: Entender el formato de fstab
Muestra el contenido actual del archivo:
cat /etc/fstab
# /etc/fstab: static file system information.
LABEL=cloudimg-rootfs / ext4 discard,errors=remount-ro 0 1
LABEL=UEFI /boot/efi vfat umask=0077 0 1
Cada línea tiene seis campos separados por espacios o tabuladores:
| Campo | Ejemplo | Significado |
|---|---|---|
| 1. Dispositivo | UUID=3f2a... | Qué montar: UUID=, LABEL=, una ruta como /dev/vdb1, o un recurso de red como servidor:/ruta. |
| 2. Punto de montaje | /datos | Directorio donde aparecerá el sistema de archivos. none para swap. |
| 3. Tipo | ext4 | ext4, xfs, vfat, nfs, swap, tmpfs... |
| 4. Opciones | defaults,nofail | Opciones de montaje separadas por comas, sin espacios. |
| 5. Dump | 0 | Obsoleto. Pon siempre 0. |
| 6. Pass | 2 | Orden de fsck al arrancar: 1 para la raíz, 2 para el resto de discos locales, 0 para no comprobar (swap, red, XFS). |
Usa siempre UUID= o LABEL= en lugar de /dev/vdb1. Los nombres de dispositivo dependen del orden en que el kernel detecta los discos y pueden cambiar tras un reinicio o al añadir otro disco; el UUID va grabado en el propio sistema de archivos y no cambia.
Paso 2: Identificar el disco nuevo
Lista los discos y sus particiones:
lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
vda
├─vda1 ext4 1.0 cloudimg-rootfs 8c1d6e0f-5a3b-4e6f-9a0c-2b7f1e4d9c21 61.2G 18% /
└─vda15 vfat FAT32 UEFI 6A2B-1C3D 98.2M 6% /boot/efi
vdb
vdb no tiene particiones ni sistema de archivos: es el disco nuevo. Comprueba dos veces el nombre antes de seguir, porque el siguiente paso borra su contenido.
Paso 3: Particionar y formatear el disco
Crea una tabla de particiones GPT con una única partición que ocupe todo el disco:
sudo parted -s /dev/vdb mklabel gpt mkpart datos ext4 0% 100%
Formatea la partición con ext4 y asígnale una etiqueta:
sudo mkfs.ext4 -L datos /dev/vdb1
Obtén el UUID del nuevo sistema de archivos:
sudo blkid /dev/vdb1
/dev/vdb1: LABEL="datos" UUID="b7e4c1a2-9f3d-4c6e-8a15-3d2f0e7b6a90" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="datos" PARTUUID="0d9a..."
Copia el valor de UUID: lo usarás en fstab.
Paso 4: Crear el punto de montaje y probar el montaje manual
Crea el directorio donde se montará el disco:
sudo mkdir -p /datos
Antes de tocar fstab, comprueba que el disco se monta correctamente a mano:
sudo mount /dev/vdb1 /datos
df -h /datos
Filesystem Size Used Avail Use% Mounted on
/dev/vdb1 98G 24K 93G 1% /datos
Desmóntalo; a partir de ahora lo montará fstab:
sudo umount /datos
Paso 5: Añadir la entrada a fstab
Haz una copia de seguridad del archivo. Si algo sale mal, podrás restaurarla desde la consola de rescate:
sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab
Añade esta línea al final, con el UUID que obtuviste en el paso 3:
UUID=b7e4c1a2-9f3d-4c6e-8a15-3d2f0e7b6a90 /datos ext4 defaults,nofail 0 2
defaultsequivale arw,suid,dev,exec,auto,nouser,async.nofailhace que, si el disco no está presente, el arranque continúe en lugar de detenerse en modo de emergencia. Úsalo en todo disco que no sea imprescindible para arrancar el sistema.2en el último campo hace quefsckcompruebe el disco al arrancar, después de la raíz.
Paso 6: Validar fstab antes de reiniciar
findmnt --verify analiza fstab y detecta errores de sintaxis, UUID inexistentes, tipos de sistema de archivos desconocidos y puntos de montaje que faltan:
sudo findmnt --verify
Success, no errors or warnings detected
Systemd genera las unidades de montaje a partir de fstab, así que recárgalo para que lea la nueva línea, y monta todo lo pendiente:
sudo systemctl daemon-reload
sudo mount -a
Si mount -a no muestra ningún mensaje, el montaje ha funcionado. Compruébalo:
findmnt /datos
TARGET SOURCE FSTYPE OPTIONS
/datos /dev/vdb1 ext4 rw,relatime
Por último, reinicia el servidor con sudo reboot y ejecuta de nuevo findmnt /datos al volver para confirmar que el disco se monta solo.
Paso 7: Otros usos habituales de fstab
El mismo archivo sirve para otros tipos de montaje. Estas son las entradas más comunes; añade solo las que necesites y valida siempre con findmnt --verify.
Archivo de swap, tras crearlo con fallocate, chmod 600, mkswap y swapon:
/swapfile none swap sw 0 0
tmpfs: un sistema de archivos en RAM de tamaño limitado, útil para cachés efímeras:
tmpfs /var/cache/app tmpfs size=512M,mode=0750,noexec,nosuid,nodev 0 0
Montaje bind: muestra un directorio existente en otra ruta, por ejemplo para exponer datos del disco nuevo dentro del árbol web:
/datos/web /var/www/html none bind,nofail 0 0
Recurso NFS: para sistemas de archivos de red añade _netdev, que hace esperar a que la red esté lista:
10.0.0.10:/srv/nfs/compartido /mnt/compartido nfs defaults,_netdev,nofail 0 0
Algunas opciones que conviene conocer:
| Opción | Uso |
|---|---|
noatime | No actualiza la fecha de último acceso al leer. Reduce escrituras en discos muy leídos. |
ro | Monta en solo lectura. |
noexec, nosuid, nodev | Impiden ejecutar binarios, usar bits setuid o crear dispositivos. Recomendables en discos de datos y tmpfs. |
x-systemd.automount | Monta el sistema de archivos la primera vez que se accede, no en el arranque. Útil para recursos de red lentos. |
Solución de problemas
El servidor arranca en modo de emergencia (You are in emergency mode): una entrada de fstab no se ha podido montar y no tenía nofail. Desde la consola del proveedor, introduce la contraseña de root si te la pide, vuelve a montar la raíz en lectura y escritura, restaura la copia y reinicia:
mount -o remount,rw /
cp /etc/fstab.bak /etc/fstab
reboot
En Ubuntu la cuenta root está bloqueada por defecto y el modo de emergencia puede negarse a abrir una shell (the root account is locked). En ese caso, reinicia desde la consola, pulsa e en el menú de GRUB, añade init=/bin/bash al final de la línea que empieza por linux y arranca con Ctrl + X. Obtendrás una shell de root sin contraseña: ejecuta los mismos mount -o remount,rw / y cp, y después sync y reboot -f.
mount: /datos: can't find UUID=...: el UUID está mal copiado o el disco ya no existe. Compara con la salida de sudo blkid.
mount: /datos: wrong fs type, bad option, bad superblock: el tipo del tercer campo no coincide con el real o hay una opción no válida para ese sistema de archivos. Revisa lsblk -f y sudo dmesg | tail.
Los cambios en fstab no se aplican: tras editar el archivo, ejecuta sudo systemctl daemon-reload para que systemd regenere las unidades de montaje.
Conclusión
Has preparado un disco nuevo, lo has añadido a /etc/fstab por UUID con nofail y has validado la configuración con findmnt --verify antes de reiniciar, que es la rutina segura para cualquier cambio en este archivo. A partir de aquí puedes mover a /datos directorios que crecen mucho, como bases de datos o copias de seguridad, montar recursos compartidos NFS o Samba, o activar cuotas de disco en el nuevo sistema de archivos.
