DRBD unter CentOS 6 installieren und einrichten
Kurzüberblick
DRBD steht für Distributed Replicated Block Device. Es ist eine softwarebasierte Lösung zur Replikation von Blockgeräten (Festplatten, Partitionen, LVM‑Volumes). DRBD ermöglicht Hochverfügbarkeit (Failover, Disaster Recovery) durch Spiegeln von Blockdaten über das Netzwerk. Dieses Tutorial zeigt einen praktischen Ablauf auf zwei Servern (OEL641 und OEL642) mit CentOS/Oracle Linux 6 (32‑Bit) und verwendet /dev/sdb1 als zu spiegelndes Blockgerät.
Wichtig: Bevor Sie starten, sichern Sie alle wichtigen Daten. Die Demo formatiert Partitionen und überschreibt Metadaten.
Voraussetzungen und Architektur
- Zwei Server im gleichen Netzwerk (Beispiel: 192.168.43.101 und 192.168.43.102).
- Root‑Zugriff auf beide Server.
- Freies Blockgerät auf beiden Servern, in diesem Beispiel /dev/sdb.
- CentOS/Red Hat/Oracle Linux 6 (Anleitungen adaptierbar für andere Versionen, aber Paketnamen und Kernel‑ABI können abweichen).
Architektur (vereinfacht):
+———————————–+ +—————————–+ | [ DRBD Server A ] | 192.168.43.101 | 192.168.43.102 | [ DRBD Server B ] | | OEL641 +———————-+———————–+ OEL642 | | folderA | | folderB | +———————————–+ +—————————–+
1. Vorbereitung
- Aktualisieren Sie beide Systeme und installieren Sie die Build‑Abhängigkeiten:
yum -y update
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build kernel-devel
Diese Schritte führen Sie auf beiden Servern aus.
Erstellen Sie Struktur für das RPM‑Buildsystem im root‑Verzeichnis:
mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
2. DRBD-Quellen herunterladen und kompilieren
Laden Sie die passenden DRBD‑Quellen (Beispiel‑URLs):
wget http://oss.linbit.com/drbd/drbd-utils-latest.tar.gz http://oss.linbit.com/drbd/8.4/drbd-8.4.7-1.tar.gz
Packen Sie die Archive aus:
tar -zxvf drbd-8.4.7-1.tar.gz
tar -zxvf drbd-utils-latest.tar.gz
Kompilieren Sie den Kernel‑Modul‑RPM (km‑rpm):
cd drbd-8.4.7-1
make km-rpm
Nach erfolgreichem Build finden Sie RPMS in /root/rpmbuild/RPMS/i686.
Kompilieren Sie drbd‑utils und bauen ein RPM:
cd ../drbd-utils-8.9.6
./configure
make rpm
Installieren Sie die erzeugten RPM‑Pakete (auf beiden Servern):
cd /root/rpmbuild/RPMS/i686
rpm -Uvh drbd-xen* drbd-udev* drbd-pacemaker* drbd-bash-completion* drbd-utils-*.rpm drbd-km-*.rpm drbd-8*
Sie sollten Ausgaben sehen, die die Installation der verschiedenen Pakete bestätigen.
Wichtig: Kernel‑ABI und Kernel‑Header müssen zu Ihrem laufenden Kernel passen. Andernfalls schlägt das Kompilieren oder Laden des Moduls fehl.
3. Verifizieren und Kernel‑Modul laden
Auf beiden Servern prüfen Sie Hostname und laden das DRBD‑Modul:
uname -n
Beispielausgabe:
OEL641
Laden des Moduls:
modprobe drbd
lsmod | grep drbd
Beispielausgabe:
drbd 341783 0
libcrc32c 841 1 drbd
Wenn lsmod nichts zurückgibt, prüfen Sie dmesg und /var/log/messages auf Fehler.
4. Partition erstellen (auf beiden Servern)
Dieses Beispiel verwendet /dev/sdb und erstellt /dev/sdb1.
fdisk -l
fdisk /dev/sdb
In fdisk: n → p → 1 → Enter → Enter → w
Beispielausgaben (gekürzt):
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 83 Linux
Wiederholen Sie die Partitionserstellung auf dem zweiten Server.
5. DRBD‑Ressource konfigurieren
Erstellen Sie die Ressourcen‑Datei /etc/drbd.d/s1.res auf beiden Servern. Der Inhalt:
resource s1 {
on OEL641 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.101:7799;
meta-disk internal;
}
on OEL642 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.102:7799;
meta-disk internal;
}
}
Kopieren Sie die Datei per scp auf den Peer:
scp /etc/drbd.d/s1.res root@OEL642:/etc/drbd.d/s1.res
Initialisieren Sie die DRBD‑Metadaten auf beiden Servern:
drbdadm create-md s1
Beispielausgabe:
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success
6. DRBD starten und Primär/ Sekundär festlegen
Starten Sie den Service (zuerst auf einem Server, dann auf dem Peer):
/etc/init.d/drbd start
/etc/init.d/drbd status
Beim ersten Start wartet DRBD eventuell, bis der Peer verfügbar ist. Starten Sie auf beiden Hosts den Dienst, dann wechselt der Status zu Connected.
Setzen Sie anschließend auf dem gewünschten Initial‑Primary folgenden Befehl (hier OEL641):
drbdadm -- --overwrite-data-of-peer primary s1
/etc/init.d/drbd status
Sie sehen einen Synchronisationsfortschritt. Beispielstatus:
1:s1 SyncSource Primary/Secondary UpToDate/Inconsistent C
Auf dem Peer (OEL642) sehen Sie:
1:s1 SyncTarget Secondary/Primary Inconsistent/UpToDate C
Wenn die Synchronisation läuft, bleibt der Primary mountbar, der Secondary nicht.
7. Dateisystem anlegen und Test
Auf dem Primary (OEL641) formatieren und mounten:
mkfs.ext3 /dev/drbd1
mkdir /folderA
mount /dev/drbd1 /folderA
df -h
Erzeugen Sie eine Testdatei (30 MiB):
dd if=/dev/zero of=/folderA/testfile bs=1M count=30
ls -lh /folderA
Ergebnis: testfile sollte sichtbar sein.
Prüfen Sie das Umschalten auf Secondary und Mounten auf dem Peer:
Auf OEL641 (Primary):
umount /folderA
drbdadm secondary s1
/etc/init.d/drbd status
Beide Server sollten nun Secondary/Secondary zeigen. Auf OEL642 setzen Sie Primary und mounten:
mkdir /folderB
drbdadm primary s1
mount /dev/drbd1 /folderB
ls -lh /folderB
Die zuvor erstellte testfile sollte auf OEL642 sichtbar sein.
Fehlerbehebung und häufige Probleme
Wichtig: Prüfen Sie folgende Punkte, falls etwas nicht funktioniert:
- Kernel‑Version vs. kompiliertes drbd‑Kernelmodul: uname -r und verwendete Header müssen übereinstimmen.
- Firewall/Netzwerk: Port 7799 muss erreichbar sein. Prüfen Sie mit telnet oder nc.
- Hostnames: DRBD verwendet die in der Ressource definierten Namen. uname -n muss mit den Namen in s1.res übereinstimmen.
- Partitionen: /dev/sdb1 muss existieren und dieselbe Größe haben.
- Logs: /var/log/messages oder journalctl prüfen.
Typische Kommandos zur Diagnose:
drbdadm status
cat /proc/drbd
dmesg | tail
iptables -L -n
Alternative Ansätze und Architekturhinweise
- Verwenden Sie pacemaker/corosync für automatisches Failover und IP‑Floating. DRBD allein repliziert Daten, übernimmt aber kein automatisches Failover von Diensten.
- Bei mehreren Replikaten (mehr als 2 Nodes) prüfen Sie DRBD‑Version und Protokolllevel (Primär/Primär erfordert Cluster‑Dateisysteme wie GFS2).
- Für Cloud‑Umgebungen prüfen Sie statt lokaler Blockgeräte Cloud‑Volumes oder blockbasierte Replikationsfunktionen.
Sicherheits‑ und Betriebsnotizen
- Verschlüsselung: DRBD repliziert unverschlüsselte Daten über das Netzwerk. Nutzen Sie VPN/TLS oder ein verschlüsseltes Netzwerksegment bei sensiblen Daten.
- Backups: DRBD ersetzt Backup nicht. Führen Sie regelmäßige Backups durch.
- Monitoring: Messen Sie Replizierungslatenz und Bandbreitennutzung. Setzen Sie Alarme, wenn Synchronisation ausfällt.
Checkliste für Administratoren (Schnellreferenz)
- Beide Hosts haben passenden Kernel‑Header installiert
- /dev/sdb existiert und ist partitioniert (/dev/sdb1)
- DRBD‑Pakete installiert und Modul geladen (modprobe drbd)
- /etc/drbd.d/s1.res auf beiden Hosts identisch
- drbdadm create-md s1 auf beiden Hosts ausgeführt
- DRBD auf beiden Hosts gestartet (/etc/init.d/drbd start)
- Initialer Primary gesetzt (drbdadm – –overwrite-data-of-peer primary s1)
- Filesystem auf /dev/drbd1 erstellt und gemountet
- Testdatei mit dd erstellt und Replikation geprüft
Rollback‑ und Notfallplan (Kurz)
- Wenn ein Modulfehler nach Installation auftritt, booten Sie in einen Kernel mit passenden Headern oder entfernen Sie die Pakete.
- Um eine fehlerhafte Synchronisation abzubrechen: drbdadm disconnect s1; prüfen Sie Logs; führen Sie drbdadm create-md nur mit Vorsicht aus (überschreibt Metadaten).
- Bei Datenverlust: Heben Sie vor Korrekturen Snapshots oder Backups auf und dokumentieren Sie jede Aktion.
Kurze Befehlsübersicht (Cheat‑Sheet)
# Paketinstallation
yum -y install gcc make automake autoconf libxslt-devel flex rpm-build kernel-devel
# RPM‑Build Ordner
mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
# DRBD bauen
make km-rpm
make rpm (im drbd-utils Verzeichnis)
# DRBD initialisieren
modprobe drbd
drbdadm create-md s1
/etc/init.d/drbd start
/etc/init.d/drbd status
# Primary setzen
drbdadm -- --overwrite-data-of-peer primary s1
# Filesystem
mkfs.ext3 /dev/drbd1
mount /dev/drbd1 /folderA
# Wechsel Primary/Secondary
umount /folderA
drbdadm secondary s1
# auf Peer:
drbdadm primary s1
mount /dev/drbd1 /folderB
Akzeptanzkriterien und Testfälle
- Nach erfolgreicher Konfiguration ist /dev/drbd1 auf Primary mountbar.
- Dateien, die auf dem Primary erstellt wurden, erscheinen nach Umschalten auf den Peer ebenfalls.
- drbdadm status zeigt Connected und die erwarteten Primary/Secondary‑Zustände.
Entscheidungshilfe (Mermaid)
flowchart TD
A[Start: zwei Server bereit?] --> B{Kernel und Header passen?}
B -- Nein --> C[Installieren passende Header oder Kernel]
B -- Ja --> D[DRBD kompilieren/installieren]
D --> E[Metadaten erstellen 'create-md']
E --> F[DRBD starten auf beiden Hosts]
F --> G{Primary setzen?}
G -- Nein --> H[Warten / Fehler beheben]
G -- Ja --> I[mkfs und mount auf Primary]
I --> J[Testdatei erstellen und Replikation prüfen]
J --> K[Erfolg]
Glossar (1‑Zeiler)
- Primary: Der DRBD‑Knoten, der das Blockgerät beschreiben und mounten darf.
- Secondary: Repliziert Daten, ist aber nicht mountbar zum Schreiben.
- drbdadm: Administrationswerkzeug für DRBD.
- meta‑disk internal: Speichert DRBD‑Metadaten intern auf dem Blockgerät.
Zusammenfassung
Dieses Tutorial erklärt die nötigen Schritte, um DRBD auf zwei CentOS/Oracle Linux 6 Servern zu bauen, zu installieren und zu konfigurieren. Es zeigt das Erstellen der Partition, den RPM‑Build, die Konfiguration der Ressource, das Initialisieren der Metadaten, das Setzen des Primarys und einen vollständigen Funktionstest mittels einer 30‑MiB Testdatei. Nutzen Sie die Checkliste und die Troubleshooting‑Hinweise für den produktiven Einsatz.
Wichtig: Testen Sie diese Schritte zuerst in einer nicht‑produktiven Umgebung. Passen Sie Versionsnummern, Kernel‑ABI und Netzwerkeinstellungen an Ihre Umgebung an.
Fertig — Sie haben DRBD erfolgreich eingerichtet und getestet.
Ähnliche Materialien

360°-Fotos auf Facebook: Hochladen & ansehen

VLC: Videos in andere Formate konvertieren

Netflix-Profilbild ändern: Eigene Bilder & GIFs nutzen

Smartcards in IPFire integrieren

OTRS 5 auf CentOS 7 installieren und konfigurieren
