drbdlinks - manages links into a shared DRBD partition
is a program that will manage creation and removal of symbolic
links. It is primarily used with clusters of machines using either shared
storage or the "DRBD" replicated block device.
While the name of the program is "drbdlinks", it can be used in any
shared-storage sort of environment where the shared storage is only mounted on
the active node. In cases like NFS where the shared storage is always mounted
on all nodes, drbdlinks is not necessary.
The advantage over creating static symbolic links is that package updates often
require that directories point at real files, so updates can often fail if you
do not have the shared storage mounted.
also supports multiple instances of links, in the case of
active/active clusters. For example, if you have MySQL running in one resource
group, and Apache running in another, you can use the "-c" switch to
specify a configuration file for each resource group.
A simple configuration file, "/etc/drbdlinks.conf", specifies the
links. This can be used to manage links for /etc/httpd, /var/lib/pgsql, and
other system directories that need to appear as if they are local to the
system when running applications after a drbd shared partition has been
When run with "start" as the mode, drbdlinks will rename the existing
files/directories, and then make symbolic links into the DRBD partition.
"stop" does the reverse.
Mode "checklinks" will report any links that do not exist in the
destination area. During initial setup and configuration, this can help check
that you have the destination file-system set up with the required components.
If run with "initialize_shared_storage", destination links specified
in the configuration file will be populated from the source storage. This is
useful for initial setup to populate the shared storage. Preceding paths will
be populated if they share the same name from source to destination.
The "monitor" and "status" modes will check the file-system
against the configuration file and will report "running" (monitor
mode) or "OK" (status mode) if all links appear to be up. Otherwise
they report "down" or "stopped" (respectively).
By default, the rename appends .drbdlinks to the name, but this can be
overridden in the configuration file.
The "list" mode just show the list of links, with each line showing
the link, destination, and a 0/1 flag for bindMount status. This may be useful
for user scripts without having to parse the configuration.
An init script is included which runs "stop" before heartbeat starts,
and after heartbeat stops. This is done to try to ensure that when the shared
partition isn't mounted, the links are in their normal state.
has several options, using either short or long variants.
- -h, --help
- Print a short help message describing the available options
- -c, --config-file=CONFIGFILE
- Specify an alternate config file. The default config file
is /etc/drbdlinks.conf. Alternate config files should have a
"drbdlinks-" prefix, e.g. "drbdlinks-httpd.conf".
- -s, --suffix=SUFFIX
- Name to append to the local file-system name when the link
is in place. The default is "drbdlinks", which would result in a
renamed file like "/etc/httpd.drbdlinks".
- -v, --verbose
- Increase verbosity level by 1 for every occurrence of this
Here are a few examples of how drbdlinks can be used.
The most straight-forward, and default, method for starting drbdlinks:
To use a suffix different from the default when linking to a file or directory,
the -s option can be used, specifying the desired string:
drbdlinks -s orig start
would rename the file-system name to "name.orig".
Increase the verbosity to assist in debugging:
drbdlinks -v -v start
Use an alternate configuration file, possibly from with a DRBD mounted
drbdlinks -c /shared1/drbdlinks-httpd.conf
This would use the specified configuration file, found on our DRBD device
mounted on /shared1. This would allow us to easily keep drbdlinks
configurations tied to a specific set of data on a DRBD disk in an
active/active sort of HA configuration.
drbdlinks was written by Sean Reifschneider <email@example.com>.
This manual page was written by Cyril Bouthors <firstname.lastname@example.org>, for
the Debian project (but may be used by others). Sean Reifschneider modified it
for status and monitor arguments, and included it in the base drbdlinks
release. Mike Loseke <email@example.com> added the sections on options and