BaculaBackup » Cronologia » Versione 26
Amministratore Truelite, 27-07-2010 17:08
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 | 24 | Amministratore Truelite | 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). |
39 | 22 | Amministratore Truelite | |
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 | 11 | Amministratore Truelite | == Uso dell'autochanger == |
114 | 1 | Amministratore Truelite | |
115 | 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}}}. |
116 | 1 | Amministratore Truelite | |
117 | 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. |
118 | 1 | Amministratore Truelite | |
119 | 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: |
120 | 1 | Amministratore Truelite | {{{ |
121 | Device { |
||
122 | Name = DDS-4 # |
||
123 | Media Type = DDS-4 |
||
124 | Archive Device = /dev/nst0 |
||
125 | AutomaticMount = yes; # when device opened, read it |
||
126 | AlwaysOpen = yes; |
||
127 | RemovableMedia = yes; |
||
128 | RandomAccess = no; |
||
129 | Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d" |
||
130 | Changer Device = /dev/sg1 |
||
131 | AutoChanger = yes |
||
132 | Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" |
||
133 | } |
||
134 | }}} |
||
135 | 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: |
136 | 10 | Amministratore Truelite | {{{ |
137 | Storage { |
||
138 | Name = File |
||
139 | Address = bacula.truelite.it # N.B. Use a fully qualified name here |
||
140 | SDPort = 9103 |
||
141 | Password = "xxxxxxx" |
||
142 | Device = DDS-4 |
||
143 | Media Type = DDS-4 |
||
144 | Autochanger = yes |
||
145 | } |
||
146 | }}} |
||
147 | 1 | Amministratore Truelite | |
148 | 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: |
149 | 1 | Amministratore Truelite | {{{ |
150 | *label slot=5 |
||
151 | Using default Catalog name=MyCatalog DB=bacula |
||
152 | Automatically selected Storage: File |
||
153 | Enter new Volume name: Volume005 |
||
154 | Automatically selected Pool: Default |
||
155 | 10 | Amministratore Truelite | Connecting to Storage daemon File at bacula.truelite.it:9103 ... |
156 | 1 | Amministratore Truelite | Sending label command for Volume "Volume005" Slot 5 ... |
157 | 3301 Issuing autochanger "loaded drive 0" command. |
||
158 | 3302 Autochanger "loaded drive 0", result is Slot 4. |
||
159 | 3303 Issuing autochanger "unload slot 4, drive 0" command. |
||
160 | 3304 Issuing autochanger "load slot 5, drive 0" command. |
||
161 | 3305 Autochanger "load slot 5, drive 0", status is OK. |
||
162 | block.c:264 Volume data error at 0:0! Wanted ID: "BB02", got "". Buffer discarded. |
||
163 | 3000 OK label. Volume=Volume005 Device=/dev/nst0 |
||
164 | Catalog record for Volume "Volume005", Slot 5 successfully created. |
||
165 | Requesting to mount DDS-4 ... |
||
166 | 3001 Device /dev/nst0 is mounted with Volume "Volume005" |
||
167 | }}} |
||
168 | da ripetere per tutti i nastri disponibili. |
||
169 | |||
170 | Una volta inizializzati i vari nastri si può rendere noto al ''Director'' la presenza dei vari nastri con il comando: |
||
171 | {{{ |
||
172 | update slots scan |
||
173 | }}} |
||
174 | 11 | Amministratore Truelite | |
175 | |||
176 | == Come gestire manualmente i nastri == |
||
177 | |||
178 | Per la rimozione dei dati presenti sui nastri si devono seguire i seguenti passi: |
||
179 | |||
180 | 15 | Amministratore Truelite | * rimuovere i dati dal catalogo con {{{purge}}} scegliendo il volume da cancellare. |
181 | * inserire il nastro nel dispositivo, se si dispone dell'autochanger si può fare con: |
||
182 | {{{ |
||
183 | /etc/bacula/scripts/mtx-changer /dev/sg1 load N |
||
184 | }}} |
||
185 | dove N è il numero dello slot. |
||
186 | * cancellarne il contenuto a mano con {{{btape test}}} o scrivendoci direttamente |
||
187 | 13 | Amministratore Truelite | * usare {{{label}}} per modificarne l'etichetta |
188 | 11 | Amministratore Truelite | |
189 | 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, |
||
190 | |||
191 | Nel qual caso si potrà ridurre il periodo di ritenzione con il comando: |
||
192 | {{{ |
||
193 | update volume=VolumeXXX VolRetention=ddd |
||
194 | }}} |
||
195 | 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. |
||
196 | 16 | Amministratore Truelite | |
197 | |||
198 | == Cosa fare quando si esaurisce lo spazio disponibile == |
||
199 | |||
200 | 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. |
||
201 | |||
202 | 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: |
||
203 | 17 | Amministratore Truelite | {{{ |
204 | *list volumes |
||
205 | Using default Catalog name=MyCatalog DB=bacula |
||
206 | Pool: Default |
||
207 | +---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+ |
||
208 | | MediaId | VolumeName | VolStatus | VolBytes | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten | |
||
209 | +---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+ |
||
210 | | 1 | Volume0013 | Full | 13156318147 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-08-06 02:53:16 | |
||
211 | | 2 | Volume0014 | Full | 15260956061 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-08-15 01:12:48 | |
||
212 | | 3 | Volume0015 | Full | 10288088510 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-07-30 02:03:26 | |
||
213 | | 4 | Volume0016 | Full | 28805889791 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-08-06 01:26:31 | |
||
214 | | 5 | Volume0017 | Full | 14412428094 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-07-29 01:27:50 | |
||
215 | +---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+ |
||
216 | }}} |
||
217 | dopo di che, considerato che i dati più vecchi si trovano sul Volume0017, se potrà cancellare il contenuto con: |
||
218 | {{{ |
||
219 | * purge volume=Volume0017 |
||
220 | |||
221 | 18 | Amministratore Truelite | This command is can be DANGEROUS!!! |
222 | 16 | Amministratore Truelite | |
223 | It purges (deletes) all Files from a Job, |
||
224 | 19 | Amministratore Truelite | JobId, Client or Volume; or it purges (deletes) |
225 | all Jobs from a Client or Volume without regard |
||
226 | 1 | Amministratore Truelite | for retention periods. Normally you should use the |
227 | 20 | Amministratore Truelite | PRUNE command, which respects retention periods. |
228 | |||
229 | 21 | Amministratore Truelite | }}} |
230 | 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: |
231 | 21 | Amministratore Truelite | {{{ |
232 | *list volumes |
||
233 | Using default Catalog name=MyCatalog DB=bacula |
||
234 | Pool: Default |
||
235 | |||
236 | +---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+ |
||
237 | | MediaId | VolumeName | VolStatus | VolBytes | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten | |
||
238 | +---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+ |
||
239 | | 1 | Volume0013 | Full | 13156318147 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-08-06 02:53:16 | |
||
240 | | 2 | Volume0014 | Full | 15260956061 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-08-15 01:12:48 | |
||
241 | | 3 | Volume0015 | Full | 10288088510 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-07-30 02:03:26 | |
||
242 | | 4 | Volume0016 | Full | 28805889791 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-08-06 01:26:31 | |
||
243 | | 5 | Volume0017 | Purged | 968063348 | 0 | 1814400 | 1 | 0 | 0 | File | 2006-08-21 11:59:28 | |
||
244 | +---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+ |
||
245 | }}} |
||
246 | 1 | Amministratore Truelite | |
247 | 21 | Amministratore Truelite | |
248 | 22 | Amministratore Truelite | == Configurazione Webacula == |
249 | 21 | Amministratore Truelite | |
250 | 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: |
251 | 21 | Amministratore Truelite | {{{ |
252 | 1 | Amministratore Truelite | apt-get install zendframework php5-gd |
253 | }}} |
||
254 | 24 | Amministratore Truelite | |
255 | 26 | Amministratore Truelite | Occorre poi scaricare la versione corrente ed installarla in posizione opportuna, nel caso lo faremo sotto una directory assegnata alla variabile {{{INSTDIR}}} (che potrà essere {{{/var/www/webacula}}} o {{{/usr/local/share/webacula}}} o quel che si vuole) e i seguenti pathname saranno considerati relativi a tale directory. Le istruzioni per Debian indicate sotto {{{docs}}} sono alquanto imprecise, prevedono operazioni non necessarie e indicano path sbagliati, pertanto e non le seguiremo direttamente. |
256 | 25 | Amministratore Truelite | |
257 | 1 | Amministratore Truelite | La configurazione del programma, che indica quale tipo di database usare e le varie directory per i file temporanei, si trova nel file {{{application/config.ini}}}. In detto file vanno specificate le modalità di accesso al database, sia quello di bacula che quello proprio dell'interfaccia web. Il primo dovrà essere ripreso dalla configurazione di bacula stesso, il secondo dovrà essere creato ad hoc. Inoltre nella stessa configurazione si dovrà specificare come accedere al programma {{{bconsole}}}, ed impostare configurazioni minori, come la timezone o la lingua e la directory per i file temporanei (che deve essere scrivibile da {{{www-data}}}). |
258 | 26 | Amministratore Truelite | |
259 | {{{ |
||
260 | mkdir -p $INSTDIR/tmp |
||
261 | chown -R www-data /var/www/webacula |
||
262 | usermod -aG bacula www-data |
||
263 | }}} |
||
264 | |||
265 | Per la configurazione di Apache, si sposti anzitutto il Virtual Host di default in {{{/var/www/apache-default/}}} per evitare accessi indiretti agli altri file di Webacula, poi si crei un Virtual Host dedicato in {{{/etc/apache2/sites-available/webacula}}}, dato che per il funzionamento è necessario {{{mod_rewrite}}} lo si dovrà abilitare con: |
||
266 | {{{ |
||
267 | a2enmod rewrite |
||
268 | }}} |
||
269 | la configurazione necessaria si può ottenere dal file {{{install/webacula.conf}}} fornito con Webacula, senza necessità di definire un file {{{ .htaccess}}}, in cui si abbia l'accortezza di sostituire la directory di installazione, in sostanza si potrà ottenere una configurazione comune con: |
||
270 | {{{ |
||
271 | sed -e "s|/usr/share/webacula|$INSTDIR|g" install/webacula.conf > /etc/apache2/sites-available/webacula-common |
||
272 | }}} |
||
273 | che poi dovrà essere incluso nella definizione di un opportuno Virtual Host. |