Proxmox Backup Server: garbage Collection y Prune
Introducción
Este tutorial explica cómo configurar el mantenimiento de Proxmox Backup Server para el almacenamiento de copias de seguridad a largo plazo mediante tareas de prune y recolección de basura (garbage collection). Configurará el prune de Proxmox, programará la recolección de basura de Proxmox y estimará el uso de almacenamiento para que su datastore no crezca hasta consumir todo el espacio de disco disponible.
Al finalizar este tutorial, dispondrá de una política de prune programada y de una programación de garbage collection para un datastore de Proxmox Backup Server, con ejemplos prácticos de retención para copias diarias, semanales y mensuales.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
- Proxmox Backup Server 4.2.x o posterior
- Un datastore de PBS configurado, con copias de seguridad existentes o previstas
- Acceso de administrador a la interfaz web de Proxmox Backup Server
- Acceso al shell como root u otro usuario con permisos de administración de PBS suficientes
- Conocimientos básicos sobre las tareas de copia de seguridad de Proxmox VE y los namespaces de PBS
- Aproximadamente 30 minutos para completar la configuración
Este tutorial está dirigido a administradores de sistemas con nivel intermedio.
Paso 1: Comprender cómo funcionan conjuntamente el prune y la garbage collection
En Proxmox Backup Server, el prune (poda) y la garbage collection son operaciones de mantenimiento independientes. Comprender cómo funcionan juntas es esencial para una gestión eficaz de los datastores de Proxmox.
Una tarea de prune decide qué snapshots de copia de seguridad se conservan y cuáles se eliminan del historial visible de copias. Cuando PBS poda un snapshot, elimina sus metadatos, índices, registros y notas. No elimina de inmediato los chunks de copia de seguridad que ya no se usan. Los chunks a los que hacían referencia los snapshots podados se eliminan más tarde mediante la garbage collection.
La garbage collection (GC) libera espacio en el datastore eliminando del almacén de chunks los chunks sin uso. PBS utiliza chunks deduplicados, por lo que un mismo chunk puede estar referenciado por varios snapshots. Por ello, PBS no puede eliminar chunks de forma segura en el instante exacto en que se poda un snapshot. Primero debe confirmar que ningún snapshot restante ni ninguna copia en ejecución sigue haciendo referencia a ellos.
El prune elimina los registros de snapshots antiguos. La GC recupera el espacio real en disco.
PBS también utiliza un período de gracia para la eliminación de chunks. Durante la GC, los chunks se marcan y se barren (mark and sweep), pero los chunks que se encuentran dentro del período de gracia se notifican como eliminaciones pendientes y no se borran de inmediato. Esto protege las copias en ejecución y tiene en cuenta el comportamiento de los tiempos de acceso del sistema de archivos, especialmente con el comportamiento habitual de montaje relatime.
Paso 2: Revisar la configuración actual del datastore
Puede hacerlo tanto desde la CLI como desde la interfaz web.
Liste los datastores disponibles:
proxmox-backup-manager datastore list
Salida esperada: tabla con la lista de datastores.
Elija el datastore donde se almacenan sus copias de seguridad de Proxmox VE. En los ejemplos siguientes, sustituya <DATASTORE_NAME> por el nombre de su datastore.
Compruebe el estado actual de la garbage collection:
proxmox-backup-manager garbage-collection status <DATASTORE_NAME>
Debería ver el estado actual de la GC del datastore. Si la GC nunca se ha ejecutado, es posible que la salida no muestre ninguna ejecución correcta anterior.
Liste las tareas de prune existentes:
proxmox-backup-manager prune-job list
Debería ver las tareas de prune existentes, o una lista vacía si no se ha configurado ninguna.
Para verificarlo desde la interfaz web, vaya a Datastore - <DATASTORE_NAME> - Prune & GC Jobs:

Paso 3: Planificar una política de retención de copias de seguridad a largo plazo
Una política de retención debe ajustarse a los requisitos de restauración y a la capacidad de almacenamiento. Para muchos planes de retención de copias de Proxmox, una política práctica a largo plazo utiliza el esquema abuelo-padre-hijo (grandfather-father-son):
| Opción de retención | Valor de ejemplo | Resultado |
|---|---|---|
keep-daily |
14 | Conserva una copia por día durante 14 días con copias |
keep-weekly |
8 | Conserva una copia por semana durante 8 semanas con copias |
keep-monthly |
12 | Conserva una copia por mes durante 12 meses con copias |
keep-yearly |
2 | Conserva una copia por año durante 2 años con copias |
Las opciones de retención de PBS se procesan por intervalos de tiempo (time buckets). Por ejemplo, keep-daily conserva la copia más reciente de cada día retenido, y los días sin copias no se cuentan. keep-weekly conserva la copia más reciente de cada semana ISO retenida, y las semanas sin copias no se cuentan.
No calcule la retención como una simple suma sin tener en cuenta los solapamientos. Una misma copia puede satisfacer a la vez las reglas diaria, semanal, mensual y anual, por lo que el número exacto de snapshots conservados depende de las marcas de tiempo de las copias.
Para una programación de copias diaria, empiece con una de estas políticas:
| Política | Ajustes de retención | Caso de uso |
|---|---|---|
| Conservadora | keep-daily 7keep-weekly 4keep-monthly 6 |
Datastore pequeño o historial de restauración corto |
| Equilibrada | keep-daily 14keep-weekly 8keep-monthly 12 |
Copias típicas de VM y contenedores |
| A largo plazo | keep-daily 30keep-weekly 12keep-monthly 24keep-yearly 3 |
Datastore más grande o historial exigido por normativa |
Configure la retención antes de que el datastore esté casi lleno. La limpieza del datastore de Proxmox es más segura cuando PBS aún dispone de espacio libre suficiente para escribir nuevas copias y ejecutar tareas de mantenimiento.
Paso 4: Estimar el almacenamiento necesario antes de aplicar la retención
La planificación del almacenamiento para copias de seguridad a largo plazo no consiste en multiplicar el tamaño completo de la VM por el número de snapshots. Proxmox Backup Server utiliza deduplicación, por lo que cada copia nueva suele almacenar únicamente los chunks modificados más los metadatos. Aun así, conviene realizar una estimación conservadora.
Utilice esta fórmula:
Almacenamiento estimado = datos protegidos iniciales + datos modificados por día * equivalente en días retenidos + margen de seguridad
Ejemplo 1: Retención equilibrada para un grupo de VM:
| Valor | Ejemplo |
|---|---|
| Datos de VM protegidos | 2 TB |
| Media diaria de datos modificados | 80 GB |
| Política de retención | 14 diarias · 8 semanales · 12 mensuales |
| Margen de seguridad | 25 por ciento |
Puntos de cambio retenidos aproximados:
14 daily + 8 weekly + 12 monthly = 34 restore points
Datos modificados aproximados:
80 GB * 34 = 2720 GB
Total aproximado antes del margen:
2000 GB + 2720 GB = 4720 GB
Añada un margen de seguridad del 25 por ciento:
4720 GB * 1.25 = 5900 GB
Para esta carga de trabajo, prevea aproximadamente 6 TB de capacidad útil en el datastore.
Ejemplo 2: Política para un datastore más pequeño:
| Valor | Ejemplo |
|---|---|
| Datos de VM protegidos | 1 TB |
| Media diaria de datos modificados | 30 GB |
| Política de retención | 7 diarias · 4 semanales · 6 mensuales |
| Margen de seguridad | 25 por ciento |
Puntos de restauración aproximados:
7 + 4 + 6 = 17 restore points
Almacenamiento aproximado:
1000 GB + (30 GB * 17) = 1510 GB 1510 GB * 1.25 = 1887.5 GB
Para esta carga de trabajo, prevea aproximadamente 2 TB de capacidad útil en el datastore.
Estos ejemplos son deliberadamente conservadores. El uso real de PBS puede ser menor, porque la deduplicación puede reutilizar chunks entre varios snapshots y entre sistemas similares.
Paso 5: Crear una tarea de prune en la interfaz web
- Abra la interfaz web de Proxmox Backup Server.
- Seleccione Datastore.
- Seleccione
<DATASTORE_NAME>. - Abra la pestaña Prune & GC.
- Haga clic en Add Prune Job.
- Establezca Datastore en
<DATASTORE_NAME>. - Establezca Namespace si desea podar solo un namespace.
- Configure los valores de retención, por ejemplo
keep-dailyen14,keep-weeklyen8ykeep-monthlyen12. - Establezca la programación, por ejemplo
03:00. - Guarde la tarea de prune.

Resultado esperado: PBS crea una tarea de prune programada para el datastore o namespace. Esta tarea elimina periódicamente los snapshots de copia de seguridad que su política de retención ya no selecciona.
Paso 6: Crear una tarea de prune desde la línea de comandos
También puede crear la misma tarea de prune desde el shell de PBS.
Para una tarea de prune que abarque todo el datastore:
proxmox-backup-manager prune-job create pve-longterm \ --store <DATASTORE_NAME> \ --schedule "03:00" \ --keep-daily 14 \ --keep-weekly 8 \ --keep-monthly 12 \ --comment "Long-term Proxmox backup retention"
Resultado esperado: PBS crea una tarea de prune llamada pve-longterm.
Para una tarea de prune específica de un namespace:
proxmox-backup-manager prune-job create pve-namespace-longterm \ --store <DATASTORE_NAME> \ --ns <NAMESPACE> \ --schedule "03:00" \ --keep-daily 14 \ --keep-weekly 8 \ --keep-monthly 12 \ --comment "Long-term retention for namespace"
Resultado esperado: PBS poda únicamente el namespace seleccionado. Esto resulta útil cuando distintos clústeres, inquilinos o entornos requieren políticas de retención diferentes.
Liste la tarea de prune:
proxmox-backup-manager prune-job list
Salida esperada: tabla con la lista de tareas de limpieza de copias de seguridad de Proxmox.
Paso 7: Configurar la programación de la garbage collection
Después de que el prune elimine los metadatos de los snapshots antiguos, debe ejecutarse la GC para recuperar el espacio de los chunks sin uso. Una programación semanal de la GC es un buen punto de partida para la mayoría de las configuraciones.
Establezca una programación semanal de la GC:
proxmox-backup-manager datastore update <DATASTORE_NAME> \ --gc-schedule "Sun 04:00"
Puede configurarla desde la interfaz web en Datastore - <DATASTORE_NAME> - Prune & GC Jobs → Garbage Collection Jobs → Edit:

Resultado esperado: PBS programa la garbage collection del datastore todos los domingos a las 04:00.
Compruebe el estado de la GC:
proxmox-backup-manager garbage-collection status <DATASTORE_NAME>
La salida esperada incluye el nombre del datastore e información sobre la ejecución de GC más reciente o la próxima.
También puede iniciar la GC manualmente:
proxmox-backup-manager garbage-collection start <DATASTORE_NAME>
Resultado esperado: PBS inicia una tarea de GC para el datastore.
No espere que la GC elimine todos los chunks sin uso inmediatamente después del prune. PBS puede notificar algunos chunks como eliminaciones pendientes hasta que haya transcurrido el período de gracia.
Paso 8: Elegir una programación segura de prune y GC
Una programación práctica es la siguiente:
| Tarea | Programación de ejemplo | Motivo |
|---|---|---|
| Tarea de copia de seguridad de Proxmox VE | Diaria a las 01:00 |
Crea primero las copias nuevas |
| Tarea de prune de PBS | Diaria a las 03:00 |
Elimina los snapshots fuera de la retención |
| Tarea de GC de PBS | Semanal, los domingos a las 04:00 |
Recupera los chunks sin uso tras el prune |
Este orden mantiene disponibles las copias nuevas antes de eliminar los snapshots antiguos. Además, da tiempo a PBS para completar las escrituras de las copias antes de que se inicien las tareas de prune y GC.
En entornos con mucha carga, evite ejecutar al mismo tiempo tareas de copia de seguridad, verificación, prune, sincronización y GC. Escalone las tareas de mantenimiento para reducir la contención de E/S.
Si su datastore recibe muchas copias cada día, empiece con una GC semanal. Si el datastore se llena rápidamente después del prune, considere ejecutar la GC con más frecuencia, pero supervise el impacto en la E/S.
Paso 9: Verificar la configuración
Liste las tareas de prune:
proxmox-backup-manager prune-job list
Confirme que la tarea tiene el datastore, el namespace, la programación y los valores keep esperados.
Muestre una tarea de prune:
proxmox-backup-manager prune-job show pve-longterm
Resultado esperado: PBS muestra las opciones de retención configuradas.
Compruebe la configuración de la GC:
proxmox-backup-manager garbage-collection list
Resultado esperado: PBS lista el estado de la garbage collection de todos los datastores, incluidos los que no tienen tareas de GC.
Compruebe el uso del datastore desde la interfaz web:
- Abra Datastore.
- Seleccione
<DATASTORE_NAME>. - Revise el uso del datastore y el historial de tareas.
- Abra Tasks y confirme que las tareas de prune y GC se completan correctamente.
Resultado esperado: El datastore muestra actividad de mantenimiento programada y los snapshots antiguos se eliminan según la configuración de prune de Proxmox.
Paso 10: Supervisar el crecimiento del almacenamiento a lo largo del tiempo
Después de configurar las tareas de prune en PBS, supervise el uso del almacenamiento durante al menos un ciclo de retención completo. Por ejemplo, si configura keep-monthly 12, necesitará varios meses de datos antes de que la tendencia a largo plazo sea clara.
Revise estas métricas:
| Métrica | Qué comprobar |
|---|---|
| Espacio utilizado del datastore | Confirma si la optimización del almacenamiento de copias funciona |
| Registros de las tareas de prune | Confirman que se están eliminando snapshots |
| Registros de las tareas de GC | Confirman que se están eliminando los chunks sin uso |
| Eliminaciones pendientes (pending removals) | Indican chunks a la espera del período de gracia de la GC |
| Tendencia del tamaño de las tareas de copia | Muestra si aumenta la cantidad de datos modificados |
Si el datastore sigue creciendo más rápido de lo esperado, reduzca la retención o añada almacenamiento antes de que el sistema de archivos se llene.
Ajustes habituales:
| Problema | Ajuste |
|---|---|
| El datastore se llena demasiado rápido | Reducir keep-daily, keep-weekly o keep-monthly |
| Muy pocos puntos de restauración recientes | Aumentar keep-daily |
| El historial mensual es demasiado corto | Aumentar keep-monthly |
| Las copias se solapan con el mantenimiento | Mover el prune o la GC a una hora posterior |
| La GC libera poco espacio | Confirmar que las tareas de prune realmente eliminan snapshots antiguos |
Revertir los cambios
Para eliminar una tarea de prune:
proxmox-backup-manager prune-job remove pve-longterm
Resultado esperado: PBS elimina la configuración de la tarea de prune.
Para desactivar la programación de la GC sin eliminar el datastore:
proxmox-backup-manager datastore update <DATASTORE_NAME> \ --delete gc-schedule
Resultado esperado: PBS borra la programación automática de la GC del datastore.
Para cambiar la retención en lugar de eliminar la tarea de prune:
proxmox-backup-manager prune-job update pve-longterm \ --keep-daily 7 \ --keep-weekly 4 \ --keep-monthly 6
Resultado esperado: PBS conserva la tarea de prune, pero aplica la nueva política de retención en las próximas ejecuciones.
Revertir una política de prune no restaura los snapshots que ya se han podado. Una vez que se elimina un snapshot y la GC elimina después sus chunks, no es posible recrearlo desde PBS.
Solución de problemas
La GC no libera espacio de inmediato
Causa: El prune eliminó los metadatos de los snapshots, pero otros snapshots siguen referenciando los chunks o estos se encuentran dentro del período de gracia de la GC.
Solución: Espere a que transcurra el período de gracia y ejecute la GC de nuevo más tarde. Revise los registros de tareas para ver las eliminaciones pendientes.
El prune conserva más copias de las esperadas
Causa: keep-daily, keep-weekly y keep-monthly utilizan intervalos de tiempo. Los días, semanas o meses sin copias no cuentan. Además, las reglas de retención se solapan.
Solución: Utilice el simulador de prune de PBS antes de cambiar la retención en producción. Así podrá previsualizar el comportamiento de la retención antes de aplicar los cambios.
El datastore sigue creciendo después del prune y la GC
Causa: Los datos modificados por día pueden ser superiores a lo estimado, las copias pueden incluir discos nuevos o la retención puede ser demasiado amplia para el datastore.
Solución: Recalcule la estimación de volumen con los datos modificados reales. Reduzca la retención o amplíe el almacenamiento.
La tarea de prune no afecta a un namespace
Causa: Es posible que la tarea de prune esté configurada para un namespace o una profundidad de namespace incorrectos.
Solución: Revise los ajustes de la tarea de prune y confirme el valor de --ns. Si desea que la tarea se aplique solo a un namespace, indíquelo de forma explícita.
Los clientes de copia de seguridad aún pueden eliminar copias
Causa: Las credenciales de copia pueden tener permisos de eliminación, o la retención puede estar configurada fuera de PBS.
Solución: Aplique el principio de mínimo privilegio a los clientes de copia de seguridad. Para resistir al ransomware, prefiera las tareas de prune del lado de PBS en lugar de conceder permisos de eliminación a los clientes.
Conclusión
Ha configurado el mantenimiento de Proxmox Backup Server para la retención a largo plazo mediante la creación de una tarea de prune y la programación de la garbage collection. También ha aprendido por qué los chunks no se eliminan de inmediato, cómo la GC completa la limpieza del datastore y cómo estimar las necesidades de almacenamiento antes de aplicar la retención a largo plazo. Estas prácticas favorecen la optimización de las copias de Proxmox al mejorar la eficiencia del almacenamiento y garantizar que la retención de copias siga siendo predecible y manejable.
Como siguientes pasos, añada tareas de verificación, configure notificaciones para las tareas de prune y GC fallidas y revise el crecimiento del datastore cada mes. Así la optimización del almacenamiento de copias seguirá siendo predecible y los ajustes de retención no consumirán silenciosamente toda la capacidad disponible.
Versión del documento: 1.0
Última actualización: junio de 2026
Responsable: Equipo de documentación técnica