DRBD
Aus TecArt-CRM Developer-Wiki
Inhaltsverzeichnis |
Ressourcen Erstellen
Alleinstehende Ressourcen
Um eine Disk mit DRBD zu spiegeln, muss zunächst auf beiden Nodes eine gleich große, leere Partition oder Festplatte bestehen. Um DRBD nun auf diese Partition anzuwenden erstellt man eine Config wie folgt:
resource RES_NAME {
device /dev/drbd1;
disk /dev/DISK_NAME;
meta-disk internal;
floating 10.10.10.1:7790;
floating 10.10.10.2:7790;
}
Wobei RES_NAME durch einen einzigartigen Namen und DISK_NAME durch den Namen der Disk ausgetauscht werden muss. Außerdem müssen die IP-Adressen denen der beiden Nodes angepasst werden. Wichtig ist auch der Port, welcher für den Node einzigartig sein muss und noch nicht von anderen Programmen belegt sein darf.
Diese Konfiguration wird unter /etc/drbd.d/ als "RES_NAME.res" abgelegt.
Ist dies geschehen muss mit dem folgendem Befehl auf beiden Nodes der Metadatenspeicher erstellt werden:
[root@primary-node /]# drbdadm create-md RES_NAME
Erst wenn das geschehen ist, kann die Disk auf beiden Nodes gestartet werden:
[root@primary-node /]# drbdadm up RES_NAME
Danach wird auf dem primären Node die Ressource als Primär markiert:
[root@primary-node /]# drbdadm primary RES_NAME
Nun sollte in /proc/drbd der Fortschritt der Resourcen-Synchronisation angezeigt werden.
XEN VMs mit DRBD Ressourcen
Um XEN VMs zu erstellen, welche DRBD-Replizierte Disks haben, muss lediglich dem Erstellskript der weitere Parameter -D mit dem Hostnamen oder der IP des zweiten Nodes übergeben werden:
[root@primary-node /]# xen-create-vm -v 0 -h VM_HOSTNAME -s SKELETON -D SECOND_DRBD_HOST
Ressourcen Löschen
Um Ressourcen zu löschen, muss zuerst sichergestellt werden, das die Ressource nicht durch das Betriebssystem verwendet wird (z.B. gemountet ist oder durch ein Programm wie XEN verwendet wird). Ist dies geschehen, kann die Ressource mit folgendem Befehl gestoppt werden:
[root@drbd /]# drbdadm down RES
Dieser Befehl muss auf beiden DRBD-Hosts ausgeführt werden. Ist dies geschehen, muss anschließend die Konfiguration der Ressource unter /etc/drbd.d/ gelöscht werden und danach, wenn gewünscht, die jeweilige Partition auf dem Server. Ist dies alles geschehen, sollte unter
[root@drbd /]# /etc/init.d/drbd status
der Eintrag für die zuvor gelöschte Ressource nicht mehr vorhanden sein. Ist dies nicht der Fall kann ein Neuladen über folgenden Aufruf erzwungen werden:
[root@drbd /]# /etc/init.d/drbd reload
Outdated Disk Problem / Split Brain
Es kann vorkommen, dass DRBD nach dem Trennen der Verbindung zweier Disks den Status beider Platten auf Inconsistent setzt und beide Platten als Secondary markiert. In einem solchen Fall können die Disks über einen einfachen Connect-Befehl nichtmehr verbunden werden. Dies merkt man an den Stati der Disks auf beiden Nodes - der ehemalige Primary Node berichtet WFConnection (Waiting for Connection) und der ehemalige Secondary Node Standalone.
Um die Disks wieder zu Verbinden gibt es zwei Möglichkeiten. Die erste ist, mit Folgendem Befehl DRBD direkt anzuweisen, die Peer-Daten des Secondary Nodes zu überschreiben und den eigentlichen Primary Node wieder als solchen zu markieren:
[root@primary-node /]# drbdadm -- --overwrite-data-of-peer primary RES
Der Secondary Node muss danach noch mit folgendem Befehl angewiesen werden, die lokalen Daten mit denen des Primary Nodes zu ersetzen:
[root@drbd /]# drbdadm -- --discard-my-data connect RES
wobei RES für die DRBD-Ressource steht, die geändert wird. Danach sollte der Status der Ressource sich in /proc/drbd ähnlich wie nachfolgend geändert haben:
[root@drbd /]# cat /proc/drbd
version: 8.3.7 (api:88/proto:86-91)
srcversion: EE47D8BF18AC166BE219757
1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate A r----
ns:0 nr:463236 dw:463236 dr:41941676 al:0 bm:1280 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
Sollte diese Methode nicht funktionieren, kann man den UpToDate-Status der Festplatte auch per Hand setzen, dazu muss man auf dem Primary Node folgende Befehle ausführen:
[root@drbd /]# drbdadm down RES [root@drbd /]# drbdadm -- ::::1:1:::: set-gi RES [root@drbd /]# drbdadm up RES [root@drbd /]# drbdadm primary RES
Zusätzlich muss auf dem Secondary Node der Befehl
[root@drbd /]# drbdadm -- --discard-my-data connect RES
ausgeführt werden. Danach sollte DRBD die Disks wieder verbunden und eine der Disks als Primary markiert haben.
