DE102013209528A1 - Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen - Google Patents

Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen Download PDF

Info

Publication number
DE102013209528A1
DE102013209528A1 DE102013209528A DE102013209528A DE102013209528A1 DE 102013209528 A1 DE102013209528 A1 DE 102013209528A1 DE 102013209528 A DE102013209528 A DE 102013209528A DE 102013209528 A DE102013209528 A DE 102013209528A DE 102013209528 A1 DE102013209528 A1 DE 102013209528A1
Authority
DE
Germany
Prior art keywords
replication
snapshot
destination
objects
state
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.)
Ceased
Application number
DE102013209528A
Other languages
English (en)
Inventor
Shay Haim Akirav
Yariv BACHAR
Asaf Levy
Oded SONIN
Ron EDELSTEIN
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013209528A1 publication Critical patent/DE102013209528A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation

Abstract

Eine Momentaufnahme ausgewählter Objekte in einem Quellen-Repository wird als Reaktion auf die benutzergesteuerte Replikation erstellt. Die Momentaufnahme wird zu einem Momentaufnahme-Replikationsjob bestimmt. Der Momentaufnahme-Replikationsjob wird zum Ende einer Replikationswarteschlange hinzugefügt, um die Ausführung für die synchronisierte Objektreplikation zu erwarten. Unsynchronisierte Objekte in einem Bestimmungsziel werden durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs erkannt. Die unsynchronisierten Objekte im Bestimmungsziel werden auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs synchronisiert.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein Computer und insbesondere benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikation.
  • Beschreibung des Stands der Technik
  • In der heutigen Gesellschaft sind Computersysteme etwas Alltägliches. Computersysteme können am Arbeitsplatz, zuhause oder in der Schule vorhanden sein. Computersysteme können Datenspeichersysteme oder Plattenspeichersysteme enthalten, um Daten zu verarbeiten und zu speichern. Datenreplikation ist ein solcher Prozess. Replizierte Datensysteme können verschiedene logische Datenspeicherentitäten wie Dateien, Datenobjekte, Sicherungs-Abbilder, Daten-Momentaufnahmen oder virtuelle Bandkassetten extern bereitstellen. Häufig ist es erforderlich, dass solche Datenspeicherentitäten von ihrem Ursprungsort an entfernt angeordnete Orte repliziert werden. Replizierte Datenentitäten steigern die Fehlertoleranz-Fähigkeiten und die Verfügbarkeit von Daten. Wenn auch mehrere bestehende Ansätze verwendet werden können, um Datenreplikation durchzuführen, weisen diese Ansätze begleitende Beschränkungen, die sich negativ auf Replikationseffizienz, Systemleistung und Datenkonsistenz auswirken, zusätzlichen Aufwand erfordern, oder irgendeine Kombination der obigen Probleme auf.
  • KURZBESCHREIBUNG DER ERFINDUNG
  • Datenreplikation bedeutet das Sichern von an einem primären Ort gespeicherten Daten durch Speichern des genauen Duplikats der Daten an einem sekundären oder entfernt liegenden Ort. Das Verwenden von Datenreplikationsprozessen bietet verschiedene Vorteile. Datenreplikation trat in den letzten Jahren als ein äußerst wichtiges technologisches Gebiet in Datenverarbeitungs-Speichersystemen in Erscheinung. Probleme mit dem Bereitstellen der Datenreplikations-Funktionalität bestehen in Systemen für synchronisierte Replikation, wo es erforderlich ist, dass strikte Beziehungen zwischen Objekten vorliegen, wie, dass Objekt A mit Zustand X erfordert, dass Objekt B Zustand Y hat. In Systemen für synchronisierte Replikation gibt es beim Erstellen eines neuen Replikationskontexts zwischen der Quelle und dem Ziel oder beim Hinzufügen eines zusätzlichen Satzes von Objekten zum Kontext einen Zustand der Nicht-Synchronisation, da nur neue Operationen an den Objekten an das Ziel gesendet werden. Somit ist es erforderlich, eine Replikation der unsynchronisierten Objekte in ihrem aktuellen Zustand einzuleiten.
  • Schlechthin besteht ein Bedürfnis nach einer Lösung, die einen benutzergesteuerten Replikationsprozess in einem System für synchronisierte Objektreplikation ermöglicht. Außerdem besteht ein Bedürfnis, die benutzergesteuerte Replikation der unsynchronisierten Objekte durchzuführen, ohne das Erstellen und Bearbeiten der Objekte im Quellen-Repository zu stören, und dabei jede Verletzung der normalen Reihenfolge der Replikation neuer Operationen in der Quelle zu vermeiden. Zusätzlich besteht ein Bedürfnis, einem Benutzer zu gestatten, die Replikation eines Satzes von Objekten ungeachtet des Synchronisationszustands des Satzes von Objekten einzuleiten, um die Objekte, welche eine Replikation erfordern, effizient zu erkennen und die Replikation auf die erkannten, eine Replikation erfordernden Objekte zu beschränken.
  • Demgemäß und in Anbetracht des Vorangehenden werden verschiedene beispielhafte Ausführungsformen von Verfahren, Systemen und Computerprogramm-Produkten für benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikation in einer Datenverarbeitungsumgebung bereitgestellt. In einer Ausführungsform wird, nur als Beispiel, eine Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation erstellt. Die Momentaufnahme wird als ein Momentaufnahme-Replikationsjob ausgewiesen. Der Momentaufnahme-Replikationsjob wird zum Ende einer Replikationswarteschlange hinzugefügt, um die Ausführung für die synchronisierte Objektreplikation zu erwarten. Unsynchronisierte Objekte in einem Bestimmungsziel werden durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahmereplikationsjobs erkannt. Die unsynchronisierten Objekte im Bestimmungsziel werden auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahmereplikationsjobs synchronisiert.
  • Zusätzlich zur vorangehenden beispielhaften Verfahrens-Ausführungsform werden weitere beispielhafte System- und Computerprodukt-Ausführungsformen bereitgestellt und bieten diese entsprechende Vorteile. Die vorangehende Kurzbeschreibung wurde bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, welche unten in der ausführlichen Beschreibung werter beschrieben werden. Diese Kurzbeschreibung soll weder Hauptmerkmale oder wesentliche Merkmale des Anspruchsgegenstands identifizieren noch soll sie als eine Hilfe beim Ermitteln des Umfangs des Anspruchsgegenstands verwendet werden. Der Anspruchsgegenstand ist nicht auf Umsetzungen beschränkt, die einigen oder allen im Hintergrund erwähnten Nachteilen abhelfen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Damit die Vorteile der Erfindung ohne weiteres verstanden werden, erfolgt eine ausführlichere Beschreibung der oben kurz beschriebenen Erfindung anhand spezieller Ausführungsformen, die in den beigefügten Zeichnungen veranschaulicht werden. Während es sich von selbst versteht, dass diese Zeichnungen Ausführungsformen der Erfindung darstellen und deshalb nicht als ihren Umfang begrenzend zu verstehen sind, wird die Erfindung nun unter Verwendung der folgenden beigefügten Zeichnungen spezieller und ausführlicher beschrieben und erläutert:
  • 1 ist ein Blockschaubild, welches eine Datenverarbeitungssystem-Umgebung mit einer beispielhaften Speichereinheit, worin Aspekte der vorliegenden Erfindung realisiert sein können, veranschaulicht;
  • 2 ist ein Blockschaubild, welches eine Hardwarestruktur eines beispielhaften Datenspeichersystems in einem Computersystem, worin Aspekte der vorliegenden Erfindung realisiert sein können, veranschaulicht;
  • 3 ist ein Ablaufplan, welcher ein beispielhaftes Verfahren zur benutzergesteuerten Replikation in einem System für synchronisierte Objektreplikation veranschaulicht; und
  • 4 ist ein Ablaufplan, welcher ein beispielhaftes Verfahren zur Ausführung eines Momentaufnahmereplikationsjobs veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • In der folgenden Beschreibung und im Anspruchsgegenstand wird durchweg die folgende, sich auf die veranschaulichten Ausführungsformen beziehende Terminologie verwendet. Ein „Replikationskontext” soll einen benutzerdefinierten Zusammenhang zwischen einem Satz von Quellenobjekten und einem Ziel bezeichnen. Alle Quellenoperationen an dem Satz von Objekten sind in das Ziel zu replizieren. Ein „Replikationsjob” soll eine Task, eine Objektoperation von der Quelle (z. B. einem Quellen-Repository) in ein Ziel (z. B. ein Bestimmungsziel) zu replizieren, bezeichnen. Eine „Momentaufnahme” soll einen interaktiven Zustand eines Objektsatzes zu einem bestimmten Zeitpunkt bezeichnen. Die Momentaufnahme enthält Daten der Objekte und Metadaten zur Zeit der Erstellung der Momentaufnahme. Die Momentaufnahme erhält den Zustand der Objekte aufrecht, selbst wenn sie geändert oder gelöscht werden. Eine „Replikationswarteschlange” soll eine Warteschlange bezeichnen, welche die Replikationsjobs enthält, deren Ausführung ansteht. Die Replikationswarteschlange ist eine strikte First-in-first-out-Warteschlange, so dass die Replikationsjobs im Ziel (z. B. im Bestimmungsziel) in genau der gleichen Reihenfolge durchgeführt werden, in welcher sie in der Quelle (z. B. im Quellen-Repository) auftraten. Ein ”System” kann ein Computersystem, einen Computerprozessor, ein primäres Speichersystem, ein entfernt angeordnetes Speichersystem oder jede beliebige sonstige Komponente in einer Computerumgebung, welche zum Ausführen der beanspruchten Erfindung benötigt wird, umfassen.
  • Eine „eindeutige Objekt-ID” soll ein Attribut des Objekts bezeichnen, welches das Objekt innerhalb der Gruppe von Replikationssystemen eindeutig identifiziert. Eine „Objektzustands-ID” soll ein Attribut des Objektzustands bezeichnen, welches den Zustand des Objekts identifiziert. Die Objektzustands-ID ist für einen bestimmten Zustand eines Objekts eindeutig und ändert sich, wenn die Objektdaten oder Metadaten sich ändern. Eine „Replikations-Engine” soll das für die physische Replikation von Daten zuständige Modul bezeichnen. Eine „Replikations-Task” soll eine Anforderung an die Replikations-Engine, die physische Replikation der Objektdaten oder Metadaten durchzuführen, bezeichnen.
  • Wie oben erwähnt, bedeutet Datenreplikation das Sichern von an einem primären Ort gespeicherten Daten durch Speichern des genauen Duplikats der Daten an einem sekundären oder entfernt liegenden Ort. Darüber hinaus ist Objektreplikation eher das Verfahren des Replizierens von Objekten auf einer logischen Ebene als das Replizieren auf einer Speicherblockebene. Ähnlich der Replikation eines Speichers auf Blockebene kann Objektreplikation entweder synchronisiert oder unsynchronisiert sein. Im synchronisierten Modus wird jede Operation an den Objekten im Quellen-Repository in das Ziel-Repository gespiegelt. Die Operationen werden im Ziel in der gleichen Reihenfolge durchgeführt, in welcher sie in der Quelle durchgeführt wurden. Im unsynchronisierten Modus besteht keine Notwendigkeit, die Operationen reihenfolgegemäß durchzuführen, sondern lediglich, irgendeinen stabilen Zustand der Objekte im Ziel aufrechtzuerhalten. Ein System für synchronisierte Replikation ist erforderlich, wenn strikte Beziehungen zwischen den Objekten vorliegen, wie dass Objekt A mit Zustand X erfordert, dass Objekt B Zustand Y hat. Zum Beispiel hängen Unterverzeichnisse und/oder Dateien in Systemen für synchronisierte Replikation von übergeordneten Verzeichnissen ab.
  • In solchen Systemen gibt es beim Erstellen eines neuen Replikationskontexts zwischen der Quelle und dem Ziel oder beim Hinzufügen eines zusätzlichen Satzes von Objekten zum Kontext einen Zustand der Nicht-Synchronisation, da nur neue Operationen an den Objekten an das Ziel gesendet werden. Somit ist es erforderlich, eine Replikation der unsynchronisierten Objekte in ihrem aktuellen Zustand einzuleiten.
  • Schlechthin besteht ein Bedürfnis nach einer Lösung, die einen benutzergesteuerten Replikationsprozess in einem System für synchronisierte Objektreplikation ermöglicht. Außerdem besteht ein Bedürfnis, die benutzergesteuerte Replikation der unsynchronisierten Objekte durchzuführen, ohne das Erstellen und Bearbeiten der Objekte im Quellen-Repository zu stören, und dabei jede Verletzung der normalen Reihenfolge der Replikation neuer Operationen in der Quelle zu vermeiden. Zusätzlich besteht ein Bedürfnis, einem Benutzer zu gestatten, die Replikation eines Satzes von Objekten ungeachtet des Synchronisationszustands des Satzes von Objekten einzuleiten, um die Objekte, welche eine Replikation erfordern, effizient zu erkennen und die Replikation auf die erkannten, eine Replikation erfordernden Objekte zu beschränken.
  • Um diese Bedürfnisse zu befriedigen, versuchen die Mechanismen der veranschaulichten Ausführungsformen, eine Lösung bereitzustellen, die eine benutzergesteuerte Replikation der unsynchronisierten Objekte gestattet, welche das Erstellen und Bearbeiten der Objekte im Quellen-Repository nicht stört, ohne dabei die normale Reihenfolge der Replikation neuer Operationen in der Quelle zu verletzen. In einer Ausführungsform stellen die Mechanismen, nur als Beispiel, ungeachtet des Synchronisationszustands eines Satzes von Objekten eine benutzergesteuerte Replikation des Satzes von Objekten bereit, erkennen sie effizient die Objekte, welche eine Replikation erfordern, und beschränken sie die Replikation auf lediglich die erkannten, eine Replikation erfordernden Objekte.
  • Darüber hinaus sorgen die Mechanismen der vorliegenden Erfindung, nur als Beispiel, für eine skalierbare und effiziente benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikation, welches die folgenden wesentlichen Anforderungen erfüllt. 1) Die Mechanismen gestatten dem Benutzer, eine Replikation eines Satzes von Objekten unabhängig von ihrem tatsächlichen Synchronisationszustand durchzuführen. 2) Die Mechanismen erkennen effizient die unsynchronisierten Objekte, welche eine Replikation erfordern. 3) Die Mechanismen stören nicht das lokale Erstellen, Löschen und Bearbeiten von Objekten. 4) Die Mechanismen beeinträchtigen nicht die normale Replikationsreihenfolge der Quellenoperationen. 5) Die Mechanismen gestatten die benutzergesteuerte Replikation eines Satzes von Objekten unabhängig von den eigentlichen Replikationsprozeduren.
  • Die Mechanismen der vorliegenden Erfindung erfüllen jeden einzelnen dieser Punkte ungeachtet der Systemgröße und der Anzahl von Objekten. Darüber hinaus ermöglichen die Mechanismen der vorliegenden Erfindung das Einleiten einer Replikation eines Satzes von Objekten ungeachtet ihres Synchronisationszustands, während sie von den Replikationsprozeduren, vom Protokoll und/oder vom Dateisystem-Aufbau, von der Darstellung und der Implementierung unabhängig bleiben.
  • In einer Ausführungsform können die Operationen der synchronen Objektreplikation der vorliegenden Erfindung, nur als Beispiel, durch das Hinzufügen neuer Quellenoperationen unter dem Replikationskontext als Replikationsjobs zum Ende der Replikationswarteschlange in der Reihenfolge, in welcher sie auftreten, einfach beschrieben werden. Die Mechanismen führen die Jobs aus, indem sie einen Job vom Kopf der Replikationswarteschlange nehmen und die Quellenoperation durchführen, welche der Replikationsjob im Ziel beschreibt. Da die Replikationsjobs in der Reihenfolge, in welcher sie in der Quelle auftreten, zur Replikationswarteschlange hinzugefügt werden und der Reihe nach durchgeführt werden, treten die Replikationsjobs im Ziel in genau der gleichen Reihenfolge auf, in welcher sie in der Quelle auftraten.
  • Da der Mechanismus der synchronen Objektreplikation nur eine Replikation neuer Operationen an den Objekten durchführt, wenn er den Replikationskontext erstellt oder wenn er diesem zusätzliche Objekte hinzufügt, sind diese Objekte im Ziel nicht vorhanden und werden sie als unsynchronisiert angesehen. Schlechthin sorgen die Mechanismen der vorliegenden Erfindung für eine Lösung, die eine skalierbare und effiziente Einleitung der Replikation eines Objektsatzes innerhalb des grundlegenden Replikationsablaufs ermöglicht, was eine Replikation der Objekte ungeachtet ihres Synchronisationszustands gestattet.
  • In einer Ausführungsform erstellen die Mechanismen bei Einleitung der Replikation eines Objektsatzes durch einen Benutzer eine Momentaufnahme des ausgewählten Objektsatzes. Die Mechanismen setzen voraus, dass der zugrundeliegende Aufbau und die zugrundeliegende Darstellung der Objekte einen zügigen Momentaufnahme-Erstellungsprozess unterstützt. Darüber hinaus setzen die Mechanismen voraus, dass der Momentaufnahme-Erstellungsprozess nicht andere lokale Objektoperationen stört. Die Momentaufnahme wird dann als ein neuer Replikationsjob zum Ende der Replikationswarteschlange hinzugefügt. Die Mechanismen der synchronen Replikation gewährleisten die Ausführung der Replikationsjobs in genau der gleichen Reihenfolge, in welcher die Replikationsjobs auftraten, alle Operationen, die vor der Momentaufnahme-Erstellung auftraten, sind zuverlässig zu replizieren, bevor der Momentaufnahmereplikationsjob repliziert wird, und alle Operationen, die nach der Momentaufnahmereplikations-Erstellung auftraten, sind nach der Momentaufnahme-Replikation zu replizieren.
  • In 1 nun ist eine beispielhafte Architektur 10 einer Datenverarbeitungssystem-Umgebung dargestellt. Das Computersystem 10 enthält eine Zentraleinheit (CPU) 12, welche mit einem Datenübertragungsanschluss 18 und einer Arbeitsspeichereinheit 16 verbunden ist. Der Datenübertragungsanschluss 18 steht mit einem Datenübertragungsnetz 20 im Datenaustausch. Das Datenübertragungsnetz 20 und ein Speichernetz können so konfiguriert sein, dass sie mit Servern (Hosts) 24 und 22 und Speichersystemen, welche Speichereinheiten 14 enthalten können, im Datenaustausch stehen. Die Speichersysteme können Festplattenlaufwerk-(HDD-(Hard Disk Drive))Einheiten, Halbleitereinheiten (SSD (Solid-State Devices)) usw. enthalten, welche in einer redundanten Anordnung unabhängiger Festplatten (RAID (Redundant Array of Independent Disks)) konfiguriert sein können. Die Operationen wie unten beschrieben können an Speichereinheiten) 14, welche sich im System 10 oder anderswo befindet bzw. befinden, ausgeführt werden und können mehrere Arbeitsspeichereinheiten 16 aufweisen, die unabhängig und/oder in Verbindung mit weiteren CPU-Einheiten 12 arbeiten. Eine Arbeitsspeichereinheit 16 kann solche Speicher wie elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM (Electrically Erasable Programmable Read Only Memory)) oder eine Menge mit entsprechenden Einheiten enthalten. Die Arbeitsspeichereinheit 16 und die Speichereinheiten 14 sind über ein signalführendes Medium mit der CPU 12 verbunden. Zusätzlich ist die CPU 12 über den Datenübertragungsanschluss 18 mit einem Datenübertragungsnetz 20 verbunden, an welches eine Vielzahl von zusätzlichen Computer-Hostsystemen 24 und 22 angeschlossen sind. Zusätzlich können die Arbeitsspeichereinheit 16 und die CPU 12 in jede Komponente des Datenverarbeitungssystems 10 eingebettet und darin enthalten sein. Jedes Speichersystem kann außerdem getrennte und/oder gesonderte Arbeitsspeichereinheiten 16 und eine getrennte und/oder gesonderte CPU 12 enthalten, welche miteinander oder als eine getrennte Arbeitsspeichereinheit 16 und/oder CPU 12 arbeiten.
  • 2 ist ein beispielhaftes Blockschaubild 200, welches eine Hardwarestruktur eines Datenspeichersystems in einem Computersystem gemäß der vorliegenden Erfindung zeigt. Host-Computer 210, 220, 225 sind gezeigt, die jeweils als eine Zentraleinheit zum Durchführen einer Datenverarbeitung als Teil eines Datenspeichersystems 200 arbeiten. Die Cluster-Hosts/-Knoten (physische oder virtuelle Einheiten) 210, 220 und 225 können eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erfüllen der Zwecke der vorliegenden Erfindung im Datenspeichersystem 200 sein. In einer Ausführungsform kann, nur als Beispiel, ein Datenspeichersystem 200 als IBM® System StorageTM DS8000TM ausgeführt sein. Eine Netzverbindung 260 kann ein Fibre Channel-Fabric, eine Fibre Channel-Punkt-zu-Punkt-Verbindung, ein Fibre Channel-über-Ethernet-Fabric oder eine Fibre Channel-über-Ethernet-Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, irgendein anderer E/A-Schnittstellentyp, ein drahtloses Netz, ein Festnetz, ein LAN, ein WAN, heterogen, homogen, öffentlich (d. h. das Internet), privat oder irgendeine Kombination davon sein. Die Hosts 210, 220 und 225 können lokal oder auf einen oder mehrere Orte verteilt sein und können mit einem beliebigen Fabric-Typ (oder Fabric-Kanal) (in 2 nicht gezeigt) oder einem Netzadapter 260 zum Speichercontroller 240 wie einem Fibre Channel-, FICON-, ESCON-, Ethernet-, Lichtwellenleiter-, Mobilnetz- oder Koaxial-Adapter ausgestattet sein. Das Datenspeichersystem 200 ist demgemäß mit einem für den Datenaustausch geeigneten Fabric (in 2 nicht gezeigt) oder Netzadapter 260 ausgestattet. Das Datenspeichersystem 200 ist in 2 als Speichercontroller 240 und Cluster-Hosts 210, 220 und 225 aufweisend dargestellt. Die Cluster-Hosts 210, 220 und 225 können Cluster-Knoten enthalten.
  • Um ein deutlicheres Verstehen der hierin beschriebenen Verfahren zu erleichtern, ist der Speichercontroller 240 in 2 als eine einzige Verarbeitungseinheit gezeigt, die einen Mikroprozessor 242, einen Systemarbeitsspeicher 243 und einen nichtflüchtigen Speicher („NVS” (Nonvolatile Storage)) 216, welcher unten noch ausführlicher beschrieben wird, aufweist. Besonders zu erwähnen ist, dass der Speichercontroller 240 in einigen Ausführungsformen aus mehreren Verarbeitungseinheiten jeweils mit ihrem eigenen Prozessorkomplex und Systemarbeitsspeicher besteht und über ein dediziertes Netz im Datenspeichersystem 200 angeschlossen ist. Ein Speicher 230 (in 3 als 230a, 230b und 230n bezeichnet) kann aus einer oder mehreren Speichereinheiten wie Speicheranordnungen bestehen, welche (über ein Speichernetz) mit dem Speichercontroller 240 verbunden sind, wobei ein oder mehrere Cluster-Hosts 210, 220 und 225 mit jedem Speichercontroller 240 verbunden sind.
  • In einigen Ausführungsformen können die im Speicher 230 enthaltenen Einheiten in einer Ringleitungsarchitektur angeschlossen sein. Der Speichercontroller 240 verwaltet den Speicher 230 und erleichtert die Verarbeitung von für den Speicher 230 bestimmten Schreib- und Leseanforderungen. Der Systemarbeitsspeicher 243 des Speichercontrollers 240 speichert Programmanweisungen und Daten, auf welche der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte der vorliegenden Erfindung zum Ausführen und Verwalten des Speichers 230, wie hierin beschrieben, auszuführen. In einer Ausführungsform enthält der Systemarbeitsspeicher 243 die Betriebssoftware 250, steht er mit ihr in Beziehung oder ist er mit ihr zum Durchführen hierin beschriebener Verfahren und Operationen in Verbindung. Wie in 2 gezeigt, kann der Systemarbeitsspeicher 243 auch einen Cache 245 für den Speicher 230, hierin auch als ein „Cachespeicher” bezeichnet, zum Puffern von „Schreibdaten” und „Lesedaten” enthalten, welche sich auf Schreib- beziehungsweise Leseanforderungen und deren zugehörige Daten beziehen, oder mit diesem in Verbindung sein. In einer Ausführungsform ist der Cachespeicher 245 einer Einheit außerhalb des Systemarbeitsspeichers 243 zugeordnet, bleibt er aber für den Mikroprozessor 242 zugänglich und kann er neben dem Ausführen der Operationen wie hierin beschrieben dazu dienen, zusätzliche Sicherheit gegen Datenverlust bereitzustellen.
  • Zur Steigerung der Leistung des Datenspeichersystems 200 ist der Cachespeicher 245 in einigen Ausführungsformen mit einem flüchtigen Speicher und einem nichtflüchtigen Speicher ausgeführt und über einen lokalen Bus (in 2 nicht gezeigt) mit dem Mikroprozessor 242 verbunden. Der im Datenspeichercontroller enthaltene NVS 216 ist für den Mikroprozessor 242 zugänglich und dient dazu, zusätzliche Unterstützung für Operationen und Ausführung der vorliegenden Erfindung bereitzustellen, wie in den anderen Figuren beschrieben. Der NVS 216 kann auch als ein „persistenter” Cache oder „Cachespeicher” bezeichnet werden und ist mit nichtflüchtigem Speicher ausgeführt, welcher externe Energie nutzen kann, um darin gespeicherte Daten zu bewahren. Der NVS kann zu jedem beliebigen zum Erreichen der Ziele der vorliegenden Erfindung geeigneten Zweck in und mit dem Cachespeicher 245 gespeichert werden. In einigen Ausführungsformen versorgt eine Notstromversorgung (in 2 nicht gezeigt) wie eine Batterie den NVS 216 mit genügend Energie, um die darin gespeicherten Daten im Fall eines Stromausfalls im Datenspeichersystem 200 zu bewahren. In bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner als die oder gleich der Gesamtkapazität des Cachespeichers 245.
  • Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten wie Speicheranordnungen bestehen. Eine Speicheranordnung ist eine logische Gruppierung einzelner Speichereinheiten wie eine Festplatte. in bestimmten Ausführungsformen besteht der Speicher 230 aus einer JBOD-(Just a Bunch of Disks)Anordnung oder einer RAID-(Redundant Array of Independent Disks)Anordnung. Eine Ansammlung physischer Speicheranordnungen kann weiter zusammengefasst werden, um eine Rangfolge zu bilden, was den physischen Speicher von der logischen Konfiguration loslöst. Der Speicherplatz in einer Rangfolge kann logischen Datenträgern zugeordnet sein, welche den in einer Schreib-/Leseanforderung angegebenen Speicherort definieren.
  • In einer Ausführungsform kann das Speichersystem wie in 2 gezeigt, nur als Beispiel, einen logischen Datenträger oder einfach „Datenträger” enthalten, kann es verschiedene Arten von Zuordnungen aufweisen. Die Speicher 230a, 230b und 230n sind als Rangfolgen im Datenspeichersystem 200 gezeigt und werden hierin als Rang 230a, 230b und 230n bezeichnet. Die Ränge können sich lokal im Datenspeichersystem 200 befinden oder können sich an einem physisch entfernt liegenden Ort befinden. In anderen Worten, ein lokaler Speichercontroller kann mit einem entfernt angeordneten Speichercontroller in Verbindung treten und die Speicherung an dem entfernt liegenden Ort verwalten. Der Rang 230a ist als mit zwei vollständigen Datenträgern 234 und 236 sowie einem teilweisen Datenträger 232a konfiguriert gezeigt. Der Rang 230b ist mit einem weiteren teilweisen Datenträger 232b gezeigt. Somit ist der Datenträger 232 über die Ränge 230a und 230b hinweg zugeordnet. Der Rang 230n ist als vollständig Datenträger 238 zugeordnet gezeigt – das heißt, der Rang 230n bezieht sich auf den gesamten physischen Speicher von Datenträger 238. Aus den obigen Beispielen wird man erkennen, dass ein Rang so konfiguriert sein kann, dass er einen oder mehrere teilweise und/oder vollständige Datenträger enthält. Die Datenträger und Ränge können ferner in sogenannte „Spuren” unterteilt sein, welche einen festen Speicherblock darstellen. Eine Spur gehört daher zu einem gegebenen Datenträger und kann einen gegebenen Rang erhalten.
  • Der Speichercontroller 240 kann ein benutzergesteuertes Replikationsmodul 255, ein Replikations-Engine-Modul 257 und ein Momentaufnahmemodul 259 enthalten. Das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 können in Verbindung mit jeder einzelnen Komponente des Speichercontrollers 240, der Hosts 210, 220, 225 und der Speichereinheiten 230 arbeiten. Das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 können strukturell ein einziges vollständiges Modul sein oder können zu anderen einzelnen Modulen gehören und/oder darin enthalten sein. Das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 können sich auch im Cachespeicher 245 oder in anderen Komponenten befinden.
  • Der Speichercontroller 240 enthält einen Steuerschalter 241 zum Steuern des Fibre Channel-Protokolls für die Host-Computer 210, 220, 225, einen Mikroprozessor 242 zum Steuern des ganzen Speichercontrollers 240, einen nichtflüchtigen Steuer-Arbeitsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs des Speichercontrollers 240, Daten zur Steuerung und jede später beschriebene Tabelle, den Cachespeicher 245 zum vorübergehenden Speichern (Puffern) von Daten und Puffer 244 zum Unterstützen des Cachespeichers 245, um Daten zu lesen und zu schreiben, einen Steuerschalter 241 zum Steuern eines Protokolls, um die Datenübertragung zu oder von den Speichereinheiten 230 zu steuern, das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259, in welchem Daten gesetzt werden können. Mehrere Puffer 244 können bei der vorliegenden Erfindung ausgeführt sein, um die Operationen wie hierin beschrieben zu unterstützen. In einer Ausführungsform sind die Cluster-Hosts/-Knoten 210, 220, 225 und der Speichercontroller 240 über einen Netzadapter (dies könnte ein Fibre Channel sein) 260 als eine Schnittstelle, d. h. über mindestens einen als „Fabric” bezeichneten Schalter verbunden.
  • In einer Ausführungsform sind die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und der Speichercontroller 240 über einen Netzadapter (dies könnte ein Fibre Channel sein) 260 als eine Schnittstelle, d. h. über mindestens einen als „Fabric” bezeichneten Schalter verbunden. In einer Ausführungsform wird die Funktionsweise des in 2 gezeigten Systems beschrieben. Der Mikroprozessor 242 kann den Arbeitsspeicher 243 so steuern, dass er Befehlsinformationen aus der (physischen oder virtuellen) Host-Einheit 210 und Informationen zum Identifizieren der (physischen oder virtuellen) Host-Einheit 210 speichert. Der Steuerschalter 241, die Puffer 244, der Cachespeicher 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NVS 216, das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 stehen miteinander im Datenaustausch und können getrennte Komponenten oder eine einzelne Komponente sein. Außerdem können mehrere, wenn nicht alle Komponenten wie die Betriebssoftware 250 im Arbeitsspeicher 243 enthalten sein. Jede einzelne der Komponenten in den gezeigten Einheiten kann, zu für die vorliegende Erfindung geeigneten Zwecken, mit jeder anderen verbunden sein und im Datenaustausch stehen.
  • Wie oben erwähnt, können das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 sich auch im Cachespeicher 245 oder in anderen Komponenten befinden. Besonders erwähnt werden sollte, dass das RAM-Modul 259 mit einem Kurzzeitspeicher und die Festplatte mit dem Langzeitspeicher vergleichbar ist. In anderen Worten, das RAM-Modul 259 ist Arbeitsspeicher. Der RAM (Random Access Memory (Arbeitsspeicher)) ist der Ort in einem Computer, wo das Betriebssystem, Anwendungsprogramme und Daten, die gerade in Verwendung sind, vorgehalten werden, so dass sie durch den Prozessor 242 des Computers schnell erreicht werden können. Der RAM lässt sich viel schneller auslesen und schreiben als die anderen Arten von Speicher in einem Computer, die Festplatte, die Diskette und die CD-ROM. Schlechthin können ein oder mehrere benutzergesteuerte Replikationsmodule 255, Replikations-Engine-Module 257 und Momentaufnahmemodule 259 auf der Grundlage von Speicherarchitektur und Benutzervorlieben nach Bedarf verwendet werden.
  • 3 nun ist ein Ablaufplan, welcher ein beispielhaftes Verfahren 300 zur benutzergesteuerten Replikation in einem System für synchronisierte Objektreplikation veranschaulicht. Das Verfahren 300 beginnt (Schritt 302) mit dem Erstellen einer Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation (Schritt 304). Eine Momentaufnahme wird zu einem Momentaufnahme-Replikationsjob bestimmt (Schritt 306). Der Momentaufnahme-Replikationsjob wird zum Ende einer Replikationswarteschlange hinzugefügt, um die Ausführung für die synchronisierte Objektreplikation zu erwarten (Schritt 308). Besonders erwähnt werden sollte, dass das Verfahren 300 eine Replikationswarteschlange verwenden kann, indem es den Momentaufnahme-Replikationsjob zur Replikationswarteschlange hinzufügt, um eine Momentaufnahme des vom Benutzer zur Replikation angeforderten Objektsatzes zu replizieren. Der Zustand der ausgewählten Objekte in der Momentaufnahme wird mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs verglichen (Schritt 310). Auf der Grundlage des Vergleichs erkennt das Verfahren 300 unsynchronisierte Objekte in einem Bestimmungsziel (Schritt 312). Die unsynchronisierten Objekte im Bestimmungsziel werden auf der Grundlage des Vergleichens synchronisiert (Schritt 314). Das Verfahren 300 endet (Schritt 316).
  • Um die Operationen der vorliegenden Erfindung wie in 3 beschrieben weiter zu veranschaulichen, betrachten wir die Mechanismen, welche in einem System für synchrone Dateisystem-Replikation verwendet werden. Ein Replikationskontext ist der Zusammenhang zwischen einer Quelle und Zielverzeichnissen. Alle Operationen unter dem Quellenverzeichnis sind im Zielverzeichnis widerzuspiegeln. Ein Objekt in diesem System ist ein Knoten im Baum des Dateisystems, z. B. eine Datei oder ein Verzeichnis. In einer Ausführungsform sind die Objektoperationen in Daten- und Metadatenoperationen aufgeteilt. Die Datenoperationen sind entweder die Schreiboperationen neuer Daten oder die Löschoperationen alter Daten. Die Metadatenoperationen sind entweder eine Änderung von Metadaten eines Knotens oder die Änderung der Baumstruktur. Solche Operationen werden in der Reihenfolge, in welcher sie auftraten, zur Replikationswarteschlange hinzugefügt und werden im Ziel der Reihe nach ausgeführt. Dadurch gewährleisten die Mechanismen, dass das Ziel immer ein konsistentes Abbild enthält, das einmal in der Quelle vorhanden war.
  • Darüber hinaus kann ein Replikationskontext erstellt werden, wenn es bereits vorhandene Objekte in der Quelle gibt. In einem Dateisystem können dies Verzeichnisse mit Dateien sein. Zum Beispiel ist der Replikationskontext die Verbindung zwischen dem Verzeichnis „/a” im Quellensystem und dem Verzeichnis „/a” im Zielsystem. Zur Zeit des Erstellens des Replikationskontexts ist das Verzeichnis „/a/b” in der Quelle bereits einschließlich einer komplexen Unterverzeichnisstruktur darunter vorhanden. Da der Mechanismus der synchronen Replikation nur neue Operationen repliziert, werden der Inhalt und die Struktur von „/a/b” nicht repliziert, solange sie nicht geändert werden.
  • Ein Benutzer fährt dann fort und erstellt das neue Verzeichnis, zum Beispiel „/a/c/”, in der Quelle und erstellt eine weitere Unterverzeichnisstruktur darunter. Da diese neuen Operationen unter der Replikationskontext-Überwachung erfolgen, werden sie alle zur Replikationswarteschlange hinzugefügt und werden sie zur Replikation eingeplant. Zu einem bestimmten Zeitpunkt möchte der Benutzer möglicherweise „/a” vollständig mit dem Ziel synchronisieren. Der Benutzer bewerkstelligt dies durch Einleiten einer Replikation des Verzeichnisses „/a”. Wie in 3 beschrieben, erstellen die Mechanismen zur Zeit des Einleitens eine Momentaufnahme von „/a” und fügen sie als einen weiteren Replikationsjob zur Replikationswarteschlange hinzu.
  • Zur Zeit des Einleitens ist die Replikationswarteschlange möglicherweise nicht leer, was bedeutet, dass es Quellenoperationen an „/a/c” gibt, die noch nicht ins Ziel repliziert wurden. In anderen Worten, zur Zeit der Ausführung stimmt der Zielzustand von „/a/c” nicht mit dem in der Quellen-Momentaufnahme überein. Da die Mechanismen der synchronen Replikation gewährleisten, dass die Replikationsjobs reihenfolgegemäß ausgeführt werden, gewährleisten die Mechanismen, dass bei Ausführung des Momentaufnahmereplikationsjobs alle früheren Operationen an „/a/c”, die vor seiner Erstellung auftraten, bereits repliziert wurden und dass Operationen an „/a/c”, die nach der Momentaufnahme-Erstellung auftraten, nicht repliziert wurden. In anderen Worten, dies bedeutet, dass das Ziel zur Zeit der Ausführung eine Kopie von „/a/c” enthält, welche derjenigen in der Momentaufnahme genau gleicht.
  • Das Beispielszenario fortführend, arbeiten die Mechanismen durch Vergleichen der Objekte in der Momentaufnahme mit denjenigen im Ziel, was durch Durchlaufen der Momentaufnahme und Vergleichen der Baumstruktur, der Daten und der Metadaten mit dem Ziel geschieht. Darüber hinaus kann der Mechanismus beim Durchführen der Durchlauf- und/oder der Vergleichsoperationen feststellen, dass „/a/c” vollständig mit der Momentaufnahme übereinstimmt und keine Replikation der Momentaufnahme erforderlich ist. Jedoch fehlen dann alle „/a/b” im Ziel, so dass die Mechanismen in der Replikations-Engine Replikations-Tasks für die eigentliche Replikation der Daten und Metadaten für alle Knoten in der Momentaufnahme unter „/a/b” eröffnen können.
  • Die Mechanismen warten, bis alle Replikations-Tasks abgeschlossen sind, und dann schließen sie den Momentaufnahme-Replikationsjob ab und gestatten sie, die Quellenoperationen, die danach auftraten, zu replizieren. Dadurch gewährleisten die Mechanismen, dass das Ziel bei Abschluss der Momentaufnahme-Replikation das genaue Abbild von „/a” zur Zeit der Einleitung einer Replikation durch den Benutzer enthält. Da die Momentaufnahme-Replikation keine Bearbeitungen an „/a/c” im Ziel vornahm, ist der Zustand von „/a/c” nicht beeinträchtigt und können die Quellenoperationen in der Warteschlange für „/a/c” mit dem Replizieren fortfahren.
  • In einer Ausführungsform, wie unten in 4 beschrieben, gestatten die Mechanismen eine benutzergesteuerte Replikation eines Satzes von Objekten durch Erstellen einer Momentaufnahme für den Satz von Objekten, Erstellen eines neuen Replikationsjobs für die Momentaufnahme und Hinzufügen des neuen Replikationsjobs zur Replikationswarteschlange. Die Ausführung des Momentaufnahme-Replikationsjobs erfolgt durch Durchführen von Vergleichen zwischen den Objekten in der Quellen-Momentaufnahme und den Objekten im Ziel und Ausgeben einer Replikation der unsynchronisierten Objekte in die Momentaufnahme, welche eine Replikation erfordern.
  • Die Prozedur zur Ausführung des Momentaufnahme-Replikationsjobs wird nun anhand von 4 beschrieben. 4 ist ein Ablaufplan, welcher ein beispielhaftes Verfahren 400 zur Ausführung eines Momentaufnahme-Replikationsjobs veranschaulicht. Das Verfahren 400 beginnt (Schritt 402) mit dem Abrufen des nächsten Objekts aus der Quellen-Momentaufnahme auf eine geordnete Weise (Schritt 404). Das Verfahren 400 sendet die Objekt-ID und die Zustands-ID des nächsten abgerufenen Objekts an das Bestimmungsziel (Schritt 406). Das Verfahren 400 ermittelt, ob die Objekt-ID im Bestimmungsziel vorhanden ist (Schritt 408). Falls nein, kann das Verfahren 400 Replikations-Tasks eröffnen, um die Objektdaten und Metadaten zu replizieren (Schritt 412). Falls ja, ermittelt das Verfahren 400, ob die empfangene Zustands-ID (z. B. vom nächsten ausgewählten Objekt empfangen) von der aktuellen Zustands-ID im Bestimmungsziel verschieden ist (Schritt 410). Falls ja, eröffnet das Verfahren 400 Replikations-Tasks, um die Objektdaten und Metadaten zu replizieren (Schritt 412). Falls nein, ermittelt das Verfahren 400, ob das Ende der Momentaufnahme erreicht wurde (Schritt 414). Falls ja, wartet das Verfahren 400, bis alle Replikations-Tasks abgeschlossen sind (Schritt 416). Falls nein, kehrt das Verfahren 400 zu Schritt 404 zurück und ruft es das nächste Objekt aus der Quellen-Momentaufnahme ab (Schritt 404). Wieder in Schritt 412, fährt das Verfahren 400 nach Abschluss des Eröffnens von Replikations-Tasks zum Replizieren der Objektdaten und der Metadaten mit Schritt 414 fort. Wiederum ermittelt das Verfahren 400, ob das Ende der Momentaufnahme erreicht wurde (Schritt 414). Falls ja, wartet das Verfahren 400, bis alle Replikations-Tasks abgeschlossen sind (Schritt 416). Falls nein, kehrt das Verfahren 400 zu Schritt 404 zurück und ruft es das nächste Objekt aus der Quellen-Momentaufnahme ab (Schritt 404). Das Verfahren 400 endet (Schritt 418).
  • Bei Ausführung des Momentaufnahme-Replikationsjobs wird, wie oben in 4 beschrieben, der Zustand der in der Momentaufnahme enthaltenen Objekte mit ihrem aktuellen Zustand im Ziel verglichen. Die Mechanismen führen den Vergleich an einer schlanken Darstellung der Objekte (z. B. Version und/oder Hashwert) und nicht an den vollständigen Objektdaten durch, wodurch sie eine skalierbare und effiziente Operation ermöglichen. Die Mechanismen entdecken die Zielobjekte, die nicht synchronisiert sind, und aktualisieren sie gemäß dem Zustand in der Quellen-Momentaufnahme.
  • In einer Ausführungsform haben die Mechanismen zur Momentaufnahme-Replikation besondere Eigenschaften, die eine skalierbare und effiziente benutzergesteuerte Replikation in einem System für synchronisierte Replikation ermöglichen, welche der umfassenden, wie folgt zusammengesetzten Liste von Anforderungen genügt. 1) Die Mechanismen gestatten dem Benutzer, eine Replikation eines Satzes von Objekten unabhängig von ihrem tatsächlichen Synchronisationszustand durchzuführen. 2) Die Mechanismen erkennen effizient unsynchronisierte Objekte, indem sie ihren Zustand im Ziel mit ihrem Zustand in der Quellen-Momentaufnahme vergleichen. 3) Die Mechanismen der vorliegenden Erfindung stören nicht das lokale Erstellen und Bearbeiten von Objekten, da die Mechanismen nur eine Momentaufnahme des Zustands der Objekte erstellen, wobei sie den vom logischen Speichersystem bereitgestellten effizienten Momentaufnahme-Mechanismus verwenden. 4) Die Mechanismen beeinträchtigen nicht die normale Replikationsreihenfolge der Quellenoperationen, da eine Momentaufnahme als ein weiterer Replikationsjob zur Replikation hinzugefügt wird. 5) Die Mechanismen gestatten für die benutzergesteuerte Replikation eines Satzes von Objekten unabhängig von den eigentlichen Replikationsprozeduren zu sein.
  • Wie der Fachmann erkennen wird, können Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogramm-Produkt verkörpert sein. Entsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständig auf Hardware beruhenden Ausführungsform, einer vollständig auf Software beruhenden Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Software- und Hardware-Aspekte, die hierin alle allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können, kombinierenden Ausführungsform annehmen. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogramm-Produkts annehmen, das in einem oder mehreren computerlesbaren Medien, auf denen computerlesbarer Programmcode enthalten ist, verkörpert ist.
  • Jede beliebige Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Zu einem computerlesbaren Speichermedium können zum Beispiel, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, eine elektronische, magnetische, optische, elektromagnetische, Infrarot- oder Halbleiter-Vorrichtung oder -Einheit oder irgendeine geeignete Kombination der Vorerwähnten gehören. Zu spezielleren Beispielen (eine nichterschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM, Random Access Memory), ein Festwertspeicher (ROM, Read-Only Memory), ein löschbarer programmierbarer Festwertspeicher (EPROM, Erasable Programmable Read-Only Memory, oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Festwertspeicher (CD-ROM), eine Einheit zur optischen Speicherung, eine Einheit zur magnetischen Speicherung oder irgendeine geeignete Kombination der Vorerwähnten. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium irgendein materielles Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit ein bzw. einem Befehlsausführungssystem, eine bzw. einer Befehlsausführungsvorrichtung oder eine bzw. einer Befehlsausführungseinheit enthalten oder speichern kann.
  • Auf einem computerlesbaren Medium enthaltener Programmcode kann mittels irgendeines geeigneten Mediums einschließlich, aber nicht beschränkt auf drahtlos, drahtgebunden, Lichtwellenleiter, HF usw. oder irgendeiner geeigneten Kombination der Vorerwähnten übertragen werden. Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in irgendeiner Kombination einer oder mehrerer Programmiersprachen, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ oder dergleichen und herkömmliche verfahrensorientierte Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen, geschrieben sein. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letzteren Szenario kann der entfernt angeordnete Computer über jede Art von Netzwerk, darunter ein lokales Netz (LAN, Local Area Network) oder ein weiträumiges Netz (WAN, Wide Area Network), mit dem Computer des Benutzers verbunden sein oder kann die Verbindung zu einem externen Computer hergestellt sein (zum Beispiel mittels eines Internet-Diensteanbieters über das Internet).
  • Aspekte der vorliegenden Erfindung wurden oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogramm-Produkten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich von selbst, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden kann. Diese Computerprogrammbefehle können an einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung gegeben werden, um eine Maschine zu produzieren, so dass die Befehle, welche über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der im Block oder in den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Vorgänge schaffen.
  • Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, so dass die im computerlesbaren Medium gespeicherten Befehle ein Erzeugnis produzieren, das Befehle enthält, welche die bzw. den im Block oder in den Blöcken von Ablaufplan und/oder Blockschaubildern angegebene(n) Funktion/Vorgang implementieren. Die Computerprogrammbefehle können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder den anderen Einheiten ausgeführt werden, um einen computer-ausgeführten Prozess zu produzieren, so dass die Befehle, welche auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der im Block oder in den Blöcken von Ablaufplan und/oder Blockschaubildern angegebenen Funktionen/Vorgänge schaffen.
  • Die Ablaufdiagramme und die Blockschaubilder in den obigen Figuren veranschaulichen Architektur, Funktionalität und Betrieb möglicher Umsetzungen von Systemen, Verfahren und Computerprogramm-Produkten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block im Ablaufplan oder in den Blockschaubildern ein Codemodul, einen Codeabschnitt oder einen Codeteil darstellen, welches bzw. welcher einen oder mehrere lauffähige Befehle zum Umsetzen der angegebenen logischen Verknüpfungen) enthält. Es sollte auch bemerkt werden, dass bei manchen alternativen Umsetzungen die im Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei aufeinanderfolgend gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder können die Blöcke manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach erforderlicher Funktionalität. Es wird auch bemerkt werden, dass jeder Block der Blockschaubilder und/oder des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder im Ablaufplan durch spezielle, auf Hardware beruhende Systeme, welche die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezial-Hardware und Computerbefehlen ausgeführt werden können.
  • Wenn auch eine oder mehrere Ausführungsformen der vorliegenden Erfindung eingehend dargestellt wurden, wird der Fachmann erkennen, dass Veränderungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne vom Umfang der vorlegenden Erfindung, wie in den folgenden Ansprüchen bekanntgemacht, abzuweichen.

Claims (10)

  1. Verfahren zur benutzergesteuerten Replikation in einem System für synchronisierte Objektreplikation in einer eine Prozessoreinheit verwendenden Datenverarbeitungsumgebung, welches aufweist: das Erstellen einer Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation, wobei die Momentaufnahme zu einem Momentaufnahme-Replikationsjob bestimmt wird; das Hinzufügen des Momentaufnahme-Replikationsjobs zu einem Ende einer Replikationswarteschlange, um die Ausführung für die synchronisierte Objektreplikation zu erwarten; und das Erkennen unsynchronisierter Objekte in einem Bestimmungsziel durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs, wobei die unsynchronisierten Objekte im Bestimmungsziel auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs synchronisiert werden.
  2. Verfahren nach Anspruch 1, außerdem aufweisend das Ausführen entweder von: dem Replizieren der Operation vor dem Replizieren des Momentaufnahmereplikationsjobs, wenn eine Operation vor dem Erstellen auftritt, oder, dem Replizieren der Operation nach dem Replizieren des Momentaufnahmereplikationsjobs, wenn eine Operation nach dem Erstellen auftritt,.
  3. Verfahren nach Anspruch 2, außerdem aufweisend das Aufteilen der Operation in eine Datenoperation und eine Metadatenoperation, wobei die Datenoperation entweder aus dem Schreiben neuer Daten oder aus dem Löschen alter Daten besteht und die Metadatenoperation entweder aus dem Ändern von Metadaten eines Knotens oder dem Ändern einer Baumstruktur besteht.
  4. Verfahren nach Anspruch 1, wobei das Vergleichen eher das Vergleichen einer schlanken Darstellung der ausgewählten Objekte als aller Daten in einem Satz der ausgewählten Objekte aufweist.
  5. Verfahren nach Anspruch 1, außerdem aufweisend, in Verbindung mit dem Vergleich, das Durchlaufen der Momentaufnahme durch Vergleichen mindestens eines von einer Baumstruktur und/oder von Daten und/oder von Metadaten der Momentaufnahme mit Objekten im Bestimmungsziel.
  6. Verfahren nach Anspruch 1, außerdem aufweisend, in Verbindung mit der Ausführung des Momentaufnahme-Replikationsjobs, das Ausführen entweder von: dem Abrufen mindestens eines Objekts der ausgewählten Objekte aus der Momentaufnahme auf eine geordnete Weise, dem Senden einer Objektidentifikation (ID) und einer Zustands-ID des mindestens einen Objekts an das Bestimmungsziel, dem Suchen nach der Objekt-ID im Bestimmungsziel, wobei, wenn die Objekt-ID ausfindig gemacht ist, die Zustands-ID des mindestens einen Objekts mit einer aktuellen Zustands-ID des Bestimmungsziels verglichen wird, oder, wenn weder die Objekt-ID im Bestimmungsziel vorhanden ist noch die Zustands-ID des mindestens einen Objekts und die aktuelle Zustands-ID des Bestimmungsziels übereinstimmen, werden Replikations-Tasks zum Replizieren von Daten und Metadaten des mindestens einen Objekts in das Bestimmungsziel geöffnet.
  7. Verfahren nach Anspruch 1 außerdem aufweisend, in Verbindung mit der benutzergesteuerten Replikation der ausgewählten Objekte, das Replizieren der ausgewählten Objekte unabhängig von einem tatsächlichen synchronisierten Zustand der ausgewählten Objekte.
  8. Verfahren nach Anspruch 1, außerdem aufweisend, in Verbindung mit der benutzergesteuerten Replikation der ausgewählten Objekte, das Replizieren der ausgewählten Objekte unabhängig von mindestens einem von einer Replikationsprozedur und/oder einem Protokoll und/oder einem Dateisystem-Aufbau und/oder einer Implementierung.
  9. System zur benutzergesteuerten Replikation in einem System für synchronisierte Objektreplikation in einer Datenverarbeitungsumgebung, welches aufweist: eine in der Datenverabeitungsumgebung betreibbare Prozessoreinheit, wobei die Prozessoreinheit geeignet ist für: das Erstellen einer Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation, wobei die Momentaufnahme zu einem Momentaufnahme-Replikationsjob bestimmt wird, das Hinzufügen des Momentaufnahme-Replikationsjobs zu einem Ende einer Replikationswarteschlange, um die Ausführung für die synchronisierte Objektreplikation zu erwarten, und das Erkennen unsynchronisierter Objekte in einem Bestimmungsziel durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs, wobei die unsynchronisierten Objekte im Bestimmungsziel auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs synchronisiert werden.
  10. Computerprogramm-Produkt für benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikation in einer eine Prozessoreinheit verwendenden Datenverarbeitungsumgebung, wobei das Computerprogramm-Produkt ein computerlesbares Speichermedium mit darin gespeicherten computerlesbaren Programmcodeabschnitten aufweist, wobei die computerlesbaren Programmcodeabschnitte aufweisen: einen ersten ausführbaren Abschnitt zum Erstellen einer Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation, wobei die Momentaufnahme zu einem Momentaufnahme-Replikationsjob bestimmt wird; einen zweiten ausführbaren Abschnitt zum Hinzufügen des Momentaufnahme-Replikationsjobs zu einem Ende einer Replikationswarteschlange, um die Ausführung für die synchronisierte Objektreplikation zu erwarten; und einen dritten ausführbaren Abschnitt zum Erkennen unsynchronisierter Objekte in einem Bestimmungsziel durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs, wobei die unsynchronisierten Objekte im Bestimmungsziel auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs synchronisiert werden.
DE102013209528A 2012-06-05 2013-05-23 Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen Ceased DE102013209528A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/489,383 2012-06-05
US13/489,383 US9430542B2 (en) 2012-06-05 2012-06-05 User initiated replication in a synchronized object replication system

Publications (1)

Publication Number Publication Date
DE102013209528A1 true DE102013209528A1 (de) 2013-12-05

Family

ID=49579696

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013209528A Ceased DE102013209528A1 (de) 2012-06-05 2013-05-23 Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen

Country Status (2)

Country Link
US (5) US9430542B2 (de)
DE (1) DE102013209528A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125001A (zh) * 2018-10-31 2020-05-08 伊姆西Ip控股有限责任公司 快照复制方法、电子设备和计算机程序产品

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2729877A4 (de) 2011-07-08 2015-06-17 Box Inc Desktopapplikation zum zugriff und zur interaktion mit arbeitsplätzen in einem cloud-basierten inhaltsverwaltungssystem und synchronisierungsmechanismen dafür
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9773051B2 (en) 2011-11-29 2017-09-26 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US10037370B2 (en) * 2012-06-29 2018-07-31 M-Files Oy Method, a server, a system and a computer program product for copying data from a source server to a target server
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US8930311B1 (en) * 2012-12-14 2015-01-06 Netapp, Inc. Push-based piggyback system for source-driven logical replication in a storage environment
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9507795B2 (en) 2013-01-11 2016-11-29 Box, Inc. Functionalities, features, and user interface of a synchronization client to a cloud-based environment
EP2757491A1 (de) 2013-01-17 2014-07-23 Box, Inc. Konfliktlösung, Wiederversuchbedingungsverwaltung und Handhabung von Problemdateien für den Synchronisations-Client zu einer Plattform auf Cloud-Basis
US9405816B2 (en) * 2013-03-05 2016-08-02 Microsoft Technology Licensing, Llc Reconciliation of geo-replicated database clusters
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US10311028B2 (en) 2013-05-16 2019-06-04 Oracle International Corporation Method and apparatus for replication size estimation and progress monitoring
GB2515192B (en) 2013-06-13 2016-12-14 Box Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
EP3358466B1 (de) * 2013-12-12 2019-11-13 Huawei Technologies Co., Ltd. Datenreplikationsverfahren und speichersystem
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US11132336B2 (en) 2015-01-12 2021-09-28 Qumulo, Inc. Filesystem hierarchical capacity quantity and aggregate metrics
US9836480B2 (en) 2015-01-12 2017-12-05 Qumulo, Inc. Filesystem capacity and performance metrics and visualizations
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10326836B2 (en) * 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
US11616834B2 (en) 2015-12-08 2023-03-28 Pure Storage, Inc. Efficient replication of a dataset to the cloud
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10394482B2 (en) 2016-04-14 2019-08-27 Seagate Technology Llc Snap tree arbitrary replication
US10055149B2 (en) 2016-04-14 2018-08-21 Seagate Technology Llc Intelligent snapshot tree replication
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US11068500B1 (en) * 2016-09-29 2021-07-20 EMC IP Holding Company LLC Remote snapshot access in a replication setup
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10095729B2 (en) 2016-12-09 2018-10-09 Qumulo, Inc. Managing storage quotas in a shared storage system
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10896101B2 (en) * 2017-08-07 2021-01-19 Datto, Inc. Multiclient backup replication apparatuses, methods and systems
US10635541B2 (en) * 2017-10-23 2020-04-28 Vmware, Inc. Fine-grained conflict resolution in a shared log
US10649981B2 (en) * 2017-10-23 2020-05-12 Vmware, Inc. Direct access to object state in a shared log
US11392567B2 (en) 2017-10-30 2022-07-19 Vmware, Inc. Just-in-time multi-indexed tables in a shared log
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US10956078B2 (en) * 2018-03-27 2021-03-23 EMC IP Holding Company LLC Storage system with loopback replication process providing object-dependent slice assignment
US10866969B2 (en) 2018-03-28 2020-12-15 EMC IP Holding Company LLC Storage system with loopback replication process providing unique identifiers for collision-free object pairing
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11360936B2 (en) 2018-06-08 2022-06-14 Qumulo, Inc. Managing per object snapshot coverage in filesystems
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US10534758B1 (en) 2018-12-20 2020-01-14 Qumulo, Inc. File system cache tiers
US11151092B2 (en) 2019-01-30 2021-10-19 Qumulo, Inc. Data replication in distributed file systems
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11119862B2 (en) 2019-10-11 2021-09-14 Seagate Technology Llc Delta information volumes to enable chained replication of data by uploading snapshots of data to cloud
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US10725977B1 (en) 2019-10-21 2020-07-28 Qumulo, Inc. Managing file system state during replication jobs
US11567899B2 (en) 2019-12-03 2023-01-31 Western Digital Technologies, Inc. Managing dependent delete operations among data stores
US11409711B2 (en) * 2019-12-03 2022-08-09 Western Digital Technologies, Inc. Barriers for dependent operations among sharded data stores
US20210165768A1 (en) * 2019-12-03 2021-06-03 Western Digital Technologies, Inc. Replication Barriers for Dependent Data Transfers between Data Stores
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US10860372B1 (en) 2020-01-24 2020-12-08 Qumulo, Inc. Managing throughput fairness and quality of service in file systems
US10795796B1 (en) 2020-01-24 2020-10-06 Qumulo, Inc. Predictive performance analysis for file systems
US11151001B2 (en) * 2020-01-28 2021-10-19 Qumulo, Inc. Recovery checkpoints for distributed file systems
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
CN113391949A (zh) * 2020-03-13 2021-09-14 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机程序产品
US10936551B1 (en) 2020-03-30 2021-03-02 Qumulo, Inc. Aggregating alternate data stream metrics for file systems
US10936538B1 (en) 2020-03-30 2021-03-02 Qumulo, Inc. Fair sampling of alternate data stream metrics for file systems
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
JP2022091308A (ja) * 2020-12-09 2022-06-21 株式会社日立製作所 ストレージシステム及びデータ削除方法
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11157458B1 (en) 2021-01-28 2021-10-26 Qumulo, Inc. Replicating files in distributed file systems using object-based data storage
US11461241B2 (en) 2021-03-03 2022-10-04 Qumulo, Inc. Storage tier management for file systems
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11669255B2 (en) 2021-06-30 2023-06-06 Qumulo, Inc. Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
US11294604B1 (en) 2021-10-22 2022-04-05 Qumulo, Inc. Serverless disk drives based on cloud storage
US11354273B1 (en) 2021-11-18 2022-06-07 Qumulo, Inc. Managing usable storage space in distributed file systems
US11599508B1 (en) 2022-01-31 2023-03-07 Qumulo, Inc. Integrating distributed file systems with object stores
US11722150B1 (en) 2022-09-28 2023-08-08 Qumulo, Inc. Error resistant write-ahead log
US11729269B1 (en) 2022-10-26 2023-08-15 Qumulo, Inc. Bandwidth management in distributed file systems
US11921677B1 (en) 2023-11-07 2024-03-05 Qumulo, Inc. Sharing namespaces across file system clusters
US11934660B1 (en) 2023-11-07 2024-03-19 Qumulo, Inc. Tiered data storage with ephemeral and persistent tiers

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684984A (en) 1994-09-29 1997-11-04 Apple Computer, Inc. Synchronization and replication of object databases
US5937414A (en) 1997-02-28 1999-08-10 Oracle Corporation Method and apparatus for providing database system replication in a mixed propagation environment
US7567991B2 (en) 2003-06-25 2009-07-28 Emc Corporation Replication of snapshot using a file system copy differential
US7831550B1 (en) 2003-09-30 2010-11-09 Symantec Operating Corporation Propagating results of a volume-changing operation to replicated nodes
US7403958B2 (en) 2005-01-19 2008-07-22 International Business Machines Corporation Synchronization-replication concurrency using non-shared snapshot query on a history table at read-uncommitted isolation level
US7844787B2 (en) * 2006-12-18 2010-11-30 Novell, Inc. Techniques for data replication with snapshot capabilities
US8086565B2 (en) 2008-02-18 2011-12-27 Microsoft Corporation File system watcher in the presence of different file systems
US8135930B1 (en) * 2008-07-14 2012-03-13 Vizioncore, Inc. Replication systems and methods for a virtual computing environment
US20100082538A1 (en) 2008-09-29 2010-04-01 Heiko Rentsch Isolated replication of shared objects
US8489831B2 (en) * 2008-10-01 2013-07-16 Hewlett-Packard Development Company, L.P. Systems and methods for data snapshot replication using a token in a replication link
US8504515B2 (en) 2010-03-30 2013-08-06 Commvault Systems, Inc. Stubbing systems and methods in a data replication environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125001A (zh) * 2018-10-31 2020-05-08 伊姆西Ip控股有限责任公司 快照复制方法、电子设备和计算机程序产品

Also Published As

Publication number Publication date
US20160292253A1 (en) 2016-10-06
US9734225B2 (en) 2017-08-15
US9892186B2 (en) 2018-02-13
US20140059007A1 (en) 2014-02-27
US10657153B2 (en) 2020-05-19
US9384252B2 (en) 2016-07-05
US20160283328A1 (en) 2016-09-29
US9430542B2 (en) 2016-08-30
US20130325803A1 (en) 2013-12-05
US20180081958A1 (en) 2018-03-22

Similar Documents

Publication Publication Date Title
DE102013209528A1 (de) Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen
DE112013001421B4 (de) Auf Richtlinien beruhendes Verwalten von Speicherfunktionen in Datenreplikationsumgebungen
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112011104419B4 (de) Bereichsmigration für gepaarte Speicherung
DE102013204972B4 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
CN103473250B (zh) 用于保存文件系统节点的过去状态的方法与系统
DE112011100534B4 (de) Mehrstufiger Sicherungsprozess
DE112011100112B4 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE60113586T2 (de) Übertragen von miteinander verbundenen Datenobjekten in einer verteilten Datenspeicherumgebung
DE112016001295T5 (de) Neusynchronisieren auf ein erstes Speichersystem durch Spiegeln des ersten Speichersystems nach einem Failover zu einem zweiten Speichersystem
DE102018002899A1 (de) Verwalten von Digitalassets, die als Komponenten und gepackte Dateien gespeichert sind
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE112020003423T5 (de) Architektur von virtuellem speichersystem
DE112014006156B4 (de) Speichersystem und Datenmigrationsverfahren
DE102012218269B4 (de) Schnittstelle zur Verwaltung von Datenverschiebung in einem Speichersystem mit thin provisioning
DE102020120553A1 (de) Virtuell persistente volumes für containerisierte anwendungen
DE112012005275T5 (de) Datenauswahl zur Sicherung von Datenspeichern
DE112018004008B4 (de) Auf dateisysteminhalten beruhende sicherheit
DE10393771T5 (de) Schnelle Datensicherungsspeicherung und schnelle Datenwiederherstellung (FBSRD)
DE112010004931T5 (de) Mehrphasige Wiederherstellung von Dateisystemen mit SelektiverBedarfsweiser Verfügbarkeit von Daten(
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE102021108572A1 (de) Containerisierte anwendungsmanifeste und virtuelle persistente volumes
DE112012003695T5 (de) Aufrechterhalten mehrerer Zielkopien

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final