]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/en/main/newbsfeatures.tex
Fix #250 about alldrives plugin
[bacula/docs] / docs / manuals / en / main / newbsfeatures.tex
1 \chapter{New Features in Bacula Enterprise}
2 This chapter presents the new features that have been added to the
3 current Enterprise version of Bacula.
4 These features are available only with a Bacula Systems subscription.
5
6 In addition to the features in this chapter, the Enterprise version
7 includes all the Community features described in the Community new Features
8 chapter.
9
10 \section{Bacula Enterprise 7.0}
11
12 \subsection{Data Encryption Cipher Configuration}
13 Bacula Enterprise version 7.0 and later now allows to configure the data
14 encryption cipher and the digest algorithm. The cipher was forced to AES 128,
15 and it is now possible to choose between the following ciphers:
16
17 \begin{itemize}
18 \item AES128 (default)
19 \item AES192
20 \item AES256
21 \item blowfish
22 \end{itemize}
23
24 The digest algorithm was set to SHA1 or SHA256 depending on the local OpenSSL
25 options. We advise you to not modify the PkiDigest default setting. Please,
26 refer to OpenSSL documentation to know about pro and cons on these options.
27
28 \begin{lstlisting}
29   FileDaemon {
30     ...
31     PkiCipher = AES256
32   }
33 \end{lstlisting}
34
35 \subsection{Minor Enhancements}
36
37 \subsubsection*{.api version 2}
38
39 In Bacula Enterprise version 7.0 and later, we introduced a new .api version
40 to help external tools to parse various Bacula outputs.
41
42 The \texttt{api\_opts} option can use the following arguments:
43 \begin{itemize}
44 \item [C] Clear current options
45 \item [tn] Use a specific time format (1 ISO format, 2 Unix Timestamp, 3 default Bacula time format)
46 \item [sn] Use a specific separator between items (new line by default).
47 \item [Sn] Use a specific separator between objects (new line by default).
48 \item [o] Convert all keywords to lowercase and convert all non \textsl{isalpha} characters to \_
49 \end{itemize}
50
51 \begin{lstlisting}
52   .api 2 api_opts=t1s43S35
53   .status dir running
54 ==================================
55 jobid=10
56 job=AJob
57 ...
58 \end{lstlisting}
59
60 \subsubsection*{New Debug Options}
61
62 In Bacula Enterprise version 7.0 and later, we introduced new options to
63 the \texttt{setdebug} command.
64
65 \smallskip{}
66
67 If the \texttt{options} parameter is set, the following arguments can be
68 used to control debug functions.
69
70 \begin{itemize}
71 \item [0] clear debug flags
72 \item [i] Turn off, ignore bwrite() errors on restore on File Daemon
73 \item [d] Turn off decomp of BackupRead() streams on File Daemon
74 \item [t] Turn on timestamp in traces
75 \item [T] Turn off timestamp in traces
76 \item [c] Truncate trace file if trace file is activated
77 \item [l] Turn on recoding events on P() and V()
78 \item [p] Turn on the display of the event ring when doing a bactrace
79 \end{itemize}
80
81 \smallskip{}
82
83 The following command will truncate the trace file and will turn on timestamps
84 in the trace file.
85
86 \begin{lstlisting}
87 * setdebug level=10 trace=1 options=ct fd
88 \end{lstlisting}
89
90 \smallskip{}
91
92 It is now possible to use \textsl{class} of debug messages called \texttt{tags}
93 to control the debug output of Bacula daemons.
94
95 \begin{itemize}
96 \item [all] Display all debug messages
97 \item [bvfs] Display BVFS debug messages
98 \item [sql] Display SQL related debug messages
99 \item [memory] Display memory and poolmem allocation messages
100 \item [scheduler] Display scheduler related debug messages
101 \end{itemize}
102
103 \begin{lstlisting}
104 * setdebug level=10 tags=bvfs,sql,memory
105 * setdebug level=10 tags=!bvfs
106 \end{lstlisting}
107
108 The \texttt{tags} option is composed of a list of tags, tags are separated by
109 ``,'' or ``+'' or ``-'' or ``!''. To disable a specific tag, use ``-'' or ``!''
110 in front of the tag. Note that more tags will come in future versions.
111
112
113 \section{Bacula Enterprise 6.6.0}
114 \subsection{Comm Line Compression}
115 Bacula Enterprise version 6.6.0 and later now includes communication
116 line compression. It is turned on by default, and if the
117 two Bacula components (Dir, FD, SD, bconsole) are both 
118 version 6.6.0 or greater, comm line compression
119 will be enabled, by default. If for some reason, you do not want
120 comm line compression, you may disable it with the
121 following directive:
122
123 \begin{lstlisting}
124 Comm Compression = no
125 \end{lstlisting}
126
127 This directive can appear in the following resources:
128 \begin{lstlisting}
129 bacula-dir.conf: Director resource
130 bacula-fd.conf Client (or FileDaemon) resource
131 bacula-sd.conf: Storage resource
132 bconsole.conf: Console resource
133 bat.conf: Console resource
134 \end{lstlisting}
135
136 \smallskip
137 In many cases, the volume of data transmitted across the
138 communications line can be reduced by a factor of three when 
139 this directive is enabled (default).
140
141 \subsection{Read Only Storage Devices}
142 This version of Bacula permits tdefining a Storage deamon device
143 to be read-only. That is if the {\bf ReadOnly} directive is specified and
144 enabled, the drive can only be used for read operations.
145 The the {\bf ReadOnly} directive can be defined in any bacula-sd.conf
146 Device resource, and is most useful to reserve one or more 
147 drives for restores. An example is:
148
149 \begin{lstlisting}
150 Read Only = yes
151 \end{lstlisting}
152
153 \subsection{Catalog Performance Improvements}
154 There is a new Bacula database format (schema) in this version
155 of Bacula that eliminates the FileName table by placing the
156 Filename into the File record of the File table. 
157 This permits some substantial performance improvements
158 particularly for large (1GB or greater) databases.
159
160 The update\_xxx\_catalog script will automatically update the
161 Bacula database format, but you should realize that for 
162 very large databases (greater than 1GB), it may take some
163 time, and there are several different options for doing the
164 update: 1. Shudown the database and update it. 2. Update the
165 database while production jobs are running.  See the Bacula Systems
166 White Paper ``Migration-to-6.6'' on this subject.
167
168 \smallskip
169 This database format change can provide very significant improvements in
170 the speed of metadata insertion into the database, and in some cases
171 (backup of large email servers) can significantly reduce the size of the
172 database.
173
174 \subsection{Plugin Restore Options}
175 This version of Bacula permits user configuration of Plugins at restore
176 time.  For example, it is now possible to choose the \texttt{datastore}
177 where your VMware image will be restored, or for example to choose
178 \texttt{pg\_restore} options directly.  See specific Plugin whitepaper
179 for more information about new restore options.
180
181 The restore options, if implemented in a plugin, will be 
182 presented to you during initiation of a restore either by
183 command line or if available by a GUI such
184 as BWeb.  For examples of the command line interface and
185 the GUI interface, please see below:
186
187 \begin{lstlisting}
188 Run Restore job
189 JobName:         RestoreFiles
190 Bootstrap:       /tmp/regress/working/my-dir.restore.1.bsr
191 Where:           /tmp/regress/tmp/bacula-restores
192 ...
193 Plugin Options:  *None*
194 OK to run? (yes/mod/no): mod
195 Parameters to modify:
196      1: Level
197 ...
198     13: Plugin Options
199 Select parameter to modify (1-13): 13
200 Automatically selected : vsphere: host=squeeze2
201 Plugin Restore Options
202 datastore:           *None*               
203 restore_host:        *None*               
204 new_hostname:        *None*               
205 Use above plugin configuration? (yes/mod/no): mod
206 You have the following choices:
207      1: datastore (Datastore to use for restore) 
208      2: restore_host (ESX host to use for restore) 
209      3: new_hostname (Restore host to specified name) 
210 Select parameter to modify (1-3): 3
211 Please enter a value for new_hostname: test
212 Plugin Restore Options
213 datastore:           *None*               
214 restore_host:        *None*               
215 new_hostname:        test                 
216 Use above plugin configuration? (yes/mod/no): yes
217
218 \end{lstlisting}
219
220 Or via the BWeb restore interface (see Fig \vref{fig:bms-restore})
221
222 \bsysimageH{vsphere-restore-gui}{Choose datastore, ESXi or hostname at restore time}{fig:bms-restore}
223
224 \subsection{Alldrives Plugin Improvements}
225 The \texttt{alldrives} plugin permits to simplify the FileSet creation of
226 Windows Clients, the plugin will generate automatically a FileSet including all
227 local drives.
228
229 \smallskip{}
230
231 The \texttt{alldrives} plugin now accepts the \texttt{snapshot} option that
232 permits generating snapshots for all local Windows drives but without
233 explicitly adding them to the FileSet.  It can be combined with the
234 \texttt{vss} plugin. For example:
235
236 \begin{lstlisting}
237 FileSet {
238  ...
239   Include {
240     Plugin = "vss:/@MSSQL/"
241     Plugin = "alldrives: snapshot"     # should be placed after vss plugin
242   }
243 }
244 \end{lstlisting}
245
246 \subsection{New Truncate Command}
247 We have added a new truncate command to bconsole, which
248 will truncate a Volume if the Volume is purged and if
249 the Volume is also marked {\bf Action On Purge = Truncate}.
250 This feature was originally added in Bacula version 5.0.1,
251 but the mechanism for actually doing the truncate required
252 the user to enter a command such as:
253
254 \begin{lstlisting}
255 purge volume action=truncate storage=File pool=Default
256 \end{lstlisting}
257
258 The above command is now simplified to be:
259
260 \begin{lstlisting}
261 truncate storage=File pool=Default
262 \end{lstlisting}
263
264 \subsection{New Resume Command}
265 This command does exactly the same thing as a 
266 {\bf restart} command but for some users the
267 name may be more logical since in general the 
268 {\bf restart} command is used to resume running
269 a Job that was incompleted.
270
271 \section{Bacula Enterprise 6.4.x}
272
273 The following features were added during the 6.4.x life cycle.
274
275 \subsection{SAP Plugin}
276
277 The Bacula Enterprise SAP Plugin is designed to implement the official SAP
278 Backint interface to simplify the backup and restore procedure through your
279 traditional SAP database tools. See SAP-Backint whitepaper for more
280 information.
281
282 \subsection{Oracle SBT Plugin}
283
284 By default, the Oracle backup Manager, RMAN, sends all backups to an operating
285 system specific directory on disk. You can also configure RMAN to make backups
286 to media such as tape using SBT module. Bacula will act as Media Manager, and
287 the data will be transfered directly from RMAN to Bacula. See Oracle Plugin
288 whitepaper for more information.
289
290 \subsection{MySQL Plugin}
291
292 The MySQL plugin is designed to simplify the backup and restore of your MySQL
293 server, the backup administrator doesn't need to know about internals of MySQL
294 backup techniques or how to write complex scripts.  The plugin will
295 automatically backup essential information such as configuration or user
296 definitions.  The MySQL plugin supports both dump (with support for Incremental
297 backup) and binary backup techniques.  See MySQL Plugin whitepaper for more
298 information.
299
300 \section{Bacula Enterprise 6.4.0}
301 \subsection{Deduplication Optimized Volumes}
302 This version of Bacula includes a new alternative (or additional)
303 Volume format that optimized the placement of files such
304 that an underlying deduplicating filesystem such as ZFS
305 can optimally deduplicate the backup data that is written
306 by Bacula. These are called Deduplication Optimized Volumes
307 or Aligned Volumes for short. The details of how to use this
308 feature and its considerations are in the Bacula Systems
309 Deduplication Optimized Volumes white paper.
310
311 \subsection{Migration/Copy/VirtualFull Performance Enhancements}
312 The Bacula Storage daemon now permits multiple jobs to simultaneously read
313 the same disk Volume, which gives substantial performance enhancements when
314 running Migration, Copy, or VirtualFull jobs that read disk Volumes.  Our
315 testing shows that when running multiple simultaneous jobs, the jobs can
316 finish up to ten times faster with this version of Bacula.  This is
317 built-in to the Storage daemon, so it happens automatically and
318 transparently.
319
320 \subsection{VirtualFull Backup Consolidation Enhancements}
321 By default Bacula selects jobs automatically for a VirtualFull,
322 however, you may want to create the Virtual backup based on a
323 particular backup (point in time) that exists.
324
325 For example, if you have the following backup Jobs in your catalog:
326 \begin{lstlisting}
327 +-------+---------+-------+----------+----------+-----------+
328 | JobId | Name    | Level | JobFiles | JobBytes | JobStatus |
329 +-------+---------+-------+----------+----------+-----------+
330 | 1     | Vbackup | F     | 1754     | 50118554 | T         |
331 | 2     | Vbackup | I     | 1        | 4        | T         |
332 | 3     | Vbackup | I     | 1        | 4        | T         |
333 | 4     | Vbackup | D     | 2        | 8        | T         |
334 | 5     | Vbackup | I     | 1        | 6        | T         |
335 | 6     | Vbackup | I     | 10       | 60       | T         |
336 | 7     | Vbackup | I     | 11       | 65       | T         |
337 | 8     | Save    | F     | 1758     | 50118564 | T         |
338 +-------+---------+-------+----------+----------+-----------+
339 \end{lstlisting}
340
341 and you want to consolidate only the first 3 jobs and create a
342 virtual backup equivalent to Job 1 + Job 2 + Job 3, you will use
343 \texttt{jobid=3} in the \texttt{run} command, then Bacula will select the
344 previous Full backup, the previous Differential (if any) and all subsequent
345 Incremental jobs.
346
347 \begin{lstlisting}
348 run job=Vbackup jobid=3 level=VirtualFull
349 \end{lstlisting}
350
351 If you want to consolidate a specific job list, you must specify the exact
352 list of jobs to merge in the run command line.  For example, to consolidate
353 the last Differential and all subsequent Incremental, you will use
354 \texttt{jobid=4,5,6,7} or \texttt{jobid=4-7} on the run command line. As one
355 of the Job in the list is a Differential backup, Bacula will set the new job
356 level to Differential. If the list is composed only with Incremental jobs,
357 the new job will have a level set to Incremental.
358
359 \begin{lstlisting}
360 run job=Vbackup jobid=4-7 level=VirtualFull
361 \end{lstlisting}
362
363 When using this feature, Bacula will automatically discard jobs that are
364 not related to the current Job.  For example, specifying
365 \texttt{jobid=7,8}, Bacula will discard JobId 8 because it is not
366 part of the same backup Job.
367
368 We do not recommend it, but really want to consolidate jobs that have
369 different names (so probably different clients, filesets, etc...), you must
370 use \texttt{alljobid=} keyword instead of \texttt{jobid=}.
371
372 \begin{lstlisting}
373 run job=Vbackup alljobid=1-3,6-8 level=VirtualFull
374 \end{lstlisting}
375
376 \subsection{New Prune ``Expired'' Volume Command}
377 In Bacula Enterprise 6.4, it is now possible to prune all volumes
378 (from a pool, or globally) that are ``expired''.  This option can be
379 scheduled after or before the backup of the Catalog and can be
380 combined with the Truncate On Purge option.  The Expired Prune option can
381 be used instead of the \texttt{manual\_prune.pl} script.
382
383 \begin{lstlisting}
384 * prune expired volumes
385
386 * prune expired volumes pool=FullPool
387 \end{lstlisting}
388
389 To schedule this option automatically, it can be added to the BackupCatalog job
390 definition.
391
392 \begin{lstlisting}
393  Job {
394    Name = CatalogBackup
395    ...
396    RunScript {
397      Console = "prune expired volume yes"
398      RunsWhen = Before
399    }
400  }
401 \end{lstlisting}
402
403 \section{Bacula Enterprise 6.2.3}
404
405 \subsection{New Job Edit Codes \%P \%C}
406 In various places such as RunScripts, you have now access to \%P to get the
407 current Bacula process ID (PID) and \%C to know if the current job is a
408 cloned job.
409
410 \section{Bacula Enterprise 6.2.0}
411
412 \subsection{BWeb Bacula Configuration GUI}
413 In Bacula Enterprise version 6.2, the BWeb Management Suite integrates a
414 Bacula configuration GUI module which is designed to help you create and
415 modify the Bacula configuration files such as bacula-dir.conf,
416 bacula-sd.conf, bacula-fd.conf and bconsole.conf.
417
418 The BWeb Management Suite offers a number of Wizards which support the
419 Administrator in his daily work. The wizards provide a step by step set of
420 required actions that graphically guide the Administrator to perform quick
421 and easy creation and modification of configuration files.
422
423 BWeb also provides diagnostic tools that enable the Administrator to check
424 that the Catalog Database is well configured, and that BWeb is installed
425 properly.
426
427 The new Online help mode displays automatic help text suggestions when the
428 user searches data types.
429
430 \bsysimageH{bweb_config_screen}{Configuration with BWeb Management Suite}{fig:BwebBconfigScreen}
431
432 \smallskip
433 This project was funded by Bacula Systems and is available with the Bacula
434 Enterprise Edition.
435
436 \subsection{Performance Improvements}
437 Bacula Enterprise 6.2 has a number of new performance improvements:
438
439 \begin{itemize}
440 \item An improved way of storing Bacula Resources (as defined in
441 the .conf files). This new handling permits much faster loading or
442 reloading of the conf files, and permits larger numbers of resources.
443
444 \item Improved performance when inserting large numbers of files in
445 the DB catalog by breaking the insertion into smaller chunks, thus
446 allowing better sharing when running multiple simultaneous jobs.
447
448 \item Performance enhancements in BVFS concerning eliminating 
449 duplicate path records.
450
451 \item Performance improvement when getting Pool records.
452
453 \item Pruning performance enhancements.
454 \end{itemize}
455
456 \subsection{Enhanced Status and Error Messages}
457 We have enhanced the Storage daemon status output to be more
458 readable. This is important when there are a large number of
459 devices. In addition to formatting changes, it also includes more
460 details on which devices are reading and writing.
461
462 A number of error messages have been enhanced to have more specific
463 data on what went wrong.
464
465 If a file changes size while being backed up the old and new size
466 are reported.
467
468 \subsection{WinBMR 3}
469 The Windows Bare Metal Recovery (BMR) plugin enables you to do safe, reliable
470 Disaster Recovery with Bacula Enterprise Edition on Windows and allows you to
471 get critical systems up and running again quickly.  The Enterprise Edition
472 Windows BMR is a toolkit that allows the Administrator to perform the restore
473 of a complete operating system to the same or similar hardware without actually
474 going through the operating system's installation procedure.
475
476 \smallskip{}
477
478 The WinBMR 3 version is a major rewrite of the product that support all x86
479 Windows versions and technologies. Especially UEFI and secure boot systems. The
480 WinBMR 3 File Daemon plugin is now part of the plugins included with the Bacula
481 File Daemon package.  The rescue CD or USB key is available separately.
482
483 \subsection{Miscellaneous New Features}
484 \begin{itemize}
485 \item Allow unlimited line lengths in .conf files (previously limited
486 to 2000 characters).
487
488 \item Allow /dev/null in ChangerCommand to indicated a Virtual Autochanger.
489
490 \item Add a --fileprune option to the manual\_prune.pl script.
491
492 \item Add a -m option to make\_catalog\_backup.pl to do maintenance
493 on the catalog.
494
495 \item Safer code that cleans up the working directory when starting
496 the daemons. It limits what files can be deleted, hence enhances 
497 security.
498
499 \item Added a new .ls command in bconsole to permit browsing a client's
500 filesystem.
501
502 \item Fixed a number of bugs, includes some obscure seg faults, and a
503 race condition that occurred infrequently when running Copy, Migration,
504 or Virtual Full backups.
505
506 \item Included a new vSphere library version, which will hopefully
507 fix some of the more obscure bugs.
508
509 \item Upgraded to a newer version of Qt4 for bat. All indications
510 are that this will improve bat's stability on Windows machines.
511
512 \item The Windows installers now detect and refuse to install on
513 an OS that does not match the 32/64 bit value of the installer.
514 \end{itemize}
515
516
517 \section{Bacula Enterprise 6.0.6}
518
519 \subsection{Incremental Accelerator Plugin for NetApp}
520
521 The Incremental Accelerator for NetApp Plugin is designed to simplify the
522 backup and restore procedure of your NetApp NAS hosting a huge number of files.
523
524 \smallskip{} When using the NetApp HFC Plugin, Bacula Enterprise will query the
525 NetApp device to get the list of all files modified since the last backup
526 instead of having to walk through the entire filesystem. Once Bacula have the
527 list of all files to back's up, it will use a standard network share (such as
528 NFS or CIFS) to access files.
529
530 \smallskip
531 This project was funded by Bacula Systems and is available with the Bacula
532 Enterprise Edition.
533
534 \subsection{PostgreSQL Plugin}
535
536 The PostgreSQL plugin is designed to simplify the backup and restore procedure
537 of your PostgreSQL cluster, the backup administrator doesn't need to learn about
538 internals of Postgres backup techniques or write complex scripts. The plugin
539 will automatically take care for you to backup essential information such as
540 configuration, users definition or tablespaces. The PostgreSQL plugin supports
541 both dump and Point In Time Recovery (PITR) backup techniques.
542
543 \smallskip
544 This project was funded by Bacula Systems and is available with the Bacula
545 Enterprise Edition.
546
547 \subsection{Maximum Reload Requests}
548
549 The new Director directive \texttt{Maximum Reload Requests} permits to
550 configure the number of reload requests that can be done while jobs are
551 running.
552
553 \begin{lstlisting}
554 Director {
555   Name = localhost-dir
556   Maximum Reload Requests = 64
557   ...
558
559 }
560 \end{lstlisting}
561
562 \subsection{FD Storage Address}
563
564 When the Director is behind a NAT, in a WAN area, to connect to
565 % the FileDaemon or
566 the StorageDaemon, the Director uses an ``external'' ip address,
567 and the FileDaemon should use an ``internal'' IP address to contact the
568 StorageDaemon.
569
570 The normal way to handle this situation is to use a canonical name such as
571 ``storage-server'' that will be resolved on the Director side as the WAN
572 address and on the Client side as the LAN address. This is now possible to
573 configure this parameter using the new directive \texttt{FDStorageAddress} in
574 the Storage or Client resource.
575
576
577 \bsysimageH{BackupOverWan1}{Backup Over WAN}{figbs6:fdstorageaddress}
578 %  \label{fig:fdstorageaddress}
579
580 \begin{lstlisting}
581 Storage {
582      Name = storage1
583      Address = 65.1.1.1
584      FD Storage Address = 10.0.0.1
585      SD Port = 9103
586      ...
587 }
588 \end{lstlisting}
589
590 % # or in the Client resouce
591 %
592
593 \begin{lstlisting}
594  Client {
595       Name = client1
596       Address = 65.1.1.2
597       FD Storage Address = 10.0.0.1
598       FD Port = 9102
599       ...
600  }
601 \end{lstlisting}
602
603 Note that using the Client \texttt{FDStorageAddress} directive will not allow
604 to use multiple Storage Daemon, all Backup or Restore requests will be sent to
605 the specified \texttt{FDStorageAddress}.
606
607 \subsection{Maximum Concurrent Read Jobs}
608 This is a new directive that can be used in the {\bf bacula-dir.conf} file
609 in the Storage resource.  The main purpose is to limit the number
610 of concurrent Copy, Migration, and VirtualFull jobs so that
611 they don't monopolize all the Storage drives causing a deadlock situation
612 where all the drives are allocated for reading but none remain for
613 writing.  This deadlock situation can occur when running multiple
614 simultaneous Copy, Migration, and VirtualFull jobs.
615
616 \smallskip
617 The default value is set to 0 (zero), which means there is no
618 limit on the number of read jobs.  Note, limiting the read jobs
619 does not apply to Restore jobs, which are normally started by
620 hand.  A reasonable value for this directive is one half the number
621 of drives that the Storage resource has rounded down.  Doing so,
622 will leave the same number of drives for writing and will generally
623 avoid over committing drives and a deadlock.
624
625
626 \section{Bacula Enterprise 6.0.4}
627
628 \subsection{VMWare vSphere VADP Plugin}
629
630 The Bacula Enterprise vSphere plugin provides virtual
631 machine bare metal recovery, while the backup at the guest level simplify data
632 protection of critical applications.
633
634 The plugin integrates the VMware's Changed Block Tracking (CBT) technology to
635 ensure only blocks that have changed since the initial Full, and/or the last
636 Incremental or Differential Backup are sent to the current Incremental or
637 Differential backup stream to give you more efficient backups and reduced
638 network load.
639
640 \subsection{Oracle RMAN Plugin}
641
642 The Bacula Enterprise Oracle Plugin is designed to simplify the backup and
643 restore procedure of your Oracle Database instance, the backup administrator
644 don't need to learn about internals of Oracle backup techniques or write
645 complex scripts.  The Bacula Enterprise Oracle plugin supports both dump and
646 Point In Time Recovery (PITR) with RMAN backup techniques.
647
648
649 \section{Bacula Enterprise 6.0.2}
650
651 To make Bacula function properly with multiple Autochanger definitions, in
652 the Director's configuration, you must adapt your {\bf bacula-dir.conf}
653 {\bf Storage} directives.
654
655 \smallskip
656 Each autochanger that you have defined in an {\bf Autochanger} 
657 resource in the Storage daemon's {\bf bacula-sd.conf} file,
658 must have a corresponding {\bf Autochanger} resource defined
659 in the Director's {\bf bacula-dir.conf} file.  Normally you will
660 already have a {\bf Storage} resource that points to the
661 Storage daemon's {\bf Autochanger} resource.  Thus you need
662 only to change the name of the {\bf Storage} resource to
663 {\bf Autochanger}.  In addition the {\bf Autochanger = yes}
664 directive is not needed in the Director's {\bf Autochanger}
665 resource, since the resource name is {\bf Autochanger}, the
666 Director already knows that it represents an autochanger.
667
668 \smallskip
669 In addition to the above change ({\bf Storage} to {\bf Autochanger}),
670 you must modify any additional {\bf Storage} resources that correspond
671 to devices that are part of the {\bf Autochanger} device.
672 Instead of the previous {\bf Autochanger = yes} directive they
673 should be modified to be {\bf Autochanger = xxx} where you
674 replace the {\bf xxx} with the name of the Autochanger.
675
676 \smallskip
677 For example, in the bacula-dir.conf file:
678
679 \begin{verbatim}
680 Autochanger {             # New resource
681   Name = Changer-1
682   Address = cibou.company.com
683   SDPort = 9103
684   Password = "xxxxxxxxxx"
685   Device = LTO-Changer-1
686   Media Type = LTO-4
687   Maximum Concurrent Jobs = 50
688 }
689
690 Storage {
691   Name = Changer-1-Drive0
692   Address = cibou.company.com
693   SDPort = 9103
694   Password = "xxxxxxxxxx"
695   Device = LTO4_1_Drive0
696   Media Type = LTO-4
697   Maximum Concurrent Jobs = 5
698   Autochanger = Changer-1  # New directive
699 }
700
701 Storage {
702   Name = Changer-1-Drive1
703   Address = cibou.company.com
704   SDPort = 9103
705   Password = "xxxxxxxxxx"
706   Device = LTO4_1_Drive1
707   Media Type = LTO-4
708   Maximum Concurrent Jobs = 5
709   Autochanger = Changer-1  # New directive
710 }
711
712 ...
713 \end{verbatim}
714
715 Note that Storage resources {\bf Changer-1-Drive0} and 
716 {\bf Changer-1-Drive1} are not required since they make
717 up part of an autochanger, and normally, Jobs refer only
718 to the Autochanger resource.
719 However, by referring to those
720 Storage definitions in a Job, you will use only
721 the indicated drive.  This is not normally what
722 you want to do, but it is very useful and often used
723 for reserving a drive for restores.  See the Storage daemon
724 example .conf below and the use of {\bf AutoSelect = no}.
725
726 So, in summary, the changes are:
727 \begin{itemize}
728 \item Change {\bf Storage} to {\bf Autochanger} in the LTO4 resource.
729 \item Remove the {\bf Autochanger = yes} from the {\bf Autochanger}
730 LTO4 resource.
731 \item Change the {\bf Autochanger = yes} in each of the {\bf Storage}
732 device that belong to the {\bf Autochanger} to point to the
733 {\bf Autochanger} resource with for the example above the
734 directive {\bf Autochanger = LTO4}.
735 \end{itemize}
736
737 \section{Bacula Enterprise 6.0.0}
738
739 \subsection{Incomplete Jobs}
740 During a backup, if the Storage daemon experiences disconnection
741 with the File daemon during backup (normally a comm line problem
742 or possibly an FD failure), under conditions that the SD determines
743 to be safe it will make the failed job as Incomplete rather than
744 failed.  This is done only if there is sufficient valid backup
745 data that was written to the Volume. The advantage of an Incomplete
746 job is that it can be restarted by the new bconsole {\bf restart}
747 command from the point where it left off rather than from the
748 beginning of the jobs as is the case with a cancel.
749
750 \subsection{The Stop Command}
751 Bacula has been enhanced to provide a {\bf stop} command,
752 very similar to the {\bf cancel} command with the main difference
753 that the Job that is stopped is marked as Incomplete so that
754 it can be restarted later by the {\bf restart} command where
755 it left off (see below).  The {\bf stop} command with no
756 arguments, will like the cancel command, prompt you with the
757 list of running jobs allowing you to select one, which might
758 look like the following:
759
760 \begin{lstlisting}
761 *stop
762 Select Job:
763      1: JobId=3 Job=Incremental.2012-03-26_12.04.26_07
764      2: JobId=4 Job=Incremental.2012-03-26_12.04.30_08
765      3: JobId=5 Job=Incremental.2012-03-26_12.04.36_09
766 Choose Job to stop (1-3): 2
767 2001 Job "Incremental.2012-03-26_12.04.30_08" marked to be stopped.
768 3000 JobId=4 Job="Incremental.2012-03-26_12.04.30_08" marked to be stopped.
769 \end{lstlisting}
770
771 \subsection{The Restart Command}
772 The new {\bf Restart command} allows console users to restart
773 a canceled, failed, or incomplete Job.  For canceled and failed
774 Jobs, the Job will restart from the beginning.  For incomplete
775 Jobs the Job will restart at the point that it was stopped either
776 by a stop command or by some recoverable failure.
777
778 \smallskip
779 If you enter the {\bf restart} command in bconsole, you will get the
780 following prompts:
781
782 \begin{lstlisting}
783 *restart
784 You have the following choices:
785      1: Incomplete
786      2: Canceled
787      3: Failed
788      4: All
789 Select termination code:  (1-4):
790 \end{lstlisting}
791
792 If you select the {\bf All} option, you may see something like:
793
794 \begin{lstlisting}
795 Select termination code:  (1-4): 4
796 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
797 | jobid | name        | starttime           | type | level | jobfiles |
798 jobbytes  | jobstatus |
799 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
800 |     1 | Incremental | 2012-03-26 12:15:21 | B    | F     |        0 |
801     0 | A         |
802 |     2 | Incremental | 2012-03-26 12:18:14 | B    | F     |      350 |
803 4,013,397 | I         |
804 |     3 | Incremental | 2012-03-26 12:18:30 | B    | F     |        0 |
805     0 | A         |
806 |     4 | Incremental | 2012-03-26 12:18:38 | B    | F     |      331 |
807 3,548,058 | I         |
808 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
809 Enter the JobId list to select:
810 \end{lstlisting}
811
812 Then you may enter one or more JobIds to be restarted, which may
813 take the form of a list of JobIds separated by commas, and/or JobId
814 ranges such as {\bf 1-4}, which indicates you want to restart JobIds
815 1 through 4, inclusive.
816
817 \subsection{Support for Exchange Incremental Backups}
818 The Bacula Enterprise version 6.0 VSS plugin now supports
819 Full and Incremental backups for Exchange.  We strongly
820 recommend that you do not attempt to run Differential jobs with
821 Exchange as it is likely to produce a situation where restores
822 will no longer select the correct jobs, and thus the
823 Windows Exchange VSS writer will fail when applying log files.
824 There is a Bacula Systems Enterprise white paper that provides
825 the details of backup and restore of Exchange 2010 with the
826 Bacula VSS plugin.
827
828 \smallskip
829 Restores can be done while Exchange is running, but you
830 must first unmount (dismount in Microsoft terms) any database
831 you wish to restore and explicitly mark them to permit a
832 restore operation (see the white paper for details).
833
834 \smallskip
835 This project was funded by Bacula Systems and is available with the Bacula
836 Enterprise Edition.
837
838 \subsection{Support for MSSQL Block Level Backups}
839 With the addition of block level backup support to the
840 Bacula Enterprise VSS MSSQL component, you can now do
841 Differential backups in addition to Full backups.
842 Differential backups use Microsoft's partial block backup
843 (a block differencing or deduplication that we call Delta).
844 This partial block backup permits backing up only those
845 blocks that have changed.  Database restores can be made while
846 the MSSQL server is running, but any databases selected for
847 restore will be automatically taken offline by the MSSQL
848 server during the restore process.
849
850 Incremental backups for MSSQL are not support by
851 Microsoft. We strongly recommend that you not perform Incremental
852 backups with MSSQL as they will probably produce a situation
853 where restore will no longer work correctly.
854
855 \smallskip
856  We are currently working on producing a white paper that will give more
857 details of backup and restore with MSSQL. One point to note is that during
858 a restore, you will normally not want to restore the {\bf master} database.
859 You must exclude it from the backup selections that you have made or the
860 restore will fail.
861
862 \smallskip
863 It is possible to restore the {\bf master} database, but you must
864 first shutdown the MSSQL server, then you must perform special
865 recovery commands.  Please see Microsoft documentation on how
866 to restore the master database.
867
868 \smallskip
869 This project was funded by Bacula Systems and is available with the Bacula
870 Enterprise Edition.
871
872
873 \subsection{Job Bandwidth Limitation}
874
875 The new {\bf Job Bandwidth Limitation} directive may be added to the File
876 daemon's and/or Director's configuration to limit the bandwidth used by a
877 Job on a Client.  It can be set in the File daemon's conf file for all Jobs
878 run in that File daemon, or it can be set for each Job in the Director's
879 conf file. The speed is always specified in bytes per second.
880
881 For example:
882 \begin{lstlisting}
883 FileDaemon {
884   Name = localhost-fd
885   Working Directory = /some/path
886   Pid Directory = /some/path
887   ...
888   Maximum Bandwidth Per Job = 5Mb/s
889 }
890 \end{lstlisting}
891
892 The above example would cause any jobs running with the FileDaemon to not
893 exceed 5 megabytes per second of throughput when sending data to the
894 Storage Daemon. Note, the speed is always specified in bytes per second
895 (not in bits per second), and the case (upper/lower) of the specification
896 characters is ignored (i.e. 1MB/s = 1Mb/s).
897
898 You may specify the following speed parameter modifiers:
899    k/s (1,000 bytes per second), kb/s (1,024 bytes per second),
900    m/s (1,000,000 bytes per second), or mb/s (1,048,576 bytes per second).
901
902 For example:
903 \begin{lstlisting}
904 Job {
905   Name = locahost-data
906   FileSet = FS_localhost
907   Accurate = yes
908   ...
909   Maximum Bandwidth = 5Mb/s
910   ...
911 }
912 \end{lstlisting}
913
914 The above example would cause Job \texttt{localhost-data} to not exceed 5MB/s
915 of throughput when sending data from the File daemon to the Storage daemon.
916
917 A new console command \texttt{setbandwidth} permits to set dynamically the
918 maximum throughput of a running Job or for future jobs of a Client.
919
920 \begin{lstlisting}
921 * setbandwidth limit=1000 jobid=10
922 \end{lstlisting}
923
924 Please note that the value specified for the \texttt{limit} command
925 line parameter is always in units of 1024 bytes (i.e. the number
926 is multiplied by 1024 to give the number of bytes per second).  As 
927 a consequence, the above limit of 1000 will be interpreted as a
928 limit of 1000 * 1024 = 1,024,000 bytes per second.
929
930 \medskip
931 This project was funded by Bacula Systems and is available in
932 the Enterprise Edition.
933
934 \subsection{Incremental/Differential Block Level Difference Backup}
935
936 The new \texttt{delta} Plugin is able to compute and apply signature-based file
937 differences. It can be used to backup only changes in a big binary file like
938 Outlook PST, VirtualBox/VMware images or database files.
939
940 It supports both Incremental and Differential backups and stores signatures
941 database in the File Daemon working directory. This plugin is available on all
942 platform including Windows 32 and 64bit.
943
944 Accurate option should be turned on in the Job resource.
945 \begin{lstlisting}
946 Job {
947  Accurate = yes
948  FileSet = DeltaFS
949  ...
950 }
951
952 FileSet {
953  Name = DeltaFS
954  ...
955  Include {
956    # Specify one file
957    Plugin = "delta:/home/eric/.VirtualBox/HardDisks/lenny-i386.vdi"
958  }
959 }
960
961 FileSet {
962  Name = DeltaFS-Include
963  ...
964  Include {
965    Options {
966       Compression = GZIP1
967       Signature = MD5
968       Plugin = delta
969    }
970    # Use the Options{} filtering and options
971    File = /home/user/.VirtualBox
972  }
973 }
974
975 \end{lstlisting}
976
977 Please contact Bacula Systems support to get Delta Plugin specific
978 documentation.
979
980 \medskip
981 This project was funded by Bacula Systems and is available with the Bacula
982 Enterprise Edition.
983
984 \subsection{SAN Shared Tape Storage Plugin}
985
986 The problem with backing up multiple servers at the same time to the
987 same tape library (or autoloader) is that if both servers access the
988 same tape drive same time, you will very likely get data corruption.
989 This is where the Bacula Systems shared tape storage plugin comes into play.  The
990 plugin ensures that only one server at a time can connect to each device
991 (tape drive) by using the SPC-3 SCSI reservation protocol.  Please contact
992 Bacula Systems support to get SAN Shared Storage Plugin specific
993 documentation.
994
995 \medskip
996 This project was funded by Bacula Systems and is available with Bacula
997 Enterprise Edition.
998
999 \subsection{Advanced Autochanger Usage}
1000
1001 The new \texttt{Shared Storage} Director's directive is a Bacula Enterprise
1002 feature that allows you to share volumes between different Storage
1003 resources. This directive should be used \textbf{only} if all \texttt{Media
1004   Type} are correctly set across all Devices.
1005
1006 The \texttt{Shared Storage} directive should be used when using the SAN
1007 Shared Storage plugin or when accessing from the Director Storage resources
1008 directly to Devices of an Autochanger.
1009
1010 When sharing volumes between different Storage resources, you will
1011 need also to use the \texttt{reset-storageid} script before using the
1012 \texttt{update slots} command. This script can be scheduled once a day in
1013 an Admin job.
1014
1015 \begin{lstlisting}
1016  $ /opt/bacula/scripts/reset-storageid MediaType StorageName
1017  $ bconsole
1018  * update slots storage=StorageName drive=0
1019 \end{lstlisting}
1020
1021 Please contact Bacula Systems support to get help on this advanced
1022 configuration.
1023
1024 \medskip
1025 This project was funded by Bacula Systems and is available with Bacula
1026 Enterprise Edition.
1027
1028 \medskip
1029 \textbf{The reset-storageid procedure is no longer required when using
1030 the appropriate Autochanger configuration in the Director configuration
1031 side.}
1032
1033 \subsection{Enhancement of the NDMP Plugin}
1034
1035 The previous NDMP Plugin 4.0 was fully supporting only the NetApp hardware, the
1036 new NDMP Plugin should now be able to support all NAS vendors with the
1037 \texttt{volume\_format} plugin command option.
1038
1039 On some NDMP devices such as Celera or Blueray, the administrator can use arbitrary
1040 volume structure name, ex:
1041
1042 \begin{lstlisting}
1043  /dev/volume_home
1044  /rootvolume/volume_tmp
1045  /VG/volume_var
1046 \end{lstlisting}
1047
1048 The NDMP plugin should be aware of the structure organization in order to
1049 detect if the administrator wants to restore in a new volume
1050 (\texttt{where=/dev/vol\_tmp}) or inside a subdirectory of the targeted volume
1051 (\texttt{where=/tmp}).
1052
1053 \begin{lstlisting}
1054 FileSet {
1055  Name = NDMPFS
1056  ...
1057  Include {
1058    Plugin = "ndmp:host=nasbox user=root pass=root file=/dev/vol1 volume_format=/dev/"
1059  }
1060 }
1061 \end{lstlisting}
1062
1063 Please contact Bacula Systems support to get NDMP Plugin specific
1064 documentation.
1065
1066 \medskip
1067 This project was funded by Bacula Systems and is available with the Bacula
1068 Enterprise Edition.
1069
1070 \subsection{Always Backup a File}
1071
1072 When the Accurate mode is turned on, you can decide to always backup a file
1073 by using then new {\bf A} Accurate option in your FileSet. For example:
1074
1075 \begin{lstlisting}
1076 Job {
1077    Name = ...
1078    FileSet = FS_Example
1079    Accurate = yes
1080    ...
1081 }
1082
1083 FileSet {
1084  Name = FS_Example
1085  Include {
1086    Options {
1087      Accurate = A
1088    }
1089    File = /file
1090    File = /file2
1091  }
1092  ...
1093 }
1094 \end{lstlisting}
1095
1096 This project was funded by Bacula Systems based on an idea of James Harper and
1097 is available with the Bacula Enterprise Edition.
1098
1099 \subsection{Setting Accurate Mode During at Runtime}
1100
1101 You are now able to specify the Accurate mode on the \texttt{run} command and
1102 in the Schedule resource.
1103
1104 \begin{lstlisting}
1105 * run accurate=yes job=Test
1106 \end{lstlisting}
1107
1108 \begin{lstlisting}
1109 Schedule {
1110   Name = WeeklyCycle
1111   Run = Full 1st sun at 23:05
1112   Run = Differential accurate=yes 2nd-5th sun at 23:05
1113   Run = Incremental  accurate=no  mon-sat at 23:05
1114 }
1115 \end{lstlisting}
1116
1117 It can allow you to save memory and and CPU resources on the catalog server in
1118 some cases.
1119
1120 \medskip
1121 These advanced tuning options are available with the Bacula Enterprise Edition.
1122
1123 % Common with community
1124 \subsection{Additions to RunScript variables}
1125 You can have access to JobBytes, JobFiles and Director name using \%b, \%F and \%D
1126 in your runscript command. The Client address is now available through \%h.
1127
1128 \begin{lstlisting}
1129 RunAfterJob = "/bin/echo Job=%j JobBytes=%b JobFiles=%F ClientAddress=%h Dir=%D"
1130 \end{lstlisting}
1131
1132 \subsection{LZO Compression}
1133
1134 LZO compression was added in the Unix File Daemon. From the user point of view,
1135 it works like the GZIP compression (just replace {\bf compression=GZIP} with
1136 {\bf compression=LZO}).
1137
1138 For example:
1139 \begin{lstlisting}
1140 Include {
1141    Options { compression=LZO }
1142    File = /home
1143    File = /data
1144 }
1145 \end{lstlisting}
1146
1147 LZO provides much faster compression and decompression speed but lower
1148 compression ratio than GZIP. It is a good option when you backup to disk. For
1149 tape, the built-in compression may be a better option.
1150
1151 LZO is a good alternative for GZIP1 when you don't want to slow down your
1152 backup. On a modern CPU it should be able to run almost as fast as:
1153
1154 \begin{bsysitemize}
1155 \item your client can read data from disk. Unless you have very fast disks like
1156   SSD or large/fast RAID array.
1157 \item the data transfers between the file daemon and the storage daemon even on
1158   a 1Gb/s link.
1159 \end{bsysitemize}
1160
1161 Note that bacula only use one compression level LZO1X-1.
1162
1163 \medskip
1164 The code for this feature was contributed by Laurent Papier.
1165
1166 \subsection{New Tray Monitor}
1167
1168 Since the old integrated Windows tray monitor doesn't work with
1169 recent Windows versions, we have written a new Qt Tray Monitor that is available
1170 for both Linux and Windows.  In addition to all the previous features,
1171 this new version allows you to run Backups from
1172 the tray monitor menu.
1173
1174 \bsysimageH{tray-monitor}{New tray monitor}{figbs6:traymonitor}
1175
1176 \bsysimageH{tray-monitor1}{Run a Job through the new tray monitor}{figbs6:traymonitor1}
1177
1178
1179
1180 To be able to run a job from the tray monitor, you need to
1181 allow specific commands in the Director monitor console:
1182 \begin{lstlisting}
1183 Console {
1184     Name = win2003-mon
1185     Password = "xxx"
1186     CommandACL = status, .clients, .jobs, .pools, .storage, .filesets, .messages, run
1187     ClientACL = *all*               # you can restrict to a specific host
1188     CatalogACL = *all*
1189     JobACL = *all*
1190     StorageACL = *all*
1191     ScheduleACL = *all*
1192     PoolACL = *all*
1193     FileSetACL = *all*
1194     WhereACL = *all*
1195 }
1196 \end{lstlisting}
1197
1198 \medskip
1199 This project was funded by Bacula Systems and is available with Bacula
1200 the Enterprise Edition and the Community Edition.
1201
1202 \subsection{Purge Migration Job}
1203
1204 The new {\bf Purge Migration Job} directive may be added to the Migration
1205 Job definition in the Director's configuration file. When it is enabled
1206 the Job that was migrated during a migration will be purged at
1207 the end of the migration job.
1208
1209 For example:
1210 \begin{lstlisting}
1211 Job {
1212   Name = "migrate-job"
1213   Type = Migrate
1214   Level = Full
1215   Client = localhost-fd
1216   FileSet = "Full Set"
1217   Messages = Standard
1218   Storage = DiskChanger
1219   Pool = Default
1220   Selection Type = Job
1221   Selection Pattern = ".*Save"
1222 ...
1223   Purge Migration Job = yes
1224 }
1225 \end{lstlisting}
1226
1227 \medskip
1228
1229 This project was submitted by Dunlap Blake; testing and documentation was funded
1230 by Bacula Systems.
1231
1232 \subsection{Changes in the Pruning Algorithm}
1233
1234 We rewrote the job pruning algorithm in this version. Previously, in some users
1235 reported that the pruning process at the end of jobs was very long. It should
1236 not be longer the case. Now, Bacula won't prune automatically a Job if this
1237 particular Job is needed to restore data. Example:
1238
1239 \begin{lstlisting}
1240 JobId: 1  Level: Full
1241 JobId: 2  Level: Incremental
1242 JobId: 3  Level: Incremental
1243 JobId: 4  Level: Differential
1244 .. Other incrementals up to now
1245 \end{lstlisting}
1246
1247 In this example, if the Job Retention defined in the Pool or in the Client
1248 resource causes that Jobs with Jobid in 1,2,3,4 can be pruned, Bacula will
1249 detect that JobId 1 and 4 are essential to restore data at the current state
1250 and will prune only JobId 2 and 3.
1251
1252 \texttt{Important}, this change affect only the automatic pruning step after a
1253 Job and the \texttt{prune jobs} Bconsole command. If a volume expires after the
1254 \texttt{VolumeRetention} period, important jobs can be pruned.
1255
1256 \subsection{Ability to Verify any specified Job}
1257 You now have the ability to tell Bacula which Job should verify instead of
1258 automatically verify just the last one.
1259
1260 This feature can be used with VolumeToCatalog, DiskToCatalog and Catalog level.
1261
1262 To verify a given job, just specify the Job jobid in argument when starting the
1263 job.
1264 \begin{lstlisting}
1265 *run job=VerifyVolume jobid=1 level=VolumeToCatalog
1266 Run Verify job
1267 JobName:     VerifyVolume
1268 Level:       VolumeToCatalog
1269 Client:      127.0.0.1-fd
1270 FileSet:     Full Set
1271 Pool:        Default (From Job resource)
1272 Storage:     File (From Job resource)
1273 Verify Job:  VerifyVol.2010-09-08_14.17.17_03
1274 Verify List: /tmp/regress/working/VerifyVol.bsr
1275 When:        2010-09-08 14:17:31
1276 Priority:    10
1277 OK to run? (yes/mod/no):
1278 \end{lstlisting}
1279
1280 \medskip
1281 This project was funded by Bacula Systems and is available with Bacula
1282 Enterprise Edition and Community Edition.