<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY drbdsetup_options SYSTEM "./drbdsetup-options.xml">
]>

<refentry id="re-drbdconf">
  &drbdsetup_options;

  <refentryinfo>
    <date>3 December 2012</date>

    <productname>DRBD</productname>

    <productnumber>9.0.0</productnumber>
  </refentryinfo>

  <refmeta>
    <refentrytitle>drbd.conf</refentrytitle>

    <manvolnum>5</manvolnum>

    <refmiscinfo class="manual">Configuration Files</refmiscinfo>
  </refmeta>

  <refnamediv>
    <refname>drbd.conf</refname>

    <refpurpose>DRBD Configuration Files<indexterm significance="normal">
        <primary>drbd.conf</primary>
      </indexterm></refpurpose>
  </refnamediv>

  <refsect1>
    <title>Introduction</title>

    <para>DRBD implements block devices which replicate their data to all nodes
    of a cluster.  The actual data and associated metadata are usually stored
    redundantly on "ordinary" block devices on each cluster node.</para>

    <para>Replicated block devices are called
    <option>/dev/drbd<replaceable>minor</replaceable></option> by default. They
    are grouped into resources, with one or more devices per resource.
    Replication among the devices in a resource takes place in chronological order. With DRBD,
    we refer to the devices inside a resource as <emphasis>volumes</emphasis>.</para>

    <para>In DRBD 9, a resource can be replicated between two or more cluster
    nodes.  The connections between cluster nodes are point-to-point links, and
    use TCP or a TCP-like protocol.  All nodes must be directly
    connected.</para>

    <para>DRBD consists of low-level user-space components
    which interact with the kernel and perform basic operations
    (<option>drbdsetup</option>, <option>drbdmeta</option>), a high-level
    user-space component which understands and processes the DRBD configuration
    and translates it into basic operations of the low-level components
    (<option>drbdadm</option>), and a kernel component.</para>

    <para>The default DRBD configuration consists of
    <option>/etc/drbd.conf</option> and of additional files included from
    there, usually <option>global_common.conf</option> and all
    <option><replaceable>*</replaceable>.res</option> files inside
    <option>/etc/drbd.d/</option>.  It has turned out to be useful to define
    each resource in a separate
    <option><replaceable>*</replaceable>.res</option> file.</para>

    <para>The configuration files are designed so that each cluster node can
    contain an identical copy of the entire cluster configuration. The host
    name of each node determines which parts of the configuration apply
    (<option>uname -n</option>).
    It is highly recommended to keep the cluster configuration on all
    nodes in sync by manually copying it to all nodes, or by automating the
    process with <option>csync2</option> or a similar tool.</para>
  </refsect1>

  <refsect1>
    <title>Example Configuration File</title>
    <para>
    <programlisting format="linespecific">
global {
	usage-count yes;
	udev-always-use-vnr;
}
resource r0 {
      net {
	      cram-hmac-alg sha1;
	      shared-secret "FooFunFactory";
      }
      volume 0 {
	      device    /dev/drbd1;
	      disk      /dev/sda7;
	      meta-disk internal;
      }
      on alice {
	      node-id   0;
	      address   10.1.1.31:7000;
      }
      on bob {
	      node-id   1;
	      address   10.1.1.32:7000;
      }
      connection {
	      host      alice  port 7000;
	      host      bob    port 7000;
	      net {
			protocol C;
	      }
      }
}</programlisting>
    This example defines a resource <option>r0</option> which contains a single replicated
    device with volume number 0.  The resource is replicated among hosts <option>alice</option>
    and <option>bob</option>, which have the IPv4 addresses <option>10.1.1.31</option> and <option>10.1.1.32</option> and the
    node identifiers 0 and 1, respectively.  On both hosts, the replicated
    device is called <option>/dev/drbd1</option>, and the actual data and metadata are stored on
    the lower-level device <option>/dev/sda7</option>.  The connection between the hosts uses
    protocol C.</para>

    <para>Please refer to the <ulink
	url="http://www.drbd.org/users-guide/"><citetitle>DRBD User's Guide</citetitle></ulink>
      for more examples.</para>

  </refsect1>

  <refsect1>
    <title>File Format</title>

    <para>DRBD configuration files consist of sections, which contain other
    sections and parameters depending on the section types. Each section
    consists of one or more keywords, sometimes a section name, an opening
    brace (<quote>{</quote>), the section's contents, and a closing brace
    (<quote>}</quote>). Parameters inside a section consist of a keyword,
    followed by one or more keywords or values, and a semicolon
    (<quote>;</quote>).</para>

    <para>Some parameter values have a default scale which applies when a plain
    number is specified (for example Kilo, or 1024 times the numeric value).
    Such default scales can be overridden by using a suffix (for example,
    <option>M</option> for Mega).  The common suffixes <option>K</option> =
    2^10 = 1024, <option>M</option> = 1024 K, and <option>G</option> = 1024 M
    are supported.</para>

    <para>Comments start with a hash sign (<quote>#</quote>) and extend to the
    end of the line. In addition, any section can be prefixed with the keyword
    <option>skip</option>, which causes the section and any sub-sections to be
    ignored.</para>

    <para>Additional files can be included with the <option>include
    <replaceable>file-pattern</replaceable></option> statement (see
    <citerefentry><refentrytitle>glob</refentrytitle><manvolnum>7</manvolnum></citerefentry>
    for the expressions supported in <replaceable>file-pattern</replaceable>).
    Include statements are only allowed outside of sections.</para>

    <para>The following sections are defined (indentation indicates in
    which context):
    <programlisting>
common
   [disk]
   [handlers]
   [net]
   [options]
   [startup]
global
resource
   connection
      path
      net
        volume
           peer-device-options
      [peer-device-options]
   connection-mesh
      net
   [disk]
   floating
   handlers
   [net]
   on
      volume
         disk
         [disk]
   options
   stacked-on-top-of
   startup</programlisting>
    Sections in brackets affect other parts of the configuration: inside the
    <option>common</option> section, they apply to all resources. A
    <option>disk</option> section inside a <option>resource</option> or
    <option>on</option> section applies to all volumes of that resource, and a
    <option>net</option> section inside a <option>resource</option> section
    applies to all connections of that resource. This allows to avoid repeating
    identical options for each resource, connection, or volume. Options can
    be overridden in a more specific <option>resource</option>,
    <option>connection</option>, <option>on</option>, or
    <option>volume</option> section.</para>

    <para><option>peer-device-options</option> are
    <option>resync-rate</option>, <option>c-plan-ahead</option>, <option>c-delay-target</option>,
    <option>c-fill-target</option>, <option>c-max-rate</option> and <option>c-min-rate</option>.
    Due to backward comapatibility they can be specified in any disk options section as well.
    They are inherited into all relevant connections. If they are given on <option>connection</option>
    level they are inherited to all volumes on that connection. A <option>peer-device-options</option>
    section is started with the <option>disk</option> keyword.</para>

    <refsect2>
      <title>Sections</title>

      <variablelist>
        <varlistentry>
          <term><option>common</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>common</secondary>
              </indexterm> This section can contain each a
              <option>disk</option>, <option>handlers</option>,
              <option>net</option>, <option>options</option>, and
              <option>startup</option> section. All resources inherit the
              parameters in these sections as their default values.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>connection <replaceable><optional>name</optional></replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>connection</secondary>
              </indexterm> Define a connection between two hosts. This section
              must contain two <option>host</option> parameters or multiple
	      <option>path sections</option>.
              The optional <replaceable>name</replaceable> is
              used to refer to the connection in the system log and in other
              messages. If no name is specified, the peer's host name
              is used instead.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>path</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>path</secondary>
              </indexterm> Define a path between two hosts. This section
              must contain two <option>host</option> parameters.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>connection-mesh</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>connection-mesh</secondary>
              </indexterm> Define a connection mesh between multiple hosts. This section
              must contain a <option>hosts</option> parameter, which has the
	      host names as arguments. This section is a shortcut to define many
	      connections which share the same network options.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>disk</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>disk</secondary>
              </indexterm> Define parameters for a volume. All parameters in
              this section are optional.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>floating <replaceable><optional>address-family</optional></replaceable> <replaceable>addr</replaceable>:<replaceable>port</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>floating</secondary>
              </indexterm> Like the <option>on</option> section, except that
              instead of the host name a network address is used to
              determine if it matches a <option>floating</option>
              section.</para>

	    <para>The <option>node-id</option> parameter in this section is
	      required.  If the <option>address</option> parameter is not
	      provided, no connections to peers will be created by default.
	      The <option>device</option>, <option>disk</option>, and
	      <option>meta-disk</option> parameters must be defined in, or
	      inherited by, this section.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>global</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>global</secondary>
              </indexterm> Define some global parameters.  All parameters in
              this section are optional.  Only one <option>global</option>
              section is allowed in the configuration.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>handlers</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>handlers</secondary>
              </indexterm> Define handlers to be invoked when certain events
              occur. The kernel passes the resource name in the first
              command-line argument and sets the following environment
              variables depending on the event's context:
              <itemizedlist>
                <listitem>
                        <para>For events related to a particular device:
                        the device's minor number in
                        <option>DRBD_MINOR</option>, the device's volume number
                        in <option>DRBD_VOLUME</option>.
                  </para>
                </listitem>
                <listitem>
                  <para>For events related to a particular device on a
                  particular peer: the connection endpoints in
                  <option>DRBD_MY_ADDRESS</option>,
                  <option>DRBD_MY_AF</option>,
                  <option>DRBD_PEER_ADDRESS</option>, and
                  <option>DRBD_PEER_AF</option>; the device's local minor
                  number in <option>DRBD_MINOR</option>, and the device's volume
                  number in <option>DRBD_VOLUME</option>.
                  </para>
                </listitem>
                <listitem>
                  <para>For events related to a particular connection: the
                  connection endpoints in <option>DRBD_MY_ADDRESS</option>,
                  <option>DRBD_MY_AF</option>,
                  <option>DRBD_PEER_ADDRESS</option>, and
                  <option>DRBD_PEER_AF</option>; and, for each device defined for
                  that connection: the device's minor number in
                  <option>DRBD_MINOR_<replaceable>volume-number</replaceable></option>.
                  </para>
                </listitem>
                <listitem>
                  <para>For events that identify a device, if a lower-level
                  device is attached, the lower-level device's device name is
                  passed in <option>DRBD_BACKING_DEV</option> (or
                  <option>DRBD_BACKING_DEV_<replaceable>volume-number</replaceable></option>).
                  </para>
              </listitem>
              </itemizedlist>
            </para>
            <para>All parameters in this section are optional. Only a single
            handler can be defined for each event; if no handler is defined,
            nothing will happen.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><anchor xml:id="net"/><option>net</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>net</secondary>
              </indexterm> Define parameters for a connection. All parameters
              in this section are optional.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>on</option> <option><replaceable>host-name</replaceable></option> <replaceable><optional>...</optional></replaceable></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>on</secondary>
              </indexterm> Define the properties of a resource on a particular
              host or set of hosts. Specifying more than one host name can
              make sense in a setup with IP address failover, for
              example. The <replaceable>host-name</replaceable> argument must
              match the Linux host name (<option>uname -n</option>).</para>

            <para>Usually contains or inherits at least one
            <option>volume</option> section. The <option>node-id</option> and
            <option>address</option> parameters must be defined in this
            section. The <option>device</option>, <option>disk</option>, and
            <option>meta-disk</option> parameters must be defined in, or
            inherited by, this section.</para>

            <para>A normal configuration file contains two or more
            <option>on</option> sections for each resource. Also see the
            <option>floating</option> section.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>options</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>options</secondary>
              </indexterm> Define parameters for a resource. All parameters
              in this section are optional.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>resource</option> <option><replaceable>name</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>resource</secondary>
              </indexterm> Define a resource. Usually contains at least two
              <option>on</option> sections and at least one
              <option>connection</option> section. <!-- FIXME? auto-mesh? --></para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>stacked-on-top-of <replaceable>resource</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>stacked-on-top-of</secondary>
            </indexterm> Used instead of an <option>on</option> section for
            configuring a stacked resource with three to four nodes.</para>
	  <para>Starting with DRBD 9, stacking is deprecated.  It is advised
	    to use resources which are replicated among more than two nodes
	    instead.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>startup</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>startup</secondary>
              </indexterm> The parameters in this section determine the
              behavior of a resource at startup time.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>volume</option> <option><replaceable>volume-number</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>volume</secondary>
              </indexterm> Define a volume within a resource. The volume
              numbers in the various <option>volume</option> sections of a
              resource define which devices on which hosts form a replicated
              device.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>connection</option> Parameters</title>

      <variablelist>
        <varlistentry>
          <term><option>host <replaceable>name</replaceable></option>
            <optional><option>address
                <optional>address-family</optional>
                <replaceable>address</replaceable></option></optional>
            <optional><option>port
                <replaceable>port-number</replaceable></option></optional></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>host</secondary>
              </indexterm>
            Defines an endpoint for a connection. Each <option>host</option>
            statement refers to an <option>on</option> section in a resource.
            If a port number is defined, this endpoint will use the specified
            port instead of the port defined in the <option>on</option>
            section.  Each <option>connection</option> section must contain
            exactly two <option>host</option> parameters. Instead of two
	    <option>host</option> parameters the connection may contain
	    multiple <option>path</option> sections.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>path</option> Parameters</title>

      <variablelist>
        <varlistentry>
          <term><option>host <replaceable>name</replaceable></option>
            <optional><option>address
                <optional>address-family</optional>
                <replaceable>address</replaceable></option></optional>
            <optional><option>port
                <replaceable>port-number</replaceable></option></optional></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>host</secondary>
              </indexterm>
            Defines an endpoint for a connection. Each <option>host</option>
            statement refers to an <option>on</option> section in a resource.
            If a port number is defined, this endpoint will use the specified
            port instead of the port defined in the <option>on</option>
            section.  Each <option>path</option> section must contain
            exactly two <option>host</option> parameters.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>connection-mesh</option> Parameters</title>

      <variablelist>
        <varlistentry>
          <term><option>hosts <arg choice="plain" rep="repeat"><replaceable>name</replaceable></arg></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>host</secondary>
              </indexterm>
            Defines all nodes of a mesh. Each
	    <option><replaceable>name</replaceable></option> refers to an
	    <option>on</option> section in a resource. The port
	    that is defined in the <option>on</option> section will
	    be used.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>disk</option> Parameters</title>

      <variablelist>
	<pick_drbdsetup_option name="al-extents"/>
	<pick_drbdsetup_option name="al-updates"/>
	<pick_drbdsetup_option name="disk-barrier"/>
	<pick_drbdsetup_option name="disk-timeout"/>
	<pick_drbdsetup_option name="md-flushes"/>
	<pick_drbdsetup_option name="on-io-error"/>
	<pick_drbdsetup_option name="read-balancing"/>
	<pick_drbdsetup_option name="resync-after"/>
	<pick_drbdsetup_option name="rs-discard-granularity"/>
	<pick_drbdsetup_option name="discard-zeroes-if-aligned"/>
	<!-- <pick_drbdsetup_option name="size"/> -->
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>peer-device-options</option> Parameters</title>
      <para>Please not that you open the section with the <option>disk</option> keyword.</para>
      <variablelist>
	<pick_drbdsetup_option name="c-delay-target"/>
	<pick_drbdsetup_option name="c-min-rate"/>
	<pick_drbdsetup_option name="resync-rate"/>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>global</option> Parameters</title>

      <variablelist>
        <pick_drbdsetup_option name="dialog-refresh"/>
        <pick_drbdsetup_option name="disable-ip-verification"/>
        <pick_drbdsetup_option name="usage-count"/>
        <pick_drbdsetup_option name="udev-always-use-vnr"/>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>handlers</option> Parameters</title>

      <variablelist>
        <varlistentry>
          <term><option>after-resync-target <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>after-resync-target</secondary>
              </indexterm> Called on a resync target when a node state
              changes from <option>Inconsistent</option> to <option>Consistent</option> when a resync finishes.
              This handler can be used for removing the snapshot created in the
              <option>before-resync-target</option> handler.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>before-resync-target <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>before-resync-target</secondary>
              </indexterm> Called on a resync target before a resync begins.
              This handler can be used for creating a snapshot of the
              lower-level device for the duration of the resync: if the resync
              source becomes unavailable during a resync, reverting to the
              snapshot can restore a consistent state.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>fence-peer <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>fence-peer</secondary>
              </indexterm> Called when a node should fence a resource on a
              particular peer. The handler should not use the same
              communication path that DRBD uses for talking to the peer.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>unfence-peer <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>unfence-peer</secondary>
              </indexterm> Called when a node should remove fencing constraints
	      from other nodes.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>initial-split-brain <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>initial-split-brain</secondary>
              </indexterm> Called when DRBD connects to a peer and detects that
              the peer is in a split-brain state with the local node.  This
              handler is also called for split-brain scenarios which will be
              resolved automatically.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>local-io-error <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>local-io-error</secondary>
              </indexterm> Called when an I/O error occurs on a lower-level device.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>pri-lost <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>pri-lost</secondary>
              </indexterm>
              The local node is currently primary, but DRBD believes that it
              should become a sync target. The node should give up its primary
              role.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>pri-lost-after-sb <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>pri-lost-after-sb</secondary>
              </indexterm> The local node is currently primary, but it has lost
              the after-split-brain auto recovery procedure. The node should be
              abandoned. <!-- FIXME: What is "abandon a node" supposed to mean? --></para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>pri-on-incon-degr <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>pri-on-incon-degr</secondary>
	      </indexterm> The local node is primary, and neither the local
	    lower-level device nor a lower-level device on a peer is up to
	    date.  (The primary has no device to read from or to write
	    to.)</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>split-brain <replaceable>cmd</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>split-brain</secondary>
              </indexterm> DRBD has detected a split-brain situation which
              could not be resolved automatically.  Manual recovery is
              necessary. This handler can be used to call for administrator
              attention.</para>
          </listitem>
        </varlistentry>

      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>net</option> Parameters</title>

      <variablelist>
        <pick_drbdsetup_option name="after-sb-0pri"/>
        <pick_drbdsetup_option name="after-sb-1pri"/>
        <pick_drbdsetup_option name="after-sb-2pri"/>
        <pick_drbdsetup_option name="allow-two-primaries"/>
        <pick_drbdsetup_option name="always-asbp"/>
        <pick_drbdsetup_option name="connect-int"/>
        <pick_drbdsetup_option name="cram-hmac-alg"/>
        <pick_drbdsetup_option name="csums-alg"/>
        <pick_drbdsetup_option name="csums-after-crash-only"/>
        <pick_drbdsetup_option name="data-integrity-alg"/>
        <pick_drbdsetup_option name="fencing"/>
        <pick_drbdsetup_option name="ko-count"/>
        <pick_drbdsetup_option name="max-buffers"/>
        <pick_drbdsetup_option name="max-epoch-size"/>
        <pick_drbdsetup_option name="on-congestion"/>
        <pick_drbdsetup_option name="ping-int"/>
        <pick_drbdsetup_option name="ping-timeout"/>
        <pick_drbdsetup_option name="socket-check-timeout"/>
        <pick_drbdsetup_option name="protocol"/>
        <pick_drbdsetup_option name="rcvbuf-size"/>
        <pick_drbdsetup_option name="rr-conflict"/>
        <pick_drbdsetup_option name="shared-secret"/>
        <pick_drbdsetup_option name="sndbuf-size"/>
        <pick_drbdsetup_option name="tcp-cork"/>
        <pick_drbdsetup_option name="timeout"/>
        <pick_drbdsetup_option name="use-rle"/>
        <pick_drbdsetup_option name="verify-alg"/>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>on</option> Parameters</title>

      <variablelist>
        <varlistentry>
          <term><option>address
              <replaceable><optional>address-family</optional></replaceable>
              <replaceable>address</replaceable>:<replaceable>port</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>address</secondary>
              </indexterm> Defines the address family, address, and port of a
              connection endpoint.</para>

	    <para>The address families <option>ipv4</option>,
	      <option>ipv6</option>, <option>ssocks</option> (Dolphin
	      Interconnect Solutions' "super sockets"), <option>sdp</option>
	      (Infiniband Sockets Direct Protocol), and <option>sci</option>
	      are supported (<option>sci</option> is an alias for
	      <option>ssocks</option>).  If no address family is specified,
	      <option>ipv4</option> is assumed.  For all address families
	      except <option>ipv6</option>, the address is specified in IPV4
	      address notation (for example, 1.2.3.4).  For
	      <option>ipv6</option>, the address is enclosed in brackets and
	      uses IPv6 address notation (for example, <literal
		moreinfo="none">[fd01:2345:6789:abcd::1]</literal>).  The port
	      is always specified as a decimal number from 1 to 65535.</para>

            <para>On each host, the port numbers must be unique for each
              address; ports cannot be shared.</para>
          <!-- FIXME: The port should be made optional to avoid duplicate
                      information here and in the connection sections. -->
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>node-id <replaceable>value</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>node-id</secondary>
              </indexterm>
              Defines the unique node identifier for a node in the cluster.
              Node identifiers are used to identify individual nodes in the
              network protocol, and to assign bitmap slots to nodes in the
              metadata.</para>

            <para>Node identifiers can only be reasssigned in a cluster when
              the cluster is down.  It is essential that the node identifiers
              in the configuration and in the device metadata are changed
              consistently on all hosts.  To change the metadata, dump the
              current state with <command>drbdmeta dump-md</command>, adjust the bitmap slot
              assignment, and update the metadata with
              <command>drbdmeta restore-md</command>.</para>

            <para>The <option>node-id</option> parameter exists since DRBD 9.
              Its value ranges from 0 to 16; there is no default.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>options</option> Parameters (Resource Options)</title>

      <variablelist>
        <pick_drbdsetup_option name="auto-promote"/>
        <pick_drbdsetup_option name="cpu-mask"/>
        <pick_drbdsetup_option name="on-no-data-accessible"/>
        <pick_drbdsetup_option name="peer-ack-window"/>
        <pick_drbdsetup_option name="peer-ack-delay"/>
        <pick_drbdsetup_option name="quorum"/>
        <pick_drbdsetup_option name="on-no-quorum"/>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>startup</option> Parameters</title>

      <para>The parameters in this section define the behavior of DRBD at
        system startup time, in the DRBD init script.  They have no effect once
        the system is up and running.</para>

      <variablelist>
	<pick_drbdsetup_option name="degr-wfc-timeout"/>
	<pick_drbdsetup_option name="outdated-wfc-timeout"/>

        <varlistentry>
          <term><option>stacked-timeouts</option></term>

          <listitem>
            <para>On stacked devices, the <option>wfc-timeout</option> and
              <option>degr-wfc-timeout</option> parameters in the configuration
              are usually ignored, and both timeouts are set to twice the
              <option>connect-int</option> timeout.  The
              <option>stacked-timeouts</option> parameter tells DRBD to use the
              <option>wfc-timeout</option> and
              <option>degr-wfc-timeout</option> parameters as defined in the
              configuration, even on stacked devices.  Only use this parameter
              if the peer of the stacked resource is usually not available, or
              will not become primary.  Incorrect use of this parameter can
              lead to unexpected split-brain scenarios.</para>
          </listitem>
        </varlistentry>

	<pick_drbdsetup_option name="wait-after-sb"/>
	<pick_drbdsetup_option name="wfc-timeout"/>
      </variablelist>
    </refsect2>

    <refsect2>
      <title>Section <option>volume</option> Parameters</title>

      <variablelist>
        <varlistentry>
          <term><option>device /dev/drbd<replaceable>minor-number</replaceable></option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>device</secondary>
              </indexterm> Define the device name and minor number of a
              replicated block device.  This is the device that applications
              are supposed to access; in most cases, the device is not used
              directly, but as a file system. This parameter is required and
              the standard device naming convention is assumed.</para>

            <para>In addition to this device, udev will create
              <option>/dev/drbd/by-res/<replaceable>resource</replaceable>/<replaceable>volume</replaceable></option>
              and <option>/dev/drbd/by-disk/<replaceable>lower-level-device</replaceable></option>
              symlinks to the device.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
	  <term><option>disk</option>
	      <group choice="req" rep="norepeat">
		<arg rep="norepeat">disk</arg>
		<arg choice="plain" rep="norepeat"><option>none</option></arg>
	      </group>
	    </term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>disk</secondary>
              </indexterm> Define the lower-level block device that DRBD will
              use for storing the actual data.  While the replicated drbd
              device is configured, the lower-level device must not be used directly.
              Even read-only access with tools like <citerefentry>
                <refentrytitle>dumpe2fs</refentrytitle>
                <manvolnum>8</manvolnum> </citerefentry> and similar is not
	      allowed. The keyword <option>none</option> specifies that no
	      lower-level block device is configured; this also overrides
	      inheritance of the lower-level device.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>meta-disk internal</option></term>

          <term><option>meta-disk <replaceable>device</replaceable></option></term>

          <term><option>meta-disk <replaceable>device</replaceable> [<replaceable>index</replaceable>]</option></term>

          <listitem>
            <para><indexterm significance="normal">
                <primary>drbd.conf</primary>

                <secondary>meta-disk</secondary>
              </indexterm> Define where the metadata of a replicated block
              device resides: it can be <option>internal</option>, meaning that the lower-level
              device contains both the data and the metadata, or on a separate
              device.</para>

            <para>When the <replaceable>index</replaceable> form of this
              parameter is used, multiple replicated devices can share the same
              metadata device, each using a separate index.  Each index
              occupies 128 MiB of data, which corresponds to a replicated
	      device size of at most 4 TiB with two cluster nodes.  We
	      recommend not to share metadata devices anymore, and to instead
	      use the lvm volume manager for creating metadata devices as
	      needed.</para>

            <para>When the <replaceable>index</replaceable> form of this
              parameter is not used, the size of the lower-level device
              determines the size of the metadata.  The size needed is 36 KiB +
              (size of lower-level device) / 32K * (number of nodes - 1).  If <!-- FIXME: al-striping, al-extents 65536? -->
              the metadata device is bigger than that, the extra space is not
              used.</para>
	    <para>This parameter is required if a <option>disk</option> other
	      than <option>none</option> is specified, and ignored if
	      <option>disk</option> is set to <option>none</option>.  A
	      <option>meta-disk</option> parameter without a
	      <option>disk</option> parameter is not allowed.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect2>
  </refsect1>

  <refsect1 id="data-integrity">
    <title>Notes on data integrity</title>

    <para>DRBD supports two different mechanisms for data integrity checking:
      first, the <option>data-integrity-alg</option> network parameter allows
      to add a checksum to the data sent over the network.  Second, the online
      verification mechanism (<command moreinfo="none">drbdadm verify</command>
      and the <option>verify-alg</option> parameter) allows to check for
      differences in the on-disk data.</para>

    <para>Both mechanisms can produce false positives if the data is modified
      during I/O (i.e., while it is being sent over the network or written to
      disk).  This does not always indicate a problem: for example, some
      file systems and applications do modify data under I/O for certain
      operations.  Swap space can also undergo changes while under I/O.</para>

    <para>Network data integrity checking tries to identify data modification
      during I/O by verifying the checksums on the sender side after sending the
      data.  If it detects a mismatch, it logs an error.  The receiver also
      logs an error when it detects a mismatch.  Thus, an error logged only on
      the receiver side indicates an error on the network, and an error logged
      on both sides indicates data modification under I/O.</para>

    <para>The most recent example of systematic data corruption was identified
      as a bug in the TCP offloading engine and driver of a certain type of
      GBit NIC in 2007: the data corruption happened on the DMA transfer from
      core memory to the card. Because the TCP checksum were calculated on the
      card, the TCP/IP protocol checksums did not reveal this problem.</para>
  </refsect1>

  <refsect1>
    <title>Version</title>

    <simpara>This document was revised for version 9.0.0 of the DRBD distribution.</simpara>
  </refsect1>

  <refsect1>
    <title>Author</title>

    <simpara>Written by Philipp Reisner <email>philipp.reisner@linbit.com</email> and Lars
    Ellenberg <email>lars.ellenberg@linbit.com</email>.</simpara>
  </refsect1>

  <refsect1>
    <title>Reporting Bugs</title>

    <simpara>Report bugs to <email>drbd-user@lists.linbit.com</email>.</simpara>
  </refsect1>

  <refsect1>
    <title>Copyright</title>

    <simpara>Copyright 2001-2012 LINBIT Information Technologies, Philipp Reisner, Lars Ellenberg.
    This is free software; see the source for copying conditions. There is NO warranty; not even
    for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</simpara>
  </refsect1>

  <refsect1>
    <title>See Also</title>

    <para><citerefentry>
        <refentrytitle>drbd</refentrytitle>

        <manvolnum>8</manvolnum>
      </citerefentry>, <citerefentry>
        <refentrytitle>drbddisk</refentrytitle>

        <manvolnum>8</manvolnum>
      </citerefentry>, <citerefentry>
        <refentrytitle>drbdsetup</refentrytitle>

        <manvolnum>8</manvolnum>
      </citerefentry>, <citerefentry>
        <refentrytitle>drbdadm</refentrytitle>

        <manvolnum>8</manvolnum>
      </citerefentry>,
      <ulink url="http://www.drbd.org/users-guide/"><citetitle>DRBD User's Guide</citetitle></ulink>,
       <ulink url="http://www.drbd.org/"><citetitle>DRBD Web Site</citetitle></ulink></para>

  </refsect1>
</refentry>
