Für den Linux-Kernel wurde eine Reihe von Patches vorgeschlagen, die ein verteiltes replizierbares Blockgerät DRBD 9 implementieren, das eine Art RAID-1-Array ermöglicht, das aus über das Netzwerk spiegelnden Speichergeräten besteht, die an verschiedene Systeme angeschlossen sind. Der Treiber soll zunächst im Branch linux-next getestet und dann auf die Integration in den Linux-Kernel 7.2 vorbereitet werden.
Die alte Version von DRBD wird seit Version 2.6.33, die vor 16 Jahren veröffentlicht wurde, im Kernel bereitgestellt. Der im Kernel vorhandene Code basiert auf dem Branch DRBD 8, der sich erheblich von dem Branch DRBD 9 unterscheidet, der 2015 veröffentlicht wurde und protokolltechnisch nicht kompatibel ist. Es stellte sich heraus, dass der Branch DRBD 9 als separates externes Modul entwickelt wurde, das nicht mit dem Modul aus dem Hauptkernel synchronisiert wurde. Die im Kernel implementierte DRBD-Version wurde separat betreut und hinkt der aktuellen Codebasis von DRBD um 10 bis 15 Jahre hinterher. Die vorgeschlagenen Patches wurden erstellt, um die entstandene Lücke zu schließen.
DRBD ermöglicht es, die Speichergeräte der Knoten eines Clusters zu einem gemeinsamen, ausfallsicheren Speicher zu verbinden. Für Anwendungen und das System erscheint dieser Speicher für alle Systeme als identisches Blockgerät. Bei der Verwendung von DRBD werden alle Operationen mit der lokalen Festplatte an andere Knoten gesendet und mit den Festplatten anderer Maschinen synchronisiert. Fällt ein Knoten aus, funktioniert der Speicher automatisch weiter über die verbleibenden Knoten. Bei der Wiederherstellung der Verfügbarkeit des ausgefallenen Knotens wird dessen Zustand automatisch auf den aktuellen Stand gebracht.
Ein Cluster, das den Speicher bildet, kann bis zu 32 Knoten umfassen, die sowohl im lokalen Netzwerk als auch geografisch verteilt untergebracht sind Rechenzentren. Die Synchronisation in solchen verteilten Speichern erfolgt in Form eines Mesh-Netzes – die Daten verbreiten sich in einer Kette von Knoten zu Knoten. Die Replikation der Knoten kann sowohl im synchronen als auch im asynchronen Modus erfolgen. Beispielsweise können lokal angeordnete Knoten die synchrone Replikation verwenden, während für Knoten an entfernten Standorten die asynchrone Replikation mit zusätzlicher Kompression und Verschlüsselung des Datenverkehrs verwendet werden kann.
Der DRBD 9-Zweig zeichnet sich durch die Abstraktion der Transporteebene aus, die es ermöglicht, Kommunikationskanäle nicht nur über TCP/IP, sondern auch unter Verwendung von RDMA/Infiniband zu realisieren. Im Vergleich zum Betrieb über traditionelle IP-Netzwerke hat die Integration direkter Zugriffe auf den Arbeitsspeicher eines anderen Computers mittels RDMA (Remote Direct Memory Access) die Replikationsleistung verdoppelt und die CPU-Belastung um 50 % reduziert. Die maximale Größe des synchronisierten Speichers wurde auf 32 Knoten erhöht. In DRBD 9 wurde auch die Logik zur Resynchronisierung der Knoten geändert, der Mechanismus zur Sperrung überarbeitet, die Unterstützung für Netzwerk-Namensräume hinzugefügt, eine automatische Statusanpassung der Knoten basierend auf der Aktivität implementiert, und die Unterstützung für zweiphasige Commits sowie das Rollout von Updates im nicht-blockierenden Modus implementiert. 
Quelle: opennet.ru
