Project

General

Profile

BaculaBackup » History » Version 31

Simone Piccardi, 12/22/2010 03:53 PM

1 28 Amministratore Truelite
h1. Backup con Bacula
2 1 Amministratore Truelite
3 28 Amministratore Truelite
4
"Bacula":http://www.bacula.org/ è un potente sistema che consente la centralizzazione dei backup di varie macchine all'interno di una rete, e la gestione automatica degli stessi.
5
6 1 Amministratore Truelite
L'architettura di bacula è composta da tre componenti principali:
7
8 28 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
* 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 14 Amministratore Truelite
12 1 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
14 31 Simone Piccardi
|_.Servizio|_.File di configurazione|_.Script di avvio|
15 29 Simone Piccardi
|File Daemon|@bacula-fd.conf@|bacula-fd|
16 31 Simone Piccardi
|Storage Daemon|@bacula-sd.conf@|bacula-sd|
17 30 Simone Piccardi
|Director|@bacula-dir.conf@|bacula-director|
18 1 Amministratore Truelite
19 22 Amministratore Truelite
a questi si aggiuinge poi la console di comando, @bconsole@. 
20 1 Amministratore Truelite
21 22 Amministratore Truelite
h2. Installazione e configurazione
22 28 Amministratore Truelite
23 31 Simone Piccardi
Tratteremo dell'installazione e della configurazione di base con Debian Lenny. Una delle caratteristiche di "Bacula":http://www.bacula.org/ è 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 28 Amministratore Truelite
25 31 Simone Piccardi
Per installare il necessario sul server di backup occorre anzitutto inserire la seguente riga in @/etc/apt/sources.list@: 
26 28 Amministratore Truelite
27 1 Amministratore Truelite
<pre>
28 28 Amministratore Truelite
deb http://www.backports.org/debian lenny-backports main contrib
29
</pre>
30 31 Simone Piccardi
31 1 Amministratore Truelite
e poi installare la versione per il database scelto con:
32 31 Simone Piccardi
33 1 Amministratore Truelite
<pre>
34 23 Amministratore Truelite
apt-get install bacula-director-sqlite3 bacula-sd bacula-fd
35 22 Amministratore Truelite
</pre>
36 1 Amministratore Truelite
37
h2. Configurazione con SSL
38
39 31 Simone Piccardi
Con la versione 1.38 _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 dai server esterni o dalla DMZ (si presuppone ovviamente che il server di backup sia nella rete interna).
40 28 Amministratore Truelite
41 31 Simone Piccardi
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@:
42 28 Amministratore Truelite
43
<pre>
44 22 Amministratore Truelite
Director {                            # define myself
45
  Name = backup1-dir
46
  DIRport = 9101                # where we listen for UA connections
47 31 Simone Piccardi
  QueryFile]] = "/etc/bacula/scripts/query.sql"
48
  WorkingDirectory = "/var/lib/bacula"
49
  PidDirectory = "/var/run/bacula"
50 28 Amministratore Truelite
  Maximum Concurrent Jobs = 1
51 22 Amministratore Truelite
  Password = "xxx"         # Console password (lunga e complicata)
52 1 Amministratore Truelite
  Messages = Daemon
53 23 Amministratore Truelite
  TLS Enable = yes
54 1 Amministratore Truelite
  TLS Require = yes
55 23 Amministratore Truelite
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
56 1 Amministratore Truelite
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
57
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
58
  TLS Verify Peer = yes
59
  TLS DH File = /etc/bacula/dh1024.pem
60
}
61 28 Amministratore Truelite
</pre>
62 23 Amministratore Truelite
63 31 Simone Piccardi
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:
64 23 Amministratore Truelite
65 28 Amministratore Truelite
<pre>
66 1 Amministratore Truelite
Client {
67
...
68 23 Amministratore Truelite
  TLS Enable = yes
69
  TLS Require = yes
70
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
71 1 Amministratore Truelite
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
72
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
73
}
74 23 Amministratore Truelite
...
75
...
76
Storage {
77
...
78 1 Amministratore Truelite
  TLS Enable = yes
79
  TLS Require = yes
80 23 Amministratore Truelite
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
81 1 Amministratore Truelite
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
82
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
83
}
84
</pre>
85
86 31 Simone Piccardi
per ciascuna istanza di un _File Daemon_ (@Client@) o di uno _Storage Daemon_ (@Storage@).
87
88
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: 
89
90 1 Amministratore Truelite
<pre>
91 28 Amministratore Truelite
Storage {
92
...
93 1 Amministratore Truelite
  TLS Enable = yes
94
  TLS Require = yes
95
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
96 23 Amministratore Truelite
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
97
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
98 1 Amministratore Truelite
}
99 23 Amministratore Truelite
</pre>
100 31 Simone Piccardi
101 1 Amministratore Truelite
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:
102 31 Simone Piccardi
103 1 Amministratore Truelite
<pre>
104
Director {
105 23 Amministratore Truelite
...
106
  TLS Enable = yes
107
  TLS Require = yes
108
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
109
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
110
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
111
  TLS Verify Peer = yes
112
  TLS Allowed CN = "bacula.fi.trl"
113 1 Amministratore Truelite
}
114
</pre>
115
116 31 Simone Piccardi
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@). 
117 11 Amministratore Truelite
118 1 Amministratore Truelite
h2. Uso dell'autochanger
119
120 31 Simone Piccardi
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@.
121 1 Amministratore Truelite
122 31 Simone Piccardi
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.
123 28 Amministratore Truelite
124 31 Simone Piccardi
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: 
125 28 Amministratore Truelite
126
<pre>
127 1 Amministratore Truelite
Device {
128
  Name = DDS-4                        #
129 28 Amministratore Truelite
  Media Type = DDS-4
130 1 Amministratore Truelite
  Archive Device = /dev/nst0
131 31 Simone Piccardi
  AutomaticMount = yes;               # when device opened, read it
132
  AlwaysOpen = yes;
133
  RemovableMedia = yes;
134
  RandomAccess = no;
135 28 Amministratore Truelite
  Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
136
  Changer Device = /dev/sg1
137 31 Simone Piccardi
  AutoChanger = yes
138
  Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
139 1 Amministratore Truelite
}
140 28 Amministratore Truelite
</pre>
141 31 Simone Piccardi
142
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: 
143
144 28 Amministratore Truelite
<pre>
145
Storage {
146 10 Amministratore Truelite
  Name = File
147 1 Amministratore Truelite
  Address = bacula.truelite.it   # N.B. Use a fully qualified name here
148
  SDPort = 9103
149 14 Amministratore Truelite
  Password = "xxxxxxx"
150 1 Amministratore Truelite
  Device = DDS-4
151
  Media Type = DDS-4
152
  Autochanger = yes
153
}
154 28 Amministratore Truelite
</pre>
155
156 31 Simone Piccardi
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: 
157
158 1 Amministratore Truelite
<pre>
159
*label slot=5
160
Using default Catalog name=MyCatalog DB=bacula
161
Automatically selected Storage: File
162
Enter new Volume name: Volume005
163
Automatically selected Pool: Default
164
Connecting to Storage daemon File at bacula.truelite.it:9103 ...
165
Sending label command for Volume "Volume005" Slot 5 ...
166
3301 Issuing autochanger "loaded drive 0" command.
167
3302 Autochanger "loaded drive 0", result is Slot 4.
168
3303 Issuing autochanger "unload slot 4, drive 0" command.
169
3304 Issuing autochanger "load slot 5, drive 0" command.
170
3305 Autochanger "load slot 5, drive 0", status is OK.
171
block.c:264 Volume data error at 0:0! Wanted ID: "BB02", got "". Buffer discarded.
172 11 Amministratore Truelite
3000 OK label. Volume=Volume005 Device=/dev/nst0
173
Catalog record for Volume "Volume005", Slot 5  successfully created.
174 15 Amministratore Truelite
Requesting to mount DDS-4 ...
175 28 Amministratore Truelite
3001 Device /dev/nst0 is mounted with Volume "Volume005"
176 15 Amministratore Truelite
</pre>
177 31 Simone Piccardi
178 28 Amministratore Truelite
da ripetere per tutti i nastri disponibili. 
179
180 1 Amministratore Truelite
Una volta inizializzati i vari nastri si può rendere noto al _Director_ la presenza dei vari nastri con il comando:
181 31 Simone Piccardi
182 1 Amministratore Truelite
<pre>
183
update slots scan
184
</pre>
185 28 Amministratore Truelite
186
h2. Come gestire manualmente i nastri
187
188 13 Amministratore Truelite
Per la rimozione dei dati presenti sui nastri si devono seguire i seguenti passi:
189 11 Amministratore Truelite
190 31 Simone Piccardi
* rimuovere i dati dal catalogo con @purge@, scegliendo il volume da cancellare,
191 28 Amministratore Truelite
* inserire il nastro nel dispositivo, se si dispone dell'autochanger si può fare con:
192
<pre>
193 16 Amministratore Truelite
/etc/bacula/scripts/mtx-changer /dev/sg1 load N
194 31 Simone Piccardi
</pre> 
195
dove N è il numero dello slot.
196
* cancellarne il contenuto a mano con @btape test@ o scrivendoci direttamente 
197
* usare @label@ per modificarne l'etichetta
198 1 Amministratore Truelite
199 28 Amministratore Truelite
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, 
200 1 Amministratore Truelite
201
Nel qual caso si potrà ridurre il periodo di ritenzione con il comando:
202 28 Amministratore Truelite
<pre>
203
update volume=VolumeXXX [[VolRetention]]=ddd
204
</pre>
205
<pre>
206 1 Amministratore Truelite
207
208
209 28 Amministratore Truelite
h2. Cosa fare quando si esaurisce lo spazio disponibile
210 17 Amministratore Truelite
211 28 Amministratore Truelite
212
La maggiore forza di "Bacula":http://www.bacula.org/ è 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 "Bacula":http://www.bacula.org/ è quello di bloccare i backup rispettando i termini del periodo di ritenzione dei dati impostato. 
213
214
<pre>
215
<pre>
216 18 Amministratore Truelite
*list volumes
217 16 Amministratore Truelite
Using default Catalog name=MyCatalog DB=bacula
218 1 Amministratore Truelite
Pool: Default
219 16 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
220 28 Amministratore Truelite
| [[MediaId]] | [[VolumeName]] | [[VolStatus]] | [[VolBytes]]    | [[VolFiles]] | [[VolRetention]] | Recycle | Slot | [[InChanger]] | [[MediaType]] | [[LastWritten]]         |
221 19 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
222 1 Amministratore Truelite
| 1       | Volume0013 | Full      | 13156318147 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 02:53:16 |
223 20 Amministratore Truelite
| 2       | Volume0014 | Full      | 15260956061 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-15 01:12:48 |
224
| 3       | Volume0015 | Full      | 10288088510 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-30 02:03:26 |
225 21 Amministratore Truelite
| 4       | Volume0016 | Full      | 28805889791 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 01:26:31 |
226 1 Amministratore Truelite
| 5       | Volume0017 | Full      | 14412428094 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-29 01:27:50 |
227 21 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
228 28 Amministratore Truelite
</pre>
229 21 Amministratore Truelite
dopo di che, considerato che i dati più vecchi si trovano sul Volume0017, se potrà cancellare il contenuto con:
230 28 Amministratore Truelite
<pre>
231 21 Amministratore Truelite
* purge volume=Volume0017
232
233
This command is can be DANGEROUS!!!
234
235
It purges (deletes) all Files from a Job,
236 28 Amministratore Truelite
[[JobId]], Client or Volume; or it purges (deletes)
237 21 Amministratore Truelite
all Jobs from a Client or Volume without regard
238
for retention periods. Normally you should use the
239
PRUNE command, which respects retention periods.
240
241 28 Amministratore Truelite
</pre>
242 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:
243 28 Amministratore Truelite
<pre>
244 22 Amministratore Truelite
*list volumes
245 21 Amministratore Truelite
Using default Catalog name=MyCatalog DB=bacula
246 22 Amministratore Truelite
Pool: Default
247 21 Amministratore Truelite
248 1 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
249 28 Amministratore Truelite
| [[MediaId]] | [[VolumeName]] | [[VolStatus]] | [[VolBytes]]    | [[VolFiles]] | [[VolRetention]] | Recycle | Slot | [[InChanger]] | [[MediaType]] | [[LastWritten]]         |
250 24 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
251 27 Amministratore Truelite
| 1       | Volume0013 | Full      | 13156318147 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 02:53:16 |
252 25 Amministratore Truelite
| 2       | Volume0014 | Full      | 15260956061 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-15 01:12:48 |
253 1 Amministratore Truelite
| 3       | Volume0015 | Full      | 10288088510 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-30 02:03:26 |
254 27 Amministratore Truelite
| 4       | Volume0016 | Full      | 28805889791 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 01:26:31 |
255
| 5       | Volume0017 | Purged    | 968063348   | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-21 11:59:28 |
256
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
257 28 Amministratore Truelite
</pre>
258 1 Amministratore Truelite
259 27 Amministratore Truelite
260
261 28 Amministratore Truelite
h2. Configurazione Webacula
262
263
264
"Webacula":http://webacula.sourceforge.net/ è una interfaccia di gestione via Web di Bacula, basata su PHP e Zendframework, pertanto per installarla si sono preventivamente installati i seguenti pacchetti con:
265
<pre>
266 27 Amministratore Truelite
apt-get install zendframework php5-gd
267 28 Amministratore Truelite
</pre>
268 27 Amministratore Truelite
269 28 Amministratore Truelite
<pre>
270 27 Amministratore Truelite
271 28 Amministratore Truelite
<pre>
272
<pre>
273 26 Amministratore Truelite
[general]
274
db.adapter = PDO_SQLITE 
275
db.config.dbname = /var/lib/bacula/bacula.db
276
277 1 Amministratore Truelite
def.timezone = "Europe/Rome"
278
bacula.sudo = ""
279
bacula.bconsole = "/usr/bin/bconsole"
280
281 27 Amministratore Truelite
[webacula]
282
db.adapter = PDO_SQLITE
283
db.config.dbname = /var/www/webacula/webacula.db
284 28 Amministratore Truelite
</pre>
285 27 Amministratore Truelite
286
287 28 Amministratore Truelite
<pre>
288 27 Amministratore Truelite
chown www-data /var/www/webacula/webacula.db
289
usermod -aG bacula www-data
290
usermod -aG ssl-cert www-data
291 28 Amministratore Truelite
</pre>
292 27 Amministratore Truelite
293 28 Amministratore Truelite
<pre>
294
<pre>
295 27 Amministratore Truelite
a2enmod rewrite
296 28 Amministratore Truelite
</pre>
297
<pre>
298
<pre>
299
# [[RewriteLog]] "/var/log/httpd/rewrite.log"
300
# [[RewriteLogLevel]] 3
301
# [[SetEnv]] APPLICATION_ENV development
302
[[SetEnv]] APPLICATION_ENV production
303 27 Amministratore Truelite
304
Alias /webacula  /var/www/webacula/html
305
<Directory /var/www/webacula/html>
306 28 Amministratore Truelite
   [[RewriteEngine]] On
307 27 Amministratore Truelite
308 28 Amministratore Truelite
   [[RewriteBase]]   /webacula
309
   [[RewriteCond]] %{REQUEST_FILENAME} -s [OR]
310
   [[RewriteCond]] %{REQUEST_FILENAME} -l [OR]
311
   [[RewriteCond]] %{REQUEST_FILENAME} -d
312
   [[RewriteRule]] ^.*$ - [NC,L]
313
   [[RewriteRule]] ^.*$ index.php [NC,L]
314 1 Amministratore Truelite
315
   php_flag magic_quotes_gpc off
316
   php_flag register_globals off
317
318 28 Amministratore Truelite
   Options Indexes [[FollowSymLinks]]
319
   [[AllowOverride]] All
320 1 Amministratore Truelite
   Order deny,allow
321
322
323 28 Amministratore Truelite
#   [[AuthType]] Basic
324
#   [[AuthName]] "Webacula"
325
#   [[AuthUserFile]]       /etc/httpd/conf/webacula.users
326 1 Amministratore Truelite
#   Require valid-user
327
</Directory>
328
329 28 Amministratore Truelite
</pre>