4 \section*{Storage Daemon Configuration}
5 \label{_ChapterStart31}
6 \index[general]{Storage Daemon Configuration}
7 \index[general]{Configuration!Storage Daemon}
8 \addcontentsline{toc}{section}{Storage Daemon Configuration}
11 \index[general]{General}
12 \addcontentsline{toc}{subsection}{General}
14 The Storage Daemon configuration file has relatively few resource definitions.
15 However, due to the great variation in backup media and system capabilities,
16 the storage daemon must be highly configurable. As a consequence, there are
17 quite a large number of directives in the Device Resource definition that
18 allow you to define all the characteristics of your Storage device (normally a
19 tape drive). Fortunately, with modern storage devices, the defaults are
20 sufficient, and very few directives are actually needed.
22 Examples of {\bf Device} resource directives that are known to work for a
23 number of common tape drives can be found in the {\bf
24 \lt{}bacula-src\gt{}/examples/devices} directory, and most will also be listed
27 For a general discussion of configuration file and resources including the
28 data types recognized by {\bf Bacula}, please see the
29 \ilink{Configuration}{_ChapterStart16} chapter of this manual. The
30 following Storage Resource definitions must be defined:
34 \ilink{Storage}{StorageResource} -- to define the name of the
37 \ilink{Director}{DirectorResource1} -- to define the Director's
38 name and his access password.
40 \ilink{Device}{DeviceResource} -- to define the
41 characteristics of your storage device (tape drive).
43 \ilink{Messages}{_ChapterStart15} -- to define where error and
44 information messages are to be sent.
47 \subsection*{Storage Resource}
48 \label{StorageResource}
49 \index[general]{Resource!Storage}
50 \index[general]{Storage Resource}
51 \addcontentsline{toc}{subsection}{Storage Resource}
53 In general, the properties specified under the Storage resource define global
54 properties of the Storage daemon. Each Storage daemon configuration file must
55 have one and only one Storage resource definition.
59 \item [Name = \lt{}Storage-Daemon-Name\gt{}]
61 \index[sd]{Directive!Name}
62 Specifies the Name of the Storage daemon. This directive is required.
64 \item [Working Directory = \lt{}Directory\gt{}]
65 \index[sd]{Working Directory}
66 \index[sd]{Directive!Working Directory}
67 This directive is mandatory and specifies a directory in which the Storage
68 daemon may put its status files. This directory should be used only by {\bf
69 Bacula}, but may be shared by other Bacula daemons provided the names
70 given to each daemon are unique. This directive is
73 \item [Pid Directory = \lt{}Directory\gt{}]
74 \index[sd]{Pid Directory}
75 \index[sd]{Directive!Pid Directory}
76 This directive is mandatory and specifies a directory in which the Director
77 may put its process Id file files. The process Id file is used to shutdown
78 Bacula and to prevent multiple copies of Bacula from running simultaneously.
79 This directive is required. Standard shell expansion of the {\bf Directory}
80 is done when the configuration file is read so that values such as {\bf
81 \$HOME} will be properly expanded.
83 Typically on Linux systems, you will set this to: {\bf /var/run}. If you are
84 not installing Bacula in the system directories, you can use the {\bf Working
85 Directory} as defined above.
87 \item [Heartbeat Interval = \lt{}time-interval\gt{}]
88 \index[sd]{Heartbeat Interval}
89 \index[sd]{Directive!Heartbeat Interval}
90 \index[general]{Heartbeat Interval}
91 \index[general]{Broken pipe}
92 This directive defines an interval of time. When the Storage daemon is
93 waiting for the operator to mount a tape, each time interval, it will
94 send a heartbeat signal to the File daemon. The default interval is
95 zero which disables the heartbeat. This feature is particularly useful
96 if you have a router such as 3Com that does not follow Internet
97 standards and times out an valid connection after a short duration
98 despite the fact that keepalive is set. This usually results
99 in a broken pipe error message.
101 \item [Maximum Concurrent Jobs = \lt{}number\gt{}]
102 \index[sd]{Maximum Concurrent Jobs}
103 \index[sd]{Directive!Maximum Concurrent Jobs}
104 where \lt{}number\gt{} is the maximum number of Jobs that should run
105 concurrently. The default is set to 10, but you may set it to a larger
106 number. Each contact from the Director (e.g. status request, job start
107 request) is considered as a Job, so if you want to be able to do a {\bf
108 status} request in the console at the same time as a Job is running, you
109 will need to set this value greater than 1. To run simultaneous Jobs,
110 you will need to set a number of other directives in the Director's
111 configuration file. Which ones you set depend on what you want, but you
112 will almost certainly need to set the {\bf Maximum Concurrent Jobs} in
113 the Storage resource in the Director's configuration file and possibly
114 those in the Job and Client resources.
116 \item [SDAddresses = \lt{}IP-address-specification\gt{}]
117 \index[sd]{SDAddresses}
118 \index[sd]{Directive!SDAddresses}
119 Specify the ports and addresses on which the Storage daemon will listen
120 for Director connections. Normally, the default is sufficient and you
121 do not need to specify this directive. Probably the simplest way to
122 explain how this directive works is to show an example:
126 SDAddresses = { ip = {
127 addr = 1.2.3.4; port = 1205; }
129 addr = 1.2.3.4; port = http; }
142 addr = 201:220:222::2
145 addr = bluedot.thun.net
151 where ip, ip4, ip6, addr, and port are all keywords. Note, that the address
152 can be specified as either a dotted quadruple, or IPv6 colon notation, or as
153 a symbolic name (only in the ip specification). Also, port can be specified
154 as a number or as the mnemonic value from the /etc/services file. If a port
155 is not specified, the default will be used. If an ip section is specified,
156 the resolution can be made either by IPv4 or IPv6. If ip4 is specified, then
157 only IPv4 resolutions will be permitted, and likewise with ip6.
159 Using this directive, you can replace both the SDPort and SDAddress
160 directives shown below.
162 \item [SDPort = \lt{}port-number\gt{}]
164 \index[sd]{Directive!SDPort}
165 Specifies port number on which the Storage daemon listens for Director
166 connections. The default is 9103.
168 \item [SDAddress = \lt{}IP-Address\gt{}]
169 \index[sd]{SDAddress}
170 \index[sd]{Directive!SDAddress}
171 This directive is optional, and if it is specified, it will cause the
172 Storage daemon server (for Director and File daemon connections) to bind
173 to the specified {\bf IP-Address}, which is either a domain name or an
174 IP address specified as a dotted quadruple. If this directive is not
175 specified, the Storage daemon will bind to any available address (the
180 The following is a typical Storage daemon Storage definition.
185 # "Global" Storage daemon configuration specifications appear
186 # under the Storage resource.
189 Name = "Storage daemon"
191 WorkingDirectory = "~/bacula/working"
192 Pid Directory = "~/bacula/working"
197 \subsection*{Director Resource}
198 \label{DirectorResource1}
199 \index[general]{Director Resource}
200 \index[general]{Resource!Director}
201 \addcontentsline{toc}{subsection}{Director Resource}
203 The Director resource specifies the Name of the Director which is permitted
204 to use the services of the Storage daemon. There may be multiple Director
205 resources. The Director Name and Password must match the corresponding
206 values in the Director's configuration file.
210 \item [Name = \lt{}Director-Name\gt{}]
212 \index[sd]{Directive!Name}
213 Specifies the Name of the Director allowed to connect to the Storage daemon.
214 This directive is required.
216 \item [Password = \lt{}Director-password\gt{}]
218 \index[sd]{Directive!Password}
219 Specifies the password that must be supplied by the above named Director.
220 This directive is required.
222 \item [Monitor = \lt{}yes|no\gt{}]
224 \index[sd]{Directive!Monitor}
225 If Monitor is set to {\bf no} (default), this director will have full
226 access to this Storage daemon. If Monitor is set to {\bf yes}, this
227 director will only be able to fetch the current status of this Storage
230 Please note that if this director is being used by a Monitor, we highly
231 recommend to set this directive to {\bf yes} to avoid serious security
236 The following is an example of a valid Director resource definition:
242 Password = my_secret_password
247 \label{DeviceResource}
248 \subsection*{Device Resource}
249 \index[general]{Resource!Device}
250 \index[general]{Device Resource}
251 \addcontentsline{toc}{subsection}{Device Resource}
253 The Device Resource specifies the details of each device (normally a tape
254 drive) that can be used by the Storage daemon. There may be multiple
255 Device resources for a single Storage daemon. In general, the properties
256 specified within the Device resource are specific to the Device.
260 \item [Name = {\it Device-Name}]
262 \index[sd]{Directive!Name}
263 Specifies the Name that the Director will use when asking to backup or
264 restore to or from to this device. This is the logical Device name, and may
265 be any string up to 127 characters in length. It is generally a good idea to
266 make it correspond to the English name of the backup device. The physical
267 name of the device is specified on the {\bf Archive Device} directive
268 described below. The name you specify here is also used in your Director's
270 \ilink{Device directive}{StorageResource2} in its Storage
273 \item [Archive Device = {\it name-string}]
274 \index[sd]{Archive Device}
275 \index[sd]{Directive!Archive Device}
276 The specified {\bf name-string} gives the system file name of the storage
277 device managed by this storage daemon. This will usually be the device file
278 name of a removable storage device (tape drive), for example "{\bf
279 /dev/nst0}" or "{\bf /dev/rmt/0mbn}". For a DVD-writer, it will be for
280 example {\bf /dev/hdc}. It may also be a directory name if you are archiving
281 to disk storage. In this case, you must supply the full absolute path to the
282 directory. When specifying a tape device, it is preferable that the
283 "non-rewind" variant of the device file name be given. In addition, on
284 systems such as Sun, which have multiple tape access methods, you must be
285 sure to specify to use Berkeley I/O conventions with the device. The {\bf b}
286 in the Solaris (Sun) archive specification {\bf /dev/rmt/0mbn} is what is
287 needed in this case. Bacula does not support SysV tape drive behavior.
289 As noted above, normally the Archive Device is the name of a tape drive, but
290 you may also specify an absolute path to an existing directory. If the Device
291 is a directory Bacula will write to file storage in the specified directory,
292 and the filename used will be the Volume name as specified in the Catalog.
293 If you want to write into more than one directory (i.e. to spread the load to
294 different disk drives), you will need to define two Device resources, each
295 containing an Archive Device with a different directory.
297 In addition to a tape device name or a directory name, Bacula will accept the
298 name of a FIFO. A FIFO is a special kind of file that connects two programs
299 via kernel memory. If a FIFO device is specified for a backup operation, you
300 must have a program that reads what Bacula writes into the FIFO. When the
301 Storage daemon starts the job, it will wait for {\bf MaximumOpenWait} seconds
302 for the read program to start reading, and then time it out and terminate
303 the job. As a consequence, it is best to start the read program at the
304 beginning of the job perhaps with the {\bf RunBeforeJob} directive. For this
305 kind of device, you never want to specify {\bf AlwaysOpen}, because you want
306 the Storage daemon to open it only when a job starts, so you must explicitly
307 set it to {\bf No}. Since a FIFO is a one way device, Bacula will not attempt
308 to read a label of a FIFO device, but will simply write on it. To create a
309 FIFO Volume in the catalog, use the {\bf add} command rather than then {\bf
310 label} command to avoid attempting to write a label.
312 During a restore operation, if the Archive Device is a FIFO, Bacula will
313 attempt to read from the FIFO, so you must have an external program that
314 writes into the FIFO. Bacula will wait {\bf MaximumOpenWait} seconds for the
315 program to begin writing and will then time it out and terminate the job. As
316 noted above, you may use the {\bf RunBeforeJob} to start the writer program
317 at the beginning of the job.
319 The Archive Device directive is required.
321 \item [Device Type = {\it type-specification}]
322 \index[sd]{Device Type}
323 \index[sd]{Directive!Device Type}
324 The Device Type specification allows you to explicitly tell Bacula
325 what kind of device you are defining. It the {\it type-specification}
326 may be one of the following:
329 Tells Bacula that the device is a file. It may either be a
330 file defined on fixed medium or a removable filesystem such as
331 USB. All files must be random access devices.
333 The device is a tape device and thus is sequential access. Tape devices
334 are controlled using ioctl() calls.
336 The device is a first-in-first out sequential access read-only
337 or write-only device.
339 The device is a DVD. DVDs are sequential access for writing, but
340 random access for reading.
343 The Device Type directive is not required, and if not specified, Bacula
344 will attempt to guess what kind of device has been specified using the
345 Archive Device specification supplied. There are several advantages to
346 explicitly specifying the Device Type. First, on some systems, block and
347 character devices have the same type, which means that on those systems,
348 Bacula is unlikely to be able to correctly guess that a device is a DVD.
349 Secondly, if you explicitly specify the Device Type, the mount point
350 need not be defined until the device is opened. This is the case with
351 most removable devices such as USB that are mounted by the HAL daemon.
352 If the Device Type is not explicitly specified, then the mount point
353 must exist when the Storage daemon starts.
355 This directive was implemented in Bacula version 1.38.6.
358 \item [Media Type = {\it name-string}]
359 \index[sd]{Media Type}
360 \index[sd]{Directive!Media Type}
361 The specified {\bf name-string} names the type of media supported by this
362 device, for example, "DLT7000". Media type names are arbitrary in that you
363 set them to anything you want, but they must be known to the volume
364 database to keep track of which storage daemons can read which volumes. In
365 general, each different storage type should have a unique Media Type
366 associated with it. The same {\bf name-string} must appear in the
367 appropriate Storage resource definition in the Director's configuration
370 Even though the names you assign are arbitrary (i.e. you choose the name
371 you want), you should take care in specifying them because the Media Type
372 is used to determine which storage device Bacula will select during
373 restore. Thus you should probably use the same Media Type specification
374 for all drives where the Media can be freely interchanged. This is not
375 generally an issue if you have a single Storage daemon, but it is with
376 multiple Storage daemons, especially if they have incompatible media.
378 For example, if you specify a Media Type of "DDS-4" then during the
379 restore, Bacula will be able to choose any Storage Daemon that handles
380 "DDS-4". If you have an autochanger, you might want to name the Media Type
381 in a way that is unique to the autochanger, unless you wish to possibly use
382 the Volumes in other drives. You should also ensure to have unique Media
383 Type names if the Media is not compatible between drives. This
384 specification is required for all devices.
386 In addition, if you are using disk storage, each Device resource will
387 generally have a different mount point or directory. In order for
388 Bacula to select the correct Device resource, each one must have a
392 \item [Autochanger = {\it Yes|No}]
393 \index[sd]{Autochanger}
394 \index[sd]{Directive!Autochanger}
395 If {\bf Yes}, this device belongs to an automatic tape changer, and you
396 must specify an {\bf Autochanger} resource that points to the {\bf
397 Device} resources. You must also specify a
398 {\bf Changer Device}. If the Autochanger direcive is set to {\bf
399 No} (default), the volume must be manually changed. You should also
400 have an identical directive to the
401 \ilink{Storage resource}{Autochanger1} in the Director's
402 configuration file so that when labeling tapes you are prompted for the slot.
404 \item [Changer Device = {\it name-string}]
405 \index[sd]{Changer Device}
406 \index[sd]{Directive!Changer Device}
407 The specified {\bf name-string} must be the {\bf generic SCSI} device
408 name of the autochanger that corresponds to the normal read/write
409 {\bf Archive Device} specified in the Device resource. This
410 generic SCSI device name should be specified if you have an autochanger
411 or if you have a standard tape drive and want to use the
412 {\bf Alert Command} (see below). For example, on Linux systems, for
413 an Archive Device name of {\bf /dev/nst0}, you would specify {\bf
414 /dev/sg0} for the Changer Device name. Depending on your exact
415 configuration, and the number of autochangers or the type of
416 autochanger, what you specify here can vary. This directive is
417 optional. See the \ilink{ Using Autochangers}{_ChapterStart18} chapter
418 of this manual for more details of using this and the following
419 autochanger directives.
421 \item [Changer Command = {\it name-string}]
422 \index[sd]{Changer Command}
423 \index[sd]{Directive!Changer Command}
424 The {\bf name-string} specifies an external program to be called that will
425 automatically change volumes as required by {\bf Bacula}. Normally,
426 this directive will be specified only in the {\bf AutoChanger} resource,
427 which is then used for all devices. However, you may also specify
428 the different {\bf Changer Command} in each resource Device.
430 you will specify the Bacula supplied {\bf mtx-changer} script as follows:
434 Changer Command = "/path/mtx-changer %c %o %S %a %d"
438 and you will install the {\bf mtx} on your system (found in the {\bf depkgs}
439 release). An example of this command is in the default bacula-sd.conf file.
440 For more details on the substitution characters that may be specified to
441 configure your autochanger please see the
442 \ilink{Autochangers}{_ChapterStart18} chapter of this manual.
443 For FreeBSD users, you might want to see one of the several {\bf chio}
444 scripts in {\bf examples/autochangers}.
446 \item [Alert Command = {\it name-string}]
447 \index[sd]{Alert Command}
448 The {\bf name-string} specifies an external program to be called at the
449 completion of each Job after the device is released. The purpose of this
450 command is to check for Tape Alerts, which are present when something is
451 wrong with your tape drive (at least for most modern tape drives). The same
452 substitution characters that may be specified in the Changer Command may also
453 be used in this string. For more information, please see the
454 \ilink{Autochangers}{_ChapterStart18} chapter of this manual.
457 Note, it is not necessary to have an autochanger to use this command. The
458 example below uses the {\bf tapeinfo} program that comes with the {\bf mtx}
459 package, but it can be used on any tape drive. However, you will need to
460 specify a {\bf Changer Device} directive in your Device resource (see above)
461 so that the generic SCSI device name can be edited into the command (with the
464 An example of the use of this command to print Tape Alerts in the Job report
469 Alert Command = "sh -c 'tapeinfo -f %c | grep TapeAlert'"
474 and an example output when there is a problem could be:
478 bacula-sd Alert: TapeAlert[32]: Interface: Problem with SCSI interface
479 between tape drive and initiator.
484 \item [Drive Index = {\it number}]
485 \index[sd]{Drive Index}
486 \index[sd]{Directive!Drive Index}
487 The {\bf Drive Index} that you specify is passed to the {\bf
488 mtx-changer} script and is thus passed to the {\bf mtx} program. By
489 default, the Drive Index is zero, so if you have only one drive in your
490 autochanger, everything will work normally. However, if you have
491 multiple drives, you must specify multiple Bacula Device resources (one
492 for each drive). The first Device should have the Drive Index set to 0,
493 and the second Device Resource should contain a Drive Index set to 1,
494 and so on. This will then permit you to use two or more drives in your
495 autochanger. As of Bacula version 1.38.0, using the {\bf Autochanger}
496 resource, Bacula will automatically ensure that only one drive at a time
497 uses the autochanger script, so you no longer need locking scripts as in
498 the past -- the default mtx-changer script works for any number of
501 \item [Autoselect = {\it Yes|No}]
502 \index[sd]{Autoselect}
503 \index[sd]{Directive!Autoselect}
504 If this directive is set to {\bf yes} (default), and the Device
505 belongs to an autochanger, then when the Autochanger is referenced
506 by the Director, this device can automatically be selected. If this
507 directive is set to {\bf no}, then the Device can only be referenced
508 by directly using the Device name in the Director. This is useful
509 for reserving a drive for something special such as a high priority
510 backup or restore operations.
512 \item [Maximum Changer Wait = {\it time}]
513 \index[sd]{Maximum Changer Wait}
514 \index[sd]{Directive!Maximum Changer Wait}
515 This directive specifies the maximum time in seconds for Bacula to wait
516 for an autochanger to change the volume. If this time is exceeded,
517 Bacula will invalidate the Volume slot number stored in the catalog and
518 try again. If no additional changer volumes exist, Bacula will ask the
519 operator to intervene. The default is 5 minutes.
521 \item [Maximum Rewind Wait = {\it time}]
522 \index[sd]{Maximum Rewind Wait}
523 \index[sd]{Directive!Maximum Rewind Wait}
524 This directive specifies the maximum time in seconds for Bacula to wait
525 for a rewind before timing out. If this time is exceeded,
526 Bacula will cancel the job. The default is 5 minutes.
528 \item [Maximum Open Wait = {\it time}]
529 \index[sd]{Maximum Open Wait}
530 \index[sd]{Directive!Maximum Open Wait}
531 This directive specifies the maximum time in seconds for Bacula to wait
532 for a open before timing out. If this time is exceeded,
533 Bacula will cancel the job. The default is 5 minutes.
535 \item [Always Open = {\it Yes|No}]
536 \index[sd]{Always Open}
537 \index[sd]{Directive!Always Open}
538 If {\bf Yes} (default), Bacula will always keep the device open unless
539 specifically {\bf unmounted} by the Console program. This permits
540 Bacula to ensure that the tape drive is always available. If you set
541 {\bf AlwaysOpen} to {\bf no} {\bf Bacula} will only open the drive when
542 necessary, and at the end of the Job if no other Jobs are using the
543 drive, it will be freed. The next time Bacula wants to append to a tape
544 on a drive that was freed, Bacula must rewind the tape and position to
545 the end. To avoid unnecessary tape positioning and to minimize
546 unnecessary operator intervention, it is highly recommended that {\bf
547 Always Open = yes}. This also ensures that the drive is available when
550 If you have {\bf Always Open = yes} (recommended) and you want to use the
551 drive for something else, simply use the {\bf unmount} command in the Console
552 program to release the drive. However, don't forget to remount the drive with
553 {\bf mount} when the drive is available or the next Bacula job will block.
555 For File storage, this directive is ignored. For a FIFO storage device, you
556 must set this to {\bf No}.
558 Please note that if you set this directive to {\bf No} Bacula will release
559 the tape drive between each job, and thus the next job will rewind the tape
560 and position it to the end of the data. This can be a very time consuming
563 \item [Volume Poll Interval = {\it time}]
564 \index[sd]{Volume Poll Interval}
565 \index[sd]{Directive!Volume Poll Interval}
566 If the time specified on this directive is non-zero, after asking the
567 operator to mount a new volume Bacula will periodically poll (or read) the
568 drive at the specified interval to see if a new volume has been mounted. If
569 the time interval is zero (the default), no polling will occur. This
570 directive can be useful if you want to avoid operator intervention via the
571 console. Instead, the operator can simply remove the old volume and insert
572 the requested one, and Bacula on the next poll will recognize the new tape
573 and continue. Please be aware that if you set this interval too small, you
574 may excessively wear your tape drive if the old tape remains in the drive,
575 since Bacula will read it on each poll. This can be avoided by ejecting the
576 tape using the {\bf Offline On Unmount} and the {\bf Close on Poll}
578 However, if you are using a Linux 2.6 kernel or other OSes
579 such as FreeBSD or Solaris, the Offline On Unmount will leave the drive
580 with no tape, and Bacula will not be able to properly open the drive and
581 may fail the job. For more information on this problem, please see the
582 \ilink{description of Offline On Unmount}{NoTapeInDrive} in the Tape
585 \item [Close on Poll= {\it Yes|No}]
586 \index[sd]{Close on Poll}
587 \index[sd]{Directive!Close on Poll}
588 If {\bf Yes}, Bacula close the device (equivalent to an unmount except no
589 mount is required) and reopen it at each poll. Normally this is not too
590 useful unless you have the {\bf Offline on Unmount} directive set, in which
591 case the drive will be taken offline preventing wear on the tape during any
592 future polling. Once the operator inserts a new tape, Bacula will recognize
593 the drive on the next poll and automatically continue with the backup.
594 Please see above more more details.
596 \item [Maximum Open Wait = {\it time}]
597 \index[sd]{Maximum Open Wait}
598 \index[sd]{Directive!Maximum Open Wait}
599 This directive specifies the maximum amount of time in seconds that
600 Bacula will wait for a device that is busy. The default is 5 minutes.
601 If the device cannot be obtained, the current Job will be terminated in
602 error. Bacula will re-attempt to open the drive the next time a Job
603 starts that needs the the drive.
605 \item [Removable media = {\it Yes|No}]
606 \index[sd]{Removable media}
607 \index[sd]{Directive!Removable media}
608 If {\bf Yes}, this device supports removable media (for example, tapes
609 or CDs). If {\bf No}, media cannot be removed (for example, an
610 intermediate backup area on a hard disk).
612 \item [Random access = {\it Yes|No}]
613 \index[sd]{Random access}
614 \index[sd]{Directive!Random access}
615 If {\bf Yes}, the archive device is assumed to be a random access medium
616 which supports the {\bf lseek} (or {\bf lseek64} if Largefile is enabled
617 during configuration) facility.
619 \item [Minimum block size = {\it size-in-bytes}]
620 \index[sd]{Minimum block size}
621 \index[sd]{Directive!Minimum block size}
622 On most modern tape drives, you will not need or want to specify this
623 directive, and if you do so, it will be to make Bacula use fixed block
624 sizes. This statement applies only to non-random access devices (e.g.
625 tape drives). Blocks written by the storage daemon to a non-random
626 archive device will never be smaller than the given {\bf size-in-bytes}.
627 The Storage daemon will attempt to efficiently fill blocks with data
628 received from active sessions but will, if necessary, add padding to a
629 block to achieve the required minimum size.
631 To force the block size to be fixed, as is the case for some non-random
632 access devices (tape drives), set the {\bf Minimum block size} and the
633 {\bf Maximum block size} to the same value (zero included). The default
634 is that both the minimum and maximum block size are zero and the default
635 block size is 64,512 bytes.
637 For example, suppose you want a fixed block size of 100K bytes, then you
643 Minimum block size = 100K
644 Maximum block size = 100K
649 Please note that if you specify a fixed block size as shown above, the tape
650 drive must either be in variable block size mode, or if it is in fixed block
651 size mode, the block size (generally defined by {\bf mt}) {\bf must} be
652 identical to the size specified in Bacula -- otherwise when you attempt to
653 re-read your Volumes, you will get an error.
655 If you want the block size to be variable but with a 64K minimum and 200K
656 maximum (and default as well), you would specify:
661 Minimum block size = 64K
662 Maximum blocksize = 200K
667 \item [Maximum block size = {\it size-in-bytes}]
668 \index[sd]{Maximum block size}
669 \index[sd]{Directive!Maximum block size}
670 On most modern tape drives, you will not need to specify this directive.
671 If you do so, it will most likely be to use fixed block sizes (see
672 Minimum block size above). The Storage daemon will always attempt to
673 write blocks of the specified {\bf size-in-bytes} to the archive device.
674 As a consequence, this statement specifies both the default block size
675 and the maximum block size. The size written never exceed the given
676 {\bf size-in-bytes}. If adding data to a block would cause it to exceed
677 the given maximum size, the block will be written to the archive device,
678 and the new data will begin a new block.
680 If no value is specified or zero is specified, the Storage daemon will
681 use a default block size of 64,512 bytes (126 * 512).
683 \item [Hardware End of Medium = {\it Yes|No}]
684 \index[sd]{Hardware End of Medium}
685 \index[sd]{Directive!Hardware End of Medium}
686 If {\bf No}, the archive device is not required to support end of medium
687 ioctl request, and the storage daemon will use the forward space file
688 function to find the end of the recorded data. If {\bf Yes}, the archive
689 device must support the {\tt ioctl} {\tt MTEOM} call, which will position the
690 tape to the end of the recorded data. In addition, your SCSI driver must keep
691 track of the file number on the tape and report it back correctly by the
692 {\bf MTIOCGET} ioctl. Note, some SCSI drivers will correctly forward space to
693 the end of the recorded data, but they do not keep track of the file number.
694 On Linux machines, the SCSI driver has a {\bf fast-eod} option, which if set
695 will cause the driver to lose track of the file number. You should ensure
696 that this option is always turned off using the {\bf mt} program.
698 Default setting for Hardware End of Medium is {\bf Yes}. This function is
699 used before appending to a tape to ensure that no previously written data is
700 lost. We recommend if you have a non-standard or unusual tape drive that you
701 use the {\bf btape} program to test your drive to see whether or not it
702 supports this function. All modern (after 1998) tape drives support this
705 \item [Fast Forward Space File = {\it Yes|No}]
706 \index[sd]{Fast Forward Space File}
707 \index[sd]{Directive!Fast Forward Space File}
708 If {\bf No}, the archive device is not required to support keeping track of
709 the file number ({\bf MTIOCGET} ioctl) during forward space file. If {\bf
710 Yes}, the archive device must support the {\tt ioctl} {\tt MTFSF} call, which
711 virtually all drivers support, but in addition, your SCSI driver must keep
712 track of the file number on the tape and report it back correctly by the
713 {\bf MTIOCGET} ioctl. Note, some SCSI drivers will correctly forward space,
714 but they do not keep track of the file number or more seriously, they do not
715 report end of medium.
717 Default setting for Fast Forward Space File is {\bf Yes}.
719 \item [Use MTIOCGET = {\it Yes|No}]
720 \index[sd]{Use MTIOCGET}
721 \index[sd]{Directive!Use MTIOCGET}
722 If {\bf No}, the operating system is not required to support keeping track of
723 the file number and reporting it in the ({\bf MTIOCGET} ioctl). The default
724 is {\bf Yes}. If you must set this to No, Bacula will do the proper file
725 position determination, but it is very unfortunate because it means that
726 tape movement is very inefficient.
727 Fortunately, this operation system deficiency seems to be the case only
728 on a few *BSD systems. Operating systems known to work correctly are
729 Solaris, Linux and FreeBSD.
731 \item [BSF at EOM = {\it Yes|No}]
732 \index[sd]{BSF at EOM}
733 \index[sd]{Directive!BSF at EOM}
734 If {\bf No}, the default, no special action is taken by Bacula with the End
735 of Medium (end of tape) is reached because the tape will be positioned after
736 the last EOF tape mark, and Bacula can append to the tape as desired.
737 However, on some systems, such as FreeBSD, when Bacula reads the End of
738 Medium (end of tape), the tape will be positioned after the second EOF tape
739 mark (two successive EOF marks indicated End of Medium). If Bacula appends
740 from that point, all the appended data will be lost. The solution for such
741 systems is to specify {\bf BSF at EOM} which causes Bacula to backspace over
742 the second EOF mark. Determination of whether or not you need this directive
743 is done using the {\bf test} command in the {\bf btape} program.
745 \item [TWO EOF = {\it Yes|No}]
747 \index[sd]{Directive!TWO EOF}
748 If {\bf Yes}, Bacula will write two end of file marks when terminating a tape
749 -- i.e. after the last job or at the end of the medium. If {\bf No}, the
750 default, Bacula will only write one end of file to terminate the tape.
752 \item [Backward Space Record = {\it Yes|No}]
753 \index[sd]{Backward Space Record}
754 \index[sd]{Directive!Backward Space Record}
755 If {\it Yes}, the archive device supports the {\tt MTBSR ioctl} to backspace
756 records. If {\it No}, this call is not used and the device must be rewound
757 and advanced forward to the desired position. Default is {\bf Yes} for non
758 random-access devices. This function if enabled is used at the end of a
759 Volume after writing the end of file and any ANSI/IBM labels to determine whether
760 or not the last block was written correctly. If you turn this function off,
761 the test will not be done. This causes no harm as the re-read process is
762 precautionary rather than required.
764 \item [Backward Space File = {\it Yes|No}]
765 \index[sd]{Backward Space File}
766 \index[sd]{Directive!Backward Space File}
767 If {\it Yes}, the archive device supports the {\bf MTBSF} and {\bf MTBSF
768 ioctl}s to backspace over an end of file mark and to the start of a file. If
769 {\it No}, these calls are not used and the device must be rewound and
770 advanced forward to the desired position. Default is {\bf Yes} for non
771 random-access devices.
773 \item [Forward Space Record = {\it Yes|No}]
774 \index[sd]{Forward Space Record}
775 \index[sd]{Directive!Forward Space Record}
776 If {\it Yes}, the archive device must support the {\bf MTFSR ioctl} to
777 forward space over records. If {\bf No}, data must be read in order to
778 advance the position on the device. Default is {\bf Yes} for non
779 random-access devices.
781 \item [Forward Space File = {\it Yes|No}]
782 \index[sd]{Forward Space File}
783 \index[sd]{Directive!Forward Space File}
784 If {\bf Yes}, the archive device must support the {\tt MTFSF ioctl} to
785 forward space by file marks. If {\it No}, data must be read to advance the
786 position on the device. Default is {\bf Yes} for non random-access devices.
788 \item [Offline On Unmount = {\it Yes|No}]
789 \index[sd]{Offline On Unmount}
790 \index[sd]{Directive!Offline On Unmount}
791 The default for this directive is {\bf No}. If {\bf Yes} the archive device
792 must support the {\tt MTOFFL ioctl} to rewind and take the volume offline. In
793 this case, Bacula will issue the offline (eject) request before closing the
794 device during the {\bf unmount} command. If {\bf No} Bacula will not attempt
795 to offline the device before unmounting it. After an offline is issued, the
796 cassette will be ejected thus {\bf requiring operator intervention} to
797 continue, and on some systems require an explicit load command to be issued
798 ({\bf mt -f /dev/xxx load}) before the system will recognize the tape. If you
799 are using an autochanger, some devices require an offline to be issued prior
800 to changing the volume. However, most devices do not and may get very
803 If you are using a Linux 2.6 kernel or other OSes
804 such as FreeBSD or Solaris, the Offline On Unmount will leave the drive
805 with no tape, and Bacula will not be able to properly open the drive and
806 may fail the job. For more information on this problem, please see the
807 \ilink{description of Offline On Unmount}{NoTapeInDrive} in the Tape
811 \item [Maximum Volume Size = {\it size}]
812 \index[sd]{Maximum Volume Size}
813 \index[sd]{Directive!Maximum Volume Size}
814 No more than {\bf size} bytes will be written onto a given volume on the
815 archive device. This directive is used mainly in testing Bacula to
816 simulate a small Volume. It can also be useful if you wish to limit the
817 size of a File Volume to say less than 2GB of data. In some rare cases
818 of really antiquated tape drives that do not properly indicate when the
819 end of a tape is reached during writing (though I have read about such
820 drives, I have never personally encountered one). Please note, this
821 directive is deprecated (being phased out) in favor of the {\bf Maximum
822 Volume Bytes} defined in the Director's configuration file.
824 \item [Maximum File Size = {\it size}]
825 \index[sd]{Maximum File Size}
826 \index[sd]{Directive!Maximum File Size}
827 No more than {\bf size} bytes will be written into a given logical file
828 on the volume. Once this size is reached, an end of file mark is
829 written on the volume and subsequent data are written into the next
830 file. Breaking long sequences of data blocks with file marks permits
831 quicker positioning to the start of a given stream of data and can
832 improve recovery from read errors on the volume. The default is one
835 \item [Block Positioning = {\it yes|no}]
836 \index[sd]{Block Positioning}
837 \index[sd]{Directive!Block Positioning}
838 This directive is not normally used (and has not yet been tested). It will
839 tell Bacula not to use block positioning when it is reading tapes. This can
840 cause Bacula to be {\bf extremely} slow when restoring files. You might use
841 this directive if you wrote your tapes with Bacula in variable block mode
842 (the default), but your drive was in fixed block mode. If it then works as I
843 hope, Bacula will be able to re-read your tapes.
845 \item [Maximum Network Buffer Size = {\it bytes}]
846 \index[sd]{Maximum Network Buffer Size}
847 \index[sd]{Directive!Maximum Network Buffer Size}
848 where {\it bytes} specifies the initial network buffer size to use with the
849 File daemon. This size will be adjusted down if it is too large until
850 it is accepted by the OS. Please use care in setting this value since if
851 it is too large, it will be trimmed by 512 bytes until the OS is happy,
852 which may require a large number of system calls. The default value is
855 The default size was chosen to be relatively large but not too big in
856 the case that you are transmitting data over Internet. It is clear that
857 on a high speed local network, you can increase this number and improve
858 performance. For example, some users have found that if you use a value
859 of 65,536 bytes they get 5-10 times the throughput. Larger values for
860 most users don't seem to improve performance. If you are interested
861 in improving your backup speeds, this is definitely a place to
862 experiment. You will probably also want to make the corresponding change
863 in each of your File daemons conf files.
866 \item [Maximum Spool Size = {\it bytes}]
867 \index[sd]{Maximum Spool Size}
868 \index[sd]{Directive!Maximum Spool Size}
869 where the bytes specify the maximum spool size for all jobs that are running.
870 The default is no limit.
872 \item [Maximum Job Spool Size = {\it bytes}]
873 \index[sd]{Maximum Job Spool Size}
874 \index[sd]{Directive!Maximum Job Spool Size}
875 where the bytes specify the maximum spool size for any one job that is
876 running. The default is no limit.
877 This directive is implemented only in version 1.37 and later.
879 \item [Spool Directory = {\it directory}]
880 \index[sd]{Spool Directory}
881 \index[sd]{Directive!Spool Directory}
882 specifies the name of the directory to be used to store the spool files for
883 this device. This directory is also used to store temporary part files when
884 writing to a device that requires mount (DVD). The default is to use the
887 \item [Maximum Part Size = {\it bytes}]
888 \index[sd]{Maximum Part Size}
889 \index[sd]{Directive!Maximum Part Size}
890 This is the maximum size of a volume part file. The default is no limit.
891 This directive is implemented only in version 1.37 and later.
893 If the device requires mount, it is transfered to the device when this size
894 is reached. In this case, you must take care to have enough disk space left
895 in the spool directory.
897 Otherwise, it is left on the hard disk.
899 It is ignored for tape and FIFO devices.
904 \subsection*{Devices that require a mount (DVD)}
905 \index[general]{Devices that require a mount (DVD)}
906 \index[general]{DVD!Devices that require a mount}
907 \addcontentsline{toc}{subsection}{Devices that require a mount (DVD)}
909 All the directives in this section are implemented only in
910 Bacula version 1.37 and later and hence are available in version 1.38.6.
912 As of version 1.39.5, the directives
913 "Requires Mount", "Mount Point", "Mount Command", and "Unmount Command"
914 apply to removable filesystems such as USB in addition to DVD.
918 \item [Requires Mount = {\it Yes|No}]
919 \index[sd]{Requires Mount}
920 \index[sd]{Directive!Requires Mount}
921 You must set this directive to {\bf yes} for DVD-writers, and to {\bf no} for
922 all other devices (tapes/files). This directive indicates if the device
923 requires to be mounted to be read, and if it must be written in a special way.
924 If it set, {\bf Mount Point}, {\bf Mount Command}, {\bf Unmount Command} and
925 {\bf Write Part Command} directives must also be defined.
927 \item [Mount Point = {\it directory}]
928 \index[sd]{Mount Point}
929 \index[sd]{Directive!Mount Point}
930 Directory where the device can be mounted.
932 \item [Mount Command = {\it name-string}]
933 \index[sd]{Mount Command}
934 \index[sd]{Directive!Mount Command}
935 Command that must be executed to mount the device. Before the command is
936 executed, \%a is replaced with the Archive Device, and \%m with the Mount
939 Most frequently, you will define it as follows:
943 Mount Command = "/bin/mount -t iso9660 -o ro %a %m"
947 \item [Unmount Command = {\it name-string}]
948 \index[sd]{Unmount Command}
949 \index[sd]{Directive!Unmount Command}
950 Command that must be executed to unmount the device. Before the command is
951 executed, \%a is replaced with the Archive Device, and \%m with the Mount
954 Most frequently, you will define it as follows:
958 Unmount Command = "/bin/umount %m"
962 \item [Write Part Command = {\it name-string}]
963 \index[sd]{Write Part Command}
964 \index[sd]{Directive!Write Part Command}
965 Command that must be executed to write a part to the device. Before the
966 command is executed, \%a is replaced with the Archive Device, \%m with the
967 Mount Point, \%e is replaced with 1 if we are writing the first part,
968 and with 0 otherwise, and \%v with the current part filename.
970 For a DVD, you will most frequently specify the Bacula supplied {\bf
971 dvd-handler} script as follows:
975 Write Part Command = "/path/dvd-handler %a write %e %v"
979 Where {\bf /path} is the path to your scripts install directory, and
980 dvd-handler is the Bacula supplied script file.
981 This command will already be present, but commented out,
982 in the default bacula-sd.conf file. To use it, simply remove
983 the comment (\#) symbol.
986 \item [Free Space Command = {\it name-string}]
987 \index[sd]{Free Space Command}
988 \index[sd]{Directive!Free Space Command}
989 Command that must be executed to check how much free space is left on the
990 device. Before the command is executed,\%a is replaced with the Archive
991 Device, \%m with the Mount Point, \%e is replaced with 1 if we are writing
992 the first part, and with 0 otherwise, and \%v with the current part filename.
994 For a DVD, you will most frequently specify the Bacula supplied {\bf
995 dvd-handler} script as follows:
999 Free Space Command = "/path/dvd-handler %a free"
1003 Where {\bf /path} is the path to your scripts install directory, and
1004 dvd-handler is the Bacula supplied script file.
1005 If you want to specify your own command, please look at the code of
1006 dvd-handler to see what output Bacula expects from this command.
1007 This command will already be present, but commented out,
1008 in the default bacula-sd.conf file. To use it, simply remove
1009 the comment (\#) symbol.
1011 If you do not set it, Bacula will expect there is always free space on the
1016 %% This pulls in the Autochanger resource from another file.
1017 \label{AutochangerRes}
1018 \label{AutochangerResource1}
1019 \input{autochangerres}
1024 \subsection*{Capabilities}
1025 \index[general]{Capabilities}
1026 \addcontentsline{toc}{subsection}{Capabilities}
1030 \item [Label media = {\it Yes|No}]
1031 \index[sd]{Label media}
1032 \index[sd]{Directive!Label media}
1033 If {\bf Yes}, permits this device to automatically label blank media
1034 without an explicit operator command. It does so by using an internal
1035 algorithm as defined on the \ilink{Label Format}{Label} record in each
1036 Pool resource. If this is {\bf No} as by default, Bacula will label
1037 tapes only by specific operator command ({\bf label} in the Console) or
1038 when the tape has been recycled. The automatic labeling feature is most
1039 useful when writing to disk rather than tape volumes.
1041 \item [Automatic mount = {\it Yes|No}]
1042 \index[sd]{Automatic mount}
1043 \index[sd]{Directive!Automatic mount}
1044 If {\bf Yes} (the default), permits the daemon to examine the device to
1045 determine if it contains a Bacula labeled volume. This is done
1046 initially when the daemon is started, and then at the beginning of each
1047 job. This directive is particularly important if you have set
1048 {\bf Always Open = no} because it permits Bacula to attempt to read the
1049 device before asking the system operator to mount a tape. However,
1050 please note that the tape must be mounted before the job begins.
1054 \subsection*{Messages Resource}
1055 \label{MessagesResource1}
1056 \index[general]{Resource!Messages}
1057 \index[general]{Messages Resource}
1058 \addcontentsline{toc}{subsection}{Messages Resource}
1060 For a description of the Messages Resource, please see the
1061 \ilink{Messages Resource}{_ChapterStart15} Chapter of this
1064 \subsection*{Sample Storage Daemon Configuration File}
1065 \label{SampleConfiguration}
1066 \index[general]{File!Sample Storage Daemon Configuration}
1067 \index[general]{Sample Storage Daemon Configuration File}
1068 \addcontentsline{toc}{subsection}{Sample Storage Daemon Configuration File}
1070 A example Storage Daemon configuration file might be the following:
1075 # Default Bacula Storage Daemon Configuration file
1077 # For Bacula release 1.37.2 (07 July 2005) -- gentoo 1.4.16
1079 # You may need to change the name of your tape drive
1080 # on the "Archive Device" directive in the Device
1081 # resource. If you change the Name and/or the
1082 # "Media Type" in the Device resource, please ensure
1083 # that bacula-dir.conf has corresponding changes.
1085 Storage { # definition of myself
1088 WorkingDirectory = "$HOME/bacula/bin/working"
1089 Pid Directory = "$HOME/bacula/bin/working"
1090 Maximum Concurrent Jobs = 20
1093 # List Directors who are permitted to contact Storage daemon
1097 Password = "ZF9Ctf5PQoWCPkmR3s4atCB0usUPg+vWWyIo2VS5ti6k"
1100 # Restricted Director, used by tray-monitor to get the
1101 # status of the storage daemon
1105 Password = "9usxgc307dMbe7jbD16v0PXlhD64UVasIDD0DH2WAujcDsc6"
1109 # Devices supported by this Storage daemon
1110 # To connect, the Director's bacula-dir.conf must have the
1111 # same Name and MediaType.
1117 Changer Command = "/home/kern/bacula/bin/mtx-changer %c %o %S %a %d"
1118 Changer Device = /dev/sg0
1124 Media Type = DLT-8000
1125 Archive Device = /dev/nst0
1126 AutomaticMount = yes; # when device opened, read it
1128 RemovableMedia = yes;
1131 Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
1137 Media Type = DLT-8000
1138 Archive Device = /dev/nst1
1139 AutomaticMount = yes; # when device opened, read it
1141 RemovableMedia = yes;
1144 Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
1149 Media Type = DLT8000
1150 Archive Device = /dev/nst0
1151 AutomaticMount = yes; # when device opened, read it
1153 RemovableMedia = yes;
1157 # Media Type = DDS-2
1158 # Archive Device = /dev/nst0
1159 # AutomaticMount = yes; # when device opened, read it
1161 # RemovableMedia = yes;
1165 # Media Type = Floppy
1166 # Archive Device = /mnt/floppy
1167 # RemovableMedia = yes;
1168 # Random Access = Yes;
1169 # AutomaticMount = yes; # when device opened, read it
1173 # Name = FileStorage
1175 # Archive Device = /tmp
1176 # LabelMedia = yes; # lets Bacula label unlabeled media
1177 # Random Access = Yes;
1178 # AutomaticMount = yes; # when device opened, read it
1179 # RemovableMedia = no;
1183 # Name = "NEC ND-1300A"
1185 # Archive Device = /dev/hda
1186 # LabelMedia = yes; # lets Bacula label unlabeled media
1187 # Random Access = Yes;
1188 # AutomaticMount = yes; # when device opened, read it
1189 # RemovableMedia = yes;
1191 # MaximumPartSize = 800M;
1192 # RequiresMount = yes;
1193 # MountPoint = /mnt/cdrom;
1194 # MountCommand = "/bin/mount -t iso9660 -o ro %a %m";
1195 # UnmountCommand = "/bin/umount %m";
1196 # SpoolDirectory = /tmp/backup;
1197 # WritePartCommand = "/etc/bacula/dvd-handler %a write %e %v"
1198 # FreeSpaceCommand = "/etc/bacula/dvd-handler %a free"
1201 # A very old Exabyte with no end of media detection
1204 # Name = "Exabyte 8mm"
1205 # Media Type = "8mm"
1206 # Archive Device = /dev/nst0
1207 # Hardware end of medium = No;
1208 # AutomaticMount = yes; # when device opened, read it
1210 # RemovableMedia = yes;
1213 # Send all messages to the Director,
1214 # mount messages also are sent to the email address
1218 director = rufus-dir = all
1219 operator = root = mount