]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/de/concepts/disk.tex
translation
[bacula/docs] / docs / manuals / de / concepts / disk.tex
1 %%
2 %%
3
4 \chapter{Grundlegendes Volume-Management}
5 \label{DiskChapter}
6 \index[general]{Grundlegendes Volume-Management}
7 \index[general]{Management!Grundlegendes Volume}
8 \index[general]{Disk/Festplatten Volumes}
9
10 In diesem Kapitel werden die grundlegenden Funktionen erkl\"{a}rt,
11 die zum Volume-Management ben\"{o}tigt werden. Die meisten dieser Konzepte
12 sind sowohl f\"{u}r Tape- als auch f\"{u}r Disk/Festplatten-Volumes g\"{u}ltig.
13 Allerdings wurde dieses Kapitel \"{u}rspr\"{u}nglich geschrieben,
14 um das Mangement von Disk-Volumes zu beschreiben. Sie werden diese
15 Tendenz sicher stellenweise bemerken, trotzdem gelten alle Konfigurations-
16 M\"{o}glichkeiten gleicherma{\ss}en f\"{u}r Tape- und Disk-Volumes.
17
18 Disk-Volumes werden normalerweise benutzt, wenn sowieso sehr viel Festplatten-
19 Platz verf\"{u}gbar ist, oder die Backup-Jobs innerhalb eines sehr kleinen
20 Zeitfensters laufen m\"{u}ssen, wo die Festplatten einen Geschwindigkeitsvorteil
21 gegen\"{u}ber den Bandlaufwerken haben.
22
23 \section{Schl\"{u}sselkonzepte und Konfigurations-Parameter}
24 \label{Concepts}
25 \index[general]{Schl\"{u}sselkonzepte und Konfigurations-Parameter }
26 \index[general]{Records!Key Concepts and Resource }
27
28 Bacula dazu zu bringen, dass es auf Disk-Volumes statt auf Tapes schreibt
29 ist im einfachsten Fall sehr leicht zu bewerkstelligen. In der Konfiguration
30 des Storage-Dienstes geben Sie dazu als {\bf Archive Device} ein Verzeichnis an.
31 Wenn Sie, zum Beispiel, m\"{o}chten das Ihre Backups im Verzeichnis
32 {\bf /home/bacula/backups} gespeichert werden, k\"{o}nnen Sie folgende
33 Ger\"{a}te-Konfiguration verwenden:
34
35 \footnotesize
36 \begin{verbatim}
37 Device {
38   Name = FileBackup
39   Media Type = File
40   Archive Device = /home/bacula/backups
41   Random Access = Yes;
42   AutomaticMount = yes;
43   RemovableMedia = no;
44   AlwaysOpen = no;
45 }
46 \end{verbatim}
47 \normalsize
48
49 Zus\"{a}tzlich muss der entsprechende {\bf Storage}-Eintrag in der Konfiguration
50 des Director-Dienstes vorhanden sein:
51
52 \footnotesize
53 \begin{verbatim}
54 Storage {
55   Name = FileStorage
56   Address = host.firma.de
57   Password = xxxxx
58   Device = FileBackup
59   Media Type = File
60 }
61 \end{verbatim}
62 \normalsize
63
64 Bacula wird dann die Backup-Daten in die Datei
65 {\bf /home/bacula/backups/\lt{}Volume-Name\gt{}} schreiben.
66 \lt{}Volume-Name\gt{} ist dabei der Name eines vorher erstellten Volumes.
67 Falls Sie ein Volume namens {\bf Vol001} erstellt haben, wird Bacula also
68 in die Datei names {\bf /home/bacula/backups/Vol001} schreiben.
69 Obwohl Sie diese Datei sp\"{a}ter problemlos in ein anderes Verzeichnis
70 verschieben k\"{o}nnen, d\"{u}rfen Sie niemals den Namen der Datei \"{a}ndern.
71 Bacula verwendet den Datei-Namen des Volumes als Teil des internen Volume-Labels,
72 daher wird Bacula das Volume nicht mehr als korrekt erkennen, wenn der Dateiname
73 von Volume-Label abweicht.
74
75 Auch wenn bis jetzt alles sehr einfach aussieht gibt es doch ein paar Probleme
76 mit dieser Beispiel-Konfiguration. Das Erste ist, dass Bacula immer auf das
77 selbe Volume schreiben wird, so lange bis die Festplatte voll ist. Die
78 L\"{o}sung daf\"{u}r wird weiter unten beschrieben.
79
80 Zus\"{a}tzlich m\"{u}ssen Sie auch noch andere Details beachten, wenn Sie
81 zum Beispiel wollen, dass mehrere Backup-Jobs gleichzeitig laufen.
82 Eine Beispiel-Konfiguration f\"{u}r so ein Setup finden Sie am Ende
83 dieses Kapitels im Abschnitt \ilink{gleichzeitige Disk Jobs}{ConcurrentDiskJobs}.
84
85
86 \subsection{Pool-Konfigurations-Optionen zur Begrenzung der Volume-Benutzung}
87 \index[general]{Benutzung!Pool-Konfigurations-Optionen zur Begrenzung der Volume-}
88 \index[general]{Pool-Konfigurations-Optionen zur Begrenzung der Volume-Benutzung}
89
90 Hier ist eine Liste aller Optionen die Sie in der Pool-Konfiguration
91 angeben k\"{o}nnen, um die Benutzung der Volumes durch Bacula zu begrenzen:
92
93 \begin{itemize}
94 \item Um jedes Volume nur einmal zu benutzen (in diesem Beispiel nur f\"{u}r einen
95 Backup-Job pro Volume) k\"{o}nnen Sie 
96
97    {\bf UseVolumeOnce = yes}
98
99 in der Pool-Konfiguration angeben.
100
101 \item Um nnn Backup-Jobs auf jedes Volume zu schreiben, benutzen Sie:
102
103    {\bf Maximum Volume Jobs = nnn}.
104
105 \item Um die Gr\"{o}{\ss}e des Volumes zu begrenzen, konfigurieren Sie:
106
107    {\bf Maximum Volume Bytes = mmmm}.
108
109    Bitte beachten Sie, dass, wenn Sie Disk-Volumes mit Bacula-Version bis 
110    1.39.28 verwenden, Sie die maximale Volume-Gr\"{o}{\ss}e auf einen
111    sinnvollen Wert, wie zum Beispiel 5 GB, setzen. Das ist notwendig,
112    weil Bacula w\"{a}hrend der Wiederherstellung das gesamte Volume
113    lesen muss, bis an den Punkt wo die wiederherzustellenden Daten
114    beginnen. Wenn Ihre Volumes 50GB gro{\ss} sind, dauert das
115    nat\"{u}rlich entsprechend l\"{a}nger. Auch bei einer teilweise
116    defekten Festplatte verlieren Sie wahrscheinlich weniger Volumes,
117    wenn diese entsprechend kleiner sind.
118
119 \item Um die Zeit einzuschr\"{a}nken in der ein Volume beschrieben werden darf,
120    k\"{o}nnen Sie diesen Parameter setzen:
121
122 {\bf Volume Use Duration = ttt}.
123 \end{itemize}
124
125 Obwohl Sie wahrscheinlich niemals die Anzahl der Bytes begrenzen wollen,
126 die auf ein Tape geschrieben werden d\"{u}rfen, k\"{o}nnen die anderen
127 genannten Konfigurations-Optionen auch bei Bandlaufwerken sehr n\"{u}tzlich
128 sein. Als Beispiel k\"{o}nnen Sie mit den oben beschriebenen Optionen
129 daf\"{u}r sorgen, dass Ihre B\"{a}nder in einer t\"{a}glichen Rotation
130 verwendet werden.
131
132 Wie schon erw\"{a}hnt, wird jede dieser Optionen innerhalb der Pool-
133 Konfiguration angegeben die f\"{u}r den Pool, in dem die Volumes sind,
134 gilt. Die Parameter {\bf Maximum Volume Job}, {\bf Maximum Volume Bytes}
135 und {\bf Volume Use Duration} k\"{o}nnen f\"{u}r jedes Volume einzelt
136 gesetzt werden. Dazu werden die Werte aus der Pool-Konfiguration beim
137 Labeln des Volumes in einen eigenen Datenbank-Eintrag, der nur f\"{u}r
138 das Volume g\"{u}ltig ist, \"{u}bernommen. Dieser Datenbank-Eintrag kann
139 dann mittels des Console-Kommandos {\bf update volume} seperat angepasst
140 werden. Dadurch das die Pool-Konfiguration als eigener Eintrag f\"{u}r
141 die Volumes in die Datenbank \"{u}bernommen wird, ist eine \"{A}nderung
142 in der Pool-Konfiguration nur f\"{u}r Volumes g\"{u}ltig die nachher
143 erstellt werden. Um die neue Pool-Konfiguration auch auf die
144 bereits bestehenden Volumes anzuwenden, muss in der Console bei dem
145 Kommando {bf update volume} die Funktion {bf All Volumes from Pool}
146 aufgrufen werden.
147
148 Als ein Beispiel f\"{u}r die Benutzung eines der oben genannten
149 Paramter, nehmen wir einmal an, Ihre Pool-Konfiguration sieht so aus:
150
151 \footnotesize
152 \begin{verbatim}
153 Pool {
154   Name = File
155   Pool Type = Backup
156   Volume Use Duration = 23h
157 }
158 \end{verbatim}
159 \normalsize
160
161 Wenn Ihre Backup-Jobs dann einmal am Tag laufen (also alle 24 Stunden)
162 wird Bacula f\"{u}r jeden Backup-Lauf ein neues Volume verwenden, da f\"{u}r
163 die Volumes eine maximale Benutzungs-Zeit von 23 Stunden gesetzt ist.
164 Die Zeit gilt dabei ab dem ersten Schreibvorgang auf dem Volume.
165 Bedenken Sie, dass das Setzen einer Use-Duration f\"{u}r Tape-Volumes dazu
166 f\"{u}hren kann, dass eventuell auch am Wochenende neue leere Tapes in das Laufwerk
167 gelegt werden m\"{u}ssen (sofern Sie keinen Autochanger benutzen).
168
169 \subsection{Automatisches labeln der Volumes}
170 \label{AutomaticLabeling}
171 \index[general]{Automatisches labeln der Volumes}
172 \index[general]{Labeln!Volumes automatisch }
173
174 Wenn Sie die genannten Konfigurations-Parameter benutzen, sto{\ss}en
175 Sie wahrscheinlich auf das n\"{a}chste Problem: Sie m\"{u}ssen die
176 Volumes labeln. Sie k\"{o}nnen dabei zwischen zwei Varianten w\"{a}hlen,
177 entweder Sie labeln die Volumes manuell bevor Bacula sie ben\"{o}tigt,
178 oder Sie lassen Sie automatisch durch Bacula, in dem Moment wo sie
179 gebraucht werden, labeln. Beim automatischen Labeln der Volumes
180 k\"{o}nnen Sie auf eine vielzahl von Informationen, Umgebungsvariablen
181 und internen Z\"{a}hlern von Bacula zugreifen, um sinnvolle Volume-Label
182 erstellen zu lassen. Sie k\"{o}nnen auch mittels eines Python-Script
183 das Bacula-Event "`NewVolume"' auswerten und durch das Script ein
184 neues Volume erstellen lassen. Dabei haben Sie dann alle Freiheit was
185 den Namen des zu erstellenden Volumes angeht. Mehr Informationen
186 \"{u}ber die Verwendung von Python-Scripten finden Sie im Kapitel
187 \ilink{Python Scripte}{PythonChapter} dieses Handbuchs.
188
189 Das automatische Labeln von Volumes kann auch mit Tapes benutzt werden,
190 dabei ist allerdings zu bendeken, dass die Tapes daf\"{u}r gemountet
191 werden m\"{u}ssen, was eventuell menschliches Eingreifen erfordert.
192 Automatisches Labeln nach Templates (Vorlagen) funktioniert mit Autochangern
193 nicht, da Bacula niemals auf Slots zugreift, die unbekannte Tapes enthalten.
194 Im Kapitel \ilink{Autochanger}{AutochangersChapter} dieses Handbuchs
195 sind mehrere Methoden beschrieben, wie alle Tapes innerhalb des Autochangers
196 gelabelt werden k\"{o}nnen.
197
198 Automatisches Labeln der Volumes wird durch Anpassungen in der Pool-
199 (Director) und Ger\"{a}te- (Storage) Konfiguration, wie unten
200 beschrieben, aktiviert. In der Pool-Konfiguration m\"{u}ssen Sie Bacula
201 das Label-Format vorgeben. In diesem Format werden dann die neuen Volumes
202 benannt. In der einfachsten Form ist das Format nur der Volume-Name
203 an den Bacula dann eine vierstellige laufende Nummer anh\"{a}ngt.
204 Diese Nummer beginnt bei 0000 und wird pro Volume immer uns Eins erh\"{o}ht.
205 Wenn Sie Ihre Pool-Konfiguration also folgend anpassen:
206
207 \footnotesize
208 \begin{verbatim}
209 Pool {
210   Name = File
211   Pool Type = Backup
212   Volume Use Duration = 23h
213   LabelFormat = "Vol"
214 }
215 \end{verbatim}
216 \normalsize
217
218 wird Bacula Volumes names Vol0001, Vol0002 und so weiter immer dann erstellen
219 wenn sie ben\"{o}tigt werden. Weit komplexere und ausf\"{u}hrliche Namen
220 lassen sich mittels Variablen-Auswertung erstellen. Hilfe dazu finden Sie im
221 Kapitel \ilink{Variablen-Auswertung}{VarsChapter}.
222
223 N\"{a}here Angaben zum {\bf Label Format} finden Sie im Kapitel
224 "`Label Format"' des Bacula-Installations- und Konfigurations-Handbuchs.
225
226 Der zweite notwendige Schritt um das automatische Labeln zu aktivieren, ist es
227 dem Storage-Dienst das Labeln zu erlauben. Das tun Sie indem Sie {\bf LabelMedia = yes}
228 in der Ger\"{a}te-Konfiguration angeben:
229
230 \footnotesize
231 \begin{verbatim}
232 Device {
233   Name = File
234   Media Type = File
235   Archive Device = /home/bacula/backups
236   Random Access = Yes;
237   AutomaticMount = yes;
238   RemovableMedia = no;
239   AlwaysOpen = no;
240   LabelMedia = yes
241 }
242 \end{verbatim}
243 \normalsize
244
245 \subsection{Wiederverwendung und Begrenzung der Anzahl der Volumes}
246 \label{Recycling1}
247 \index[general]{Wiederverwendung!Wiederverwendung und Begrenzung der Anzahl der Volumes}
248 \index[general]{Wiederverwendung und Begrenzung der Anzahl der Volumes}
249
250 Das oben beschriebene automatische Labeln der Volumes l\"{a}sst ein neues Problem
251 entstehen: es wird eine Art Volume-Management ben\"{o}tigt. Mit dem bisherigen
252 Schema wird jeden Tag ein neues Volume erstellt. Wenn Sie keine Aufbewarungszeitr\"{a}ume
253 konfiguriert haben, wird sich Ihre Katalog-Datenbank, zus\"{a}tzlich
254 zu den jeden Tag enstehenden Volumes, immer weiter mit den Informationen
255 \"{u}ber alle von Bacula gesicherten Dateien f\"{u}llen.
256
257 Bacula stellt folgende Konfigurations-Parameter zur Verf\"{u}gung
258 um diese Probleme automatisch handzuhaben:
259
260 \begin{enumerate}
261 \item der Aufbewarungszeitraum f\"{u}r Datei-Eintr\"{a}ge im Katalog, der
262    \ilink{File Retention = ttt}{FileRetention} Eintrag in der Client-Konfiguration
263 \item der Aufbewarungszeitraum f\"{u}r Job-Eintr\"{a}ge im Katalog, der
264    \ilink{Job Retention = ttt}{JobRetention} Eintrag in der Client-Konfiguration
265 \item Der
266    \ilink{ AutoPrune = yes}{AutoPrune} Eintrag in der Client-Konfiguration
267    erlaubt Bacula die beiden oberen Augbewarungszeitr\"{a}ume anzuwenden.
268 \item Der
269    \ilink{ Volume Retention = ttt}{VolRetention} Eintrag in der Pool-Konfiguration
270    bestimmt die Zeit, in der die Volumes nicht \"{u}berschrieben werden d\"{u}rfen.
271 \item Der
272    \ilink{ AutoPrune = yes}{PoolAutoPrune} Eintrag in der Pool-Konfiguration
273    um Bacula die automatische Anwendung der Volume Retention zu erlauben.
274 \item Der
275    \ilink{ Recycle = yes}{PoolRecycle} Eintrag in der Pool-Konfiguration
276    um Bacula zu erlauben, Volumes mit abgelaufener Aufbewarungzeit wiederzuverwenden.
277 \item Der
278    \ilink{ Recycle Oldest Volume = yes}{RecycleOldest} Eintrag in der Pool-Konfiguration
279    sagt Bacula, dass die Ablaufzeitr\"{a}ume nur auf das \"{a}lteste Volume im Pool
280    angewendet werden sollen. Wenn alle enthaltenen Daten abgelaufen sind, wird das
281    Volume wiederverwendet.
282 \item Der
283    \ilink{ Recycle Current Volume = yes}{RecycleCurrent} Eintrag in der Pool-Konfiguration
284    sagt Bacula, dass die Ablaufzeitr\"{a}ume nur auf das momentan gemountete Volume
285    angewendet werden sollen. Wenn alle enthaltenen Daten abgelaufen sind, wird das
286    Volume wiederverwendet.
287 \item Der
288    \ilink{ Purge Oldest Volume = yes}{PurgeOldest} Eintrag in der Pool-Konfiguration
289    erlaubt Bacula die Wiederverwendung des \"{a}ltesten Volumes im Pool
290    zu erzwingen, wenn ein leeres Volume ben\"{o}tigt wird. 
291    {\bf Achtung! Dabei werden keine Ablaufzeitr\"{a}ume beachtet. Das \"{a}lteste
292    vorhandene Volume wird einfach widerverwendet. Normalerweise sollte
293    "`Recycle Oldest Volume"' anstelle dieses Eintrags verwendet werden.}
294 \item Der
295    \ilink{ Maximum Volumes = nnn}{MaxVolumes} Eintrag in der Pool-Konfiguration
296    begrenzt die maximale Anzahl von Volumes die Bacula f\"{u}r diesen Pool erstellen darf.
297 \end{enumerate}
298
299 Die ersten drei Konfigurations-Eintr\"{a}ge (File Retention, Job Retention und AutoPrune)
300 bestimmen die Zeit, die die Job- und Datei-Eintr\"{a}ge in der Katalog-Datenbank
301 aufbewart werden. Eine genaue Beschreibung dieser Parameter finden Sie im Kapitel
302 \ilink{automatische Volume Wiederverwendung}{RecyclingChapter} in diesem Handbuch.
303
304 Volume Retention, AutoPrune und Recycle bestimmen, wie lange Bacula die Volumes
305 vor dem Wiederbeschreiben aufbewart. Auch das wird im Kapitel
306 \ilink{automatische Volume Wiederverwendung}{RecyclingChapter} n\"{a}her beschrieben.
307
308 Der Parameter "`Maximum Volumes"' kann in Verbindung mit der "`Volume Retention
309 Period"' dazu verwendet werden, die maximale Anzahl der Volumes zu begrenzen
310 die Bacula verwendet. Wenn eine angemessene Aufbewarungszeit f\"{u}r die Volumes
311 gesetzt ist, werden die Volumes, kurz bevor wieder ein neues Volume
312 ben\"{o}tigt wird, automatisch ablaufen. Das periodische Wiederverwenden einer
313 festen Anzahl von Volumes kann auch durch setzen von {\bf Recycle Oldest Volume = yes}
314 oder {\bf Recycle Current Volume = yes} erreicht werden. In diesem Fall wird Bacula,
315 wenn ein neues Volume ben\"{o}tigt wird, das enstsprechende Volume wiederverwenden.
316
317 \label{ConcurrentDiskJobs}
318 \section{parallele Festplatten-Jobs}
319 \index[general]{parallele Festplatten-Jobs}
320
321 Oberhalb wurde beschrieben, wie Sie ein einzelnes Storage-Ger\"{a}t
322 namens {\bf FileBackup} benutzen k\"{o}nnen, um die zu sichernden Daten
323 auf Volumes im Verzeichnis {\bf /home/bacula/backups} zu schreiben.
324 Nat\"{u}rlich ist es auch m\"{o}glich mehrere Jobs gleichzeitig auf
325 diesem einen Storage-Ger\"{a}t laufen zu lassen. Alle Jobs werden
326 dann parallel auf das Volume geschrieben.
327
328
329 Falls Sie mehrere Pools, was auch bedeutet mehrere Volumes,
330 verwenden wollen, oder m\"{o}chten das jeder Backup-Client
331 auf ein eigenes Volume gesichert wird, oder in ein seperates
332 Verzeichnis wie etwa {\bf /home/bacula/client1} und 
333 {\bf /home/bacula/client2}, dann werden Sie das mit der bisherigen
334 Konfiguration nicht bewerkstelligen k\"{o}nnen. Das liegt daran,
335 dass Bacula Festplatten-Volumes nach den gleichen Regeln
336 behandelt wie Bandlaufwerke. Ein Storage-Ger\"{a}t kann zu
337 jeden beliebigen Zeitpunkt nur ein einziges Volume enthalten.
338 Wenn Sie also gleichzeitig auf mehreren Volumes schreiben
339 m\"{o}chten, m\"{u}ssen Sie auch mehrere Storage-Ger\"{a}te
340 in der Konfiguration des Storage-Dienstes und des Director-Dienstes
341 angeben.
342
343 Mehrere Ger\"{a}te-Definitionen sind also notwendig, wenn auf mehr als
344 ein Storage-Ger\"{a}t oder in verschiedene Verzeichnisse gesichert werden soll.
345 Weiterhin m\"{u}ssen Sie wissen, dass in der Katalog-Datenbank nur die
346 Informationen \"{u}ber den "`Media-Type"' und nicht das spezielle 
347 Storage-Ger\"{a}t gespeichert werden. Dadurch wird es m\"{o}glich,
348 dass, zum Beispiel ein Tape, in jedem anderen kompatiblen Storage-Ger\"{a}t
349 gemounted werden kann. Diese Kompitabilit\"{a}t wird durch einen identischen
350 Media-Type der verschiedene Storage-Ger\"{a}te erreicht. Das ist auch
351 f\"{u}r Festplatten-Volumes g\"{u}ltig. Da ein Volume, das vom Storage-
352 Ger\"{a}t in dem Verzeichnis {\bf /home/bacula/backups} beschrieben
353 wurde, nicht von einem Storage-Ger\"{a}t gelesen werden kann, dass
354 {\bf /home/bacula/client1} als "`ArchiveDevice"' konfiguriert hat,
355 werden Sie Probleme bei der Wiederherstellung von Daten bekommen,
356 falls beide Ger\"{a}te mit {Media Type = File} angegeben sind.
357 Bei der Wiederherstellung von Daten wird Bacula das erste zur Verf\"{u}gung
358 stehende Laufwerk mit dem passenden "`Media Type"' w\"{a}hlen,
359 unabh\"{a}hngig davon, ob es das Richtige ist. Falls das verwirrend klingt,
360 erinnern Sie sich daran, dass der Director-Dienst nur den Volume-Namen
361 und den Media-Type kennt. Auf welchen Ger\"{a}t das Volume beschrieben wurde,
362 und unter welchem Verzeichnis, ist zu diesem Zeitpunkt unbekannt. Daher
363 m\{u}ssen Sie Ihre Volumes, mittels des Media Types, den korrekten
364 Ger\"{a}ten zuordnen.
365
366 Das folgende Beispiel zeigt eine Konfiguration, bei der zwei Clients
367 zwei verschiedene Pools und Verzeichnisse zum speichern ihrer Daten
368 benutzen.
369
370 \label{Example2}
371 \section{Ein Beispiel}
372 \index[general]{Example }
373 %%TODO index => Example ..... for what??
374
375 The following example is not very practical, but can be used to demonstrate
376 the proof of concept in a relatively short period of time. The example
377 consists of a two clients that are backed up to a set of 12 archive files
378 (Volumes) for each client into different directories on the Storage
379 machine.  Each Volume is used (written) only once, and there are four Full
380 saves done every hour (so the whole thing cycles around after three hours).
381
382 What is key here is that each physical device on the Storage daemon 
383 has a different Media Type. This allows the Director to choose the
384 correct device for restores ...
385
386 The Director's configuration file is as follows: 
387
388 \footnotesize
389 \begin{verbatim}
390 Director {
391   Name = my-dir
392   QueryFile = "~/bacula/bin/query.sql"
393   PidDirectory = "~/bacula/working"
394   WorkingDirectory = "~/bacula/working"
395   Password = dir_password
396 }
397 Schedule {
398   Name = "FourPerHour"
399   Run = Level=Full hourly at 0:05
400   Run = Level=Full hourly at 0:20
401   Run = Level=Full hourly at 0:35
402   Run = Level=Full hourly at 0:50
403 }
404 Job {
405   Name = "RecycleExample"
406   Type = Backup
407   Level = Full
408   Client = Rufus
409   FileSet= "Example FileSet"
410   Messages = Standard
411   Storage = FileStorage
412   Pool = Recycle
413   Schedule = FourPerHour
414 }
415
416 Job {
417   Name = "RecycleExample2"
418   Type = Backup
419   Level = Full
420   Client = Roxie
421   FileSet= "Example FileSet"
422   Messages = Standard
423   Storage = FileStorage1
424   Pool = Recycle1
425   Schedule = FourPerHour
426 }
427
428 FileSet {
429   Name = "Example FileSet"
430   Include = compression=GZIP signature=SHA1 {
431     /home/kern/bacula/bin
432   }
433 }
434 Client {
435   Name = Rufus
436   Address = rufus
437   Catalog = BackupDB
438   Password = client_password
439 }
440
441 Client {
442   Name = Roxie
443   Address = roxie
444   Catalog = BackupDB
445   Password = client1_password
446 }
447
448 Storage {
449   Name = FileStorage
450   Address = rufus
451   Password = local_storage_password
452   Device = RecycleDir
453   Media Type = File
454 }
455
456 Storage {
457   Name = FileStorage1
458   Address = rufus
459   Password = local_storage_password
460   Device = RecycleDir1
461   Media Type = File1
462 }
463
464 Catalog {
465   Name = BackupDB
466   dbname = bacula; user = bacula; password = ""
467 }
468 Messages {
469   Name = Standard
470   ...
471 }
472 Pool {
473   Name = Recycle
474   Use Volume Once = yes
475   Pool Type = Backup
476   LabelFormat = "Recycle-"
477   AutoPrune = yes
478   VolumeRetention = 2h
479   Maximum Volumes = 12
480   Recycle = yes
481 }
482
483 Pool {
484   Name = Recycle1
485   Use Volume Once = yes
486   Pool Type = Backup
487   LabelFormat = "Recycle1-"
488   AutoPrune = yes
489   VolumeRetention = 2h
490   Maximum Volumes = 12
491   Recycle = yes
492 }
493
494 \end{verbatim}
495 \normalsize
496
497 and the Storage daemon's configuration file is: 
498
499 \footnotesize
500 \begin{verbatim}
501 Storage {
502   Name = my-sd
503   WorkingDirectory = "~/bacula/working"
504   Pid Directory = "~/bacula/working"
505   MaximumConcurrentJobs = 10
506 }
507 Director {
508   Name = my-dir
509   Password = local_storage_password
510 }
511 Device {
512   Name = RecycleDir
513   Media Type = File
514   Archive Device = /home/bacula/backups
515   LabelMedia = yes;
516   Random Access = Yes;
517   AutomaticMount = yes;
518   RemovableMedia = no;
519   AlwaysOpen = no;
520 }
521
522 Device {
523   Name = RecycleDir1
524   Media Type = File1
525   Archive Device = /home/bacula/backups1
526   LabelMedia = yes;
527   Random Access = Yes;
528   AutomaticMount = yes;
529   RemovableMedia = no;
530   AlwaysOpen = no;
531 }
532
533 Messages {
534   Name = Standard
535   director = my-dir = all
536 }
537 \end{verbatim}
538 \normalsize
539
540 With a little bit of work, you can change the above example into a weekly or
541 monthly cycle (take care about the amount of archive disk space used). 
542
543 \label{MultipleDisks}
544 \section{Backing up to Multiple Disks}
545 \index[general]{Disks!Backing up to Multiple }
546 \index[general]{Backing up to Multiple Disks }
547
548 Bacula can, of course, use multiple disks, but in general, each disk must be a
549 separate Device specification in the Storage daemon's conf file, and you must
550 then select what clients to backup to each disk. You will also want to
551 give each Device specification a different Media Type so that during
552 a restore, Bacula will be able to find the appropriate drive.
553
554 The situation is a bit more complicated if you want to treat two different
555 physical disk drives (or partitions) logically as a single drive, which
556 Bacula does not directly support.  However, it is possible to back up your
557 data to multiple disks as if they were a single drive by linking the
558 Volumes from the first disk to the second disk.
559
560 For example, assume that you have two disks named {\bf /disk1} and {\bf
561 /disk2}. If you then create a standard Storage daemon Device resource for
562 backing up to the first disk, it will look like the following: 
563
564 \footnotesize
565 \begin{verbatim}
566 Device {
567   Name = client1
568   Media Type = File
569   Archive Device = /disk1
570   LabelMedia = yes;
571   Random Access = Yes;
572   AutomaticMount = yes;
573   RemovableMedia = no;
574   AlwaysOpen = no;
575 }
576 \end{verbatim}
577 \normalsize
578
579 Since there is no way to get the above Device resource to reference both {\bf
580 /disk1} and {\bf /disk2} we do it by pre-creating Volumes on /disk2 with the
581 following: 
582
583 \footnotesize
584 \begin{verbatim}
585 ln -s /disk2/Disk2-vol001 /disk1/Disk2-vol001
586 ln -s /disk2/Disk2-vol002 /disk1/Disk2-vol002
587 ln -s /disk2/Disk2-vol003 /disk1/Disk2-vol003
588 ...
589 \end{verbatim}
590 \normalsize
591
592 At this point, you can label the Volumes as Volume {\bf Disk2-vol001}, {\bf
593 Disk2-vol002}, ... and Bacula will use them as if they were on /disk1 but
594 actually write the data to /disk2. The only minor inconvenience with this
595 method is that you must explicitly name the disks and cannot use automatic
596 labeling unless you arrange to have the labels exactly match the links you
597 have created. 
598
599 An important thing to know is that Bacula treats disks like tape drives
600 as much as it can. This means that you can only have a single Volume
601 mounted at one time on a disk as defined in your Device resource in
602 the Storage daemon's conf file.  You can have multiple concurrent 
603 jobs running that all write to the one Volume that is being used, but
604 if you want to have multiple concurrent jobs that are writing to
605 separate disks drives (or partitions), you will need to define 
606 separate Device resources for each one, exactly as you would do for
607 two different tape drives.  There is one fundamental difference, however.
608 The Volumes that you create on the two drives cannot be easily exchanged
609 as they can for a tape drive, because they are physically resident (already
610 mounted in a sense) on the particular drive.  As a consequence, you will
611 probably want to give them different Media Types so that Bacula can
612 distinguish what Device resource to use during a restore.
613 An example would be the following:
614
615 \footnotesize
616 \begin{verbatim}
617 Device {
618   Name = Disk1
619   Media Type = File1
620   Archive Device = /disk1
621   LabelMedia = yes;
622   Random Access = Yes;
623   AutomaticMount = yes;
624   RemovableMedia = no;
625   AlwaysOpen = no;
626 }
627
628 Device {
629   Name = Disk2
630   Media Type = File2
631   Archive Device = /disk2
632   LabelMedia = yes;
633   Random Access = Yes;
634   AutomaticMount = yes;
635   RemovableMedia = no;
636   AlwaysOpen = no;
637 }
638 \end{verbatim}
639 \normalsize
640
641 With the above device definitions, you can run two concurrent
642 jobs each writing at the same time, one to {\bf /disk2} and the
643 other to {\bf /disk2}.  The fact that you have given them different
644 Media Types will allow Bacula to quickly choose the correct
645 Storage resource in the Director when doing a restore.
646
647 \label{MultipleClients}
648 \section{Considerations for Multiple Clients}
649 \index[general]{Clients!Considerations for Multiple }
650 \index[general]{Multiple Clients}
651
652 If we take the above example and add a second Client, here are a few
653 considerations: 
654
655 \begin{itemize}
656 \item Although the second client can write to the same set of  Volumes, you
657    will probably want to write to a different  set. 
658 \item You can write to a different set of Volumes by defining  a second Pool,
659    which has a different name and a different  {\bf LabelFormat}.  
660 \item If you wish the Volumes for the second client to go into  a different
661    directory (perhaps even on a different filesystem  to spread the load), you
662    would do so by defining a second  Device resource in the Storage daemon. The
663 {\bf Name}  must be different, and the {\bf Archive Device} could  be
664 different. To ensure that Volumes are never mixed from  one pool to another,
665 you might also define a different  MediaType (e.g. {\bf File1}). 
666 \end{itemize}
667
668 In this example, we have two clients, each with a different Pool and a
669 different number of archive files retained. They also write to different
670 directories with different Volume labeling. 
671
672 The Director's configuration file is as follows: 
673
674 \footnotesize
675 \begin{verbatim}
676 Director {
677   Name = my-dir
678   QueryFile = "~/bacula/bin/query.sql"
679   PidDirectory = "~/bacula/working"
680   WorkingDirectory = "~/bacula/working"
681   Password = dir_password
682 }
683 # Basic weekly schedule
684 Schedule {
685   Name = "WeeklySchedule"
686   Run = Level=Full fri at 1:30
687   Run = Level=Incremental sat-thu at 1:30
688 }
689 FileSet {
690   Name = "Example FileSet"
691   Include = compression=GZIP signature=SHA1 {
692     /home/kern/bacula/bin
693   }
694 }
695 Job {
696   Name = "Backup-client1"
697   Type = Backup
698   Level = Full
699   Client = client1
700   FileSet= "Example FileSet"
701   Messages = Standard
702   Storage = File1
703   Pool = client1
704   Schedule = "WeeklySchedule"
705 }
706 Job {
707   Name = "Backup-client2"
708   Type = Backup
709   Level = Full
710   Client = client2
711   FileSet= "Example FileSet"
712   Messages = Standard
713   Storage = File2
714   Pool = client2
715   Schedule = "WeeklySchedule"
716 }
717 Client {
718   Name = client1
719   Address = client1
720   Catalog = BackupDB
721   Password = client1_password
722   File Retention = 7d
723 }
724 Client {
725   Name = client2
726   Address = client2
727   Catalog = BackupDB
728   Password = client2_password
729 }
730 # Two Storage definitions with different Media Types
731 #  permits different directories
732 Storage {
733   Name = File1
734   Address = rufus
735   Password = local_storage_password
736   Device = client1
737   Media Type = File1
738 }
739 Storage {
740   Name = File2
741   Address = rufus
742   Password = local_storage_password
743   Device = client2
744   Media Type = File2
745 }
746 Catalog {
747   Name = BackupDB
748   dbname = bacula; user = bacula; password = ""
749 }
750 Messages {
751   Name = Standard
752   ...
753 }
754 # Two pools permits different cycling periods and Volume names
755 # Cycle through 15 Volumes (two weeks)
756 Pool {
757   Name = client1
758   Use Volume Once = yes
759   Pool Type = Backup
760   LabelFormat = "Client1-"
761   AutoPrune = yes
762   VolumeRetention = 13d
763   Maximum Volumes = 15
764   Recycle = yes
765 }
766 # Cycle through 8 Volumes (1 week)
767 Pool {
768   Name = client2
769   Use Volume Once = yes
770   Pool Type = Backup
771   LabelFormat = "Client2-"
772   AutoPrune = yes
773   VolumeRetention = 6d
774   Maximum Volumes = 8
775   Recycle = yes
776 }
777 \end{verbatim}
778 \normalsize
779
780 and the Storage daemon's configuration file is: 
781
782 \footnotesize
783 \begin{verbatim}
784 Storage {
785   Name = my-sd
786   WorkingDirectory = "~/bacula/working"
787   Pid Directory = "~/bacula/working"
788   MaximumConcurrentJobs = 10
789 }
790 Director {
791   Name = my-dir
792   Password = local_storage_password
793 }
794 # Archive directory for Client1
795 Device {
796   Name = client1
797   Media Type = File1
798   Archive Device = /home/bacula/client1
799   LabelMedia = yes;
800   Random Access = Yes;
801   AutomaticMount = yes;
802   RemovableMedia = no;
803   AlwaysOpen = no;
804 }
805 # Archive directory for Client2
806 Device {
807   Name = client2
808   Media Type = File2
809   Archive Device = /home/bacula/client2
810   LabelMedia = yes;
811   Random Access = Yes;
812   AutomaticMount = yes;
813   RemovableMedia = no;
814   AlwaysOpen = no;
815 }
816 Messages {
817   Name = Standard
818   director = my-dir = all
819 }
820 \end{verbatim}
821 \normalsize