Bacula
Aus Gentoo Linux Wiki
| Installationsmethoden • LiveCDs • Kernel & Hardware • Laptops & Notebooks • Portage • System • Netzwerke & Services • X • Software • Anderes • alphabetischer HOWTO Index |
Inhaltsverzeichnis |
[Bearbeiten] Einleitung
Bacula ist eine professionelle Open Source Backupsoftware die speziell für verteilte Systeme entwickelt wurde. Die Software bietet dem Nutzer etliche Features die sonst nur in kommerzieller Backupsoftware zu finden sind. Bacula besteht aus drei Daemons die untereinander über das Netzwerk kommunizieren, einer Schnittstelle zum Benutzer und einem Katalog in dem alle Transaktionen mit einer Fülle an Details gesichert werden, so das eine spätere Wiederherstellung der Daten problemlos möglich ist.
[Bearbeiten] Bacula Komponenten
Der Director
Der Director ist der Chef der Daemons. Er kennt die Clients, die einzelnen Sicherungsjobs, die Zeitpläne, die zu sichernden Daten und die verwendeten Speichermedien. Die Konfiguration des Directors erfolgt in der Datei "bacula-dir.conf".
Der File Daemon
Er läuft auf den Clients und liefert über das Netzwerk die zu sichernden Daten an den Storage Daemon. Die Konfiguration erfolgt auf den einzelnen Clients in der Datei bacula-fd.conf. File Daemons gibt es für Linux- und Windowsbetriebssysteme.
Der Storage Daemon
Dieser Deamon tritt mit dem File Daemon in Interaktion und leitet die empfangenen Daten auf die Sicherungsmedien wie z. Bsp. Bandlaufwerke oder Festplatten weiter. Die Konfiguration erfolgt in der Datei bacula-sd.conf.
Der Katalog
Im Katalog werden zu jedem Job den Bacula sichert eine Fülle an Informationen wie JobId, Name, Startzeit und Größe gespeichert. Der Katalog besteht aus einer Datenbank. Unterstützt werden von Bacula dabei PostgreSQL, MySQL und SQLite. Mit den im Katalog enthaltenen Informationen ist eine schnelle Wiederherstellung einzelner Backupjobs möglich, daher sollte dieser täglich gesichert werden.
Die Konsole
Die Konsole stellt die Schnittstelle zum Anwender dar. Mit ihr können zum einen Backups überwacht und zum anderen Befehle an den Bacula Director geschickt werden. Es existieren verschiedene Konsolen für Windows und Linux. Der Anwender kann dabei zwischen Konsolen mit einer teilweise grafischen Oberfläche und kommandozeilenbasierten wählen. Die Konfiguration erfolgt je nach Konsole in der dazugehörigen Konfigurationsdatei.
[Bearbeiten] Installation
Bacula benötigt zur Erstellung des Kataloges eine Datenbank. Unterstützt werden die Datenbanksysteme MySQL, PostgreSQL und SQLite. Das verwendete Datenbanksystem muss durch setzen der USE-Flags in der Datei make.conf spezifiziert werden.
Beispiel: Verwendung einer MySQL Datenbank
emerge mysql
Installation von Bacula
emerge bacula
MySQL starten
/var/lib/bacula/startmysql
MySQL Datenbank anlegen
/var/lib/bacula/create_mysql_database /var/lib/bacula/make_mysql_tables /var/lib/bacula/grant_mysql_privileges
Deamons beim Bootvorgang starten
/etc/rc.d/init.d/bacula-dir /etc/rc.d/init.d/bacula-fd /etc/rc.d/init.d/bacula-sd rc-update add bacula default
Manuelles Starten, Stoppen, Restart der Deamons
/etc/init.d/bacula start /etc/init.d/bacula stop /etc/init.d/bacula restart
[Bearbeiten] Konfiguration der Daemons
Im folgenden wird die Konfiguration der einzelnen Deamons erläutert, es wird dabei lediglich auf die von uns verwendeten Funktionen eingegangen. Weitere Funktionen sind im Bacula-Manual, verfügbar unter [1], enthalten.
[Bearbeiten] Konfiguration des Directors
Der Director ist der Zentraler Bestandteil von Bacula und besteht aus verschiedenen zu konfigurierenden Ressourcen.
Director Ressource
Director {
Name = bacula-dir # Name des Directors Wichtig für Authentifizierung !!
DIRport = 9101 # Verbingungs Port
QueryFile = "/var/lib/bacula/query.sql" # enthält Anweisungen für SQL-Anfragen
WorkingDirectory = "/var/bacula" # Arbeitsverz. des Directors
PidDirectory = "/var/run" # Prozess Id
Maximum Concurrent Jobs = 4 # Anzahl parallel zugelassener Jobs
Password = "Konsole" # Passwort für die Console
Messages = Daemon
FDConnectTimeout = 10 min # Job bricht ab wenn keine Verbindung mit FD
SDConnectTimeout = 10 min # Job bricht ab wenn keine Verbindung mit SD
Job/JobDefs Ressource
Job {
Name = "BackupServer" # Jobname
RunBeforeJob= "/bin/ping -c 5 192.168.1.01" # Test ob Rechner erreichbar
JobDefs = "DefaultJob" # Verweis auf weitere Jobattribute
Write Bootstrap = "/var/bacula/BackupServer.bsr1" # Bootstrap File
Maximum Concurrent Jobs = 4 # Anzahl parallel zugelassener Jobs
}
Bemerkung zum Bootstrapfile: Für jeden Job wird ein Bootstrapfile geschrieben. Es enthält wichtige Informationen über den Backupjob. Beispielsweise auf welchem Volumen, in welchem Blöcken sich der Job befindet. Mit Hilfe dieser Datei kann ohne Datenbank eine schnelle Wiederherstellung einzelner Jobs durchgeführt werden.
Bemerkung zum Run Before Job: Bevor ein Job startet erfolgt ein Ping auf den Rechner ("-c5" 5 Datenpaket werden verschickt), wenn der Rechner nicht erreichbar ist wird der Job nicht gestartet. Dies ist unter anderem sehr hilfreich bei der Sicherung von Notebook die nicht ständig am Netzwerk angeschlossen sind. Ein nicht gestarteter Job kann später automatisch wieder ausgewählt und wenn der Rechner erreichbar ist, gestartet werden. Die Wiederaufnahme fehlerhafter und fehlgeschlagener Jobs wird durch die zusätzlich Aufnahme folgender Funktion in die Job Ressource erreicht.
Rerun Failed Levels = yes # Wiederaufnahme von fehlgeschlagenen Jobs Reschedule On Error = yes # Wiederaufnahme von fehlerhaften Jobs Reschedule Interval = 1 hour # Interval in dem Wiederanwahl erfolgt Reschedule Times = 3 # Wiederanwahlversuche
weitere Jobattribute befinden sich in der JobDefs Ressource
JobDefs {
Name = "DefaultJob" # Name
Type = Backup # Job Typ : Backup / Restore / Verify / Admin
Level = Full # Art des Backups: Full / Differential / Incremental
Client = bacula-fd # zu sichernder Client
FileSet = "fileset1" # Verweis auf das FileSet (enthält zu sichernde Dateien)
Schedule = "Schedule1" # Verweis auf Zeitplan
Storage = LTO2 # Verwendete Speicherressource
Messages = Standard # Mitteilungs Format
Pool = Default # Verwendeter Pool (auch in Schedule-Ressource spezifizierbar)
Priority = 1 # Priorität des Jobs (1=höchste Priorität)
File Resource
FileSet {
Name = "fileset1" # Name des Filesets
Include {
Options {
Compression = GZIP # Option Kompression
}
File = /home # zu sicherndes Verzeichnis (Linux-Dateipfad)
}
}
Windows Dateipfad
File = "f:/SQLDATA/mssql/"
Schedule Ressource
Schedule {
Name = "Schedule1"
Run = Level=Differential Pool = Daily Pool Monday at 22:00
# /Level des Jobs / In welchem Pool wird gespeichert / Zeit der Sicherung
Run = Level=Full Pool = TuesdayPool Tuesday at 20:00
}
Client Ressource
Client {
Name = server-fd # Name des File Deamons Wichtig !!
Address = 192.168.1.01 # IP-Adresse des Rechners
FDPort = 9102 # Verbindungsport
Catalog = MySQL # Name des Verwendeten Katalogs
Password = "client1" # Passwort des FileDaemon Wichtig !!
File Retention = 30 days # Zeit nach der File Records aus Katalog entfernt werden
Job Retention = 6 months # Zeit nach der JobRecords aus Katalog entfernt werden
AutoPrune = yes # Automatisches entfernen aus Datenbank erlaubt
Maximum Concurrent Jobs = 4 # Anzahl parallel zugelassener Jobs
}
Bemerkungen: Wichtig ist das der Clientname und das dazugehörige Passwort mit dem Namen und dem Passwort im Konfigurationsfile des Clients übereinstimmen.
Storage Ressource
Storage {
Name = LTO2
Address = 192.168.1.00 # IP-Adresse das Storage Deamons(Bacula-sd)
SDPort = 9103 # Verbindungsport
Password = "storage1" # Passwort des Storage Deamons Wichtig !!
Device = Ultrium-LTO2 # Geräte auf das Sicherung erfolgt
Media Type = LTO-2 # Medien Typ
Maximum Concurrent Jobs = 4 # Anzahl parallel zugelassener Jobs
}
Pool Ressource
Pool {
Name = TuesdayPool # Name des Pools
Pool Type = Backup # Pool Typ
AutoPrune = yes # Automatisches Entfernen aus Datenbank erlaubt
Recycle = yes # Automatisches Recycling von Volume erlaubt
Volume Retention = 13 d # Zeit die Job Records in Datenbank bleiben (13 Tage)
Accept Any Volume = yes # Jedes Volumen im Pool wird akzeptiert
Maximum Volume Jobs = 4 # Anzahl Jobs in Volumen (Default 0 = unendlich)
}
Bemerkungen: Bacula ermöglicht es mehrere Bänder zu einem Pool zusammen zu fassen. Bei Einsatz eines Bandwechslers ist es somit möglich einen Backuplauf der über das Bandende hinaus geht auf einem anderen dem Pool zugeordneten Band fortzusetzen. In der Schedule-Ressource kann definiert werden wann die einzelnen Pools zu bedienen sind. Bacula bietet die Möglichkeit Bänder automatisch zu recyceln und danach wieder zu beschreiben. Im Beispiel oben werden 4 Jobs in das Volumen geschrieben das danach den Status "Used" bekommt. Ist die Volume Retention Periode vorüber ändert sich der Status in "Recyle" und das Band wird vor dem nächsten Backupjob recycelt. Durch AutoPrune wird das automatische entfernen von Datensätzen aus der Datenbank erreicht.
Katalog Ressource
Catalog {
Name = MySQL # Name des Katalogs
dbname = bacula; # Name der Datenbank
user = bacula; # Benutzer
password = ""
DB Socket= /var/run/mysqld/mysqld. # Socket Name
DB Address = localhost # DB Adresse
[Bearbeiten] Konfiguration des Storage Daemons
Im Storage Deamon werden die eingesetzten Speichermedien definiert auf den die Sicherung erfolgen soll.
Storage {
Name = bacula-sd # Name des Storage Deamons
SDPort = 9103 # Verbindungsport
WorkingDirectory = "/var/bacula" # Arbeitsverzeichnis
Pid Directory = "/var/run" # Verzeichniss der Prozess-Id
Maximum Concurrent Jobs = 4 # Anzahl parallel zugelassener Jobs
}
Director {
Name = bacula-dir # Name des Directors
Password = "storage1" # Passwort zur Authentifizierung beim Director
}
Device {
Name = Ultrium-LTO2 # Gerät auf dem Sicherung erfolgt
Media Type = LTO-2 # Medientyp
Archive Device = /dev/st0 # Device Name des Bandlaufwerkes
Removable Media = yes #
RandomAccess = no #
Autochanger = no #
Backward Space Record = yes #
Automatic Mount = yes # Automatisches Mounten des Bandes
Always Open = No # Mounten notwendig
Label Media = Yes # Automatisches Labeln
}
Bemerkung: Device Name, Media Type und Passwort muss mit dem in der Storage Ressource des Directors übereinstimmen.
[Bearbeiten] Konfiguration des File Daemons
File Deamons laufen auf den zu sichernden Rechnern und liefern die Daten an den Storage Deamon. File Deamons gibt es für Linux und für Windows Betriebssysteme.
Director {
Name = bacula-dir # Name des Directors
Password = "client1" # Passwort zur Authentifizierung beim Director
}
FileDaemon {
Name = server-fd # Name des File Deamons
FDport = 9102 # Verbindungsport
WorkingDirectory = /bacula/working # Arbeitsverzeichnis
Pid Directory = /bacula/working # Prozess ID
SD Connect Timeout = 5 min # Zeit nach der Abbruch des Jobs erfolgt wenn keine
Verbindung mit Storage Deamon aufgebaut werden kann
}
Für Windows gibt es einen Installer der den File Deamon als Windows-Dienst installiert. Unter Gentoo kann ein bestehender File Deamon (/usr/sbin/bacula-fd) und seine Konfigurationsdatei(/etc/bacula/bacula-fd.conf) von einem anderes Gentoo System kopiert werden. Danach muss noch das Runscript (/etc/init.d/bacula)kopiert und angepaßt werden (Einträge von bacula-dir und bacula-sd löschen). Wichtig ist das Passwort und Name des File Deamons mit dem in der Client Ressource des Directors übereinstimmen.
[Bearbeiten] Tipps
Nach einem Backup Job kann als "RunAfterJob" (in Job Ressource) eine kleine Scriptdatei end_of_backup.sh (zu finden im Bacula Manual unter Backup Strategies)ausgeführt werden. Dieses Script spult das Band an den Anfang zurück und wirft es danach aus. Beim Einsatz mehrer Bänder ist für die Umsetzung der Backup Strategie die Bildung von Pools wichtig (Beispiele sind im Bacula Manual unter Backup Strategies zu finden). Da in der Schedule Ressource definiert werden kann wann welcher Pool zu bedienen ist und Bänder in Pools automatisch recycelt werden können.
[Bearbeiten] Fazit
Bacula ist mit seinen vielen Funktionen sicherlich eine gute Alternative zu kommerzieller Backupsoftware. Durch die Existenz eines Filedeamons für Windows ist auch die Sicherung von Windows Rechnern möglich. In unserem Unternehmen setzen wir Bacula seit einiger Zeit zur Sicherung unserer Serverumgebung (Gentoo,Windows) ein und haben bis jetzt nur gute Erfahrungen mit der Software gemacht.
