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 basiertSCM
und diese bereitstellt , unter der Prämisse, die Leistung durch globalen Zugriff auf den Adressraum von Objekten sicherzustellen.NVMe
fabric
一致性、可用性、弹性
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
seek
Festplattenlaufwerkworkload
, um eine höhere Bandbreite zu erzielen. Da jedoch neue Hardware3D-XPoint
auf 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
RDMA
vom 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 cache
buffer cache
中断
RPC
cache/distribute lock
3D 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. bereitstelltdaos
.key-value
non-bloking I/O
数据的多版本
快照
-
Daos
Das Speichersystem nutztNVM
Technologien der nächsten Generation wieSCM(Storage Class Memory)
und vollständig ausNVMe(NVM express)
. Mithilfekernel bypass
von Technologien läuft End-to-End im Benutzermodus und erfordert keine Systemaufrufe während E/A-Vorgängen.
-
Wie in der Abbildung oben gezeigt,
Daos
ist der Kern in drei Teile unterteilt:SCM和PMDK
,NVMe和SPDK
,libfabric
.SCM和PMDK
Der erste Teildaos
wirdSCM
zum Speichern aller Metadaten, Anwendungsindizeskey
und verzögerungsempfindlichen kleinen Teilen verwendetIO
.daos
Rufen Sie den Systemaufruf auf, um den persistenten Speicher beim Start zu initialisieren. Ordnen Sie beispielsweise nach dem AktivierenDAX
der Dateisystemfunktion die persistente Speicherdatei dem Adressraum des virtuellen Speichers zu. Nachdem das System gestartet und ausgeführt wurde,daos
kann ü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 Speicherdaos
werden Geräte verwendet, um das ZielNVMe
durchSPDK
Technologie zu erreichen, und E/A-Übermittlungen werdenkernel bypass
asynchronSPDK
an die Benutzermoduswarteschlange übermittelt erstellt nachSPDK IO
Abschluss einen Index für diese Daten im persistenten Speicher.libfabric
Jadaos
, der letzte Teil ist hauptsächlich für Hochleistungsnetzwerke verantwortlich, beispielsweise für die Unterstützung vonOmni-Path/IB
Netzwerkarchitekturen. Es handelt sich um eine im Benutzermodus definierte Bibliothek, die gleichzeitig Kommunikationsdienstelibfabric
an Anwendungen exportiert, die sie verwenden . Sie bietet nachrichtenbasierte asynchrone Funktionen, einschließlich Datenübertragung und Netzwerkabfrage.fabric
API
-
daos
kernel bypass
Basierend auf neuer Hardware und Netzwerktechnologie, verteiltem Speicher im Benutzermodus , unterstützt es derzeit mechanische FestplattenSCM
undNVMe
unterstützt diese nicht. -
daos
Liegt einC/S
Modell zugrunde, kanndaos client
eslinrary
in die Anwendung integriert werden, es läuft im gleichen Adressraum wie die Anwendung.daos server
Es handelt sich um einen mehrfach fehlertolerantendaemon
Prozess, der direkt auf alle Metadaten und kleinen E/A zugreift und diese speichert.SCM
Groß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.NVMe
SCM
NVMe
daos server
pthread
User Level Thead(ULT)
Daos-Datenspeicherstrategie
-
daos
Bereitstellung in Form gespeicherter exportierter Objektekey0-value
oderkey-array
in 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 dasdaos
Objekt in128bit
verwendet, um die Einzigartigkeit des Objekts zu identifizieren, und128bit
es 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.daos
Entsprechend der Konfiguration des Speicherpools wird das Layout des Zufallszahlengenerierungsobjekts generiert. Dieser Vorteil ähnelt demcrush
Algorithmus von Ceph.
-
daos server
Die direkte Verbindung zum Speicherbus für die MetadatenspeicherungSCM
undNVMe
die direkte Verbindung zum Speicherbus für die DatenspeicherungPCIe
. Verwenden Sie Speicheranweisungenload/store
, um auf die Speicherzuordnung zuzugreifenSCM
, und verwenden Sie dannSPDK API
den BenutzermoduszugriffNVMe
. Sobald ein HardwarefehlerSCM
auftrittNVMe
, kommt es zu Daten- oder Metadatenverlusten. Um den Datenverlust sicherzustellen, werden Methoden zum Schutz von Daten und zur Datenwiederherstellungdaos
bereitgestellt . 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.replication
erasure coding
daos object
daos object
-
replication
Bietet eine relativ hohe Datenredundanz,daos
übernimmtprimary-slave
das Protokoll für Schreibvorgänge,primary replica
ist für die Annahme von Schreibanforderungen verantwortlich undprimary replica
leitet die Anforderungen dann zurslave replica
Verarbeitung verteilter Transaktionen weiter.primary-slave
Das Modell unterscheidet sich vom traditionellen Replika-Modell.primary replica
Leiten Sie RPC nur an weiterslave server
. Alle Replikatknotenanforderungen werdenRDMA
über die Methode direkt vom Peer-Clientbuffer
abgerufen .daos
Es 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,daos
schließ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.daos
Wenn der Knoten während der Gesundheitsprüfung ausfällt, meldet er sich beim Multi-Node-basiertendaos-server
Protokolldienstraft
. 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 Coding
Bietet eine Datenschutzstrategie, die mehr Platz spart und die Platznutzung verbessert.daos client
Es 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 client
Berechnen Sie den Prüfcode der Daten, erstellen Sie Datenfragmente und DatenprüfblöckeRDMA Destriptor
und senden Sie dann eineRPC
Anfrage 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 direktbuffer
vom Client zum Abrufen von Datendaos ec
wird 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 Speichersystemeread/encode/write
die 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.daos
Um diesen Overhead zu vermeiden, wird jedoch die Methode des Kopierens eines Teils der geschriebenen Daten auf den Paritätsserver übernommenMulti-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,daos
wird ein beeinträchtigter Lesevorgang bereitgestellt unddaos client
zunä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. -
daos
Es gibt drei Arten von Fehlern: Der erste ist ein Dienstabsturz, derdaos
vom klatschähnlichen Protokoll SWIM behandelt wird; der zweite ist einNVMe
Fehler,daos
derSPDK
anhand des Zustands der Abfrageausrüstung beurteilt wird; der dritte ist ein Speichermediumfehler, derdaos
erkannt 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 durchvefify
undscrubbing
meldet sie dem Client.
Daos-Datenmodell
-
daos
Das Datenmodell enthält zwei verschiedene Objektformen: Eine dientarray objects
dazu, der Anwendung die Darstellung eines mehrdimensionalen Array-Formulars zu ermöglichen, die andere dientkey/value
zum Speichern von Objektdaten. Diese Methode stellt eine KV-Schnittstelle und einemulti-level
KV-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.
-
daos
Unterstützt den Zugriff auf die Posix-Semantik. Posix ist keinedaos
Funktion des Speichermodells, sonderndaos
eine auf der Back-End-API basierende Bibliothek. Ein Posix-Dateisystem-Namespace befindet sich in.daos container
Die Posix-API wirdfuse
mithilfe der Daos-Engine-API (libdaos) gesteuert ) und Daos-Dateisystem-API (libdfs) für den Zugriff auf Daten.