Distributed Replicated Block Device (DRBD) or network raid mirrors block devices between multiple hosts. A block device is the type of device used to represent storage in the Linux Kernel. All physical disk devices present a block device interface. DRBD mirrors a partition between two machines allowing only one of them to mount it at a time. 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. DRBD currently supports all the major flavors of Linux and comes bundled in several major Linux distributions. DRBD is licensed under the GPL. DRBD is one of the most commonly used mirroring technique in industries\Organizations.
Here Iβm configuring DRBD between two block devices /dev/sda1 and /dev/sda2 for two hosts with hostname sage1.supportsages.com(192.168.1.xxx) and sage2.supportsages.com(192.168.1.yyy) respectively having Ext4 file system. The partition size is not particularly relevant, but both partitions need to be the same size. To get started using DRBD, first, install the necessary packages on both hosts.
From a Linux terminal enter:
root@sage1:]# sudo apt-get install drbd8-utils
root@sage2:]# sudo apt-get install drbd8-utils
[Note that Iβm installing drbd8-utils package on both the hosts]
If you are using the virtual kernel as part of a virtual machine you will need to manually compile the DRBD module. It will be easier to install the Linux-server package inside the virtual machine.
CONFIGURATION:
Make sure that the two hosts have name resolution configured either through DNS or the /etc/hosts file.
To configure DRBD, on the first host (sage1.supportsages.com) edit /etc/drbd.conf:
root@sage1:]# vi /etc/drbd.conf
ββββββββββββββββββ
include βdrbd.d/global_common.confβ;
include βdrbd.d/*.resβ;
resource r0 {
protocol C;
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
become-primary-on sage1.supportsages.com;
}
net {
cram-hmac-alg sha1;
shared-secret βsecretβ;
max-buffers 8000;
max-epoch-size 8000;
sndbuf-size 0;
}
on sage1.supportsages.com {
device /dev/drbd0;
disk /dev/sda1;
address 192.168.1.xxx:7788;
meta-disk internal;
}
on sage2.supportsages.com {
device /dev/drbd0;
disk /dev/sda2;
address 192.168.1.yyy:7788;
meta-disk internal;
}
}
ββββββββββββββββββ
As you can see in the above configuration that the mirroring is configured between the block device /dev/sda1 of sage1.supportsages.com and /dev/sda2 of sage2.supportsages.com. Here, device file /dev/drbd0 is the DRBD block device.
There are many other options/configurations in /etc/drbd.conf, but for this example their default values are fine.
Now copy /etc/drbd.conf to our second host sage2.supportsages:
root@sage1:]# scp /etc/drbd.conf root@192.168.1.yyy:/etc/
Now using the drbdadm utility initialize the meta data storage. On each server execute:
root@sage1:]# drbdadm create-md r0
root@sage2:]# drbdadm create-md r0
Next, on both hosts, start the drbd daemon:
root@sage1:]# /etc/init.d/drbd start
root@sage2:]# /etc/init.d/drbd start
On sage1.supportsages.com, or whichever host you wish to be the primary, enter the following:
root@sage1:]# drbdadm β βoverwrite-data-of-peer primary all
After executing the above command, the data will start syncing with the secondary host. To watch the progress, on drbd02 enter the following:
root@sage1:]# watch -n1 cat /proc/drbd
To stop watching the output press Ctrl+c.
Now that we have a working DRBD. Its time we mount the DRBD block device to a partition and see if the mirroring is fine.
For that add a filesystem to /dev/drbd0 and mount it:
root@sage1:]# mkfs.ext4 /dev/drbd0
root@sage1:]# mount /dev/drbd0 /home
TESTING:
To test that the data is actually syncing between the hosts copy some files on the sage1.supportsages.com, the primary, to /home:
root@sage1:]# cp -r /etc/default /home
Next, unmount /home:
root@sage1:]# umount /home
Demote the primary server to the secondary role because DRBD mirrors a partition between two machines allowing only one of them to mount it at a time.
root@sage1:]# drbdadm secondary r0
Now on the secondary server(sage2.supportsages.com) promote it to the primary role:
root@sage1:]# drbdadm primary r0
Lastly, mount the partition:
root@sage2:]# mount /dev/drbd0 /home
Using ls(list) command you should see /home/default copied from the former primary host sage1.supportsages.com to the current primary sage2.supportsages.com.
For advanced building, installing and configuring DRBD follow http://www.drbd.org/docs/install .