Drbdadm create-md error ; Parse error: 'an option keyword' expected, but got 'on-no-quorum'

Following “NFS High Availability with Pacemaker & DRBD - LINBIT” to create a testing cluster and all goes well until I call drbdadm create-md ha_nfs

drbd.d/global_common.conf:13: Parse error: 'an option keyword' expected,
        but got 'on-no-quorum'

vi global_common.conf
resource "ha_nfs" {
  volume 0 {
    device "/dev/drbd1000";
    disk "/dev/nfs_vg/ha_nfs_internal_lv";
    meta-disk internal;
  }
  volume 1 {
    device "/dev/drbd1001";
    disk "/dev/nfs_vg/ha_nfs_exports_lv";
    meta-disk internal;
   }
  options {
    on-no-quorum suspend-io;
    quorum majority;
  }
  on "node-0" {
    address 10.170.2.146:7788;
    node-id 0;
  }
  on "node-1" {
    address 10.170.2.133:7788;
    node-id 1;
  }
  on "node-2" {
    volume 0 {
      disk none;
    }
    volume 1 {
      disk none;
    }
    address 10.170.2.135:7788;
    node-id 2;
  }
  connection-mesh {
    hosts "node-0" "node-1" "node-2";
  }
}

Any ideas what is the issue?

Thanks in advance.

What version of the drbd kernel module and drbd-utils do you have installed?

[root@p01-uks ~]# rpm -qa drbd*
drbd-selinux-9.28.0-1.el9.x86_64
drbd-utils-9.28.0-1.el9.x86_64
drbd-udev-9.28.0-1.el9.x86_64
drbd-9.28.0-1.el9.x86_64

[root@p01-uks ~]# drbdadm --version
DRBDADM_BUILDTAG=GIT-hash:\ ba2ce9037989b6141222c7901d1219cf852949f1\ build\ by\ mockbuild@buildhw-x86-07.iad2.fedoraproject.org\,\ 2024-08-24\ 21:30:23
DRBDADM_API_VERSION=1
DRBD_KERNEL_VERSION_CODE=0x000000
DRBDADM_VERSION_CODE=0x091c00
DRBDADM_VERSION=9.28.0

[root@p01-uks ~]# uname -a
Linux p01-uks 6.12.0-1.23.3.2.el9uek.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 13 17:24:00 PDT 2025 x86_64 x86_64 x86_64 GNU/Linux

[root@p01-uks ~]# cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="9.6"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="9.6"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Oracle Linux Server 9.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:9:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://github.com/oracle/oracle-linux"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 9"
ORACLE_BUGZILLA_PRODUCT_VERSION=9.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=9.6

The DRBD_KERNEL_VERSION_CODE should give us some clue as to what version of DRBD you’re running, but this just seems to return with zeros. Could you get us the output of cat /proc/drbd that should, without a doubt, let us know what version you’re running.

The currently installed drbd-9.28.0-1.el9.x86_64 package is simply going to be the userland utilites. A 9.28 version of DRBD was never created. When we refer to “DRBD version” we are generally asking about the version in-kernel usually installed via a kernel module.

Also, the global_common.conf is meant to be used as a place to set options you want to apply globally to all DRBD resources. The individual resource files are usually created and stored in /etc/drbd.d/*.res. Take a look inside the old /etc/drbd.conf file to see what configs are parsed. What you’re doing here with the global_common.conf should still work, but is against the usual conventions.

Thanks for the insights, Devin - I am not new to clustering but am new to DRBD, so thanks!
Weirdly no drbd proc file…? As I mentioned in my first post I followed the instructions on the official article to the letter, so what am I missing? I read somewhere that /proc/drbd had been dropped from 9.x versions… so should it even be there? and more importantly, should it be there if drbd has not come up…?

[root@p01-uks ~]# cat /proc/drbd
cat: /proc/drbd: No such file or directory

Re the conf file, I am struggling to find an indication on what drbdadm is expecting that is not there? I’ve been through the man pages to try and figure out what I was doing differently or what I should be doing differently, I’ve searched for examples online and quite a few are very different from what I have - and again what I have is exactly as the DRBD article referenced in this thread… so at a bit of a loss here…

Thanks in advance for you time and help!!

This is what I see under Debian 12.11 with drbd-dkms package from Linbit public drdb-9 repo:

brian@virtual1:~$ cat /proc/drbd
version: 9.2.13 (api:2/proto:118-122)
GIT-hash: 0457237e0448663529fe161781873b356f17b3c5 build by root@virtual1, 2025-05-01 02:41:49
Transports (api:21): tcp (9.2.13)

brian@virtual1:~$ cat /sys/module/drbd/version
9.2.13

brian@virtual1:~$ lsmod | grep drbd
drbd_transport_tcp     28672  30
drbd                  786432  22 drbd_transport_tcp
lru_cache              16384  1 drbd
libcrc32c              12288  8 nf_conntrack,nf_nat,dm_persistent_data,btrfs,nf_tables,drbd,raid456,sctp

If you don’t have /proc/drbd then perhaps the drbd module isn’t loaded at all?

Precisely.
With DRBD v9 we no longer display the status of resources in /proc/drbd, but it should still display the version information of the loaded kmod, as demonstrated by candlerb. You likely don’t have a kernel module loaded.

I believe this is an issue of drbdadm not being able to detect the installed DRBD version. The drbdadm utility will change its behavior based upon the installed the DRBD version. The error you’re seeing would be common when trying to run a DRBD v8 kernel module while using a configuration with v9 only options configured.

Firstly, get DRBD installed and displaying in /proc/drbd. Once you have a v9 kernel module installed and loaded, I expect things will then just work as expected.