<?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-drbdsetup">
  &drbdsetup_options;

  <refentryinfo>
    <date>3 December 2011</date>

    <productname>DRBD</productname>

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

  <refmeta>
    <refentrytitle>drbdsetup</refentrytitle>

    <manvolnum>8</manvolnum>

    <refmiscinfo class="manual">System Administration</refmiscinfo>
  </refmeta>

  <refnamediv>
    <refname>drbdsetup</refname>

    <refpurpose>Configure the DRBD kernel module<indexterm significance="normal">
        <primary>drbdsetup</primary>
      </indexterm></refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis sepchar=" ">
      <command moreinfo="none">drbdsetup</command>
      <arg choice="plain" rep="norepeat">command</arg>
      <arg choice="req" rep="repeat">argument</arg>
      <arg choice="opt" rep="repeat">option</arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>The <command moreinfo="none">drbdsetup</command> utility serves to
      configure the DRBD kernel module and to show its current configuration.
      Users usually interact with the <command
	moreinfo="none">drbdadm</command> utility, which provides a more
      high-level interface to DRBD than <command
	moreinfo="none">drbdsetup</command>.  (See <option>drbdadm</option>'s
      <option>--dry-run</option> option to see how <option>drbdadm</option>
      uses <option>drbdsetup</option>.)</para>

    <para>Some option arguments 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, M
    for Mega). The common suffixes K = 2^10 = 1024, M = 1024 K, and G = 1024
    M are supported.</para>
  </refsect1>

  <refsect1>
    <title>Commands</title>

    <variablelist>
      <varlistentry>
	<xi:include href="drbdsetup_attach.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Attach a lower-level device to an existing replicated device. -->
	<xi:include href="drbdsetup_disk-options.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Change the disk options of an attached lower-level device. -->

        <listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>disk</secondary>
	  </indexterm>

	  <para>The <option>attach</option> command attaches a lower-level
	    device to an existing replicated device.  The
	    <option>disk-options</option> command changes the disk options of
	    an attached lower-level device.  In either case, the replicated
	    device must have been created with <command
	    moreinfo="none">drbdsetup new-minor</command>.</para>

	    <para>Both commands refer to the replicated device by its
	    <replaceable>minor</replaceable> number.
	    <replaceable>lower_dev</replaceable> is the name of the lower-level
	    device.  <replaceable>meta_data_dev</replaceable> is the name of
	    the device containing the metadata, and may be the same as
	    <replaceable>lower_dev</replaceable>.
	    <replaceable>meta_data_index</replaceable> is either a numeric
	    metadata index, or the keyword <option>internal</option> for
	    internal metadata, or the keyword <option>flexible</option> for
	    variable-size external metadata. Available
	    options:</para>


	  <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="size"/> <!-- only for attach, not for disk-options? -->
	    <pick_drbdsetup_option name="discard-zeroes-if-aligned"/>
	    <pick_drbdsetup_option name="rs-discard-granularity"/>
          </variablelist>
        </listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_peer-device-options.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Remember the current size of a lower-level device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>peer-device-options</secondary>
	  </indexterm>

	  <para>These are options that affect the <replaceable>peer</replaceable>'s device.
	  </para>


	  <variablelist>
	    <pick_drbdsetup_option name="c-delay-target"/>
	    <pick_drbdsetup_option name="c-fill-target"/>
	    <pick_drbdsetup_option name="c-max-rate"/>
	    <pick_drbdsetup_option name="c-min-rate"/>
	    <pick_drbdsetup_option name="c-plan-ahead"/>
	    <pick_drbdsetup_option name="resync-rate"/>
	 </variablelist>

	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_check-resize.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Remember the current size of a lower-level device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>check-resize</secondary>
	  </indexterm>

	  <para>Remember the current size of the lower-level device of the
	  specified replicated device.  Used by drbdadm.  The size information
	  is stored in file
	  /var/lib/drbd/drbd-minor-<replaceable>minor</replaceable>.lkbd.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_new-peer.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Create a connection/peer within a resource. -->
	<xi:include href="drbdsetup_net-options.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Change the network options of a connection. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>net</secondary>
	  </indexterm>

	  <para>The <option>new-peer</option> command creates a connection within
          a <replaceable>resource</replaceable>. The resource
	  must have been created with <command moreinfo="none">drbdsetup
	  new-resource</command>.  The <option>net-options</option> command
	  changes the network options of an existing connection. Before a
	  connection can be activated with the <option>connect</option>
	  command, at least one path need to added with the <option>new-path</option>
	  command. Available options:</para>

	  <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>
	</listitem>
      </varlistentry>


      <varlistentry>
	<xi:include href="drbdsetup_new-path.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Create a path to a peer (within a connection). -->
	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>net</secondary>
	  </indexterm>

	  <para>The <option>new-path</option> command creates a path within
          a <replaceable>connection</replaceable>. The connection
	  must have been created with <command moreinfo="none">drbdsetup
	  new-peer</command>. <replaceable>Local_addr</replaceable> and
	  <replaceable>remote_addr</replaceable> refer to the local and remote
	  protocol, network address, and port in the format
	  <optional><replaceable>address-family</replaceable>:</optional><replaceable>address</replaceable><optional>:<replaceable>port</replaceable></optional>.
	  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
	  <replaceable>address</replaceable> uses 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,
	  [fd01:2345:6789:abcd::1]).  The <replaceable>port</replaceable>
	  defaults to 7788.</para>

	</listitem>
      </varlistentry>


      <varlistentry>
	<xi:include href="drbdsetup_connect.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Activate a connection. -->
	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>net</secondary>
	  </indexterm>

	  <para>The <option>connect</option> command activates a connection.
	  That means that the DRBD driver will bind and listen on all local
	  addresses of the connection-'s paths. It will begin to try to establish
	  one or more paths of the connection.  Available options: </para>

	  <variablelist>
	    <pick_drbdsetup_option name="tentative"/>
	    <pick_drbdsetup_option name="discard-my-data"/>
	  </variablelist>

	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_del-peer.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Remove a connection/peer within a resource. -->
	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>net</secondary>
	  </indexterm>

	  <para>The <option>del-peer</option> command removes a connection from
          a <replaceable>resource</replaceable>.</para>

	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_del-path.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Remove a connection/peer within a resource. -->
	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>net</secondary>
	  </indexterm>

	  <para>The <option>del-path</option> command removes a path from
          a <replaceable>connection</replaceable>. Please not that it fails if
	  the path is necessary to keep a connected connection in tact. In order
	  to remove all paths, disconnect the connection first.</para>

	</listitem>
      </varlistentry>


      <varlistentry>
	<xi:include href="drbdsetup_cstate.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Show the current state of a connection. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>cstate</secondary>
	  </indexterm>

	  <para>Show the current state of a connection.  The connection is
	  identified by the node-id of the peer; see the <command
	  moreinfo="none">drbdsetup connect</command> command.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_del-minor.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Remove a replicated device. -->

	<listitem>
	  <para>Remove a replicated device.  No lower-level device may be
	  attached; see <command moreinfo="none">drbdsetup detach</command>.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_del-resource.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Remove a resource. -->

	<listitem>
	  <para>Remove a resource.  All volumes and connections must be removed
	  first (<command moreinfo="none">drbdsetup del-minor</command>,
	  <command moreinfo="none">drbdsetup disconnect</command>).
	  Alternatively, <command moreinfo="none">drbdsetup down</command> can
	  be used to remove a resource together with all its volumes and
	  connections.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_detach.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Detach the lower-level device of a replicated device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>detach</secondary>
	  </indexterm>
	  <para>Detach the lower-level device of a replicated device.  Available options:
	  <variablelist>
	    <varlistentry>
	      <term><option>--force</option></term>
	      <listitem>
		<para>Force the detach and return immediately.  This puts the
		lower-level device into failed state until all pending I/O
		has completed, and then detaches the device.  Any I/O not yet
		submitted to the lower-level device (for example, because I/O
		on the device was suspended) is assumed to have failed.</para>
	      </listitem>
	    </varlistentry>
	  </variablelist>
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_disconnect.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Disconnect a resource from a peer host. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>disconnect</secondary>
	  </indexterm>

	  <para>Remove a connection to a peer host.  The connection is
	  identified by the node-id of the peer; see the <command
	  moreinfo="none">drbdsetup connect</command> command.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_down.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Take a resource down. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>down</secondary>
	  </indexterm>

	  <para>Take a resource down by removing all volumes, connections, and
	    the resource itself.
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_dstate.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Show the current disk state of a lower-level device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>dstate</secondary>
	  </indexterm>

	  <para>Show the current disk state of a lower-level device.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_events2.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Show the current state and all state changes of all resources. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>events2</secondary>
	  </indexterm>

	  <para>Show the current state of all configured DRBD objects, followed
	    by all changes to the state.</para>

	  <para>The output format is meant to be human as well as machine
	    readable. The line starts with a word that indicates the kind of event:
	    <option>exists</option> for an existing object;
	    <option>create</option>, <option>destroy</option>, and
	    <option>change</option> if an object is created, destroyed, or
	    changed; or <option>call</option> or <option>response</option> if
	    an event handler is called or it returns.  The second word indicates
	    the object the event applies to: <option>resource</option>,
	    <option>device</option>, <option>connection</option>,
	    <option>peer-device</option>, <option>helper</option>, or a dash
	    (<option>-</option>) to indicate that the current state has been
	    dumped completely.</para>

	  <para>The remaining words identify the object and describe the state
	    that he object is in.  Available options:

	    <variablelist>
	      <varlistentry>
		<term><option>--now</option></term>

		<listitem>
		  <para>Terminate after reporting the current state.  The
		    default is to continuously listen and report state
		    changes.</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>--statistics</option></term>

		<listitem>
		  <para>Include statistics in the output.</para>
		</listitem>
	      </varlistentry>
	    </variablelist>
	  </para>
	</listitem>
    </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_get-gi.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Show the data generation identifiers for a device on a particular connection. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>get-gi</secondary>
	  </indexterm>

	  <para>Show the data generation identifiers for a device on a
	  particular connection.  The device is identified by its volume
	  number.  The connection is identified by its endpoints; see the
	  <command moreinfo="none">drbdsetup connect</command> command.</para>

	  <para>The output consists of the current UUID, bitmap UUID, and the
	  first two history UUIDS, folowed by a set of flags.  The current UUID
	  and history UUIDs are device specific; the bitmap UUID and flags are
	  peer device specific.  This command only shows the first two history
	  UUIDs.  Internally, DRBD maintains one history UUID for each possible
	  peer device.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_invalidate.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Replace the local data of a resource with that of a peer. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>invalidate</secondary>
	  </indexterm>

	  <para>Replace the local data of a device with that of a peer.  All
	    the local data will be marked out-of-sync, and a resync with the
	    specified peer device will be initialted.</para>
	  <!-- "This command will fail if the device is not part of a connected device pair." -->
	  <!-- FIXME: What if the peer is not connected? -->
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_invalidate-remote.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Replace a peer's data of a resource with the local data. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>invalidate-remote</secondary>
	  </indexterm>

	  <para>Replace a peer device's data of a resource with the local data.
	    The peer device's data will be marked out-of-sync, and a resync
	    from the local node to the specified peer will be initiated.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_new-current-uuid.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Generate a new current UUID. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>new-current-uuid</secondary>
	  </indexterm>

	  <!-- FIXME: The description does not really explain what is going on
	  and why; this needs to be completely analyzed and revised.  Also, we
	  should have separate commands for creating a new current uuid and for
	  clearing unused bitmap slots. -->

	  <para>Generate a new current UUID and rotates all other UUID values. This has at least two
	  use cases, namely to skip the initial sync, and to reduce network bandwidth when starting in
	  a single node configuration and then later (re-)integrating a remote site.</para>

	  <para>Available option: <variablelist>
	      <varlistentry>
		<term><option>--clear-bitmap</option></term>

		<listitem>
		  <para>Clears the sync bitmap in addition to generating a new current UUID.</para>
		</listitem>
	      </varlistentry>
	    </variablelist></para>

	  <para>This can be used to skip the initial sync, if you want to start from scratch. This
	  use-case does only work on "Just Created" meta data. Necessary steps: <orderedlist
	      continuation="restarts" inheritnum="ignore" numeration="arabic">
	      <listitem>
		<simpara>On <emphasis>both</emphasis> nodes, initialize meta data and configure the
		device.</simpara>

		<simpara><command moreinfo="none">drbdadm create-md --force
		<replaceable>res</replaceable></command></simpara>
	      </listitem>

	      <listitem>
		<simpara>They need to do the initial handshake, so they know their sizes.</simpara>

		<simpara><command moreinfo="none">drbdadm up
		<replaceable>res</replaceable></command></simpara>
	      </listitem>

	      <listitem>
		<simpara>They are now Connected Secondary/Secondary Inconsistent/Inconsistent.
		Generate a new current-uuid and clear the dirty bitmap.</simpara>

		<simpara><command moreinfo="none">drbdadm --clear-bitmap new-current-uuid
		<replaceable>res</replaceable></command></simpara>
	      </listitem>

	      <listitem>
		<simpara>They are now Connected Secondary/Secondary UpToDate/UpToDate. Make one side
		primary and create a file system.</simpara>

		<simpara><command moreinfo="none">drbdadm primary
		<replaceable>res</replaceable></command></simpara>

		<simpara><command moreinfo="none">mkfs -t <replaceable>fs-type</replaceable> $(drbdadm
		sh-dev <replaceable>res</replaceable>)</command></simpara>
		<!-- FIXME: sh-dev can probably return more than one device; we can no longer use it like this. -->
	      </listitem>
	    </orderedlist></para>

	  <para>One obvious side-effect is that the replica is full of old garbage (unless you made
	  them identical using other means), so any online-verify is expected to find any number of
	  out-of-sync blocks.</para>

	  <para><emphasis>You must not use this on pre-existing data!</emphasis> Even though it may
	  appear to work at first glance, once you switch to the other node, your data is toast, as it
	  never got replicated. So <emphasis>do not leave out the mkfs</emphasis> (or
	  equivalent).</para>

	  <para>This can also be used to shorten the initial resync of a cluster where the second node
	  is added after the first node is gone into production, by means of disk shipping. This
	  use-case works on disconnected devices only, the device may be in primary or secondary
	  role.</para>

	  <para>The necessary steps on the current active server are: <orderedlist
	      continuation="restarts" inheritnum="ignore" numeration="arabic">
	      <listitem>
		<simpara><command moreinfo="none">drbdsetup new-current-uuid --clear-bitmap <replaceable>minor</replaceable>
		</command></simpara>
	      </listitem>

	      <listitem>
		<simpara>Take the copy of the current active server. E.g. by pulling a disk out of the
		RAID1 controller, or by copying with dd. You need to copy the actual data, and the
		meta data.</simpara>
	      </listitem>

	      <listitem>
		<simpara><command moreinfo="none">drbdsetup new-current-uuid <replaceable>minor</replaceable>
		</command></simpara>
	      </listitem>
	    </orderedlist> Now add the disk to the new secondary node, and join it to the cluster. You
	  will get a resync of that parts that were changed since the first call to <command
	  moreinfo="none">drbdsetup</command> in step 1.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_new-minor.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Create a new replicated device within a resource. -->

	<listitem>
	  <para>Create a new replicated device within a resource.  The command
	    creates a block device inode for the replicated device (by default,
	    /dev/drbd<replaceable>minor</replaceable>).  The
	    <replaceable>volume</replaceable> number identifies the device
	    within the <replaceable>resource</replaceable>.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_new-resource.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Create a new resource. -->
	<xi:include href="drbdsetup_resource-options.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Change the resource options of an existing resource. -->

	<listitem>
	  <para>The <option>new-resource</option> command creates a new
	    resource.  The <option>resource-options</option> command changes
	    the resource options of an existing resource.  Available options:

	  <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>
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_outdate.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Mark the data on a lower-level device as outdated. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>outdate</secondary>
	  </indexterm>

	  <para>Mark the data on a lower-level device as outdated.  This
	    is used for fencing, and prevents the resource the device is part
	    of from becoming primary in the future.  See the
	    <option>--fencing</option> disk option.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_pause-sync.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Stop resynchronizing between a local and a peer device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>pause-sync</secondary>
	  </indexterm>

	  <para>Stop resynchronizing between a local and a peer device by
	    setting the local pause flag.  The resync can only resume if the
	    pause flags on both sides of a connection are cleared.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_primary.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Change the role of a node in a resource to primary. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>primary</secondary>
	  </indexterm>

	  <para>Change the role of a node in a resource to primary.  This
	  allows the replicated devices in this resource to be mounted or
	  opened for writing.  Available options:</para>

	  <variablelist>
	    <varlistentry>
	      <term><option>--overwrite-data-of-peer</option></term>

	      <listitem>
		<para>This option is an alias for the <option>--force</option> option.</para>
	      </listitem>
	    </varlistentry>
	  </variablelist>

	  <variablelist>
	    <varlistentry>
	      <term><option>--force</option></term>

	      <listitem>
		<para>Force the resource to become primary even if some devices
		  are not guaranteed to have up-to-date data.  This option is
		  used to turn one of the nodes in a newly created cluster into
		  the primary node, or when manually recovering from a
		  disaster.</para>
		<para>Note that this can lead to split-brain scenarios.  Also,
		  when forcefully turning an inconsistent device into an
		  up-to-date device, it is highly recommended to use any
		  integrity checks available (such as a filesystem check) to
		  make sure that the device can at least be used without
		  crashing the system.</para>
	      </listitem>
	    </varlistentry>
	  </variablelist>

	  <para>Note that DRBD usually only allows one node in a cluster to be
	    in primary role at any time; this allows DRBD to coordinate access
	    to the devices in a resource across nodes.  The
	    <option>--allow-two-primaries</option> network option changes this;
	    in that case, a mechanism outside of DRBD needs to coordinate
	    device access.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_resize.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Reexamine the lower-level device sizes to resize a replicated device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>resize</secondary>
	  </indexterm>

	  <para>Reexamine the size of the lower-level devices of a replicated
	  device on all nodes.  This command is called after the lower-level
	  devices on all nodes have been grown to adjust the size of the
	  replicated device.  Available options:

	    <variablelist>
	      <varlistentry>
		<term><option>--assume-peer-has-space</option></term>

		<listitem>
		  <para>Resize the device even if some of the peer devices are
		  not connected at the moment.  DRBD will try to resize the peer
		  devices when they next connect.  It will refuse to connect to a
		  peer device which is too small.</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>--assume-clean</option></term>
		<listitem>
		  <para>Do not resynchronize the added disk space; instead,
		  assume that it is identical on all nodes.  This option can be
		  used when the disk space is uninitialized and differences do
		  not matter, or when it is known to be identical on all nodes.
		  See the <command moreinfo="none">drbdsetup verify</command>
		  command.</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>--size <replaceable>val</replaceable></option></term>
		<listitem>
		  <para>This option can be used to online shrink the usable
		  size of a drbd device. It's the users responsibility to
		  make sure that a file system on the device is not
		  truncated by that operation.</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>--al-stripes <replaceable>val</replaceable></option>
		<option>--al-stripes <replaceable>val</replaceable></option></term>
		<listitem>
		  <para>These options may be used to change the layout of
		  the activity log online. In case of internal meta data
		  this may invovle shrinking the user visible size at the
		  same time (unsing the <option>--size</option>) or
		  increasing the avalable space on the backing
		  devices.</para>
		</listitem>
	      </varlistentry>

	    </variablelist>
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_resume-io.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Resume I/O on a replicated device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>resume-io</secondary>
	  </indexterm>

	  <para>Resume I/O on a replicated device.  See the
	  <option>--fencing</option> net option.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_resume-sync.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Resume the resynchronization between a local and a peer device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>resume-sync</secondary>
	  </indexterm>

	  <para>Allow resynchronization to resume by clearing the local sync pause flag.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_role.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Show the current role of a resource. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>role</secondary>
	  </indexterm>

	  <para>Show the current role of a resource.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_secondary.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Change the role of a node in a resource to secondary. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>secondary</secondary>
	  </indexterm>

	  <para>Change the role of a node in a resource to secondary.  This
	  command fails if the replicated device is in use.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_show.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Show the current configuration of a resource, or of all resources. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>show</secondary>
	  </indexterm>

	  <para>Show the current configuration of a resource, or of all
	  resources.  Available options:

	    <variablelist>
	      <varlistentry>
		<term><option>--show-defaults</option></term>

		<listitem>
		  <para>Show all configuration parameters, even the ones with
		  default values.  Normally, parameters with default values are
		  not shown.</para>
		</listitem>
	      </varlistentry>
	    </variablelist>
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_show-gi.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Show data generation identifiers for a device and peer device, with explanations. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>show-gi</secondary>
	  </indexterm>

	  <para>Show the data generation identifiers for a device on a
	  particular connection.  In addition, explain the output.  The output
	  otherwise is the same as in the <command moreinfo="none">drbdsetup
	  get-gi</command> command.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><command moreinfo="none">drbdsetup</command><arg choice="plain" rep="norepeat">state</arg></term>

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>state</secondary>
	  </indexterm>

	  <para>This is an alias for <command moreinfo="none">drbdsetup
	  role</command>. Deprecated.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_status.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Show the status of a resource, or of all resources. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>status</secondary>
	  </indexterm>

	  <para>Show the status of a resource, or of all resources.  The
	  output consists of one paragraph for each configured resource.  Each
	  paragraph contains one line for each resource, followed by one line
	  for each device, and one line for each connection.  The device and
	  connection lines are indented.  The connection lines are followed by
	  one line for each peer device; these lines are indented against the
	  connection line.</para>

	  <para>Long lines are wrapped around at terminal width, and indented
	  to indicate how the lines belongs together.  Available options:

	    <variablelist>
	      <varlistentry>
		<term><option>--verbose</option></term>

		<listitem>
		  <para>Include more information in the output even when it is
		  likely redundant or irrelevant.</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term><option>--statistics</option></term>

		<listitem>
		  <para>Include data transfer statistics in the output.</para>
		</listitem>
	      </varlistentry>

	      <varlistentry>
		<term>
		  <option>--color=<group choice="req" rep="norepeat">
		      <arg choice="plain" rep="norepeat">always</arg>
		      <arg choice="plain" rep="norepeat">auto</arg>
		      <arg choice="plain" rep="norepeat">never</arg>
		    </group>
		  </option>
		</term>

		<listitem>
		  <para>Colorize the output.  With
		    <option>--color=auto</option>, <option>drbdsetup</option>
		    emits color codes only when standard output is connected to
		    a terminal.
		  </para>
		</listitem>
	      </varlistentry>
	    </variablelist>
	  </para>

	  <para>For example, the non-verbose output for a resource with only
	  one connection and only one volume could look like this:
	      <programlisting format="linespecific">
drbd0 role:Primary
  disk:UpToDate
  host2.example.com role:Secondary
    disk:UpToDate
	      </programlisting>
	    </para>

	    <para>With the <option>--verbose</option> option, the same resource
	    could be reported as:
	      <programlisting format="linespecific">
drbd0 node-id:1 role:Primary suspended:no
  volume:0 minor:1 disk:UpToDate blocked:no
  host2.example.com local:ipv4:192.168.123.4:7788
      peer:ipv4:192.168.123.2:7788 node-id:0 connection:WFReportParams
      role:Secondary congested:no
    volume:0 replication:Connected disk:UpToDate resync-suspended:no
	      </programlisting>
	    </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_suspend-io.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Suspend I/O on a replicated device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>suspend-io</secondary>
	  </indexterm>

	  <para>Suspend I/O on a replicated device.  It is not usually
	  necessary to use this command.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_verify.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Verify the data on a lower-level device against a peer device. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>verify</secondary>
	  </indexterm>

	  <para>Start online verification, change which part of the device will
	  be verified, or stop online verification.  The command requires the
	  specified peer to be connected.</para>

	  <para>Online verification compares each disk block on the local and
	  peer node.  Blocks which differ between the nodes are marked
	  as out-of-sync, but they are <emphasis>not</emphasis> automatically
	  brought back into sync.  To bring them into sync, the resource must
	  be disconnected and reconnected.  Progress can be monitored in the
	  output of <command moreinfo="none">drbdsetup status
	    --statistics</command>.  Available options:</para>

	  <variablelist>
	    <varlistentry>
	      <term><option>--start <replaceable>position</replaceable></option></term>

	      <listitem>
		<para>Define where online verification should start.  This
		parameter is ignored if online verification is already in
		progress.  If the start parameter is not specified, online
		verification will continue where it was interrupted (if the
		connection to the peer was lost while verifying), after the
		previous stop sector (if the previous online verification has
		finished), or at the beginning of the device (if the end of the
		device was reached, or online verify has not run
		before).</para>

		<para>The position on disk is specified in disk sectors (512
		bytes) by default.</para>
	      </listitem>
	    </varlistentry>
	    <varlistentry>
	      <term><option>--stop <replaceable>position</replaceable></option></term>
	      <listitem>
		<para>Define where online verification should stop.  If online
		verification is already in progress, the stop position of the
		active online verification process is changed.  Use this to
		stop online verification.</para>

		<para>The position on disk is specified in disk sectors (512
		bytes) by default.</para>
	      </listitem>
	    </varlistentry>
	  </variablelist>

	  <para>Also see the notes on data integrity in the <citerefentry>
	  <refentrytitle>drbd.conf</refentrytitle> <manvolnum>5</manvolnum>
	  </citerefentry> manual page.</para>
	</listitem>
      </varlistentry>

      <varlistentry>

	<xi:include href="drbdsetup_wait-connect-volume.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Wait until a device on a peer is visible. -->
	<xi:include href="drbdsetup_wait-connect-connection.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Wait until all peer volumes of connection are visible. -->
	<xi:include href="drbdsetup_wait-connect-resource.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Wait until all connections are establised. -->

	<xi:include href="drbdsetup_wait-sync-volume.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Wait until a device on a peer is up to date. -->
	<xi:include href="drbdsetup_wait-sync-connection.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Wait until resync finished on all volumes of a connection. -->
	<xi:include href="drbdsetup_wait-sync-resource.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Wait until resync finished on all volumes. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>wait-connect-volume</secondary>
	    <secondary>wait-connect-connection</secondary>
	    <secondary>wait-connect-resource</secondary>
	  </indexterm>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>wait-sync-volume</secondary>
	    <secondary>wait-sync-connection</secondary>
	    <secondary>wait-sync-resource</secondary>
	  </indexterm>

	  <para>The <option>wait-connect-*</option> commands waits until a device
	  on a peer is visible.  The <option>wait-sync-*</option> commands waits
	  until a device on a peer is up to date.  Available options for both
	  commands:

	    <variablelist>
	      <pick_drbdsetup_option name="degr-wfc-timeout"/>
	      <pick_drbdsetup_option name="outdated-wfc-timeout"/>
	      <pick_drbdsetup_option name="wait-after-sb"/>
	      <pick_drbdsetup_option name="wfc-timeout"/>
	    </variablelist>
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<xi:include href="drbdsetup_forget-peer.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
	<!-- Completely remove any reference to a unconnected peer from meta-data. -->

	<listitem>
	  <indexterm significance="normal">
	    <primary>drbdsetup</primary>

	    <secondary>forget-peer</secondary>
	  </indexterm>

	  <para>The <option>forget-peer</option> command removes all traces of
	  a peer node from the meta-data. It frees a bitmap slot in the meta-data
	  and make it avalable for futher bitmap slot allocation in case a
	  so-far never seen node connects.</para>
	  <para>The connection must be taken down before this command may be used.
	  In case the peer re-connects at a later point a bit-map based resync
	  will be turned into a full-sync.</para>
	</listitem>
      </varlistentry>

    </variablelist>
  </refsect1>

  <refsect1>
    <title>Examples</title>

    <para>Please see the <ulink
	url="http://www.drbd.org/users-guide/"><citetitle>DRBD User's Guide</citetitle></ulink>
      for examples.</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.conf</refentrytitle>

        <manvolnum>5</manvolnum>
      </citerefentry>, <citerefentry>
        <refentrytitle>drbd</refentrytitle>

        <manvolnum>8</manvolnum>
      </citerefentry>, <citerefentry>
        <refentrytitle>drbddisk</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>
