Bacula supporte les librairies pour les opérations de lecture et écriture. Plusieurs conditions sont requises pour que Bacula puisse utiliser une librairie. Celles-ci sont expliquées en détail ci-dessous. Mais voyons d'abord la liste de ces conditions :
Dans les versions ultérieures à 1.37, la nouvelle directive Autochanger resource permet de grouper les ressources Device pour créer des librairies avec plusieurs lecteurs. Si vous avez une librairie, vous devez utiliser cette ressource.
Bacula utilise son propre script mtx-changer pour interagir avec un programme qui effectue réellement les changement de cartouches. Ainsi, mtx-changer peut être adapté pour fonctionner avec n'importe quel programme de prise en chgarge de librairie. La version actuelle de mtx-changer fonctionne avec le programme mtx . Cependant, des utilisateurs de FreeBSD ont réalisé un script, disponible dans le répertoire examples/autochangers, qui permet à Bacula de fonctionner avec le programme chio.
Bacula supporte aussi les librairies équipées de lecteurs de codes barres. Ce support inclut deux commandes de la console Bacula : label barcodes et update slots. Pour plus de détails au sujet de ces commandes, voyez la section "Support des lecteurs de codes barres" plus loin.
Le support des librairies dans Bacula n'inclue pas, pour le moment, la gestion du nettoyage des lecteurs, ni celle des bacs de cartouches ou des silos.
Le support des librairies à un ou plusieurs lecteurs requiert la ressource Autochanger resource.
En principe, si mtx fonctionne correctement avec votre librairie, ce n'est qu'une question d'adaptation du script mtx-changer pour que Bacula s'interface correctement avec la librairie. Vous pouvez trouver une liste des librairies supportées par mtx en suivant le lien suivant : http://mtx.opensource-sw.net/compatibility.php. Le site officiel du projet mtx se trouve ici : http://mtx.opensource-sw.net/.
Si vous avez des difficultés, veuillez utiliser la commande auto du programme btape pour tester le fonctionnement de votre librairie avec Bacula. Lorsque Bacula fonctionne, souvenez vous que pour beaucoup de distributions (par exemple FreeBSD, Debian,...), le Storage Daemon est exécuté en tant que bacula.tape plutôt que root.root, aussi vous devrez vous assurer que le Storage Daemon dispose de droits suffisants pour accéder à la librairie.
Sous Linux, vous pouvez lire le fichier /proc/scsi/scsi :
cat /proc/scsi/scsi
pour connaître vos périphériques SCSI. Vous pouvez aussi examiner les fichiers /proc/scsi/sg/device_hdr et /proc/scsi/sg/devices :
footnotesize
cat /proc/scsi/sg/device_hdr /proc/scsi/sg/devices
pour déterminer comment spécifier leur nom de périphérique (/dev/sg0 pour le premier, /dev/sg1 pour le second, ...) au niveau de la directive Changer Device
Pour des informations plus détaillées sur le sujet, veuillez consulter la section Linux SCSI Tricks du chapitre sur les tests de lecteurs de ce manuel.
Sous FreeBSD, vous disposez de la commande :
camcontrol devlist
pour afficher la liste des périphériques SCSI ainsi que le /dev/passn que vous utiliserez pour renseigner la directive Changer Device
Assurez-vous que votre Storage Daemon dispose bien des privilèges requis pour accéder à ce périphérique.
L'astuce suivante, destinée aux utilisateurs de FreeBSD, provient de Danny Butroyd. Au redémarrage, Bacula n'aura PLUS les permissions requises pour contrôler le périphérique /dev/pass0. Pour vous affanchir de cette difficulté, éditez le fichier /etc/devfs.conf et ajoutez lui ceci :
own pass0 root:bacula perm pass0 0666 own nsa0.0 root:bacula perm nsa0.0 0666
Nous avons ainsi donné au groupe Bacula la permission d'écrire sur le périphérique nsa0.0. Pour activer ces modifications, exécutez : /etc/rc.d/devfs restart
Vous n'aurez plus à modifier les permissions sur ces périphériques pour que Bacula continue d'utiliser la librairie après un redémarrage.
Veuillez lire les sections ci-dessous pour bien comprendre comment les librairies fonctionnent avec Bacula. Bien que nous fournissions un script mtx-changer par défaut, il se peut que votre librairie nécessite quelques aménagements de ce script. Si vous voulez voir des exemples de fichiers de configuration et de scripts, jetez un oeil au répertoire <bacula-src>/examples/devices où vous trouverez un exemple de ressource Device Bacula : HP-autoloader.conf ainsi que plusieurs scripts mtx-changer modifiés pour fonctionner avec diverses librairies.
Pour utiliser convenablement une librairie, Bacula doit savoir quel volume se trouve dans quel slot de la librairie. Les slots sont les emplacements où sont rangées les cartouches lorsqu'elles ne sont pas dans un lecteur. Bacula numérote ces slots de un jusqu'au nombre de cartouches contenues dans la librairie.
Bacula n'utilisera pas automatiquement une cartouche présente dans la librairie si elle ne porte pas d'étiquette (label) Bacula et si son numéro de slot n'est pas référencé dans le catalogue. Vous devez, à l'aide de la console, assigner un slot à chaque cartouche présente dans la librairie. Cette information est conservée dans le catalogue avec les autres données relatives au volume. Si le slot n'est pas précisé, ou s'il est égal à zéro, alors Bacula ne tentera pas d'utiliser la librairie, même si tous les enregistrements de configuration sont présents. De même, la commande mount de la console Bacula ne provoque pas non plus l'utilisation de la librairie, mais se contente d'ordonner à Bacula de lire toute cartouche éventuellement présente dans le lecteur.
Vous pouvez contrôler le numéro de slot et le drapeau InChanger avec la commande :
list Volumes
dans la console.
Certaines librairies comportent plusieurs périphériques de lecture/éctriture (lecteurs). La nouvelle ressource Autochanger apparue avec la version 1.37 vous permet de grouper des ressources Devices (représentant chacune un lecteur). Le Director est toujours en mesure d'adresser directement un lecteur, mais ce faisant, il outrepasse le fonctionnement propre aux groupements de lecteurs. Il est préférable que la Ressource Storage du Director définisse une ressource Autochanger, permettant ainsi au Storage Daemon de s'assurer qu'un seul lecteur à la fois utilise le script mtx-changer, et que deux lecteurs ne tentent pas de lire le même volume.
Les librairies à lecteurs multiples nécessitent d'utiliser la directive Drive Index dans la ressource Device du Storage Daemon. Les lecteurs sont numérotés à partir de zéro, ce qui constitue la valeur par défaut. Pour utiliser un deuxième lecteur dans une librairie, vous devez définir une seconde ressource Device et lui attribuer le Drive Index 1. En général, le second périphérique aura le même Changer Device (canal de contrôle) que le premier, mais une Archive Device différente.
Par défaut, les jobs Bacula préfèrent écrire sur un volume déjà monté. Si vous avez une librairie avec plusieurs lecteurs, et si vous souhaitez que Bacula écrive sur plusieurs volumes du même pool en même temps, vous devez désactiver la directive Prefer Mounted Volumes dans la ressource Job du Director. Ainsi le Storage Daemon pourra maximiser l'usage des lecteurs.
La configuration des librairies s'effectue dans Bacula au niveau de le ressource Device du Storage Daemon. Quatre directives permettent de définir l'usage de la librairie par Bacula : Autochanger, Changer Device, Changer Command et Maximum Changer Wait
Ces quatre directives sont décrites en détail ci-dessous. Notez cependant que les directives Changer Device et Changer Command ne sont pas requises dans la ressource Device si elles figurent dans la ressource Autochanger.
Sur FreeBSD, on spécifiera typiquement Changer Device = /dev/pass0 ou Changer Device = /dev/passn.
Sur Solaris, ce sera Changer Device = /dev/rdsk.
Assurez vous que votre Storage Daemon possède les permissions d'accéder à ce périphérique.
%% = %
%a = archive device name
%c = changer device name
%d = changer drive index base 0
%f = Client's name
%j = Job name
%o = command (loaded, load, or unload)
%s = Slot base 0
%S = Slot base 1
%v = Volume name
Voici un exemple d'utilisation de mtx avec le script mtx-changer :
Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
Où vous devrez adapter le chemin /etc/bacula pour qu'il co'incide à la réalité de votre installation. Les détails des trois commandes (loaded, load, unload) utilisées par Bacula ainsi que la sortie qui en est attendue sont donnés dans la section Interface entre Bacula et les librairies ci-dessous.
Au delà de ce délai, le programme de chargement est tué et Bacula sollicite l'intervention d'un opérateur.
Device Index = 1
Pour utiliser le second lecteur, vous devez avoir une seconde définition de ressource Device dans le fichier bacula-sd.conf. Voyez la section concernant les lecteurs multiples plus haut dans ce chapitre pour plus de plus amples informations.
De plus, pour un fonctionnement correct de la librairie, vous devez définir une ressource Autochanger.
eric 2009-05-06