Sprechen Sie über den leistungsstarken verteilten Speicher von Daos

Einführung

  • Das IO-Modell der meisten Anwendungen wird heute den Anteil an Metadaten und nicht ausgerichteter Datenfragmentierung erhöhen. Gleichzeitig führen die durch herkömmliche Speichersoftware eingeführten Ausrichtungsbeschränkungen und die große Verzögerung zu einer immer schlechteren Leistung dieser Art von IO-Anwendungen. Die Kombination aus persistentem Speicher (SCM) mit großer Kapazität und Hochgeschwindigkeits-Hardwarestruktur bietet die beste Gelegenheit, Speicherspezifikationen neu zu definieren und die heutigen E/A-intensiven Anwendungen effizient zu unterstützen

  • Basierend auf SCM muss das Design des gesamten Speicherstapels überdacht werden. Um die Leistung dieser neuen Hardware freizugeben, verwendet der neue Software-Stack eine Shared-Nothing-Schnittstelle mit Byte-Granularität und kann groß angelegten verteilten Speicher unterstützen . Es handelt sich um eine brandneue IO-Architektur DAOS, die auf verteilten Speicherdiensten basiert SCMund diese bereitstellt , unter der Prämisse, die Leistung durch globalen Zugriff auf den Adressraum von Objekten sicherzustellen.NVMefabric一致性、可用性、弹性

Einschränkungen bei älteren parallelen Dateisystemen

  • Herkömmliche parallele Dateisysteme basieren auf Blockgeräten, und die Übermittlung von E/A erfolgt über die Blockschnittstelle des Kernels. Sie optimieren den Betrieb der Festplatte über den E/A-Scheduler, führen Schreibvorgänge zusammen und führen andere Optimierungsmaßnahmen durch, um sie an die Eigenschaften anzupassen Senden Sie eine große Menge an Datenströmen an das seekFestplattenlaufwerk workload, um eine höhere Bandbreite zu erzielen. Da jedoch neue Hardware 3D-XPointauf den Markt kommt, die eine um mehrere Größenordnungen niedrigere Latenz als herkömmliche Speicher bietet, wird der für mechanische Festplatten konzipierte Software-Stack zu einem großen Overhead für diese neuen Speicher.

  • Die meisten parallelen Dateisysteme bieten Funktionen wie die direkte Übertragung von Daten RDMAvom Client zum Server und die anschließende Beibehaltung des Blockspeichers auf dem Server. Aufgrund des Fehlens eines einheitlichen Abfrageverarbeitungsmodells für Blockgeräte-E/A- und Netzwerkereignisse ist die E/A-Verarbeitung stark auf die gleichzeitige Multithread -Verarbeitung angewiesen, sodass der Kontextwechsel während der E/A-Verarbeitung die geringe Latenz des Netzwerks nicht ausnutzen kann. Der Software-Stack des herkömmlichen parallelen Dateisystems kann weiterhin auf dem Speichergerät verwendet werden und eine höhere Leistung erzielen.page cachebuffer cache中断RPCcache/distribute lock3D NAND/3D-XPoint

Daos-Softwarearchitektur

  • Daos(Distribute Asynchronous Object Storage)Es handelt sich um einen benutzerdefinierten Open-Source-Objektspeicher, der auf nichtflüchtigem Speicher (NVM) basiert und Speicherschnittstellen und -funktionen wie , usw. bereitstellt daos.key-valuenon-bloking I/O数据的多版本快照

  • DaosDas Speichersystem nutzt NVMTechnologien der nächsten Generation wie SCM(Storage Class Memory)und vollständig aus NVMe(NVM express). Mithilfe kernel bypassvon Technologien läuft End-to-End im Benutzermodus und erfordert keine Systemaufrufe während E/A-Vorgängen.

Bild

  • Wie in der Abbildung oben gezeigt, Daosist der Kern in drei Teile unterteilt: SCM和PMDK, NVMe和SPDK, libfabric. SCM和PMDKDer erste Teil daoswird SCMzum Speichern aller Metadaten, Anwendungsindizes keyund verzögerungsempfindlichen kleinen Teilen verwendet IO. daosRufen Sie den Systemaufruf auf, um den persistenten Speicher beim Start zu initialisieren. Ordnen Sie beispielsweise nach dem Aktivieren DAXder Dateisystemfunktion die persistente Speicherdatei dem Adressraum des virtuellen Speichers zu. Nachdem das System gestartet und ausgeführt wurde, daoskann über Speicheranweisungen im Benutzermodus auf das persistente Speichergerät zugegriffen werden. Persistente Speichergeräte sind sehr schnell, weisen jedoch eine geringe Kapazität und hohe Kosten auf und eignen sich daher sehr gut zum Speichern von Metadaten. Für Daten im verteilten Speicher daoswerden Geräte verwendet, um das Ziel NVMedurch SPDKTechnologie zu erreichen, und E/A-Übermittlungen werden kernel bypassasynchronSPDK an die Benutzermoduswarteschlange übermittelt erstellt nach SPDK IOAbschluss einen Index für diese Daten im persistenten Speicher. libfabricJa daos, der letzte Teil ist hauptsächlich für Hochleistungsnetzwerke verantwortlich, beispielsweise für die Unterstützung von Omni-Path/IBNetzwerkarchitekturen. Es handelt sich um eine im Benutzermodus definierte Bibliothek, die gleichzeitig Kommunikationsdienste libfabrican Anwendungen exportiert, die sie verwenden . Sie bietet nachrichtenbasierte asynchrone Funktionen, einschließlich Datenübertragung und Netzwerkabfrage.fabricAPI

  • daoskernel bypassBasierend auf neuer Hardware und Netzwerktechnologie, verteiltem Speicher im Benutzermodus , unterstützt es derzeit mechanische Festplatten SCMund NVMeunterstützt diese nicht.

  • daosLiegt ein C/SModell zugrunde, kann daos clientes linraryin die Anwendung integriert werden, es läuft im gleichen Adressraum wie die Anwendung. daos serverEs handelt sich um einen mehrfach fehlertoleranten daemonProzess, der direkt auf alle Metadaten und kleinen E/A zugreift und diese speichert. SCMGroße E/A werden darin gespeichert . Es ist nicht darauf angewiesen , gleichzeitige E/A-Anforderungen zu verarbeiten, sondern verwendet Threads auf Benutzerebene, um diese zu verarbeiten.NVMeSCMNVMedaos serverpthreadUser Level Thead(ULT)

Bild

Daos-Datenspeicherstrategie

  • daosBereitstellung in Form gespeicherter exportierter Objekte key0-valueoder key-arrayin Form von APIs für den Benutzerzugriff. Um Skalierbarkeitsprobleme und den Aufwand für die Pflege von Metadaten (z. B. das Layout des Objekts, das zur Beschreibung des Speicherorts der Objektdaten verwendet wird) zu vermeiden, wird das daosObjekt in 128bitverwendet, um die Einzigartigkeit des Objekts zu identifizieren, und 128bites wird auch der Code verwendet um die Verteilung und Daten der Daten zu beschreiben. Schutzrichtlinie (ob es sich um eine Kopie oder ec handelt) und andere Informationen. daosEntsprechend der Konfiguration des Speicherpools wird das Layout des Zufallszahlengenerierungsobjekts generiert. Dieser Vorteil ähnelt dem crushAlgorithmus von Ceph.

Bild

  • daos serverDie direkte Verbindung zum Speicherbus für die Metadatenspeicherung SCMund NVMedie direkte Verbindung zum Speicherbus für die Datenspeicherung PCIe. Verwenden Sie Speicheranweisungen  load/store, um auf die Speicherzuordnung zuzugreifen SCM, und verwenden Sie dann SPDK APIden Benutzermoduszugriff NVMe . Sobald ein Hardwarefehler SCMauftritt NVMe, kommt es zu Daten- oder Metadatenverlusten. Um den Datenverlust sicherzustellen, werden Methoden zum Schutz von Daten und zur Datenwiederherstellung daosbereitgestellt . Wenn die Datenschutzfunktion aktiviert ist, werden sie in mehrere Daten-Shards und Datenüberprüfungs-Shards repliziert oder aufgeteilt und dann in verschiedenen Speicherknoten gespeichert. Sobald ein Hardware- oder Knotenfehler auftritt, sind die Daten weiterhin im herabgesetzten Modus zugänglich Bei der Wiederherstellung handelt es sich um die Wiederherstellung von anderen Kopien oder Verifizierungsdaten.replicationerasure codingdaos objectdaos object

Bild

  • replicationBietet eine relativ hohe Datenredundanz, daosübernimmt primary-slavedas Protokoll für Schreibvorgänge, primary replicaist für die Annahme von Schreibanforderungen verantwortlich und primary replicaleitet die Anforderungen dann zur slave replicaVerarbeitung verteilter Transaktionen weiter. primary-slaveDas Modell unterscheidet sich vom traditionellen Replika-Modell. primary replicaLeiten Sie RPC nur an weiter slave server. Alle Replikatknotenanforderungen werden RDMAüber die Methode direkt vom Peer-Client bufferabgerufen . daosEs wird eine Variante des Zwei-Phasen-Commit-Protokolls verwendet. Wenn ein Replikat die Änderung nicht anwenden kann, werden alle Replikate zur Aktualisierung benachrichtigt. Wenn der Server das Kopieren und Schreiben nicht verarbeiten kann, daosschließt er diesen Knoten von der Transaktion aus und wählt dann über den Algorithmus einen anderen normalen Knoten als Ersatzknoten aus und weist dann diesem normalen Knoten den vorherigen Transaktionsstatus zu. Wenn der ausgefallene Knoten zu diesem Zeitpunkt wieder in den Normalzustand zurückkehrt, erfasst er den Transaktionsstatus gemäß dem Datenwiederherstellungsprotokoll und ignoriert den lokalen Transaktionsstatus. daosWenn der Knoten während der Gesundheitsprüfung ausfällt, meldet er sich beim Multi-Node-basierten daos-serverProtokolldienst raft. Der Raft-Dienst im Server scannt die Objekt-ID, berechnet das Layout jedes Objekts und ermittelt dann alle betroffenen Objekte Die Objekt-ID des Algorithmus wird an den Notfallserver des Algorithmus gesendet. Der Notfallknoten erstellt die betroffenen Daten neu, indem er andere Replikate abruft.

  • Erasure CodingBietet eine Datenschutzstrategie, die mehr Platz spart und die Platznutzung verbessert. daos clientEs handelt sich um eine leichtgewichtige Bibliothek, die in den Prozess integriert ist, sodass die EC-Codierung der Daten auf dem Client durchgeführt wird und der Knoten, auf dem sich der Clientprozess befindet, mehr CPU-Ressourcen verbraucht. daos clientBerechnen Sie den Prüfcode der Daten, erstellen Sie Datenfragmente und Datenprüfblöcke RDMA Destriptorund senden Sie dann eine RPCAnfrage an den führenden Server der Prüfgruppe, um den Schreibvorgang zu koordinieren. Dieser Schreibvorgang ähnelt dem Schreiben der Kopie. Die teilnehmenden Knoten Im EC-Schreibvorgang direkt buffervom Client zum Abrufen von Daten daos ecwird auch das zweiphasige Festschreibungsprotokoll übernommen, um das atomare Schreiben von Daten auf verschiedene Knoten sicherzustellen. Wenn die geschriebenen Daten nicht mit Stripe_Size übereinstimmen, stellen die meisten Speichersysteme read/encode/writedie Konsistenz der Datenfragmentierung und Datenüberprüfung durch Verarbeitung sicher. Dieser Operationscode ist sehr groß (verursacht durch Verstärkungsprobleme) und eine verteilte Sperre ist erforderlich, um Lesen und Schreiben sicherzustellen Konsistenz. daosUm diesen Overhead zu vermeiden, wird jedoch die Methode des Kopierens eines Teils der geschriebenen Daten auf den Paritätsserver übernommen Multi-version data module, sodass der Paritätsserver die Paritätsdaten anhand der kopierten Daten problemlos berechnen kann. Wenn ein Knoten während des Lesevorgangs ausfällt, daoswird ein beeinträchtigter Lesevorgang bereitgestellt und daos clientzunächst die Stripe-Informationen aller Daten abgerufen, um die verlorenen Daten zu rekonstruieren. Ein zweiphasiges Festschreibungsprotokoll wird verwendet, um die Transaktion an den normalen Server weiterzuleiten Knoten, und dann werden die verlorenen Daten verarbeitet. Datenrekonstruktion.

  • daosEs gibt drei Arten von Fehlern: Der erste ist ein Dienstabsturz, der daosvom klatschähnlichen Protokoll SWIM behandelt wird; der zweite ist ein NVMeFehler, daosder SPDKanhand des Zustands der Abfrageausrüstung beurteilt wird; der dritte ist ein Speichermediumfehler, der daoserkannt und erkannt wird gespeichert und überprüfen Sie die Prüfsumme zur Sicherheit. Wenn der Server eine Schreibanforderung empfängt, überprüft der Server die Prüfsumme oder speichert die Prüfsumme und die Daten. Die Verifizierungsfunktion kann je nach Leistungsanforderungen serverseitig aktiviert oder deaktiviert werden. Wenn die Anwendung erneut zum Lesen von Daten zurückkehrt und die gelesenen Daten mit den zuvor geschriebenen Daten übereinstimmen, gibt der Server die Daten und den Prüfcode direkt zurück. Andernfalls überprüft der Daos-Server den Prüfcode des Datenblocks, der an der Leseoperation beteiligt ist , berechnet dann den Wert des gelesenen Datenprüfcodes und gibt dann die Daten und den Prüfcode an den Client zurück. Wenn der Daos-Client während des Lesevorgangs einen Verifizierungscodefehler erkennt, aktiviert er das eingeschränkte Lesen oder wechselt zum Lesen oder Wiederherstellen von Daten auf dem Client zu anderen Replikaten (EC-Modus). Der Client meldet den Bestätigungscode-Fehler auch an den Server. Der Server erfasst alle Verifizierungscodefehler durch Erkennung und Verifizierung, führt dann Summen durch vefifyund scrubbingmeldet sie dem Client.

Daos-Datenmodell

Bild

Bild

  • daosDas Datenmodell enthält zwei verschiedene Objektformen: Eine dient array objectsdazu, der Anwendung die Darstellung eines mehrdimensionalen Array-Formulars zu ermöglichen, die andere dient key/valuezum Speichern von Objektdaten. Diese Methode stellt eine KV-Schnittstelle und eine multi-levelKV-Schnittstelle bereit. In beiden Formen werden Datenobjekte versioniert, sodass Anwendungen problemlos auf frühere Datenversionen zurückgesetzt werden können. Jedes Objekt gehört zu einer Domäne ( daos container). Jeder Container verfügt über einen privaten Objektadressraum, und die Transaktionsverarbeitung ist auch unabhängig von anderen Containern in der Umfrage.

Bild

  • daosUnterstützt den Zugriff auf die Posix-Semantik. Posix ist keine daosFunktion des Speichermodells, sondern daoseine auf der Back-End-API basierende Bibliothek. Ein Posix-Dateisystem-Namespace befindet sich in. daos containerDie Posix-API wird fusemithilfe der Daos-Engine-API (libdaos) gesteuert ) und Daos-Dateisystem-API (libdfs) für den Zugriff auf Daten.

Je suppose que tu aimes

Origine blog.csdn.net/iamonlyme/article/details/132306008
conseillé
Classement