Avant d'essayer d'utiliser une librairie avec Bacula, il est préférable de vérifier "à la main" que le bras robotisé fonctionne. Pour ce faire, utilisez les commandes suivantes (à supposer que le script mtx-changer est installé dans /etc/bacula/mtx-changer) :
Cette commande devrait afficher :
1: 2: 3: ...
soit un numéro suivi de deux points pour chacun des slots occupé dans la librairie. Si votre librairie a un lecteur de codes barres, celui-ci sera affiché après les deux points. Si un message d'erreur s'affiche, vous devez résoudre le problème (par exemple, essayez un autre nom de périphérique si /dev/sg0 n'est pas le bon. PAr exemple, sur FreeBSD c'est généralement /dev/pass2).
Cette commande devrait retourner le nombre de slots de votre librairie.
Si une cartouche est chargée, cette commande devrait la décharger.
Si vous avez une cartouche dans le slot 3, elle sera chargée dans le slot de lecture (0).
devrait afficher "3"
Une fois que toutes les commandes ci-dessus fonctionnent correctement, Bacula devrait être capable d'utiliser la librairie, pourvu que votre configuration comporte la bonne commande Changer Command. A ce stade, il ne peut subsister qu'un problème : si votre librairie requiert un certain délai pour charger la cartouche après l'exécution de la commande. Immédiatement après avoir obtenu le retour du script mtx-changer, Bacula commande le rembobinage et la lecture de la bande. S'il obtient une erreur I/O, vous devriez probablement insérer une pause (sleep 20) après la commande mtx, mais prenez soin de terminer le script avec un code de sortie 0 en ajoutant exit 0 après toute commande que vous ajoutez au script, car Bacula contrôle le code de sortie du script qui devrait être 0 si tout s'est bien passé.
Vous pouvez tester si vous avez ou non besoin d'une telle pause en exécutant le script suivant :
#!/bin/sh /etc/bacula/mtx-changer /dev/sg0 unload /etc/bacula/mtx-changer /dev/sg0 load 3 mt -f /dev/st0 rewind mt -f /dev/st0 weof
S'il fonctionne correctement, vous n'êtes sans doute pas concerné par ce problème. Sinon, commencez par ajouter sleep 30 voire sleep 60 juste après la commande "/etc/bacula/mtx-changer /dev/sg0 load 3". Si ça marche, vous pouvez alors intégrer cette pause dans le script mtx-changer afin qu'elle soit effective lorsque Bacula est exécuté.
Quelques rares librairies exigent l'éjection de la cartouche avant de pouvoir la décharger. Dan ce cas, la commande /etc/bacula/mtx-changer /dev/sg0 load 3 ne fonctionne jamais, quel que soit la durée de la pause. Si vous pensez avoir ce problème, insérez une commande "eject" juste avant la commande /etc/bacula/mtx-changer /dev/sg0 unload :
#!/bin/sh /etc/bacula/mtx-changer /dev/sg0 unload mt -f /dev/st0 offline /etc/bacula/mtx-changer /dev/sg0 load 3 mt -f /dev/st0 rewind mt -f /dev/st0 weof
Naturellement, si vous avez besoin de la commande offline, vous devriez l'intégrer au script mtx-changer, en n'oubliant pas de préserver le code de sortie du script par l'ajout de exit 0.
Comme indiqué précédemment, plusieurs scripts qui implémentent ces fonctions sont regroupés dans <bacula-source>/examples/devices, ils peuvent vous inspirer pour faire en sorte que le votre fonctionne.
Si Bacula affiche "Rewind error on /dev/nst0. ERR=Input/output error." vous avez probablement besoin d'accroître la pause dans le script mtx-changer