Full  Virtual/Sintético y Backups Incrementales para Siempre de Bacula

El nivel de respaldo completo virtual de Bacula a menudo se denomina respaldo sintético o consolidación en otros sistemas de respaldo. Le permite consolidar la copia de seguridad completa anterior más la copia de seguridad diferencial más reciente y cualquier copia de seguridad incremental posterior en una nueva copia de seguridad completa. Esta nueva copia de seguridad completa se considerará la más reciente para cualquier copia de seguridad incremental o diferencial futura.

La copia de seguridad completa virtual se logra sin contactar al cliente leyendo los datos de la copia de seguridad anterior. Lee el volumen utilizado para las últimas copias de seguridad completas e individuales / diferenciales y escribe en un volumen en el mismo Pool o en uno diferente, informado por la Directiva NextPool. En algunos aspectos, VirtualFull se parece a un Job de migración, pero tiene muchas más características específicas.

Configurar VirtualFull para que se escriba en un Pool diferente al que se guardan sus copias de seguridad anteriores siempre garantiza que no obtendrá una situación de punto muerto al intentar leer y escribir en el mismo volumen en el Storage Daemon. Pero, en general, puede configurar su siguiente Pool para que apunte al mismo Pool de respaldo original. En cualquier caso, una vez que se ha creado un VirtualFull, y se realiza una restauración que involucra al Full más actual, leerá el Volumen o los Volúmenes por VirtualFull independientemente en qué Pool se encuentre el Volumen.

La ejecución de VirtualFull se puede realizar manualmente, cambiando el nivel de Trabajo en el comando de ejecución, o de forma sistemática, en el Programa de Trabajo.

Una definición de recurso de trabajo típica podría tener el siguiente aspecto:

Job {
  Name = "Backup_Job"
  Type = Backup
  ...
  Schedule = virtual_schedule
  Pool = Syntetic_Fulls
  NextPool= Synthetic_Fulls
}

Alternativamente, el NextPool se puede configurar en el recurso Pool. Lo mismo para los Storages, si son diferentes (de los Pools originales y de destino), como sigue:

# Orignal Pool
Pool {
  Name = Daily_Inc
  Pool Type = Backup
  Recycle = yes            # Automatically recycle Volumes
  AutoPrune = yes          # Prune expired volumes
  Volume Retention = 7d  # one year
  NextPool = Weekly_VFull
  Storage = File1
}

# Destination Pool
Pool {
  Name = Weekly_VFull
  Pool Type = Backup
  Recycle = yes            # Automatically recycle Volumes
  AutoPrune = yes          # Prune expired volumes
  Volume Retention = 30 days  
  Storage = File2
}

Para ejecutar un Job VirtualFull manual, utilice lo comando siguiente en bconsole:

run job=Backup_Job level=VirtualFull

Para programar VirtualFull regular, defina un recurso de Schedule de Bacula como se indica a continuación:

Schedule {
  Name = virtual_schedule
  Run=Differential  Pool=Daily    Mon-Thu         at 19:00
  Run=VirtualFull   Pool=Weekly   2nd-5th Friday  at 19:00
  Run=VirtualFull   Pool=Monthly  1st Friday      at 19:00
}

Si se ejecuta Virtual Full y no hay trabajos anteriores, Virtual Full fallará con un error.

El Virtual Full Progresivo

En Bacula versión 9.0.0, hemos agregado una nueva directiva llamada Backups To Keep que le permite implementar Progressive Virtual Fulls dentro de Bacula. A veces, esta función se conoce como Incremental Forever with Consolidation.

La copia de seguridad incremental de Forever es la más económica desde el punto de vista del almacenamiento, ya que solo ocupará el espacio de almacenamiento requerido por un VirtualFull y los Incrementales posteriores, pero el administrador podría tener más dificultades para implementarla con políticas de copia de seguridad corporativas más complejas, como basado en el esquema de rotación grandfather-father-son. Además, es muy importante que se puedan restaurar todas las partes de las copias de seguridad, ya que un dato faltante puede afectar la única versión de los datos de la copia de seguridad si solo se mantiene una consolidación a la vez.

Para implementar la función Progressive Virtual Full, simplemente agregue la directiva BackupsToKeep a su recurso de trabajo de copia de seguridad virtual completa. El valor especificado en la directiva indica la cantidad de trabajos de respaldo que no deben fusionarse en Virtual Full (es decir, el número de trabajos de respaldo que deben permanecer después de que se complete el Virtual Full). El valor predeterminado es cero, que vuelve a un Virtual Full estándar que consolida todos los trabajos de copia de seguridad que encuentra.

La nueva directiva BackupsToKeep se especifica en el recurso de trabajo y tiene la forma:

Job {
  Name = "IncrementalForever"
  Type = Backup
  Level = VirtualFull
  ...
  Accurate = Yes
  Backups To Keep = 30
  DeleteConsolidatedJobs = yes
}

El valor 30 en el ejemplo anterior es el número de copias de seguridad que se deben retener. Cuando esta directiva está presente durante un Virtual Full (se ignora para otros tipos de trabajo), buscará la copia de seguridad completa más reciente que tenga más copias de seguridad posteriores que el valor especificado. En el ejemplo anterior, el trabajo simplemente terminará sin acción a menos que haya un respaldo completo seguido de al menos 31 copias de seguridad de nivel diferencial o incremental.

Suponiendo que a la última copia de seguridad completa le siguen 32 copias de seguridad incrementales, se ejecutará una completa virtual que consolida la completa con los dos primeros incrementales que se ejecutaron después de la completa. El resultado es que terminará con un completo seguido de 30 copias de seguridad incrementales.

La nueva directiva DeleteConsolidatedJobs (Job Resource) espera un valor de sí o no que, si se establece en sí, hará que se elimine cualquier trabajo antiguo que se consolide durante un Virtual Full. En el ejemplo anterior, vimos que un trabajo completo más otro trabajo (incremental o diferencial) se consolidaron en una nueva copia de seguridad completa. Se eliminará el Completo original más el otro Trabajo consolidado. El valor predeterminado es no.

Referencias:

Bacula 5.0 Manual, New Features in 3.0.0 <https://www.bacula.org/5.0.x-manuals/en/main/main/New_Features_in_3_0_0.html>

Bacula 9.0 Manual, New Features in 9.0.0 <https://www.bacula.org/9.0.x-manuals/en/main/New_Features_in_9_0_0.html#SECTION00304000000000000000>

 

Disponível em: pt-brPortuguês (Portugués, Brasil)enEnglish (Inglés)esEspañol

Deja una respuesta