Skip to content

How to Configure the DRBD Module Loader

This guide shows you how to configure various aspects of the DRBD® Module Loader.

To follow the steps in this guide, you should be familiar with editing LinstorSatelliteConfiguration resources.

DRBD Module Loader is the component responsible for making the DRBD kernel module available, as well as loading other useful kernel modules for Piraeus.

The following modules are loaded if available:

Module Purpose
libcrc32c dependency for DRBD
nvmet_rdma, nvme_rdma LINSTOR NVME layer
loop LINSTOR when using loop devices as backing disks
dm_writecache LINSTOR writecache layer
dm_cache LINSTOR cache layer
dm_thin_pool LINSTOR thin-provisioned storage
dm_snapshot LINSTOR Snapshots
dm_crypt LINSTOR encrypted volumes

Disable the DRBD Module Loader

In some circumstances it might be necessary to disable the DRBD Module Loader entirely. For example, you are using an immutable operating system, and DRBD and other modules are loaded as part of the host configuration.

To disable the DRBD Module Loader completely, use the following configuration:

apiVersion: piraeus.io/v1
kind: LinstorSatelliteConfiguration
metadata:
  name: no-loader
spec:
  podTemplate:
    spec:
      initContainers:
        - name: drbd-module-loader
          $patch: delete

Select a Different DRBD Loader Version

By default, the Operator will try to find a DRBD Module Loader matching the host operating system. The host distribution is determined by inspecting the .status.nodeInfo.osImage field of the Kubernetes Node resource. A user-defined image can be used if the automatic mapping does not succeed or if you have different module loading requirements.

This configuration overrides the chosen DRBD Module Loader image with a user-defined image example.com/drbd-loader:v9:

apiVersion: piraeus.io/v1
kind: LinstorSatelliteConfiguration
metadata:
  name: custom-drbd-module-loader-image
spec:
  podTemplate:
    spec:
      initContainers:
        - name: drbd-module-loader
          image: example.com/drbd-loader:v9

Piraeus maintains the following images:

Image Distribution
quay.io/piraeusdatastore/drbd9-almalinux9 RedHat Enterprise Linux 9 rebuilds
quay.io/piraeusdatastore/drbd9-almalinux8 RedHat Enterprise Linux 8 rebuilds
quay.io/piraeusdatastore/drbd9-centos7 RedHat Enterprise Linux 7 rebuilds
quay.io/piraeusdatastore/drbd9-noble Ubuntu 24.04
quay.io/piraeusdatastore/drbd9-jammy Ubuntu 22.04
quay.io/piraeusdatastore/drbd9-focal Ubuntu 20.04
quay.io/piraeusdatastore/drbd9-bionic Ubuntu 18.04
quay.io/piraeusdatastore/drbd9-bookworm Debian 12
quay.io/piraeusdatastore/drbd9-bullseye Debian 11
quay.io/piraeusdatastore/drbd9-buster Debian 10

You can create a loader image for your own distribution using the Piraeus sources as reference.

Change the Way DRBD Module Loader Loads the DRBD Module

By default, DRBD Module Loader will try to build the kernel module from source. The loader can also be configured to load the module from a Debian or RPM package included in the image, or skip loading DRBD entirely.

To change the behaviour of the DRBD Loader, set the LB_HOW environment variable:

apiVersion: piraeus.io/v1
kind: LinstorSatelliteConfiguration
metadata:
  name: no-drbd-module-loader
spec:
  podTemplate:
    spec:
      initContainers:
        - name: drbd-module-loader
          env:
            - name: LB_HOW
              value: deps_only
LB_HOW Loader behaviour
compile The default. Build the DRBD module from source and try to load all optional modules from the host.
shipped_modules Searches for .rpm or .deb packages at /pkgs and inserts contained the DRBD modules. Optional modules are loaded from the host if available.
deps_only Only try loading the optional modules. No DRBD module will be loaded.