Project

General

Profile

BaculaBackup » History » Version 28

Amministratore Truelite, 07/27/2010 08:48 PM

1 5 Amministratore Truelite
[[TracNav(TOC)]]
2 1 Amministratore Truelite
3 28 Amministratore Truelite
h1. Backup con Bacula
4 1 Amministratore Truelite
5 28 Amministratore Truelite
6
"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.
7
8 1 Amministratore Truelite
L'architettura di bacula è composta da tre componenti principali:
9
10 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.
11
* lo _Storage Daemon_ che va installato sulla macchina su cui è presente il dispositivo di registrazione dei dati (nastro, disco o quant'altro).
12
* 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.
13 14 Amministratore Truelite
14 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:
15
16
||Servizio||File di configurazione||Script di avvio||
17 28 Amministratore Truelite
<pre>
18
<pre>
19
<pre>
20 1 Amministratore Truelite
21
a questi si aggiuinge poi la console di comando. 
22 22 Amministratore Truelite
23
24 28 Amministratore Truelite
h2. Installazione e configurazione
25 1 Amministratore Truelite
26 28 Amministratore Truelite
27
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]]. 
28
29
<pre>
30
<pre>
31 1 Amministratore Truelite
deb http://www.backports.org/debian lenny-backports main contrib
32 28 Amministratore Truelite
</pre>
33 22 Amministratore Truelite
e poi installare la versione per il database scelto con:
34 28 Amministratore Truelite
<pre>
35 22 Amministratore Truelite
apt-get install bacula-director-sqlite3 bacula-sd bacula-fd
36 28 Amministratore Truelite
</pre>
37 23 Amministratore Truelite
38 22 Amministratore Truelite
39
40
41 28 Amministratore Truelite
h2. Configurazione con SSL
42 22 Amministratore Truelite
43 1 Amministratore Truelite
44 28 Amministratore Truelite
<pre>
45
46
<pre>
47
48
<pre>
49 22 Amministratore Truelite
Director {                            # define myself
50
  Name = backup1-dir
51
  DIRport = 9101                # where we listen for UA connections
52 28 Amministratore Truelite
  [[QueryFile]] = "/etc/bacula/scripts/query.sql"
53
  [[WorkingDirectory]] = "/var/lib/bacula"
54
  [[PidDirectory]] = "/var/run/bacula"
55 22 Amministratore Truelite
  Maximum Concurrent Jobs = 1
56 1 Amministratore Truelite
  Password = "xxx"         # Console password (lunga e complicata)
57
  Messages = Daemon
58 23 Amministratore Truelite
  TLS Enable = yes
59 1 Amministratore Truelite
  TLS Require = yes
60 23 Amministratore Truelite
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
61 1 Amministratore Truelite
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
62
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
63
  TLS Verify Peer = yes
64
  TLS DH File = /etc/bacula/dh1024.pem
65
}
66 28 Amministratore Truelite
</pre>
67 23 Amministratore Truelite
68 28 Amministratore Truelite
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:
69 23 Amministratore Truelite
70 28 Amministratore Truelite
<pre>
71 1 Amministratore Truelite
Client {
72
...
73 23 Amministratore Truelite
  TLS Enable = yes
74
  TLS Require = yes
75
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
76
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
77
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
78
}
79
...
80
...
81 1 Amministratore Truelite
Storage {
82
...
83 23 Amministratore Truelite
  TLS Enable = yes
84 1 Amministratore Truelite
  TLS Require = yes
85
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
86
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
87
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
88
}
89 28 Amministratore Truelite
</pre>
90
<pre>
91 1 Amministratore Truelite
92 28 Amministratore Truelite
<pre>
93
<pre>
94 1 Amministratore Truelite
Storage {
95
...
96
  TLS Enable = yes
97 23 Amministratore Truelite
  TLS Require = yes
98
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
99
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
100
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
101
}
102 28 Amministratore Truelite
</pre>
103
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:
104
<pre>
105 1 Amministratore Truelite
Director {
106
...
107 23 Amministratore Truelite
  TLS Enable = yes
108
  TLS Require = yes
109
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
110
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
111
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
112
  TLS Verify Peer = yes
113
  TLS Allowed CN = "bacula.fi.trl"
114
}
115 28 Amministratore Truelite
</pre>
116
<pre>
117 11 Amministratore Truelite
118 1 Amministratore Truelite
119
120 28 Amministratore Truelite
h2. Uso dell'autochanger
121 1 Amministratore Truelite
122
123 28 Amministratore Truelite
<pre>
124
125
<pre>
126
127
<pre>
128
<pre>
129 1 Amministratore Truelite
Device {
130
  Name = DDS-4                        #
131
  Media Type = DDS-4
132
  Archive Device = /dev/nst0
133 28 Amministratore Truelite
  [[AutomaticMount]] = yes;               # when device opened, read it
134
  [[AlwaysOpen]] = yes;
135
  [[RemovableMedia]] = yes;
136
  [[RandomAccess]] = no;
137 1 Amministratore Truelite
  Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
138
  Changer Device = /dev/sg1
139 28 Amministratore Truelite
  [[AutoChanger]] = yes
140
  Alert Command = "sh -c 'tapeinfo -f %c |grep [[TapeAlert]]|cat'"
141 1 Amministratore Truelite
}
142 28 Amministratore Truelite
</pre>
143
<pre>
144
<pre>
145 10 Amministratore Truelite
Storage {
146 1 Amministratore Truelite
  Name = File
147 14 Amministratore Truelite
  Address = bacula.truelite.it   # N.B. Use a fully qualified name here
148 1 Amministratore Truelite
  SDPort = 9103
149
  Password = "xxxxxxx"
150
  Device = DDS-4
151
  Media Type = DDS-4
152
  Autochanger = yes
153
}
154 28 Amministratore Truelite
</pre>
155 1 Amministratore Truelite
156 28 Amministratore Truelite
<pre>
157
<pre>
158 1 Amministratore Truelite
*label slot=5
159
Using default Catalog name=MyCatalog DB=bacula
160
Automatically selected Storage: File
161
Enter new Volume name: Volume005
162
Automatically selected Pool: Default
163
Connecting to Storage daemon File at bacula.truelite.it:9103 ...
164
Sending label command for Volume "Volume005" Slot 5 ...
165
3301 Issuing autochanger "loaded drive 0" command.
166
3302 Autochanger "loaded drive 0", result is Slot 4.
167
3303 Issuing autochanger "unload slot 4, drive 0" command.
168
3304 Issuing autochanger "load slot 5, drive 0" command.
169
3305 Autochanger "load slot 5, drive 0", status is OK.
170
block.c:264 Volume data error at 0:0! Wanted ID: "BB02", got "". Buffer discarded.
171
3000 OK label. Volume=Volume005 Device=/dev/nst0
172 11 Amministratore Truelite
Catalog record for Volume "Volume005", Slot 5  successfully created.
173
Requesting to mount DDS-4 ...
174 15 Amministratore Truelite
3001 Device /dev/nst0 is mounted with Volume "Volume005"
175 28 Amministratore Truelite
</pre>
176 15 Amministratore Truelite
da ripetere per tutti i nastri disponibili. 
177
178 28 Amministratore Truelite
Una volta inizializzati i vari nastri si può rendere noto al _Director_ la presenza dei vari nastri con il comando:
179
<pre>
180 1 Amministratore Truelite
update slots scan
181 28 Amministratore Truelite
</pre>
182 1 Amministratore Truelite
183
184
185 28 Amministratore Truelite
h2. Come gestire manualmente i nastri
186
187
188 13 Amministratore Truelite
Per la rimozione dei dati presenti sui nastri si devono seguire i seguenti passi:
189 11 Amministratore Truelite
190 28 Amministratore Truelite
<pre>
191
* 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 28 Amministratore Truelite
</pre>
195 17 Amministratore Truelite
   dove N è il numero dello slot.
196 28 Amministratore Truelite
<pre>
197
<pre>
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>