4 \section*{Support des librairies}
5 \label{_ChapterStart18}
6 \index[general]{Support!Librairies}
7 \index[general]{Autochanger Support }
8 \addcontentsline{toc}{section}{Support des librairies}
10 \subsection*{G\'en\'eralit\'es sur les librairies}
11 \index[general]{G\'en\'eralit\'es!Librairies}
12 \index[general]{G\'en\'eralit\'es sur les librairies}
13 \addcontentsline{toc}{subsection}{G\'en\'eralit\'es sur les librairies}
15 Bacula supporte les librairies pour les op\'erations de lecture et \'ecriture.
16 Plusieurs conditions sont requises pour que Bacula puisse utiliser une librairie.
17 Celles-ci sont expliqu\'ees en d\'etail ci-dessous.
18 Mais voyons d'abord la liste de ces conditions :
21 \item Un script charg\'e de piloter la librairie en accord avec les commandes
22 envoy\'ees par Bacula est requis. Nous fournissons un tel script pr\'evu pour fonctionner
23 avec le programme {\bf mtx} disponible dans les paquets {\bf depkgs}.
24 \item Chaque volume \`a utiliser doit \^etre d\'efini dans le catalogue et avoir
25 un num\'ero de slot (NDT : emplacement dans la librairie) assign\'e, de sorte
26 que Bacula puisse savoir o\`u se trouve le volume dans la librairie. Cet
27 enregistrement se fait la plupart du temps gr\^ace \`a la commande {\bf label}.
28 Voyez ci-dessous pour plus de d\'etails. Vous devez \'etiqueter manuellement
29 vos cartouches avant de pouvoir les utiliser.
30 \item Vous devez avoir modifi\'e le fichier de configuration de votre Storage
31 Daemon afin que la ressource Device identifie votre p\'eriph\'erique en tant
32 que librairie. Quelques autres param\`etres doivent \^etre d\'efinis.
33 \item Si vous n'ex\'ecutez pas le Storage Daemon en tant que root, vous devez
34 vous assurer qu'il d\'etient les droits requis pour acc\'eder au lecteur et au
35 bras robotis\'e de la librairie.
36 \item Vous devez placer la directive {\bf Autochanger = yes} dans la
37 ressource Storage de votre fichier bacula-dir.conf, de sorte que vous soyez
38 interrog\'e au sujet du slot \`a chaque \'etiquetage de cartouche.
41 Dans les versions ult\'erieures \`a 1.37, la nouvelle directive
42 \ilink{Autochanger resource}{AutochangerRes} permet de grouper les ressources
43 Device pour cr\'eer des librairies avec plusieurs lecteurs. Si vous avez une
44 librairie, vous devez utiliser cette ressource.
46 Bacula utilise son propre script {\bf mtx-changer} pour interagir avec un
47 programme qui effectue r\'eellement les changement de cartouches. Ainsi,
48 {\bf mtx-changer} peut \^etre adapt\'e pour fonctionner avec n'importe quel
49 programme de prise en chgarge de librairie. La version actuelle de
50 {\bf mtx-changer} fonctionne avec le programme {\bf mtx} . Cependant,
51 des utilisateurs de FreeBSD ont r\'ealis\'e un script, disponible dans
52 le r\'epertoire {\bf examples/autochangers}, qui permet \`a Bacula de fonctionner
53 avec le programme {\bf chio}.
55 Bacula supporte aussi les librairies \'equip\'ees de lecteurs de codes barres.
56 Ce support inclut deux commandes de la console Bacula : {\bf label barcodes}
57 et {\bf update slots}. Pour plus de d\'etails au sujet de ces commandes,
58 voyez la section "Support des lecteurs de codes barres" plus loin.
60 Le support des librairies dans Bacula n'inclue pas, pour le moment, la gestion
61 du nettoyage des lecteurs, ni celle des bacs de cartouches ou des silos.
62 Cependant, sous certaines conditions, vous pouvez parvenir \`a le faire
63 fonctionner avec des stackers (tels que gravity feed et apparent\'es).
64 (NDT : le dernier paragraphe n'est pas clair. Voici la vo :
65 Current Bacula autochanger support does not include cleaning, stackers, or
66 silos. However, under certain conditions, you may be able to make Bacula
67 work with stackers (gravity feed and such).)
69 Le support des librairies \`a plusieurs lecteurs requiert la ressource
70 \ilink{Autochanger resource}{AutochangerRes}, qui est aussi recommand\'ee
71 pour les librairies \`a un seul lecteur.
73 En principe, si {\bf mtx} fonctionne correctement avec votre librairie, ce
74 n'est qu'une question d'avaptation du script {\bf mtx-changer} pour que
75 Bacula s'interface correctement avec la librairie. Vous pouvez trouver une
76 liste des librairies support\'ees par {\bf mtx} en suivant le lien suivant :
77 \elink{http://mtx.badtux.net/compatibility.php}{http://mtx.badtux.net/compatibility.php}.
78 Le sit officiel du projet {\bf mtx} se trouve ici :
79 \elink{http://mtx.badtux.net/}{http://mtx.badtux.net/}.
81 Si vous avez des difficult\'es, veuillez utiliser la commande {\bf auto} du
82 programme {\bf btape} pour tester le fonctionnement de votre librairie
83 avec Bacula. Lorsque Bacula fonctionne, souvenez vous que pour beaucoup de
84 distributions (par exemple FreeBSD, Debian,...), le Storage Daemon est
85 ex\'ecut\'e en tant que {\bf bacula.tape} plut\^ot que {\bf root.root}, aussi
86 vous devrez vous assurer que le Storage Daemon dispose de droits suffisants pour
87 acc\'eder \`a la librairie.
90 \subsection*{D\'eterminer vos p\'eriph\'eriques SCSI}
91 \index[general]{D\'eterminer!p\'eriph\'eriques SCSI}
92 \index[general]{D\'eterminer vos p\'eriph\'eriques SCSI}
93 \index[general]{P\'eriph\'eriques}
94 \index[general]{p\'eriph\'eriques!SCSI}
95 \addcontentsline{toc}{subsection}{D\'eterminer vos p\'eriph\'eriques SCSI}
97 Sous Linux, vous pouvez lire le fichier /proc/scsi/scsi :
105 pour conna\^itre vos p\'eriph\'eriques SCSI. Vous pouvez aussi examiner les fichiers
106 /proc/scsi/sg/device_hdr et /proc/scsi/sg/devices :
110 cat /proc/scsi/sg/device_hdr /proc/scsi/sg/devices
114 pour d\'eterminer comment sp\'ecifier leur nom de p\'eriph\'erique ({\bf /dev/sg0}
115 pour le premier, {\bf /dev/sg1} pour le second, ...) au niveau de
116 la directive {\bf Changer Device}
118 Sous FreeBSD, vous disposez de la commande :
126 pour afficher la liste des p\'eriph\'eriques SCSI ainsi que le {\bf /dev/passn}
127 que vous utiliserez pour renseigner la directive {\bf Changer Device}
129 Assurez-vous que votre Storage Daemon dispose bien des privil\`eges requis
130 pour acc\'eder \`a ce p\'eriph\'erique.
132 L'astuce suivante, destin\'ee aux utilisateurs de FreeBSD, provient de
133 Danny Butroyd. Au red\'emarrage, Bacula n'aura PLUS les permissions
134 requises pour contr\^oler le p\'eriph\'erique /dev/pass0. Pour vous
135 affanchir de cette difficult\'e, \'editez le fichier /etc/devfs.conf et
140 own pass0 root:bacula
142 own nsa0.0 root:bacula
147 Nous avons ainsi donn\'e au groupe Bacula la permission d'\'ecrire
148 sur le p\'eriph\'erique nsa0.0. Pour activer ces modifications, ex\'ecutez :
149 /etc/rc.d/devfs restart
151 Vous n'aurez plus \`a modifier les permissions sur ces p\'eriph\'eriques
152 pour que Bacula continue d'utiliser la librairie apr\`es un red\'emarrage.
156 \subsection*{Exemples de scripts}
157 \index[general]{Scripts!Exemples }
158 \index[general]{Exemples de scripts }
159 \addcontentsline{toc}{subsection}{Exemples de scripts}
161 Veuillez lire les sections ci-dessous pour bien comprendre comment
162 les librairies fonctionnent avec Bacula. Bien que nous fournissions
163 un script {\bf mtx-changer} par d\'efaut, il se peut que votre librairie
164 n\'ecessite quelques am\'enagements de ce script. Si vous voulez voir des
165 exemples de fichiers de configuration et de scripts, jetez un oeil
166 au r\'epertoire \lt{}bacula-src\gt{}/examples/devices} o\`u vous
167 trouverez un exemple de ressource Device Bacula : {\bf HP-autoloader.conf}
168 ainsi que plusieurs scripts {\bf mtx-changer} modifi\'es pour fonctionner
169 avec diverses librairies.
174 \index[general]{Slots }
175 \addcontentsline{toc}{subsection}{Slots}
177 Pour utiliser convenablement une librairie, Bacula doit savoir quel volume
178 se trouve dans quel {\bf slot} de la librairie. Les slots sont les
179 emplacements o\`u sont rang\'ees les cartouches lorsqu'elles ne sont pas dans un
180 lecteur. Bacula num\'erote ces slots de un jusqu'au nombre de cartouches
181 contenues dans la librairie.
183 Bacula n'utilisera pas automatiquement une cartouche pr\'esente dans la librairie
184 si elle ne porte pas d'\'etiquette (label) Bacula et si son num\'ero de slot n'est pas
185 r\'ef\'erenc\'e dans le catalogue. Vous devez, \`a l'aide de la console, assigner un
186 slot \`a chaque cartouche pr\'esente dans la librairie. Cette information est
187 conserv\'ee dans le catalogue avec les autres donn\'ees relatives au volume.
188 Si le slot n'est pas pr\'ecis\'e, ou s'il est \'egal \`a z\'ero, alors Bacula ne tentera
189 pas d'utiliser la librairie, m\^eme si tous les enregistrements de configuration
190 sont pr\'esents. De m\^eme, la commande {\bf mount} de la console Bacula ne
191 provoque pas non plus l'utilisation de la librairie, mais se contente d'ordonner
192 \`a Bacula de lire toute cartouche \'eventuellement pr\'esente dans le lecteur.
194 Vous pouvez contr\^oler le num\'ero de slot et le drapeau InChanger avec la commande :
203 \subsection*{Lecteurs multiples}
204 \index[general]{Lecteurs!Multiples }
205 \index[general]{Lecteurs ultiples}
206 \addcontentsline{toc}{subsection}{Lecteurs multiple}
208 Certaines librairies comportent plusieurs p\'eriph\'eriques de lecture/\'ectriture
209 (lecteurs). La nouvelle \ilink{ressource Autochanger}{AutochangerRes}
210 apparue avec la version 1.37 vous permet de grouper des ressources Devices
211 (repr\'esentant chacune un lecteur). Le Director est toujours en mesure
212 d'adresser directement un lecteur, mais ce faisant, il outrepasse
213 le fonctionnement propre aux groupements de lecteurs. Il est pr\'ef\'erable
214 que la Ressource Storage du Director d\'efinisse une ressource
215 Autochanger, permettant ainsi au Storage Daemon de s'assurer qu'un seul
216 lecteur \`a la fois utilise le script mtx-changer, et que deux lecteurs ne tentent
217 pas de lire le m\^eme volume.
219 Les librairies \`a lecteurs multiples n\'ecessitent d'utiliser la directive
220 {\bf Drive Index} dans la ressource Device du Storage Daemon. Les
221 lecteurs sont num\'erot\'es \`a partir de z\'ero, ce qui constitue la valeur par
222 d\'efaut. Pour utiliser un deuxi\`eme lecteur dans une librairie, vous devez
223 d\'efinir une seconde ressource Device et lui attribuer le Drive Index 1.
224 En g\'en\'eral, le second p\'eriph\'erique aura le m\^eme {\bf Changer Device}
225 (canal de contr\^ole) que le premier, mais une {\bf Archive Device} diff\'erente.
227 \label{ConfigRecords}
228 \subsection*{Directives de la ressource Device}
229 \index[general]{Directives!ressource Device}
230 \index[general]{Directives de la ressource Device}
231 \addcontentsline{toc}{subsection}{Directives de la ressource Device}
233 La configuration des librairies s'effectue dans Bacula au niveau de le ressource
234 Device du Storage Daemon. Quatre directives permettent de d\'efinir l'usage de
235 la librairie par Bacula : {\bf Autochanger}, {\bf Changer Device},
236 {\bf Changer Command} et {\bf Maximum Changer Wait}
238 Ces quatre directives sont d\'ecrites en d\'etail ci-dessous. Notez cependant
239 que les directives {\bf Changer Device} et {\bf Changer Command} ne sont pas
240 requises dans la ressource Device si elles figurent dans la ressource
245 \item [Autochanger = {\it Yes|No} ]
246 \index[sd]{Autochanger}
247 La directive {\bf Autochanger} stipule que le p\'eriph\'erique ainsi d\'efini est, ou
248 n'est pas, une librairie. La valeur par d\'efaut est {\bf no}.
250 \item [Changer Device = \lt{}device-name\gt{}]
251 \index[sd]{Changer Device}
252 En plus du nom d'Archive Device, vous devez sp\'ecifier un nom de
253 librairie {\bf Changer Device}, ceci parce que la plupart des librairies
254 sont control\'ees via un pseudo-fichier diff\'erent de celui utilis\'e pour
255 lire et \'ecrire sur les cartouches. Par exemple, sur les syst\`emes Linux,
256 on utilise g\'en\'eralement l'interface SCSI g\'en\'erique pour contr\^oler le bras
257 de la librairie, soit {\bf Changer Device = /dev/sg0} et l'interface SCSI
258 standard pour lire et \'ecrire sur les bandes, soit {\bf Archive Device = /dev/nst0}.
259 Notez que certaines librairies \'evolu\'ees localiseront le bras sur
260 {\bf /dev/sg1}. De telles librairies ont souvent plusieurs lecteurs et un
261 nombre important de cartouches.
263 Sur FreeBSD, on sp\'ecifiera typiquement {\bf Changer Device = /dev/pass0} ou
264 {\bf Changer Device = /dev/passn}.
266 Sur Solaris, ce sera {\bf Changer Device = /dev/rdsk}.
268 Assurez vous que votre Storage Daemon poss\`ede les permissions d'acc\'eder \`a
271 \item [Changer Command = \lt{}command\gt{}]
272 \index[sd]{Changer Command }
273 Cette directive est utilis\'ee pour sp\'ecifier le programme externe \`a appeler
274 et les arguments \`a lui fournir. La commande est suppos\'ee \^etre un programme
275 ou un script shell standard qui peut \^etre ex\'ecut\'e par le syst\`eme. cette
276 commande est invoqu\'ee chaque fois que Bacula manipule le bras de la librairie.
277 Les substitutions suivantes sont effectu\'ees dans la ligne {\bf command}
278 avant qu'elle ne soit envoy\'ee au syst\`eme d'exploitation pour ex\'ecution.
283 %a = archive device name
284 %c = changer device name
285 %d = changer drive index base 0
288 %o = command (loaded, load, or unload)
295 Voici un exemple d'utilisation de {\bf mtx} avec le script {\bf mtx-changer} :
299 Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
303 O\`u vous devrez adapter le chemin {\bf /etc/bacula} pour qu'il co\''incide \`a
304 la r\'ealit\'e de votre installation. Les d\'etails des trois commandes (loaded,
305 load, unload) utilis\'ees par Bacula ainsi que la sortie qui en est attendue
306 sont donn\'es dans la section {\bf Interface entre Bacula et les librairies}
309 \item [Maximum Changer Wait = \lt{}time\gt{}]
310 \index[sd]{Maximum Changer Wait}
311 Cette directive sert \`a d\'efinir le d\'elai maximal durant lequel Bacula
312 attendra la r\'eponse d'une librairie \`a une commande (par exemple, load).
313 La valeur par d\'efaut est 120 secondes. Si votre librairie est lente, vous
314 pouvez avoir int\'er\^et \`a allonger ce d\'elai.
316 Au del\`a de ce d\'elai, le programme de chargement est tu\'e et Bacula
317 sollicite l'intervention d'un op\'erateur.
319 \item [Drive Index = \lt{}number\gt{}]
320 \index[sd]{Drive Index}
321 Cette directive vous permet d'indiquer \`a Bacula d'utiliser le second
322 lecteur et les \'eventuels suivants dans une librairie qui en contient
323 plusieurs. Etant donn\'e que les lecteurs sont num\'erot\'es \`a partir de
324 z\'ero, le second est d\'efini par :
332 Pour utiliser le second lecteur, vous devez avoir une seconde d\'efinition
333 de ressource Device dans le fichier bacula-sd.conf. Voyez la section
334 concernant les lecteurs multiples plus haut dans ce chapitre pour plus
335 de plus amples informations.
338 De plus, pour un fonctionnement correct de la librairie, vous devez d\'efinir
339 une ressource Autochanger.
340 \input{autochangerres}
343 \subsection*{Un exemple de fichier de configuration}
344 \index[general]{exemple fichier configuration}
345 \index[general]{fichier!exemple configuration}
346 \addcontentsline{toc}{subsection}{Un exemple de fichier de configuration}
348 Les deux ressource suivantes impl\'ementent une librairie :
355 Changer Device = /dev/sg0
356 Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
362 Archive Device = /dev/nst0 # Normal archive device
365 AutomaticMount = yes;
371 o\`u vous adapterez les directives {\bf Archive Device}, {\bf Changer Device} et
372 {\bf Changer Command} pour qu'elles conviennent \`a votre syst\`eme.
374 \subsection*{Un exemple de fichier de configuration multi-lecteurs}
375 \index[general]{Multi-lecteurs exemple fichier de configuration}
376 \addcontentsline{toc}{subsection}{Un exemple de fichier de configuration multi-lecteurs}
378 Les ressources suivantes impl\'ementent une librairie multi-lecteurs :
384 Device = Drive-1, Drive-2
385 Changer Device = /dev/sg0
386 Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
393 Archive Device = /dev/nst0 # Normal archive device
396 AutomaticMount = yes;
404 Archive Device = /dev/nst1 # Normal archive device
407 AutomaticMount = yes;
414 o\`u vous adapterez les directives {\bf Archive Device}, {\bf Changer Device} et
415 {\bf Changer Command} pour qu'elles conviennent \`a votre syst\`eme.
417 \label{SpecifyingSlots}
418 \subsection*{Sp\'ecifier des slots lors de l'\'etiquetage}
419 \index[general]{Sp\'ecifier des slots lors de l'\'etiquetage}
420 \index[general]{Etiquetage!Sp\'ecifier des slots lors de}
421 \addcontentsline{toc}{subsection}{Sp\'ecifier des slots lors de l'\'etiquetage}
423 Si vous utilisez la directive {\bf Autochanger = yes} \`a la ressource Storage
424 du fichier de configuration de votre Director, la console Bacula vous
425 demandera automatiquement le num\'ero de slot lors de l'utilisation des
426 commandes {\bf add} ou {\bf label} pour ce p\'eriph\'erique de stockage. Si
427 votre script {\bf mtx-changer} est correctement install\'e, Bacula
428 chargera la bonne cartouche \`a l'ex\'ecution de la commande {\bf label}.
430 Vous devez aussi sp\'ecifier {\bf Autochanger = yes} dans la ressource
431 Device du Storage Daemon ainsi que nous l'avons d\'ecrit plus haut pour
432 que la librairie soit utilis\'ee. Veuillez consulter la section
433 \ilink{Ressource Storage}{Autochanger1} dans le chapitre sur la configuration
434 du Director pour plus de d\'etails sur ce sujet.
436 Ainsi, toutes les phases de l'utilisation des cartouches peuvent \^etre
437 int\'egralement automatis\'ees. Il est aussi possible de param\'etrer ou
438 modifier la valeur du slot en utilisant le sous-menu {\bf Volume Parameters}
439 de la commande {\bf update} de la console.
441 M\^eme si tous les param\`etres ci-dessus sont correctement sp\'ecifi\'es, Bacula ne
442 tentera d'acc\'eder \`a la librairie que s'il existe un {\bf slot} non-nul parmi
443 les volumes enregistr\'es dans le catalogue.
445 Si votre librairie est \'equip\'ee d'un lecteur de codes barres, vous pouvez
446 \'etiqueter vos volumes l'un apr\`es l'autre en utilisant la commande
447 {\bf label barcodes}. Bacula montera et \'etiquettera chaque cartouche porteuse
448 d'un code barres contenue dans la librairie avec le nom sp\'ecifi\'e par le
449 code barres. L'enregistrement apropri\'e sera aussi cr\'e\'e dans le catalogue.
450 Toute cartouche dont le code barres commence par les caract\`eres sp\'ecifi\'es par
451 la directive {\bf Cleaning Prefix} est consid\'er\'ee comme une cartouche de
452 nettoyage, et ne sera pas \'etiquet\'ee. Par exemple, avec :
458 Cleaning Prefix = "CLN"
463 toute cartouche de code barres CLNxxxx sera trait\'ee en tant que cartouche de
464 nettoyage, et ne sera pas mont\'ee.
466 Notez que les volumes doivent \^etre pr\'e-\'etiquet\'es pour pouvoir \^etre utilis\'es
467 automatiquement dans la librairie lors d'une sauvegarde. Si vous ne disposez
468 pas d'un lecteur de code barres, ceci se fait manuellement, ou \`a l'aide d'un
472 \subsection*{Travailler avec plusieurs magasins}
473 \index[general]{Travailler avec plusieurs magasins}
474 \index[general]{magasins!Travailler avec plusieurs}
475 \addcontentsline{toc}{subsection}{Travailler avec plusieurs magasins}
477 Si vous avez plusieurs magasins ou si vous ins\'erez ou retirez des
478 cartouches d'un magasin, vous devriez en informer Bacula. Ainsi, Bacula
479 sera en mesure d'utiliser pr\'ef\'erentiellement des cartouches qu'il sait \^etre
480 dans la librairie, pr\'evenant ainsi des interventions humaines inutiles.
482 Si votre librairie est \'equip\'ee d'un lecteur de codes barres, il est ais\'e
483 de tenir Bacula inform\'e : chaque fois que vous changez un magasin, ajoutez
484 ou pr\'elevez une cartouche, faites simplement :
490 (insert new magazine)
496 dans la console. Avec cette commande, Bacula se renseigne aupr\`es de la librairie
497 pour conna\^itre les volumes qu'elle contient. Ceci ne n\'ecessite pas d'acc\'eder
498 aux volumes car la librairie se charge de faire son inventaire lors de sa
499 mise sous tension. Bacula s'assure alors que tout volume pr\'esent dans la
500 librairie est marqu\'e pr\'esent dans le catalogue et que tout volume absent de la
501 librairie est marqu\'e absent dans le catalogue. En outre, les num\'eros de slots
502 des volumes sont corrig\'es dans le catalogue s'ils sont inexacts.
504 Si vous ne disposez pas d'un lecteur de codes barres, vous avez plusieurs alternatives :
507 \item Vous pouvez attribuer manuellement les num\'eros de slots et les drapeaux
508 InChanger \`a l'aide de la commande {\bf update volume} dans la console. Cette
509 m\'ethode est assez p\'enible.
511 \item Vous pouvez lancer la commande
519 qui ordonne \`a Bacula de lire l'\'etiquette (label) de chacune des cartouches
520 dans la librairie par montage successif, et de mettre \`a jour les informations
521 (Slot, drapeau InChanger) dans le catalogue. Cette m\'ethode est efficace, mais
522 prend du temps pour charger chaque cartouche et en lire l'\'etiquette.
524 \item Vous pouvez modifier le script mtx-changer en sorte qu'il simule une
525 librairie \'equip\'ee d'un lecteur de codes barres. Voyez ce qui suit pour plus de
530 \subsection*{Simuler un lecteur de codes barres dans votre librairie}
531 \index[general]{Librairie!Simuler un lecteur de codes barres dans votre}
532 \index[general]{Simuler un lecteur de codes barres dans votre}
533 \addcontentsline{toc}{subsection}{Simuler un lecteur de codes barres dans votre}
535 Vous pouvez simuler un lecteur de codes barres dans votre librairie en faisant
536 en sorte que le script {\bf mtx-changer} retourne les informations que
537 retournerait une librairie avec lecteur de codes barres. Pour cela, commentez
538 la ligne ci-dessous dans le "case" aux alentours de la ligne 99 :
542 ${MTX} -f $ctl status | grep " *Storage Element [0-9]*:.*Full" | awk "{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
546 en ajoutant un \# au d\'ebut de cette ligne (vous pouvez aussi supprimer la ligne).
547 A sa place, ajoutez une nouvelle ligne dont le r\^ole est d'imprimer le contenu
548 d'un fichier. Par exemple :
552 cat /etc/bacula/changer.volumes
556 Le nom du fichier est libre, mais assurez vous d'utiliser un chemin absolu.
557 Le contenu du fichier doit avoir le format :
568 O\`u 1, 2, 3 sont les num\'eros de slots et Volume1, Volume2, Volume3 sont les
569 noms de volumes dans ces slots. Vous pouvez utiliser plusieurs fichiers
570 repr\'esentant les contenus de plusieurs magasins, ainsi, lorsque vous
571 changez de magasin, contentez vous de copier le contenu du fichier associ\'e
572 dans le fichier {\bf /etc/bacula/changer.volumes}. Il n'est pas utile de
573 stopper et red\'emarrer Bacula lors d'un changement de magasins, mettez simplement
574 les bonnes valeurs dans le fichier avant de lancer la commande {\bf update slots}.
575 Votre librairie appara\^itra \`a Bacula comme \'equip\'ee d'un lecteur de codes barres.
579 \subsection*{La forme compl\`ete de la commande Update Slots}
580 \index[general]{La forme compl\`ete de la commande Update Slots}
581 \index[general]{Command!La forme compl\`ete de la commande Update Slots}
582 \addcontentsline{toc}{subsection}{La forme compl\`ete de la commande Update Slots}
584 Si vous ne changez qu'une cartouche, vous ne voulez peut-\^etre pas passer au crible
585 tous vos volumes, c'est pourquoi la commande {\bf update slots} (de m\^eme que la
586 commande {\bf update slots scan}) poss\`ede la forme additionnelle :
590 update slots=n1,n2,n3-n4, ...
594 o\`u le mot-clef {\bf scan} peut \'eventuellement \^etre ajout\'e. n1, n2, n3-n4
595 repr\'esentent respectivement les num\'eros et la plage de slots que vous souhaitez
598 Cette forme est particuli\`erement utile si vous voulez utiliser "scan" (couteux en temps)
599 en restrignant l'op\'eration \`a quelques slots.
601 Par exemple, si vous lancez la commande :
605 update slots=1,6 scan
609 Bacula va charger le volume du slot 6, lire son \'etiquette logicielle (label) et
610 mettre \`a jour le catalogue, avant de faire de m\^eme avec la cartouche du slot 6.
619 il va lire les codes barres des volumes dans les slots 1,2,3 et 6, et faire les
620 mises \`a jour approri\'ees dans le catalogue. Si vous n'avez pas de lecteur de
621 codes barres, ni n'en simulez comme d\'ecrit plus haut, la commande ci-dessus
622 ne trouvera aucun nom de volume et ne fera donc rien.
626 \subsection*{Sp\'ecificit\'es FreeBSD}
627 \index[general]{Sp\'ecificit\'es!FreeBSD }
628 \index[general]{Sp\'ecificit\'es FreeBSD}
629 \addcontentsline{toc}{subsection}{Sp\'ecificit\'es FreeBSD}
631 Si vous rencontrez des probl\`emes sur FreeBSD lorsque Bacula tente de s\'electionner
632 une cartouche, et si le message est {\bf Device not configured}, c'est
633 parce que FreeBSD a fait dispara\^itre le fichier de p\'eriph\'erique {\bf /dev/nsa1}
634 lorsqu'il n'y avait plus de cartouche mont\'ee dans le lecteur. Par cons\'equent,
635 Bacula ne peut ouvrir le p\'eriph\'erique. Une solution consiste \`a charger une
636 cartouche avant le lancement de Bacula. Ce probl\`eme est corrig\'e dans les
637 versions de Bacula ult\'erieures \`a 1.32f-5.
639 Veuillez consulter le chapitre
640 \ilink{Tester votre lecteur}{FreeBSDTapes} de ce manuel pour d'{\bf importantes}
641 informations sur votre lecteur avant de passer au test de la librairie.
642 \label{AutochangerTesting}
644 \subsection*{Tester la librairie et adapter le script mtx-changer}
645 \index[general]{Tester la librairie et adapter le script mtx-changer}
646 \index[general]{Script!Tester la librairie et adapter le script mtx-changer}
647 \addcontentsline{toc}{subsection}{Tester la librairie et adapter le script mtx-changer}
649 Avant d'essayer d'utiliser une librairie avec Bacula, il est pr\'ef\'erable de v\'erifier
650 "\`a la main" que le bras robotis\'e fonctionne. Pour ce faire, utilisez les commandes
651 suivantes (\`a supposer que le script {\bf mtx-changer} est install\'e dans
652 {\bf /etc/bacula/mtx-changer}) :
656 \item [Assurez vous que Bacula est stopp\'e]
658 \item [/etc/bacula/mtx-changer \ /dev/sg0 \ list \ 0 \ /dev/nst0 \ 0]
659 \index[sd]{mtx-changer list}
661 Cette commande devrait afficher :
673 soit un num\'ero suivi de deux points pour chacun des slots occup\'e dans la librairie.
674 Si votre librairie a un lecteur de codes barres, celui-ci sera affich\'e apr\`es les
675 deux points. Si un message d'erreur s'affiche, vous devez r\'esoudre le probl\`eme
676 (par exemple, essayez un autre nom de p\'eriph\'erique si {\bf /dev/sg0} n'est pas
677 le bon. PAr exemple, sur FreeBSD c'est g\'en\'eralement {\bf /dev/pass2}).
679 \item [/etc/bacula/mtx-changer \ /dev/sg0 \ slots \ 0 \ /dev/nst0 \ 0]
680 \index[sd]{mtx-changer slots}
682 Cette commande devrait retourner le nombre de slots de votre librairie.
684 \item [/etc/bacula/mtx-changer \ /dev/sg0 \ unload \ ]
685 \index[sd]{mtx-changer unload}
687 Si une cartouche est charg\'ee, cette commande devrait la d\'echarger.
689 \item [/etc/bacula/mtx-changer \ /dev/sg0 \ load \ 3 \ /dev/nst0 \ 0 ]
690 \index[sd]{mtx-changer load}
692 Si vous avez une cartouche dans le slot 3, elle sera charg\'ee dans le slot
695 \item [/etc/bacula/mtx-changer \ /dev/sg0 \ loaded \ 0 \ /dev/nst0 \ 0]
696 \index[sd]{mtx-changer loaded}
700 \item [/etc/bacula/mtx-changer \ /dev/sg0 \ unload]
703 Une fois que toutes les commandes ci-dessus fonctionnent correctement, Bacula
704 devrait \^etre capable d'utiliser la librairie, pourvu que votre configuration
705 comporte la bonne commande {\bf Changer Command}. A ce stade, il ne peut subsister
706 qu'un probl\`eme : si votre librairie requiert un certain d\'elai pour charger la cartouche
707 apr\`es l'ex\'ecution de la commande. Imm\'ediatement apr\`es avoir obtenu le retour
708 du script {\bf mtx-changer}, Bacula commande le rembobinage et la lecture de la bande.
709 S'il obtient une erreur I/O, vous devriez probablement ins\'erer une pause ({\bf sleep 20})
710 apr\`es la commande {\bf mtx}, mais prenez soin de terminer le script avec un
711 code de sortie 0 en ajoutant {\bf exit 0} apr\`es toute commande que vous ajoutez
712 au script, car Bacula contr\^ole le code de sortie du script qui devrait \^etre 0 si
713 tout s'est bien pass\'e.
715 Vous pouvez tester si vous avez ou non besoin d'une telle pause en
716 ex\'ecutant le script suivant :
721 /etc/bacula/mtx-changer /dev/sg0 unload
722 /etc/bacula/mtx-changer /dev/sg0 load 3
723 mt -f /dev/st0 rewind
728 S'il fonctionne correctement, vous n'\^etes sans doute pas concern\'e par ce
729 probl\`eme. Sinon, commencez par ajouter {\bf sleep 30} voire {\bf sleep 60}
730 juste apr\`es la commande "/etc/bacula/mtx-changer /dev/sg0 load 3". Si
731 {\c c}a marche, vous pouvez alors int\'egrer cette pause dans le script
732 {\bf mtx-changer} afin qu'elle soit effective lorsque Bacula est ex\'ecut\'e.
734 Quelques rares librairies exigent l'\'ejection de la cartouche avant de pouvoir
735 la d\'echarger. Dan ce cas, la commande /etc/bacula/mtx-changer /dev/sg0 load 3
736 ne fonctionne jamais, quel que soit la dur\'ee de la pause. Si vous pensez
737 avoir ce probl\`eme, ins\'erez une commande "eject" juste avant la commande
738 /etc/bacula/mtx-changer /dev/sg0 unload :
743 /etc/bacula/mtx-changer /dev/sg0 unload
744 mt -f /dev/st0 offline
745 /etc/bacula/mtx-changer /dev/sg0 load 3
746 mt -f /dev/st0 rewind
751 Naturellement, si vous avez besoin de la commande {\bf offline}, vous devriez
752 l'int\'egrer au script mtx-changer, en n'oubliant pas de pr\'eserver le code de
753 sortie du script par l'ajout de {\bf exit 0}.
755 Comme indiqu\'e pr\'ec\'edemment, plusieurs scripts qui impl\'ementent ces fonctions
756 sont regroup\'es dans {\bf \lt{}bacula-source\gt{}/examples/devices}, ils
757 peuvent vous inspirer pour faire en sorte que le votre fonctionne.
759 Si Bacula affiche "Rewind error on /dev/nst0. ERR=Input/output error." vous
760 avez probablement besoin d'accro\^itre la pause dans le script {\bf mtx-changer}
764 \subsection*{Utiliser la librairie}
765 \index[general]{Utiliser la librairie}
766 \index[general]{Librairie!Utiliser la }
767 \addcontentsline{toc}{subsection}{Utiliser la librairie}
769 Supposons que vous ayez convenablement d\'efini les directives Device du
770 Storage Daemon, et que vous ayez ajout\'e la directive {\bf Autochanger = yes}
771 dans la ressource Storage de votre fichier bacula-dir.conf.
773 Maintenant, alimentez votre librairie avec quelques cartouches vierges.
775 Que faire pour que Bacula acc\`ede \`a ces cartouches ?
777 Une strat\'egie consiste \`a pr\'e-\'etiqueter chacune des cartouches. Pour cela,
778 d\'emarrez Bacula, puis utilisez la commande {\bf label} dans la console :
783 Connecting to Director rufus:8101
784 1000 OK: rufus-dir Version: 1.26 (4 October 2002)
789 l'affichage devrait \^etre :
793 Using default Catalog name=BackupDB DB=bacula
794 The defined Storage resources are:
797 Select Storage resource (1-2): 1
801 Choisissez la librairie (choix 1), vous obtenez :
805 Enter new Volume name: TestVolume1
806 Enter slot (0 for none): 1
810 Ici saisissez {\bf TestVolume1} en guise de nom, et {\bf 1} pour le slot.
811 On vous demande alors :
818 Select the Pool (1-2): 1
822 S\'electionnez le pool Default (ce qui est fait automatiquement si vous
823 n'avez que celui-l\`a). Bacula poursuit en d\'echargeant toute cartouche
824 charg\'ee, en chargeant celle du slot 1 et en l'\'etiquetant. Dans cet exemple,
825 le lecteur \'etait vide, il en r\'esulte l'affichage :
829 Connecting to Storage daemon Autochanger at localhost:9103 ...
830 Sending label command ...
831 3903 Issuing autochanger "load slot 1" command.
832 3000 OK label. Volume=TestVolume1 Device=/dev/nst0
833 Media record for Volume=TestVolume1 successfully created.
834 Requesting mount Autochanger ...
835 3001 Device /dev/nst0 is mounted with Volume TestVolume1
841 Vous pouvez continuer \`a \'etiqueter les autres volumes, les messages
842 changeront l\'eg\`erement du fait qu'il y aura cette fois une cartouche
843 \`a d\'echarger avant de charger la suivante.
845 Une fois que tous vos volumes sont \'etiquet\'es, Bacula est en mesure de les
846 charger lorsqu'il en a besoin.
848 Pour "voir" votre \'etiquetage, saisissez la commande {\bf list volumes} dans
849 la console, vous devriez obtenir quelque chose comme :
854 Using default Catalog name=BackupDB DB=bacula
858 Select the Pool (1-2): 1
859 +-------+----------+--------+---------+-------+--------+----------+-------+------+
860 | MedId | VolName | MedTyp | VolStat | Bites | LstWrt | VolReten | Recyc | Slot |
861 +-------+----------+--------+---------+-------+--------+----------+-------+------+
862 | 1 | TestVol1 | DDS-4 | Append | 0 | 0 | 30672000 | 0 | 1 |
863 | 2 | TestVol2 | DDS-4 | Append | 0 | 0 | 30672000 | 0 | 2 |
864 | 3 | TestVol3 | DDS-4 | Append | 0 | 0 | 30672000 | 0 | 3 |
866 +-------+----------+--------+---------+-------+--------+----------+-------+------+
872 \subsection*{Support des codes barres}
873 \index[general]{Support!codes barres}
874 \index[general]{Support des codes barres}
875 \addcontentsline{toc}{subsection}{Support des codes barres}
877 Bacula utilise les codes barres \`a travers deux commandes de la console :
878 {\bf label barcodes} et {\bf update slots}.
880 La commande {\bf label barcodes} ordonne \`a Bacula de lire tous les codes
881 barres de toutes les cartouches pr\'esentes dans la librairie \`a l'aide de la
882 commande {\bf mtx-changer} {\bf list}. Les cartouches sont ensuite mont\'ees
883 l'une apr\`es l'autre pour \^etre \'etiquet\'e du nom de leur code barres.
885 La commande {\bf update slots} commence par obtenir du script {\bf mtx-changer}
886 la liste des cartouches et de leurs codes barres. Ensuite, il confronte
887 chacune des valeurs du catalogues \`a cette liste afin de le mettre \`a jour.
888 Notez que si un volume ne figure pas dans le catalogue, il n'y a rien a faire.
889 Cette commande est utile pour synchroniser Bacula avec le contenu de la librairie
890 si vous avez chang\'e de magasin ou d\'eplac\'e des cartouches.
892 La directive {\bf Cleaning Prefix} peut \^etre utilis\'ee dans la ressource Pool pour
893 d\'efinir un pr\'efixe de nom de volume qui, s'il correspond au code barres d'un volume
894 conf\`ere \`a ce volume le statut (VolStatus) {\bf Cleaning}. Ceci \'evite que Bacula
895 tente d'\'ecrire sur une cartouche de nettoyage.
899 \subsection*{Interface entre Bacula et les librairies}
900 \index[general]{Interface!Bacula et les librairies}
901 \index[general]{Interface entre Bacula et les librairies}
902 \addcontentsline{toc}{subsection}{Interface entre Bacula et les librairies}
904 Bacula appelle le script mtx-changer que vous sp\'ecifiez au niveau de la
905 directive {\bf Changer Command}. En principe, ce sera le script {\bf mtx-changer}
906 que nous fournissons, mais ce pourrait \^etre n'importe quel programme
907 qui impl\'emente les commandes {\bf loaded}, {\bf load}, {\bf unload}, {\bf list},
908 et {\bf slots} qu'utilise Bacula. Voici le format sous lequel ces commandes
909 doivent retourner les informations :
913 - Currently the changer commands used are:
914 loaded -- retourne le num\'ero du slot d'origine de la cartouche charg\'ee,
915 avec pour base 1 et 0 pour le lecteur.
916 load -- charge la cartouche du slot sp\'ecifi\'e dans le lecteur.(notez que certains
917 mat\'eriels requi\`erent une pause de 30 secondes apr\`es cette commande)
918 unload -- d\'echarge le lecteur (la cartouche retourne dans son slot d'origine).
919 list -- retourne une ligne par cartouche pr\'esente dans la librairie
920 au format <slot>:<barcode> o\`u {\bf slot} est un entier non-nul
921 repr\'esentant le num\'ero du slot, et {\bf barcode} est le code barres,
922 s'il existe et si la librairie le prend en charge, associ\'e \`a la cartouche
923 (dans le cas contraire, le champ "barcode" est laiss\'e blanc.
924 slots -- retourne le nombre total de slots dans la librairie.
928 Bacula contr\^ole le code de sortie du programme appel\'e. Si ce code est 0, les
929 informations sont accept\'ees. Dans le cas contraire, elles sont ignor\'ees
930 et le lecteur est trait\'e comme s'il n'\'etait pas dans une librairie.