Benutzer:Mdbw/bacula

Aus Opennet
Wechseln zu: Navigation, Suche

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

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

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge