]> git.sur5r.net Git - bacula/docs/blobdiff - docs/manual/storedconf.tex
work in progress
[bacula/docs] / docs / manual / storedconf.tex
index 44cf7bfb4ddef1f87d934da747c4c4ae9bc53b0c..34133bf9dbd5be848fb85f69e5a39bc5f43a9f3a 100644 (file)
@@ -1,15 +1,10 @@
 %%
 %%
 
-\section*{Storage Daemon Configuration}
-\label{_ChapterStart31}
-\index[general]{Storage Daemon Configuration }
-\index[general]{Configuration!Storage Daemon }
-\addcontentsline{toc}{section}{Storage Daemon Configuration}
-
-\subsection*{General}
-\index[general]{General }
-\addcontentsline{toc}{subsection}{General}
+\chapter{Storage Daemon Configuration}
+\label{StoredConfChapter}
+\index[general]{Storage Daemon Configuration}
+\index[general]{Configuration!Storage Daemon}
 
 The Storage Daemon configuration file has relatively few resource definitions.
 However, due to the great variation in backup media and system capabilities,
@@ -26,7 +21,7 @@ here.
 
 For a general discussion of configuration file and resources including the
 data types recognized by {\bf Bacula}, please see the 
-\ilink{Configuration}{_ChapterStart16} chapter of this manual. The
+\ilink{Configuration}{ConfigureChapter} chapter of this manual. The
 following Storage Resource definitions must be defined: 
 
 \begin{itemize}
@@ -40,15 +35,14 @@ following Storage Resource definitions must be defined:
    \ilink{Device}{DeviceResource} -- to define  the
    characteristics of your storage device (tape  drive).  
 \item 
-   \ilink{Messages}{_ChapterStart15} -- to define where error  and
+   \ilink{Messages}{MessagesChapter} -- to define where error  and
    information messages are to be sent. 
 \end{itemize}
 
-\subsection*{Storage Resource}
+\section{Storage Resource}
 \label{StorageResource}
-\index[general]{Resource!Storage }
-\index[general]{Storage Resource }
-\addcontentsline{toc}{subsection}{Storage Resource}
+\index[general]{Resource!Storage}
+\index[general]{Storage Resource}
 
 In general, the properties specified under the Storage resource define global
 properties of the Storage daemon. Each Storage daemon configuration file must
@@ -57,11 +51,13 @@ have one and only one Storage resource definition.
 \begin{description}
 
 \item [Name = \lt{}Storage-Daemon-Name\gt{}]
-   \index[sd]{Name  }
+   \index[sd]{Name}
+   \index[sd]{Directive!Name}
    Specifies the Name of the Storage daemon. This  directive is required. 
 
 \item [Working Directory = \lt{}Directory\gt{}]
-   \index[sd]{Working Directory  }
+   \index[sd]{Working Directory}
+   \index[sd]{Directive!Working Directory}
    This directive  is mandatory and specifies a directory in which the Storage
    daemon  may put its status files. This directory should be used only  by {\bf
    Bacula}, but may be shared by other Bacula daemons provided the names
@@ -69,7 +65,8 @@ have one and only one Storage resource definition.
    required  
 
 \item [Pid Directory = \lt{}Directory\gt{}]
-   \index[sd]{Pid Directory  }
+   \index[sd]{Pid Directory}
+   \index[sd]{Directive!Pid Directory}
    This directive  is mandatory and specifies a directory in which the Director 
    may put its process Id file files. The process Id file is used to  shutdown
    Bacula and to prevent multiple copies of  Bacula from running simultaneously. 
@@ -82,20 +79,33 @@ have one and only one Storage resource definition.
    Directory} as  defined above. 
 
 \item [Heartbeat Interval = \lt{}time-interval\gt{}]
-   \index[sd]{Heartbeat Interval  }
+   \index[sd]{Heartbeat Interval}
+   \index[sd]{Directive!Heartbeat Interval}
    \index[general]{Heartbeat Interval}
    \index[general]{Broken pipe}
-   This directive defines an interval of time.  When the Storage daemon is
-   waiting for the operator to mount a tape, each time interval, it will
-   send a heartbeat signal to the File daemon.  The default interval is
-   zero which disables the heartbeat.  This feature is particularly useful
-   if you have a router such as 3Com that does not follow Internet
-   standards and times out an valid connection after a short duration 
-   despite the fact that keepalive is set. This usually results
-   in a broken pipe error message.
+   This directive defines an interval of time in seconds.  When
+   the Storage daemon is waiting for the operator to mount a
+   tape, each time interval, it will send a heartbeat signal to
+   the File daemon.  The default interval is zero which disables
+   the heartbeat.  This feature is particularly useful if you
+   have a router such as 3Com that does not follow Internet
+   standards and times out an valid connection after a short
+   duration despite the fact that keepalive is set.  This usually
+   results in a broken pipe error message.
+
+\item [Client Connect Wait = \lt{}time-interval\gt{}]
+   \index[sd]{Connect Wait}
+   \index[sd]{Directive!Connect Wait}
+   \index[general]{Client Connect Wait}
+   This directive defines an interval of time in seconds that
+   the Storage daemon will wait for a Client (the File daemon)
+   to connect.  The default is 30 seconds.  Be aware that the
+   longer the Storage daemon waits for a Client, the more
+   resources will be tied up.
 
 \item [Maximum Concurrent Jobs = \lt{}number\gt{}]
    \index[sd]{Maximum Concurrent Jobs}
+   \index[sd]{Directive!Maximum Concurrent Jobs}
    where \lt{}number\gt{} is the maximum number of Jobs that should run
    concurrently.  The default is set to 10, but you may set it to a larger
    number.  Each contact from the Director (e.g.  status request, job start
@@ -110,6 +120,7 @@ have one and only one Storage resource definition.
 
 \item [SDAddresses = \lt{}IP-address-specification\gt{}]
    \index[sd]{SDAddresses}
+   \index[sd]{Directive!SDAddresses}
    Specify the ports and addresses on which the Storage daemon will listen
    for Director connections.  Normally, the default is sufficient and you
    do not need to specify this directive.  Probably the simplest way to
@@ -138,7 +149,7 @@ have one and only one Storage resource definition.
     ip = {
         addr = bluedot.thun.net
     }
- }
+}
 \end{verbatim}
 \normalsize
 
@@ -154,17 +165,20 @@ Using this directive, you can replace both the SDPort and SDAddress
 directives shown below. 
 
 \item [SDPort = \lt{}port-number\gt{}]
-   \index[sd]{SDPort  }
+   \index[sd]{SDPort}
+   \index[sd]{Directive!SDPort}
    Specifies port number on which the Storage daemon  listens for Director
    connections. The default is 9103.  
    
 \item [SDAddress = \lt{}IP-Address\gt{}]
-   \index[sd]{SDAddress  }
-   This directive is optional,  and if it is specified, it will cause the Storage
-   daemon server (for  Director and File daemon connections) to bind to the
-   specified  {\bf IP-Address}, which is either a domain name or an IP address 
-   specified as a dotted quadruple. If this directive is not specified,  the
-   Storage daemon will bind to any available address (the default).
+   \index[sd]{SDAddress}
+   \index[sd]{Directive!SDAddress}
+   This directive is optional, and if it is specified, it will cause the
+   Storage daemon server (for Director and File daemon connections) to bind
+   to the specified {\bf IP-Address}, which is either a domain name or an
+   IP address specified as a dotted quadruple.  If this directive is not
+   specified, the Storage daemon will bind to any available address (the
+   default).
 
 \end{description}
 
@@ -185,11 +199,10 @@ Storage {
 \end{verbatim}
 \normalsize
 
-\subsection*{Director Resource}
+\section{Director Resource}
 \label{DirectorResource1}
-\index[general]{Director Resource }
-\index[general]{Resource!Director }
-\addcontentsline{toc}{subsection}{Director Resource}
+\index[general]{Director Resource}
+\index[general]{Resource!Director}
 
 The Director resource specifies the Name of the Director which is permitted
 to use the services of the Storage daemon.  There may be multiple Director
@@ -199,17 +212,20 @@ values in the Director's configuration file.
 \begin{description}
 
 \item [Name = \lt{}Director-Name\gt{}]
-   \index[sd]{Name  }
+   \index[sd]{Name}
+   \index[sd]{Directive!Name}
    Specifies the Name of the Director allowed to connect  to the Storage daemon.
    This directive is required.  
 
 \item [Password = \lt{}Director-password\gt{}]
-   \index[sd]{Password  }
+   \index[sd]{Password}
+   \index[sd]{Directive!Password}
    Specifies the password that must be supplied by the above named  Director.
    This directive is required.  
 
 \item [Monitor = \lt{}yes|no\gt{}]
-   \index[sd]{Monitor  }
+   \index[sd]{Monitor}
+   \index[sd]{Directive!Monitor}
    If Monitor is set to {\bf no} (default), this director will have full
    access to this Storage daemon.  If Monitor is set to {\bf yes}, this
    director will only be able to fetch the current status of this Storage
@@ -233,10 +249,9 @@ Director {
 \normalsize
 
 \label{DeviceResource}
-\subsection*{Device Resource}
-\index[general]{Resource!Device }
-\index[general]{Device Resource }
-\addcontentsline{toc}{subsection}{Device Resource}
+\section{Device Resource}
+\index[general]{Resource!Device}
+\index[general]{Device Resource}
 
 The Device Resource specifies the details of each device (normally a tape
 drive) that can be used by the Storage daemon.  There may be multiple
@@ -246,7 +261,8 @@ specified within the Device resource are specific to the Device.
 \begin{description}
 
 \item [Name = {\it Device-Name}]
-   \index[sd]{Name  }
+   \index[sd]{Name}
+   \index[sd]{Directive!Name}
    Specifies the Name that the Director will use when asking to backup or
    restore to or from to this device. This is the logical  Device name, and may
    be any string up to 127 characters in length.  It is generally a good idea to
@@ -258,7 +274,8 @@ specified within the Device resource are specific to the Device.
    resource. 
 
 \item [Archive Device = {\it name-string}]
-   \index[sd]{Archive Device  }
+   \index[sd]{Archive Device}
+   \index[sd]{Directive!Archive Device}
    The specified {\bf name-string} gives the system file name of the  storage
    device managed by this storage daemon. This will usually be  the device file
    name of a removable storage device (tape drive),  for example "{\bf
@@ -279,7 +296,7 @@ specified within the Device resource are specific to the Device.
    If you want to write into more than one directory (i.e.  to spread the load to
    different disk drives), you will need to define  two Device resources, each
    containing an Archive Device with a  different directory.  
-   
+   \label{SetupFifo}
    In addition to a tape device name or a directory name, Bacula will  accept the
    name of a FIFO. A FIFO is a special kind of file that  connects two programs
    via kernel memory. If a FIFO device is specified  for a backup operation, you
@@ -292,9 +309,26 @@ specified within the Device resource are specific to the Device.
    the Storage daemon to open it only  when a job starts, so you must explicitly
    set it to {\bf No}.  Since a FIFO is a one way device, Bacula will not attempt
    to read  a label of a FIFO device, but will simply write on it. To create a 
-   FIFO Volume in the catalog, use the {\bf add} command rather than  then {\bf
-   label} command to avoid attempting to write a label.  
-   
+   FIFO Volume in the catalog, use the {\bf add} command rather than the {\bf
+   label} command to avoid attempting to write a label.
+
+\footnotesize
+\begin{verbatim}
+Device {
+  Name = FifoStorage
+  Media Type = Fifo
+  Device Type = Fifo
+  Archive Device = /tmp/fifo
+  LabelMedia = yes
+  Random Access = no
+  AutomaticMount = no
+  RemovableMedia = no
+  MaximumOpenWait = 60
+  AlwaysOpen = no
+}
+\end{verbatim}
+\normalsize
+
    During a restore operation, if the Archive Device is a FIFO, Bacula  will
    attempt to read from the FIFO, so you must have an external program  that
    writes into the FIFO. Bacula will wait {\bf MaximumOpenWait} seconds  for the
@@ -304,61 +338,115 @@ specified within the Device resource are specific to the Device.
    
    The Archive Device directive is required. 
 
+\item [Device Type = {\it type-specification}]
+   \index[sd]{Device Type}
+   \index[sd]{Directive!Device Type}
+   The Device Type specification allows you to explicitly tell Bacula
+   what kind of device you are defining. It the {\it type-specification}
+   may be one of the following:
+   \begin{description}
+   \item [File]
+     Tells Bacula that the device is a file. It may either be a
+     file defined on fixed medium or a removable filesystem such as
+     USB.  All files must be random access devices.
+   \item [Tape]
+     The device is a tape device and thus is sequential access. Tape devices
+     are controlled using ioctl() calls.
+   \item [Fifo]
+     The device is a first-in-first out sequential access read-only 
+     or write-only device.
+   \item [DVD]
+     The device is a DVD. DVDs are sequential access for writing, but
+     random access for reading.
+  \end{description}
+  
+  The Device Type directive is not required, and if not specified, Bacula
+  will attempt to guess what kind of device has been specified using the
+  Archive Device specification supplied. There are several advantages to
+  explicitly specifying the Device Type. First, on some systems, block and
+  character devices have the same type, which means that on those systems,
+  Bacula is unlikely to be able to correctly guess that a device is a DVD.
+  Secondly, if you explicitly specify the Device Type, the mount point
+  need not be defined until the device is opened. This is the case with
+  most removable devices such as USB that are mounted by the HAL daemon.
+  If the Device Type is not explicitly specified, then the mount point
+  must exist when the Storage daemon starts.
+
+  This directive was implemented in Bacula version 1.38.6.
+
+
 \item [Media Type = {\it name-string}]
-   \index[sd]{Media Type  }
-   The specified {\bf name-string} names the type of media supported  by this
-   device, for example, "DLT7000". Media type names  are arbitrary in that you
-   set it to anything you want, but  must be known to the volume database to keep
-   track of which  storage daemons can read which volumes. The same  {\bf
-   name-string} must appear in the appropriate Storage  resource definition in
-   the Director's configuration file.  
+   \index[sd]{Media Type}
+   \index[sd]{Directive!Media Type}
+   The specified {\bf name-string} names the type of media supported by this
+   device, for example, "DLT7000".  Media type names are arbitrary in that you
+   set them to anything you want, but they must be known to the volume
+   database to keep track of which storage daemons can read which volumes.  In
+   general, each different storage type should have a unique Media Type
+   associated with it.  The same {\bf name-string} must appear in the
+   appropriate Storage resource definition in the Director's configuration
+   file.
    
-   Even though the names you assign are arbitrary (i.e. you  choose the name you
-   want), you should take care in specifying  them because the Media Type is used
-   to determine which  storage device Bacula will select during restore. Thus you
-   should probably use the same Media Type specification for all  drives where
-   the Media can be freely interchanged. This is  not generally an issue if you
-   have a single Storage daemon,  but it is with multiple Storage daemons,
-   especially if they  have incompatible media.  
+   Even though the names you assign are arbitrary (i.e.  you choose the name
+   you want), you should take care in specifying them because the Media Type
+   is used to determine which storage device Bacula will select during
+   restore.  Thus you should probably use the same Media Type specification
+   for all drives where the Media can be freely interchanged.  This is not
+   generally an issue if you have a single Storage daemon, but it is with
+   multiple Storage daemons, especially if they have incompatible media.
    
-   For example, if you specify a Media  Type of "DDS-4" then during the
-   restore, Bacula  will be able to choose any Storage Daemon that handles 
-   "DDS-4". If you have an autochanger, you might  want to name the Media Type
-   in a way that is unique to the  autochanger, unless you wish to possibly use
-   the Volumes in  other drives. You should also ensure to have unique Media 
-   Type names if the Media is not compatible between drives.  This specification
-   is required for all devices. 
+   For example, if you specify a Media Type of "DDS-4" then during the
+   restore, Bacula will be able to choose any Storage Daemon that handles
+   "DDS-4".  If you have an autochanger, you might want to name the Media Type
+   in a way that is unique to the autochanger, unless you wish to possibly use
+   the Volumes in other drives.  You should also ensure to have unique Media
+   Type names if the Media is not compatible between drives.  This
+   specification is required for all devices.
+
+   In addition, if you are using disk storage, each Device resource will
+   generally have a different mount point or directory. In order for
+   Bacula to select the correct Device resource, each one must have a
+   unique Media Type.
 
 \label{Autochanger}
 \item [Autochanger = {\it Yes|No}]
    \index[sd]{Autochanger}
-   If {\bf Yes}, this device belongs to an automatic tape changer, and  you should also
-   specify a {\bf Changer Device} as well as  a {\bf Changer Command}.  If {\bf
+   \index[sd]{Directive!Autochanger}
+   If {\bf Yes}, this device belongs to an automatic tape changer, and you
+   must specify an {\bf Autochanger} resource that points to the {\bf
+   Device} resources.  You must also specify a 
+   {\bf Changer Device}.  If the Autochanger directive is set to {\bf
    No} (default), the volume must be manually changed.  You should also
    have an identical directive to the  
    \ilink{Storage resource}{Autochanger1}  in the Director's
    configuration file so that  when labeling tapes you are prompted for the slot.
 
 \item [Changer Device = {\it name-string}]
-   \index[sd]{Changer Device  }
+   \index[sd]{Changer Device}
+   \index[sd]{Directive!Changer Device}
    The specified {\bf name-string} must be the {\bf generic SCSI} device
    name of the autochanger that corresponds to the normal read/write
    {\bf Archive Device}  specified in the Device resource. This
-   gemeric SCSI device name should be specified if you have an autochanger 
+   generic SCSI device name should be specified if you have an autochanger 
    or if you have a standard tape drive and want to use the
    {\bf Alert Command} (see below). For example, on Linux systems, for 
    an Archive Device name of {\bf /dev/nst0}, you would specify {\bf
    /dev/sg0} for the Changer Device name. Depending on your exact
    configuration, and the number of autochangers or the type of
    autochanger, what you specify here can vary.  This directive is
-   optional.  See the \ilink{ Using Autochangers}{_ChapterStart18} chapter
+   optional.  See the \ilink{ Using Autochangers}{AutochangersChapter} chapter
    of this manual for more details of using this and the following
    autochanger directives.
 
 \item [Changer Command = {\it name-string}]
-   \index[sd]{Changer Command  }
+   \index[sd]{Changer Command}
+   \index[sd]{Directive!Changer Command}
    The {\bf name-string} specifies an external program to be called  that will
-   automatically change volumes as required by {\bf Bacula}.  Most frequently,
+   automatically change volumes as required by {\bf Bacula}.  Normally,
+   this directive will be specified only in the {\bf AutoChanger} resource,
+   which is then used for all devices.  However, you may also specify
+   the different {\bf Changer Command} in each Device resource.
+   Most frequently,
    you will specify the Bacula supplied {\bf mtx-changer}  script as follows:  
 
 \footnotesize
@@ -371,19 +459,19 @@ Changer Command = "/path/mtx-changer %c %o %S %a %d"
    release). An example of this command is in the default bacula-sd.conf file. 
    For more details on the substitution characters that may be specified  to
    configure your autochanger please see  the 
-   \ilink{Autochangers}{_ChapterStart18} chapter of this  manual.
+   \ilink{Autochangers}{AutochangersChapter} chapter of this  manual.
    For FreeBSD users, you might want to see one of the  several {\bf chio}
    scripts in {\bf examples/autochangers}.  
 
 \item [Alert Command = {\it name-string}]
-   \index[sd]{Alert Command  }
+   \index[sd]{Alert Command}
    The {\bf name-string} specifies an external program to be called  at the
    completion of each Job after the device is released.  The purpose of this
    command is to check for Tape Alerts, which  are present when something is
    wrong with your tape drive  (at least for most modern tape drives).  The same
    substitution characters that may be specified  in the Changer Command may also
    be used in this string.  For more information, please see  the 
-   \ilink{Autochangers}{_ChapterStart18} chapter of this  manual. 
+   \ilink{Autochangers}{AutochangersChapter} chapter of this  manual. 
    
    
    Note, it is not necessary to have an autochanger to use this  command. The
@@ -415,21 +503,24 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
 
 \item [Drive Index = {\it number}]
    \index[sd]{Drive Index}
-   The {\bf Drive Index} that you specify is passed to the  {\bf mtx-changer}
-   script and is thus passed to the {\bf mtx}  program. By default, the Drive
-   Index is zero, so if you have only  one drive in your autochanger, everything
-   will work normally.  However, if you have multiple drives, you may specify two
-   Bacula  Device resources. The first will either set Drive Index to zero,  or
-   leave it unspecified, and the second Device Resource should  contain a Drive
-   Index set to 1. This will then permit you to  use two or more drives in your
-   autochanger. However, you must ensure  that Bacula does not request the same
-   Volume on both drives  at the same time. You may also need to modify the
-   mtx-changer  script to do locking so that two jobs don't attempt to use  the
-   autochanger at the same time. An example script can  be found in {\bf
-   examples/autochangers/locking-mtx-changer}.
+   \index[sd]{Directive!Drive Index}
+   The {\bf Drive Index} that you specify is passed to the {\bf
+   mtx-changer} script and is thus passed to the {\bf mtx} program.  By
+   default, the Drive Index is zero, so if you have only one drive in your
+   autochanger, everything will work normally.  However, if you have
+   multiple drives, you must specify multiple Bacula Device resources (one
+   for each drive).  The first Device should have the Drive Index set to 0,
+   and the second Device Resource should contain a Drive Index set to 1,
+   and so on.  This will then permit you to use two or more drives in your
+   autochanger.  As of Bacula version 1.38.0, using the {\bf Autochanger}
+   resource, Bacula will automatically ensure that only one drive at a time
+   uses the autochanger script, so you no longer need locking scripts as in
+   the past -- the default mtx-changer script works for any number of
+   drives.
 
 \item [Autoselect = {\it Yes|No}]
    \index[sd]{Autoselect}
+   \index[sd]{Directive!Autoselect}
    If this directive is set to {\bf yes} (default), and the Device
    belongs to an autochanger, then when the Autochanger is referenced
    by the Director, this device can automatically be selected. If this
@@ -439,25 +530,45 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
    backup or restore operations.
 
 \item [Maximum Changer Wait = {\it time}]
-   \index[sd]{Maximum Changer Wait  }
-   This directive specifies the maximum time for Bacula to wait  for an
-   autochanger to change the volume. If this time is exceeded,  Bacula will
-   invalidate the Volume slot number stored in  the catalog and try again. If no
-   additional changer volumes exist,  Bacula will ask the operator to intervene.
-   The default time  out is 5 minutes.
+   \index[sd]{Maximum Changer Wait}
+   \index[sd]{Directive!Maximum Changer Wait}
+   This directive specifies the maximum time in seconds for Bacula to wait
+   for an autochanger to change the volume.  If this time is exceeded,
+   Bacula will invalidate the Volume slot number stored in the catalog and
+   try again.  If no additional changer volumes exist, Bacula will ask the
+   operator to intervene.  The default is 5 minutes.      
+% TODO: if this is the format, then maybe "5 minutes" should be in
+% TODO: quotes? define style. see others.
+
+\item [Maximum Rewind Wait = {\it time}]
+   \index[sd]{Maximum Rewind Wait}
+   \index[sd]{Directive!Maximum Rewind Wait}
+   This directive specifies the maximum time in seconds for Bacula to wait
+   for a rewind before timing out.  If this time is exceeded,
+   Bacula will cancel the job.  The default is 5 minutes.
+
+\item [Maximum Open Wait = {\it time}]
+   \index[sd]{Maximum Open Wait}
+   \index[sd]{Directive!Maximum Open Wait}
+   This directive specifies the maximum time in seconds for Bacula to wait
+   for a open before timing out.  If this time is exceeded,
+   Bacula will cancel the job.  The default is 5 minutes.
 
 \item [Always Open = {\it Yes|No}]
-   \index[sd]{Always Open  }
-   If {\bf Yes} (default), Bacula will always keep the device  open unless
-   specifically {\bf unmounted} by the Console program.  This permits Bacula to
-   ensure that the tape drive is always  available. If you set {\bf AlwaysOpen}
-   to {\bf no} {\bf Bacula}  will only open the drive when necessary, and at the
-   end of the Job  if no other Jobs are using the drive, it will be freed. The
-   next time Bacula wants to append to a tape on a drive that was freed, Bacula
-   must rewind the tape and position to the end. To avoid unnecessary tape positioning 
-   and to minimize unnecessary operator intervention, it is highly recommended  that
-   {\bf Always Open = yes}. This also ensures that the drive  is available when
-   Bacula needs it.  
+   \index[sd]{Always Open}
+   \index[sd]{Directive!Always Open}
+   If {\bf Yes} (default), Bacula will always keep the device open unless
+   specifically {\bf unmounted} by the Console program.  This permits
+   Bacula to ensure that the tape drive is always available, and properly
+   positioned. If you set
+   {\bf AlwaysOpen} to {\bf no} {\bf Bacula} will only open the drive when
+   necessary, and at the end of the Job if no other Jobs are using the
+   drive, it will be freed.  The next time Bacula wants to append to a tape
+   on a drive that was freed, Bacula will rewind the tape and position it to
+   the end.  To avoid unnecessary tape positioning and to minimize
+   unnecessary operator intervention, it is highly recommended that {\bf
+   Always Open = yes}.  This also ensures that the drive is available when
+   Bacula needs it.
    
    If you have {\bf Always Open = yes} (recommended) and you want  to use the
    drive for something else, simply use the {\bf unmount}  command in the Console
@@ -470,10 +581,13 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
    Please note that if you set this directive to {\bf No} Bacula  will release
    the tape drive between each job, and thus the next job  will rewind the tape
    and position it to the end of the data. This  can be a very time consuming
-   operation. 
+   operation. In addition, with this directive set to no, certain multiple
+   drive autochanger operations will fail.  We strongly recommend to keep
+   {\bf Always Open} set to {\bf Yes}
 
 \item [Volume Poll Interval = {\it time}]
-   \index[sd]{Volume Poll Interval  }
+   \index[sd]{Volume Poll Interval}
+   \index[sd]{Directive!Volume Poll Interval}
    If the time  specified on this directive is non-zero, after  asking the
    operator to mount a new volume Bacula will  periodically poll (or read) the
    drive at the specified  interval to see if a new volume has been mounted. If
@@ -486,53 +600,159 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
    since Bacula will read it on  each poll. This can be avoided by ejecting the
    tape using  the {\bf Offline On Unmount} and the {\bf Close on Poll} 
    directives. 
+   However, if you are using a Linux 2.6 kernel or other OSes
+   such as FreeBSD or Solaris, the Offline On Unmount will leave the drive
+   with no tape, and Bacula will not be able to properly open the drive and
+   may fail the job.  For more information on this problem, please see the
+   \ilink{description of Offline On Unmount}{NoTapeInDrive} in the Tape
+   Testing chapter.
 
 \item [Close on Poll= {\it Yes|No}]
-   \index[sd]{Close on Poll }
+   \index[sd]{Close on Poll}
+   \index[sd]{Directive!Close on Poll}
    If {\bf Yes}, Bacula close the device (equivalent to  an unmount except no
    mount is required) and reopen it at each  poll. Normally this is not too
    useful unless you have the  {\bf Offline on Unmount} directive set, in which
    case the  drive will be taken offline preventing wear on the tape  during any
    future polling. Once the operator inserts a new  tape, Bacula will recognize
    the drive on the next poll and  automatically continue with the backup. 
+   Please see above more more details.
 
 \item [Maximum Open Wait = {\it time}]
-   \index[sd]{Maximum Open Wait  }
-   This directive specifies the maximum amount of time that  Bacula will wait for
-   a device that is busy. The default is  5 minutes. If the device cannot be
-   obtained, the current Job will  be terminated in error. Bacula will re-attempt
-   to open the  drive the next time a Job starts that needs the the drive.
-
+   \index[sd]{Maximum Open Wait}
+   \index[sd]{Directive!Maximum Open Wait}
+   This directive specifies the maximum amount of time in seconds that
+   Bacula will wait for a device that is busy.  The default is 5 minutes.
+   If the device cannot be obtained, the current Job will be terminated in
+   error.  Bacula will re-attempt to open the drive the next time a Job
+   starts that needs the the drive.
+
+\label{removablemedia}
 \item [Removable media = {\it Yes|No}]
-   \index[sd]{Removable media  }
-   If {\bf Yes}, this device supports removable media (for  example, tapes or
-   CDs). If {\bf No}, media cannot be removed  (for example, an intermediate
-   backup area on a hard disk).  
+   \index[sd]{Removable media}
+   \index[sd]{Directive!Removable media}
+   If {\bf Yes}, this device supports removable media (for example, tapes
+   or CDs).  If {\bf No}, media cannot be removed (for example, an
+   intermediate backup area on a hard disk). If {\bf Removable media} is
+   enabled on a File device (as opposed to a tape) the Storage daemon will
+   assume that device may be something like a USB device that can be
+   removed or a simply a removable harddisk. When attempting to open
+   such a device, if the Volume is not found (for File devices, the Volume
+   name is the same as the Filename), then the Storage daemon will search
+   the entire device looking for likely Volume names, and for each one 
+   found, it will ask the Director if the Volume can be used.  If so,
+   the Storage daemon will use the first such Volume found.  Thus it
+   acts somewhat like a tape drive -- if the correct Volume is not found,
+   it looks at what actually is found, and if it is an appendable Volume,
+   it will use it.
+
+   If the removable medium is not automatically mounted (e.g. udev), then
+   you might consider using additional Storage daemon device directives
+   such as {\bf Requires Mount}, {\bf Mount Point}, {\bf Mount Command},
+   and {\bf Unmount Command}, all of which can be used in conjunction with
+   {\bf Removable Media}.    
+
 
 \item [Random access = {\it Yes|No}]
-   \index[sd]{Random access  }
-   If {\bf Yes}, the archive device is assumed to be a random  access medium
-   which supports the {\bf lseek} (or  {\bf lseek64} if Largefile is enabled
-   during configuration) facility.  
+   \index[sd]{Random access}
+   \index[sd]{Directive!Random access}
+   If {\bf Yes}, the archive device is assumed to be a random access medium
+   which supports the {\bf lseek} (or {\bf lseek64} if Largefile is enabled
+   during configuration) facility. This should be set to {\bf Yes} for all
+   file systems such as DVD, USB, and fixed files.  It should be set to
+   {\bf No} for non-random access devices such as tapes and named pipes.
+
+
+\item [Requires Mount = {\it Yes|No}]
+   \index[sd]{Requires Mount  }
+   When this directive is enabled, the Storage daemon will submit
+   a {\bf Mount Command} before attempting to open the device.
+   You must set this directive to {\bf yes} for DVD-writers and removable
+   file systems such as USB devices that are not automatically mounted
+   by the operating system when plugged in or opened by Bacula.
+   It should be set to {\bf no} for
+   all other devices such as tapes and fixed filesystems. It should also
+   be set to {\bf no} for any removable device that is automatically
+   mounted by the operating system when opened (e.g. USB devices mounted
+   by udev or hotplug). This directive
+   indicates if the device requires to be mounted using the {\bf Mount
+   Command}.  To be able to write a DVD, the following directives must also
+   be defined: {\bf Mount Point}, {\bf Mount Command}, {\bf Unmount
+   Command} and {\bf Write Part Command}.
+
+\item [Mount Point = {\it directory}]
+   \index[sd]{Mount Point}
+   Directory where the device can be mounted. 
+   This directive is used only
+   for devices that have {\bf Requires Mount} enabled such as DVD or 
+   USB file devices.
+
+\item [Mount Command = {\it name-string}]
+   \index[sd]{Mount Command}
+   This directive specifies the command that must be executed to mount 
+   devices such as DVDs and many USB devices. For DVDs, the
+   device is written directly, but the mount command is necessary in
+   order to determine the free space left on the DVD. Before the command is 
+   executed, \%a is replaced with the Archive Device, and \%m with the Mount 
+   Point.
+
+   Most frequently, for a DVD, you will define it as follows:  
+
+\footnotesize
+\begin{verbatim}
+  Mount Command = "/bin/mount -t iso9660 -o ro %a %m"
+\end{verbatim}
+\normalsize
+
+However, if you have defined a mount point in /etc/fstab, you might be
+able to use a mount command such as:
+
+\footnotesize
+\begin{verbatim}
+  Mount Command = "/bin/mount /media/dvd"
+\end{verbatim}
+\normalsize
+
+See the \ilink {Edit Codes}{mountcodes} section below for more details of
+the editing codes that can be used in this directive.
+
+
+\item [Unmount Command = {\it name-string}]
+   \index[sd]{Unmount Command}
+   This directive specifies the command that must be executed to unmount 
+   devices such as DVDs and many USB devices. Before the command  is
+   executed, \%a is replaced with the Archive Device, and \%m with the  Mount
+   Point.
+
+   Most frequently, you will define it as follows:  
+
+\footnotesize
+\begin{verbatim}
+  Unmount Command = "/bin/umount %m"
+\end{verbatim}
+\normalsize
+
+See the \ilink {Edit Codes}{mountcodes} section below for more details of
+the editing codes that can be used in this directive.
+
 
 \item [Minimum block size = {\it size-in-bytes}]
-   \index[sd]{Minimum block size  }
-   On most modern tape drives, you will not need or wamt to  specify this directive, and
-   if you do so, it will be  to make Bacula use fixed block sizes.  This
-   statement applies only to non-random access devices (e.g.  tape drives).
-   Blocks written by the storage daemon to a non-random  archive device will
-   never be smaller than the given  {\bf size-in-bytes}. The Storage daemon will
-   attempt to  efficiently fill blocks with data received from active sessions
-   but  will, if necessary, add padding to a block to achieve the required 
-   minimum size.  
+   \index[sd]{Minimum block size}
+   \index[sd]{Directive!Minimum block size}
+   On most modern tape drives, you will not need or want to specify this
+   directive, and if you do so, it will be to make Bacula use fixed block
+   sizes.  This statement applies only to non-random access devices (e.g.
+   tape drives).  Blocks written by the storage daemon to a non-random
+   archive device will never be smaller than the given {\bf size-in-bytes}.
+   The Storage daemon will attempt to efficiently fill blocks with data
+   received from active sessions but will, if necessary, add padding to a
+   block to achieve the required minimum size.
    
-   To force the block size to be fixed, as is  the case for some non-random
-   access devices (tape drives), set  the {\bf Minimum block size} and the {\bf
-   Maximum block size} to  the same value (zero included). The default is that
-   both the  minimum and maximum block size are zero and the default block size 
-   is 64,512 bytes. If you wish the block size to be fixed and  different from
-   the default, specify the same value for both  {\bf Minimum block size} and
-   {\bf Maximum block size}.  
+   To force the block size to be fixed, as is the case for some non-random
+   access devices (tape drives), set the {\bf Minimum block size} and the
+   {\bf Maximum block size} to the same value (zero included).  The default
+   is that both the minimum and maximum block size are zero and the default
+   block size is 64,512 bytes. 
    
    For  example, suppose you want a fixed block size of 100K bytes, then you 
    would specify:  
@@ -565,21 +785,24 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
 \normalsize
 
 \item [Maximum block size = {\it size-in-bytes}]
-   \index[sd]{Maximum block size  }
-   On most modern tape drives, you will not need to specify  this directive. If
-   you do so, it will most likely be to  use fixed block sizes (see Minimum block
-   size above).  The Storage daemon will aways attempt to write blocks of the 
-   specified {\bf size-in-bytes} to the archive device. As a  consequence, this
-   statement specifies both the default block size  and the maximum block size.
-   The size written never exceed the given  {\bf size-in-bytes}. If adding data
-   to a block would cause it to  exceed the given maximum size, the block will be
-   written to the  archive device, and the new data will begin a new block. 
+   \index[sd]{Maximum block size}
+   \index[sd]{Directive!Maximum block size}
+   On most modern tape drives, you will not need to specify this directive.
+   If you do so, it will most likely be to use fixed block sizes (see
+   Minimum block size above).  The Storage daemon will always attempt to
+   write blocks of the specified {\bf size-in-bytes} to the archive device.
+   As a consequence, this statement specifies both the default block size
+   and the maximum block size.  The size written never exceed the given
+   {\bf size-in-bytes}.  If adding data to a block would cause it to exceed
+   the given maximum size, the block will be written to the archive device,
+   and the new data will begin a new block.
    
-   If no  value is specified or zero is specified, the Storage daemon will use  a
-   default block size of 64,512 bytes (126 * 512). 
+   If no value is specified or zero is specified, the Storage daemon will
+   use a default block size of 64,512 bytes (126 * 512).
 
 \item [Hardware End of Medium = {\it Yes|No}]
-   \index[sd]{Hardware End of Medium  }
+   \index[sd]{Hardware End of Medium}
+   \index[sd]{Directive!Hardware End of Medium}
    If {\bf No}, the archive device is not required to support end  of medium
    ioctl request, and the storage daemon will use the forward  space file
    function to find the end of the recorded data. If  {\bf Yes}, the archive
@@ -600,7 +823,8 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
    feature.  
    
 \item [Fast Forward Space File = {\it Yes|No}]
-   \index[sd]{Fast Forward Space File  }
+   \index[sd]{Fast Forward Space File}
+   \index[sd]{Directive!Fast Forward Space File}
    If {\bf No}, the archive device is not required to support  keeping track of
    the file number ({\bf MTIOCGET} ioctl) during  forward space file. If {\bf
    Yes}, the archive device must support  the {\tt ioctl} {\tt MTFSF} call, which
@@ -608,12 +832,13 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
    track of the  file number on the tape and report it back correctly by the 
    {\bf MTIOCGET} ioctl. Note, some SCSI drivers will correctly  forward space,
    but they do not keep track of the file number or more  seriously, they do not
-   report end of meduim.  
+   report end of medium.  
    
    Default setting for Fast Forward Space File is {\bf Yes}.
    
 \item [Use MTIOCGET = {\it Yes|No}]
-   \index[sd]{Fast Forward Space File  }
+   \index[sd]{Use MTIOCGET}
+   \index[sd]{Directive!Use MTIOCGET}
    If {\bf No}, the operating system is not required to support keeping track of
    the file number and reporting it in the ({\bf MTIOCGET} ioctl). The default
    is {\bf Yes}. If you must set this to No, Bacula will do the proper file
@@ -624,7 +849,8 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
    Solaris, Linux and FreeBSD.
 
 \item [BSF at EOM = {\it Yes|No}]
-   \index[sd]{BSF at EOM  }
+   \index[sd]{BSF at EOM}
+   \index[sd]{Directive!BSF at EOM}
    If {\bf No}, the default, no special action is taken by  Bacula with the End
    of Medium (end of tape) is reached because  the tape will be positioned after
    the last EOF tape mark, and  Bacula can append to the tape as desired.
@@ -637,13 +863,15 @@ bacula-sd  Alert: TapeAlert[32]: Interface: Problem with SCSI interface
    is done using the {\bf test} command  in the {\bf btape} program.
 
 \item [TWO EOF = {\it Yes|No}]
-   \index[sd]{TWO EOF  }
+   \index[sd]{TWO EOF}
+   \index[sd]{Directive!TWO EOF}
    If {\bf Yes}, Bacula will write two end of file marks when  terminating a tape
 -- i.e. after the last job or at the end of  the medium. If {\bf No}, the
 default, Bacula will only write  one end of file to terminate the tape. 
 
 \item [Backward Space Record = {\it Yes|No}]
    \index[sd]{Backward Space Record}
+   \index[sd]{Directive!Backward Space Record}
    If {\it Yes}, the archive device supports the {\tt MTBSR  ioctl} to backspace
    records. If {\it No}, this call is not  used and the device must be rewound
    and advanced forward to the  desired position. Default is {\bf Yes} for non
@@ -654,7 +882,8 @@ default, Bacula will only write  one end of file to terminate the tape.
    precautionary rather than required.
 
 \item [Backward Space File = {\it Yes|No}]
-   \index[sd]{Backward Space File  }
+   \index[sd]{Backward Space File}
+   \index[sd]{Directive!Backward Space File}
    If {\it Yes}, the archive device supports the {\bf MTBSF} and  {\bf MTBSF
   ioctl}s to backspace over an end of file mark and to the  start of a file. If
   {\it No}, these calls are not used and the  device must be rewound and
@@ -662,20 +891,23 @@ default, Bacula will only write  one end of file to terminate the tape.
   random-access devices. 
 
 \item [Forward Space Record = {\it Yes|No}]
-   \index[sd]{Forward Space Record  }
+   \index[sd]{Forward Space Record}
+   \index[sd]{Directive!Forward Space Record}
    If {\it Yes}, the archive device must support the {\bf MTFSR  ioctl} to
    forward space over records. If {\bf No}, data must  be read in order to
    advance the position on the device. Default is  {\bf Yes} for non
    random-access devices. 
 
 \item [Forward Space File = {\it Yes|No}]
-   \index[sd]{Forward Space File  }
+   \index[sd]{Forward Space File}
+   \index[sd]{Directive!Forward Space File}
    If {\bf Yes}, the archive device must support the {\tt MTFSF  ioctl} to
    forward space by file marks. If {\it No}, data  must be read to advance the
    position on the device. Default is  {\bf Yes} for non random-access devices. 
 
 \item [Offline On Unmount = {\it Yes|No}]
-   \index[sd]{Offline On Unmount  }
+   \index[sd]{Offline On Unmount}
+   \index[sd]{Directive!Offline On Unmount}
    The default for this directive is {\bf No}. If {\bf Yes} the  archive device
    must support the {\tt MTOFFL ioctl} to rewind and  take the volume offline. In
    this case, Bacula will issue the  offline (eject) request before closing the
@@ -688,68 +920,111 @@ default, Bacula will only write  one end of file to terminate the tape.
    to changing the volume. However,  most devices do not and may get very
    confused.  
 
+   If you are using a Linux 2.6 kernel or other OSes
+   such as FreeBSD or Solaris, the Offline On Unmount will leave the drive
+   with no tape, and Bacula will not be able to properly open the drive and
+   may fail the job.  For more information on this problem, please see the
+   \ilink{description of Offline On Unmount}{NoTapeInDrive} in the Tape
+   Testing chapter.
+
+
 \item [Maximum Volume Size = {\it size}]
-   \index[sd]{Maximum Volume Size  }
-   No more than {\bf size} bytes will be written onto a given  volume on the
-   archive device. This directive is used mainly in  testing Bacula to simulate a
-   small Volume. It can also  be useful if you wish to limit the size of a File
-   Volume to say  less than 2GB of data. In some rare cases of really antiquated 
-   tape drives that do not properly indicate when the end of a  tape is reached
-   during writing (though I have read about such  drives, I have never personally
-   encountered one). Please note,  this directive is deprecated (being phased
-   out) in favor of the  {\bf Maximum Volume Bytes} defined in the Director's
-   configuration  file.  
+   \index[sd]{Maximum Volume Size}
+   \index[sd]{Directive!Maximum Volume Size}
+   No more than {\bf size} bytes will be written onto a given volume on the
+   archive device.  This directive is used mainly in testing Bacula to
+   simulate a small Volume.  It can also be useful if you wish to limit the
+   size of a File Volume to say less than 2GB of data.  In some rare cases
+   of really antiquated tape drives that do not properly indicate when the
+   end of a tape is reached during writing (though I have read about such
+   drives, I have never personally encountered one).  Please note, this
+   directive is deprecated (being phased out) in favor of the {\bf Maximum
+   Volume Bytes} defined in the Director's configuration file.
 
 \item [Maximum File Size = {\it size}]
-   \index[sd]{Maximum File Size  }
-   No more than {\bf size} bytes will be written into a given  logical file on
-   the volume. Once this size is reached, an end of  file mark is written on the
-   volume and subsequent data are written  into the next file. Breaking long
-   sequences of data blocks with  file marks permits quicker positioning to the
-   start of a given  stream of data and can improve recovery from read errors on
-   the  volume. The default is one Gigabyte.
+   \index[sd]{Maximum File Size}
+   \index[sd]{Directive!Maximum File Size}
+   No more than {\bf size} bytes will be written into a given logical file
+   on the volume.  Once this size is reached, an end of file mark is
+   written on the volume and subsequent data are written into the next
+   file.  Breaking long sequences of data blocks with file marks permits
+   quicker positioning to the start of a given stream of data and can
+   improve recovery from read errors on the volume.  The default is one
+   Gigabyte.  This directive creates EOF marks only on tape media.
+   However, regardless of the medium type (tape, disk, DVD, ...) each time
+   a the Maximum File Size is exceeded, a record is put into the catalog
+   database that permits seeking to that position on the medium for
+   restore operations. If you set this to a small value (e.g. 1MB),
+   you will generate lots of database records (JobMedia) and may
+   significantly increase CPU/disk overhead.
+
+   Note, this directive does not limit the size of Volumes that Bacula
+   will create regardless of whether they are tape or disk volumes. It
+   changes only the number of EOF marks on a tape and the number of
+   block positioning records (see below) that are generated. If you
+   want to limit the size of all Volumes for a particular device, use
+   the {\bf Maximum Volume Size} directive (above), or use the
+   {\bf Maximum Volume Bytes} directive in the Director's Pool resource,
+   which does the same thing but on a Pool (Volume) basis.
 
 \item [Block Positioning = {\it yes|no}]
-   \index[sd]{Block Positioning  }
-   This directive is not normally used (and has not yet been  tested). It will
-   tell Bacula not to use block positioning when  it is reading tapes. This can
-   cause Bacula to be {\bf extremely}  slow when restoring files. You might use
-   this directive if you  wrote your tapes with Bacula in variable block mode
-   (the default),  but your drive was in fixed block mode. If it then works as  I
-   hope, Bacula will be able to re-read your tapes. 
+   \index[sd]{Block Positioning}
+   \index[sd]{Directive!Block Positioning}
+   This directive tells Bacula not to use block positioning when doing restores.
+   Turning this directive off can cause Bacula to be {\bf extremely} slow
+   when restoring files.  You might use this directive if you wrote your
+   tapes with Bacula in variable block mode (the default), but your drive
+   was in fixed block mode. The default is {\bf yes}.
 
 \item [Maximum Network Buffer Size = {\it bytes}]
-   \index[sd]{Maximum Network Buffer Size  }
+   \index[sd]{Maximum Network Buffer Size}
+   \index[sd]{Directive!Maximum Network Buffer Size}
    where {\it bytes} specifies the initial network buffer  size to use with the
-File daemon. This size will be adjusted down  if it is too large until it is
-accepted by the OS. Please use  care in setting this value since if it is too
-large, it will  be trimmed by 512 bytes until the OS is happy, which may
-require  a large number of system calls. The default value is 32,768 bytes. 
+   File daemon.  This size will be adjusted down if it is too large until
+   it is accepted by the OS. Please use care in setting this value since if
+   it is too large, it will be trimmed by 512 bytes until the OS is happy,
+   which may require a large number of system calls.  The default value is
+   32,768 bytes.
+
+   The default size was chosen to be relatively large but not too big in
+   the case that you are transmitting data over Internet.  It is clear that
+   on a high speed local network, you can increase this number and improve
+   performance. For example, some users have found that if you use a value
+   of 65,536 bytes they get five to ten times the throughput.  Larger values for
+   most users don't seem to improve performance. If you are interested
+   in improving your backup speeds, this is definitely a place to
+   experiment. You will probably also want to make the corresponding change
+   in each of your File daemons conf files.
+
 
 \item [Maximum Spool Size = {\it bytes}]
-   \index[sd]{Maximum Spool Size  }
+   \index[sd]{Maximum Spool Size}
+   \index[sd]{Directive!Maximum Spool Size}
    where the bytes specify the maximum spool size for all jobs  that are running.
-The default is no limit. 
+   The default is no limit. 
 
 \item [Maximum Job Spool Size = {\it bytes}]
-   \index[sd]{Maximum Job Spool Size  }
+   \index[sd]{Maximum Job Spool Size}
+   \index[sd]{Directive!Maximum Job Spool Size}
    where the bytes specify the maximum spool size for any one job  that is
    running. The default is no limit. 
    This directive is implemented only in version 1.37 and later.
 
 \item [Spool Directory = {\it directory}]
-   \index[sd]{Spool Directory  }
+   \index[sd]{Spool Directory}
+   \index[sd]{Directive!Spool Directory}
    specifies the name of the directory to be used to store  the spool files for
    this device. This directory is also used to store  temporary part files when
    writing to a device that requires mount (DVD).  The default is to use the
    working directory. 
 
 \item [Maximum Part Size = {\it bytes}]
-   \index[sd]{Maximum Part Size  }
+   \index[sd]{Maximum Part Size}
+   \index[sd]{Directive!Maximum Part Size}
    This is the maximum size of a volume part file. The default is no limit.
    This directive is implemented only in version 1.37 and later.
 
-   If the device requires  mount, it is transfered to the device when this size
+   If the device requires  mount, it is transferred to the device when this size
    is reached.  In this case, you must take care to have enough disk space left
    in  the spool directory.  
 
@@ -760,18 +1035,44 @@ The default is no limit.
 
 \end{description}
 
-\subsection*{Devices that require a mount (DVD)}
-\index[general]{Devices that require a mount (DVD) }
-\index[general]{DVD!Devices that require a mount }
-\addcontentsline{toc}{subsection}{Devices that require a mount (DVD)}
+\label{mountcodes}
+\section{Edit Codes for Mount and Unmount Directives} 
+\index[general]{Directives!Edit Codes}
+\index[general]{Edit Codes for Mount and Unmount Directives }
+
+Before submitting the {\bf Mount Command}, {\bf Unmount Command}, 
+{\bf Write Part Command}, or {\bf Free Space Command} directives 
+to the operating system, Bacula performs character substitution of the
+following characters:
+
+\footnotesize
+\begin{verbatim}
+    %% = %
+    %a = Archive device name
+    %e = erase (set if cannot mount and first part)
+    %n = part number
+    %m = mount point
+    %v = last part name (i.e. filename)
+\end{verbatim}
+\normalsize
+
+
+\section{Devices that require a mount (DVD)}
+\index[general]{Devices that require a mount (DVD)}
+\index[general]{DVD!Devices that require a mount}
 
 All the directives in this section are implemented only in
-Bacula version 1.37 and later.
+Bacula version 1.37 and later and hence are available in version 1.38.6.
+
+As of version 1.39.5, the directives
+"Requires Mount", "Mount Point", "Mount Command", and "Unmount Command"
+apply to removable filesystems such as USB in addition to DVD.
 
 \begin{description}
 
 \item [Requires Mount = {\it Yes|No}]
-   \index[sd]{Requires Mount  }
+   \index[sd]{Requires Mount}
+   \index[sd]{Directive!Requires Mount}
    You must set this directive to {\bf yes} for DVD-writers,  and to {\bf no} for
    all other devices (tapes/files).  This directive indicates if the device
    requires to be mounted to be read,  and if it must be written in a special way.
@@ -779,11 +1080,13 @@ Bacula version 1.37 and later.
    {\bf Write Part Command}  directives must also be defined. 
 
 \item [Mount Point = {\it directory}]
-   \index[sd]{Mount Point  }
+   \index[sd]{Mount Point}
+   \index[sd]{Directive!Mount Point}
    Directory where the device can be mounted. 
 
 \item [Mount Command = {\it name-string}]
-   \index[sd]{Mount Command  }
+   \index[sd]{Mount Command}
+   \index[sd]{Directive!Mount Command}
    Command that must be executed to mount the device. Before the command is 
    executed, \%a is replaced with the Archive Device, and \%m with the Mount 
    Point.
@@ -797,7 +1100,8 @@ Bacula version 1.37 and later.
 \normalsize
 
 \item [Unmount Command = {\it name-string}]
-   \index[sd]{Unmount Command  }
+   \index[sd]{Unmount Command}
+   \index[sd]{Directive!Unmount Command}
    Command that must be executed to unmount the device. Before the command  is
    executed, \%a is replaced with the Archive Device, and \%m with the  Mount
    Point.
@@ -811,48 +1115,50 @@ Bacula version 1.37 and later.
 \normalsize
 
 \item [Write Part Command = {\it name-string}]
-   \index[sd]{Write Part Command  }
+   \index[sd]{Write Part Command}
+   \index[sd]{Directive!Write Part Command}
    Command that must be executed to write a part to the device. Before the 
    command is executed, \%a is replaced with the Archive Device, \%m with the 
    Mount Point, \%e is replaced with 1 if we are writing the first part,
    and with 0 otherwise, and \%v with the current part filename.
 
    For a DVD, you will most frequently specify the Bacula supplied  {\bf
-   dvd-writepart} script as follows:  
+   dvd-handler} script as follows:  
 
 \footnotesize
 \begin{verbatim}
-  Write Part Command = "/path/dvd-writepart %e %a %v"
+  Write Part Command = "/path/dvd-handler %a write %e %v"
 \end{verbatim}
 \normalsize
 
   Where {\bf /path} is the path to your scripts install directory, and
-  dvd-writepart is the Bacula supplied script file.  
+  dvd-handler is the Bacula supplied script file.  
   This command will already be present, but commented out,
   in the default bacula-sd.conf file. To use it, simply remove
   the comment (\#) symbol.
 
 
 \item [Free Space Command = {\it name-string}]
-   \index[sd]{Free Space Command  }
+   \index[sd]{Free Space Command}
+   \index[sd]{Directive!Free Space Command}
    Command that must be executed to check how much free space is left on the 
    device. Before the command is executed,\%a is replaced with the Archive
    Device, \%m with the Mount Point, \%e is replaced with 1 if we are writing
    the first part, and with 0 otherwise, and \%v with the current part filename.
 
    For a DVD, you will most frequently specify the Bacula supplied  {\bf
-   dvd-freespace} script as follows:  
+   dvd-handler} script as follows:  
 
 \footnotesize
 \begin{verbatim}
-  Free Space Command = "/path/dvd-freespace %a"
+  Free Space Command = "/path/dvd-handler %a free"
 \end{verbatim}
 \normalsize
 
   Where {\bf /path} is the path to your scripts install directory, and
-  dvd-freespace is the Bacula supplied script file.
+  dvd-handler is the Bacula supplied script file.
   If you want to specify your own command, please look at the code of
-  dvd-freespace to see what output Bacula expects from this command.
+  dvd-handler to see what output Bacula expects from this command.
   This command will already be present, but commented out,
   in the default bacula-sd.conf file. To use it, simply remove
   the comment (\#) symbol.
@@ -862,53 +1168,56 @@ Bacula version 1.37 and later.
 
 \end{description}
 
+%% This pulls in the Autochanger resource from another file.
 \label{AutochangerRes}
 \label{AutochangerResource1}
 \input{autochangerres}
 
-\subsection*{Capabilities}
-\index[general]{Capabilities }
-\addcontentsline{toc}{subsection}{Capabilities}
+
+
+
+\section{Capabilities}
+\index[general]{Capabilities}
 
 \begin{description}
 
 \item [Label media = {\it Yes|No}]
-   \index[sd]{Label media  }
-   If {\bf Yes}, permits this device to automatically  label blank media without
-   an explicit operator command.  It does so by using an internal algorithm as
-   defined  on the 
-   \ilink{Label Format }{Label} record in each Pool resource.  If
-   this is {\bf No} as by default,  Bacula will label tapes only by specific
-   operator  command ({\bf label} in the Console) or when the tape has been
-   recycled.  The automatic labeling feature is most useful when writing to disk 
-   rather than tape volumes.  
+   \index[sd]{Label media}
+   \index[sd]{Directive!Label media}
+   If {\bf Yes}, permits this device to automatically label blank media
+   without an explicit operator command.  It does so by using an internal
+   algorithm as defined on the \ilink{Label Format}{Label} record in each
+   Pool resource.  If this is {\bf No} as by default, Bacula will label
+   tapes only by specific operator command ({\bf label} in the Console) or
+   when the tape has been recycled.  The automatic labeling feature is most
+   useful when writing to disk rather than tape volumes.
 
 \item [Automatic mount = {\it Yes|No}]
-   \index[sd]{Automatic mount  }
-   If {\bf Yes} (the default), permits the daemon to examine the  device to
-   determine if it contains a Bacula labeled  volume. This is done initially when
-   the daemon is started,  and then at the beginning of each job. This directive
-   is particularly  important if you have set {\bf Always Open = no} because it 
-   permits Bacula to attempt to read the device before asking  the system
-   operator to mount a tape.  
+   \index[sd]{Automatic mount}
+   \index[sd]{Directive!Automatic mount}
+   If {\bf Yes} (the default), permits the daemon to examine the device to
+   determine if it contains a Bacula labeled volume.  This is done
+   initially when the daemon is started, and then at the beginning of each
+   job.  This directive is particularly important if you have set
+   {\bf Always Open = no} because it permits Bacula to attempt to read the
+   device before asking the system operator to mount a tape.  However,
+   please note that the tape must be mounted before the job begins.
 
 \end{description}
 
-\subsection*{Messages Resource}
+\section{Messages Resource}
 \label{MessagesResource1}
-\index[general]{Resource!Messages }
-\index[general]{Messages Resource }
-\addcontentsline{toc}{subsection}{Messages Resource}
+\index[general]{Resource!Messages}
+\index[general]{Messages Resource}
 
 For a description of the Messages Resource, please see the 
-\ilink{Messages Resource}{_ChapterStart15} Chapter of this
+\ilink{Messages Resource}{MessagesChapter} Chapter of this
 manual. 
 
-\subsection*{Sample Storage Daemon Configuration File}
+\section{Sample Storage Daemon Configuration File}
 \label{SampleConfiguration}
-\index[general]{File!Sample Storage Daemon Configuration }
-\index[general]{Sample Storage Daemon Configuration File }
-\addcontentsline{toc}{subsection}{Sample Storage Daemon Configuration File}
+\index[general]{File!Sample Storage Daemon Configuration}
+\index[general]{Sample Storage Daemon Configuration File}
 
 A example Storage Daemon configuration file might be the following: 
 
@@ -1037,8 +1346,8 @@ Device {
 #  MountCommand = "/bin/mount -t iso9660 -o ro %a %m";
 #  UnmountCommand = "/bin/umount %m";
 #  SpoolDirectory = /tmp/backup;
-#  WritePartCommand = "/etc/bacula/dvd-writepart %e %a %v"
-#  FreeSpaceCommand = "/etc/bacula/dvd-freespace %a"
+#  WritePartCommand = "/etc/bacula/dvd-handler %a write %e %v"
+#  FreeSpaceCommand = "/etc/bacula/dvd-handler %a free"
 #}
 #
 # A very old Exabyte with no end of media detection