A.2. Changes to the configuration syntax

This section highlights changes to the configuration syntax. It affects the DRBD configuration files in /etc/drbd.d, and /etc/drbd.conf.

[Important]Important

The drbdadm parser still accepts pre-8.4 configuration syntax and automatically translates, internally, into the current syntax. Unless you are planning to use new features not present in prior DRBD releases, there is no requirement to modify your configuration to the current syntax. It is, however, recommended that you eventually adopt the new syntax, as the old format will no longer be supported in DRBD 9.

A.2.1. Boolean configuration options

drbd.conf supports a variety of boolean configuration options. In pre DRBD 8.4 syntax, these boolean options would be set as follows:

Pre-DRBD 8.4 configuration example with boolean options. 

resource test {
  disk {
    no-md-flushes;
  }
}

This led to configuration issues if you wanted to set a boolean variable in the common configuration section, and then override it for individual resources:

Pre-DRBD 8.4 configuration example with boolean options in common section. 

common {
  no-md-flushes;
}
resource test {
  disk {
    # No facility to enable disk flushes previously disabled in
    # "common"
  }
}

In DRBD 8.4, all boolean options take a value of yes or no, making them easily configurable both from common and from individual resource sections:

DRBD 8.4 configuration example with boolean options in common section. 

common {
  md-flushes no;
}
resource test {
  disk {
    md-flushes yes;
  }
}

A.2.2. syncer section no longer exists

Prior to DRBD 8.4, the configuration syntax allowed for a syncer section which has become obsolete in 8.4. All previously existing syncer options have now moved into the net or disk sections of resources.

Pre-DRBD 8.4 configuration example with syncer section. 

resource test {
  syncer {
    al-extents 3389;
    verify-alg md5;
  }
  ...
}

The above example is expressed, in DRBD 8.4 syntax, as follows:

DRBD 8.4 configuration example with syncer section replaced. 

resource test {
  disk {
    al-extents 3389;
  }
  net {
    verify-alg md5;
  }
  ...
}

A.2.3. protocol option is no longer special

In prior DRBD releases, the protocol option was awkwardly (and counter-intuitively) required to be specified on its own, rather than as part of the net section. DRBD 8.4 removes this anomaly:

Pre-DRBD 8.4 configuration example with standalone protocol option. 

resource test {
  protocol C;
  ...
  net {
    ...
  }
  ...
}

The equivalent DRBD 8.4 configuration syntax is:

DRBD 8.4 configuration example with protocol option within net section. 

resource test {
  net {
    protocol C;
    ...
  }
  ...
}

A.2.4. New per-resource options section

DRBD 8.4 introduces a new options section that may be specified either in a resource or in the common section. The cpu-mask option has moved into this section from the syncer section in which it was awkwardly configured before. The on-no-data-accessible option has also moved to this section, rather than being in disk where it had been in pre-8.4 releases.

Pre-DRBD 8.4 configuration example with cpu-mask and on-no-data-accessible

resource test {
  syncer {
    cpu-mask ff;
  }
  disk {
    on-no-data-accessible suspend-io;
  }
  ...
}

The equivalent DRBD 8.4 configuration syntax is:

DRBD 8.4 configuration example with options section. 

resource test {
  options {
    cpu-mask ff;
    on-no-data-accessible suspend-io;
  }
  ...
}