Project

General

Profile

Anomalie #1934

Sauvegarde interminable

Added by Anonymous about 10 years ago. Updated almost 10 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Category:
-
Start date:
07/19/2011
Due date:
% Done:

100%

Distribution:

Description

Bonjour,

Premier problème
Sur HORUS et SCRIBE NG 2.2, nous rencontrons souvent le problème suivant lors de sauvegardes sur disque USB :
  • Le disque USB arrive à saturation (mauvais dimensionnement du disque ou dépôt massif de fichiers volumineux sur le serveur)
  • Bacula demande alors l'insertion d'un nouveau volume ..... (comme s'il s'agissait de bandes et qu'une action d'un opérateur soit nécessaire)

En conséquence, bacula attend indéfiniment et les services arrêtés au début de la sauvegarde (samba notamment) ne sont jamais redémarrés.

Cela peut être évité avec la directive Max Wait Time dans le JobDefs IntegralBackup.
Cette directive fixe une limite (en secondes) au bout de laquelle le job en cours est annulé si une situation bloquante survient (attente de l'insertion d'un nouveau volume qui n'arrivera jamais par exemple).

J'ai patché le template bacula-dir.conf à cet effet avec une durée de 300 secondes.

Deuxième problème
Une fois le premier problème contourné, le Job de sauvegarde est bien annulé après 300 secondes.
Ensuite le job BackupCatalog est exécuté et échoue de manière tout à fait logique comme indiqué ci-dessous :

19-jui 15:36 127.0.0.1-dir JobId 346: BeforeJob: cp: écriture de `/var/sauvegardes/horus-2.2-bacula.sql': Aucun espace disponible sur le périphérique
19-jui 15:36 127.0.0.1-dir JobId 346 : Erreur : Runscript : BeforeJob s'est terminé avec un statut différent de 0 statut=1. ERR=Child exited with code 1

Le problème est que suite à cela, le disque USB reste monté (ce qui n'est pas catastrophique, mais néanmoins pas trop rigoureux).
J'ai donc à nouveau patché le template bacula-dir.conf afin d'ajouter la directive :

RunAfterFailedJob = "/usr/share/eole/bacula/baculaservices.sh postcatalogerr"

dans la définition du job BackupCatalog.

Dernier problème
La fonction postcatalogerr est bien définie dans /usr/share/eole/bacula/baculaservices.sh mais on ne peut pas l'utiliser en tant qu'argument de baculaservices.sh
J'ai donc corrigé le script afin de rendre l'argument postcatalogerr utilisable.

Voici le patch de bacula-dir.conf :

--- distrib/bacula-dir.conf    2010-10-25 11:04:03.000000000 +0200
+++ modif/bacula-dir.conf    2011-07-19 15:49:42.000000000 +0200
@@ -46,6 +46,7 @@
 %end if
   Write Bootstrap = "/var/sauvegardes/%%auto_module().capitalize()%slurp
 BootStrap.bsr" 
+  Max Wait Time = 300
   RunBeforeJob = "/usr/share/eole/bacula/baculaservices.sh lock" 
   RunBeforeJob = "/usr/share/eole/bacula/baculaservices.sh prebackupldap" 
   RunBeforeJob = "/usr/share/eole/bacula/baculaservices.sh prebackupmysql" 
@@ -70,6 +71,7 @@
   RunBeforeJob = "/usr/share/eole/bacula/baculaservices.sh precatalog" 
   RunAfterJob = "/usr/share/eole/bacula/baculaservices.sh postcatalog" 
   RunAfterJob = "/usr/share/eole/bacula/baculaservices.sh unlock" 
+  RunAfterFailedJob = "/usr/share/eole/bacula/baculaservices.sh postcatalogerr" 
   RunAfterFailedJob = "/usr/share/eole/bacula/baculaservices.sh unlock" 
 }

Et voici celui de /usr/share/eole/bacula/baculaservices.sh :

--- baculaservices.sh    2011-06-27 11:43:35.000000000 +0200
+++ baculaservices.sh.new    2011-07-19 17:13:37.000000000 +0200
@@ -540,6 +540,9 @@
   postcatalog)
       postcatalog
       ;;
+  postcatalogerr)
+      postcatalogerr
+      ;;
   prerestoreall)
       prerestoreall
       ;;

Voilà tout.


Related issues

Related to eole-bacula - Anomalie #1764: problème : le graphe sauvegarde reste au vert Fermé 05/11/2011

Associated revisions

Revision 89a7c5d4 (diff)
Added by Emmanuel GARETTE about 10 years ago

Ajout de l'option Max Wait Time (fixes #1934)

History

#1 Updated by Joël Cuissinat about 10 years ago

  • Assigned To set to Emmanuel GARETTE
  • Target version set to Mises à jour 2.3 - 02 RC

#2 Updated by Emmanuel GARETTE about 10 years ago

Sur 2.3 : ajout de l'option "Max Wait Time" + question en mode expert pour "Max Run Time" (désactivé par défaut).

Les deux derniers points ne doivent plus exister dans le nouveau code.

Commit 4229fea42dd57486944e32b637273a836f439f46.

#3 Updated by Emmanuel GARETTE about 10 years ago

  • Status changed from Nouveau to Résolu
  • % Done changed from 0 to 100

#4 Updated by Emmanuel GARETTE about 10 years ago

  • Target version changed from Mises à jour 2.3 - 02 RC to Mises à jour 2.2.3 - 02 RC

#5 Updated by Joël Cuissinat almost 10 years ago

  • Status changed from Résolu to Fermé
root@serv-pedago:~# grep Wait /etc/eole/distrib/*bacu*
/etc/eole/distrib/bacula-dir.conf:  Max Wait Time = 300

Also available in: Atom PDF