DRBD auf Raw Disk Block Device


7

Ich versuche, DRBD auf einem Raw-Disk-Gerät /dev/sdbohne Partitionstabelle oder LVM-Stack PV / VG / LV einzurichten

Da es sich bei dieser Festplatte um eine virtuelle Festplatte handelt und der Hypervisor, den ich verwende, die On-the-Fly-Festplattenerweiterung zulässt, möchte ich mich nicht mit LVM-Vorgängen oder einer erneuten Partitionierung befassen, wenn es Zeit ist, mein DRBD-Dateisystem zu erweitern

Meine Ressourcendefinition kann nicht einfacher sein

resource data {
  device  /dev/drbd1;
  meta-disk internal;
  disk    /dev/sdb;
  on node1 {
    address 10.10.10.16:7789;
  }
  on node2 {
    address 10.10.10.17:7789;
  }
}

Metadaten erstellen funktioniert

# drbdadm create-md data
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.

Der Anhängevorgang schlägt jedoch fehl

 # drbdadm attach data
 1: Failure: (127) Device minor not allocated
 additional info from kernel:
 unknown minor
 Command 'drbdsetup-84 attach 1 /dev/sdb /dev/sdb internal' terminated with exit code 10

Die Fehlermeldung klingt wirklich so, als würde der Befehl einen Partitionstabellenindex als Nebencode des Geräts erwarten.

Wie soll ich ein Raw-Gerät an eine DRBD-Ressource anschließen?


Wie viele drbdGeräte verwenden Sie derzeit?
gf_

Das ist die zweite, die auf dieser VM erstellt wurde ... die vorherige ist jetzt deaktiviert
Yves Martin

Ich habe große Fehler gemacht ... Ich werde so schnell wie möglich mit Erklärungen antworten
Yves Martin

Antworten:


5

drbdadm attach data ist nicht der einzige Befehl, den Sie nach dem Erstellen der Metadaten verwenden möchten.

Eines der folgenden Verfahren sollte funktionieren, um Ihr Gerät in Betrieb zu nehmen:

# drbdadm create-md data
# drbdadm up data

-- oder --

# drbdadm create-md data
# drbdsetup-84 new-resource data
# drbdsetup-84 new-minor data 1 0 
# drbdmeta 1 v08 /dev/sdb internal apply-al 
# drbdsetup-84 attach 1 /dev/sdb /dev/sdb internal
# drbdsetup-84 connect data ipv4:10.10.10.16:7789 ipv4:10.10.10.17:7789 --protocol=C

Sobald Sie dies getan haben, haben Sie ein Gerät mit dem Verbindungsstatus "Verbunden" und dem Festplattenstatus "Inkonsistent / Inkonsistent". Dies ist immer / nur dann der Fall, wenn Sie auf beiden Knoten brandneue Metadaten erstellt haben. Wählen Sie von dort aus einfach einen Knoten aus, der auf Primary hochgestuft werden soll. Dadurch wird DRBD von Primary -> Secondary synchronisiert:

# drbdadm primary data --force 

Sie sollten unter normalen Umständen niemals "--force" verwenden müssen, um Ihr DRBD-Gerät von nun an zu bewerben.

Sie sagten jedoch auch:

Da es sich bei dieser Festplatte um eine virtuelle Festplatte handelt und der Hypervisor, den ich verwende, die On-the-Fly-Festplattenerweiterung zulässt, möchte ich mich nicht mit LVM-Vorgängen oder einer erneuten Partitionierung befassen, wenn es Zeit ist, mein DRBD-Dateisystem zu erweitern

Das wird mit DRBD wahrscheinlich nicht funktionieren. DRBD platziert seine Metadaten am Ende des Blockgeräts, und in diesen Metadaten wird die Anzahl der Blöcke (und andere Dinge) verfolgt. Das dynamische Erweitern des Sicherungsblockgeräts wird wahrscheinlich Probleme für Sie verursachen.


Alle diese Schritte werden von Debian drbd.service verarbeitet, sodass nur "create-md" wirklich erforderlich ist, wenn die Situation klar ist ... Aber meine war bei dem Schritt inkonsistent, sodass alles einfach fehlschlägt.
Yves Martin

@YvesMartin, ich aktualisiere meine Antwort mit dem, was zu tun ist, nachdem Sie die Dienste gestartet oder Ihr Gerät zum ersten Mal (und nur zum ersten Mal) auf andere Weise hochgefahren haben.
Matt Kereczman

Über die DRBD-Festplattenerweiterung funktioniert alles wie erwartet, ohne Ausfallzeiten - getestet und auch in der Produktion angewendet: Zuerst die virtuelle Festplatte erweitern, auslösen /sys/block/sdX/device/rescan, ausführen drbdadm -- --assume-clean resize dataund nicht zuletzt FS erweitern mitresize2fs
Yves Martin

1

In dem sehr speziellen Fall des Debian DRBD-Pakets besteht keine Notwendigkeit, "Daten anhängen" auszuführen.

Hier ist die minimale Sequenz, um DRBD mit Debian zum Laufen zu bringen:

  • Erstellen Sie Ihre Ressourcendatei /etc/drbd.d/data.resauf beiden Knoten, normalerweise zum Definieren /dev/drbd1(erinnern Sie diese Datenträgernummer 1an einen eindeutigen Bitmap-Vorgang!).
  • drbdadm create-md dataAuf beiden Knoten aufrufen
  • Starten Sie den Dienst auf beiden Knoten. Sie sollten darauf warten, dass sie bereit sind: systemctl start drbd.service
  • Bestätigen Sie den ConnectedStatus mit drbdadm cstate data. Wenn nicht, gehen Sie nicht weiter, bis ein Problem mit dem Start des Dienstes oder der Netzwerkverbindung behoben ist.
  • Auf primaryKnoten klar Bitmap nur, zu verhindern nutzlos Anfangssynchronisation: drbdadm -- --clear-bitmap new-current-uuid data/1(mind letzten Parameter: resourceName/volumeNumber)
  • Heraufstufen des primaryKnotens nur auf dem Knoten als primary:drbdadm primary data

Ab diesem Zeitpunkt ist das Gerät auf dem primaryKnoten /dev/drbd1für alle regulären Blockoperationen wie blockdevoder verfügbar mkfs.

Lösen Sie die Bitmap-Operation sorgfältig aus, damit alle Daten auf dem sekundären Knoten nicht wiederhergestellt werden können. Übrigens ist es für die Ersteinrichtung sehr praktisch, da dadurch verhindert wird, dass der Speicher Ihres sekundären Knotens stundenlang vollständig geschrieben wird, und Ihre Virtualisierungsschicht gezwungen wird, Speicherblöcke zuzuweisen, was für Thin Provisioning ärgerlich ist.


Der new-current-uuid --clear-bitmapverwirft keine Daten auf einem der Knoten. Dieser Befehl löscht die Bitmap von DRBD und weist sie an, die anfängliche Synchronisierung zu überspringen.
Matt Kereczman

OK, ich stimme zu ... Ich muss einen besseren "Wortlaut" finden, um meine Idee auszudrücken, dass Daten auf dem sekundären Knoten nicht mehr zugänglich sind ...
Yves Martin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.