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