Instantáneas ZFS: Cómo crearlas, restaurarlas y automatizarlas
10 min de lectura - 5 de mayo de 2026

Aprenda a crear, restaurar y automatizar instantáneas ZFS en Linux. Cubre comandos, rollback, políticas de retención y replicación off-site con Sanoid
Instantáneas ZFS: Cómo crearlas, restaurarlas y automatizarlas
Una instantánea ZFS es una copia puntual de sólo lectura de tu sistema de archivos. Se crea al instante, no ocupa espacio hasta que los datos cambian, y le permite revertir o recuperar archivos en cuestión de segundos. Si gestionas servidores, instancias de VPS o cualquier cosa con datos que no puedes permitirte perder, las instantáneas deberían formar parte de tu flujo de trabajo.
Este artículo explica cómo funcionan las instantáneas ZFS, cómo utilizarlas y cómo automatizar su conservación para que no se acumulen.
Cómo funcionan las instantáneas ZFS
ZFS utiliza un modelo de copia en escritura (CoW). Cuando se toma una instantánea, ZFS no duplica ningún dato. Simplemente registra el estado actual del árbol de punteros de bloque. Las nuevas escrituras van a los bloques libres, mientras que la instantánea sigue haciendo referencia a los originales.
Esto significa que las instantáneas se crean en microsegundos, independientemente del tamaño del conjunto de datos, y no consumen espacio adicional en el momento de la creación. Sólo empiezan a consumir espacio cuando cambia el conjunto de datos, porque la instantánea conserva los bloques originales que, de otro modo, se liberarían.
Esto es fundamentalmente diferente de las herramientas de copia de seguridad a nivel de archivo como rsync o tar, que escanean y copian archivos enteros. Si cambias 4 KB de un archivo de 10 GB, rsync copia todo el archivo. ZFS sólo guarda el bloque de 4 KB.
Las instantáneas también son inmutables. Se imponen como de sólo lectura en el nivel del núcleo, por lo que los procesos del espacio de usuario (incluido el ransomware) no pueden modificarlas. Combinado con la suma de comprobación integrada de ZFS, esto significa que puedes verificar la integridad de los datos en la restauración.
Creación de instantáneas
Requisitos previos
Necesitarás ZFS instalado y un pool configurado. En Ubuntu 20.04+:
sudo apt update && sudo apt upgrade -y
sudo apt install zfsutils-linux -y
sudo modprobe zfsCrear un pool. Para un solo disco (típico en un VPS):
sudo zpool create tank /dev/sdbPara una configuración en espejo en un servidor dedicado, utilice IDs de disco en lugar de nombres de dispositivo para evitar problemas después de reiniciar:
sudo zpool create tank mirror /dev/disk/by-id/ata-DISK1 /dev/disk/by-id/ata-DISK2Active la compresión (LZ4 es rápido y eficaz):
sudo zfs set compression=lz4 tankA continuación, cree conjuntos de datos para sus cargas de trabajo:
sudo zfs create tank/web
sudo zfs create tank/databasesTomar una instantánea
El comando básico:
sudo zfs snapshot tank/web@before-updatePara nombres con fecha y hora (útil con cron):
sudo zfs snapshot tank/db@$(date +%Y%m%d_%H%M%S)Para capturar todos los conjuntos de datos hijos a la vez, utilice la bandera recursiva:
sudo zfs snapshot -r tank@daily_backupVerificar con:
sudo zfs list -t snapshotRestauración a partir de instantáneas
Restauración de archivos individuales
Cada conjunto de datos ZFS tiene un directorio oculto .zfs/snapshot en su punto de montaje. No aparecerá en ls, pero puedes navegar directamente hasta él:
ls /tank/web/.zfs/snapshot/before-update/Para restaurar un solo archivo:
cp -p /tank/web/.zfs/snapshot/before-update/config/app.conf /tank/web/config/La opción -p conserva los permisos y las marcas de tiempo.
Restauración de un conjunto de datos completo
Si necesita revertir todo, por ejemplo después de una actualización fallida:
sudo zfs rollback tank/web@before-updateEsto es casi instantáneo porque ZFS actualiza los punteros de bloque en lugar de copiar los datos. Pero es destructivo: todos los cambios realizados después de la instantánea se pierden permanentemente.
Si existen instantáneas más recientes entre el destino y el estado actual, ZFS bloqueará la reversión. Utilice -r para forzarla y eliminar esas instantáneas intermedias:
sudo zfs rollback -r tank/db@20260426_090000Un buen hábito: haz una instantánea del estado actual (roto) antes de hacer el rollback, para que tengas un fallback si es necesario.
| Método de recuperación | Velocidad | Riesgo de pérdida de datos | Lo mejor para |
|---|---|---|---|
Restauración de archivos mediante .zfs | Depende del tamaño del archivo | Ninguno | Borrados accidentales, recuperación de un solo archivo |
| Restauración completa | Instantáneo | Alta (pierde todos los cambios posteriores a la instantánea) | Actualizaciones fallidas, problemas en todo el sistema |
| Clonación para pruebas | Instantáneo | Ninguno (crea un conjunto de datos paralelo) | Verificación antes de realizar una restauración |
Gestión y poda de instantáneas
Las instantáneas empiezan con un tamaño cero, pero crecen a medida que los datos en vivo cambian bajo ellas. Para comprobar el uso del espacio:
zfs list -t snapshot -o name,used,refer,creationLa columna USADO muestra cuánto espacio es exclusivo de esa instantánea. REFER muestra el tamaño total del conjunto de datos cuando se tomó la instantánea.
Para borrar una instantánea:
sudo zfs destroy tank/web@before-updateTambién se puede borrar por patrón:
sudo zfs destroy tank/web@daily-2026-04-%Siempre primero en seco:
sudo zfs destroy -nv tank/web@daily-%ZFS técnicamente puede manejar millones de instantáneas, pero el rendimiento se degrada más allá de unos pocos miles por conjunto de datos. Comandos como zfs list y zfs destroy se ralentizan notablemente. Mantén una retención estricta.
Automatizar la retención con Sanoid
Sanoid es la herramienta estándar para automatizar la creación y poda de instantáneas ZFS. Las políticas de retención se definen en sanoid.conf y Sanoid se encarga del resto.
Una configuración de producción típica podría tener este aspecto
| Tipo de carga de trabajo | Cada hora | Diaria | Semanal | Mensual |
|---|---|---|---|---|
| Producción estándar | 24-48 | 30 | 8 | 12 |
| Base de datos (alta rotación) | 72 | 30 | 12 | 24 |
| Registros / baja prioridad | 12-24 | 7 | 0 | 3 |
| Medios estáticos | 0 | 7 | 0 | 3 |
Sanoid también admite instantáneas subhorarias mediante el parámetro frequently. Configurando frequently = 96 y frequent_period = 15 se obtiene una instantánea cada 15 minutos.
Programe Sanoid mediante cron para que se ejecute cada minuto o cada 15 minutos, y creará y eliminará instantáneas automáticamente.
Replicación externa con zfs send
Las instantáneas en un único servidor protegen contra cambios accidentales y fallos de software, pero no contra pérdidas de hardware. Para ello, replique fuera del sitio utilizando zfs send y zfs receive sobre SSH:
zfs send tank/web@backup | ssh user@remote zfs receive backup/webPara transferencias incrementales (enviando sólo lo que ha cambiado desde la última instantánea):
zfs send -i tank/web@old_snap tank/web@new_snap | ssh user@remote zfs receive backup/webLa herramienta complementaria de Sanoid, syncoid, automatiza este proceso y gestiona los envíos incrementales, la recuperación de errores y el registro.
Nota sobre la protección contra ransomware
Las instantáneas ZFS son de sólo lectura a nivel de kernel, lo que significa que el malware estándar no puede modificarlas ni cifrarlas. Se trata de una sólida capa de defensa. Pero no es a prueba de balas: si un atacante consigue acceso de root, puede borrar las instantáneas antes de cifrar tus datos.
Las instantáneas deben ser una capa de una estrategia más amplia. Combínalas con la replicación externa, el acceso raíz restringido y la seguridad a nivel de red. No confíe únicamente en las instantáneas.
Recomendación en vídeo
Reflexiones finales
Las instantáneas ZFS son rápidas, eficientes en cuanto a espacio y sencillas de usar una vez que se entienden los conceptos básicos. No sustituyen a las copias de seguridad externas, pero llenan un vacío que las herramientas de copia de seguridad tradicionales no pueden cubrir: puntos de recuperación instantáneos y sin sobrecarga que se pueden tomar tan a menudo como sea necesario.
Si ejecuta ZFS en un VPS o servidor dedicado, configure Sanoid, defina una política de retención y automatice la replicación. Tardará 30 minutos en configurarlo y ahorrará horas cuando algo vaya mal. Pruébelo en un VPS o servidor dedicado FDC.

Instantáneas ZFS: Cómo crearlas, restaurarlas y automatizarlas
Aprenda a crear, restaurar y automatizar instantáneas ZFS en Linux. Cubre comandos, rollback, políticas de retención y replicación off-site con Sanoid
10 min de lectura - 5 de mayo de 2026
Cómo instalar y utilizar Redis en un VPS
9 min de lectura - 7 de enero de 2026