Hola a tod@s,
En este post veremos cómo crear un almacén de datos ZFS en Proxmox Backup Server (PBS) para los repositorios de las copias de seguridad inmutables, esta inmutabilidad será de forma manual.
La topología utilizada sería la siguiente:
- Antes de empezar, vemos que en nuestro Proxmox Backup Server, le hemos añadido tres discos de 200GB dónde vamos a montar un RAIDZ (RAID 5) con ZFS para crear el repositorio de nuestras copias de seguridad inmutables:
- Desde la consola web de nuestro PBS, accedemos a Almacenamiento/Discos, y podemos ver, que ya tenemos disponibles los tres discos de 200 GB que hemos añadido:
- Clicamos sobre Almacenamiento/Discos > ZFS:
- Creamos el pool ZFS:
- Le indicamos los tres discos que vamos a utilizar, le asignamos un nombre y marcamos el check para que automáticamente nos agregue el Datastore al almacenamiento de nuestro PBS, como nivel de RAID en este caso le indicamos RAIDZ que equivale a un RAID 5, Crear:
- Como podemos ver, aquí se ha creado el pool de ZFS:
- Y aquí vemos, el almacén de datos creado:
- Estas son las opciones de RAID que tenemos en ZFS con Proxmox:
- Single Disk (Disco Único), es la configuración más básica, no hay redundancia. Cómo funciona: Los datos se escriben en un solo disco. Seguridad: Nula. Si el disco falla, pierdes todos los datos. Uso ideal: Pruebas, entornos de desarrollo no críticos o si tienes una estrategia de backup externa extremadamente sólida.
- Mirror (RAID 1), el clásico «espejo», requiere al menos 2 discos. Cómo funciona: Todo lo que se escribe en el Disco A se replica exactamente en el Disco B. Seguridad: Alta. Puede fallar un disco y el sistema seguirá funcionando. Rendimiento: Muy bueno en lectura (lee de ambos), pero la capacidad total es solo la de un disco.
- RAID 10 (Striped Mirrors), es una combinación de Mirroring y Striping, requiere al menos 4 discos (siempre en pares). Cómo funciona: Crea parejas de espejos (mirrors) y luego reparte los datos entre esas parejas. Seguridad: Puede fallar un disco por cada pareja de espejos. Es el más resistente y el que mejor se recupera . Rendimiento: Es el rey del rendimiento en ZFS, especialmente para bases de datos y muchas máquinas virtuales.
- RAIDZ (Equivalente a RAID 5), requiere al menos 3 discos. Cómo funciona: Utiliza un disco para «paridad», los datos se distribuyen entre todos los discos. Seguridad: Soporta el fallo de 1 disco, si falla un segundo disco antes de reemplazar el primero, se pierde todo. Capacidad: Pierdes el espacio equivalente a un disco. Nota: No se recomienda con discos mecánicos de gran capacidad (8TB+) debido al largo tiempo de reconstrucción.
- RAIDZ2 (Equivalente a RAID 6), requiere al menos 4 discos. Cómo funciona: Doble paridad distribuida. Seguridad: Soporta el fallo de 2 discos simultáneamente. Es el estándar de oro para almacenamiento masivo de datos. Capacidad: Pierdes el espacio equivalente a dos discos.
- RAIDZ3, requiere al menos 5 discos. Cómo funciona: Triple paridad distribuida. Seguridad: Soporta el fallo de hasta 3 discos. Es extremadamente seguro. Uso ideal: Solo para servidores con muchísimos discos (ej. 10 o 12 discos por vdev) donde la probabilidad de fallos múltiples es mayor.
- Una vez que hemos creado el repositorio ZFS en Proxmox Backup Server, sobre nuestro cluster de Proxmox VE, accedemos a Centro de datos > Almacenamiento > Agregar > Proxmox Backup Server:
- Sobre General, le indicamos el ID, Servidor y credenciales del PBS, los nodos a los que le vamos a presentar el datastore para los backups, Activar, como contenido de backup, le asignamos un nombre al datastore y le indicamos la Huella digital de nuestro PBS:
- La Huella digital del PBS, la copiamos del servidor PBS:
- Sobre Retención de respaldos, lo dejamos tal cuál nos lo muestra, ya que esto lo configuraremos en los propios trabajos de backups:
- Sobre Cifrado, le indicamos que autogenere una llave de cifrado para el cliente, Agregar:
- Descargamos la llave de cifrado y la guardamos en un lugar seguro, Cerrar:
- Y aquí tenemos ya creado y configurado nuestro datastore ZFS de Proxmox Backup Server que utilizaremos como repositorio de nuestros backups inmutables:
- Una vez creado y configurado el repositorio ZFS, vamos a crearnos una tarea de copia de seguridad inmutable, para ello, sobre nuestro cluster de Proxmox VE, accedemos a Centro de datos > Respaldo > Agregar:
- Sobre General, le indicamos el nodo (en nuestro caso, como es un clúster, Todo), el almacenamiento donde vamos a guardar los backups (Proxmox Backup Server), la programación, Compresión, Modo, le agregamos un comentario de descripción del backup y seleccionamos las máquinas a respaldar:
- Sobre Notificaciones, le podemos indicar la cuenta de correo, a la que queremos que nos lleguen los avisos de los respaldos:
- Sobre Retención, le vamos a indicar que nos mantenga los últimos 7 respaldos, a partir del séptimo irá sobrescribiendo los más antiguos, Crear:
- Aquí vemos la tarea creada:
- Ahora para probar la tarea, la vamos a lanzar de forma manual, Ejecutar ahora:
- Aquí vemos que el respaldo comienza a realizarse:
- Una vez finalizado, accedemos a nuestro Proxmox Backup Server > Almacén de datos > dts01zfspbs > Contenido, y podemos ver el contenido de nuestras copias de seguridad:
- Para hacer este backup inmutable, pulsamos sobre el símbolo del escudo GRIS que nos aparece en nuestro backup:
- Y marcamos el check Protegido, Aceptar:
- Como podemos ver, el escudo cambia a color VERDE y nos aparece el backup como protegido:
- Si intentamos eliminar su contenido, nos va a dar este mensaje de error:
- Esto pasa cuando protegemos un backup:
- El servidor le pone un atributo de «SÓLO LECTURA» a nivel de kernel de Linux.
- Incluso si un virus entra con permisos de administrador e intenta borrar la carpeta del backup, el sistema de archivos ZFS rechazará la orden porque el archivo tiene el bit de inmutabilidad activo.
- La inmutabilidad en PBS significa que el software le pone un candado digital (fattr) a los archivos en el pool de ZFS, mientras ese candado esté puesto, ni el propio Proxmox puede borrar los datos para dejar espacio a backups nuevos.
- Esta inmutabilidad que hemos mostrado es MANUAL, es decir, que por cada punto de retención que se vaya creando tendremos que habilitar de manera manual el candado.
- Esto es lo que pasaría:
- Día 1 al 7, realizamos los backups y les ponemos el candado, quedando protegidos, tenemos 7 puntos de recuperación inmutables.
- Día 8, se realiza el octavo backup y como los 7 anteriores tienen el candado activado y están protegidos, el sistema de limpieza (Prune) no puede borrar el día 1.
- Resultado, ahora tenemos 8 backups ocupando espacio en nuestro datastore ZFS.
- Tendríamos que entrar una vez por semana, quitarle el candado al más viejo (Día 1) y ponérselo al más nuevo (Día 8), esto permite que el proceso de Garbage Collection de ZFS, libere los bloques de datos del Día 1.
- Para restaurar una máquina completa sobrescribiendo la actual, accedemos a la propia máquina > Respaldo > Almacenamiento > Seleccionamos el backup > Restaurar:
- Si queremos restaurar archivos, accedemos a la propia máquina > Respaldo > Almacenamiento > Seleccionamos el backup > Restauración de archivo:
- Si quisiera restaurar la máquina completa sin sobrescribir la original, dts01zfspbs > Respaldos > Seleccionamos el backup > Restaurar:
- Le indico el datastore donde la quiero restaurar, y el nuevo ID de máquina virtual, Restaurar:
Saludos y espero que os sea de ayuda 😉

