Progetto

Generale

Profilo

BaculaBackup » Cronologia » Versione 23

Amministratore Truelite, 09-07-2010 19:31

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 22 Amministratore Truelite
a questi si aggiuinge poi la console di comando. 
20
21
== Installazione e configurazione ==
22
23 23 Amministratore Truelite
Tratteremo dell'installazione e della configurazione di base con Debian Lenny. Una delle caratteristiche di [http://www.bacula.org/ Bacula] è quella di salvare su un database il suo stato, mantenendo quello che viene chiamato dal programma stesso il ''catalogo''. Il programma supporta tre tipi di database, MySQL, PostgreSQL e SQLite. Dato che la versione ufficiale di Debian Lenny non aveva abilitato (per questioni di licenza con OpenSSL) il supporto per le connessioni cifrate, useremo la versione ottenuta da backports (la 5.0.2 al momento della ultima revisione di queste note) che usa GnuTLS. 
24 22 Amministratore Truelite
25
Per installare il necessario sul server di backup occorre anzitutto inserire la seguente riga in {{{/etc/apt/sources.list}}}:
26
{{{
27
deb http://www.backports.org/debian lenny-backports main contrib
28
}}}
29
e poi installare la versione per il database scelto con:
30
{{{
31 23 Amministratore Truelite
apt-get install bacula-director-sqlite3 bacula-sd bacula-fd
32 22 Amministratore Truelite
}}}
33
34
35
36
== Configurazione con SSL ==
37
38
Con la versione 1.38 (presente di default su Debian Etch), Bacula ha il supporto nativo per l'uso di SSL per il trasferimento dei dati, che però è stato disabilitato con Lenny per questioni di conflitto di licenza. 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).
39
40
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}}}:
41
42
{{{
43
Director {                            # define myself
44
  Name = backup1-dir
45
  DIRport = 9101                # where we listen for UA connections
46
  QueryFile = "/etc/bacula/scripts/query.sql"
47
  WorkingDirectory = "/var/lib/bacula"
48
  PidDirectory = "/var/run/bacula"
49
  Maximum Concurrent Jobs = 1
50 1 Amministratore Truelite
  Password = "xxx"         # Console password (lunga e complicata)
51
  Messages = Daemon
52 22 Amministratore Truelite
  TLS Enable = yes
53 1 Amministratore Truelite
  TLS Require = yes
54 23 Amministratore Truelite
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
55
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
56
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
57 1 Amministratore Truelite
  TLS Verify Peer = yes
58 23 Amministratore Truelite
  TLS DH File = /etc/bacula/dh1024.pem
59 1 Amministratore Truelite
}
60
}}}
61 23 Amministratore Truelite
62
in questo caso le varie direttive servono a dichiarare chiave e certificato SSL usato dal ''Director'', ed indicare la CA con cui vengono verificati le connessioni dai client verso il ''Director''. Devono poi essere configurate le modalità di accesso SSL client del  ''Director'' verso gli altri servizi indicando con quali certificato e chiave ci si vuole collegare ad essi (nel caso useremo sempre gli stessi). In particolare per le varie voci rispetto alla configurazione installata di default si dovranno inserire delle configurazioni del tipo:
63
64
{{{
65
Client {
66
...
67
  TLS Enable = yes
68
  TLS Require = yes
69
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
70
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
71
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
72
}
73
...
74
...
75
Storage {
76
...
77
  TLS Enable = yes
78
  TLS Require = yes
79
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
80
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
81
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
82
}
83
}}}
84
per ciascuna istanza di un ''File Daemon'' ({{{Client}}}) o di uno ''Storage Daemon'' ({{{Storage}}}).
85
86
Una volta configurato il ''Director'' occorrerrà fare altrettanto per gli altri servizi, e sempre, qualora questo sia previsto (la cosa vale per il ''File Daemon'') per le due direzioni, quella in cui il singolo servizio può essere contattato e quella in cui il servizio contatta un altro servizio.  Si avranno pertanto in  {{{bacula-sd.conf}}}configurazioni del tipo:
87
{{{
88
Storage {
89
...
90
  TLS Enable = yes
91
  TLS Require = yes
92
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
93
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
94
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
95
}
96
}}}
97
per definire il certificato usato per le connessioni allo ''Storage Daemon'', mentre per le connessioni effettuate verso l'esterno (in questo caso solo il ''Director'' per rispondere ad interrogazioni dalla console) si dovrà mettere qualcosa del tipo:
98
{{{
99
Director {
100
...
101
  TLS Enable = yes
102
  TLS Require = yes
103
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
104
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
105
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
106
  TLS Verify Peer = yes
107
  TLS Allowed CN = "bacula.fi.trl"
108
}
109
}}}
110
dove si richiede anche la verifica del certificato e che questo abbia uno specifico Common Name. La stessa configurazione si ritroverà sostanzialmente identica anche in {{{bacula-fd.conf}}} (con ({{{FileDaemon}}}) al posto di ({{{Storage}}}).
111
112 22 Amministratore Truelite
113
114 11 Amministratore Truelite
== Uso dell'autochanger ==
115 1 Amministratore Truelite
116 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}}}.
117 1 Amministratore Truelite
118 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.
119 1 Amministratore Truelite
120 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:
121 1 Amministratore Truelite
{{{
122
Device {
123
  Name = DDS-4                        #
124
  Media Type = DDS-4
125
  Archive Device = /dev/nst0
126
  AutomaticMount = yes;               # when device opened, read it
127
  AlwaysOpen = yes;
128
  RemovableMedia = yes;
129
  RandomAccess = no;
130
  Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
131
  Changer Device = /dev/sg1
132
  AutoChanger = yes
133
  Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
134
}
135
}}}
136 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:
137 10 Amministratore Truelite
{{{
138
Storage {
139
  Name = File
140
  Address = bacula.truelite.it   # N.B. Use a fully qualified name here
141
  SDPort = 9103
142
  Password = "xxxxxxx"
143
  Device = DDS-4
144
  Media Type = DDS-4
145
  Autochanger = yes
146
}
147
}}}
148 1 Amministratore Truelite
149 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:
150 1 Amministratore Truelite
{{{
151
*label slot=5
152
Using default Catalog name=MyCatalog DB=bacula
153
Automatically selected Storage: File
154
Enter new Volume name: Volume005
155
Automatically selected Pool: Default
156 10 Amministratore Truelite
Connecting to Storage daemon File at bacula.truelite.it:9103 ...
157 1 Amministratore Truelite
Sending label command for Volume "Volume005" Slot 5 ...
158
3301 Issuing autochanger "loaded drive 0" command.
159
3302 Autochanger "loaded drive 0", result is Slot 4.
160
3303 Issuing autochanger "unload slot 4, drive 0" command.
161
3304 Issuing autochanger "load slot 5, drive 0" command.
162
3305 Autochanger "load slot 5, drive 0", status is OK.
163
block.c:264 Volume data error at 0:0! Wanted ID: "BB02", got "". Buffer discarded.
164
3000 OK label. Volume=Volume005 Device=/dev/nst0
165
Catalog record for Volume "Volume005", Slot 5  successfully created.
166
Requesting to mount DDS-4 ...
167
3001 Device /dev/nst0 is mounted with Volume "Volume005"
168
}}}
169
da ripetere per tutti i nastri disponibili. 
170
171
Una volta inizializzati i vari nastri si può rendere noto al ''Director'' la presenza dei vari nastri con il comando:
172
{{{
173
update slots scan
174
}}}
175 11 Amministratore Truelite
176
177
== Come gestire manualmente i nastri ==
178
179
Per la rimozione dei dati presenti sui nastri si devono seguire i seguenti passi:
180
181 15 Amministratore Truelite
 * rimuovere i dati dal catalogo con {{{purge}}} scegliendo il volume da cancellare.
182
 * inserire il nastro nel dispositivo, se si dispone dell'autochanger si può fare con:
183
{{{
184
/etc/bacula/scripts/mtx-changer /dev/sg1 load N
185
}}}
186
   dove N è il numero dello slot.
187
 * cancellarne il contenuto a mano con {{{btape test}}} o scrivendoci direttamente
188 13 Amministratore Truelite
 * usare {{{label}}} per modificarne l'etichetta
189 11 Amministratore Truelite
190
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, 
191
192
Nel qual caso si potrà ridurre il periodo di ritenzione con il comando:
193
{{{
194
update volume=VolumeXXX VolRetention=ddd
195
}}}
196
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.
197 16 Amministratore Truelite
198
199
== Cosa fare quando si esaurisce lo spazio disponibile ==
200
201
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. 
202
203
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:
204 17 Amministratore Truelite
{{{
205
*list volumes
206
Using default Catalog name=MyCatalog DB=bacula
207
Pool: Default
208
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
209
| MediaId | VolumeName | VolStatus | VolBytes    | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten         |
210
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
211
| 1       | Volume0013 | Full      | 13156318147 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 02:53:16 |
212
| 2       | Volume0014 | Full      | 15260956061 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-15 01:12:48 |
213
| 3       | Volume0015 | Full      | 10288088510 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-30 02:03:26 |
214
| 4       | Volume0016 | Full      | 28805889791 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 01:26:31 |
215
| 5       | Volume0017 | Full      | 14412428094 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-29 01:27:50 |
216
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
217
}}}
218
dopo di che, considerato che i dati più vecchi si trovano sul Volume0017, se potrà cancellare il contenuto con:
219
{{{
220
* purge volume=Volume0017
221
222 18 Amministratore Truelite
This command is can be DANGEROUS!!!
223 16 Amministratore Truelite
224
It purges (deletes) all Files from a Job,
225 19 Amministratore Truelite
JobId, Client or Volume; or it purges (deletes)
226
all Jobs from a Client or Volume without regard
227 1 Amministratore Truelite
for retention periods. Normally you should use the
228 20 Amministratore Truelite
PRUNE command, which respects retention periods.
229
230 21 Amministratore Truelite
}}}
231 1 Amministratore Truelite
(il comando impiegherà un certo tempo per eseguire l'operazione), a questo punto si potrà verificare che il volume è diventato disponibile con:
232 21 Amministratore Truelite
{{{
233
*list volumes
234
Using default Catalog name=MyCatalog DB=bacula
235
Pool: Default
236
237
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
238
| MediaId | VolumeName | VolStatus | VolBytes    | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten         |
239
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
240
| 1       | Volume0013 | Full      | 13156318147 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 02:53:16 |
241
| 2       | Volume0014 | Full      | 15260956061 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-15 01:12:48 |
242
| 3       | Volume0015 | Full      | 10288088510 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-30 02:03:26 |
243
| 4       | Volume0016 | Full      | 28805889791 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 01:26:31 |
244
| 5       | Volume0017 | Purged    | 968063348   | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-21 11:59:28 |
245
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
246
}}}
247 1 Amministratore Truelite
248 21 Amministratore Truelite
249 22 Amministratore Truelite
== Configurazione Webacula ==
250 21 Amministratore Truelite
251 22 Amministratore Truelite
[http://webacula.sourceforge.net/ Webacula] è una interfaccia di gestione via Web di Bacula, basata su PHP e Zendframework, pertanto per installarla si sono preventivamente installati i seguenti pacchetti con:
252 21 Amministratore Truelite
{{{
253 22 Amministratore Truelite
apt-get install zendframework php5-gd
254 1 Amministratore Truelite
}}}