Drbdadm adjust ... failed after added "load-balance-paths yes;"

Hi

According to the link Load Balanced Replication with DRBD - LINBIT

After adding “load-balance-paths yes;” to the .res file, command

“drbdadm adjust all” returns next -

[root@memverge drbd.d]# drbdadm adjust all
net-options: unrecognized option '--load-balance-paths=yes'
drbdsetup - Configure the DRBD kernel module.

USAGE: drbdsetup command {arguments} [options]

Commands:
    primary - Change the role of a node in a resource to primary.
    secondary - Change the role of a node in a resource to secondary.
    attach - Attach a lower-level device to an existing replicated device.
    disk-options - Change the disk options of an attached lower-level device.
    detach - Detach the lower-level device of a replicated device.
    connect - Attempt to (re)establish a replication link to a peer host.
    new-peer - Make a peer host known to a resource.
    del-peer - Remove a connection to a peer host.
    new-path - Add a path (endpoint address pair) where a peer host should be reachable.
    del-path - Remove a path (endpoint address pair) from a connection to a peer host.
    net-options - Change the network options of a connection.
    disconnect - Unconnect from a peer host.
    resize - Reexamine the lower-level device sizes to resize a replicated device.
    resource-options - Change the resource options of an existing resource.
    peer-device-options - Change peer-device options.
    new-current-uuid - Generate a new current UUID.
    invalidate - Replace the local data of a volume with that of a peer.
    invalidate-remote - Replace a peer's data of a volume with the local data.
    pause-sync - Stop resynchronizing between a local and a peer device.
    resume-sync - Allow resynchronization to resume on a replicated device.
    suspend-io - Suspend I/O on a replicated device.
    resume-io - Resume I/O on a replicated device.
    outdate - Mark the data on a lower-level device as outdated.
    verify - Verify the data on a lower-level device against a peer device.
    down - Take a resource down.
    role - Show the current role of a resource.
    peer-role - Show the current role of a peer.
    cstate - Show the current state of a connection.
    dstate - Show the current disk state of a lower-level device.
    show-gi - Show the data generation identifiers for a device on a particular connection, with explanations.
    get-gi - Show the data generation identifiers for a device on a particular connection.
    show - Show the current configuration of a resource, or of all resources.
    status - Show the state of a resource, or of all resources.
    check-resize - Remember the current size of a lower-level device.
    events2 - Show the current state and all state changes of a resource, or of all resources.
    wait-sync-volume - Wait until resync finished on a volume.
    wait-sync-connection - Wait until resync finished on all volumes of a connection.
    wait-sync-resource - Wait until resync finished on all volumes.
    wait-connect-volume - Wait until a device on a peer is visible.
    wait-connect-connection - Wait until all peer volumes of connection are visible.
    wait-connect-resource - Wait until all connections are establised.
    new-resource - Create a new resource.
    new-minor - Create a new replicated device within a resource.
    del-minor - Remove a replicated device.
    del-resource - Remove a resource.
    forget-peer - Completely remove any reference to a unconnected peer from meta-data.
    rename-resource - Rename a resource.
    udev - Generate output for udev rules.

Use 'drbdsetup help command' for command-specific help.

Command 'drbdsetup net-options ha-nfs 28 --set-defaults --_name=memverge2 --load-balance-paths=yes --protocol=C --sndbuf-size=10M --rcvbuf-size=10M --max-buffers=80K --max-epoch-size=20000 --timeout=90 --ping-timeout=10 --ping-int=15 --connect-int=15' terminated with exit code 20

What versions of DRBD and the DRBD Utils do you have installed?

Can you share the output of these commands?

drbdadm --version
cat /proc/drbd
lsmod | grep drbd

What versions of DRBD and the DRBD Utils do you have installed?

[root@memverge ~]# rpm -qa|grep drbd
drbd-selinux-9.28.0-1.el9.x86_64
drbd-utils-9.28.0-1.el9.x86_64
kmod-drbd9x-9.2.12-1.el9_5.elrepo.x86_64
drbd-udev-9.28.0-1.el9.x86_64
collectd-drbd-5.12.0-24.el9.x86_64
drbd-9.28.0-1.el9.x86_64
drbd-pacemaker-9.28.0-1.el9.x86_64

[root@memverge ~]# 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=2
DRBD_KERNEL_VERSION_CODE=0x09020c
DRBD_KERNEL_VERSION=9.2.12
DRBDADM_VERSION_CODE=0x091c00
DRBDADM_VERSION=9.28.0
[root@memverge ~]#
[root@memverge ~]# cat /proc/drbd
version: 9.2.12 (api:2/proto:118-122)
GIT-hash: 2da6f528dc4ab3fd25c511f7b03531100e54ab08 build by mockbuild@a832712c1a2d4d969a77fde8e58fe434, 2024-11-18 18:00:51
Transports (api:21): lb-tcp (9.2.12) tcp (9.2.12)
[root@memverge ~]#
[root@memverge ~]# lsmod | grep drbd
drbd_transport_tcp     40960  2
drbd_transport_lb_tcp    40960  0
drbd                 1015808  3 drbd_transport_lb_tcp,drbd_transport_tcp
libcrc32c              12288  3 xfs,drbd,raid456
[root@memverge ~]#

Looks like you found a “bug” in my blog, so thanks for reading and reporting!

It turns out, you cannot adjust DRBD to enable load-balance-path because the kernel modules that handle DRBD’s network connections for “standard” TCP and load-balanced TCP are currently different. This will eventually change, as both TCP modules will be merged into a single module, but for now I will work update my blog.

In the meantime, you will need to:

drbdadm down all
drbdadm up all

Sorry for the confusion.

1 Like

You are welcome.
I’m really interested in DRBD, so I will continue to play with it with/without pacemaker and corosync.

Meanwhile, I’m open to work - https://www.linkedin.com/in/anton-gavriliuk-a6310a98/, so please let me know if you will be interested in.

2 Likes