Benutzer:Mdbw/bacula
Aus Opennet
Bacula ist eine Open-Source-Backup Software.
Inhaltsverzeichnis |
Installation
- als Pakete:
#apt-get install bacula-common bacula-console bacula-director-common bacula-fd bacula-sd libpq3 mysql-server mtx mt-st und #apt-get install bacula-director-mysql
- während der Installation den mysql-root-user anlegen:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'PASSWORT' WITH GRANT OPTION;
- Passwort testen:
mysql -u root -p
- Bei einigen getesteten bacula-versionen funktionierte die mysql-Anbindung nur wenn kein mysql-root-pw gesetzt war:
mysql -u root -p Enter password: mysql> set password=password("neues passwort");
Funktionsweise
- die 3 wichtigen daemons auf Server und Clients:
Bacula-Director
- kontrolliert alle anderen Deamons
- über den Bacula-Director erfolgt die Hauptkonfig (Scheduler, medien etc.)
- starten:
#/etc/init.d/Bacula-director
Bacula-SD
- Storage-Deamon, verwaltet die Archiv-Geräte
- Es kann verschiedene Storage-Deamons im Netz geben.
- starten:
#/etc/init.d/Bacula-sd
Bacula-FD
- File-Deamon (client), muss auf allen Geräten laufen, die gesichert werden sollen.
- starten:
#/etc/init.d/Bacula-fd
Konfiguration des Backup- Servers
Konfigurationsdateien
- In /etc/bacula/bacula-sd.conf wird der Wechsler und das Laufwerk definiert:
Autochanger { Name = "HP C7145" Device = LTO-1-Slot1 # Device = LTO-1-Slot1, LTO-1-Slot2 Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d" Changer Device = /dev/sg2 } Device { Name = LTO-1-Slot1 Drive Index = 0 Media Type = LTO-1 Archive Device = /dev/nst0 Automatic Mount = yes Removable Media = yes Random Access = no LabelMedia = yes Backward Space Record = yes Close on Poll = yes Always Open = yes Autochanger = yes Volume Poll Interval = 1m Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" }
- In /etc/bacula/bacula-dir.conf muss das Storage definiert werden, in unserem Fall die Lib. (erst dann können z.B. Tapes gelabelt werden):
#Definition of file storage device Storage { Name = HP C7145 ## Do not use "localhost" here Address = backup-dev # N.B. Use a fully qualified name here SDPort = 9103 Password = "<hash>" Device = LTO-1-Slot1 Media Type = LTO-1 }
- Dieser Name muss in der gleichen Datei auch in den Job-Abschnitten (für backup-jobs) angepasst werden, damit die Sicherung auf das korrekte Storage erfolgt.
- Für die inkrementellen Backups haben wir die Option mtimeonly=yes im FileSet- Bereich der bacula-dir.conf gesetzt. Dadurch werden bei den täglich umbenannten Verzeichnissen /export2/file/home.1 und /export2/file/daten.1 nur die geänderten Dateien gesichert und nicht die ganzen Verzeichnisse.
# List of files to be backed up FileSet { Name = "Full Set" Include { Options { signature = MD5 #noatime = yes mtimeonly = yes }
- ob diese Einstellung funktioniert, kann man überprüfen, indem man bei einer Datei den owner ändert, dabei wird nämlich nür die c-time geändert (mit "stat" prüfen). Da wir bacula nun angewiesen haben, nur nach der m-time zu entscheiden, sollte diese Datei nicht bei einer inkrementellen Sicherung gesichert werden.
Einen Pool anlegen
- Zunächst muss der Pool in der Datei /etc/bacula/bacula-dir.conf definiert werden, z.B. so:
#Vollsicherung pool definition Pool { Name = Vollsicherung Pool Type = Backup Recycle = no # Bacula can not automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 365 days # one year Accept Any Volume = yes # write on any volume in the pool }
- Dann muss der Pool in der Katalog-DB eingetragen werden, entweder automatisch bei einem Neustart von Bacula oder mit dem "create"- Befehl in der bconsole.
- Der letzte Schritt ist ein Neustart von Bacula, dann kann man sich mit "list pools" das Ergebnis ansehen.
Tapes labeln
-> WICHTIG: Bitte die Tapes immer wie die Barcodes labeln- ich hatte mit dem automatischen Wechseln und Mounten Probleme mit anderen Namen!
- Wenn man die Tapes analog zu den vorhandenen Barcodes benennen möchte kann man in der bconsole sagen
label barcodes
- Die Tapes mit den Barcodes zu labeln ist wohl am sinnvollsten, da der mtx-Befehl auch die Barcodes verwendet aber eine andere Nummerierung.
mtx -f /dev/sg2 status
- Wünscht man andere Namen, gibt man "label" ein und folgt den Anweisungen zur Poolauswahl.
- Will man die Tapes umbenennen, gibt man in bconsole "purge" ein, und sagt "relabel".
- Will man ein Tape mit dem Status "purged" in einen anderen pool verschieben, den Namen jedoch beibehalten, muss man es mit "delete" löschen, dann mit "add" wieder hinzufügen (hierbei die "0" für festen Namen wählen und alten Namen angeben). Anschließend ein "update slots" durchführen, damit bacula weiß, in welchem Slot der Library sich das Tape befindet (Ansonsten Fehlermeldung: "Invalid slot=0 defined, cannot autoload Volume" und Probleme beim Laden der Tapes).
Bconsole Befehle
- Bevor bconsole gestartet werden kann, führen wir Verbindungstests zu den einzelnen Diensten durch:
backup-gg:/etc/bacula# telnet localhost 9103
- bconsole-Befehle:
cancel show filesets status dir status client status storage run list media llist files jobid=423 Zeige alle files an, die in job423 gesichert wurden purge jobs volume label delete add update update slots mount
Backups
- "run" ausführen, den Anweisungen folgen, um sofort eine Sicherung durchzuführen
- bei inkrementellen Sicherungen ist es wichtig, das der Gleiche Jobname, Clientname und das gleiche fileset verwendet werden.
Restore
- Rücksicherungen können nach Job-Id, Datei- oder Verzeichnisnamen erfolgen
- "restore" ausführen, wie bei der Sicherung den Anweisungen folgen
- will man z.B ein komplettes Verzeichnis zurücksichern, gibt man das Verzeichnis an (z.B. /etc/bacula/testfile3/). Soll das Verzeichnis an seinen Ursprungsort gesichert werden, gibt man als Ort der Rücksicherung / an.
Datenbank zurücksetzen
- Erst Bacula anhalten.
- Dies kann bei schweren problemen oder zu vielen Tests :) sinnvoll sein. Zunächst müssen wir die alten tables loswerden:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | bacula | | mysql | | test | +--------------------+ 4 rows in set (0.04 sec) mysql> drop database bacula; Query OK, 18 rows affected (0.16 sec) mysql>
- dann Paket bacula-director-mysql neu konfigurieren:
backup-gg:/etc/bacula# dpkg-reconfigure bacula-director-mysql
Einrichten der Tape Library
- Die Tape Library besteht aus Laufwerk und Wechsler, beide müssen zunächst in der Datei /etc/bacula/bacula-sd.conf eingerichtet werden.
- besonders auch den Wert bei "Changer Device = /dev/sg0" (backup2-avx) beachten, sonst erhält man "bad-autochanger" Fehler :)
- die tatsächlich vergebene device-id anzeigen lassen !!ACHTUNG!! DIE DEVICE-ID ÄNDERT SICH BEI JEDEM NEUSTART!!
backup-gg:/etc# dmesg |grep sg sd 0:0:0:0: Attached scsi generic sg0 type 0 sd 0:0:2:0: Attached scsi generic sg1 type 0 st 1:0:5:0: Attached scsi generic sg2 type 1 scsi 1:0:8:0: Attached scsi generic sg3 type 8
- die scsi-id herausfinden
backup-gg:/etc# lsscsi [0:0:0:0] disk 3ware Logical Disk 0 1.2 - [0:0:2:0] disk 3ware Logical Disk 2 1.2 - [1:0:5:0] tape HP Ultrium 1-SCSI E3BR /dev/st0 [1:0:8:0] mediumx HP C7145 2710 -
- Welches Gerät (sg) ist das Laufwerk und welches der Wechsler:
backup-gg:/etc# mtx -f /dev/sg2 inquiry Product Type: Tape Drive Vendor ID: 'HP ' Product ID: 'Ultrium 1-SCSI ' Revision: 'E3BR' Attached Changer: Yes
backup-gg:/etc# mtx -f /dev/sg3 inquiry Product Type: Medium Changer Vendor ID: 'HP ' Product ID: 'C7145 ' Revision: '2710' Attached Changer: No
- Wechslerstatus anzeigen lassen:
backup-dev:/etc/bacula/scripts# mtx -f /dev/sg3 status Storage Changer /dev/sg2:1 Drives, 9 Slots ( 0 Import/Export ) Data Transfer Element 0:Empty Storage Element 1:Full :VolumeTag= Storage Element 2:Full :VolumeTag=M02006L1 Storage Element 3:Full :VolumeTag=M02106L1 Storage Element 4:Full :VolumeTag=M02206L1 Storage Element 5:Full :VolumeTag=M02306L1 Storage Element 6:Full :VolumeTag=M02406L1 Storage Element 7:Full :VolumeTag=M02506L1 Storage Element 8:Full :VolumeTag=M02606L1 Storage Element 9:Full :VolumeTag=M02706L1
- Wir sehen, das Laufwerk ist leer, daher laden wir ein Tape aus Slot3:
backup-dev:/etc/bacula/scripts# mtx -f /dev/sg3 load 3
- Dann testen wir unsere Konfig-datei, bacula-sd muss dazu gestoppt und ein LEERES Tape geladen sein:
backup-dev:/dev# btape -c /etc/bacula/bacula-sd.conf /dev/nst0 Tape block granularity is 1024 bytes. btape: butil.c:272 Using device: "/dev/nst0" for writing. 02-Apr 15:48 btape: 3301 Issuing autochanger "loaded drive 0" command. 02-Apr 15:48 btape: 3302 Autochanger "loaded drive 0", result is Slot 3. 02-Apr 15:48 btape: 3301 Issuing autochanger "loaded drive 0" command. 02-Apr 15:48 btape: 3302 Autochanger "loaded drive 0", result is Slot 3. btape: btape.c:338 open device "LTO-1-Slot1" (/dev/nst0): OK *test
- weitere btape- Befehle:
rewind, readlabel fill
- Mit unload kann man ein Tape wieder aus dem Laufwerk holen. Bei einigen Wechslern (in dem Fall ein NEC Wechsler) ist es notwendig vorher das Tape per eject freizugeben.
backup2-avx:~# mt -f /dev/st0 eject backup2-avx:~# mtx -f /dev/sg2 unload Unloading Data Transfer Element into Storage Element 1...done
- im Fall unseres NEC T40A in Hamburg ist es daher notwendig, das mtx-changer-script anzupassen:
# enable the following line if you need to eject the cartridge mt -f $device offline sleep 10 ${MTX} -f $ctl unload $slot $drive ;;
Installation von bacula-web/ bweb
- Download: http://sourceforge.net/project/showfiles.php?group_id=50727
- http://www.debianhelp.co.uk/baculaweb.htm
Probleme
Sicherungen nach Wiederinbetriebname des Rechners schlagen fehl
- test mit btape
that I can write on in Slot 1. Do you wish to continue with the Autochanger test? (y/n): y === Autochanger test === 3301 Issuing autochanger "loaded" command. 3991 Bad autochanger command: /etc/bacula/scripts/mtx-changer /dev/sg2 loaded 1 /dev/nst0 0 3991 result="mtx: Request Sense: Long Report=yes ": ERR=Child exited with code 1 You must correct this error or the Autochanger will not work.
- tape lässt sich auch mit mtx nicht entladen
status "126 Full Backup-GG_neu2.2008-08-15_16.57.35 is waiting for a mount request"
- es wird kein tape benutzt, obwohl ausreichend leere tapes vorhanden sind
- dieser Fehler tritt auf, wenn die tapes in bacula kein software- barcode label haben bzw. wenn unterschiedliche barcodes verwendet werden
- Lösung: tape mit mtx manuell laden, dann mounten
- Hinweis: dieser Fehler kann auch auftreten, wenn die tapes zwar im Wechsler sind, bacula davon aber nichts weiß-> update slots :)
bweb "An error has occurred: Can't get log for jobid 68"
- Infos über Jobs im Web-If nicht verfügbar
- Die verwendete Bacula Version (1.38) unterstützt dieses feature von bacula vermutlich nicht
-> mit backup-dev (Version 2.28) testen!
Number of Files mismatch
- Backups brachen immer wieder mit Fehlern ab, einige tapes wurden jedoch korrekt beschrieben.
- Das Problem trat während eines Backups auf volle Tapes auf, die zum Recyclen markiert waren.
- Lösung: Tapes mit btape checken, manuell zurückspulen.
Keine Slots gefunden
backup-gg:/etc/bacula/scripts# ./mtx-changer /dev/sg3 slots 9 backup-gg:/var/log/bacula# tapeinfo -f /dev/sg3 Product Type: Medium Changer Vendor ID: 'HP ' Product ID: 'C7145 ' Revision: '2710' Attached Changer: No SerialNumber: 'PRTN006213 ' SCSI ID: 8 SCSI LUN: 0 Ready: yes backup-gg:/var/log/bacula#
- Lösung: der user bacula darf nicht auf /dev/sg3 zugreifen, daher wird in /etc/sudoers folgende Zeile eingetragen:
bacula ALL = NOPASSWD:/etc/bacula/scripts/mtx-changer
- und in der /etc/bacula/bacula-sd.conf:
Autochanger { Name = HP C7145 Device = LTO-1-Slot1 # Device = LTO-1-Slot1, LTO-1-Slot2 Changer Command = "sudo /etc/bacula/scripts/mtx-changer %c %o %S %a %d" Changer Device = /dev/sg3 }
nach dist-upgrade
backup-gg:/etc/bacula# /etc/init.d/bacula-director start Starting Bacula Director: 09-Apr 10:56 bacula-dir: Fatal error: Version error for database "bacula". Wanted 9, got 8 09-Apr 10:56 bacula-dir: Fatal error: Could not open Catalog "MyCatalog", database "bacula". 09-Apr 10:56 bacula-dir: Fatal error: Version error for database "bacula". Wanted 9, got 8 09-Apr 10:56 bacula-dir ERROR TERMINATION Please correct configuration file: /etc/bacula/bacula-dir.conf failed.
- in das Paket geschaut:
backup-gg:/var/run/bacula# dpkg -L bacula-director-mysql .../usr/share/dbconfig-common/data/bacula-director-mysql/install/mysql...
- dann:
mysql> create database bacula;
- zuletzt:
backup-gg:/var/run/bacula# mysql bacula < /usr/share/dbconfig-common/data/bacula-director-mysql/install/mysql
Links
- http://www.debianhelp.co.uk/bacula1.htm
- http://www.bacula.org/en/
- http://packages.debian.org/de/sid/i386/bacula-console-qt/download
- http://www.bacula.org/de/dev-manual/Bacula_installieren.html#_ChapterStart1
- http://www.bacula.org/de/dev-manual/Autochanger_Unterstutzu.html
- http://osdir.com/ml/sysutils.backup.bacula.devel/2004-05/msg00057.html
- http://mtx.opensource-sw.net/faq-III.html