Das Distributed Replicated Block Device (DRBD) ist ein verteiltes Blockdevice mit Spiegelung (RAID1) auf zwei unterschiedliche Server. Für die Installation verwenden wir zwei Server (hostA,hostB) mit Ubuntu 18.04 (bionic) auf Laufwerk (/dev/sda1) und einer Datenplatte (/dev/sdb1).

Wir setzten jeweil den Hostnamen auf hostA und hostB.

echo 'hostA' |sudo tee /etc/hostname

Wir können die Hostnamen auf beiden Servern hinterlegen.

sudo vim /etc/hosts

192.168.56.104 hostA
192.168.56.109 hostB

Die Installation von DRBD ist einfach.

sudo apt-get install drbd-utils

Jetzt sollen wir das Kernel Modul laden.

sudo modprobe drbd

Das DRBD Modul sollte erfolgreich geladen sein.

lsmod |grep drbd

Nach einem Neustart soll das Modul automatisch geladen werden.

echo 'drbd' | sudo tee -a /etc/modules

Beispiele für die Konfiguration liegen hier:

– /etc/drbd.d/global_common.conf
– /usr/share/doc/drbd-utils/examples/drbd.conf.example.gz

Wir legen uns eine neue Konfiguration auf beiden Servern an.

sudo vim /etc/drbd.d/sdb.res

resource r0 {
 
	protocol C;
 
        startup {
                wfc-timeout  15;
                degr-wfc-timeout 60;
        }
 
	on hostA {
		device /dev/drbd0;
		disk /dev/sdb1;
		address 192.168.56.104:7788;
		meta-disk internal;
	}
	on hostB {
		device /dev/drbd0;
		disk /dev/sdb1;
		address 192.168.56.109:7788;
		meta-disk internal;
	}
}

Wir erzeugen auf beiden Servern ein Meta-Device.

sudo drbdadm create-md r0

Und starten den Service auf beiden Servern.

sudo systemctl start drbd.service

Bis jetzt sieht alles gleich aus, ab jetzt arbeiten wir nur auf Host A.

cat /proc/drbd

Wir machen Server (hostA) zum Primary.

hostA$ sudo drbdadm -- --overwrite-data-of-peer primary all

Jetzt werden die Daten von hostA zu hostB übertragen.

hostA$ watch -n1 cat /proc/drbd

Wir erzeugen das Filesystem.

hostA$ sudo mkfs.ext4 /dev/drbd0

Und mounten das DRBD Device in unsere Filesystem.

hostA$ sudo mkdir /mnt/data
hostA$ sudo mount -t ext4 /dev/drbd0 /mnt/data/

sudo drbd-overview

Damit ist die Installation beendet.


Kommen wir zum Funktionstest.

Wir hängen das Dateisystem aus und machen Host A zum Secondary.

hostA$> sudo umount /mnt/data
hostA$> sudo drbdadm secondary r0

Host B wird jetzt um Primary und kann eingehängt werden.

hostB$> sudo drbdadm primary r0
hostB$> sudo mount /dev/drbd0 /mnt/data/

Die Daten sind jetzt auf Host B zu sehen.

Quellen: UbuntuUsers, Serverguide