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:

CampoEjemploSignificado
1. DispositivoUUID=3f2a...Qué montar: UUID=, LABEL=, una ruta como /dev/vdb1, o un recurso de red como servidor:/ruta.
2. Punto de montaje/datosDirectorio donde aparecerá el sistema de archivos. none para swap.
3. Tipoext4ext4, xfs, vfat, nfs, swap, tmpfs...
4. Opcionesdefaults,nofailOpciones de montaje separadas por comas, sin espacios.
5. Dump0Obsoleto. Pon siempre 0.
6. Pass2Orden 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
  • defaults equivale a rw,suid,dev,exec,auto,nouser,async.
  • nofail hace 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.
  • 2 en el último campo hace que fsck compruebe 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ónUso
noatimeNo actualiza la fecha de último acceso al leer. Reduce escrituras en discos muy leídos.
roMonta en solo lectura.
noexec, nosuid, nodevImpiden ejecutar binarios, usar bits setuid o crear dispositivos. Recomendables en discos de datos y tmpfs.
x-systemd.automountMonta 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.