Table of Contents
Bacula
Installazione su Suse GNU/Linux
SUSE Linux Enterprise Server 10 non include il pacchetto Bacula (e che diamine! Siamo enterprise, mica vorremo fare un backup, vero?).
Si installano dei pacchetti creati dalla comunità OpenSuse reperibili qui. Vogliamo la versione per PostgreSQL, possibilmente FHS compliant, quindi si evita la versione singledir che installa tutto sotto /opt/
. Archivio installato: bacula-postgresql-5.0.1-19.1.x86_64.rpm.
Alcuni pacchetti vengono installati con yast2
, i pacchetti bacula invece con rpm -i
.
- termcap
- mtx
- bacula-postgresql
- bacula-docs
Il pacchetto bacula-mtx
non server perché esiste mtx
, il pacchetto bacula-updatedb
serve solo per fare l'upgrade del database da una vecchia versione. bacula-client
invece è in conflitto con il bacula-postgresql
.
Creazione del database
Durante l'installazione di bacula-postgresql
la creazione del database fallisce perché ci prova come utente root
, il poveretto! Ecco i passi per rimediare a mano.
Permettere la connessione con password, editare /var/lib/pgsql/data/pg_hba.conf
sostituire ident sameuser
con md5
per le connessioni di tipo host
(TCP/IP). Ricaricare PostgreSQL dopo:
host all all 127.0.0.1/32 md5
Creazione del database con le giuste caratteristiche (encoding, ecc.):
su - postgres . /usr/lib64/bacula/create_postgresql_database psql postgres=# CREATE USER bacula PASSWORD 'MySecret'; postgres=# SELECT * FROM pg_user ; postgres=# UPDATE pg_database SET datdba = 16384 WHERE datname = 'bacula'; postgres=# \q exit
Popolazione del database con le tabelle richieste:
cp /usr/lib64/bacula/make_postgresql_tables . vi make_postgresql_tables # # Modificare la riga psql per usare connessione host con login: # psql -U bacula -W -h 127.0.0.1 -f - -d ${db_name} $* <<END-OF-DATA # ./make_postgresql_tables
Il terzo script /usr/lib64/bacula/grant_postgresql_privileges
non serve in quanto il nostro utente bacula possiede l'intero database.
Le credenziali di accesso vanno messe in /etc/bacula/bacula-dir.conf
, nella sezione Catalog:
Catalog { Name = MyCatalog # Uncomment the following line if you want the dbi driver dbdriver = "dbi:postgresql"; dbaddress = 127.0.0.1; dbport = 5432 dbname = "bacula"; dbuser = "bacula"; dbpassword = "MySecret" }
A differenza da quanto riportato nella Bacula Main Reference, il Job BackupCatalog non va modificato.
Esecuzione
La componente principale di Bacula è il Director (supervisore dei processi di backup), impostare il nome in /etc/bacula/bacula-dir.conf
, sezione Director.
Per avviare il Bacula Director, il Bacula Storage Daemon (scrive sul nastro secondo gli ordini del Director) e il Bacula File Daemon (gira sulla macchina client, agli ordini del Director legge i file da salvare e li passa allo Storage):
/etc/init.d/bacula-dir start /etc/init.d/bacula-sd start /etc/init.d/bacula-fd start
Con ps aux
si possono vedere i tre processi Bacula in esecuzione. Le porte di rete utilizzate sono:
Director | TCP 9101 |
---|---|
File daemon | TCP 9102 |
Storage daemon | TCP 9103 |
Configurazione Director e Console
Il Director è l'host che dirige le operazioni di backup, viene amministrato tramite la Console (porta TCP 9101). Conviene che sul Director stesso sia configurato anche un client Console, si consiglia bconsole
che funziona da riga di comando e può essere usata via ssh. Su altre postazioni si potranno installare console diverse, anche grafiche.
Impostare la password per l'accesso console: in /etc/bacula/bacula-dir.conf
, sezione Director sulla macchina dove gira il Director e in /etc/bacula/bconsole.conf
, sezione Director sulla macchina dove si esegue bconsole
.
Esistono diverse console grafiche: per per QT, GTK oppure WxWindows. Debian fornisce i pacchetti bacula-console-gnome, bacula-console-qt e bacula-console-wx. Pare che la migliore sia quella QT, chiamata anche bat (Bacula Administration Tool).
Per accedere ad un Director remoto con Debian si deve configurare /etc/bacula/bat.conf
(mettendo indirizzo e password del Director) ed essere nel gruppo bacula
.
Nella configurazione del Director si dichiara uno o più Storage, gli host che ricevono i dati di backup. Si deve indicare come Address l'indirizzo IP che verrà usato dai client per raggiungerlo.
Logging e notifiche mail
Qui la documentazione sulla risorsa Messages.
Attenzione alla configurazione predefinita e la rotazione dei log in Debian! Nella risorsa Messages del director controllare la direttiva append, deve essere adeguata al logrotate che viene installato in /etc/logrotate.d/bacula-common
.
Nell'impostazione predefinita Debian vengono mandati messaggi mail all'utente root per ogni backup eseguito (direttiva mail, messaggi di tipo all), analogamente anche per i messaggi dallo storage daemon che richiedono l'intervento dell'operatore (direttiva operator, messaggi di tipo mount).
In una situazione un po' più strutturata i messaggi vengono inviati ad un indirizzo di posta elettronica standard, qualificato con un dominio:
mail = alert@rigacci.org = all, !skipped operator = alert@rigacci.org = mount
Se si desidera che vengano inviate mail solo in condizioni di errore dovrebbe essere sufficiente sostituire la direttiva mail con la direttiva mail on error:
mail on error = alert@rigacci.org = all, !skipped
È opportuno anche verificare il mittente apposto ai messaggi generati, l'impostazione predefinita (sempre root) potrebbe causare problemi al recapito delle mail, se è attiva la verifica del mittente. In tal caso si deve modificare l'opzione -f in mailcommand e operatorcommand:
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<no-reply@rigacci.org\>\" -s \"Bacula: %t %e of %c %l\" %r" operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<no-reply@rigacci.org\>\" -s \"Bacula: Intervention needed for %j\" %r"
Configurazione di un client
Un client è semplicemente un host su cui gira un'istanza del Bacula File Daemon che fornisce al Director i file da salvare. Viene contattato dal Director sulla porta TCP 9102.
Per una macchina Debian è sufficiente installare il pacchetto bacula-fd, nel file /etc/bacula/bacula-fd.conf
si impostano i dati del Director autorizzato a controllare il file daemon (nome del Director e password) e il nome del client stesso (FileDaemon, Name). Per il nome si consiglia di usare il nome host seguito da -fd.
Se il daemon deve ascoltare su tutte le interfacce di rete, commentare la direttiva FileDaemon, FDAddress.
Sul Director si aggiunge una sezione Client in /etc/bacula/bacula-dir.conf
impostando la password del client.
Configurazione Storage Daemon
Lo Storage Daemon è l'host che ha accesso al device di backup (es. nastro), si configura nel file /etc/bacula/bacula-sd.conf
.
Si deve specificare quale Director è autorizzato ad accedere e la password, la stessa password va messa nella configurazione del Director.
Inoltre si configura il device che riceve i dati (es. due tape drive SCSI con autochanger). Per scoprire i drive presenti:
lsscsi -g [0:0:0:0] cd/dvd HL-DT-ST RW/DVD GCC-T20N 1.01 /dev/sr0 /dev/sg0 [2:2:0:0] disk LSI MegaRAID SAS RMB 1.12 /dev/sda /dev/sg1 [3:0:0:0] storage HP HSV300 0950 - /dev/sg2 [3:0:1:0] storage HP HSV300 0950 - /dev/sg3 [4:0:0:0] storage HP HSV300 0950 - /dev/sg4 [4:0:1:0] storage HP HSV300 0950 - /dev/sg5 [5:0:4:0] tape HP Ultrium 4-SCSI W24W /dev/st0 /dev/sg6 [5:0:4:1] mediumx HP MSL G3 Series 6.70 - /dev/sg7 [6:0:5:0] tape HP Ultrium 4-SCSI W24W /dev/st1 /dev/sg8
In questo caso abbiamo due tape drive (/dev/st0
e /dev/st1
) e un caricatore (medium exchanger, /dev/sg7
).
Attenzione alla numerazione!! Nel caso in cui vengano aggiunte periferiche SCSI è molto probabile che il device SCSI generic cambi numero! In tal caso bisogna cambiare la configurazione del Bacula Storage Daemon.
Per vedere la lista dei nastri (sia quelli negli slot che quelli caricati nei drive) e per verificare che lo script mtx-changer
sia in grado di spostare un nastro da uno slot (il n.7 nell'esempio) ad un drive (lo 0 nell'esempio) e viceversa:
/usr/lib64/bacula/mtx-changer /dev/sg7 list /usr/lib64/bacula/mtx-changer /dev/sg7 load 7 /dev/nst0 0 /usr/lib64/bacula/mtx-changer /dev/sg7 unload 7 /dev/nst0 0
Il nome del tape device (/dev/nst0
oppure /dev/nst1
) viene usato dallo script mtx-changer
per eventuali operazioni di rewind, per vedere lo status del drive, ecc. con comandi del tipo (attenzione che il processo bacula-sd
potrebbe tener bloccato il device /dev/nstX
):
mt -f /dev/nst1 status drive type = Generic SCSI-2 tape drive status = 1174405120 sense key error = 0 residue count = 0 file number = 0 block number = 0 Tape block size 0 bytes. Density code 0x46 (unknown). Soft error count since last status=0 General status bits on (41010000): BOT ONLINE IM_REP_EN
Configurazione di un Pool di Volumi
Un volume corrisponde ad un nastro, i nastri vengono utilizzati in pool in modo da poter estendere il backup oltre la dimensione del singolo nastro. Un pool riceve uno o più job (un set di file da un client), un volume può ricevere dati fintanto che si trova in modalità append, quindi sullo stesso nastro possono finire job differenti.
È possibile scegliere cosa va a finire su ciascun volume (nastro) in vari modi. Si possono utilizzare pool diversi per diversi tipi di backup; ad esempio il full in un pool e gli l'incremental in un altro. Oppure con le direttive Maximum Volume Jobs
e Volume Use Duration
si può utilizzare un solo pool e determinare il cambio di nastro in base ai job eseguiti o al tempo trascorso.
Esempio: un ciclo di backup settimanale con un full seguito da sei incrementali può essere distribuito in sette volumi di un solo pool, è sufficiente impostare il Volume Use Duration
inferiore alle 24 ore, in questo modo ogni giorno viene selezionato un nastro nuovo. In questo caso è importante impostare Recycle
, AutoPrune
e Volume Retention
appropriati in modo che i nastri vengano riutilizzati opportunamente.
- Per creare un pool si aggiunge una sezione in
bacula-dir.conf
, riavviarebacula-dir
per salvare la definizione nel Catalog database. Per eliminare un pool bisogna eliminare la definizione nel file di configurazione e poi si utilizza il comandodelete pool=…
per eliminarlo anche dal database. - Per aggiungere un volume ad un pool si etichettano i volumi (nastri) e contestualmente si aggiungono al pool. L'operazione è identica sia per creare un volume su nastro che un volume su file
label storage="LTO-4" volume="p00v01" pool="pool00" label storage="File" volume="file001" pool="File"
Viene chiesto in quale drive fare l'operazione e da quale slot prendere la cassetta.
Per cambiare etichetta ad un volume si usa il comandorelabel
, ecco come togliere un volume da un pool ed assegnarlo ad un altro, cambiando anche etichetta:purge volume="old_label" relabel storage="LTO-4" oldvolume="old_label" volume="new_label" pool="new_pool"
- Per eliminare un volume dal database si usa il comando
delete volume=…
. Sul nastro rimane scritta l'etichetta, per eliminarla è necessario caricare il nastro nel drive:mount storage="LTO-4" slot=1 drive=0
per liberare la risorsa
/dev/nst0
è probabile che si debba fermare il serviziobacula-sd
e quindi troncare il contenuto del nastro con i comandi Unix:mt -f /dev/nst0 rewind mt -f /dev/nst0 weof
- Per rilasciare un nastro (volume) senza toccarne il contenuto bisogna che il volume sia in uno stato Append, Full, Used, o Error. Quindi prima si imposta lo stato e poi lo si elimina:
update volume=p00v10 volstatus=Full delete volume=p00v10
- Per modificare un parametro di un volume esistente, ad esempio il Volume Retention Period (vedere il Manuale Bacula Conole per il nome breve delle proprietà che sono modificabili):
update volume=p01v0077 VolRetention="3 weeks"
Volumi su file
Se un volume su file è cresciuto troppo è possibile cambiare la sua dimensione massima (es. usando Bat, pulsante Edit, Max Volume Bytes). Però il file non viene troncato immediatamente, neanche se ne viene fatto il purge.
È opportuno associare l'azione truncate al purge e poi invocare il comando purge volume action
, da bconsole
:
update volume=file001 ActionOnPurge=Truncate purge volume action storage=File pool=File
Ovviamente conviene sistemare la definizione del volume nel file /etc/bacula/bacula-dir.conf
:
# Pool of file based volumes. Pool { Name = File Pool Type = Backup Recycle = yes # Bacula can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Action On Purge = Truncate # Truncate the file when it is purged with "purge volume action" Volume Retention = 1 month # One month Maximum Volume Bytes = 2G # Limit Volume size to something reasonable Maximum Volumes = 10 # Limit number of Volumes in Pool }
Scratch pool
Il pool Scratch è particolare per Bacula: quando un pool ha esaurito i volumi disponibili, se è necessario un nuovo volume viene spostato dallo Scratch al pool in questione e viene usato.
Purge, Delete e Prune
Nella terminologia di Bacula ciascun termine applicato ad un volume (nastro) significa:
Purge | Rimuove dal database (catalog) le informazioni sui Job contenuti nel Volume. Il volume viene marcato Purged e sarà riciclato non appena necessario. |
---|---|
Delete | Rimuove dal database le informazioni sul Volume e su tutti i Job che contiene. Per riutilizzare il nastro sarà necessario assegnargli una nuova label (eventualmente forzando la scrittura di un EOF mark). |
Prune | Rimuove dal catalog le informazioni scadute che riguardano i Jobs e i Files. Ogni cliente definisce la politica di retention di questi oggetti. In generale la direttiva AutoPrune di ciascun cliente provvede automaticamente ad eseguire questa operazione. |
Comandi Console
release | Toglie il nastro dal drive. |
---|---|
umount | Equivale al release. |
mount | Carica un nastro nel drive. |
llist pool | Mostra le impostazioni di un pool. |
llist media pool=pool00 | Mostra le impostazioni dei nastri appartenenti ad un pool. |
update pool=pool00 | Aggiorna nel database le impostazioni di un pool, leggendo dal file di configurazione. |
update volume=p00v01 | Modifica interattivamente le impostazioni di un nastro. |
Installazione Client Windows
Scaricare ed eseguire win32bacula-5.0.2.exe, seguendo la procedura custom è sufficiente installare la componente Client. Attenzione: se si usa una versione a 64 bit di Windows occorre la versione 64 bit del client, altrimenti il Volume Shadow Copy Service (VSS) genera l'errore Unexpected error calling routine CoCreateInstance e fa fallire il backup.
Da Start, Strumenti di amministrazione, Servizi verificare che il servizio sia avviato.
Se il servizio non parte si può controllare eventuali messaggi di errore lanciando bacula-fd.exe
dal Command Prompt. In questo caso il file di configurazione deve essere messo in C:\Documents and Settings\All Users\Dati applicazioni\Bacula\bacula-fd.conf
.
Nel caso nostro è stato necessario commentare la sezione relativa al restricted director per il tray monitor.
Con la versione 5.2.10 su Windows 2008 Server, il file di configurazione è in C:\Program files\Bacula\bacula-fd.conf
, per eseguire il client dal prompt la configurazione va messa in C:\ProgramData\Bacula\
.
NOTA1: Se si esegue Bat come utente Administrator la lista Jobs Run rimane vuota.
NOTA2: Quando si fa il backup di un filesystem Windows è utile attivare il Volume Shadow Copy Service (VSS). Serve a fare backup consistenti di un filesystem mentre questo è in uso. Vedere The Windows Version of Bacula. Lo si attiva con la direttiva
Enable VSS = yes
nella risorsa FileSet
del bacula-dir.conf
.
Ecco un esempio di una risorsa FileSet per client Windows:
FileSet { Name = "inetpub_filezilla" Enable VSS = yes Include { Options { signature = MD5 } File = "C:/inetpub" File = "C:/Program Files (x86)/FileZilla Server" } }
ERR=Connection reset by peer
Con backup che durano a lungo (ore) si potrebbe incappare in errori del tipo Connection reset by peer perché magari qualcuno (router) ignora il keep-alive della sessione TCP. In questo caso può aiutare impostare il seguente parametro sia nella configurazione del Director (file /etc/bacula/bacula-dir.conf
) che nella configurazione del FileDaemon (es. /etc/bacula/bacula-fd.conf
):
Heartbeat Interval = 60
Questo comporta che ogni 60 secondi il Directory invia un heart-beat al FileDaemon e questo a sua volta allo Storage.
Vol Usage errato in Bat
Bat mostra la percentuale di uso di ogni volume nella pagina Media. Purtroppo il calcolo non è fatto sull'effettiva capacità massima del volume (massima capacità del nastro), ma sulla dimensione media di tutti i volumi dello stesso tipo, che siano in stato di Full oppure Used. Se il nastro viene ruotato prima che sia pieno, la stima è grossolanamente errata.
Backup su nastro con cambio di cassetta
WARNING: Un nastro LTO-2 da 200 Gb (non compressi) viene scritto in circa 4 ore, utilizzando un fileset senza compressione (interfaccia SCSI su CPU Celeron 2.66 GHz).
Se non si ha una tape library e il backup eccede la capacità del singolo nastro, è necessario provvedere al cambio di nastro manuale.
Dal programma bat
, Jobs Run, si vede il job in stato Running. Cliccando su di esso si legge un messaggio del tipo:
everest-sd Please mount Volume "p00v02" or label a new one for: Job: Tape_EverestBianca.2012-11-09_15.16.57_07 Storage: "Drive-1" (/dev/nst0) Pool: pool00 Media type: LTO-2
In questo caso si clicca su Storage, si evidenzia il device LT0-2, click destro, UnMount Storage. A questo punto è possibile estrarre il nastro ed inserire il successivo.
Per far proseguire il backup si clicca su Storage, si evidenzia il device LT0-2, click destro, Mount Media Storage. Il job riprende automaticamente.
Rilasciare forzatamente un volume su file
Prima si imposta il volume status su Purged e poi su Recycle.
- Dalla console di
bat
, Pools, click destro sul volume, Purge Volume. - Dalla console di
bat
, Pools, click destro sul volume, Edit Volume, Volume status → Recycle.
Debug da bconsole
Job bloccato in running mode
Esempio: il job 742 è in stato di running, ma non procede; come indagare il motivo:
status director ... ====================================================================== 737 Full BackupCatalog.2012-11-11_23.10.00_28 is waiting for higher priority jobs to finish 742 Increme Dns.2012-11-12_23.05.02_36 is waiting on Storage everest_files ...
Si vede che il job è in attesa dello Storage everest_files. Vediamo allora lo storage:
status storage=everest_files ... ... Running Jobs: Writing: Full Backup job EverestBianca JobId=709 Volume="" pool="pool01" device="FileStorage" (/home/bacula/storage) spooling=0 despooling=0 despool_wait=0 Files=1,693,226 Bytes=90,448,055,578 Bytes/sec=193,092 FDReadSeqNo=16,436,652 in_msg=11515263 out_msg=5 fd=6 ... ... Jobs waiting to reserve a drive: 3608 JobId=742 wants Pool="pool01" but have Pool="" nreserve=0 on drive "FileStorage" (/home/bacula/storage). ... ... Device status: Device "FileStorage" (/home/bacula/storage) is not open. Device is BLOCKED waiting to create a volume for: Pool: pool01 Media type: File ...
Lo Storage è rimasto fermo sul JobId=709, è inutile eliminarlo dal Director, lo storage resta bloccato. Il problema si è creato perché il device ha tentato di creare un volume (file su disco), ma ha fallito, probabilmente a causa del disco pieno. Il Device è quindi BLOCKED.
Sembra che l'unico modo per recuperare da questa situazione sia riavviare il servizio baculda-sd
.
Errori durante l'esecuzione di un job
Nel log di un job possiamo trovare dei messaggi che indicano un problema nell'usare un volume (in questo caso file su disco):
Max configured use duration exceeded. Marking Volume "p01v0124" as Used.
In questo caso l'errore era stato mettere i volumi in status di Append, ma poiché erano stati usati diversi giorni prima (oltre il limite di Use Duration) sono stati marcati dom Used. Se volevamo riutilizzarli bisognava marcarli come Recycle.
Error: Bacula cannot write on disk Volume "p01v0129" because: The sizes do not match! Volume=12701343744 Catalog=12701334487 Marking Volume "p01v0129" in Error in Catalog.
Per recuperare un volume dalla situazione di Error la via più rapida è farne un Purge, poi un Delete e quindi rimuovere il file dal filesystem. Bacula provvederà a creare un nuovo volume al bisogno se la risorsa Device ha l'opzione LabelMedia = yes
e la risorsa Pool ha LabelFormat = "p01v"
.
Errory MySQL
Nel caso in cui lo spazio disco si easurisca durante un backup la cosa più probabile è che si corrompa una tabella MySQL, nei file di log si trova:
[ERROR] /usr/sbin/mysqld: Table './bacula/File' is marked as crashed and last (automatic?) repair failed
Dal prompt SQL si può verificare che effettivamente la tabella è danneggiata:
CHECK TABLE File; +-------------+-------+----------+-------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +-------------+-------+----------+-------------------------------------------------------+ | bacula.File | check | warning | Table is marked as crashed and last repair failed | | bacula.File | check | warning | 1 client is using or hasn't closed the table properly | | bacula.File | check | warning | Size of indexfile is: 1046085632 Should be: 1024 | | bacula.File | check | error | Record-count is not ok; is 11386556 Should be: 0 | | bacula.File | check | warning | Found 945073084 deleted space. Should be 0 | | bacula.File | check | warning | Found 7973460 deleted blocks Should be: 0 | | bacula.File | check | warning | Found 20817354 key parts. Should be: 0 | | bacula.File | check | error | Corrupt | +-------------+-------+----------+-------------------------------------------------------+
Dal prompt Unix è possibile tentare la riparazione:
mysqlrepair bacula File
Usare un disco rimuovibile
Seguendo il Bacula And Removable Disk HOWTO è possibile configurare un disco esterno (es. USB) come un magazino di una tape library, creando al suo interno una serie di file che simulano i nastri (volumi) da caricare automaticamente nel lettore di un autochanger.
Tutto si basa sullo script /usr/local/sbin/vchanger
che emula le operazioni di /etc/bacula/scripts/mtx-changer
e di un file di configurazione /etc/bacula/vchanger-usbchanger1.conf
che fa le veci del device di controllo SCSI dell'autochanger.
In questa pagina sono riassunte le configurazioni necessarie: Configurazione virtual changer per Bacula.
Setup iniziale
Vedere l'HOWTO, qui un promemoria dei comandi eseguiti:
Installare il pacchetto autofs, si configura autofs in modo che monti automaticamente i dischi etichettati usbchanger1
:
/etc/auto.master
+auto.master /mnt/usbchanger1 /etc/auto.usbchanger1 --timeout=30
/etc/auto.usbchanger1
magazine -fstype=auto,rw :/dev/disk/by-label/usbchanger1
Aggiustare lo script (attenzione: richiede la bash
!) e il file di configurazione:
/usr/local/sbin/vchanger
/etc/bacula/vchanger-usbchanger1.conf
chown root.tape /etc/bacula/vchanger-usbchanger1.conf chmod 0640 /etc/bacula/vchanger-usbchanger1.conf
Formattare uno o più dischi USB dopo aver creato una singola partizione:
mkfs.ext4 -T largefile -L "usbchanger1" -m 0 /dev/sdd1
Tutti i dischi che appartengono a questo stesso autochanger virtuale avranno la stessa label.
Il punto di montaggio è /mnt/usbchanger1/magazine
, il filesystem viene montato automaticamente appena si tenta di accederlo, ad esempio per impostare i permessi (va fatto per ogni disco):
chown -R bacula.disk /mnt/usbchanger1/magazine chmod 0770 /mnt/usbchanger1/magazine
Operazione di etichettatura dei nastri (volumi) da bconsole
. Nel primo disco i volumi avranno nome m01sXXX
(magazino 1), nel secondo m02sXXX
(magazino 2), ecc.
label barcodes The defined Storage resources are: ... 3: usbchanger1 Select Storage resource (1-3): 3 ... The following Volumes will be labeled: Slot Volume ============== 1 m01s001 2 m01s002 ... Do you want to label these Volumes? (yes|no): yes Defined Pools: ... 3: Scratch Select the Pool (1-5): 3
Vengono automaticamente etichettati 20 volumi (nastri virtuali), in accordo al parametro magslots
dichiarato in vchanger-usbchanger1.conf
.
In pratica vengono creati 20 file nella directory /mnt/usbchanger1/magazine/
, ogni file ha inizialmente dimensione di 193 byte e il nome è costituito da un prefisso che indica il magazzino (viene generato automaticamente per ogni disco inizializzato: m01, m02, …) e un suffisso che indica il numero dello slot (virtuale) in cui il nastro (virtuale) si trova; esempio: m01s001, m02s002, ecc.
Quando il disco USB non è in uso risulta non montato, ma appena si fa accesso al suo contenuto viene montato automaticamente:
mount | grep usbchanger # Not mounted! ls -l /mnt/usbchanger1/magazine # Device is now mounted: mount | grep usbchanger /dev/sdd1 on /mnt/usbchanger1/magazine type ext4 (rw)
Manipolazione dei magazzini
Attenzione agli errori che si possono causare con il load/unload dei nastri (virtuali) dal magazzino (hard disk USB) nel drive (virtuale).
Prima di scollegare il disco USB accertarsi che il nastro virtuale sia tolto dal drive virtuale:
status storage=usbchanger1 ... Device "usb-changer-1-drive-0" (/var/lib/bacula/usbchanger1/drive0) is not open. Slot 10 is loaded in drive 0. unmount storage=usbchanger1 3307 Issuing autochanger "unload slot 10, drive 0" command. 3901 Device "usb-changer-1-drive-0" (/var/lib/bacula/usbchanger1/drive0) is already unmounted.
Da bconsole
conviene verificare quale nastro è caricato nel drive ed eventualmente toglierlo per rimetterlo nel suo slot prima di sostituire il magazzino (disco USB).
Alcuni file mantengono le informazioni di stato e possono essere consultati direttamente:
/mnt/usbchanger1/magazine/index
lndice del magazzino (1, 2, 3, …)/var/lib/bacula/usbchanger1/drive0
link simbolico al volume montato (es./mnt/usbchanger1/magazine/m03s002
)/var/lib/bacula/usbchanger1/loaded0
numero dello slot da cui è stato montato il nastro (1, 2, …)/var/lib/bacula/usbchanger1/nextmag
numero dell'ultimo magazzino inizializzato (1, 2, 3, …)
Utilizzare manualmente i volumi dell'autochanger
Backup una tantum su supporto rimuovibile (hard disk USB):
Sul disco esterno sono stati creati dei volumi che simulano gli slot di un magazino con autochanger, i volumi sono stati assegnati al pool Scratch ma verranno spostati nel pool02 quando vengono usati.
- Collegare il disco USB dove sono stati creati preventivamente i volumi
m01s00X
(magazine 01, slot 00X) e assegnati al pool Scratch. - Avviare la console Bat
- Cliccare su Jobs
- Fare doppio click sul job desiderato per avviarlo manualmente.
- Indicare il pool02 come pool destinazione e usbchanger1 come storage.
- Ripetere per tutti gli altri job.
- Al termine verificare che il device
/dev/sdd1
non sia montato in/mnt/usbchanger1/magazine
, prima di spengere e rimuovere l'hard disk.
Gestione dell'autochanger virtuale
Con bconsole
Vedere lo status dello storage (running job, job terminati, ecc.):
status storage=usbchanger1
Vedere l'elenco dei nastri, la colonna Slot
indica in quale posizione si trova il nastro all'interno della tape library, la colonna InChanger
indica che il volume è disponibile nel magazino caricato nell'auto changer.
list media pools
Aggiustare la posizione (slot) di un nastro
update volume=m01s009 slot=9
Rilegge il contenuto degli slot tramite i codici a barre:
update slots
Con vchanger, equivalente di mtx-changer
Elenco degli slot e relativi nastri:
/usr/local/sbin/vchanger /etc/bacula/vchanger-usbchanger1.conf list
Numero di slot disponibili:
/usr/local/sbin/vchanger /etc/bacula/vchanger-usbchanger1.conf slots
Per vedere che nastro è caricato nel drive0 si può usare il comando vchanger
(sintassi compatibile con il comando mtx-changer
):
# Syntax compatible with mtx-changer command: /usr/local/sbin/vchanger /etc/bacula/vchanger-usbchanger1.conf loaded 0 /var/lib/bacula/usbchanger1/drive0 0
Oppure si ispeziona i file di controllo mantenuti dallo script vchanger
# Inspecting virtual changer internal files: ls -l /var/lib/bacula/usbchanger1/ lrwxrwxrwx 1 bacula tape 33 8 gen 11.04 drive0 -> /mnt/usbchanger1/magazine/m01s005 -rw-rw---- 1 bacula bacula 2 8 gen 11.04 loaded0 -rw-rw---- 1 bacula bacula 2 27 nov 12.31 nextmag
cat /var/lib/bacula/usbchanger1/loaded0 5
I parametri passati sono (con il comando loaded
il parametro slot viene ignorato):
ctl | /etc/bacula/vchanger-usbchanger1.conf | Device di controllo (/dev/sgX nel caso di una tape library SCSI). |
---|---|---|
cmd | loaded | Comando da eseguire. |
slot | 0 | Lo slot. |
device | /var/lib/bacula/usbchanger1/drive0 | Device (/dev/stX nel caso di un nastro SCSI). |
drive | 0 | Il drive, nel caso in cui la library abbia più di un lettore. |
Restore
Restore di un singolo file con Bat
Su Jobs Run evidenziare il job da cui si vuole recuperare il file, click destro, Restore From Time oppure Restore From Job e indicare la data desiderata. Viene costruito l'albero dei file.
Potrebbe scattare l'errore:
Invalid command ".messages". Enter "done" to exit.
In questo caso provare:
- In Settings, Preferences disabilitare Check Messages, oppure aumentare il Message check interval (vedere questo suggerimento, ma pare non sufficiente).
- Prima di eseguire il restore: lanciare il comando “messages” dentro Console, Command (vedere questo messaggio.)
Bat presenta l'albero di tutti i file trovati, selezionare quelli desiderati.
Il restore verrà effettuato sull'host che conteneva il file originale (restoreclient, ossia il To client di Bat), nella posizione specificata da Where del job Type = Restore
.
Restore di un singolo file con Bconsole
*restore 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: Select full restore to a specified Job date 13: Cancel Select item: (1-13): 6 Enter date as YYYY-MM-DD HH:MM:SS :2013-04-22 01:01:01 Defined Clients: 1: ... ... 7: dns-fd ... Select the Client (1-14): 7 Automatically selected FileSet: unix_rootfs +-------+-------+----------+-------------+---------------------+------------+ | JobId | Level | JobFiles | JobBytes | StartTime | VolumeName | +-------+-------+----------+-------------+---------------------+------------+ | 2,025 | F | 46,055 | 640,939,274 | 2013-04-07 22:15:16 | p01v0019 | | 2,151 | D | 361 | 275,563,729 | 2013-04-21 21:18:27 | p01v0097 | +-------+-------+----------+-------------+---------------------+------------+ You have selected the following JobIds: 2025,2151 ... You are now entering file selection mode where you add (mark) and remove (unmark) files to be restored. No files are initially added, unless you used the "all" keyword on the command line. Enter "done" to leave this mode. ... $ cd /var/cache/bind $ ls ... $ mark myfile.it $ done
Il restore verrà effettuato sull'host che conteneva il file originale (restoreclient, ossia il To client di Bat), nella posizione specificata da Where del job Type = Restore
, se la directory non esiste, viene creata.