]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/en/main/newbsfeatures.tex
Add information about new features
[bacula/docs] / docs / manuals / en / main / newbsfeatures.tex
1 \chapter{New Features in Bacula Enterprise 6.0.x}
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 will include the Community features described in the Community new Features
8 chapter.
9
10 \chapter{New Features in Bacula Enterprise 6.0.6}
11
12 \section{Incremental Accelerator Plugin for NetApp}
13
14 The Incremental Accelerator for NetApp Plugin is designed to simplify the
15 backup and restore procedure of your NetApp NAS hosting a huge number of files.
16
17 \smallskip{} When using the NetApp HFC Plugin, Bacula Enterprise will query the
18 NetApp device to get the list of all files modified since the last backup
19 instead of having to walk through the entire filesystem. Once Bacula have the
20 list of all files to back's up, it will use a standard network share (such as
21 NFS or CIFS) to access files.
22
23 \smallskip
24 This project was funded by Bacula Systems and is available with the Bacula
25 Enterprise Edition.
26
27 \section{PostgreSQL Plugin}
28
29 The PostgreSQL plugin is designed to simplify the backup and restore procedure
30 of your PostgreSQL cluster, the backup administrator doesn't need to learn about
31 internals of Postgres backup techniques or write complex scripts. The plugin
32 will automatically take care for you to backup essential information such as
33 configuration, users definition or tablespaces. The PostgreSQL plugin supports
34 both dump and Point In Time Recovery (PITR) backup techniques.
35
36 \smallskip
37 This project was funded by Bacula Systems and is available with the Bacula
38 Enterprise Edition.
39
40 \chapter{New Features in Bacula Enterprise 6.0.5}
41
42 \section{Maximum Reload Requests}
43
44 The new Director directive \texttt{Maximum Reload Requests} permits to
45 configure the number of reload requests that can be done while jobs are
46 running.
47
48 \begin{verbatim}
49 Director {
50   Name = localhost-dir
51   Maximum Reload Requests = 64
52   ...
53
54 }
55 \end{verbatim}
56
57 \section{FD Storage Address}
58
59 When the Director is behind a NAT, in a WAN area, to connect to 
60 % the FileDaemon or 
61 the StorageDaemon, the Director uses an "external" ip address,
62 and the FileDaemon should use an "internal" ip address to contact the
63 StorageDaemon.
64
65 The normal way to handle this situation is to use a canonical name such as
66 "storage-server" that will be resolved on the Director side as the WAN address
67 and on the Client side as the LAN address. This is now possible to configure
68 this parameter using the new \texttt{FDStorageAddress} Storage 
69 % or Client
70 directive.
71
72 \begin{figure}[htbp]
73   \centering
74   \includegraphics[width=10cm]{\idir BackupOverWan1}
75   \label{fig:fdstorageaddress}
76   \caption{Backup over WAN}
77 \end{figure}
78
79 \begin{verbatim}
80 Storage {
81      Name = storage1
82      Address = 65.1.1.1
83      FD Storage Address = 10.0.0.1
84      SD Port 9103
85      ...
86 }
87 \end{verbatim}
88
89 % # or in the Client resouce
90
91 % Client {
92 %      Name = client1
93 %      Address = 65.1.1.2
94 %      FD Storage Address = 10.0.0.1
95 %      FD Port 9103
96 %      ...
97 % }
98 % \end{verbatim}
99
100 % Note that using the Client \texttt{FDStorageAddress} directive will not allow
101 % to use multiple Storage Daemon, all Backup or Restore requests will be sent to
102 % the specified \texttt{FDStorageAddress}.
103
104 \chapter{New Features in Bacula Enterprise 6.0.0}
105
106 \section{Incomplete Jobs}
107 During a backup, if the Storage daemon experiences disconnection
108 with the File daemon during backup (normally a comm line problem
109 or possibly an FD failure), under conditions that the SD determines
110 to be safe it will make the failed job as Incomplete rather than
111 failed.  This is done only if there is sufficient valid backup
112 data that was written to the Volume. The advantage of an Incomplete
113 job is that it can be restarted by the new bconsole {\bf restart}
114 command from the point where it left off rather than from the
115 beginning of the jobs as is the case with a cancel.
116
117 \section{The Stop Command}
118 Bacula has been enhanced to provide a {\bf stop} command,
119 very similar to the {\bf cancel} command with the main difference
120 that the Job that is stopped is marked as Incomplete so that
121 it can be restarted later by the {\bf restart} command where
122 it left off (see below).  The {\bf stop} command with no
123 arguments, will like the cancel command, prompt you with the
124 list of running jobs allowing you to select one, which might
125 look like the following:
126
127 \begin{verbatim}
128 *stop
129 Select Job:
130      1: JobId=3 Job=Incremental.2012-03-26_12.04.26_07
131      2: JobId=4 Job=Incremental.2012-03-26_12.04.30_08
132      3: JobId=5 Job=Incremental.2012-03-26_12.04.36_09
133 Choose Job to stop (1-3): 2
134 2001 Job "Incremental.2012-03-26_12.04.30_08" marked to be stopped.
135 3000 JobId=4 Job="Incremental.2012-03-26_12.04.30_08" marked to be stopped.
136 \end{verbatim}
137
138 \section{The Restart Command}
139 The new {\bf Restart command} allows console users to restart
140 a canceled, failed, or incomplete Job.  For canceled and failed
141 Jobs, the Job will restart from the beginning.  For incomplete 
142 Jobs the Job will restart at the point that it was stopped either
143 by a stop command or by some recoverable failure.
144
145 \smallskip
146 If you enter the {\bf restart} command in bconsole, you will get the
147 following prompts:
148
149 \begin{verbatim}
150 *restart
151 You have the following choices:
152      1: Incomplete
153      2: Canceled
154      3: Failed
155      4: All
156 Select termination code:  (1-4): 
157 \end{verbatim}
158
159 If you select the {\bf All} option, you may see something like:
160
161 \begin{verbatim}
162 Select termination code:  (1-4): 4
163 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
164 | jobid | name        | starttime           | type | level | jobfiles |
165 jobbytes  | jobstatus |
166 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
167 |     1 | Incremental | 2012-03-26 12:15:21 | B    | F     |        0 |
168     0 | A         |
169 |     2 | Incremental | 2012-03-26 12:18:14 | B    | F     |      350 |
170 4,013,397 | I         |
171 |     3 | Incremental | 2012-03-26 12:18:30 | B    | F     |        0 |
172     0 | A         |
173 |     4 | Incremental | 2012-03-26 12:18:38 | B    | F     |      331 |
174 3,548,058 | I         |
175 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
176 Enter the JobId list to select: 
177 \end{verbatim}
178
179 Then you may enter one or more JobIds to be restarted, which may 
180 take the form of a list of JobIds separated by commas, and/or JobId
181 ranges such as {\bf 1-4}, which indicates you want to restart JobIds
182 1 through 4, inclusive.
183
184 \section{Support for Exchange Incremental Backups}
185 The Bacula Enterprise version 6.0 VSS plugin now supports
186 Full and Incremental backups for Exchange.  We strongly
187 recommend that you do not attempt to run Differential jobs with
188 Exchange as it is likely to produce a situation where restores
189 will no longer select the correct jobs, and thus the
190 Windows Exchange VSS writer will fail when applying log files.
191 There is a Bacula Systems Enterprise white paper that provides
192 the details of backup and restore of Exchange 2010 with the
193 Bacula VSS plugin.
194
195 \smallskip
196 Restores can be done while Exchange is running, but you
197 must first unmount (dismount in Microsoft terms) any database
198 you wish to restore and explicitly mark them to permit a
199 restore operation (see the white paper for details).
200
201 \smallskip
202 This project was funded by Bacula Systems and is available with the Bacula
203 Enterprise Edition.
204
205 \section{Support for MSSQL Block Level Backups}
206 With the addition of block level backup support to the 
207 Bacula Enterprise VSS MSSQL component, you can now do
208 Differential backups in addition to Full backups.
209 Differential backups use Microsoft's partial block backup
210 (a block differencing or deduplication that we call Delta).
211 This partial block backup permits backing up only those
212 blocks that have changed.  Database restores can be made while
213 the MSSQL server is running, but any databases selected for
214 restore will be automatically taken offline by the MSSQL 
215 server during the restore process.
216
217 Incremental backups for MSSQL are not support by
218 Microsoft. We strongly recommend that you not perform Incremental
219 backups with MSSQL as they will probably produce a situation
220 where restore will no longer work correctly. 
221
222 \smallskip
223  We are currently working on producing a white paper that will give more
224 details of backup and restore with MSSQL. One point to note is that during
225 a restore, you will normally not want to restore the {\bf master} database.
226 You must exclude it from the backup selections that you have made or the
227 restore will fail.
228
229 \smallskip
230 It is possible to restore the {\bf master} database, but you must
231 first shutdown the MSSQL server, then you must perform special 
232 recovery commands.  Please see Microsoft documentation on how
233 to restore the master database.
234
235 \smallskip
236 This project was funded by Bacula Systems and is available with the Bacula
237 Enterprise Edition.
238
239
240 \section{Job Bandwidth Limitation}
241
242 The new {\bf Job Bandwidth Limitation} directive may be added to the File
243 daemon's and/or Director's configuration to limit the bandwidth used by a Job
244 on a Client.  It can be set in the File daemon's conf file for all Jobs run in
245 that File daemon, or it can be set for each Job in the Director's conf file.
246
247 For example:
248 \begin{verbatim}
249 FileDaemon {
250   Name = localhost-fd
251   Working Directory = /some/path
252   Pid Directory = /some/path
253   ...
254   Maximum Bandwidth Per Job = 5Mb/s
255 }
256 \end{verbatim}
257
258 The above example would cause any jobs running with the FileDaemon to not
259 exceed 5Mb/s of throughput when sending data to the Storage Daemon.
260
261 You can specify the speed parameter in k/s, Kb/s, m/s, Mb/s.
262
263 For example:
264 \begin{verbatim}
265 Job {
266   Name = locahost-data
267   FileSet = FS_localhost
268   Accurate = yes
269   ...
270   Maximum Bandwidth = 5Mb/s
271   ...
272 }
273 \end{verbatim}
274
275 The above example would cause Job \texttt{localhost-data} to not exceed 5MB/s
276 of throughput when sending data from the File daemon to the Storage daemon.
277
278 A new console command \texttt{setbandwidth} permits to set dynamically the
279 maximum throughput of a running Job or for future jobs of a Client.
280
281 \begin{verbatim}
282 * setbandwidth limit=1000000 jobid=10
283 \end{verbatim}
284
285 The \texttt{limit} parameter is in Kb/s.
286
287 \medskip
288 This project was funded by Bacula Systems and is available in
289 the Enterprise Edition.
290
291 \section{Incremental/Differential Block Level Difference Backup}
292
293 The new \texttt{delta} Plugin is able to compute and apply signature-based file
294 differences. It can be used to backup only changes in a big binary file like
295 Outlook PST, VirtualBox/VMware images or database files.
296
297 It supports both Incremental and Differential backups and stores signatures
298 database in the File Daemon working directory. This plugin is available on all
299 platform including Windows 32 and 64bit.
300
301 Accurate option should be turned on in the Job resource.
302 \begin{verbatim}
303 Job {
304  Accurate = yes
305  FileSet = DeltaFS
306  ...
307 }
308
309 FileSet {
310  Name = DeltaFS
311  ...
312  Include {
313    # Specify one file
314    Plugin = "delta:/home/eric/.VirtualBox/HardDisks/lenny-i386.vdi"
315  }
316 }
317
318 FileSet {
319  Name = DeltaFS-Include
320  ...
321  Include {
322    Options {
323       Compression = GZIP1
324       Signature = MD5
325       Plugin = delta
326    }
327    # Use the Options{} filtering and options
328    File = /home/user/.VirtualBox
329  }
330 }
331
332 \end{verbatim}
333
334 Please contact Bacula Systems support to get Delta Plugin specific
335 documentation.
336
337 \medskip
338 This project was funded by Bacula Systems and is available with the Bacula
339 Enterprise Edition.
340
341 \section{SAN Shared Tape Storage Plugin}
342
343 The problem with backing up multiple servers at the same time to the
344 same tape library (or autoloader) is that if both servers access the
345 same tape drive same time, you will very likely get data corruption.
346 This is where the Bacula Systems shared tape storage plugin comes into play.  The
347 plugin ensures that only one server at a time can connect to each device
348 (tape drive) by using the SPC-3 SCSI reservation protocol.  Please contact
349 Bacula Systems support to get SAN Shared Storage Plugin specific
350 documentation.
351
352 \medskip
353 This project was funded by Bacula Systems and is available with Bacula
354 Enterprise Edition.
355
356 \section{Advanced Autochanger Usage}
357
358 The new \texttt{Shared Storage} Director's directive is a Bacula Enterprise
359 feature that allows you to share volumes between different Storage
360 resources. This directive should be used \textbf{only} if all \texttt{Media
361   Type} are correctly set across all Devices.
362
363 The \texttt{Shared Storage} directive should be used when using the SAN
364 Shared Storage plugin or when accessing from the Director Storage resources
365 directly to Devices of an Autochanger.
366
367 When sharing volumes between different Storage resources, you will
368 need also to use the \texttt{reset-storageid} script before using the
369 \texttt{update slots} command. This script can be scheduled once a day in
370 an Admin job.
371
372 \begin{verbatim}
373  $ /opt/bacula/scripts/reset-storageid MediaType StorageName
374  $ bconsole
375  * update slots storage=StorageName drive=0
376 \end{verbatim}
377
378 Please contact Bacula Systems support to get help on this advanced
379 configuration.
380
381 \medskip
382 This project was funded by Bacula Systems and is available with Bacula
383 Enterprise Edition.
384
385 \section{Enhancement of the NDMP Plugin}
386
387 The previous NDMP Plugin 4.0 was fully supporting only the NetApp hardware, the
388 new NDMP Plugin should now be able to support all NAS vendors with the
389 \texttt{volume\_format} plugin command option.
390
391 On some NDMP devices such as Celera or Blueray, the administrator can use arbitrary
392 volume structure name, ex:
393
394 \begin{verbatim}
395  /dev/volume_home
396  /rootvolume/volume_tmp
397  /VG/volume_var
398 \end{verbatim}
399
400 The NDMP plugin should be aware of the structure organization in order to
401 detect if the administrator wants to restore in a new volume
402 (\texttt{where=/dev/vol\_tmp}) or inside a subdirectory of the targeted volume
403 (\texttt{where=/tmp}).
404
405 \begin{verbatim}
406 FileSet {
407  Name = NDMPFS
408  ...
409  Include {
410    Plugin = "ndmp:host=nasbox user=root pass=root file=/dev/vol1 volume_format=/dev/"
411  }
412 }
413 \end{verbatim}
414
415 Please contact Bacula Systems support to get NDMP Plugin specific
416 documentation.
417
418 \medskip
419 This project was funded by Bacula Systems and is available with the Bacula
420 Enterprise Edition.
421
422 \section{Always Backup a File}
423
424 When the Accurate mode is turned on, you can decide to always backup a file
425 by using then new {\bf A} Accurate option in your FileSet. For example:
426
427 \begin{verbatim}
428 Job {
429    Name = ...
430    FileSet = FS_Example
431    Accurate = yes
432    ...
433 }
434
435 FileSet {
436  Name = FS_Example
437  Include {
438    Options {
439      Accurate = A
440    }
441    File = /file
442    File = /file2
443  }
444  ...
445 }
446 \end{verbatim}
447
448 This project was funded by Bacula Systems based on an idea of James Harper and
449 is available with the Bacula Enterprise Edition.
450
451 \section{Setting Accurate Mode During at Runtime}
452
453 You are now able to specify the Accurate mode on the \texttt{run} command and
454 in the Schedule resource.
455
456 \begin{verbatim}
457 * run accurate=yes job=Test
458 \end{verbatim}
459
460 \begin{verbatim}
461 Schedule {
462   Name = WeeklyCycle
463   Run = Full 1st sun at 23:05
464   Run = Differential accurate=yes 2nd-5th sun at 23:05
465   Run = Incremental  accurate=no  mon-sat at 23:05
466 }
467 \end{verbatim}
468
469 It can allow you to save memory and and CPU resources on the catalog server in
470 some cases.
471
472 \medskip
473 These advanced tuning options are available with the Bacula Enterprise Edition.
474
475 % Common with community
476 \section{Additions to RunScript variables}
477 You can have access to JobBytes, JobFiles and Director name using \%b, \%F and \%D
478 in your runscript command. The Client address is now available through \%h.
479
480 \begin{verbatim}
481 RunAfterJob = "/bin/echo Job=%j JobBytes=%b JobFiles=%F ClientAddress=%h Dir=%D"
482 \end{verbatim}
483
484 \section{LZO Compression}
485
486 LZO compression was added in the Unix File Daemon. From the user point of view,
487 it works like the GZIP compression (just replace {\bf compression=GZIP} with
488 {\bf compression=LZO}).
489
490 For example:
491 \begin{verbatim}
492 Include {
493    Options { compression=LZO }
494    File = /home
495    File = /data
496 }
497 \end{verbatim}
498
499 LZO provides much faster compression and decompression speed but lower
500 compression ratio than GZIP. It is a good option when you backup to disk. For
501 tape, the built-in compression may be a better option.
502
503 LZO is a good alternative for GZIP1 when you don't want to slow down your
504 backup. On a modern CPU it should be able to run almost as fast as:
505
506 \begin{itemize}
507 \item your client can read data from disk. Unless you have very fast disks like
508   SSD or large/fast RAID array.
509 \item the data transfers between the file daemon and the storage daemon even on
510   a 1Gb/s link.
511 \end{itemize}
512
513 Note that bacula only use one compression level LZO1X-1.
514
515 \medskip
516 The code for this feature was contributed by Laurent Papier.
517
518 \section{New Tray Monitor}
519
520 Since the old integrated Windows tray monitor doesn't work with
521 recent Windows versions, we have written a new Qt Tray Monitor that is available
522 for both Linux and Windows.  In addition to all the previous features,
523 this new version allows you to run Backups from 
524 the tray monitor menu.
525
526 \begin{figure}[htbp]
527   \centering
528   \includegraphics[width=10cm]{\idir tray-monitor}
529   \label{fig:traymonitor}
530   \caption{New tray monitor}
531 \end{figure}
532
533 \begin{figure}[htbp]
534   \centering
535   \includegraphics[width=10cm]{\idir tray-monitor1}
536   \label{fig:traymonitor1}
537   \caption{Run a Job through the new tray monitor}
538 \end{figure}
539
540
541 To be able to run a job from the tray monitor, you need to
542 allow specific commands in the Director monitor console:
543 \begin{verbatim}
544 Console {
545     Name = win2003-mon
546     Password = "xxx"
547     CommandACL = status, .clients, .jobs, .pools, .storage, .filesets, .messages, run
548     ClientACL = *all*               # you can restrict to a specific host
549     CatalogACL = *all*
550     JobACL = *all*
551     StorageACL = *all*
552     ScheduleACL = *all*
553     PoolACL = *all*
554     FileSetACL = *all*
555     WhereACL = *all*
556 }
557 \end{verbatim}
558
559 \medskip
560 This project was funded by Bacula Systems and is available with Bacula
561 the Enterprise Edition and the Community Edition.
562
563 \section{Purge Migration Job}
564
565 The new {\bf Purge Migration Job} directive may be added to the Migration
566 Job definition in the Director's configuration file. When it is enabled 
567 the Job that was migrated during a migration will be purged at
568 the end of the migration job.
569
570 For example:
571 \begin{verbatim}
572 Job {
573   Name = "migrate-job"
574   Type = Migrate
575   Level = Full
576   Client = localhost-fd
577   FileSet = "Full Set"
578   Messages = Standard
579   Storage = DiskChanger
580   Pool = Default
581   Selection Type = Job
582   Selection Pattern = ".*Save"
583 ...
584   Purge Migration Job = yes
585 }
586 \end{verbatim}
587
588 \medskip
589
590 This project was submitted by Dunlap Blake; testing and documentation was funded
591 by Bacula Systems.
592
593 \section{Changes in the Pruning Algorithm}
594
595 We rewrote the job pruning algorithm in this version. Previously, in some users
596 reported that the pruning process at the end of jobs was very long. It should
597 not be longer the case. Now, Bacula won't prune automatically a Job if this
598 particular Job is needed to restore data. Example:
599
600 \begin{verbatim}
601 JobId: 1  Level: Full
602 JobId: 2  Level: Incremental
603 JobId: 3  Level: Incremental
604 JobId: 4  Level: Differential
605 .. Other incrementals up to now
606 \end{verbatim}
607
608 In this example, if the Job Retention defined in the Pool or in the Client
609 resource causes that Jobs with Jobid in 1,2,3,4 can be pruned, Bacula will
610 detect that JobId 1 and 4 are essential to restore data at the current state
611 and will prune only JobId 2 and 3.
612
613 \texttt{Important}, this change affect only the automatic pruning step after a
614 Job and the \texttt{prune jobs} Bconsole command. If a volume expires after the
615 \texttt{VolumeRetention} period, important jobs can be pruned.
616
617 \section{Ability to Verify any specified Job}
618 You now have the ability to tell Bacula which Job should verify instead of
619 automatically verify just the last one.
620
621 This feature can be used with VolumeToCatalog, DiskToCatalog and Catalog level.
622
623 To verify a given job, just specify the Job jobid in argument when starting the
624 job.
625 \begin{verbatim}
626 *run job=VerifyVolume jobid=1 level=VolumeToCatalog
627 Run Verify job
628 JobName:     VerifyVolume
629 Level:       VolumeToCatalog
630 Client:      127.0.0.1-fd
631 FileSet:     Full Set
632 Pool:        Default (From Job resource)
633 Storage:     File (From Job resource)
634 Verify Job:  VerifyVol.2010-09-08_14.17.17_03
635 Verify List: /tmp/regress/working/VerifyVol.bsr
636 When:        2010-09-08 14:17:31
637 Priority:    10
638 OK to run? (yes/mod/no):
639 \end{verbatim}
640
641 \medskip
642 This project was funded by Bacula Systems and is available with Bacula
643 Enterprise Edition and Community Edition.