DE112021006506T5 - Verwaltung von Sperren-Koordinator-Rebalance in verteilten Dateisystemen - Google Patents

Verwaltung von Sperren-Koordinator-Rebalance in verteilten Dateisystemen Download PDF

Info

Publication number
DE112021006506T5
DE112021006506T5 DE112021006506.8T DE112021006506T DE112021006506T5 DE 112021006506 T5 DE112021006506 T5 DE 112021006506T5 DE 112021006506 T DE112021006506 T DE 112021006506T DE 112021006506 T5 DE112021006506 T5 DE 112021006506T5
Authority
DE
Germany
Prior art keywords
locks
lock
node
group
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112021006506.8T
Other languages
English (en)
Inventor
Ron Steinke
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Publication of DE112021006506T5 publication Critical patent/DE112021006506T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Abstract

Die Verwaltung von Sperren-Koordinator-Rebalance in verteilten Dateisystemen wird hier bereitgestellt. Eine Knotenvorrichtung eines Clusters von Knotenvorrichtungen kann einen Prozessor und einen Speicher umfassen, der ausführbare Anweisungen speichert, die, wenn sie vom Prozessor ausgeführt werden, die Durchführung von Operationen erleichtern. Die Operationen können das Bestimmen eines Auftretens eines Gruppenwechsels zwischen einem Cluster von Knotenvorrichtungen und das Ausführen einer Prüffunktion auf Grundlage des Auftretens des Gruppenwechsels umfassen. Des Weiteren können die Operationen die Reaktivierung erster Sperren einer Gruppe von Sperren auf Grundlage eines Ergebnisses der Prüffunktion umfassen, das die Reaktivierung der ersten Sperren anzeigt. Die zweiten Sperren der Gruppe von Sperren, die nicht zu den ersten Sperren gehören, werden nicht auf Grundlage des Ergebnisses der Prüffunktion reaktiviert. Der Cluster von Knotenvorrichtungen kann als verteiltes Dateisystem betrieben werden.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Anmeldung beansprucht Priorität für die U. S. Non-provisional-Application Nummer 17/124,694 , eingereicht am 17. Dezember 2020 mit dem Titel „MANAGING LOCK COORDINATOR REBALANCE IN DISTRIBUTED FILE SYSTEMS“, die in ihrer Gesamtheit hierin enthalten ist.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich allgemein auf verteilte Dateisysteme. Genauer gesagt bezieht sich die Offenbarung auf die Verwaltung des Sperren-Koordinator-Rebalance in verteilten Dateisystemen, beispielsweise die Ermöglichung einer verzögerten Sperren-Aktivierung („lock assertion“) und Cache-Invalidierung während des Sperren-Koordinator-Rebalance.
  • HINTERGRUND
  • Verteilte Speichersysteme und/oder Objektspeichersysteme können eine breite Palette von Speicherdiensten bereitstellen und dabei eine hohe Skalierbarkeit, Verfügbarkeit und Wartungsfreundlichkeit erreichen. Operationen von verteilten Dateisystemen (auch als verteilte Speichersysteme und/oder verteilte Objektspeichersysteme bezeichnet) können einen Sperrmechanismus umfassen, um die Datenkonsistenz der assoziierten gemeinsamen Dateien aufrechtzuerhalten. Wenn Änderungen an den Knoten im verteilten Dateisystem vorgenommen werden (ein Knoten wird beseitigt, ein Knoten wird hinzugefügt, ein erster Knoten wird entfernt und ein zweiter Knoten wird hinzugefügt usw.). Die Koordinierung der Sperren muss innerhalb des verteilten Dateisystems neu verteilt werden. Während dieses Prozesses kann das verteilte Dateisystem vorübergehend geschlossen werden, bis der Gruppenwechsel abgeschlossen ist. Dadurch werden anstehende Operationen unterbrochen, was sich auf die Leistung des verteilten Dateisystems auswirkt und für den Endbenutzer eine negative Erfahrung darstellt.
  • Der oben beschriebene Zusammenhang in Bezug auf herkömmliche Speichersysteme soll lediglich einen Überblick über die derzeitige Technologie geben und erhebt keinen Anspruch auf Vollständigkeit. Weitere kontextbezogene Beschreibungen und entsprechende Vorteile einiger der verschiedenen hierin beschriebenen, nicht begrenzten Ausführungsformen können bei der Durchsicht der folgenden detaillierten Beschreibung des Weiteren deutlich werden.
  • ZUSAMMENFASSUNG
  • Im Folgenden wird eine vereinfachte Zusammenfassung des offenbartes Gegenstandes dargestellt, um ein grundlegendes Verständnis einiger Aspekte der verschiedenen Ausführungsformen zu vermitteln. Diese Zusammenfassung stellt keinen umfassenden Überblick über die verschiedenen Ausführungsformen dar. Es ist weder beabsichtigt, wichtige oder kritische Elemente der verschiedenen Ausführungsformen zu identifizieren noch den Umfang der verschiedenen Ausführungsformen abzugrenzen. Ihr einziger Zweck ist es, einige Konzepte der Offenbarung in einer gestrafften Form als Auftakt für die spätere detailliertere Beschreibung zu präsentieren.
  • In einer Ausführungsform ist hier eine erste Knotenvorrichtung eines Clusters von Knotenvorrichtungen vorgesehen. Die erste Knotenvorrichtung kann einen Prozessor und einen Speicher umfassen, der ausführbare Anweisungen speichert, die, wenn sie von dem Prozessor ausgeführt werden, die Durchführung von Operationen ermöglichen. Die Operationen können das Bestimmen eines Auftretens eines Gruppenwechsels zwischen einem Cluster von Knotenvorrichtungen und das Ausführen einer Prüffunktion auf Grundlage des Auftretens des Gruppenwechsels umfassen. Des Weiteren können die Operationen die Reaktivierung erster Sperren einer Gruppe von Sperren auf Grundlage eines Ergebnisses der Prüffunktion umfassen, das die Reaktivierung der ersten Sperren anzeigt. Die zweiten Sperren der Gruppe von Sperren, die nicht zu den ersten Sperren gehören, werden nicht auf Grundlage des Ergebnisses der Prüffunktion reaktiviert. Der Cluster von Knotenvorrichtungen kann als ein verteiltes Dateisystem arbeiten.
  • Gemäß einem Beispiel kann das Reaktivieren der ersten Sperren das Bestimmen umfassen, dass ein Sperren-Verlust-Callback-Thread entsprechende Sperren der ersten Sperren verwendet und dass der entsprechende Cache, der mit einem Thread assoziiert ist, zur Invalidierung verfügbar ist.
  • In einigen Implementierungen können die Operationen vor der Reaktivierung der ersten Sperren das Empfangen eines Satzes von Werten als Reaktion auf die Prüffunktion umfassen. Ein erster Satz von Werten indiziert, dass kein Cache invalidiert werden soll. Ein zweiter Wert des Satzes von Werten indiziert, dass ein Sperren-Verlust-Callback-Thread keine Sperre verwendet und dass der einem Thread assoziierte Cache zur Invalidierung verfügbar ist. Ein dritter Wert des Satzes von Werten zeigt an, dass der Sperren-Verlust-Callback-Thread die Sperre verwendet und dass der dem Thread zugeordnete Cache zur Invalidierung zur Verfügung steht. Des Weiteren können die Operationen das Bestimmen umfassen, dass die zweiten Sperren mit dem ersten Wert und dem zweiten Wert assoziiert sind, und das Bestimmen, dass die ersten Sperren mit dem dritten Wert assoziiert sind.
  • In Übereinstimmung mit einigen Implementierungen kann das Bestimmen des Auftretens des Gruppenwechsels das Bestimmen einer Beseitigung einer bestehenden Knotenvorrichtung aus dem Cluster von Knotenvorrichtungen umfassen. Alternativ kann das Bestimmen des Auftretens des Gruppenwechsels das Bestimmen einer Hinzufügung einer neuen Knotenvorrichtung zum Cluster von Knotenvorrichtungen umfassen. In einigen Fällen kann das Bestimmen einer Hinzufügung einer neuen Knotenvorrichtung zu dem Cluster von Knotenvorrichtungen das Bestimmen sowohl der Beseitigung der bestehenden Knotenvorrichtung als auch der Hinzufügung der neuen Knotenvorrichtung umfassen.
  • In einem Beispiel werden inkompatible Sperren erzeugt, wenn zwei Threads exklusive Sperren auf dieselbe Ressource halten. In einem anderen Beispiel kann die Ausführung der Prüffunktion die Ausführung lokaler Funktionen unter Umgehung eines Koordinatorknotens umfassen, der in dem Cluster von Knotenvorrichtungen enthalten ist. Gemäß einem anderen Beispiel können die Operationen das Verwerfen von Block-Cache und Inode-Cache umfassen, die mit den zweiten Sperren assoziiert sind.
  • Gemäß einigen Implementierungen ist eine Sperre der Gruppe von Sperren mit einem Sperr-Koordinatorknoten zwischen dem Cluster von Knotenvorrichtungen assoziiert. Des Weiteren umfassen die Operationen das Ermöglichen der Nachverfolgung eines definierten Sperrtyps, der für jede Ressource vom Koordinatorknoten für Sperren angefragt wird.
  • Eine andere Ausführungsform bezieht sich auf ein Verfahren, das das Feststellen durch eine erste Knotenvorrichtung, die einen Prozessor und einen Teil einer Gruppe von Knotenvorrichtungen umfasst, dass ein Gruppenwechsel in der Gruppe von Knotenvorrichtungen stattgefunden hat, umfassen kann. Des Weiteren kann das Verfahren die Reaktivierung von ersten Sperren einer Gruppe von Sperren durch die erste Knotenvorrichtung auf Grundlage eines Ergebnisses einer Prüffunktion umfassen, die die Reaktivierung der ersten Sperren anzeigt. Die Prüffunktion wird auf Grundlage des Feststellens, dass der Gruppenwechsel stattgefunden hat, ausgeführt. Das Verfahren kann auch das Verwerfen von zweiten Sperren der Gruppe von Sperren durch die erste Knotenvorrichtung auf Grundlage des Ergebnisses der Prüffunktion umfassen, das angibt, dass die Reaktivierung der zweiten Sperren nicht erforderlich ist. Die ersten Sperren und die zweiten Sperren sind unterschiedliche Sperren der Gruppe von Sperren.
  • In einigen Implementierungen kann die Reaktivierung der ersten Sperren darin bestehen, dass bestimmt wird, dass ein Sperren-Verlust-Callback-Thread die jeweiligen Sperren der ersten Sperren verwendet und dass der jeweilige mit einem Thread assoziierte Cache zur Invalidierung zur Verfügung steht.
  • In einigen Implementierungen kann das Verwerfen der zweiten Sperren das Bestimmen umfassen, dass ein Sperren-Verlust-Callback-Thread die jeweiligen Sperren der ersten Sperren nicht verwendet und dass der jeweilige mit einem Thread assoziierte Cache für eine Invalidierung verfügbar ist. Alternativ oder zusätzlich kann das Verwerfen der zweiten Sperren das Bestimmen umfassen, dass kein Cache invalidiert werden soll.
  • Das Verfahren kann vor der Reaktivierung das Ausführen der Prüffunktion umfassen, die das Umgehen eines Koordinatorknotens umfasst, der in der Gruppe von Knotenvorrichtungen enthalten ist, basierend auf der Ausführung einer oder mehrerer lokaler Funktionen. In einem Beispiel sind die Gruppe von Sperren exklusive Sperren in einem verteilten Dateisystem.
  • Der Gruppenwechsel kann wenigstens eines von einem zusätzlichen Knoten, der der Gruppe von Knotenvorrichtungen hinzugefügt wird, und einer Beseitigung eines Knotens aus der Gruppe von Knotenvorrichtungen umfassen.
  • Eine andere Ausführungsform bezieht sich auf ein nichttransitorisches, maschinenlesbares Medium, das ausführbare Anweisungen enthält, die, wenn sie von einem Prozessor ausgeführt werden, die Durchführung von Operationen ermöglichen. Die Operationen können die Ausführung einer Prüffunktion umfassen, die auf einer Bestimmung basiert, dass ein Gruppenwechsel in einem Cluster von Knotenvorrichtungen stattfindet, die für den Betrieb als verteiltes Dateisystem konfiguriert sind. Die Prüffunktion wertet die jeweiligen Sperren und den assoziierten Cache einer Gruppe von Ressourcen aus. Die Operationen können auch das Bestimmen eines ersten Satzes von Sperren der jeweiligen Sperren umfassen, die auf Grundlage der Ergebnisse der Prüffunktion reaktiviert werden sollen. Des Weiteren können die Operationen die Reaktivierung des ersten Satzes von Sperren umfassen, wobei ein zweiter Satz von Sperren der jeweiligen Sperren, der sich vom ersten Satz von Sperren unterscheidet, auf Grundlage der Ergebnisse der Prüffunktion nicht reaktiviert wird.
  • Die Reaktivierung des ersten Satzes von Sperren kann das Bestimmen umfassen, dass ein Sperren-Verlust-Callback-Thread entsprechende Sperren des ersten Satzes von Sperren verwendet und dass ein entsprechender Cache, der mit einem Thread assoziiert ist, zur Invalidierung verfügbar ist. Das Ausführen der Prüffunktion kann das Ausführen lokaler Funktionen unter Umgehung eines Koordinatorknotens umfassen, der in dem Cluster von Knotenvorrichtungen enthalten ist.
  • Einigen Implementierungen zufolge umfassen die Operationen vor der Reaktivierung des ersten Satzes von Sperren den Empfang eines Satzes von Werten als Reaktion auf die Prüffunktion. Ein erster Satz von Werten zeigt an, dass kein Cache invalidiert werden soll. Ein zweiter Wert des Satzes von Werten indiziert, dass ein Sperren-Verlust-Callback-Thread keine Sperre verwendet und dass der jeweilige mit einem Thread assoziierte Cache zur Invalidierung zur Verfügung steht. Ein dritter Wert des Satzes von Werten zeigt an, dass der Sperren-Verlust-Callback-Thread die Sperren verwendet und dass der jeweilige mit dem Thread assoziierte Cache zur Invalidierung zur Verfügung steht. Des Weiteren können die Operationen das Bestimmen umfassen, dass der zweite Satz von Sperren mit dem ersten Wert und dem zweiten Wert assoziiert ist, und das Bestimmen, dass der erste Satz von Sperren mit dem dritten Wert assoziiert ist.
  • Zur Erreichung der vorgenannten und verwandten Zwecke umfasst der offenbart Gegenstand eines oder mehrere der nachfolgend ausführlicher beschriebenen Merkmale. In der folgenden Beschreibung und den beigefügten Zeichnungen werden bestimmte illustrative Aspekte des Gegenstands im Detail dargelegt. Diese Aspekte sind jedoch nur eine Indikation für einige der verschiedenen Möglichkeiten, in denen die Prinzipien des Gegenstandes verwendet werden können. Andere Aspekte, Vorteile und neuartige Merkmale des offenbartes Gegenstandes werden aus der folgenden detaillierten Beschreibung ersichtlich, wenn sie in Verbindung mit den Zeichnungen betrachtet werden. Es wird auch deutlich, dass die detaillierte Beschreibung zusätzliche oder alternative Ausführungsformen umfassen kann, die über die in dieser Zusammenfassung beschriebenen hinausgehen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Verschiedene, nicht einschränkende Ausführungsformen werden unter Bezugnahme auf die beigefügten Zeichnungen weiter beschrieben, in denen Folgendes gezeigt ist:
    • 1 zeigt einen beispielhaften Cluster von Computervorrichtungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen;
    • 2A zeigt ein beispielhaftes, nicht einschränkendes Blockdiagramm der Ressourcenzuweisung eines ursprünglichen Clusters in einem verteilten Dateisystem vor einem Gruppenwechsel in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen;
    • 2B zeigt ein beispielhaftes, nicht-begrenzendes Blockdiagramm der Ressourcenzuweisung eines geänderten Clusters in einem verteilten Dateisystem, nachdem ein Knoten in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen hinzugefügt worden ist;
    • 2C zeigt ein beispielhaftes, nicht-begrenzendes Blockdiagramm der Ressourcenzuweisung eines geänderten Clusters in einem verteilten Dateisystem, nachdem ein Knoten gemäß einer oder mehreren hierin beschriebenen Ausführungsformen beseitigt worden ist;
    • 3 zeigt ein Flussdiagramm eines beispielhaften, nicht-einschränkenden, computer-implementierten Verfahrens zur verzögerten Reaktivierung von Sperren, die nach einem Gruppenwechsel gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erfüllt sein sollten;
    • 4 zeigt ein Flussdiagramm eines beispielhaften, nicht-einschränkenden, computer-implementierten Verfahrens, das Sperren-Koordinator-Rebalance in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen verwaltet;
    • 5 zeigt ein Flussdiagramm eines beispielhaften, nicht einschränkenden, computerimplementierten Verfahrens, das eine verzögerte Sperren-Aktivierung und Cache-Invalidierung nach einem Gruppenwechsel in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen implementiert;
    • 6 zeigt ein Flussdiagramm eines beispielhaften, nicht begrenzten, computerimplementierten Verfahrens, das selektiv Sperren nach einem Gruppenwechsel in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen reaktiviert;
    • 7 zeigt ein Flussdiagramm eines beispielhaften, nicht begrenzten, computerimplementierten Verfahrens, das eine erste Gruppe von Sperren reaktiviert und eine zweite Gruppe von Sperren nach einem Gruppenwechsel nicht reaktiviert, in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen;
    • 8 zeigt eine beispielhafte, nicht-begrenzende Knotenvorrichtung zur Verwaltung von Sperren-Ressourcen in verteilten Dateisystemen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen;
    • 9 zeigt eine beispielhafte, nicht-begrenzende Computerumgebung, in der eine oder mehrere hierin beschriebene Ausführungsformen ermöglicht werden können; und
    • 10 zeigt eine beispielhafte, nicht-begrenzende Netzwerkumgebung, in der eine oder mehrere hierin beschriebene Ausführungsformen ermöglicht werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine oder mehrere Ausführungsformen werden im Folgenden unter Bezugnahme auf die beigefügten Zeichnungen, in denen beispielhafte Ausführungsformen dargestellt sind, ausführlicher beschrieben. In der folgenden Beschreibung werden zu Erklärungszwecken zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis der verschiedenen Ausführungsformen zu ermöglichen. Die verschiedenen Ausführungsformen können jedoch auch ohne diese spezifischen Details ausgeführt werden. In anderen Fällen werden bekannte Strukturen und Vorrichtungen in Blockdiagrammform dargestellt, um die Beschreibung der verschiedenen Ausführungsformen zu ermöglichen.
  • Ausführungsformen zielen auf die Ermöglichung einer verzögerten Sperren-Aktivierung („deferred lock assertion“) und Cache-Invalidierung während des Sperren-Koordinator-Rebalance („lock coordinator rebalance“), beispielsweise auf Grundlage eines Gruppenwechsels. Wie hierin erörtert, kann auf Grundlage der Erkennung eines Gruppenwechsels eine Prüffunktion ausgeführt werden, die einen aus einer Gruppe von Werten zurückgibt, je nachdem, ob Cache zu invalidieren ist oder nicht, und, wenn Cache zu invalidieren ist, ob ein Sperren-Verlust-Callback-Thread („lock loss callback thread“) die Sperre benötigt, um den Cache zu invalidieren. Wenn der Sperren-Verlust-Callback-Thread die Sperre benötigt, um den Cache zu invalidieren, kann die Sperre reaktiviert werden. Andernfalls wird die Sperre nicht reaktiviert.
  • Ein Beispiel für eine Computerplattform, die optional die hier offenbartes Verfahren zur Reaktivierung von Sperren einbeziehen kann, ist ein ISILON OneFS® Cluster von DELL®, Inc. OneFSO-Cluster sind eine von vielen optionalen Cluster-Computing-Technologien, von denen jede die Lehren dieser Offenbarung einbeziehen kann.
  • 1 veranschaulicht einen beispielhaften Cluster von Computervorrichtungen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen. 1 umfasst einen Cluster 102 von Datenknotenvorrichtungen, die in 1 als Speicherknoten 104(1), 104(2) ... 104(M) bezeichnet werden, wobei M eine positive ganze Zahl ist. Jeder Speicherknoten 104(1), 104(2)... 104(M) kann eine Computervorrichtung umfassen. Die Speicherknoten 104(1), 104(2) ... 104(M) können so konfiguriert sein, dass sie Objekte als Antwort auf Anfragen von Clients 108 bereitstellen. Darüber hinaus kann typischerweise einer der Speicherknoten 104(1), 104(2)... 104(M) eine virtuelle Maschine des Cluster-Controllers hosten (in 1 nicht dargestellt), so dass dieser Knoten der Cluster-Controller-Knoten ist, der den Cluster 102 verwaltet. Die Speicherknoten 104(1), 104(2)... 104(M) können über eine geeignete Datenkommunikationsverbindung miteinander gekoppelt werden, die Schnittstellen und Protokolle wie beispielsweise den Ethernet-Block 106 umfasst, aber nicht darauf beschränkt ist.
  • Clients 108 können datensystembezogene Anfragen an den Cluster 102 senden, der im Allgemeinen als ein großer Objekt-Namensraum konfiguriert werden kann. Der Cluster 102 kann eine unbegrenzte Anzahl von Objekten verwalten (beispielsweise bis zu Billionen von Objekten oder mehr). Zu diesem Zweck umfasst ein Knoten wie der Speicherknoten 104(2) im Allgemeinen Ports 112, über die Clients 108 eine Verbindung zum Cluster 102 herstellen. Beispielhafte Ports 112 sind für Anfragen über verschiedene Protokolle vorgesehen, einschließlich, aber nicht beschränkt auf SMB (Server Message Block), FTP (File Transfer Protocol), HTTP / HTTPS (Hypertext Transfer Protocol) und NFS (Network File System); des Weiteren ermöglicht SSH (Secure Shell) beispielsweise verwaltungsbezogene Anfragen.
  • Jeder Knoten, wie beispielsweise der Knoten 104(2), kann eine Instanz eines Betriebssystems 114 (beispielsweise ein OneFS® oder ein anderes Betriebssystem) umfassen. Jeder Knoten, wie beispielsweise der Knoten 104(2), kann darüber hinaus eine CPU 122, RAM 124 und Speichervorrichtungen, wie beispielsweise Festplatten 126, umfassen. RAM 124 und Festplatten 126 können beispielsweise flüchtige Speicher, nichtflüchtige Speicher, Festplattenlaufwerke, Solid-State-Laufwerke oder andere Arten von Speichervorrichtungen umfassen. Darüber hinaus können RAM 124 und Festplatten 126 an mehreren der Speicherknoten 104(1) - 104(M) sowie andere an den Cluster 102 angeschlossene Speichervorrichtungen verwendet werden, um gemeinsam eine logische Festplatte zu unterstützen, die einen gemeinsamen Speicherplatz für den Cluster 102 bereitstellt.
  • Es wird darauf hingewiesen, dass Cluster-Einsätze beliebiger Größe sein können. Je nach den Bedürfnissen einer bestimmten Organisation können einige Cluster fünf oder weniger Knoten umfassen, während große Cluster eine viel größere Anzahl von Knoten umfassen können. Die hier offenbarten Technologien können Cluster jeder Größe umfassen.
  • Das verteilte Dateisystem OneFS® weist ein Spannungsverhältnis zwischen der Größe des Initiator-Caches und dem Sperren-Koordinator-Rebalance während des Gruppenwechsels auf (ohne Einschränkung). Ein großer Cache verbessert die Latenz bei Dateisystemoperationen. Allerdings ist jedes Element im Initiator-Cache durch eine Sperre aus dem zweistufigen Sperrsystem geschützt, das auf dem Initiator-Knoten zwischengespeichert ist. Beim Sperren-Koordinator-Rebalance müssen die neuen Sperren-Koordinatoren über jede einzelne dieser im Cache gespeicherten Sperren informiert werden. Dies wird als Reaktivierung der zwischengespeicherten Sperren auf einem Knoten bezeichnet. Eine große Anzahl von Sperren im Cache kann bei Gruppenwechseln zu inakzeptablen Systemstillständen führen (beispielsweise ist das System vorübergehend gesperrt). Die hier vorgestellten Ausführungsformen versuchen, die oben genannten Herausforderungen zu überwinden, indem sie die Benachrichtigung über Sperren für fast alle Sperren bis nach Abschluss des Gruppenwechsels verzögern. Dies ermöglicht die Vergrößerung des Initiator Cache bei gleichzeitiger Verkürzung der Gruppenwechselzeiten.
  • Im Weiteren implementiert OneFS® ein zweistufiges verteiltes Sperrsystem, das als „Ik“ bezeichnet wird. Das zweistufige verteilte Sperrsystem bedeutet, dass Sperren für eine Ressource von einem bestimmten Knoten koordiniert werden, der als Koordinator bezeichnet wird und der von Knoten, die als Initiatoren bezeichnet werden, im Namen von Threads auf den Initiator-Knoten um Sperren ersucht werden kann. Wenn also ein Thread eine Sperre benötigt, um Arbeiten an einer Ressource auszuführen, muss diese Anfrage möglicherweise nicht nur an seinen lokalen Initiator gehen, sondern auch außerhalb des Knotens an den Cluster-weiten Koordinator für diese Ressource gesendet werden, bevor eine Sperre gewährt werden kann und der Thread freigegeben werden kann.
  • 2A zeigt ein beispielhaftes, nicht einschränkendes Blockdiagramm der Ressourcenzuweisung eines ursprünglichen Clusters 200 in einem verteilten Dateisystem vor einem Gruppenwechsel in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen. In diesem Beispiel sind vier Cluster (ein erster Knoten, ein zweiter Knoten, ein dritter Knoten und ein vierter Knoten) vor dem Gruppenwechsel dargestellt. Die Größe jedes Knotens stellt die Anzahl der Ressourcen des Knotens dar. Dies ist jedoch nur ein Beispiel, und ein verteiltes Dateisystem ist weder auf vier Knoten noch auf die entsprechende Anzahl von Ressourcen für jeden Knoten beschränkt. Des Weiteren können für jeden Knoten mehrere Ressourcen veranschlagt werden, die von der Speicherplatzkapazität des Knotens, den Verarbeitungsressourcen des Knotens, dem Cache-Speicher und/oder den Systemspeicherressourcen des Knotens usw. abhängig sein können. So können einige Knoten mehr Verantwortung für die Koordinierung von Sperren übernehmen (beispielsweise mehr Sperren koordinieren) als andere Knoten, die weniger Ressourcen verwalten.
  • 2B zeigt ein beispielhaftes, nicht begrenzendes Blockdiagramm der Ressourcenzuweisung eines geänderten Clusters 202 in einem verteilten Dateisystem, nachdem ein Knoten gemäß einer oder mehrerer hierin beschriebener Ausführungsformen hinzugefügt worden ist. Genauer gesagt, zeigt 2B die Ressourcenzuweisung, nachdem ein Knoten zum ursprünglichen Cluster 200 hinzugefügt wurde. In diesem Fall wurde ein fünfter Knoten hinzugefügt. Obwohl dies als Hinzufügung eines einzelnen Knotens dargestellt ist, könnten in einigen Fällen mehr als ein Knoten hinzugefügt werden.
  • 2C zeigt ein beispielhaftes, nicht einschränkendes Blockdiagramm der Ressourcenzuweisung eines geänderten Clusters 204 in einem verteilten Dateisystem nach der Beseitigung eines Knotens in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen. Genauer gesagt veranschaulicht 2C die Ressourcenzuweisung, nachdem ein Knoten aus dem ursprünglichen Cluster 200 entfernt worden ist. In diesem Fall wurde der zweite Knoten entfernt. Obwohl die Beseitigung eines einzelnen Knotens dargestellt ist, können in einigen Fällen mehr als ein Knoten entfernt werden. Des Weiteren können gemäß einigen Implementierungen ein oder mehrere Knoten hinzugefügt und/oder ein oder mehrere Knoten aus dem ursprünglichen Cluster (oder nachfolgenden Clustern) entfernt werden. Ressourcen, die zuvor dem entfernten Knoten zugewiesen waren, können den verbleibenden Knoten neu zugewiesen werden.
  • Traditionell wurden verschiedene Arten der Anpassung an einen Gruppenwechsel in Betracht gezogen. So wurde beispielsweise ein konsistenter Hash angewandt, bei dem beim Ausfall eines Knotens alle Sperren auf den verbleibenden Koordinatoren nicht verschoben werden. Durch die Implementierung eines konsistenten Hashs kann die Anzahl der zu sendenden Sperren-Benachrichtigungen reduziert werden. In einem anderen Beispiel können während des Benachrichtigungsvorgangs alle Sperren verworfen werden, die zwar selbst im Cache gespeichert sind, aber derzeit keinen anderen Cache-Zustand schützen. Eine weitere Möglichkeit, sich auf einen Gruppenwechsel einzustellen, ist ein Drain-Service. Vor einem Gruppenwechsel wird mit dem Drain Service die Größe der zwischengespeicherten Daten und die Anzahl der zwischengespeicherten Sperren deutlich reduziert. Dies funktioniert jedoch nur, wenn der Gruppenwechsel vorhersehbar ist und hilft daher nicht im Falle einer unerwarteten Socket-Unterbrechung zwischen Knoten.
  • Die offenbarten Ausführungsformen können die Benachrichtigung über Sperren für fast alle Sperren verzögern, bis der Gruppenwechsel abgeschlossen ist. Somit können die offenbart Ausführungsformen die Cache-Größe des Initiators erhöhen und gleichzeitig die Gruppenwechselzeiten reduzieren.
  • 3 zeigt ein Flussdiagramm eines beispielhaften, nicht einschränkenden, computerimplementierten Verfahrens 300 zur verzögerten Reaktivierung von Sperren, die nach einem Gruppenwechsel in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen erfüllt sein sollten.
  • Des Weiteren werden bei 302 Dateisystem-Sperren bei einem Gruppenwechsel reaktiviert. Dementsprechend kann auf Grundlage einer Bestimmung, dass ein Gruppenwechsel geplant ist oder stattfindet, die Reaktivierung der Dateisystemsperren durchgeführt werden. Eine solche Reaktivierung kann nach dem Gruppenwechsel gewährleisten, dass keine zwei Threads im System inkompatible Sperren halten (beispielsweise zwei Threads mit exklusiven Sperren auf dieselbe Ressource). Die gleiche Garantie kann durch die Implementierung einer verzögerten Reaktivierung von Sperren bei 304 gegeben werden.
  • Die verzögerte Reaktivierung der Sperre kann durch Erfüllung verschiedener Bedingungen implementiert werden. Zum Beispiel kann, wie bei 306 des computerimplementierten Verfahrens 300 angegeben, eine erste Bedingung sein, dass kein Thread eine Sperre, die vor dem Gruppenwechsel im Cache war, wiedererlangt, bis die Sperre reaktiviert worden ist. Wie bei 308 ausgewiesen, kann eine zweite Bedingung sein, dass auf keinen Cache, der durch eine zwischengespeicherte Sperre geschützt ist, zugegriffen wird, bis die Sperre zurückerlangt wurde. Eine dritte Bedingung, wie bei 310 angegeben, kann sein, dass, wenn ein anderer Knoten eine inkompatible Sperre zwischen dem Zeitpunkt des Gruppenwechsels und dem Zeitpunkt der Reaktivierung der Sperre genommen hat, dieser Cache verworfen wird, bevor irgendein Thread diese Sperre erwirbt.
  • Der Sperrenkoordinator kann die stärkste Sperre verfolgen, die für jede Ressource während des Zeitfensters zwischen Gruppenwechsel und Reaktivierung genommen wurde, so dass der Sperrenkoordinator einen Initiator-Knoten darüber informieren kann, dass er seinen Cache verwerfen muss.
  • Wenn ein Sperrenkoordinator einen Initiator einer Sperre auffordert, seine Sperre aufzugeben, invalidiert der Initiator traditionell jeden durch diese Sperre geschützten Cache in zwei Schritten. Zunächst ruft der Initiator eine Prüffunktion auf, die angibt, ob eine Invalidierung des Caches erforderlich ist. Wenn etwas ungültig gemacht werden muss, ruft das Sperrsystem eine zweite Funktion auf (lock loss callback, IIcb), um den Cache zu invalidieren. Der entscheidende Unterschied zwischen diesen beiden Funktionen besteht darin, dass der Thread, der die Prüffunktion ausführt, während der Prüfung nicht die Sperre hält, die freigegeben werden soll. Bei IIcb hingegen hält der Thread die Sperre. Dies ist bei der Invalidierung des Cache während einer fehlgeschlagenen Reaktivierung der Sperre nicht akzeptabel, da der Cache zerstört werden muss, bevor ein Thread die Sperre erwirbt.
  • Um dieses Problem zu lösen, wird die Prüffunktion gemäß den verschiedenen hier vorgestellten Ausführungsformen dahingehend geändert, dass sie drei mögliche Werte anstelle von zwei möglichen Werten zurückgibt. Der erste Wert besagt, dass es keinen Cache zu invalidieren gibt. Ein zweiter Wert besagt, dass Cache zur Invalidierung vorhanden ist, aber der Thread IIcb die Sperre nicht benötigt. Der dritte Wert besagt, dass ein Cache zu invalidieren ist und der Thread von IIcb die Sperre benötigt.
  • Die Rückgabe des dritten Wertes sollte selten sein. Die meisten Block-Caches und Inode-Caches können verworfen werden, ohne die Sperre zu halten, die diesen Cache schützt. Ausnahmen sind Fälle, in denen Daten während des Verwerfens der Sperre auf die Festplatte gespült werden müssen (beispielsweise der OneFSO-Coalescer), oder in denen der Cache durch mehrere Sperren auf nicht triviale Weise geschützt ist (beispielsweise der OneFS®-Restripe-Cursor-Block).
  • Durch die Implementierung der hier vorgestellten Ausführungsformen mit dieser verbesserten Prüffunktion kann die Sperren-Reaktivierung während des Gruppenwechsels modifiziert werden, wie in 4 erörtert, die ein Flussdiagramm eines beispielhaften, nicht einschränkenden, computerimplementierten Verfahrens 400 zeigt, das den Sperren-Koordinator-Rebalance in Übereinstimmung mit einer oder mehreren hier beschriebenen Ausführungsformen verwaltet.
  • Bei 402 des computerimplementierten Verfahrens kann ein System mit einem Prozessor alle Prüffunktionen während des Gruppenwechsels ausführen (oder ausführen lassen). Diese lokalen Funktionen sollten viel schneller sein als die Nachricht pro Sperre, die an den Koordinator gesendet wird, um die Sperre zu reaktivieren. Des Weiteren kann das System bei 404 alle Sperren reaktivieren, für die probe() einen Wert zurückgegeben hat, der angibt, dass Cache zu invalidieren ist und der IIcb-Thread die Sperre benötigt (beispielsweise der dritte oben diskutierte Wert).
  • Das System kann die Nachverfolgung des stärksten Sperrtyps (gemeinsam, exklusiv usw.), der für jede Ressource von den Sperrkoordinatoren angefragt wurde, bei 406 des computerimplementierten Verfahrens 400 aktivieren. Bei 408 kann das System den Gruppenwechsel abschließen.
  • 5 zeigt ein Flussdiagramm eines beispielhaften, nicht einschränkenden, computerimplementierten Verfahrens 500, das eine verzögerte Sperren-Aktivierung und Cache-Invalidierung nach einem Gruppenwechsel in Übereinstimmung mit einer oder mehreren hier beschriebenen Ausführungsformen implementiert.
  • Nach dem Gruppenwechsel bei 502 setzt das System (beispielsweise über Initiator-Knoten) die Reaktivierung von Sperren fort, während Dateisystemoperationen fortgesetzt werden. Alle Sperren, die von aktiven Dateisystem-Threads angefragt werden, werden bei der Reaktivierung um 504 vorrangig behandelt.
  • Wenn die Reaktivierung fehlschlägt, kann das System (beispielsweise über einen Initiator der Sperre) den vorherigen Rückgabewert von probe() verwenden, um zu bestimmen, ob der IIcb aufgerufen werden soll (506). Das System verwirft dann die im Cache gespeicherte Sperre (508). Sobald die Sperre verworfen wurde, kann sie ganz normal durch eine Standardanfrage für eine Sperre angefordert werden. Sobald alle Knoten alle Sperren im Cache aufweisen, werden die Koordinatoren benachrichtigt, dass sie die Nachverfolgung ihres Sperrtyps verwerfen sollen.
  • 6 zeigt ein Flussdiagramm eines beispielhaften, nicht einschränkenden, computerimplementierten Verfahrens 600, das selektiv Sperren nach einem Gruppenwechsel in Übereinstimmung mit einer oder mehreren hierin beschriebenen Ausführungsformen reaktiviert.
  • Das computerimplementierte Verfahren 600 beginnt bei 602, wenn eine erste Knotenvorrichtung, die einen Prozessor und einen Teil einer Gruppe von Knotenvorrichtungen umfasst, feststellt, dass ein Gruppenwechsel in der Gruppe von Knotenvorrichtungen stattgefunden hat. Die Bestimmung kann vor dem Auftreten des Gruppenwechsels, während des Gruppenwechsels oder nach Abschluss des Gruppenwechsels erfolgen. Der Gruppenwechsel kann wenigstens einen zusätzlichen Knoten umfassen, der der Gruppe von Knotenvorrichtungen hinzugefügt wird, oder eine Beseitigung eines Knotens aus der Gruppe von Knotenvorrichtungen.
  • Die erste Knotenvorrichtung kann bei 604 erste Sperren einer Gruppe von Sperren auf Grundlage eines Ergebnisses einer Prüffunktion, die eine Reaktivierung der ersten Sperren anzeigt, reaktivieren. Bei der Gruppe von Sperren kann es sich um exklusive Sperren in einem verteilten Dateisystem handeln. Die Prüffunktion kann von der ersten Knotenvorrichtung bei oder nach dem Feststellen des Auftretens des Gruppenknotenwechsels bei 602 ausgeführt werden. Die Ausführung der Prüffunktion kann die Umgehung eines Koordinatorknotens umfassen, der in der Gruppe der Knotenvorrichtungen enthalten ist.
  • Einigen Implementierungen zufolge kann die Reaktivierung der ersten Sperren das Bestimmen umfassen, dass ein Sperren-Verlust-Callback-Thread entsprechende Sperren der ersten Sperren verwendet und dass ein mit einem Thread assoziierter Cache zur Invalidierung verfügbar ist.
  • Zweite Sperren der Gruppe von Sperren können von der ersten Knotenvorrichtung verworfen werden. Zum Beispiel können die zweiten Sperren der Gruppe von Sperren auf Grundlage des Ergebnisses der Prüffunktion verworfen werden, das angibt, dass die Reaktivierung der zweiten Sperren nicht erforderlich ist. Bei den ersten Sperren und den zweiten Sperren handelt es sich um unterschiedliche Sperren der Gruppe von Sperren. In einigen Implementierungen kann das Verwerfen der zweiten Sperren darin bestehen, dass bestimmt wird, dass ein Sperren-Verlust-Callback-Thread die jeweiligen Sperren der ersten Sperren nicht verwendet und dass der jeweilige mit einem Thread assoziierte Cache zur Invalidierung zur Verfügung steht. Alternativ oder zusätzlich kann das Verwerfen der zweiten Sperren darin bestehen, zu bestimmen, dass kein Cache zu invalidieren ist.
  • 7 zeigt ein Flussdiagramm eines beispielhaften, nicht einschränkenden, computerimplementierten Verfahrens 700, das eine erste Gruppe von Sperren reaktiviert und eine zweite Gruppe von Sperren nach einem Gruppenwechsel gemäß einer oder mehreren hierin beschriebenen Ausführungsformen nicht reaktiviert.
  • Das computerimplementierte Verfahren 700 beginnt bei 702, wenn eine Knotenvorrichtung eines Clusters von Knotenvorrichtungen, die für den Betrieb als verteiltes Dateisystem konfiguriert ist, das Auftreten eines Gruppenwechsels zwischen einem Cluster von Knotenvorrichtungen feststellt. Bei oder nach der Bestimmung des Auftretens des Gruppenwechsels führt die erste Knotenvorrichtung bei 704 eine Prüffunktion aus. Das Ausführen der Prüffunktion kann das Ausführen lokaler Funktionen unter Umgehung eines Koordinatorknotens umfassen, der in dem Cluster von Knotenvorrichtungen enthalten ist.
  • Bei 706 wird als Ergebnis der Prüffunktion ein Wert aus einer Gruppe von Werten empfangen. Die Prüffunktion kann einen von drei Werten zurückgeben. Beispielsweise kann ein erster Wert eine erste Information liefern, die angibt, dass es keinen Cache zu invalidieren gibt. Ein zweiter Wert kann eine zweite Indikation liefern, die angibt, dass Cache zu invalidieren ist, aber der IIcb Thread die Sperre nicht benötigt. Ein dritter Wert kann eine dritte Indikation liefern, die angibt, dass ein Cache zu invalidieren ist und der Ilcb-Thread die Sperre benötigt. Es wird darauf hingewiesen, dass, obwohl hier von einem ersten Wert, einem zweiten Wert, einem dritten Wert, einer ersten Information, einer zweiten Information und einer dritten Information usw. die Rede ist, dies dazu dient, die Werte und/oder Informationen voneinander zu unterscheiden, und nicht als Indikation für eine bestimmte Reihenfolge der Werte und/oder Informationen gedacht ist.
  • Basierend darauf, dass der Wert der erste Wert oder der zweite Wert ist, werden eine oder mehrere Sperren, die mit dem ersten Wert oder dem zweiten Wert assoziiert sind, nicht reaktiviert, wie bei 708 angegeben. Des Weiteren, basierend darauf, dass der Wert der dritte Wert ist, reaktiviert die erste Knotenvorrichtung eine oder mehrere Sperren, die mit dem dritten Wert assoziiert sind, bei 710. Ein zweiter Satz von Sperren der jeweiligen Sperren, der sich von dem ersten Satz von Sperren unterscheidet, wird auf Grundlage eines Ergebnisses der Prüffunktion nicht reaktiviert.
  • 8 zeigt eine beispielhafte, nicht einschränkende Knotenvorrichtung 800 zur Verwaltung von Sperren-Ressourcen in verteilten Dateisystemen gemäß einer oder mehreren hierin beschriebenen Ausführungsformen. Die Knotenvorrichtung 800 kann eine oder mehrere der Komponenten und/oder Funktionen der Computervorrichtungen von 1 und/oder der computerimplementierten Verfahren umfassen und umgekehrt.
  • Aspekte der in dieser Offenbarung erläuterten Computervorrichtungen (beispielsweise die Knotenvorrichtung 800 und dergleichen), Systeme, Vorrichtungen und/oder Verfahren können maschinenausführbare Komponente(n) darstellen, die in einer oder mehreren Maschinen verkörpert sind (beispielsweise verkörpert in einem oder mehreren computerlesbaren Medien (oder Medien), die mit einer oder mehreren Maschinen assoziiert sind). Solche Komponente(n) können, wenn sie von der/den einen oder mehreren Maschine(n) (beispielsweise Computer(n), Computervorrichtung(en), virtuelle Maschine(n) und so weiter) ausgeführt werden, die Maschine(n) veranlassen, die beschriebenen Operationen durchzuführen.
  • In verschiedenen Ausführungsformen kann die Knotenvorrichtung 800 jede Art von Komponente, Maschine, Vorrichtung, Einrichtung, Apparat und/oder Instrument sein, die einen Prozessor umfasst und/oder zur effektiven und/oder operativen Kommunikation mit einem verdrahteten und/oder drahtlosen Netzwerk fähig ist. Komponenten, Maschinen, Geräte, Einrichtungen und/oder Instrumente, die die Knotenvorrichtung 800 umfassen können, können Tablet-Computervorrichtungen, Handheld-Geräte, Computermaschinen und/oder Datenbanken der Serverklasse, Laptop-Computer, Notebook-Computer, Desktop-Computer, Mobiltelefone, Smart-Phones, Verbrauchervorrichtungen und/oder -instrumente, industrielle und/oder kommerzielle Geräte, Handheld-Geräte, digitale Assistenten, multimediale internetfähige Telefone, Multimedia-Player und dergleichen umfassen.
  • Die Knotenvorrichtung 800 kann eine Analysekomponente 802, eine Prüfkomponente 804, eine Sperren-Koordinator-Manager-Komponente 806, eine Sender-Empfänger-Komponente 808, wenigstens einen Speicher 810, wenigstens einen Prozessor 812 und wenigstens einen Datenspeicher 814 umfassen. Die Analysekomponente 802 kann bestimmen, ob ein Gruppenwechsel zwischen zwei oder mehreren Knoten eines verteilten Dateisystems stattgefunden hat (oder stattfindet). Zum Beispiel kann die Analysekomponente 802 die Beseitigung einer oder mehrerer vorhandener Knotenvorrichtungen aus dem Cluster von Knotenvorrichtungen und/oder das Hinzufügen einer oder mehrerer neuer Knotenvorrichtungen zum Cluster von Knotenvorrichtungen bestimmen.
  • Die Prüfkomponente 804 kann so konfiguriert sein, dass sie eine Prüffunktion ausführt (oder deren Ausführung durch eine andere Komponente implementiert). Bei der Prüffunktion kann es sich um Standortfunktionen handeln, die schneller sind als eine Nachricht pro Sperre, die üblicherweise an den Koordinatorknoten gesendet wird, um die Sperre zu reaktivieren. Die Prüffunktion gibt an, ob eine Invalidierung des Cache erforderlich ist. Wenn etwas ungültig gemacht werden muss, wird eine zweite Funktion (der so genannte Lock Loss Callback oder IIcb) aufgerufen, um den Cache zu invalidieren. Während der Prüffunktion hält der Thread, der die Prüfung durchführt, nicht die Sperre, die freigegeben werden soll. Im Gegensatz dazu hält der Thread während des IIcb die Sperre. Das Halten der Sperre während des IIcb ist nicht akzeptabel, wenn der Cache während der fehlgeschlagenen Reaktivierung der Sperre invalidiert wird, da der Cache zerstört werden sollte, bevor ein Thread die Sperre erwirbt.
  • Dementsprechend kann die von der Prüfkomponente 804 ausgeführte Prüffunktion, wie hierin erörtert, einen von drei möglichen Werten zurückgeben (im Vergleich zu nur zwei Werten, die mit herkömmlichen Prüffunktionen assoziiert sind). Ein erster Wert kann anzeigen, dass es keinen Cache zu invalidieren gibt. Ein zweiter Wert kann anzeigen, dass Cache zu invalidieren ist und der IIcb Thread die Sperre nicht benötigt. Ein dritter Wert kann anzeigen, dass Cache zu invalidieren ist und der LCCB-Thread die Sperre benötigt. Die Rückgabe des dritten Wertes ist selten, da die meisten Block-Caches und Inode-Caches verworfen werden können, ohne dass die Sperre zum Schutz des Caches gehalten wird. Ausnahmen umfassen Fälle, in denen Daten während des Verwerfens der Sperre auf die Festplatte gespült werden sollen oder in denen der Cache durch mehrere Sperren auf nicht triviale Weise geschützt ist.
  • Wenn oder nachdem der dritte Wert zurückgegeben wird (beispielsweise wenn Cache zu invalidieren ist und der IIcb-Thread die Sperre benötigt), kann die Sperren-Koordinator-Manager-Komponente 806 die Sperre während (oder nach) dem Gruppenwechsel reaktivieren. Um die Sperre selektiv zu reaktivieren, kann die Sperren-Koordinator-Manager-Komponente 806 alle Sperren reaktivieren, für die die Prüffunktion den dritten Wert zurückgegeben hat (Sperre für IIcb-Thread erforderlich). Des Weiteren kann die Sperren-Koordinator-Manager-Komponente 806 die Nachverfolgung des stärksten Sperrtyps (beispielsweise gemeinsam, exklusiv usw.) ermöglichen, der für jede Ressource beim Sperren-Koordinator angefragt wurde. Danach ist der Gruppenwechsel abgeschlossen.
  • Nach dem Gruppenwechsel können die Initiator-Knoten weiterhin Sperren reaktivieren, während die Operationen des Dateisystems fortgesetzt werden. Alle Sperren, die von aktiven Threads des Dateisystems angefragt werden, werden bei der Reaktivierung vorrangig behandelt. Wenn die Reaktivierung fehlschlägt, kann der Initiator der Sperre den vorherigen Rückgabewert von probe() (beispielsweise die Prüffunktion) verwenden, um zu bestimmen, ob die IIcb aufgerufen werden soll, und verwirft dann die im Cache gespeicherte Sperre. Sobald die Sperre verworfen wurde, kann sie ganz normal durch eine standardmäßige Anfrage zur Sperre angefordert werden. Sobald alle Knoten die Sperren-Aktivierung im Cache abgeschlossen haben, werden die Koordinatoren benachrichtigt, ihre Sperrtyp-Nachverfolgung zu verwerfen.
  • Der wenigstens eine Speicher 810 kann operativ mit dem wenigstens einen Prozessor 812 verbunden sein. Der wenigstens eine Speicher 810 kann ausführbare Anweisungen und/oder computerausführbare Komponenten (beispielsweise die Analysekomponente 802, die Prüfkomponente 804, die Sperren-Koordinator-Manager-Komponente 806, die Sender-Empfänger-Komponente 808 usw.) speichern, die, wenn sie von dem wenigstens einen Prozessor 812 ausgeführt werden, die Ermöglichung von Operationen (beispielsweise die Operationen, die in Bezug auf die verschiedenen hierin erörterten Verfahren und/oder Systeme besprochen werden) ermöglichen. Des Weiteren kann der wenigstens eine Prozessor 812 verwendet werden, um computerausführbare Komponenten (beispielsweise die Analysekomponente 802, die Prüfkomponente 804, die Sperren-Koordinator-Manager-Komponente 806, die Sender-Empfänger-Komponente 808 usw.) auszuführen, die in dem wenigstens einen Speicher 810 gespeichert sind.
  • Beispielsweise können in dem wenigstens einen Speicher 810 Protokolle gespeichert werden, die mit der selektiven Reaktivierung von Sperren nach einem Gruppenwechsel in verteilten Dateisystemen assoziiert sind, wie hier beschrieben. Des Weiteren kann der wenigstens eine Speicher 810 Maßnahmen zur Steuerung der Kommunikation zwischen der Knotenvorrichtung 800 und anderen Knotenvorrichtungen, einem oder mehreren Dateispeichersystemen, einem oder mehreren Vorrichtungen ermöglichen, so dass die Knotenvorrichtung 800 gespeicherte Protokolle und/oder Algorithmen verwendet, um eine verbesserte Gesamtleistung verteilter Dateisysteme, wie hierin beschrieben, zu erreichen.
  • Es sollte verstanden werden, dass die hier beschriebenen Komponenten von Datenspeichern (beispielsweise Speicher) entweder flüchtige Speicher oder nichtflüchtige Speicher sein können oder sowohl flüchtige als auch nichtflüchtige Speicher umfassen können. Als Beispiel und ohne Einschränkung kann nichtflüchtiger Speicher Festwertspeicher (ROM), programmierbares ROM (PROM), elektrisch programmierbares ROM (EPROM), elektrisch löschbares ROM (EEPROM) oder Flash-Speicher umfassen. Der flüchtige Speicher kann einen Direktzugriffsspeicher (RAM) umfassen, der als externer Cache-Speicher fungiert. RAM ist in vielen Formen erhältlich, beispielsweise als synchroner RAM (SRAM), dynamischer RAM (DRAM), synchroner DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR SDRAM), erweiterter SDRAM (ESDRAM), Synchlink DRAM (SLDRAM) und direkter Rambus RAM (DRRAM). Der Speicher der offenbarten Aspekte soll, ohne darauf beschränkt zu sein, diese und andere geeignete Speichertypen umfassen.
  • Der wenigstens eine Prozessor 812 kann die jeweilige Analyse von Informationen erleichtern, die sich auf die Verwaltung des Sperren-Koordinator-Rebalance in verteilten Dateisystemen beziehen, beispielsweise die Ermöglichung einer verzögerten Sperren-Aktivierung und einer Cache-Invalidierung während des Sperren-Koordinator-Rebalance in einem verteilten Dateisystem. Der wenigstens eine Prozessor 812 kann ein Prozessor sein, der für die Analyse und/oder Erzeugung von empfangenen Informationen bestimmt ist, ein Prozessor, der eine oder mehrere Komponenten der Knotenvorrichtung 800 steuert, und/oder ein Prozessor, der sowohl empfangene Informationen analysiert und erzeugt als auch eine oder mehrere Komponenten der Knotenvorrichtung 800 steuert.
  • Die Sender-Empfänger-Komponente 808 kann so konfiguriert sein, dass sie Daten beispielsweise an Knotenvorrichtungen, eine Prüffunktion und/oder Kommunikationsvorrichtungen sendet und/oder von diesen empfängt. Über die Sender-Empfänger-Komponente 808 kann die Knotenvorrichtung 800 gleichzeitig Daten senden und empfangen, Daten zu unterschiedlichen Zeiten senden und empfangen oder Kombinationen davon.
  • Verfahren, die in Übereinstimmung mit dem offenbarten Gegenstand implementiert werden können, werden durch Bezugnahme auf die hier bereitgestellten Flussdiagramme besser verstanden. Obwohl die Verfahren der Einfachheit halber als eine Reihe von Blöcken dargestellt und beschrieben sind, ist es zu verstehen und zu würdigen, dass die offenbarten Aspekte nicht durch die Anzahl oder Reihenfolge der Blöcke beschränkt sind, da einige Blöcke in anderer Reihenfolge und/oder im Wesentlichen gleichzeitig mit anderen Blöcken als den hier dargestellten und beschriebenen auftreten können. Außerdem können nicht alle dargestellten Blöcke erforderlich sein, um die offenbarten Verfahren zu implementieren. Die mit den Blöcken assoziierte Funktionalität kann durch Software, Hardware, eine Kombination davon oder jedes andere geeignete Mittel (beispielsweise Vorrichtung, System, Prozess, Komponente usw.) implementiert werden. Darüber hinaus sollte des Weiteren anerkannt werden, dass die offenbarten Verfahren auf einem Herstellungsgegenstand gespeichert werden können, um den Transport und die Übertragung solcher Verfahren auf verschiedene Geräte zu ermöglichen. Der Fachmann versteht und schätzt, dass die Verfahren alternativ als eine Reihe von zusammenhängenden Zuständen oder Ereignissen dargestellt werden können, beispielsweise in einem Zustandsdiagramm.
  • Wie hierin verwendet, kann der Begriff „Speichervorrichtung", „Knotenvorrichtung“, „erste Knotenvorrichtung“, „Speicher-Cluster-Knoten“, „Speichersystem“ und dergleichen (beispielsweise Knotenvorrichtung) beispielsweise private oder öffentliche Cloud-Computing-Systeme zum Speichern von Daten sowie Systeme zum Speichern von Daten umfassen, die eine virtuelle Infrastruktur umfassen, und solche, die keine virtuelle Infrastruktur umfassen.
  • Der Begriff „I/O-Anfrage“ (oder einfach „I/O“) kann sich auf eine Anfrage zum Lesen und/oder Schreiben von Daten beziehen.
  • Der hier verwendete Begriff „Cloud“ kann sich auf einen Cluster von Knoten (beispielsweise eine Reihe von Netzwerkservern) beziehen, beispielsweise innerhalb eines verteilten Objektspeichersystems, die kommunikativ und/oder operativ miteinander gekoppelt sind und eine Reihe von Anwendungen hosten, die für die Bearbeitung von Benutzeranfragen verwendet werden. Im Allgemeinen können die Cloud-Computing-Ressourcen mit den Benutzervorrichtungen über fast jedes drahtgebundene und/oder drahtlose Kommunikationsnetz kommunizieren, um den Zugriff auf Dienste zu ermöglichen, die in der Cloud basieren und nicht lokal (beispielsweise auf der Benutzervorrichtung) gespeichert sind. Eine typische Cloud-Computing-Umgebung kann mehrere zusammengefasste Schichten umfassen, die miteinander interagieren, um Ressourcen für Endnutzer bereitzustellen.
  • Des Weiteren kann sich der Begriff „Speichervorrichtung“ auf jede Vorrichtung mit nichtflüchtigem Speicher (NVM) beziehen, einschließlich Festplattenlaufwerke (HDDs), Flash-Geräte (beispielsweise NAND-Flash-Geräte) und NVM-Geräte der nächsten Generation, auf die lokal und/oder aus der Ferne (beispielsweise über ein Storage Attached Network (SAN)) zugegriffen werden kann. In einigen Ausführungsformen kann sich der Begriff „Speichervorrichtung“ auch auf eine Speicheranordnung beziehen, die ein oder mehrere Speichervorrichtungen umfasst. In verschiedenen Ausführungsformen bezieht sich der Begriff „Objekt“ auf eine beliebig große Sammlung von Benutzerdaten, die auf einem oder mehreren Speichervorrichtungen gespeichert werden können und auf die über E/A-Anfragen zugegriffen werden kann.
  • Des Weiteren kann ein Speicher-Cluster ein oder mehrere Speichervorrichtungen umfassen. Beispielsweise kann ein verteiltes Speichersystem einen oder mehrere Clients umfassen, die über ein Netzwerk mit einem Speicher-Cluster kommunizieren. Das Netzwerk kann verschiedene Arten von Kommunikationsnetzwerken oder Kombinationen davon umfassen, einschließlich, aber nicht beschränkt auf Netzwerke, die Protokolle wie Ethernet, Internet Small Computer System Interface (iSCSI), Fibre Channel (FC) und/oder drahtlose Protokolle verwenden. Die Clients können Benutzeranwendungen, Anwendungsserver, Datenverwaltungsprogramme und/oder Prüfsysteme umfassen.
  • Wie hier verwendet, kann sich eine „Entität“, ein „Client“, ein „Benutzer“ und/oder eine „Anwendung“ auf jedes System oder jede Person beziehen, die I/O-Anfragen an ein Speichersystem senden kann. Eine Entität kann zum Beispiel ein oder mehrere Computer, das Internet, ein oder mehrere Systeme, ein oder mehrere kommerzielle Unternehmen, ein oder mehrere Computer, ein oder mehrere Computerprogramme, eine oder mehrere Maschinen, Maschinen, ein oder mehrere Akteure, ein oder mehrere Benutzer, ein oder mehrere Kunden, ein oder mehrere Menschen und so weiter sein, im Folgenden je nach Kontext als Entität oder Entitäten bezeichnet.
  • Um einen Kontext für die verschiedenen Aspekte des offenbarten Gegenstandes zu schaffen, sollen 9 sowie die folgende Diskussion eine kurze, allgemeine Beschreibung einer geeigneten Umgebung liefern, in der die verschiedenen Aspekte des offenbarten Gegenstandes implementiert werden können.
  • Unter Bezugnahme auf 9 umfasst eine Beispielumgebung 910 zur Implementierung verschiedener Aspekte des oben genannten Gegenstands einen Computer 912. Der Computer 912 umfasst eine Prozessoreinheit 914, einen Systemspeicher 916 und einen Systembus 918. Der Systembus 918 koppelt Systemkomponenten, einschließlich, aber nicht beschränkt auf den Systemspeicher 916, mit der Prozessoreinheit 914. Bei der Prozessoreinheit 914 kann es sich um einen beliebigen der verschiedenen verfügbaren Prozessoren handeln. Multi-Core-Mikroprozessoren und andere Multiprozessorarchitekturen können ebenfalls als Prozessoreinheit 914 verwendet werden.
  • Der Systembus 918 kann eine beliebige von mehreren Arten von Busstrukturen sein, einschließlich des Speicherbusses oder Speichercontrollers, eines Peripheriebusses oder externen Busses und/oder eines lokalen Busses, der eine beliebige Vielfalt verfügbarer Busarchitekturen umfasst, aber nicht darauf beschränkt ist: 8-Bit-Bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), und Small Computer Systems Interface (SCSI).
  • Der Systemspeicher 916 umfasst einen flüchtigen Speicher 920 und einen nichtflüchtigen Speicher 922. Das grundlegende Eingabe-/Ausgabesystem (BIOS), das die grundlegenden Routinen zur Übertragung von Informationen zwischen Elementen innerhalb des Computers 912, beispielsweise beim Hochfahren, enthält, ist im nichtflüchtigen Speicher 922 gespeichert. Zur Veranschaulichung und ohne Einschränkung kann der nichtflüchtige Speicher 922 einen Nur-Lese-Speicher (ROM), einen programmierbaren ROM (PROM), einen elektrisch programmierbaren ROM (EPROM), einen elektrisch löschbaren PROM (EEPROM) oder einen Flash-Speicher umfassen. Der flüchtige Speicher 920 umfasst einen Direktzugriffsspeicher (RAM), der als externer Cache-Speicher fungiert. Zur Veranschaulichung und ohne Einschränkung ist RAM in vielen Formen erhältlich, beispielsweise als synchroner RAM (SRAM), dynamischer RAM (DRAM), synchroner DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR SDRAM), erweiterter SDRAM (ESDRAM), Synchlink DRAM (SLDRAM) und direkter Rambus-RAM (DRRAM).
  • Der Computer 912 umfasst auch herausnehmbare/nicht herausnehmbare, flüchtige/nicht flüchtige Computerspeichermedien. 9 zeigt zum Beispiel einen Diskspeicher 924. Der Diskspeicher 924 umfasst Geräte wie ein Magnetplattenlaufwerk, ein Diskettenlaufwerk, ein Bandlaufwerk, ein Jaz-Laufwerk, ein Zip-Laufwerk, ein LS-100-Laufwerk, eine Flash-Speicherkarte oder einen Memory-Stick, ist aber nicht darauf beschränkt. Darüber hinaus kann der Diskspeicher 924 separat oder in Kombination mit anderen Speichermedien Speichermedien umfassen, einschließlich, aber nicht beschränkt auf ein optisches Plattenlaufwerk wie ein Compact-Disk-ROM-Gerät (CD-ROM), ein beschreibbares CD-Laufwerk (CD-R-Laufwerk), ein wiederbeschreibbares CD-Laufwerk (CD-RW-Laufwerk) oder ein Digital Versatile Disk ROM-Laufwerk (DVD-ROM). Zur Ermöglichung des Anschlusses des Diskspeichers 924 an den Systembus 918 wird typischerweise eine abnehmbare oder nicht abnehmbare Schnittstelle wie die Schnittstelle 926 verwendet.
  • Es ist zu verstehen, dass 9 Software beschreibt, die als Vermittler zwischen den Benutzern und den grundlegenden Computerressourcen fungiert, die in der geeigneten Betriebsumgebung 910 beschrieben sind. Eine solche Software umfasst ein Betriebssystem 928. Das Betriebssystem 928, das auf dem Diskspeicher 924 gespeichert sein kann, steuert und weist die Ressourcen des Computers 912 zu. Die Systemanwendungen 930 nutzen die Vorteile der Verwaltung der Ressourcen durch das Betriebssystem 928 über Programmmodule 932 und Programmdaten 934, die entweder im Systemspeicher 916 oder auf dem Diskspeicher 924 gespeichert sind. Es ist zu verstehen, dass eine oder mehrere Ausführungsformen der vorliegenden Offenbarung mit verschiedenen Betriebssystemen oder Kombinationen von Betriebssystemen implementiert werden können.
  • Ein Benutzer gibt Befehle oder Informationen über ein oder mehrere Eingabevorrichtungen 936 in den Computer 912 ein. Eingabevorrichtungen 936 umfassen unter anderem eine Zeigevorrichtung wie eine Maus, einen Trackball, einen Stift, ein Touchpad, eine Tastatur, ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel, einen Scanner, eine TV-Tunerkarte, eine Digitalkamera, eine digitale Videokamera, eine Webkamera und dergleichen. Diese und andere Eingabevorrichtungen werden über den Systembus 918 über Schnittstellenport(s) 938 mit der Prozessoreinheit 914 verbunden. Schnittstellenport(s) 938 umfassen beispielsweise einen seriellen Port, einen parallelen Port, einen Game-Port und einen Universal Serial Bus (USB). Die Ausgabevorrichtung(en) 940 verwenden einige der gleichen Anschlussarten wie das/die Eingabevorrichtung(en) 936. So kann beispielsweise ein USB-Anschluss zur Eingabe in den Computer 912 und zur Ausgabe von Informationen vom Computer 912 an eine Ausgabevorrichtung 940 verwendet werden.
  • Ausgabeadapter 942 werden bereitgestellt, um zu verdeutlichen, dass es einige Ausgabevorrichtungen 940 wie Monitore, Lautsprecher und Drucker sowie andere Ausgabevorrichtungen 940 gibt, die spezielle Adapter erfordern. Zu den Ausgabeadaptern 942 gehören, zur Veranschaulichung und ohne Einschränkung, Video- und Soundkarten, die eine Verbindung zwischen der Ausgabevorrichtung 940 und dem Systembus 918 herstellen. Es sollte beachtet werden, dass andere Geräte und/oder Systeme von Vorrichtungen sowohl Eingabe- als auch Ausgabefähigkeiten bieten, wie beispielsweise entfernte(r) Computer 944.
  • Der Computer 912 kann in einer vernetzten Umgebung unter Verwendung logischer Verbindungen zu einem oder mehreren entfernten Computern, wie dem/den entfernten Computer(n) 944, betrieben werden. Der (die) entfernte(n) Computer 944 kann (können) ein Personal Computer, ein Server, ein Router, ein Netzwerk-PC, eine Workstation, eine mikroprozessorbasiertes Vorrichtung, eine Peer-Vorrichtung oder ein anderer gemeinsamer Netzwerkknoten und dergleichen sein und umfasst (umfassen) typischerweise viele oder alle der Elemente, die in Bezug auf den Computer 912 beschrieben sind. Der Kürze halber wird nur ein Speichermedium 946 mit entferntem(n) Computer(n) 944 dargestellt. Der (die) entfernte(n) Computer 944 ist (sind) über eine Netzwerkschnittstelle 948 logisch mit dem Computer 912 verbunden und dann über eine Kommunikationsverbindung 950 physisch verbunden. Die Netzwerkschnittstelle 948 umfasst Kommunikationsnetzwerke wie Local-Area-Netze (LAN) und Wide-Area-Netze (WAN). LAN-Technologien umfassen Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 802.3, Token Ring/IEEE 802.5 und dergleichen. Zu den WAN-Technologien gehören unter anderem Punktzu-Punkt-Verbindungen, Leitungsvermittlungsnetze wie Integrated Services Digital Networks (ISDN) und deren Varianten, Paketvermittlungsnetze und Digital Subscriber Lines (DSL).
  • Kommunikationsverbindung(en) 950 bezieht sich auf die Hardware/Software, die verwendet wird, um die Netzwerkschnittstelle 948 mit dem Systembus 918 zu verbinden. Während die Kommunikationsverbindung 950 zur Veranschaulichung innerhalb des Computers 912 gezeigt wird, kann sie auch außerhalb des Computers 912 liegen. Die für die Verbindung mit der Netzwerkschnittstelle 948 erforderliche Hardware/Software umfasst, nur beispielhaft, interne und externe Technologien wie Modems, einschließlich herkömmlicher Telefonmodems, Kabelmodems und DSL-Modems, ISDN-Adapter und Ethernet-Karten.
  • 10 ist ein schematisches Blockdiagramm einer Beispiel-Computerumgebung 1000, mit der der offenbare Gegenstand interagieren kann. Die Beispiel-Rechenumgebung 1000 umfasst einen oder mehrere Client(s) 1002. Bei dem/den Client(s) 1002 kann es sich um Hardware und/oder Software (beispielsweise Threads, Prozesse, Computervorrichtungen) handeln. Die Beispiel-Rechenumgebung 1000 umfasst auch einen oder mehrere Server 1004. Bei dem/den Server(n) 1004 kann es sich ebenfalls um Hardware und/oder Software handeln (beispielsweise Threads, Prozesse, Computervorrichtungen). Die Server 1004 können Threads beherbergen, um Transformationen durchzuführen, indem sie beispielsweise eine oder mehrere hier beschriebene Ausführungsformen verwenden. Eine mögliche Kommunikation zwischen einem Client 1002 und den Servern 1004 kann in Form eines Datenpakets erfolgen, das zur Übertragung zwischen zwei oder mehreren Computerprozessen geeignet ist. Die Beispiel-Rechenumgebung 1000 umfasst einen Kommunikationsrahmen 1006, der zur Ermöglichung der Kommunikation zwischen dem/den Client(s) 1002 und dem/den Server(n) 1004 eingesetzt werden kann. Der/die Client(s) 1002 ist/sind operativ mit einem oder mehreren Client-Datenspeicher(n) 1008 verbunden, der/die dazu verwendet werden kann/können, Informationen lokal auf dem/den Client(s) 1002 zu speichern. In ähnlicher Weise sind der oder die Server 1004 mit einem oder mehreren Server-Datenspeicher(n) 1010 verbunden, die zum Speichern von Informationen auf den Servern 1004 verwendet werden können.
  • Wenn in dieser Beschreibung von „einer Ausführungsform“ oder „einer Ausführungsform“ die Rede ist, bedeutet dies, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die im Zusammenhang mit der Ausführungsform beschrieben wird, in wenigstens einer Ausführungsform enthalten ist. Daher beziehen sich die Ausdrücke „in einer Ausführungsform“, „in einem Aspekt“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise alle auf dieselbe Ausführungsform. Darüber hinaus können die einzelnen Merkmale, Strukturen oder Eigenschaften in jeder geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • Wie in dieser Offenbarung verwendet, sollen sich die Begriffe „Komponente“, „System“, „Schnittstelle“, „Manager“ und dergleichen in einigen Ausführungsformen auf eine computerbezogene Entität oder eine Entität in Bezug auf einw Betriebsvorrichtung mit einer oder mehreren spezifischen Funktionalitäten beziehen oder diese umfassen, wobei die Entität entweder Hardware, eine Kombination aus Hardware und Software, Software oder Software in Ausführung und/oder Firmware sein kann. Eine Komponente kann beispielsweise ein auf einem Prozessor laufender Prozess, ein Prozessor, ein Objekt, ein ausführbares Objekt, ein Thread der Ausführung, computerausführbare Anweisungen, ein Programm und/oder ein Computer sein, ist aber nicht darauf beschränkt. Zur Veranschaulichung und ohne Einschränkung kann sowohl eine Anwendung, die auf einem Server läuft, als auch der Server eine Komponente sein
  • Eine oder mehrere Komponenten können sich innerhalb eines Prozesses und/oder eines Threads der Ausführung befinden, und eine Komponente kann auf einem Computer lokalisiert und/oder auf zwei oder mehr Computer verteilt sein. Darüber hinaus können diese Komponenten von verschiedenen computerlesbaren Medien ausgeführt werden, die verschiedene Datenstrukturen aufweisen, die darauf gespeichert sind. Die Komponenten können über lokale und/oder entfernte Prozesse kommunizieren, beispielsweise in Übereinstimmung mit einem Signal, das ein oder mehrere Datenpakete aufweist (beispielsweise Daten von einer Komponente, die mit einer anderen Komponente in einem lokalen System, einem verteilten System und/oder über ein Netzwerk wie das Internet mit anderen Systemen über das Signal interagiert). Ein weiteres Beispiel: Eine Komponente kann ein Gerät mit einer bestimmten Funktionalität sein, die durch mechanische Teile bereitgestellt wird, die durch elektrische oder elektronische Schaltkreise betrieben werden, und die durch eine Softwareanwendung oder Firmwareanwendung betrieben wird, die von einem oder mehreren Prozessoren ausgeführt wird, wobei der Prozessor innerhalb oder außerhalb des Geräts sein kann und wenigstens einen Teil der Software- oder Firmwareanwendung ausführen kann. Ein weiteres Beispiel: Eine Komponente kann ein Gerät sein, das eine bestimmte Funktionalität durch elektronische Komponenten ohne mechanische Teile bereitstellt, wobei die elektronischen Komponenten einen Prozessor enthalten können, um Software oder Firmware auszuführen, die wenigstens teilweise die Funktionalität der elektronischen Komponenten bereitstellt. In einem Aspekt kann eine Komponente eine elektronische Komponente über eine virtuelle Maschine emulieren, beispielsweise innerhalb eines Cloud-Computing-Systems. Obwohl verschiedene Komponenten als separate Komponenten dargestellt wurden, können mehrere Komponenten als eine einzige Komponente implementiert werden, oder eine einzelne Komponente kann als mehrere Komponenten implementiert werden, ohne dass von den Ausführungsformen abgewichen wird.
  • Darüber hinaus werden die Worte „Beispiel“ und „exemplarisch“ hier so verwendet, dass sie als Beispiel oder Illustration dienen. Jede hier als „Beispiel“ oder „exemplarisch“ beschriebene Ausführungsform oder Konstruktion ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Ausführungsformen oder Konstruktionen zu verstehen. Die Verwendung des Wortes „Beispiel“ oder „exemplarisch“ soll vielmehr dazu dienen, Konzepte in einer konkreten Weise darzustellen. Wie in dieser Anmeldung verwendet, soll der Begriff „oder“ eher ein einschließendes „oder“ bedeuten als ein ausschließendes „oder“. Das heißt, sofern nicht anders angegeben oder aus dem Kontext ersichtlich, ist mit „X einsetzt A oder B“ jede der natürlichen, umfassenden Permutationen gemeint. Das heißt, wenn X A einsetzt, X B einsetzt oder X sowohl A als auch B einsetzt, dann ist „X setzt A oder B ein“ in jedem der vorgenannten Fälle erfüllt. Darüber hinaus sollten die Artikel „ein“ und „eine“, wie sie in dieser Anmeldung und den beigefügten Ansprüchen verwendet werden, im Allgemeinen so ausgelegt werden, dass sie „ein(e) oder mehrere“ bedeuten, sofern nicht anders angegeben oder aus dem Kontext klar hervorgeht, dass sie auf eine Singularform bezogen sind.
  • Inferenz kann sich auch auf Techniken beziehen, die eingesetzt werden, um Ereignisse auf höherer Ebene aus einem Satz von Ereignissen und/oder Daten zusammenzusetzen. Eine solche Schlussfolgerung führt zur Konstruktion neuer Ereignisse oder Aktionen aus einer Menge beobachteter Ereignisse und/oder gespeicherter Ereignisdaten, unabhängig davon, ob die Ereignisse in enger zeitlicher Nähe zueinander stehen und ob die Ereignisse und Daten aus einer oder mehreren Ereignis- und Datenquellen stammen. Verschiedene Klassifizierungsschemata und/oder -systeme (beispielsweise Support-Vektor-Maschinen, neuronale Netze, Expertensysteme, Bayes'sche Glaubensnetze, Fuzzy-Logik und Datenfusionsmaschinen) können in Verbindung mit der Durchführung automatischer und/oder abgeleiteter Aktionen in Verbindung mit dem offenbarten Gegenstand eingesetzt werden.
  • Darüber hinaus können die verschiedenen Ausführungsformen als Verfahren, Vorrichtung oder Herstellungsgegenstand unter Verwendung von Standardprogrammier- und/oder -techniken implementiert werden, um Software, Firmware, Hardware oder eine beliebige Kombination davon zu erzeugen, um einen Computer zur Implementierung des offenbarten Gegenstands zu steuern. Der Begriff „Erzeugnis“, wie er hier verwendet wird, soll ein Computerprogramm umfassen, das von einem beliebigen computerlesbaren Gerät, maschinenlesbaren Gerät, computerlesbaren Träger, computerlesbaren Medien, maschinenlesbaren Medien, computerlesbaren (oder maschinenlesbaren) Speicher-/Kommunikationsmedien zugänglich ist. Computerlesbare Speichermedien können beispielsweise Folgendes umfassen, sind aber nicht darauf beschränkt: Radonzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher oder eine andere Speichertechnologie, Solid-State-Laufwerk (SSD) oder eine andere Solid-State-Speichertechnologie, eine magnetische Speichereinrichtung, beispielsweise, Festplatte; Diskette; Magnetstreifen; eine optische Platte (beispielsweise Compact Disk (CD), eine digitale Videodisk (DVD), eine Blu-ray Disc™ (BD)); eine Smart Card; eine Flash-Speichervorrichtung (beispielsweise Karte, Stick, Schlüssellaufwerk); und/oder ein virtuelles Gerät, das eine Speichervorrichtung und/oder eines der oben genannten computerlesbaren Medien emuliert. Natürlich werden Fachleute erkennen, dass viele Modifikationen an dieser Konfiguration vorgenommen werden können, ohne dass der Umfang oder der Geist der verschiedenen Ausführungsformen verlassen wird.
  • Bei den offenbarten Ausführungsformen und/oder Aspekten sollte weder davon ausgegangen werden, dass sie andere offenbare Ausführungsformen und/oder Aspekte ausschließen, noch sollte davon ausgegangen werden, dass ein Gerät und/oder eine Struktur ausschließlich das in einer oder mehreren beispielhaften Ausführungsformen dieser Offenbarung dargestellte Element enthält, es sei denn, aus dem Kontext ergibt sich eindeutig das Gegenteil. Der Umfang der Offenbarung soll im Allgemeinen Modifikationen der dargestellten Ausführungsformen mit Ergänzungen aus anderen dargestellten Ausführungsformen umfassen, wo dies geeignet ist, Interoperabilität unter oder zwischen den dargestellten Ausführungsformen, wo dies geeignet ist, sowie Hinzufügung eines Bestandteils (von Bestandteilen) aus einer Ausführungsform (von Bestandteilen) innerhalb einer anderen oder Subtraktion eines Bestandteils (von Bestandteilen) aus einer beliebigen dargestellten Ausführungsform, wo dies geeignet ist, Aggregation von Elementen (oder Ausführungsformen) in einer einzigen Vorrichtung, die eine aggregierte Funktionalität erreicht, wo dies geeignet ist, oder Verteilung der Funktionalität einer einzigen Vorrichtung auf mehrere Vorrichtungen, wo dies geeignet ist. Darüber hinaus wird der Einbau, die Kombination oder die Modifikation der hier dargestellten oder wie oben beschrieben modifizierten Vorrichtungen oder Elemente (beispielsweise Komponenten) mit Vorrichtungen, Strukturen oder Untergruppen davon, die hier nicht explizit dargestellt sind, die aber auf dem Gebiet der Technik bekannt sind oder für einen Fachmann durch den hier offenbarten Zusammenhang offensichtlich sind, ebenfalls als im Rahmen der vorliegenden Offenbarung liegend betrachtet.
  • Die obige Beschreibung der dargestellten Ausführungsformen der vorliegenden Offenbarung, einschließlich dessen, was in der Zusammenfassung beschrieben ist, soll nicht erschöpfend sein oder die offenbarten Ausführungsformen auf die genauen offenbarten Formen beschränken. Während spezifische Ausführungsformen und Beispiele hier zur Veranschaulichung beschrieben werden, sind verschiedene Modifikationen möglich, die innerhalb des Umfangs solcher Ausführungsformen und Beispiele betrachtet werden, wie die Fachleute auf dem entsprechenden Gebiet erkennen können.
  • Während der Gegenstand hier in Verbindung mit verschiedenen Ausführungsformen und entsprechenden Figuren beschrieben wurde, ist es zu verstehen, dass andere ähnliche Ausführungsformen verwendet oder Änderungen und Ergänzungen an den beschriebenen Ausführungsformen vorgenommen werden können, um die gleiche, ähnliche, alternative oder Ersatzfunktion des offenbarten Gegenstandes auszuführen, ohne davon abzuweichen. Daher sollte der offenbare Gegenstand nicht auf eine einzelne hierin beschriebene Ausführungsform beschränkt sein, sondern in seiner Breite und seinem Umfang in Übereinstimmung mit den unten angefügten Ansprüchen ausgelegt werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 17/124694 [0001]

Claims (20)

  1. System, umfassend: einen Prozessor; und einen Speicher, der ausführbare Anweisungen speichert, die, wenn sie von dem Prozessor ausgeführt werden, die Durchführung von Operationen erleichtern, umfassend: Bestimmung des Auftretens eines Gruppenwechsels zwischen einem Cluster von Knotenvorrichtungen; Ausführen einer Prüffunktion auf Grundlage des Auftretens des Gruppenwechsels; und Reaktivieren erster Sperren einer Gruppe von Sperren auf Grundlage eines Ergebnisses der Prüffunktion, das die Reaktivierung der ersten Sperren anzeigt, wobei zweite Sperren der Gruppe von Sperren, die nicht die ersten Sperren sind, auf Grundlage des Ergebnisses der Prüffunktion nicht reaktiviert werden.
  2. System nach Anspruch 1, wobei die Reaktivierung der ersten Sperren das Bestimmen umfasst, dass ein Sperren-Verlust-Callback-Thread entsprechende Sperren der ersten Sperren verwendet und dass ein entsprechender Cache, der mit einem Thread assoziiert ist, zur Invalidierung verfügbar ist.
  3. System nach Anspruch 1, wobei die Operationen des Weiteren umfassen: vor der Reaktivierung der ersten Sperren das Empfangen eines Satzes von Werten als Antwort auf die Prüffunktion, wobei ein erster Wert des Satzes von Werten anzeigt, dass kein Cache zu invalidieren ist, wobei ein zweiter Wert des Satzes von Werten anzeigt, dass ein Sperren-Verlust-Callback-Thread eine Sperren nicht verwendet und der jeweilige mit einem Thread verbundene Cache zur Invalidierung verfügbar ist, und wobei ein dritter Wert des Satzes von Werten anzeigt, dass der Sperren-Verlust-Callback-Thread die Sperre verwendet und der jeweilige mit dem Thread verbundene Cache zur Invalidierung verfügbar ist; Bestimmen, dass die zweiten Sperren mit dem ersten Wert und dem zweiten Wert assoziiert sind; und Bestimmen, dass die ersten Sperren mit dem dritten Wert assoziiert sind.
  4. System nach Anspruch 1, wobei das Bestimmen des Auftretens des Gruppenwechsels umfasst: Bestimmen einer Beseitigung einer bestehenden Knotenvorrichtung aus dem Cluster von Knotenvorrichtungen; Bestimmen eines Hinzufügens einer neuen Knotenvorrichtung zu dem Cluster von Knotenvorrichtungen; oder Bestimmen sowohl der Beseitigung der bestehenden Knotenvorrichtung als auch des Hinzufügens der neuen Knotenvorrichtung.
  5. System nach Anspruch 1, wobei inkompatible Sperren erzeugt werden, wenn zwei Threads exklusive Sperren auf derselben Ressource halten.
  6. System nach Anspruch 1, wobei das Ausführen der Prüffunktion das Ausführen lokaler Funktionen unter Umgehung eines in dem Cluster von Knotenvorrichtungen enthaltenen Koordinatorknotens umfasst.
  7. System nach Anspruch 1, wobei die Operationen des Weiteren Folgendes umfassen: Verwerfen von Block-Cache und Inode-Cache, die mit den zweiten Sperren assoziiert sind.
  8. System nach Anspruch 1, wobei eine Sperre der Gruppe von Sperren mit einem Koordinatorknoten für Sperren zwischen den Cluster Knotenvorrichtungen assoziiert ist, und wobei die Operationen des Weiteren Folgendes umfassen Ermöglichen der Nachverfolgung eines definierten Sperrtyps, der für jede Ressource von dem Koordinatorknoten für Sperren angefragt wird.
  9. System nach Anspruch 1, wobei der Cluster von Knotenvorrichtungen als verteiltes Dateisystem arbeitet.
  10. Verfahren, umfassend: Feststellen, durch eine erste Knotenvorrichtung, die einen Prozessor und einen Teil einer Gruppe von Knotenvorrichtungen umfasst, dass ein Gruppenwechsel an der Gruppe von Knotenvorrichtungen aufgetreten ist; Reaktivierung von ersten Sperren einer Gruppe von Sperren durch die erste Knotenvorrichtung auf Grundlage eines Ergebnisses einer Prüffunktion, die die Reaktivierung der ersten Sperren anzeigt, wobei die Prüffunktion auf Grundlage des Feststellens ausgeführt wird; und Verwerfen von zweiten Sperren der Gruppe von Sperren durch die erste Knotenvorrichtung auf Grundlage des Ergebnisses der Prüffunktion, die angibt, dass die Reaktivierung der zweiten Sperren nicht erforderlich ist, wobei die ersten Sperren und die zweiten Sperren unterschiedliche Sperren der Gruppe von Sperren sind.
  11. Verfahren nach Anspruch 10, wobei die Reaktivierung der ersten Sperren das Bestimmen umfasst, dass ein Sperren-Verlust-Callback-Thread jeweilige Sperren der ersten Sperren verwendet und dass der jeweilige mit einem Thread assoziierte Cache zur Invalidierung verfügbar ist.
  12. Verfahren nach Anspruch 10, wobei das Verwerfen der zweiten Sperren das Bestimmen umfasst, dass ein Sperren-Verlust-Callback-Thread die jeweiligen Sperren der ersten Sperren nicht verwendet und dass der jeweilige mit einem Thread assoziierte Cache zur Invalidierung verfügbar ist.
  13. Verfahren nach Anspruch 10, wobei das Verwerfen der zweiten Sperren das Bestimmen umfasst, dass kein Cache invalidiert werden soll.
  14. Verfahren nach Anspruch 10, des Weiteren umfassend: vor der Reaktivierung das Ausführen der Prüffunktion, die das Umgehen eines Koordinatorknotens umfasst, der in der Gruppe der Knotenvorrichtungen enthalten ist, basierend auf der Ausführung einer oder mehrerer lokaler Funktionen.
  15. Verfahren nach Anspruch 10, wobei die Gruppe von Sperren exklusive Sperren in einem verteilten Dateisystem sind.
  16. Verfahren nach Anspruch 10, wobei der Gruppenwechsel wenigstens einen der folgenden Schritte umfasst: Hinzufügen eines zusätzlichen Knotens zu der Gruppe von Knotenvorrichtungen oder Beseitigung eines Knotens aus der Gruppe von Knotenvorrichtungen.
  17. Nicht-transitorisches, maschinenlesbares Medium, das ausführbare Anweisungen enthält, die, wenn sie von einem Prozessor ausgeführt werden, Durchführung von Operationen erleichtern, umfassend: Ausführen einer Prüffunktion auf Grundlage einer Bestimmung, dass ein Gruppenwechsel in einem Cluster von Knotenvorrichtungen stattfindet, die für die Operation als verteiltes Dateisystem konfiguriert sind, wobei die Prüffunktion jeweilige Sperren und assoziierte Caches einer Gruppe von Ressourcen auswertet; Bestimmen eines ersten Satzes von Sperren der jeweiligen Sperren, die reaktiviert werden sollen, basierend auf den Ergebnissen der Prüffunktion; und Reaktivierung des ersten Satzes von Sperren, wobei ein zweiter Satz von Sperren der jeweiligen Sperren, der sich von dem ersten Satz von Sperren unterscheidet, auf Grundlage der Ergebnisse der Prüffunktion nicht reaktiviert wird.
  18. Nicht-transitorisches maschinenlesbares Medium nach Anspruch 17, wobei die Reaktivierung des ersten Satzes von Sperren das Bestimmen umfasst, dass ein Sperren-Verlust-Callback-Thread jeweilige Sperren des ersten Satzes von Sperren verwendet und dass ein jeweiliger mit einem Thread assoziierter Cache zur Invalidierung verfügbar ist.
  19. Nicht-transitorisches maschinenlesbares Medium nach Anspruch 17, wobei das Ausführen der Prüffunktion das Ausführen lokaler Funktionen unter Umgehung eines Koordinatorknotens umfasst, der in dem Cluster von Knotenvorrichtungen enthalten ist.
  20. Nicht-transitorisches, maschinenlesbares Medium nach Anspruch 17, wobei die Operationen des Weiteren umfassen: vor der Reaktivierung des ersten Satzes von Sperren, Empfangen eines Satzes von Werten als Reaktion auf die Prüffunktion, wobei ein erster Wert des Satzes von Werten anzeigt, dass kein Cache zu invalidieren ist, wobei ein zweiter Wert des Satzes von Werten anzeigt, dass ein Sperren-Verlust-Callback-Thread keine Sperre verwendet und dass der jeweilige mit einem Thread assoziierte Cache zur Invalidierung verfügbar ist, und wobei ein dritter Wert des Satzes von Werten anzeigt, dass der Sperren-Verlust-Callback-Thread die Sperre verwendet und dass der jeweilige mit dem Thread assoziierte Cache zur Invalidierung verfügbar ist; Bestimmen, dass der zweite Satz von Sperren mit dem ersten Wert und dem zweiten Wert assoziiert ist; und Bestimmen, dass der erste Satz von Sperren mit dem dritten Wert assoziiert ist.
DE112021006506.8T 2020-12-17 2021-04-23 Verwaltung von Sperren-Koordinator-Rebalance in verteilten Dateisystemen Pending DE112021006506T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/124,694 US11409670B2 (en) 2020-12-17 2020-12-17 Managing lock coordinator rebalance in distributed file systems
US17/124,694 2020-12-17
PCT/US2021/028999 WO2022132215A1 (en) 2020-12-17 2021-04-23 Managing lock coordinator rebalance in distributed file systems

Publications (1)

Publication Number Publication Date
DE112021006506T5 true DE112021006506T5 (de) 2023-11-23

Family

ID=75919414

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021006506.8T Pending DE112021006506T5 (de) 2020-12-17 2021-04-23 Verwaltung von Sperren-Koordinator-Rebalance in verteilten Dateisystemen

Country Status (4)

Country Link
US (1) US11409670B2 (de)
CN (1) CN116670662A (de)
DE (1) DE112021006506T5 (de)
WO (1) WO2022132215A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789924B2 (en) * 2021-10-14 2023-10-17 Vast Data Ltd. Lock metadata re-balancing upon storage expansion
US11892977B2 (en) 2021-10-14 2024-02-06 Vast Data Ltd. Stored entity metadata re-balancing upon storage expansion

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6775703B1 (en) * 2000-05-01 2004-08-10 International Business Machines Corporation Lease based safety protocol for distributed system with multiple networks
US7124131B2 (en) * 2003-04-29 2006-10-17 International Business Machines Corporation Discipline for lock reassertion in a distributed file system
US9747323B1 (en) 2014-12-30 2017-08-29 EMC IP Holding Company LLC Method for reconstruction of a distributed lock state after a node addition or removal using a consistent hash

Also Published As

Publication number Publication date
CN116670662A (zh) 2023-08-29
US11409670B2 (en) 2022-08-09
US20220197830A1 (en) 2022-06-23
WO2022132215A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE102013205069B4 (de) Erhöhte effizienz bei inline-deduplizierungen
DE112011100819B4 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE102012215665B4 (de) Dynamische Änderung der TTL-Werte in einem Datencache
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112013001905B4 (de) Erhöhte Inline-Deduplizierungseffizienz
DE112012005037T5 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
WO2012110314A1 (de) Verfahren und vorrichtung zur analyse von datenpaketen
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102012215918A1 (de) Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host
DE112018004008B4 (de) Auf dateisysteminhalten beruhende sicherheit
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE202020005693U1 (de) Externe berechtigungsnachweisfreie Stufen für Datenbankintegrationen
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE112021006506T5 (de) Verwaltung von Sperren-Koordinator-Rebalance in verteilten Dateisystemen
DE202014011089U1 (de) System zum Kopieren von Dateien zwischen verschlüsselten und unverschlüsselten Datenspeichereinrichtungen
DE112012003695T5 (de) Aufrechterhalten mehrerer Zielkopien
DE112013004805T5 (de) Unterstützen eines koordinierten Zugriffs auf einen gemeinsam genutzten Speicher eines Dateisystems unter Verwendung einer automatischen Ausrichtung eines Protokolls für einen parallelen Dateizugriff und einer Metadatenverwaltung
DE102016204710A1 (de) Sichern und Wiederherstellen von Klondaten
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten
DE112012004247T5 (de) Passives Überwachen virtueller Systeme unter Verwendung einer erweiterbaren Indexierung
DE202014010885U1 (de) Beschleunigung basierend auf zwischengespeicherte Flüsse
DE112021003401T5 (de) Schattenexperimente für serverlose multi-tenant-cloud-dienste
DE102022108673A1 (de) Ressourcenzuweisung für synthetische backups

Legal Events

Date Code Title Description
R012 Request for examination validly filed