Subsections


Support des librairies

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.

Déterminer vos périphériques SCSI

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.

Exemples de scripts

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.

Slots

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.

Lecteurs multiples

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.

Directives de la ressource Device

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.

Autochanger = Yes|No
La directive Autochanger stipule que le périphérique ainsi défini est, ou n'est pas, une librairie. La valeur par défaut est no.

Changer Device = <device-name>
En plus du nom d'Archive Device, vous devez spécifier un nom de librairie Changer Device, ceci parce que la plupart des librairies sont controlées via un pseudo-fichier différent de celui utilisé pour lire et écrire sur les cartouches. Par exemple, sur les systèmes Linux, on utilise généralement l'interface SCSI générique pour contrôler le bras de la librairie, soit Changer Device = /dev/sg0 et l'interface SCSI standard pour lire et écrire sur les bandes, soit Archive Device = /dev/nst0. Notez que certaines librairies évoluées localiseront le bras sur /dev/sg1. De telles librairies ont souvent plusieurs lecteurs et un nombre important de cartouches.

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.

Changer Command = <command>
Cette directive est utilisée pour spécifier le programme externe à appeler et les arguments à lui fournir. La commande est supposée être un programme ou un script shell standard qui peut être exécuté par le système. cette commande est invoquée chaque fois que Bacula manipule le bras de la librairie. Les substitutions suivantes sont effectuées dans la ligne command avant qu'elle ne soit envoyée au système d'exploitation pour exécution.

      %% = %
      %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.

Maximum Changer Wait = <time>
Cette directive sert à définir le délai maximal durant lequel Bacula attendra la réponse d'une librairie à une commande (par exemple, load). La valeur par défaut est 120 secondes. Si votre librairie est lente, vous pouvez avoir intérêt à allonger ce délai.

Au delà de ce délai, le programme de chargement est tué et Bacula sollicite l'intervention d'un opérateur.

Drive Index = <number>
Cette directive vous permet d'indiquer à Bacula d'utiliser le second lecteur et les éventuels suivants dans une librairie qui en contient plusieurs. Etant donné que les lecteurs sont numérotés à partir de zéro, le second est défini par :

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