Imported Upstream version 3.1.0
[debian/amanda] / man / xml-source / amanda-devices.7.xml
index 59fb602950116c07308ac84ed7c27476497d44c4..a333440cde2673a9e87604b57d6447503f5cc1f0 100644 (file)
@@ -3,7 +3,7 @@
                    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
 [
   <!-- entities files to use -->
-  <!ENTITY % global_entities SYSTEM '../entities/global.entities'>
+  <!ENTITY % global_entities SYSTEM 'global.entities'>
   %global_entities;
 ]>
 
@@ -37,32 +37,39 @@ does not address details that are only of concern to developers.  For that
 purpose, consult the Amanda source code and http://wiki.zmanda.com.</para>
 
 <para>The term "device driver" describes the software that can communicate with
-some kind of backend storage, e.g., a tape driver.  A "device" is the
-  storage element itself, usually a piece of hardware. When discussing
-  a device and its driver as a unit, the term  "device" is sometimes
-  also used to refer to the combination of device and driver.</para>
+some kind of backend storage, e.g., a tape driver.  A "device" is the storage
+element itself, usually a piece of hardware. When discussing a device and its
+driver as a unit, the term  "device" is sometimes also used to refer to the
+combination of device and driver.</para>
 
 
 </refsect1>
 
 <refsect1><title>SPECIFYING DEVICES</title>
 
-<para>Device names take the form <emphasis>TYPE:NODE</emphasis>, where <emphasis>TYPE</emphasis> selects a device driver, and <emphasis>NODE</emphasis> provides further information to that driver.  The syntax for each device driver is given in the corresponding section below.</para>
+<para>Device names take the form <emphasis>TYPE:NODE</emphasis>, where
+<emphasis>TYPE</emphasis> selects a device driver, and
+<emphasis>NODE</emphasis> provides further information to that driver.  The
+syntax for each device driver is given in the corresponding section
+below.</para>
 
-<para>Devices are described in &amconf; with "device" sections, e.g.,
+<para>Devices can be described in &amconf; with "device" sections, e.g.,
 <programlisting>
 define device top_drive {
     tapedev "tape:/dev/nst0"
     device_property "BLOCK_SIZE" "131072"
 }
 </programlisting>
-A device defininition creates a device "alias", in this case named <emphasis>top_drive</emphasis>, which can then be named in the global <emphasis>tapedev</emphasis> parameter:
+Such a device defininition creates a device "alias", in this case named
+<emphasis>top_drive</emphasis>, which can then be named in the global
+<emphasis>tapedev</emphasis> or <emphasis>tpchanger</emphasis> parameter:
 <programlisting>
 tapedev "top_drive"
 </programlisting>
 </para>
 
-<para>The global <emphasis>tapedev</emphasis> parameter can also specify a literal device name.  For example,
+<para>The global <emphasis>tapedev</emphasis> parameter can also specify a
+literal device name.  For example,
 <programlisting>
 tapedev "file:/amdisks"
 </programlisting>
@@ -73,141 +80,23 @@ define device default {
     tapedev "file:/amdisks"
 }
 </programlisting>
-Device properties specified outside of any device definition apply to all devices.  This syntax is provided mainly for backward compatibility, and for simple Amanda configurations.  Note that there is no way to provide properties specific to a device without defining a device alias.</para>
-
-<para>See <citerefentry><refentrytitle>amanda.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-for more information on Amanda configuration.</para>
-
-</refsect1>
-
-<refsect1><title>DEVICES</title>
-
-<para>This section lists the device drivers included with Amanda, and basic instructions for using them.  For complete How-To information, consult the Amanda wiki at http://wiki.zmanda.com.</para>
-
-<refsect2><title>Null Device</title>
-<programlisting>
-tapedev "null:"
-</programlisting>
-
-<para>The null device driver only supports writing, and discards all data.  It is
-generally only useful for testing purposes.</para>
-
-</refsect2>
-
-<refsect2><title>RAIT Device</title>
-<programlisting>
-tapedev "rait:tape:/dev/rmt/tps0d{4,5,6}n"
-</programlisting>
-
-<para>The RAIT device driver mirrors or stripes data over multiple "child" devices.
-The child devices are specified using a shell-like syntax, where alternatives
-are enclosed in braces and separated by commas.</para>
-
-<para>With two child devices, the RAIT device driver mirrors data such that the
-two devices contain identical data and can be used singly for
-  recovery.  With more than two devices, the RAIT device "stripes"
-  data across all but one device and writes a parity block to the
-  final device, usable for data recovery in the event of a device or
-  volume failure.  The RAIT device scales its blocksize as necessary
-  to match the number of children that will be used to store data.</para>
-
-<para>When a child device is known to have failed, the RAIT device should be reconfigured to replace that device with the text "ERROR", e.g.,
-<programlisting>
-tapedev "rait:{tape:/dev/st0,ERROR,tape:/dev/st2}"
-</programlisting>
-This will cause the RAIT device to start up in degraded mode, reconstructing the data from the missing device.
-</para>
-
-<para>Like ordinary RAID drivers, the RAIT device driver can automatically
-enter degraded mode when one of its child devices fails.  However, the RAIT
-device cannot automatically recover from any write error nor write any data in
-degraded mode.  When reading, certain errors may be fatal (rather than causing
-degraded mode).  And in any case, labels on all volumes must initially match
-(labeled or otherwise).  If you have lost one volume from a set, explicitly
-start the device in degraded mode as described above.</para>
-
-<refsect3><title>Child Device Block Sizes</title>
-
-<para>The RAIT device driver requires that all of its child devices use the
-same block size.  If no block sizes are specified, the driver selects the block
-size closest to 32k that is within the MIN_BLOCK_SIZE - MAX_BLOCK_SIZE range of
-all child devices, and calculates its own blocksize according to the formula
-<emphasis>rait_blocksize = child_blocksize * (num_children - 1)</emphasis>.  If
-a block size is specified for the RAIT device, then it calculates its child
-block sizes according to the formula <emphasis>child_blocksize = rait_blocksize
-/ (num_children - 1)</emphasis>.  Either way, it sets the BLOCK_SIZE property
-of each child device accordingly.</para>
-
-</refsect3>
-
-</refsect2>
-
-<refsect2><title>S3 Device</title>
-<programlisting>
-tapedev "s3:foocorp-backups/DailySet1-"
-device_property "S3_ACCESS_KEY" "MYACCESSKEY"
-device_property "S3_SECRET_KEY" "MYSECRETKEY"
-</programlisting>
-
-<para>The S3 device driver uploads data to the Amazon S3 "storage cloud".  Its
-device name is a slash-sparated combination of bucket name and prefix:
-"s3:BUCKET/PREFIX".  Since buckets must be unique across all Amazon S3 users,
-and since the number of buckets allowed to each user is limited, the driver can
-store multiple Amanda volumes in a single S3 bucket, distinguished by prefix.
-The prefix and slash can be omitted if they are not needed: "s3:BUCKET".</para>
-
-<para>The access and secret keys used to authenticate to Amazon S3 are provided
-as properties.</para>
-
-<para>The S3 device driver stores each block in a distinct S3 object.  Due to
-high HTTP overhead for each request, use of larger than normal block
-  sizes (&gt; 1 megabyte) is reccomended with the S3 device.</para>
-
-<para>You can control where your data is physically stored by Amazon S3 using 
-a location constraint. Setting this affects can affect both billing and legal 
-concerns, so you are encouraged to consult Amazon's documentation for details.
-</para>
-
-<para>
-To control location constraints, set the S3_BUCKET_LOCATION property.
-Currently, there are two valid settings: "" (any location) and "EU" (Europe).
-If the S3_BUCKET_LOCATION is set, Amanda will check to make sure that the 
-setting agrees with the constraint currently on the bucket.
-</para>
-
-</refsect2>
-
-<refsect2><title>Tape Device</title>
-<programlisting>
-tapedev "tape:/dev/nst0"
-</programlisting>
+Note that, in both cases, the specified devices are actually accessed through
+the <emphasis>chg-single</emphasis> changer driver; see <manref
+name="amanda-changers" vol="7" /> for more information.  </para>
 
-<para>The tape device driver interacts with a tape drive.  The device uses the
-operating system's built-in tape support, which is generally similar to that
-available via the command-line utilities dd(1) and mt(1).</para>
+<para>Device properties specified outside of any device definition apply to
+all devices.  This syntax is provided mainly for backward compatibility, and
+for simple Amanda configurations.  Note that there is no way to provide
+properties specific to a device without defining a device alias.</para>
 
-<para>The tape device name should specify a path to the operating system's
-device file.</para>
+<para>See <manref name="amanda-changers" vol="7" /> for details on how devices
+are configured, and in particular on how device properties are specified.  See
+<manref name="amanda.conf" vol="5"/> for more information on Amanda
+configuration in general.</para>
 
-</refsect2>
-
-<refsect2><title>VFS Device</title>
-<programlisting>
-tapedev "file:/path/to/vtape"
-</programlisting>
-
-<para>The VFS device driver stores data on a UNIX filesystem. Note
-  that although one typically uses the VFS device driver to store data
-  on hard disks, the driver does not interface with any hardware on a
-  block level.</para>
-
-<para>The device name specifies a path to a directory which must exist and
-contain a "data/" subdirectory.  Each tape file is stored as a distinct file in
-this directory, the name of which reflects the Amanda header in the tape file.
-Block boundaries are not maintained: the driver supports reads of arbitrary
-size, regardless of the blocksize used to write the data.</para>
-
-</refsect2>
+<note><para>
+There is no way to reset a device property to its default value.
+</para></note>
 
 </refsect1>
 
@@ -228,13 +117,15 @@ device_property "BYTES_PER_FORTNIGHT" "128k"
 device_property "USE_QUBITS" "no"
 </programlisting></para>
 
-<para>Both the property name and the property value are always quoted.  String
-values are given as simple strings, like FROBNICATOR_PATH in the example above.
-Integer values can be specified with any of the suffixes given in the "VALUE
-SUFFIXES" section of &amconf;, like BYTES_PER_FORTNIGHT, above.  Boolean values
-can be specified as any of "true", "yes", "1", "0", "no", "false", like
-USE_QUBITS, above.  Some properties have special formats, as described
-below.</para>
+<para>Both the property name and the property value are always quoted.
+Property names, like Amanda configuration parameters, are not
+case-sensitive, and <literal>-</literal> (dash) and <literal>_</literal>
+(underscore) may be used interchangeably.  String values are given as
+simple strings, like FROBNICATOR_PATH in the example above.  Integer values
+can be specified with any of the suffixes given in the "VALUE SUFFIXES"
+section of &amconf;, like BYTES_PER_FORTNIGHT, above.  Boolean values can
+be specified using the same names as in &amconf;, like USE_QUBITS, above.
+Some properties have special formats, as described below.</para>
 
 <para>Some properties are set based on other configuration values, such as
 tapetype parameters.  These special cases are detailed under the appropriate
@@ -271,6 +162,10 @@ for future expansion.  Not all devices implement all of these properties.</para>
  <!-- ==== -->
  <varlistentry><term>CANONICAL_NAME</term><listitem>
  (read-only) This property contains the full canonical name for this device.  This name may not be the same as the user-supplied name, but is a valid name by which to access this device.
+</listitem></varlistentry>
+ <!-- ==== -->
+ <varlistentry><term>COMMENT</term><listitem>
+ (read-write) This string property is entirely for the user's convenience.  It is supported by all devices, but no device interprets its value in any way.
 </listitem></varlistentry>
  <!-- ==== -->
  <varlistentry><term>COMPRESSION</term><listitem>
@@ -287,6 +182,10 @@ for future expansion.  Not all devices implement all of these properties.</para>
  <!-- ==== -->
  <varlistentry><term>FREE_SPACE</term><listitem>
  (read-only) This property gives the amount of free space available on the current volume, if known.  This is often an estimate; for example, tape devices can only estimate the amount of tape left on a spool.
+</listitem></varlistentry>
+ <!-- ==== -->
+ <varlistentry><term>FULL_DELETION</term><listitem>
+ (read-only) This property indicates whether the device supports erasing the entire volume.  Aside from S3 and VFS, most devices cannot support this feature.
 </listitem></varlistentry>
  <!-- ==== -->
  <varlistentry><term>MAX_BLOCK_SIZE</term><listitem>
@@ -306,7 +205,7 @@ for future expansion.  Not all devices implement all of these properties.</para>
 </listitem></varlistentry>
  <!-- ==== -->
  <varlistentry><term>PARTIAL_DELETION</term><listitem>
- (read-only) This property indicates whether the device supports deletion of specific files.  Aside from linear tapes, most devices can support this feature.  It is currently unused by Amanda.
+ (read-only) This property indicates whether the device supports deletion of specific files.  Aside from linear tapes and S3, most devices can support this feature.  It is currently unused by Amanda.
 </listitem></varlistentry>
  <!-- ==== -->
  <varlistentry><term>STREAMING</term><listitem>
@@ -314,7 +213,7 @@ for future expansion.  Not all devices implement all of these properties.</para>
 </listitem></varlistentry>
  <!-- ==== -->
  <varlistentry><term>VERBOSE</term><listitem>
- (read-write) If this boolean property is set, then the device will produce verbose debugging output.  This property is not recognized by all devices.
+ (read-write) If this boolean property is set, then the device will produce verbose debugging output.  This property is not recognized by most devices.
 </listitem></varlistentry>
  <!-- ==== -->
 </variablelist>
@@ -341,11 +240,10 @@ size than that with which it was written.  This can be useful when handling old
 volumes written with a smaller blocksize, or volumes of unknown blocksize.
 Unfortunately, some tape devices do not detect oversized blocks correctly, and
 may lose data if the configured block size is smaller than the volume's block
-size.  The tape device driver has a READ_BUFFER_SIZE property which specifies
+size.  The tape device driver has a READ_BLOCK_SIZE property which specifies
 the minimum buffer size that will be allocated for reads from tape.  If the
 hardware supports it, setting this property allows Amanda to correctly read
-from tapes written with any blocksize less than or equal to READ_BUFFER
-SIZE.</para>
+from tapes written with any blocksize less than or equal to READ_BLOCK_SIZE.</para>
 
 <note><para>The RAIT device does not support flexible block sizes, as its
 parity algorithm requires that all child devices have the same, fixed block
@@ -355,12 +253,151 @@ size.</para></note>
 
 </refsect2>
 
-<refsect2><title>DRIVER-SPECIFIC PROPERTIES</title>
+</refsect1>
+
+<refsect1><title>DEVICES</title>
+
+<para>This section lists the device drivers included with Amanda, and basic instructions for using them.  For complete How-To information, consult the Amanda wiki at http://wiki.zmanda.com.</para>
+
+<refsect2><title>Null Device</title>
+<programlisting>
+tapedev "null:"
+</programlisting>
+
+<para>The null device driver only supports writing, and discards all data.  It is
+generally only useful for testing purposes.</para>
+
+</refsect2>
+
+<refsect2><title>RAIT Device</title>
+<programlisting>
+tapedev "rait:tape:/dev/rmt/tps0d{4,5,6}n"
+</programlisting>
+
+<para>The RAIT device driver mirrors or stripes data over multiple "child"
+devices.  The child devices are specified using a shell-like syntax, where
+alternatives are enclosed in braces and separated by commas.  Braces and commas
+can be escaped with a backslash.  Note that the backslash itself must be
+escaped in most contexts.  For example:
+<programlisting>
+tapedev "rait:{commandev:foo\\,bar,bracedev:foo\\}bar}"
+</programlisting>
+</para>
 
-<refsect3><title>S3 Device</title>
+<para>With two child devices, the RAIT device driver mirrors data such that the
+two devices contain identical data and can be used singly for
+  recovery.  With more than two devices, the RAIT device "stripes"
+  data across all but one device and writes a parity block to the
+  final device, usable for data recovery in the event of a device or
+  volume failure.  The RAIT device scales its blocksize as necessary
+  to match the number of children that will be used to store data.</para>
+
+<para>When a child device is known to have failed, the RAIT device should be reconfigured to replace that device with the text "ERROR", e.g.,
+<programlisting>
+tapedev "rait:{tape:/dev/st0,ERROR,tape:/dev/st2}"
+</programlisting>
+This will cause the RAIT device to start up in degraded mode, reconstructing the data from the missing device.
+</para>
+
+<para>Like ordinary RAID drivers, the RAIT device driver can automatically
+enter degraded mode when one of its child devices fails.  However, the RAIT
+device cannot automatically recover from any write error nor write any data in
+degraded mode.  When reading, certain errors may be fatal (rather than causing
+degraded mode).  And in any case, labels on all volumes must initially match
+(labeled or otherwise).  If you have lost one volume from a set, explicitly
+start the device in degraded mode as described above.</para>
+
+<refsect3><title>Child Device Block Sizes</title>
+
+<para>The RAIT device driver requires that all of its child devices use the
+same block size.  If no block sizes are specified, the driver selects the block
+size closest to 32k that is within the MIN_BLOCK_SIZE - MAX_BLOCK_SIZE range of
+all child devices, and calculates its own blocksize according to the formula
+<emphasis>rait_blocksize = child_blocksize * (num_children - 1)</emphasis>.  If
+a block size is specified for the RAIT device, then it calculates its child
+block sizes according to the formula <emphasis>child_blocksize = rait_blocksize
+/ (num_children - 1)</emphasis>.  Either way, it sets the BLOCK_SIZE property
+of each child device accordingly.</para>
+
+</refsect3>
+
+</refsect2>
+
+<refsect2><title>S3 Device</title>
+<programlisting>
+tapedev "s3:foocorp-backups/DailySet1-"
+device_property "S3_ACCESS_KEY" "MYACCESSKEY"
+device_property "S3_SECRET_KEY" "MYSECRETKEY"
+</programlisting>
+
+<para>The S3 device driver uploads data to the Amazon S3 "storage cloud".  Its
+device name is a slash-sparated combination of bucket name and prefix:
+"s3:BUCKET/PREFIX".  Since buckets must be unique across all Amazon S3 users,
+and since the number of buckets allowed to each user is limited, the driver can
+store multiple Amanda volumes in a single S3 bucket, distinguished by prefix.
+The prefix and slash can be omitted if they are not needed: "s3:BUCKET".</para>
+
+<para>The access and secret keys used to authenticate to Amazon S3 are provided
+as properties.</para>
+
+<para>The S3 device driver stores each block in a distinct S3 object.  Due to
+high HTTP overhead for each request, use of larger than normal block
+  sizes (&gt; 1 megabyte) is reccomended with the S3 device.</para>
+
+<para>
+Amanda automatically creates a bucket when writing, if the bucket doesn't
+already exist. At that time, it specifies where Amazon should store the data
+based on the S3_BUCKET_LOCATION property. Currently, there are two valid settings:
+"*" (any location, probably US) and "EU" (Europe). If this property is not set,
+Amazon's default value of "*" is used. The bucket location has both billing and
+legal concerns, so you are encouraged to consult Amazon's documentation for details.
+</para>
+
+<para>
+Amazon does not permit changes to bucket locations, so this is a permanent
+specification. If the bucket already exists and the property is set,
+then Amanda checks the property against the location of the bucket, and
+produces an error if they do not match.
+</para>
+
+<note><para>
+If a location constraint is set, the bucket name must consist only of
+lower-case letters, numbers, dashes, and dots.
+</para></note>
+
+<para>This driver supports the VERBOSE property, but use it carefully -- it
+produces a great deal of output, and may cause spurious failures by filling
+your debug log partition.  Its logging is generally only useful for developers
+chasing down a problem in communications with Amazon's servers.</para>
+
+<refsect3><title>Device-Specific Properties</title>
+
+<para>In addition to the common properties, the S3 device supports the
+properties listed in this section.</para>
+
+<para>Most Amanda devices work just fine without any properties, but not the S3
+device.  A typical S3 configuration will have an access key and secret key
+specified:
+
+<programlisting>
+device_property "S3_ACCESS_KEY" "27D3B8C6C4E7AA423C2B37C72A0D22C8"
+device_property "S3_SECRET_KEY" "agphc2Q7Zmxragphc2RmO2xragpzZGY7a2xqCgr"
+</programlisting></para>
 
 <!-- PLEASE KEEP THIS LIST IN ALPHABETICAL ORDER -->
 <variablelist>
+ <!-- ==== -->
+ <varlistentry><term>MAX_RECV_SPEED</term><listitem>
+(read-write) Maximum speed, in bytes per second, that this device will receive
+data from S3.  If the average speed exceeds this value, the device will stop
+reading long enough to bring the average below this value.
+</listitem></varlistentry>
+ <!-- ==== -->
+ <varlistentry><term>MAX_SEND_SPEED</term><listitem>
+(read-write) Maximum speed, in bytes per second, that this device will send
+data to S3.  If the average speed exceeds this value, the device will stop
+writing long enough to bring the average below this value.
+</listitem></varlistentry>
  <!-- ==== -->
  <varlistentry><term>S3_ACCESS_KEY</term><listitem>
  (read-write) This property gives the Amazon S3 access key used to access the service.
@@ -368,9 +405,18 @@ size.</para></note>
  <!-- ==== -->
  <varlistentry><term>S3_BUCKET_LOCATION</term><listitem>
  (read-write) Location constraint for buckets on Amazon S3.
-Currently, it can be set to "", for no constraint (i.e. store data in the US), 
+Currently, it can be set to "", for no constraint (i.e. store data in the US),
 or "EU" (i.e. store data in the EU).
 See Amazon's documentation for details and latest information
+</listitem></varlistentry>
+ <!-- ==== -->
+ <varlistentry><term>SSL_CA_INFO</term><listitem>
+ (read-write) Path to CA certificate to use to verify the identity of the S3 server.
+Only applicable when SSL/TLS is in use. The certificate should be in PEM format
+if OpenSSL or GnuTLS is being used with libcurl. Multiple certificates can be
+bundled together simply by concatenating them.
+If NSS is being used, then it is the directory that the database resides in.
+The value is passed to curl_easy_setopt(3) as CURLOPT_CAINFO.
 </listitem></varlistentry>
  <!-- ==== -->
  <varlistentry><term>S3_SECRET_KEY</term><listitem>
@@ -383,22 +429,31 @@ See Amazon's documentation for details and latest information
  <!-- ==== -->
  <varlistentry><term>S3_USER_TOKEN</term><listitem>
  (read-write) This property specifies the user token for Amanda Enterprise Edition customers.
+</listitem></varlistentry>
+ <!-- ==== -->
+ <varlistentry><term>VERBOSE</term><listitem>
+ (read-write) If true, verbose data about each HTTP transaction is sent to the debug log.
 </listitem></varlistentry>
  <!-- ==== -->
 </variablelist>
 
-<para>Most Amanda devices work just fine without any properties, but not the S3
-device.  A typical S3 configuration will have an access key and secret key
-specified:
+</refsect3>
 
+</refsect2>
+
+<refsect2><title>Tape Device</title>
 <programlisting>
-device_property "S3_ACCESS_KEY" "27D3B8C6C4E7AA423C2B37C72A0D22C8"
-device_property "S3_SECRET_KEY" "agphc2Q7Zmxragphc2RmO2xragpzZGY7a2xqCgr"
-</programlisting></para>
+tapedev "tape:/dev/nst0"
+</programlisting>
 
-</refsect3>
+<para>The tape device driver interacts with a tape drive.  The device uses the
+operating system's built-in tape support, which is generally similar to that
+available via the command-line utilities dd(1) and mt(1).</para>
+
+<para>The tape device name should specify a path to the operating system's
+device file.</para>
 
-<refsect3><title>Tape Device</title>
+<refsect3><title>Device-Specific Properties</title>
 
 <para>Most of these properties are automatically detected, but can be
 overridden in the configuration file if the autodetection fails. Note that tape
@@ -453,8 +508,9 @@ operations can be emulated with the MTREW and read data operations.</para>
  (read-write) Set this boolean property to "true" if O_NONBLOCK must be used on the open call. Default to "true" on Linux and "false" on all others machines. Witout it, Linux wait for a few seconds if no tape are loaded. Solaris have strange error it is set to "yes".
 </listitem></varlistentry>
  <!-- ==== -->
- <varlistentry><term>READ_BUFFER_SIZE</term><listitem>
- (read-write) This property specifies the minimum buffer size that will be used for reads; this should be large enough to contain any block that may be read from the device, and must be larger than BLOCK_SIZE.  This property exists for tape devices which cannot determine the size of on-tape blocks, or which may discard data which overflows a small buffer.  The tapetype parameter <emphasis>READBLOCKSIZE</emphasis> sets this property.  See BLOCK SIZES, above.
+ <varlistentry><term>READ_BLOCK_SIZE</term><listitem>
+ (read-write) This property (previously known as <emphasis>READ_BUFFER_SIZE</emphasis>) specifies the block size that will be used for reads; this should be large enough to contain any block that may be read from the device (for example, from a tape containing variable-sized blocks), and must be larger than BLOCK_SIZE.  This property is most often used when overwriting tapes using a new, smaller block size.
+ The tapetype parameter <emphasis>READBLOCKSIZE</emphasis> sets this property.  See BLOCK SIZES, above.
 </listitem></varlistentry>
  <!-- ==== -->
 </variablelist>
@@ -463,12 +519,139 @@ operations can be emulated with the MTREW and read data operations.</para>
 
 </refsect2>
 
-</refsect1>
+<refsect2><title>NDMP Device</title>
+<programlisting>
+tapedev "ndmp:my.filer.com:10000@st1"
+device_property "NDMP_USERNAME" "jimmy"
+device_property "NDMP_PASSWORD" "thelock"
+</programlisting>
 
-<refsect1><title>SEE ALSO</title>
-<para>
-<citerefentry><refentrytitle>amanda.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-</para>
+<para>This device enables Amanda to communicate with a tape service on an NDMP
+server.  The device name specifies the hostname and optionally the TCP port of
+the NDMP server, followed by the name of the tape device on the server
+(<command>st1</command> in the example above).</para>
+
+<refsect3><title>Device-Specific Properties</title>
+
+<para>The properties <command>NDMP_USERNAME</command> and
+<command>NDMP_PASSWORD</command> set the username and password with which to
+access the NDMP server.  The default for both is "ndmp".</para>
+
+<!-- PLEASE KEEP THIS LIST IN ALPHABETICAL ORDER -->
+<variablelist>
+ <!-- ==== -->
+<varlistentry><term>NDMP_AUTH</term><listitem>
+(read-write) Authentication method to use to connect to the NDMP server.  One of
+"md5" (default), "text", "none" (for an empty authentication attempt) or "void" (for
+no authentication attempt at all).
+</listitem></varlistentry>
+ <!-- ==== -->
+<varlistentry><term>NDMP_PASSWORD</term><listitem>
+(read-write) Password for md5 or text authentications.
+</listitem></varlistentry>
+ <!-- ==== -->
+<varlistentry><term>NDMP_USERNAME</term><listitem>
+(read-write) Username for md5 or text authentications.
+</listitem></varlistentry>
+ <!-- ==== -->
+</variablelist>
+
+</refsect3>
+
+</refsect2>
+
+<refsect2><title>VFS Device</title>
+<programlisting>
+tapedev "file:/path/to/vtape"
+</programlisting>
+
+<para>The VFS device driver stores data on a UNIX filesystem. Note
+  that although one typically uses the VFS device driver to store data
+  on hard disks, the driver does not interface with any hardware on a
+  block level.</para>
+
+<para>The device name specifies a path to a directory which must exist and
+contain a "data/" subdirectory.  Each tape file is stored as a distinct file in
+this directory, the name of which reflects the Amanda header in the tape file.
+Block boundaries are not maintained: the driver supports reads of arbitrary
+size, regardless of the blocksize used to write the data.</para>
+
+</refsect2>
+
+<refsect2><title>DVD-RW Device</title>
+<programlisting>
+tapedev "dvdrw:/var/cache/amanda/dvd-cache:/dev/scd0"
+device_property "DVDRW_MOUNT_POINT" "/media/dvd"
+device_property "DVDRW_KEEP_CACHE" "false"
+device_property "DVDRW_UNLABELLED_WHEN_UNMOUNTABLE" "true"
+</programlisting>
+
+<para>The DVD-RW device driver reads and writes optical media such as DVDs and
+CDs. The device name must specify a cache directory for data to be temporarily
+stored, followed by the operating system name for the optical drive. The cache
+directory must contain a "data/" subdirectory.</para>
+
+<para>The DVDRW_MOUNT_POINT property is required, and specifies a directory
+where the optical media can be mounted. This directory must be configured to
+enable non-root users to mount the optical media. On Linux, that means a line
+similar to the following in /etc/fstab:</para>
+<programlisting>
+/dev/scd0 /media/dvd auto ro,user,noauto 0 0
+</programlisting>
+
+<para>Note the "user" option.</para>
+
+<para>When writing data, the device acts as a VFS device using the given cache
+directory. On completion of writing the tape, the cache directory is written
+to optical media. The DVDRW_KEEP_CACHE property controls whether the cache
+contents are immediately deleted. When reading, the optical media is first
+mounted and read as a VFS device.</para>
+
+<para>Attempting to mount unformatted media or media that is formatted but
+contains no filesystem will usually result in an error. The boolean
+DVDRW_UNLABELLED_WHEN_UNMOUNTABLE property specifies whether media that cannot
+be mounted should be treated as an empty, unlabelled volume when attempting to
+read the volume label. It is necessary to set this property to "true" when
+labelling such media.</para>
+
+<refsect3><title>Device-Specific Properties</title>
+
+<para>The properties DVDRW_GROWISOFS_COMMAND, DVDRW_MOUNT_COMMAND and
+DVDRW_UMOUNT_COMMAND specify alternative commands for writing, mounting and
+unmounting optical media. The default is to find the programs using the PATH
+environment variable.</para>
+
+<para>The DVDRW_MOUNT_POINT property is required. Other properties are optional.</para>
+
+<variablelist>
+ <varlistentry><term>DVDRW_KEEP_CACHE</term><listitem>
+ (read-write) Set this boolean property to "true" if the disk cache directory should be kept after successfully writing tape data to optical media. The default is false, which causes the cache contents to be deleted immediately after a successful write operation.
+</listitem></varlistentry>
+ <varlistentry><term>DVDRW_MOUNT_POINT</term><listitem>
+ (read-write) This property specifies the filesystem mount point for the optical media. Non-root users must be able to mount optical media by invoking "mount" and specifying this mount point.
+</listitem></varlistentry>
+ <varlistentry><term>DVDRW_UNLABELLED_WHEN_UNMOUNTABLE</term><listitem>
+ (read-write) Treat unmountable media as empty, unlabelled media. This is necessary when attempting to label freshly formatted media.
+</listitem></varlistentry>
+ <varlistentry><term>DVDRW_GROWISOFS_COMMAND</term><listitem>
+ (read-write) The command to invoke to burn the DVD.
+</listitem></varlistentry>
+ <varlistentry><term>DVDRW_MOUNT_COMMAND</term><listitem>
+ (read-write) The command to invoke to mount the DVD.
+</listitem></varlistentry>
+ <varlistentry><term>DVDRW_UMOUNT_COMMAND</term><listitem>
+ (read-write) The command to invoke to unmount the DVD.
+</listitem></varlistentry>
+</variablelist>
+
+</refsect3>
+
+</refsect2>
 
 </refsect1>
+
+<seealso>
+<manref name="amanda.conf" vol="5"/>,
+</seealso>
+
 </refentry>