Distributed Replicated Block Device (DRBD)¶
Distributed Replicated Block Device (DRBD) mirrors block devices between multiple hosts. The replication is transparent to other applications on the host systems. Any block device hard disks, partitions, RAID devices, logical volumes, etc can be mirrored.
Install DRBD¶
To get started using DRBD, first install the necessary packages. In a terminal window, run the following command:
$ Note
If you are using the virtual kernel as part of a virtual machine you will need to manually compile the drbd module. It may be easier to install the linux-modules-extra-$(uname -r) package inside the virtual machine.
Configure DRBD¶
This section covers setting up a DRBD to replicate a separate /srv partition, with an ext3 filesystem between two hosts. The partition size is not particularly relevant, but both partitions need to be the same size.
The two hosts in this example will be called drbd01 and drbd02. They will need to have name resolution configured either through DNS or the /etc/hosts file. See our guide to DNS for details.
On the first host, edit /etc/drbd.conf as follows:
global { usage-count no; }
common { syncer { rate 100M; } }
resource r0 {
protocol C;
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
}
net {
cram-hmac-alg sha1;
shared-secret "secret";
}
on drbd01 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.0.1:7788;
meta-disk internal;
}
on drbd02 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.0.2:7788;
meta-disk internal;
}
}
Note
There are many other options in /etc/drbd.conf, but for this example the default values are enough.
Now copy /etc/drbd.conf to the second host:
$ And, on drbd02, move the file to /etc:
$ Now using the drbdadm utility, initialize the meta data storage. On both servers, run:
$ Next, on both hosts, start the drbd daemon:
$ On drbd01 (or whichever host you wish to be the primary), enter the following:
$ After running the above command, the data will start syncing with the secondary host. To watch the progress, on drbd02 enter the following:
$ To stop watching the output press Ctrl + C.
Finally, add a filesystem to /dev/drbd0 and mount it:
$ $ Testing¶
To test that the data is actually syncing between the hosts copy some files on drbd01, the primary, to /srv:
$ Next, unmount /srv:
$ Now demote the primary server to the secondary role:
$ Now on the secondary server, promote it to the primary role:
$ Lastly, mount the partition:
$ Using ls you should see /srv/default copied from the former primary host drbd01.
Further reading¶
For more information on DRBD see the DRBD web site.
The drbd.conf(5) manual page contains details on the options not covered in this guide.
Also, see the drbdadm(8) manual page.