Anomalie #1934
Sauvegarde interminable
100%
Description
Bonjour,
Premier problèmeSur 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.
Demandes liées
Révisions associées
Ajout de l'option Max Wait Time (fixes #1934)
Historique
#1 Mis à jour par Joël Cuissinat il y a presque 13 ans
- Assigné à mis à Emmanuel GARETTE
- Version cible mis à Mises à jour 2.3 - 02 RC
#2 Mis à jour par Emmanuel GARETTE il y a presque 13 ans
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.
#3 Mis à jour par Emmanuel GARETTE il y a presque 13 ans
- Statut changé de Nouveau à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 89a7c5d4460ae0514d843c77d1f5145f62f4ff81.
#4 Mis à jour par Emmanuel GARETTE il y a presque 13 ans
- Version cible changé de Mises à jour 2.3 - 02 RC à Mises à jour 2.2.3 - 02 RC
#5 Mis à jour par Joël Cuissinat il y a plus de 12 ans
- Statut changé de Résolu à Fermé
root@serv-pedago:~# grep Wait /etc/eole/distrib/*bacu* /etc/eole/distrib/bacula-dir.conf: Max Wait Time = 300