Inhaltsverzeichnis

Arbeiten mit DRBD

In diesem Artikel sollen einige Hinweise gegeben werden worauf beim Betrieb von DRBD zu achten ist.

Primary Status

Es kann nur auf Ressourcen die im Primary-Status sind schreibend zugegriffen werden. Eine Ressource kann immer nur auf einem Knoten in diesem Zustand gesetzt werden. Das kann manuell mit dem folgenden Befehl ausgeführt werden:

$ drbdadm primary <ressource-name>

Nach einem Neustart des Knotens wird während des Systemstarts der Status nicht automatisch wieder auf primary gesetzt. Dadurch ist es nicht einfach möglich eine DRBD-Ressource über die fstab automatisch zu mounten.

Voraussetzungen

Um auf einem Knoten eine Ressource auf primary zu setzen müssen folgende Bedingungen erfüllt sein.

Split-Brain

Wenn die beiden Knoten nicht verbunden sind, darf eine Ressource nie auf beiden Knoten in den Zustand primary gesetzt werden. In diesem Fall würde es zu einem Split-Brain kommen und die beiden Knoten würden keine Verbindung mehr aufnehmen können.

In diesem Fall muss manuell der Zustand der Partition auf einem Knoten verworfen und der Inhalt neu synchronisiert werden.

Informationen zum Umgang mit Split-Brain Beheben stehen in einem eigenen Artikel.

LOG-Datei

Statusinformationen von DRBD werden in die LOG-Datei /var/log/messages geschrieben. Die LOG-Einträge können einfach mit dem Befehl dmesg angezeigt werden.

Virtuelle Server verwalten

Die virtuellen Maschinen auf den Host-Systemen sind in Partitionen die vom Logical Volume Manager (LVM) verwaltet werden auf der Festplatte gespeichert. Diese Partitionen werden dann mittels DRBD (entspricht einem RAID1 über Netzwerk) auf das jeweils zweite Host-System online repliziert.

Es besteht für jede Partition eines virtuellen Servers eine Ressource unter DRBD. Jeder Ressource ist ein Device zugeordnet über das auf die eigentlichen Daten zugegriffen werden kann.

Die Ressource auf dem Server auf dem derzeit die virtuelle Maschine gestartet ist, ist immer als Primary markiert, die auf dem anderen Server als Secondary

Statusüberprüfung

Ein Status der aktiven DRBD-Devices kann mit dem Befehl

$ cat /proc/drbd

ausgegeben werden. Danach wird der Status aller aktiven DRBD-Devices aufgelistet:

0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
   ns:5747064 nr:0 dw:17157276 dr:15262617 al:2716 bm:3613 lo:0 pe:0 ua:0 ap:0
       resync: used:0/31 hits:327691 misses:343 starving:0 dirty:0 changed:343
       act_log: used:0/257 hits:2338821 misses:2800 starving:0 dirty:84 changed:2716
1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
   ns:11580500 nr:0 dw:2155184 dr:17363724 al:572 bm:1192 lo:0 pe:0 ua:0 ap:0
       resync: used:0/31 hits:720207 misses:717 starving:0 dirty:0 changed:717
       act_log: used:0/127 hits:145359 misses:572 starving:0 dirty:0 changed:572
2: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
   ns:5554064 nr:0 dw:17459932 dr:7509526 al:1200 bm:1262 lo:0 pe:0 ua:0 ap:0
       resync: used:0/31 hits:327402 misses:320 starving:0 dirty:0 changed:320
       act_log: used:0/257 hits:3046881 misses:1200 starving:0 dirty:0 changed:1200
3: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
   ns:9581024 nr:0 dw:21587536 dr:19581629 al:15443 bm:15572 lo:0 pe:0 ua:0 ap:0
       resync: used:0/31 hits:590700 misses:659 starving:0 dirty:0 changed:659
       act_log: used:0/127 hits:5381441 misses:19309 starving:0 dirty:3866 changed:15443
4: cs:Connected st:Secondary/Primary ds:UpToDate/UpToDate C r---
   ns:53475724 nr:0 dw:13284976 dr:61802513 al:4179 bm:7309 lo:0 pe:0 ua:0 ap:0
       resync: used:0/31 hits:3338968 misses:3264 starving:0 dirty:0 changed:3264
       act_log: used:0/257 hits:3317065 misses:5436 starving:0 dirty:1257 changed:4179

In diesem Beispiel wurden Informationen zu den aktiven Devices /dev/drbd0 bis /dev/drbd4 ausgegeben. Die Devices 0 bis 3, in diesem Beispiel, sind im Zustand Primary auf dem Server auf dem dieser Befehl eingegeben wurde (st:Primary/Secondary). D. h. sie replizieren alle Änderungen der Daten auf den zweiten Server.

/dev/drbd4 hingegen ist auf den entfernten Server im Zustand Primary und synchronisiert Daten auf das lokale Device (st:Secondary/Primary).

Der Eintrag cs:Connected für ein Device bedeutet, dass die Verbindung mit dem Device am 2. Server korrekt hergestellt wurde.

Eine Ausgabe cs: WFConnection bedeutet, dass die Verbindung noch nicht hergestellt werden konnte. Dies ist der Fall wenn der zweite Server außer betrieb ist.

Der Status cs: SyncSource oder cs: SyncTarget erscheint wenn die initiale Synchronisation der Ressourcen durchgeführt wird.

Um eine DRBD-Ressource verwenden zu können muss sie zumindest auf einem der beiden Server den Disk-Status (ds) UpToDate besitzen. Im Normalfall sollte der Zustand auf beiden Servern UpToDate sein.

Linux mit DRBD Starten

Um eine virtuelle Maschine auf einem Server starten zu können muss für den Zustand der DRBD-Ressource folgende Bedingungen erfüllt sein:

Falls am entfernten Server der Zustand der DRBD-Ressource auf Primary gesetzt ist, muss dort zunächst der Zustand auf Secondary gesetzt werden.

$ sudo drbdadm secondary <DRBD-Ressource>

Dies funktioniert nur wenn nicht auf diese Ressource zugegriffen wird (die virtuelle Maschine die diese Ressource nutzt darf nicht gestartet sein). Eine Liste der laufenden virtuellen Maschinen kann mit folgendem Befehl angezeigt werden:

$ sudo xm list

Danach kann die virtuelle Maschine am gewünschten Server gestartet werden.

$ sudo xm create <Hostname>.cfg

Anmerkung: Beim Starten einer virtuellen Maschine setzt XEN den Status der verwendeten DRBD-Ressourcen auf Primary. Ebenso wird nach dem herunterfahren der Maschine der Status wiederum auf Secondary gesetzt.

Windows mit DRBD Starten

Auf dem entfernten Server darf das DRBD-Device nicht gemountet und nicht Primary sein. Das kann mit folgenden Befehlen ausgeführt werden:

$ sudo umount <Mount-Point>
$ sudo drbdadm secondary <DRBD-Ressource>

Danach kann das Device auf dem lokalen Server auf Primary gesetzt und anschließend eingebunden werden.

$ sudo drbdadm primary <DRBD-Ressource>
$ sudo mount <DRBD-Device> <Mount-Point>

Die virtuelle Maschine kann dann am lokalen Server mit folgendem Befehl gestartet werden:

$ sudo xm create <Hostname>

Siehe auch