Inhaltsverzeichnis

DRBD

DRBD ist eine Art RAID 1 über Netzwerk und ist seit Kernel-version 2.6.33 in Linux integriert. Man kann damit in vielen Fällen teure „shared storage“-Lösungen ersetzen. Durch eine Kernelmodul wird von DRBD ein virtuelles Device zur Verfügung gestellt, das für die Verteilung der Daten über ein Netzwerk sorgt. Dafür wird einer der Rechner als „primary“, der zweite als „secondary“ eingestellt. Lesezugriffe werden lokal, Schreibzugriffe zusätzlich auf den jeweils anderen Rechner syncronisiert.

In Kombination mit Heartbeat bzw. Pacemaker kann eine automatische Übernahme der Serveraufgaben durch einen bereitstehenden Ersatzrechner übernommen werden.

veraltet

:!: der Artikel ist aus 2014 und veraltet. Alternativen sind Lösungen wie der ceph storage cluster um stärker in die Breite zu skalieren.
Kernel-Version enthaltene drbd-Version
2.6.33 8.3.7
2.6.34 8.3.7
2.6.35 8.3.8
2.6.36 8.3.8.1
2.6.37 8.3.9
2.6.38 8.3.9
2.6.39 8.3.10
3.0 - 3.4 8.3.11
3.5 - 3.7 8.3.13
3.8 8.4

drbd und Xen

Links

Installation unter Debian Etch

In Etch ist lediglich drbd Version 0.7 enthalten die mittels dem module-assistant als Modul passend zum kernel kompiliert wird. D. h. bei Updates von drbd oder dem Kernel muss das Kernelmodul neu übersetzt werden.

Weiterhin werden die Kernelquellen (linux-header) benötigt, diese sind für Xen im Paket linux-headers-2.6-xen-686 bzw. für den „normalen“ Kernel in linux-headers-2.6-686 . Beim Aufruf von module-assistant werden diese benötigen Komponenten jedoch dazu installiert.

aptitude install module-assistant build-essential drbd0.7-module-source 
m-a a-i drbd0.7

Das Modul kann erstmal testweise mit dem Befehl

modprobe drbd

geladen werden.

drbdadm -- --do-what-I-say primary all

Die fortschreitende Syncronisation ist mit

 cat /proc/drbd

zu beobachten.

master:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@file, 2008-10-01 17:29:19
 0: cs:SyncSource st:Primary/Secondary ld:Consistent
    ns:5656576 nr:0 dw:0 dr:5656576 al:0 bm:345 lo:0 pe:0 ua:0 ap:0
	[==>.................] sync'ed: 11.7% (42033/47557)M
	finish: 0:31:01 speed: 23,060 (20,492) K/sec

Nach der Syncronisation ist der Zustand konsistent und die Rollen sind verteilt:

xeon:~# cat /proc/drbd
version: 0.7.21 (api:79/proto:74)
SVN Revision: 2326 build by root@file, 2008-10-01 17:29:19
 0: cs:Connected st:Primary/Secondary ld:Consistent
    ns:48698492 nr:0 dw:0 dr:48698492 al:0 bm:2973 lo:0 pe:0 ua:0 ap:0
Kürzel Bedeutung
cs connection state
st node state (local/remote)
ld local data consistency
ds data consistency
ns network send
nr network receive
dw disk write
dr disk read
pe pending (waiting for ack)
ua unack'd (still need to send ack)
al access log write count

Installation unter Debian Lenny

In Lenny ist drbd Version 8.0.14 enthalten.

Für AMD64:

aptitude install drbd8-modules-2.6.26-2-amd64 drbd8-utils

Die Version 8.3 kann über lenny-backports bezogen werden.

Rollen manuell umschalten

Falls der primary neu startet, wird beim starten gesynct und der status ist secondary/secondary.

Links

Begriffe

Konfiguration

Konfigurationsdatei erstellen und exakt gleich :!: auf beide hosts verteilen. Siehe auch

man 5 drbd.conf

Beispiel

#
# drbd-conf - SYNC CHANGES ALWAYS BETWEEN ALL NODES!
#


global { 
#
}

#
# 50G mirrored partition
#
resource r50g {

	# C is: data has reached _both_ local and remote DISK
	protocol C;
	incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
	# incon-degr-cmd "halt -f";


	startup {
	
	 # Wait for connection timeout if this node was a degraded cluster.
	 # In case a degraded cluster (= cluster with only one node left)
	 # is rebooted, this timeout value is used.
	 degr-wfc-timeout 120;    # 2 minutes.
	}

	disk {
	 # if the lower level device reports io-error you have the choice of
	 #  "pass_on"  ->  Report the io-error to the upper layers.
	 #                 Primary   -> report it to the mounted file system.
	 #                 Secondary -> ignore it.
	 #  "panic"    ->  The node leaves the cluster by doing a kernel panic.
	 #  "detach"   ->  The node drops its backing storage device, and
	 #                 continues in disk less mode.
	 #
	 on-io-error   detach;
	}

	net{
	 #
	}

	
	syncer {
	 # Limit the bandwith used by the resynchronisation process.
	 # default unit is kByte/sec; optional suffixes K,M,G are allowed.
	 rate 20M;
	}

	on xeon {
	device     /dev/drbd0;
	disk       /dev/vg_daten/lv_drbd;
	address    172.16.0.1:7788;
	meta-disk  internal;
	}

	on debfail {
	device     /dev/drbd0;
	disk       /dev/sdb3;
	address    172.16.0.2:7788;
	meta-disk  internal;
	}
}

drbdadm

drbdadm BEFEHL RESSOURCE

also z.B. drbdadm cstate r50g

Version: 0.7.21