Diese Kapitel soll Ihnen helfen Bacula in Betrieb zu nehmen. Dazu wird vorrausgesetzt, dass Sie Bacula installiert aber noch keine Änderungen an den Konfigurations-Dateien (.conf) vorgenommen haben. Falls Sie schon Änderungen durchgeführt haben, deinstallieren Sie Bacula und installieren es erneut. Alle Beispiele in diesem Kapitel gehen von der Standard-Konfiguration nach der Installation aus. Wenn Sie Bacula in Ihrem Home-Verzeichnis installiert haben, sind keine root-Rechte notwendig um den Beispielen zu folgen. Alle Volumes werden in /tmp erstellt und es wird nur das Verzeichnis mit dem Bacula-Quelltext gesichert. Beachten Sie bitte, dass bei produktiven Installationen zumindest der Bacula-Client-Dienst (bacula-fd) als Benutzer root laufen muss. Mehr Informationen dazu finden Sie im Kapitel über Sicherheitsbelange im Bacula-Installations-Handbuch..
Der generelle Ablauf ist folgender:
Jeder dieser Schritte wird im folgenden ausführlich erklärt.
Bevor Sie Bacula das erste Mal in der Produktion einsetzen, empfehlen wir Ihnen das test-Kommando des btape-Programms auszuführen. Die Beschreibung dazu finden Sie im Kapitel btape des Handbuchs über die Bacula-Dienstprogramme. Dadurch können Sie sicherstellen, dass Bacula ordnungsgemäß mit Ihrem Bandlaufwerk zusammenarbeitet. Wenn Sie ein modernes HP, Quantum oder Sony DDS- oder DLT-Laufwerk unter Linux verwenden, können Sie diesen Test auslassen, da diese Kombination im Normalfall immer funktionieren. In allen anderen Fällen sollten Sie diesen Tests aber durchführen bevor Sie hier weitermachen. Innerhalb des btape-Programms können Sie auch mittels des fill-Kommandos das Vollschreiben eines Tapes simulieren, so dass Bacula ein neus Tape laden muss, um den Test fortzusetzen. Bedenken Sie aber, dass ein solcher Test mehrere Stunden dauern kann, abhängig von der Speicherkapazität Ihres Bandlaufwerks.
Wenn Sie MySQL oder PostgreSQL als Katalog-Datenbank benutzen, müssen Sie die Datenbank vor Bacula starten. Andernfalls werden Sie beim Start von Bacula Fehlermeldungen erhalten. Um Ihre lokale MySQL-Instanz zu starten oder zu stoppen, können Sie die Scripte startmysql und stopmysql aus dem Bacula-Quelltext verwenden. Im Falle von SQLite ist kein Start der Datenbank notwendig, dass wird beim Start von Bacula automatisch getan. In Produktionsumgebungen sollten Sie sicherstellen, dass Ihre Katalog-Datenbank im Falle eines Reboots vor dem Bacula-Diensten gestartet wird.
Wenn Sie Bacula aus dem Quelltext übersetzt oder die rpm-Pakete installiert haben, können Sie die drei Bacula-Dienste einfach durch Eingabe von:
./bacula start
im Installations-Verzeichnis starten.
Dieses Script starten den Storage-, File- und Director-Dienst, die danach im Hintergrund ausgeführt werden. Wenn Sie die Autostart-Scripte mitinstalliert haben, können Sie Bacula automatisch beim Rechnerstart oder auch gezielt über bacula-dir, bacula-fd und bacula-sd im Verzeichnis /etc/init.d, die einzelnen Dienste starten und stoppen.
Wie Sie die Dienste unter Windows starten und anhalten können, finden Sie im Kapitel ,,Die Windows-Version von Bacula`` in diesem Handbuch.
Bei der Installation der rpm-Pakete werden die Dienste so konfiguriert, dass sie unter der Gruppe bacula als Benutzer root ausgeführt werden. Die Gruppe bacula wird dabei, falls notwendig, automatisch erstellt. Alle Benutzer die der Gruppe bacula angehören haben Zugriff auf alle Dateien die die Dienste anlegen. Um das abzuändern, müssen Sie diese Start-Scripte entsprechend anpassen:
und Bacula, wie oben beschrieben, neu starten.
Im Bacula-Installations-Handbuch wird beschrieben, welche Schritte durchzuführen sind, um Bacula automatisch beim booten des Systems zu starten.
Um den Status von Jobs abzufragen oder um neue Jobs zu starten müssen Sie , aus dem Installationsverzeichnis, das Console-Programm starten:
./bconsole
Alternativ zu diesem Kommando können Sie auch das Bacula-Administration-Tool
verwenden. Das setzt vorraus, dass Sie Qt4 installiert und bei der Konfiguration des
Bacula-Quelltextes die Option --
enable-bat angegeben haben.
Starten Sie bat mit:
./bat
bat bietet Ihnen eine graphische Benutzerschnittstelle zum Director-Dienst und wesentlich mehr Funktionen als die bconsole.
Weitere Möglichkeiten sind die GNOME-Konsole bgnome-console oder das wxWidgets-Programm bwx-console.
Der Einfachheit halber wird hier nur die bconsole beschrieben. Die meisten Kommandos können Sie aber in identischer Form auch mit bat, bgnome-console und der bwx-console ausführen.
Das Befehl ./bconsole startet das Console-Programm das sich mit dem Bacula-Director-Dienst verbindet. Da Bacula ein netzwerkfähiges Programm ist, können Sie die Console auf einem beliebigen Computer starten. Meistens wird es aber auf derselben Maschine, auf der auch der Director-Dienst läuft, ausgeführt. Beim starten gibt die Console folgendes aus:
[kern@polymatou bin]$ ./bconsole Connecting to Director lpmatou:9101 1000 OK: HeadMan Version: 2.1.8 (14 May 2007) *
Der Stern ist das Console-Prompt.
Geben Sie help ein, um eine Liste der verfügbaren Kommandos zu erhalten:
*help Command Description ======= =========== add add media to a pool autodisplay autodisplay [on|off] -- console messages automount automount [on|off] -- after label cancel cancel [<jobid=nnn> | <job=name>] -- cancel a job create create DB Pool from resource delete delete [pool=<pool-name> | media volume=<volume-name>] disable disable <job=name> -- disable a job enable enable <job=name> -- enable a job estimate performs FileSet estimate, listing gives full listing exit exit = quit gui gui [on|off] -- non-interactive gui mode help print this command list list [pools | jobs | jobtotals | media <pool=pool-name> | files <jobid=nn>]; from catalog label label a tape llist full or long list like list command memory print current memory usage messages messages mount mount <storage-name> prune prune expired records from catalog purge purge records from catalog python python control commands quit quit query query catalog restore restore files relabel relabel a tape release release <storage-name> reload reload conf file run run <job-name> status status [[slots] storage=<name> | dir | client]=<name> setdebug sets debug level setip sets new client address -- if authorized show show (resource records) [jobs | pools | ... | all] sqlquery use SQL to query catalog time print current time trace turn on/off trace to file unmount unmount <storage-name> umount umount <storage-name> for old-time Unix guys update update Volume, Pool or slots use use catalog xxx var does variable expansion version print Director version wait wait until no jobs are running [<jobname=name> | <jobid=nnn> | <ujobid=complete_name>] *
Im Bacula-Console-und-Benutzer-Handbuch finden Sie eine detaillierte Beschreibung aller Kommandos.
An diesem Punkt gehen wir von folgenden Voraussetzungen aus:
--
Ihre-Optionen
Weiterhin nehmen wir an, dass Bacula mit der Standard-Konfiguration läuft.
Geben Sie das folgende Kommando in der Console ein:
show filesets
und Sie bekommen, in etwa, diese Ausgaben angezeigt:
FileSet: name=Full Set O M N I /home/bacula/regress/build N E /proc E /tmp E /.journal E /.fsck N FileSet: name=Catalog O M N I /home/bacula/regress/working/bacula.sql N
Was Sie sehen ist ein vordefiniertes FileSet namens ,,Full Set``, dass das Verzeichnis mit Ihrem Bacula-Quelltext sichert. Der angeteigte Verzeichnisname ist abhängig von Ihrer Konfiguration. Zum Testen ist das ein gutes Verzeichnis, es ist von angemessener Größ und enthält genügend Dateien, ohne zu unübersichtlich zu sein. Das zweite angezeigte FileSet, namens ,,Catalog``, wird benutzt um die Katalog-Datenbank zu sichern, aber das ist im Moment noch nicht von Interesse. Alle Einträge mit I bezeichnen Verzeichnisse oder Dateien die vom Job ,,included``, also gesichert werden sollen. Die E-Einträge bezeichnen Dateien und Verzeichnisse die ,,excluded``, also nicht gesichert werden sollen. Einträge mit O geben FileSet-Optionen an. Die FileSet-Einträge können in der Konfigurations-Datei des Director-Dienstes angepasst werden. Das passiert innerhalb des FileSet-Eintrags bei den Zeilen die mit File= beginnen.
Jetzt können Sie Ihren ersten Backup-Job starten. Der Job wird das Verzeichnis mit dem Bacula-Quelltext auf ein Festplatten-Volume unterhalb von /tmp sichern. Geben Sie bitte folgendes Kommando ein:
status dir
und Sie erhalten diese Ausgaben:
rufus-dir Version: 1.30 (28 April 2003) Daemon started 28-Apr-2003 14:03, 0 Jobs run. Console connected at 28-Apr-2003 14:03 No jobs are running. Level Type Scheduled Name ================================================================= Incremental Backup 29-Apr-2003 01:05 Client1 Full Backup 29-Apr-2003 01:10 BackupCatalog ====
wobei die Uhrzeiten, Director-Version und -Name bei Ihrer Installation wahrscheinlich abweichen. Die Ausgabe zeigt Ihnen, dass ein inkrementeller Backup-Job für den Client ,,Client1`` um 01:05 Uhr geplant ist. Danach, um 01:10 Uhr, wird ein Voll-Backup der Katalog-Datenbank ausgeführt. Bevor Sie später weitere Clients zu Ihrer Konfiguration hinzufügen, sollten Sie den Namen ,,Client1`` z.B. auf den Namen Ihres Computers setzen, ansonsten kann es mit mehreren Clients unübersichtlich werden.
Geben Sie jetzt
status client
ein um sich den Status Ihres Clients anzeigen zu lassen:
The defined Client resources are: 1: rufus-fd Item 1 selected automatically. Connecting to Client rufus-fd at rufus:8102 rufus-fd Version: 1.30 (28 April 2003) Daemon started 28-Apr-2003 14:03, 0 Jobs run. Director connected at: 28-Apr-2003 14:14 No jobs running. ====
In diesem Beispiel heisst der Client ,,rufus-fd``. Da nur ein Client konfiguriert ist, wählt Bacula ihn automatisch aus und zeigt den Status an. Die Ausgaben ab der Zeile rufus-sd Version: ... stammen vom Client, so das Sie sicher sein können, dass der Bacula-Client-Dienst auf dieser Maschine korrekt ausgeführt wird.
Abschließend lassen Sie sich noch den Status des Storage-Dienstes anzeigen. Geben Sie dazu folgendes Kommando ein:
status storage
und Sie sehen:
The defined Storage resources are: 1: File Item 1 selected automatically. Connecting to Storage daemon File at rufus:8103 rufus-sd Version: 1.30 (28 April 2003) Daemon started 28-Apr-2003 14:03, 0 Jobs run. Device /tmp is not open. No jobs running. ====
Da es nur einen Storage-Eintrag gibt, wird dieser wieder automatisch von Bacula ausgewählt. Momentan gibt es nur das Storage-Device /tmp, welches nicht geöffnet ist und es laufen aktuell keine Jobs.
Jetzt starten Sie den ersten Job:
run
die folgende Meldung erscheint:
Using default Catalog name=MyCatalog DB=bacula A job name must be specified. The defined Job resources are: 1: Client1 2: BackupCatalog 3: RestoreFiles Select Job resource (1-3):
Da es mehr als einen Job-Eintrag in der Director-Dienst-Konfiguration gibt, müssen Sie jetzt den gewünschten auswählen. Geben Sie bitte 1 ein und Bacula zeigt Ihnen die Job-Details an:
Run Backup job JobName: Client1 FileSet: Full Set Level: Incremental Client: rufus-fd Storage: File Pool: Default When: 2003-04-28 14:18:57 OK to run? (yes/mod/no):
Bevor Sie fortfahren und den Job starten, sollten Sie sich die Ausgaben genau ansehen und verstehen. Bacula fragt Sie, ob es OK ist den folgenden Job zu starten: Der Name des Jobs ist Client1, das FileSet heißt Full Set und der Job wird mit dem Level Incremental auf dem Client rufus-fd laufen. Die gesicherten Daten werden in den Pool Default auf dem Storage File abgelegt und der Job wird sofort gestartet, da unter When die aktuelle Uhrzeit angezeigt wird.
Sie haben nun die Wahl den Job durch Eingabe von yes zu starten oder mittels mod ein oder mehrere Job-Parameter anzupassen. Wenn Sie no eingeben wird der Job nicht gestartet. Geben Sie jetzt yes ein, danach sehen Sie sofort wieder die Eingabeaufforderung der Console, den Stern. Nachdem Sie einige Sekunden gewartet haben, geben Sie bitte messages ein und Sie erhalten in etwa folgende Ausgabe:
28-Apr-2003 14:22 rufus-dir: Last FULL backup time not found. Doing FULL backup. 28-Apr-2003 14:22 rufus-dir: Start Backup JobId 1, Job=Client1.2003-04-28_14.22.33 28-Apr-2003 14:22 rufus-sd: Job Client1.2003-04-28_14.22.33 waiting. Cannot find any appendable volumes. Please use the "label" command to create a new Volume for: Storage: FileStorage Media type: File Pool: Default
Die erste Zeile zeigt Ihnen, dass kein vorheriges Voll-Backup des Clients gefunden wurde, daher wird der Backup-Level des Jobs auf Full, statt Incremental, gesetzt. Die zweite Zeile gibt an, dass der Job mit der Job-ID 1 gestartet wurde und in der dritten Zeile sehen Sie die Meldung ,,Cannot find any appendable volumes.``. Das bedeutet, dass Bacula im Pool Default kein passendes Volume für diesen Job gefunden hat. Zusätzlich erscheint der Hinweis das Label-Kommando zu benutzen, um ein Volume zu erstellen. Da dieser Schritt noch nicht ausgeführt wurde, ist diese Meldung normal.
Der Job ist jetzt dadurch blockiert, dass er auf ein passendes Volume wartet. Das können Sie überprüfen, inden Sie das Kommando status director ausführen. Damit der Job laufen kann muss zuerst ein Volume erstellt werden. Dazu benutzen Sie das Kommando:
label
worauf Bacula folgendes ausgibt:
The defined Storage resources are: 1: File Item 1 selected automatically. Enter new Volume name:
Sie müssen jetzt einen Namen für das zu erstellende Volume wählen. Volume-Namen sollten mit einem Buchstaben beginnen und dürfen Buchstaben, Zahlen sowie den Bindestrich, Unterstrich und den Punkt enthalten. In diesem Beispiel geben Sie bitte den Namen TestVolume001 ein:
Defined Pools: 1: Default Item 1 selected automatically. Connecting to Storage daemon File at rufus:8103 ... Sending label command for Volume "TestVolume001" Slot 0 ... 3000 OK label. Volume=TestVolume001 Device=/tmp Catalog record for Volume "TestVolume002", Slot 0 successfully created. Requesting mount FileStorage ... 3001 OK mount. Device=/tmp
Da nur ein Pool existiert, wird das neue Volume diesem automatisch zugeordnet. Im Hintergrund wird der Job jetzt gestartet. Mit den Kommandos status director und status client können Sie den Ablauf verfolgen. Wenn status director keine laufenden Jobs mehr auflistet können Sie sich mit dem Kommando messages die Ausgaben zu dem beendeten Job anzeigen lassen:
28-Apr-2003 14:30 rufus-sd: Wrote label to prelabeled Volume "TestVolume001" on device /tmp 28-Apr-2003 14:30 rufus-dir: Bacula 1.30 (28Apr03): 28-Apr-2003 14:30 JobId: 1 Job: Client1.2003-04-28_14.22.33 FileSet: Full Set Backup Level: Full Client: rufus-fd Start time: 28-Apr-2003 14:22 End time: 28-Apr-2003 14:30 Files Written: 1,444 Bytes Written: 38,988,877 Rate: 81.2 KB/s Software Compression: None Volume names(s): TestVolume001 Volume Session Id: 1 Volume Session Time: 1051531381 Last Volume Bytes: 39,072,359 FD termination status: OK SD termination status: OK Termination: Backup OK 28-Apr-2003 14:30 rufus-dir: Begin pruning Jobs. 28-Apr-2003 14:30 rufus-dir: No Jobs found to prune. 28-Apr-2003 14:30 rufus-dir: Begin pruning Files. 28-Apr-2003 14:30 rufus-dir: No Files found to prune. 28-Apr-2003 14:30 rufus-dir: End auto prune.
Hier sehen Sie verschiedene Angaben wie die Laufzeit, Datenrate, verwendete Volumes und unter ,,Termination`` das der Backup-Job erfolgreich gelaufen ist. Nach der Eingabe von autodisplay on gibt die Console wartende Benachrichtigungen auch ohne Eingabe von messages aus.
Wenn Sie sich den Inhalt des /tmp-Verzeichnisses mit ls -l anzeigen lassen, sehen Sie das, mit dem Label-Kommando erstellte Volume:
-rw-r----- 1 bacula bacula 39072153 Apr 28 14:30 TestVolume001
In diesem Festplatten-Volume wurden die Daten aus dem eben gelaufenen Job geschrieben. Wenn Sie weitere Jobs starten, werden deren Daten an dieses Volume angehängt.
Eventuell fragen Sie sich jetzt, ob Sie jedes Volume das Bacula benutzen soll, auf die oben beschriebene Weise erstellen müssen. Bei Festplatten-Volumes, wie eben benutzt, ist das nicht der Fall. Es ist möglich Bacula so zu konfigurieren, dass es automatisch neue Volumes erzeugt (labelt), wenn sie benötigt werden. Bei Tape-Volumes ist das allerdings nicht der Fall, diese müssen einzelnd gelabelt werden, bevor Bacula sie verwenden kann.
An dieser Stelle können Sie das Console-Programm mit quit beenden und die Bacula-Dienste mit ./bacula stop anhalten. Fall Sie wieder von Vorne anfangen möchten, löschen Sie das angelegte Volume mit rm /tmp/TestVolume001 und reinitialisieren Sie Ihre Datenbank mit den Komandos:
./drop_bacula_tables ./make_bacula_tables
Dadurch werden alle Informationen zu allen gelaufenen Jobs endgültig gelöscht. Zum Testen ist das duraus hilfreich, später in einer produktiven Umgebung werden Sie das wahrscheinlich nicht ausführen wollen.
Wenn Sie versuchen wollen, die in diesem Beispiel gesicherten Daten wiederherzustellen, lesen Sie bitte den folgenden Abschnitt.
Wenn Sie die standardmäßige Konfiguration benutzt und wie oben beschrieben, den Bacula-Quelltext gesichert haben, können Sie mit der Console diese Daten auf dem folgenden Weg wiederherstellen:
restore all
worauf diese Auswahlliste erscheint:
First you select one or more JobIds that contain files to be restored. You will be presented several methods of specifying the JobIds. Then you will be allowed to select which files from those JobIds are to be restored. To select the JobIds, you have the following choices: 1: List last 20 Jobs run 2: List Jobs where a given File is saved 3: Enter list of comma separated JobIds to select 4: Enter SQL list command 5: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Cancel Select item: (1-12):
Wie Sie sehen können, haben Sie mehrere Optionen, aber in diesem Beispiel wählen Sie bitte die 5. Dadurch wird eine Wiederherstellung des letzten Voll-Backups für einen anzugebenen Client ausgewählt:
Defined Clients: 1: rufus-fd Item 1 selected automatically. The defined FileSet resources are: 1: 1 Full Set 2003-04-28 14:22:33 Item 1 selected automatically. +-------+-------+----------+---------------------+---------------+ | JobId | Level | JobFiles | StartTime | VolumeName | +-------+-------+----------+---------------------+---------------+ | 1 | F | 1444 | 2003-04-28 14:22:33 | TestVolume002 | +-------+-------+----------+---------------------+---------------+ You have selected the following JobId: 1 Building directory tree for JobId 1 ... 1 Job inserted into the tree and marked for extraction. The defined Storage resources are: 1: File Item 1 selected automatically. You are now entering file selection mode where you add and remove files to be restored. All files are initially added. Enter "done" to leave this mode. cwd is: / $
Das es momentan nur einen Client, ein FileSet und ein Storage-Device gibt, wählt Bacula automatisch die entsprechenden Einträge aus. Zudem wird aus allen Dateien des Jobs ein Verzeichnis-Baum aufgebaut, ein Abbild der gesicherten Verzeichnis- und Datei-Struktur. Sie können jetzt die Kommandos cd und ls oder dir benutzen, um das Verzeichnis zu wechseln oder sich den Inhalt auflisten zu lassen. Wenn Sie, zum Beispiel, erst cd /home/bacula/bacula-2.4.1 wechseln (Ihr Pfad wird anders lauten) und dann dir ausführen, erhalten Sie eine Liste aller Dateien und Verzeichnisse im Bacula-Quelltext-Verzeichnis. Für weiter Informationen lesen Sie bitte auch das Kapitel ,,Wiederherstellung von Daten`` in diesem Handbuch.
Um diesen Auswahl-Modus zu beenden, geben Sie
done
ein. Danach sehen Sie diese Ausgaben:
Bootstrap records written to /home/bacula/testbin/working/restore.bsr The restore job will require the following Volumes: TestVolume001 1444 files selected to restore. Run Restore job JobName: RestoreFiles Bootstrap: /home/bacula/testbin/working/restore.bsr Where: /tmp/bacula-restores Replace: always FileSet: Full Set Backup Client: rufus-fd Restore Client: rufus-fd Storage: File JobId: *None* When: 2005-04-28 14:53:54 OK to run? (yes/mod/no):
Wenn Sie jetzt yes eingeben, werden die Datein unterhalb von /tmp/bacula-restores wiederhergestellt. Dies ist der Standard für die Wiederherstellung und lässt sich über mod und Where anpassen. Um die Dateien an ihrem originalen Ort widerherzustellen, müssen Sie Where entweder leer lassen oder auf / setzen. In diesem Beispiel antworten Sie bitte einfach mit yes um die Wiederherstellung zu starten. Warten Sie inene kurzen Moment und geben Sie messages ein. Wenn der Wiederherstellungs-Job beendet ist, sehen Sie folgende Ausgaben:
28-Apr-2005 14:56 rufus-dir: Bacula 2.1.8 (08May07): 08-May-2007 14:56:06 Build OS: i686-pc-linux-gnu suse 10.2 JobId: 2 Job: RestoreFiles.2007-05-08_14.56.06 Restore Client: rufus-fd Start time: 08-May-2007 14:56 End time: 08-May-2007 14:56 Files Restored: 1,444 Bytes Restored: 38,816,381 Rate: 9704.1 KB/s FD Errors: 0 FD termination status: OK SD termination status: OK Termination: Restore OK 08-May-2007 14:56 rufus-dir: Begin pruning Jobs. 08-May-2007 14:56 rufus-dir: No Jobs found to prune. 08-May-2007 14:56 rufus-dir: Begin pruning Files. 08-May-2007 14:56 rufus-dir: No Files found to prune. 08-May-2007 14:56 rufus-dir: End auto prune.
Nachdem Sie die Console verlassen haben, können Sie sich die wiederhergestellten Dateien untehlab von /tmp/bacula-restores ansehen. Um diese Dateien wieder zu löschen, führen Sie :
rm -rf /tmp/bacula-restore
aus.
Die Console wird durch Eingabe von quit beendet.
Wenn Sie die oben beschriebenen Beispiele zur Sicherung und Wiederherstellung nachvollziehen konnten, können Sie jetzt einen zweiten Client hinzufügen. Dafür benötigen Sie einen zweiten Computer den Sie sichern wollen. Auf diesem Client müssen Sie nur den Bacula-Client-Dienst installieren, bacula-fd oder auf Windows bacula-fd.exe, sowie eine passende Konfigurations-Datei bacula-fd.conf. Sie können als Vorlage die bereits bestehende Konfigurations-Datei Ihresersten Clients benutzen. Ändern Sie einfach nur den Namen des Clients im Abschnitt ,,FileDaemon`` der Datei. Ein Beispiel, aus :
... # # "Global" File daemon configuration specifications # FileDaemon { # this is me Name = rufus-fd FDport = 9102 # where we listen for the director WorkingDirectory = /home/bacula/working Pid Directory = /var/run } ...
wird dabei:
... # # "Global" File daemon configuration specifications # FileDaemon { # this is me Name = matou-fd FDport = 9102 # where we listen for the director WorkingDirectory = /home/bacula/working Pid Directory = /var/run } ...
wobei nur der Ausschnitt der Datei dargestellt wird, in dem die Änderung von rufus-fd zu matou-fd gemacht wird. Alle anderen Einträge können im Moment so bleiben wie sie sind. Eventuell wollen Sie später noch ein anderes Passwort für den zweiten Client verwenden. Die angepasste Konfigurations-datei können Sie jetzt auf dem Client als bacula-fd.conf speichern. Des weiteren müssen Sie jetzt die Konfiguration des Bacula-Director-Dienstes um die Einträge für den neuen Client erweitern. Dazu kopieren Sie den Job- und Client-Eintrag des rufus-fd in der Director-Dienst-Konfiguration bacula-dir.conf und passen die Namen in den Einträgen entsprechend an:
# # Define the main nightly save backup job # By default, this job will back up to disk in /tmp Job { Name = "Matou" Type = Backup Client = matou-fd FileSet = "Full Set" Schedule = "WeeklyCycle" Storage = File Messages = Standard Pool = Default Write Bootstrap = "/home/bacula/working/matou.bsr" } # Client (File Services) to backup Client { Name = matou-fd Address = matou FDPort = 9102 Catalog = MyCatalog Password = "xxxxx" # password for File Retention = 30d # 30 days Job Retention = 180d # six months AutoPrune = yes # Prune expired Jobs/Files }
Verwenden Sie bitte vollständige Hostnamen für den Parameter Address im Client-Eintrag, wenn Sie etwas wie ,,localhost`` verwenden, kann es zu Problem bei der Namensauflösung kommen. Teilweise werden diese Parameter vom Director-Dienst zu den Client- oder Storage-Diensten gesendet, wo die Auflösung von ,,localhost`` dann etwas anderes bewirkt als gewollt.
Damit sind alle notwendigen Schritte zur Definition des zweiten Clients abgeschlossen. Die bestehende Konfiguration des Clients rufus-fd wurde kopiert und angepasst, so dass die Einträge jetzt matou und matou-fd heißen. Ebenso wurden die Einträge in der Director-Dienst-Konfiguration kopiert und angepasst. Geädert haben sich nur der Job-Name, der Client-Name und die Client-Adresse sowie der Name der Bootstrap-Datei. Das bedeutet, dass der Client matou-fd zur selben Zeit in den selben Pool gesichert wird, wie der Client rufus-fd. Das können Sie später natürlich noch Ihren Bedürfnissen anpassen, aber für dieses Beispiel wollen wir die Konfiguration so einfach wie möglich belassen.
Damit der Director-Dienst die neue Konfiguration einliest, muss er entweder neue gestartet werden, oder Sie rufen in der Console das Kommando reload auf. Jetzt ist alles notwendige getan, damit der zweite Client gesichert werden kann.
Die grösten Unterschiede zu einer produktiven Bacula-Installation sind jetzt nur noch, dass alle (beiden) Clients in einen Pool und zur selben Zeit gesichert werden. Aber das könen Sie jederzeit entsprechend umkonfigurieren. Auf alle Fälle sollte aus Sicherheitsgründen das Passwort des zweiten Clients noch geändert werden.
Einige wichtige Tipps die die Namen und Passwörter betreffen, sowie ein Diagramm welche Namen und Passwörter übereinstimmen müssen, finden Sie im Kapitel ,,Autorisierungs-Probleme`` im Bacula-Fehlerdiagnose-Handbuch.
Wenn die geplanten Backup-Jobs laufen, typischerweise Nachts, wird irgendwann das Tape, beziehungsweise das Festplatten-Volume, vollgeschrieben sein. Bacula kann keine weiteren Daten auf dem Laufwerk schreiben und gibt eine Meldung, ähnlich der folgenden, aus:
rufus-sd: block.c:337 === Write error errno=28: ERR=No space left on device
Daran können Sie erkennen, dass ein Schreibfehler auf dem Gerät aufgetreten ist, die Fehlerbeschreibung lautet ,,kein freier Platz mehr auf dem Gerät. Bacula versucht jetzt im entsprechenden Pool ein Volume zu finden, auf dem das Backup weiterlaufen kann. Im besten Fall sind in dem Pool alte Volumes verfügbar, deren Aufbewahrungs-Zeitraum abgelaufen ist. Bacula wird dann das älteste Volume automatisch wiederverwenden und überschreiben. Weitere Informationen dazu finden Sie im Kapitel über automatisches Volume Recycling im Handbuch ``Bacula Konzepte und Überblick,,. Falls Ihre Volumes, eventuell durch einen Konfigurations-Fehler, nicht automatisch überschrieben werden, finden Sie im selben Kapitel unter ``manuelle Wiederverwendung der Volumes,, Hilfe.
Wenn Bacula kein Volume im Pool findet auf dem das Backup fortgesetzt werden kann, erhalten Sie folgende Benachrichtigung:
rufus-sd: Job kernsave.2002-09-19.10:50:48 waiting. Cannot find any appendable volumes. Please use the "label" command to create a new Volume for: Storage: SDT-10000 Media type: DDS-4 Pool: Default
Solange Sie kein neues Volume erstellen, wiederholt Bacula diese Meldung erst stündlich, dann zwei-stündlich und so weiter, in immer doppelten Zeitabständen. Der maximale Interval beträgt dabei 24 Stunden.
Jetzt stellt sich natürlich die Frage: Was tun?
Die Antwort ist einfach: Starten Sie das Console-Programm und geben Sie das Laufwerk mit dem unmount-Kommando frei. Wenn Sie nur ein einzelnes Laufwerk haben, wird Bacula das automatisch auswählen, falls Sie mehrere Laufwerke haben, achten Sie darauf, dass Sie das freigegeben welches in der Benachrichtigung erwähnt ist. In diesem Beispiel SDT-10000.
Als nächtes entfernen Sie das volle Volume aus dem Gerät und legen ein Neues ein. Auf einigen älteren Laufwerken müssen Sie vorher eine ``EOF,,- (End of File) Markierung schreiben, damit das Band nicht losläuft, wenn Bacula versucht das Label zu lesen.
Anschließend benutzen Sie das label-Kommando um das neue Volume zu labeln. Das label-Kommando veranlaßt den Storage-Dienst eine Software-Markierung auf das Volume zu schreiben. Wenn das erfolgreich war, wird das neue Volume dem entsprechendem Pool zugeordnet und das Volume in das Laufwerk geladen. Weiter oben in diesem Kapitel finden Sie weitere Information bezüglich des label-Kommandos.
Das Ergebnis ist, dass Bacula den Backup-Job mit dem neuen Volume fortsetzen kann.
Wenn Sie einen Pool haben dessen Volumes periodisch wiederverwendet werden, kann statt der Meldung ``Cannot find any appendable volumes,, auch die Aufforderung kommen, ein bestimmtes Volume zu mounten. In diesem Fall solten Sie genau dies auch tun. Falls das angefragte Volume, aus welchen Gründen auch immer, nicht mehr zur Verfügung steht, können Sie auch ein anderes beschreibbares Volume aus dem entsprechenden Pool mounten. Im Console-Programm können Sie das Kommando list volumes verwenden, um ein passendes Volume zu suchen.
Falls, trotz korrekt konfigurierter Aufbewahrungszeiträume, für einen Pool kein freies Volume mehr zur Verfügung steht, können Sie ein Volume auf die folgende Art zur Wiederverwendung freigeben:
Wenn es notwendig ist, dem Volume ein neues Label zu verpassen, folgen Sie bitte diesen zusätzlichen Schritten:
Die meisten oben genannten Kommandos werden Sie nach weiteren benötigten Parameter fragen, wenn sie ohne welche aufgerufen werden.
Falls Sie die Debug-Ausgaben der Dienste im laufenden Betrieb sehen wollen, können Sie sie, aus dem Installationsverzeichnnis, wie folgt starten:
./bacula start -d100
Die Ausgaben können hilfreich sein, falls die Dienste nicht korrekt starten. Normalerweise werden diese Ausgaben auf /dev/null umgeleitet, erst bei einem Debug-Level größer als 0 werden sie auf dem Terminal ausgegeben.
Um alle drei Dienste wieder zu stoppen führen Sie :
./bacula stop
aus. Falls einer der Dienste nicht korrekt starten könnte, kann es sein, dass beim stoppen eine Fehlermeldung bezüglich nicht gefundener PIDs auftreten. Das ist aber ziemlich selten.
Um ein Systems komplett sichern zu können, muss der Client-Dienst als Benutzer root laufen damit er die Berechtigung hat auf alle Dateien zuzugreifen. Die anderen beiden Dienste, Storage- und Director-Dienst, benötigen diese Berechtigung nicht. Allerdings braucht der Storage-Dienst Lese- und Schreibrechte auf den Tape-Devices (zum Beispiel /dev/nstx). Auf vielen Systemen ist diser Zugriff nur dem Benutzer root gestattet, so dass der Storage-Dienst entweder als root laufen muss oder Sie müssen die Rechte auf den Devices so anpassen, dass auch normale Benutzer Zugriff haben. Auch die Katalog-Datenbank kann im Falle von MySQL oder PostgreSQL ohne root-Rechte laufen.
Wenn Sie die Dienste starten versucht der Storage-Dienst alle definierten Storage-Geräte zu öffnen und die enthaltenen Volumes zu prüfen. Bis diese Vorgänge abgeschlossen sind, nimmt der Storage-Dienst keine Verbindungen vom Console-Programm entgegen. Falls ein bereits beschriebenes Tape im Laufwerk ist, wird dieses zurückgespult, was bei einigen Laufwerken mehrere Minuten dauern kann. Daher brauchen Sie etwas Geduld wenn Sie nach dem starten der Dienste den Storage-Dienst kontaktieren wollen. Falls Sie Ihr Tape-Laufwerk sehen können, erkennen Sie an den Lichter wann das Laufwerk bereit ist.
Die selben Aspekte treffen zu, wenn Sie ein neues unbeschriebens Tape zum Beispiel in ein HP-DLT-Laufwerk einlegen. Es kann ein bis zwei Minuten dauern bis das Laufwerk erkennt, dass das Tape komplett leer ist. Wenn Sie schon innerhalb dieser Zeit versuchen das Volume mit dm mount-Kommando einzubinden, kann es sein das es zu Problemen mit dem SCSI-Treiber kommt. Haben Sie also auch in disem Fall Geduld und warten Sie ab bis das Laufwerk mit dem Einlesen des Tapes fertig ist, bevor Sie darauf zugreifen.
Wenn Ihre Client-Dienste Problem haben sich mit dem Storage-Dienst zu verbinden liegt das meistens daran, dass als Address des Storage-Dienstes kein vollständig qualifizierter Domain-Name angegeben ist. Der Rechner auf dem der Client-Dienst (nicht der Director-Dienst) läuft muss in der Lage sein diesen Namen in eine IP-Adresse aufzulösen. Ein Name der zum Beispiel auf dem Director-System funktionieren kann, aber garantiert nicht auf dem Client ist localhost. Die Angabe des Names ohne Domain, zum Beispiel megalon, kann funktionieren, besser ist es jedoch den Namen mit Domain anzugeben : megalon.ihredomain.de. Probleme mit Windows-Client-Systemen können Sie eventuell auch durch direkte Angabe der IP-Adresse als Address umgehen.
Falls die konfigurierte Address korrekt ist, aber trotzdem keine Verbindung zustande kommt, sollten Sie überprüfen ob andere Programme den vom Storage-Dienst benötigten Port 9103 benutzen. Die Bacula Port-Nummern sind zwar alle durch die IANA zugewiesen und kein anderes Progrtamm sollte sie benutzen, aber einige HP-Drucker benutzen sie zum Beispiel doch. Mittels netstat -a können Sie herrausfinden, welches Programm den Port 9103 geöffnet hat.
Jedem der drei Dienste (Director, File/Client und Storage) können beim Start die folgenden Optionen, die auch beim Console-Programm funktionieren, übergeben werden:
Die Erstellung der Pools erfolgt automatisch aufgrund der Pool-Konfiguration wenn Bacula startet. Wenn Sie wissen was ein Pool ist, können Sie dieses Kapitel überspringen.
Eins der Dinge die Bacula wissen muss wenn ein Backup-Job startet ist, welches Volume zur Sicherung verwendet werden soll. Anstelle eines einzelnen Volumes wird in der Konfiguration ein Pool von Volumes angegeben, aus dem Bacula sich ein beschreibbares Volume für den Job aussucht. Bacula wird das erste verfügbare Volume aus dem Pool wählen das zu dem, in der Job-Konfiguration angegebenen, Storage-Device passt. Nachdem das Volume vollgeschrieben wurde, setzt Bacula den Volume-Status von Append auf Full, danach wird ein weiteres Volume aus dem Pool benutzt um den Job fortzusetzen. Wenn kein passendes Volume mehr im Pool verfügbar ist, wird der Director versuchen ein Volume zu finden dessen Daten bereits abgelaufen sind und das Volume recyclen. Wenn auch das fehlsclägt gibt Bacula eine Meldung aus mit dem Hinweis ein neues Volume in dem Pool zu erstellen
Bacula behält ständig die Übersicht über die Pools, die Volumes in den Pools und die verschiedenen Eigenschaften der Volumes.
Wenn Bacula startet wird sichergestellt, dass alle Pool-Einträge aus der Konfiguration auch in der Katalog-Datenbank vorhanden sind. Mit dem folgenden Console-Kommando können Sie das überprüfen:
list pools
in Abhängigkeit der konfigurierten Pools wird eine Liste wie diese angezeigt:
*list pools Using default Catalog name=MySQL DB=bacula +--------+---------+---------+---------+----------+-------------+ | PoolId | Name | NumVols | MaxVols | PoolType | LabelFormat | +--------+---------+---------+---------+----------+-------------+ | 1 | Default | 3 | 0 | Backup | * | | 2 | File | 12 | 12 | Backup | File | +--------+---------+---------+---------+----------+-------------+ *
Wenn Sie versuchen einen bereits bestehenden Pool ein zweites Mal zu erstellen, wird Bacula folgende Meldung ausgeben:
Error: Pool Default already exists. Once created, you may use the {\bf update} command to modify many of the values in the Pool record.
Bacula benötigt auf jedem Volume ein Software-Label. Dabei gibt es verschiedene Möglichkeiten das Label auf ein Volume zu schreiben. Sie können die Volumes zum Beispiel labeln, wenn Bacula Sie mit einer entsprechenden Meldung dazu auffordert. Mittels des Console-Kommandos label erstellen Sie dann ein neues Volume im entsprechenden Pool. Alternativ können Sie auch das Console-Kommando relabel verwenden um ein bereits abgelaufenens Volume, im Status ``purged,,, wiederzuverwenden.
Eine weitere Methode ist es viele Volumes zu labeln und dann nach und nach zu benutzen, je nachdem wann Bacula ein neues Volume verlangt. Das wird meistens bei Tape-Volumes gemacht die dann in einem Autochanger verwendet werden können. Lesen Sie dazu auch das Kapitel ``automatisches Volume Wiederverwendung,, in diesem Handbuch.
Zum labeln der Volumes wird normalerweise das Console-Programm verwendet.
Falls Bacula eine Meldung ausgibt, dass das Volume nicht gelabelt werden kann da es bereits ein Label enthält, müssen Sie ein ungelabeltes Volume in das Laufwerk einlegen.
Danach müssen Sie eins der konfigurierten Storage-Geräte auswählen in dem das zu labelnde Volume ist, zum Beispiel:
The defined Storage resources are: 1: File 2: 8mmDrive 3: DLTDrive 4: SDT-10000 Select Storage resource (1-4):
In dem Gerät das Sie jetzt auswählen sollte ein neues ungelabeltes Volume sein.
Bacula fragt Sie nun nach dem Namen für das Volume:
Enter new Volume name:
Falls Bacula diese Meldung ausgibt:
Media record for Volume xxxx already exists.
bedeutet es, dass der von Ihnen eingegebene Volume-Name schon in der Katalog-Datenbank existiert. Sie können sich alle definierten Volumes mit dem Kommando list media anzeigen lassen:
+---------------+---------+--------+----------------+-----/~/-+------------+-----+ | VolumeName | MediaTyp| VolStat| VolBytes | LastWri | VolReten | Recy| +---------------+---------+--------+----------------+---------+------------+-----+ | DLTVol0002 | DLT8000 | Purged | 56,128,042,217 | 2001-10 | 31,536,000 | 0 | | DLT-07Oct2001 | DLT8000 | Full | 56,172,030,586 | 2001-11 | 31,536,000 | 0 | | DLT-08Nov2001 | DLT8000 | Full | 55,691,684,216 | 2001-12 | 31,536,000 | 0 | | DLT-01Dec2001 | DLT8000 | Full | 55,162,215,866 | 2001-12 | 31,536,000 | 0 | | DLT-28Dec2001 | DLT8000 | Full | 57,888,007,042 | 2002-01 | 31,536,000 | 0 | | DLT-20Jan2002 | DLT8000 | Full | 57,003,507,308 | 2002-02 | 31,536,000 | 0 | | DLT-16Feb2002 | DLT8000 | Full | 55,772,630,824 | 2002-03 | 31,536,000 | 0 | | DLT-12Mar2002 | DLT8000 | Full | 50,666,320,453 | 1970-01 | 31,536,000 | 0 | | DLT-27Mar2002 | DLT8000 | Full | 57,592,952,309 | 2002-04 | 31,536,000 | 0 | | DLT-15Apr2002 | DLT8000 | Full | 57,190,864,185 | 2002-05 | 31,536,000 | 0 | | DLT-04May2002 | DLT8000 | Full | 60,486,677,724 | 2002-05 | 31,536,000 | 0 | | DLT-26May02 | DLT8000 | Append | 1,336,699,620 | 2002-05 | 31,536,000 | 1 | +---------------+---------+--------+----------------+-----/~/-+------------+-----+
Wenn Sie dann einen Namen eingegeben haben der noch nicht im Katalog vorhanden ist, wird Bacula Sie als nächstes nach dem Pool fragen in dem das neue Volume erstellt werden soll. Wenn es nur einen Pool gibt, wählt Bacula diesen automatisch aus.
Wenn das Volume dann erfolgreich gelabelt wurde, erstellt Bacula eine Katalog-Eintrag für das neue Volume. Darin wird der Name des Volumes sowie alle seine Parameter gespeichert. Zeitgleich wird das neue Volume auch für Backup-Jobs verfügbar.
Beimlabeln müssen Sie nur sehr wenige Daten eingeben, den Volume-Namen, den Pool und eventuell den Slot. Der Katalog-Eintrag für ein Volume enthält aber sehr viel mehr Werte. Die meisten davon werden aus der Pool-Konfiguration gesetzt, die für alle Volumes des Pools gilt.
Sie können Volumes auch zum Pool hinzufügen ohne sie physikalisch labeln zu müssen. Dazu kann das Console-Kommando add verwendet werden. Weitere Informationen darüber finden Sie im Kapitel ``Die Bacula Console,, des ``Bacula Console- und Benutzer-Handbuchs,,.
eric 2009-05-06