Progetto

Generale

Profilo

BaculaBackup » Cronologia » Versione 21

Amministratore Truelite, 07-02-2008 18:58

1 5 Amministratore Truelite
[[TracNav(TOC)]]
2 1 Amministratore Truelite
= Backup con Bacula =
3
4 2 Amministratore Truelite
[http://www.bacula.org/ Bacula] è un potente sistema che consente la centralizzazione dei backup di varie macchine all'interno di una rete, e la gestione automatica degli stessi.
5 1 Amministratore Truelite
6
L'architettura di bacula è composta da tre componenti principali:
7
8 2 Amministratore Truelite
 * il ''File Daemon'', che va installato sulle macchine di cui si vuole effettuare il backup ed ha il compito di gestire i file di cui deve essere eseguito il backup.
9 14 Amministratore Truelite
 * lo ''Storage Daemon'' che va installato sulla macchina su cui è presente il dispositivo di registrazione dei dati (nastro, disco o quant'altro).
10
 * il ''Director'' che va installato su una macchina qualsiasi (ma in genere si usa quella dove sta il dispositivo di backup) e che è il servizio che controlla tutti gli altri e gestisce i backup.
11 1 Amministratore Truelite
12 14 Amministratore Truelite
Ciascuno di questi tre servizi ha un suo script di avvio ed un suo file di configurazione, come illustrato nella seguente tabella:
13 1 Amministratore Truelite
14
||Servizio||File di configurazione||Script di avvio||
15 3 Amministratore Truelite
||File Daemon||{{{bacula-fd.conf}}}||bacula-fd||
16
||Storage Daemon||{{{bacula-sd.conf}}}||bacula-sd||
17
||Director||{{{bacula-dir.conf}}}||bacula-director||
18 1 Amministratore Truelite
19 11 Amministratore Truelite
== Uso dell'autochanger ==
20 1 Amministratore Truelite
21 11 Amministratore Truelite
Perché sia possibile utilizzare un dispositivo cambianastri (quello che in gergo viene chiamato ''Autochanger''), deve essere disponibile e funzionante lo script {{{/etc/bacula/scripts/mtx-changer}}}.
22 1 Amministratore Truelite
23 14 Amministratore Truelite
Normalmente i dispositivi cambianastri sono pilotati direttamente attraverso l'interfaccia SCSI, utilizzando il dispositivo generico (se avete solo il nastro SCSI questo sarà {{{/dev/sg0}}}, in generale va verificato). Per inviare i comandi viene usato un programma apposito, {{{mtx}}}, cui lo script installato di default si appoggia. Esistono però anche cambianastri pilotati con modalità diverse, nel qual caso occorrerà uno script dedicato, un esempio per un ''IBM Ultrium LTO 3581 L28'', che viene comandato via {{{telnet}}}, è allegato alla pagina.
24 1 Amministratore Truelite
25 11 Amministratore Truelite
Per poter utilizzare il cambianastri si deve anzitutto segnalarne la presenza nella sezione Device del file {{{bacula-sd.conf}}}, ed indicare il file di dispositivo da usare, un possibile esempio è il seguente:
26 1 Amministratore Truelite
{{{
27
Device {
28
  Name = DDS-4                        #
29
  Media Type = DDS-4
30
  Archive Device = /dev/nst0
31
  AutomaticMount = yes;               # when device opened, read it
32
  AlwaysOpen = yes;
33
  RemovableMedia = yes;
34
  RandomAccess = no;
35
  Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
36
  Changer Device = /dev/sg1
37
  AutoChanger = yes
38
  Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
39
}
40
}}}
41 13 Amministratore Truelite
inoltre deve essere reso noto al ''Director'' che lo storage supporta l'autochanger; questo si fa con una analoga riga {{{AutoChanger = yes}}} nella sua configurazione; cioè si dovrà avere dentro {{{bacula-dir.conf}}} qualcosa del tipo:
42 10 Amministratore Truelite
{{{
43
Storage {
44
  Name = File
45
  Address = bacula.truelite.it   # N.B. Use a fully qualified name here
46
  SDPort = 9103
47
  Password = "xxxxxxx"
48
  Device = DDS-4
49
  Media Type = DDS-4
50
  Autochanger = yes
51
}
52
}}}
53 1 Amministratore Truelite
54 14 Amministratore Truelite
Fatto questo diventa possibile usare l'attributo {{{slot}}} nel comando {{{label}}} da console. Con questo diventa possibile etichettare i vari nastri dell'autochanger con una serie di comandi del tipo:
55 1 Amministratore Truelite
{{{
56
*label slot=5
57
Using default Catalog name=MyCatalog DB=bacula
58
Automatically selected Storage: File
59
Enter new Volume name: Volume005
60
Automatically selected Pool: Default
61 10 Amministratore Truelite
Connecting to Storage daemon File at bacula.truelite.it:9103 ...
62 1 Amministratore Truelite
Sending label command for Volume "Volume005" Slot 5 ...
63
3301 Issuing autochanger "loaded drive 0" command.
64
3302 Autochanger "loaded drive 0", result is Slot 4.
65
3303 Issuing autochanger "unload slot 4, drive 0" command.
66
3304 Issuing autochanger "load slot 5, drive 0" command.
67
3305 Autochanger "load slot 5, drive 0", status is OK.
68
block.c:264 Volume data error at 0:0! Wanted ID: "BB02", got "". Buffer discarded.
69
3000 OK label. Volume=Volume005 Device=/dev/nst0
70
Catalog record for Volume "Volume005", Slot 5  successfully created.
71
Requesting to mount DDS-4 ...
72
3001 Device /dev/nst0 is mounted with Volume "Volume005"
73
}}}
74
da ripetere per tutti i nastri disponibili. 
75
76
Una volta inizializzati i vari nastri si può rendere noto al ''Director'' la presenza dei vari nastri con il comando:
77
{{{
78
update slots scan
79
}}}
80 11 Amministratore Truelite
81
82
== Come gestire manualmente i nastri ==
83
84
Per la rimozione dei dati presenti sui nastri si devono seguire i seguenti passi:
85
86 15 Amministratore Truelite
 * rimuovere i dati dal catalogo con {{{purge}}} scegliendo il volume da cancellare.
87
 * inserire il nastro nel dispositivo, se si dispone dell'autochanger si può fare con:
88
{{{
89
/etc/bacula/scripts/mtx-changer /dev/sg1 load N
90
}}}
91
   dove N è il numero dello slot.
92
 * cancellarne il contenuto a mano con {{{btape test}}} o scrivendoci direttamente
93 13 Amministratore Truelite
 * usare {{{label}}} per modificarne l'etichetta
94 11 Amministratore Truelite
95
Se invece si è configurato correttamente il periodo di ritenzione dei dati, sarà ''Bacula'' che provvederà a cercare il primo nastro libero, posto che il periodo non sia eccessivo e lo spazio disponibile esaurito, 
96
97
Nel qual caso si potrà ridurre il periodo di ritenzione con il comando:
98
{{{
99
update volume=VolumeXXX VolRetention=ddd
100
}}}
101
si tenga presente che cambiare il perido di ritenzione direttamente dentro {{{bacula-dir.conf}}} non è sufficiente in quanto questi dati sono registrati all'interno del singolo volume e non cambiano fintanto che non se ne aggiorna il valore.
102 16 Amministratore Truelite
103
104
== Cosa fare quando si esaurisce lo spazio disponibile ==
105
106 20 Amministratore Truelite
La maggiore forza di [http://www.bacula.org/ Bacula] è quella, una volta configurato correttamente, di essere in grado di gestire tutta la procedura di backup in maniera automatica. In genere questo funziona correttamente senza nessun intervento manuale. L'incidente più comune che può capitare è che si esaurisca lo spazio (disco o nastro) disponibile per i backup, nel qual caso il comportamento di [http://www.bacula.org/ Bacula] è quello di bloccare i backup rispettando i termini del periodo di ritenzione dei dati impostato. 
107 16 Amministratore Truelite
108
Perciò se si desidera che i backup proseguano sovrascrivendo i vecchi dati occorrerà liberare lo spazio necessario. Questo dovrà essere fatto andando a rimuovere i dati più vecchi; per questo su può utilizzare il comando {{{purge}}}, ma occorrerà individuare opportunamente cosa rimuovere. Un esempio di utilizzo allora potrebbe essere il seguente; prima si potrà verificare lo stato dei volumi utilizzati con il comando:
109
{{{
110
*list volumes
111
Using default Catalog name=MyCatalog DB=bacula
112
Pool: Default
113
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
114
| MediaId | VolumeName | VolStatus | VolBytes    | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten         |
115
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
116
| 1       | Volume0013 | Full      | 13156318147 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 02:53:16 |
117
| 2       | Volume0014 | Full      | 15260956061 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-15 01:12:48 |
118
| 3       | Volume0015 | Full      | 10288088510 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-30 02:03:26 |
119
| 4       | Volume0016 | Full      | 28805889791 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 01:26:31 |
120 17 Amministratore Truelite
| 5       | Volume0017 | Full      | 14412428094 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-29 01:27:50 |
121
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
122
}}}
123
dopo di che, considerato che i dati più vecchi si trovano sul Volume0017, se potrà cancellare il contenuto con:
124
{{{
125
* purge volume=Volume0017
126
127
This command is can be DANGEROUS!!!
128
129
It purges (deletes) all Files from a Job,
130
JobId, Client or Volume; or it purges (deletes)
131
all Jobs from a Client or Volume without regard
132
for retention periods. Normally you should use the
133
PRUNE command, which respects retention periods.
134
135
}}}
136
(il comando impiegherà un certo tempo per eseguire l'operazione), a questo punto si potrà verificare che il volume è diventato disponibile con:
137
{{{
138
*list volumes
139
Using default Catalog name=MyCatalog DB=bacula
140
Pool: Default
141
142
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
143
| MediaId | VolumeName | VolStatus | VolBytes    | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten         |
144
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
145
| 1       | Volume0013 | Full      | 13156318147 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 02:53:16 |
146
| 2       | Volume0014 | Full      | 15260956061 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-15 01:12:48 |
147
| 3       | Volume0015 | Full      | 10288088510 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-30 02:03:26 |
148
| 4       | Volume0016 | Full      | 28805889791 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 01:26:31 |
149 18 Amministratore Truelite
| 5       | Volume0017 | Purged    | 968063348   | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-21 11:59:28 |
150 16 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
151
}}}
152 19 Amministratore Truelite
153
== Configurazione con SSL ==
154 1 Amministratore Truelite
155 20 Amministratore Truelite
Con la versione 1.38 (presente di default su Debina Etch), Bacula ha il supporto nativo per l'uso di SSL per il trasferimento dei dati. In precedenza era necessario impostare gli opportuni tunnel SSL con {{{stunnel}}}, in questo caso la cosa si semplifica leggermente. In caso di presenza di un firewall occorre comunque ricordare che la struttura di Bacula prevede che il ''File Daemon'' deve poter contattare lo ''Storage Daemon'' ed occorrerà pertanto prevedere gli opportuni ''pin-holes'' per eventuali accessi da server dalla DMZ (si presuppone ovviamente che il server di backup sia nella rete interna).
156
157 21 Amministratore Truelite
Il primo passo è quello di procurarsi i certificati necessari, questi andranno anzitutto installati sul ''Director'' per quanto riguarda tutti i vari servizi: il ''Director'' stesso, che viene contattato dalla console, ed il ''File Daemon'', che viene contattato dai vari ''File Daemon''. Occorre allora anzitutto configurare l'accesso al ''Director'' definendo la relativa voce in {{{bacula-dir.conf}}}:
158
159
{{{
160
Director {                            # define myself
161
  Name = backup1-dir
162
  DIRport = 9101                # where we listen for UA connections
163
  QueryFile = "/etc/bacula/scripts/query.sql"
164
  WorkingDirectory = "/var/lib/bacula"
165
  PidDirectory = "/var/run/bacula"
166
  Maximum Concurrent Jobs = 1
167
  Password = "xxx"         # Console password (lunga e complicata)
168
  Messages = Daemon
169
#  DirAddress = 127.0.0.1
170
  TLS Enable = yes
171
  TLS Require = yes
172
  TLS CA Certificate File = /etc/bacula/cacert.pem
173
  TLS Certificate = /etc/bacula/backup1-cert.pem
174
  TLS Key = /etc/bacula/backup1-key.pem
175
  TLS Verify Peer = yes
176
  TLS Allowed CN = "backup1.privata.ittig.cnr.it"
177
}
178
}}}