DE102022127040A1 - Migration von zeitschriftengruppen in einem speichersystem - Google Patents

Migration von zeitschriftengruppen in einem speichersystem Download PDF

Info

Publication number
DE102022127040A1
DE102022127040A1 DE102022127040.8A DE102022127040A DE102022127040A1 DE 102022127040 A1 DE102022127040 A1 DE 102022127040A1 DE 102022127040 A DE102022127040 A DE 102022127040A DE 102022127040 A1 DE102022127040 A1 DE 102022127040A1
Authority
DE
Germany
Prior art keywords
journal
migration
journals
backup process
storage system
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
DE102022127040.8A
Other languages
English (en)
Inventor
Callum Murray
Richard Phillip MAYO
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102022127040A1 publication Critical patent/DE102022127040A1/de
Pending 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/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • 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/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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/1461Backup scheduling policy
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems
    • 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/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Beispielimplementierungen beziehen sich auf Metadatenoperationen in einem Speichersystem. Ein Beispiel umfasst das Empfangen einer Vielzahl von Datenströmen, die in einem permanenten Speicher des Deduplizierungsspeichersystems gespeichert werden sollen, durch eine Speichersteuerung; das Identifizieren eines Satzes von Journalen in einer ersten Journalgruppe, die während eines ersten Sicherungsprozesses modifiziert werden, durch die Speichersteuerung; Bestimmen, durch die Speichersteuerung, eines Zählwerts des Satzes von Journalen, die während des ersten Sicherungsprozesses modifiziert werden; Vergleichen, durch die Speichersteuerung, des bestimmten Zählwerts mit einem Migrationsschwellenwert; und Migrieren, durch die Speichersteuerung, mindestens eines Journals des Satzes von Journalen zu einer zweiten Journalgruppe, basierend mindestens auf einem Vergleich des bestimmten Zählwerts mit dem Migrationsschwellenwert.

Description

  • Hintergrund
  • Techniken zur Datenreduzierung können angewandt werden, um die Menge der in einem Speichersystem gespeicherten Daten zu verringern. Ein Beispiel für ein Datenreduktionsverfahren ist die Datendeduplizierung. Die Datendeduplizierung identifiziert doppelte Dateneinheiten und versucht, die Anzahl der im Speichersystem gespeicherten doppelten Dateneinheiten zu reduzieren oder zu eliminieren.
  • Kurzbeschreibung der Zeichnungen
  • Einige Ausführungsformen werden anhand der folgenden Abbildungen beschrieben.
    • sind schematische Darstellungen eines beispielhaften Speichersystems in Übereinstimmung mit einigen Ausführungsformen.
    • zeigt ein Beispiel für Datenstrukturen in Übereinstimmung mit einigen Implementierungen.
    • ist eine Darstellung von Beispiel-Datenstrukturen in Übereinstimmung mit einigen Implementierungen.
    • sind Abbildungen einer beispielhaften Journalmigration gemäß einigen Implementierungen.
    • ist eine Illustration eines Beispielprozesses in Übereinstimmung mit einigen Implementierungen.
    • sind Abbildungen von Beispiel-Datenstrukturen gemäß einigen Implementierungen.
    • ist eine Illustration eines Beispielprozesses in Übereinstimmung mit einigen Implementierungen.
    • ist eine Illustration eines Beispielprozesses in Übereinstimmung mit einigen Implementierungen.
    • ist ein Diagramm eines maschinenlesbaren Mediums, das Befehle in Übereinstimmung mit einigen Implementierungen speichert.
    • ist ein schematisches Diagramm eines Beispiel-Computergeräts in Übereinstimmung mit einigen Implementierungen.
  • In den Zeichnungen bezeichnen identische Referenznummern ähnliche, aber nicht unbedingt identische Elemente. Die Abbildungen sind nicht unbedingt maßstabsgetreu, und die Größe einiger Teile kann übertrieben sein, um das gezeigte Beispiel deutlicher zu machen. Darüber hinaus enthalten die Zeichnungen Beispiele und/oder Ausführungsformen, die mit der Beschreibung übereinstimmen; die Beschreibung ist jedoch nicht auf die in den Zeichnungen dargestellten Beispiele und/oder Ausführungsformen beschränkt.
  • Ausführliche Beschreibung
  • In der vorliegenden Offenlegung schließt die Verwendung des Begriffs „ein“, „ein“ oder „die“ auch die Pluralformen ein, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Auch der Begriff „umfasst“, „einschließlich“, „umfasst“, „umfasst“, „haben“ oder „haben“, wenn er in dieser Offenlegung verwendet wird, spezifiziert das Vorhandensein der angegebenen Elemente, schließt aber das Vorhandensein oder die Zugabe anderer Elemente nicht aus.
  • In einigen Beispielen kann ein Speichersystem eine Sammlung von Daten (hier als „Datenstrom“ oder „Datenfluss“ bezeichnet) in deduplizierter Form sichern und so den für die Speicherung des Datenflusses erforderlichen Speicherplatz reduzieren. Das Speichersystem kann ein „Sicherungselement“ erstellen, um einen Datenstrom in deduplizierter Form darzustellen. Ein Datenstrom (und das Backup-Element, das ihn repräsentiert) kann einem oder mehreren Benutzerobjekten entsprechen (z. B. einer oder mehreren Dateien, einem Dateisystem, einem oder mehreren Volumes oder einer anderen geeigneten Datensammlung). Das Speichersystem kann beispielsweise einen Deduplizierungsprozess durchführen, bei dem ein Datenstrom in diskrete Dateneinheiten (oder „Chunks“) zerlegt und „Fingerabdrücke“ (siehe unten) für diese eingehenden Dateneinheiten bestimmt werden. Ferner kann das Speichersystem die Fingerabdrücke eingehender Dateneinheiten mit Fingerabdrücken gespeicherter Dateneinheiten vergleichen und so feststellen, welche eingehenden Dateneinheiten Duplikate zuvor gespeicherter Dateneinheiten sind (z. B. wenn der Vergleich übereinstimmende Fingerabdrücke ergibt). Im Falle von Dateneinheiten, die Duplikate sind, kann das Speichersystem Verweise auf zuvor gespeicherte Dateneinheiten speichern, anstatt die doppelten eingehenden Dateneinheiten zu speichern. Auf diese Weise kann der Deduplizierungsprozess den Platzbedarf für die Speicherung des empfangenen Datenstroms verringern.
  • Wie hier verwendet, bezieht sich der Begriff „Fingerabdruck“ auf einen Wert, der durch Anwendung einer Funktion auf den Inhalt der Dateneinheit abgeleitet wird (wobei der „Inhalt“ den gesamten Inhalt oder eine Teilmenge des Inhalts der Dateneinheit umfassen kann). Ein Beispiel für eine Funktion, die angewendet werden kann, ist eine Hash-Funktion, die auf der Grundlage des Inhalts einer eingehenden Dateneinheit einen Hash-Wert erzeugt. Beispiele für Hash-Funktionen sind kryptografische Hash-Funktionen wie die Hash-Funktionen des Secure Hash Algorithm 2 (SHA-2), z. B. SHA-224, SHA-256, SHA-384, usw. In anderen Beispielen können auch andere Arten von Hash-Funktionen oder andere Arten von Fingerprint-Funktionen verwendet werden.
  • Ein „Speichersystem“ kann ein Speichergerät oder eine Anordnung von Speichergeräten umfassen. Ein Speichersystem kann auch einen oder mehrere Speicher-Controller enthalten, die den Zugriff auf das/die Speichergerät(e) verwalten. Eine „Dateneinheit“ kann sich auf jeden Teil der Daten beziehen, der im Speichersystem separat identifiziert werden kann. In einigen Fällen kann sich eine Dateneinheit auf einen Chunk, eine Sammlung von Chunks oder einen anderen Teil von Daten beziehen. In einigen Beispielen kann ein Speichersystem Dateneinheiten in einem persistenten Speicher speichern. Die dauerhafte Speicherung kann mit einem oder mehreren dauerhaften (z. B. nichtflüchtigen) Speichergeräten, wie plattenbasierten Speichergeräten (z. B. Festplattenlaufwerken (HDDs)), Solid-State-Geräten (SSDs), wie Flash-Speichergeräten oder Ähnlichem, oder einer Kombination davon erfolgen.
  • Ein „Steuergerät“ kann sich auf einen Hardware-Verarbeitungsschaltkreis beziehen, der eine beliebige oder eine Kombination aus einem Mikroprozessor, einem Kern eines Multi-Core-Mikroprozessors, einem Mikrocontroller, einem programmierbaren integrierten Schaltkreis, einem programmierbaren Gate-Array, einem digitalen Signalprozessor oder einem anderen Hardware-Verarbeitungsschaltkreis umfassen kann. Alternativ kann sich ein „Steuergerät“ auf eine Kombination aus einer Hardware-Verarbeitungsschaltung und maschinenlesbaren Anweisungen (Software und/oder Firmware) beziehen, die auf der Hardware-Verarbeitungsschaltung ausführbar sind.
  • In einigen Beispielen kann ein Speichersystem gespeicherte Metadaten für die Verarbeitung und Rekonstruktion eines ursprünglichen Datenstroms aus den gespeicherten Dateneinheiten verwenden. Diese gespeicherten Metadaten können Datenrezepte (hier auch als „Manifeste“ bezeichnet) enthalten, die die Reihenfolge angeben, in der bestimmte Dateneinheiten (z. B. in einem Datenstrom) empfangen wurden. Um die gespeicherten Daten abzurufen (z. B. als Reaktion auf eine Leseanfrage), kann das Speichersystem ein Manifest verwenden, um die Reihenfolge der empfangenen Dateneinheiten zu bestimmen und so den ursprünglichen Datenstrom wiederherzustellen. Das Manifest kann eine Folge von Datensätzen enthalten, wobei jeder Datensatz einen bestimmten Satz von Dateneinheiten darstellt. Die Datensätze des Manifests können ein oder mehrere Felder (hier auch als „Zeigerinformationen“ bezeichnet) enthalten, die Containerindizes identifizieren, die Speicherinformationen für die Dateneinheiten enthalten. Beispielsweise können die Speicherinformationen ein oder mehrere Indexfelder enthalten, die Standortinformationen (z. B. Container, Offsets usw.) für die gespeicherten Dateneinheiten, Kompressions- und/oder Verschlüsselungsmerkmale der gespeicherten Dateneinheiten usw. angeben.
  • In einigen Beispielen kann das Speichersystem Journale verwenden, die mit den Container-Indizes verbunden sind. Wenn Ereignisse eintreten, die zu Änderungen an den in einem Container-Index gespeicherten Metadaten führen, können diese Änderungen in einem mit diesem Container-Index verbundenen Journal aufgezeichnet werden. Wenn anschließend die Notwendigkeit besteht, den Container-Index in den permanenten Speicher zu schreiben, kann das Journal anstelle des Container-Indexes in den permanenten Speicher geschrieben werden. Da das Journal nur die Änderungen am Container-Index aufzeichnet, verbraucht das Schreiben des Journals in den permanenten Speicher relativ weniger Verarbeitungszeit und Bandbreite, als wenn der Container-Index in den permanenten Speicher geschrieben würde. In einigen Beispielen kann eine Journalgruppe aus mehreren Journalen gebildet werden. Die Journalgruppe kann als Ganzes in den persistenten Speicher geschrieben werden, um die Gesamtzahl der Schreibvorgänge zu verringern (d. h. im Vergleich zur Durchführung eines anderen Schreibvorgangs für jedes Journal).
  • In einigen Beispielen kann das Speichersystem Datenströme zu verschiedenen Zeitpunkten empfangen und Sicherungselemente erzeugen, um die empfangenen Datenströme in einer deduplizierten Form darzustellen. Der Prozess der Erzeugung eines Sicherungselements kann hier als „Sicherungsprozess“ bezeichnet werden. In einigen Beispielen kann es vorkommen, dass nach Abschluss mehrerer Sicherungsprozesse die Journale, auf die während eines nachfolgenden Sicherungsprozesses zugegriffen werden soll, über mehrere Journalgruppen verstreut sind. Daher kann die Durchführung des nachfolgenden Sicherungsprozesses eine relativ große Anzahl von Ein-/Ausgabeoperationen (E/A) erfordern, um die mehreren Journalgruppen aus dem dauerhaften Speicher in den Speicher zu laden und die mehreren Journalgruppen aus dem Speicher in den dauerhaften Speicher zu schreiben. Dementsprechend kann eine relativ große Anzahl von Verteilungen der Journale über die Journalgruppen die Leistung des Speichersystems verringern.
  • In Übereinstimmung mit einigen Implementierungen der vorliegenden Offenlegung kann ein Speichersystem Journale zwischen Journalgruppen migrieren, um die Verteilung der Journale zu reduzieren oder zu kontrollieren. In einigen Implementierungen kann eine Speichersteuerung einen Satz von Journalen in einer ersten Journalgruppe identifizieren, die während eines ersten Sicherungsprozesses geändert werden. Ferner kann die Speichersteuerung eine Anzahl der Journale in der identifizierten Gruppe von Journalen bestimmen und die bestimmte Anzahl mit einem Migrationsschwellenwert vergleichen. In einigen Implementierungen kann der Migrationsschwellenwert die Mindestanzahl der geänderten Journale (d.h. der Journale, die während eines Sicherungsprozesses geändert wurden) angeben, die in einer bestimmten Journalgruppe enthalten sein sollten (z.B. um eine Migration zu vermeiden). Die Speichersteuerung kann ein Journal in eine zweite Journalgruppe migrieren (hier als „Journalmigration“ bezeichnet), und zwar mindestens auf der Grundlage des Vergleichs der Anzahl der modifizierten Journale mit dem Migrationsschwellenwert. Auf diese Weise können die Journale, auf die während eines nachfolgenden Sicherungsprozesses wahrscheinlich zugegriffen wird, in weniger Journalgruppen konsolidiert werden. Dementsprechend können einige Implementierungen die Anzahl der E/A-Operationen für die Journale reduzieren und dadurch die Leistung des Deduplizierungsspeichersystems verbessern. Verschiedene Details der Migration von Journalen werden im Folgenden unter Bezugnahme auf dieAbb. 1-9.
  • ABB. 1A-1B - Beispiel Speichersystem
  • zeigt ein Beispiel für ein Speichersystem 100, das einen Speicher-Controller 110, einen Speicher 115 und einen dauerhaften Speicher 140 gemäß einigen Implementierungen umfasst. Der dauerhafte Speicher 140 kann ein oder mehrere nicht transitorische Speichermedien wie Festplattenlaufwerke (HDDs), Solid-State-Laufwerke (SSDs), optische Festplatten usw. oder eine Kombination davon umfassen. Der Speicher 115 kann in einem Halbleiterspeicher wie z. B. einem Direktzugriffsspeicher (RAM) implementiert sein. In einigen Beispielen kann die Speichersteuerung 110 durch Hardware (z. B. elektronische Schaltungen) oder eine Kombination aus Hardware und Programmierung (z. B. mit mindestens einem Prozessor und Anweisungen, die von dem mindestens einen Prozessor ausgeführt werden können und auf mindestens einem maschinenlesbaren Speichermedium gespeichert sind) implementiert werden.
  • In einigen Implementierungen kann das Speichersystem 100 einen Datenstrom empfangen und einen Sicherungsprozess durchführen, um ein Sicherungselement zu erstellen, das den empfangenen Datenstrom darstellt. Beispielsweise kann die Speichersteuerung 110 den Datenstrom in Dateneinheiten unterteilen und mindestens eine Kopie jeder Dateneinheit in einem Datencontainer 170 speichern (z. B. durch Anhängen der Dateneinheiten an das Ende des Datencontainers 170). In einigen Beispielen kann jeder Datencontainer 170 in Teile unterteilt sein (hier auch als „Einheiten“ bezeichnet).
  • In einer oder mehreren Implementierungen kann die Speichersteuerung 110 einen Fingerabdruck für jede Dateneinheit erzeugen. Der Fingerabdruck kann zum Beispiel einen vollständigen oder teilweisen Hash-Wert für die Dateneinheit enthalten. Um festzustellen, ob eine eingehende Dateneinheit ein Duplikat einer gespeicherten Dateneinheit ist, kann die Speichersteuerung 110 den für die eingehende Dateneinheit erzeugten Fingerabdruck mit den Fingerabdrücken der gespeicherten Dateneinheiten vergleichen. Ergibt dieser Vergleich eine Übereinstimmung, so kann die Speichersteuerung 110 feststellen, dass ein Duplikat der eingehenden Dateneinheit bereits im Speichersystem 100 gespeichert ist.
  • Wie in dargestellt, kann der Permanentspeicher 140 Manifeste 150, Containerindizes 160, Datencontainer 170 und Journalgruppen 120 speichern. In einigen Implementierungen kann die Speichersteuerung 110 ein Manifest 150 erzeugen, um die Reihenfolge aufzuzeichnen, in der die Dateneinheiten empfangen wurden. Darüber hinaus kann das Manifest 150 einen Zeiger oder andere Informationen enthalten, die den Containerindex 160 angeben, der mit jeder Dateneinheit verbunden ist. In einigen Implementierungen kann der zugehörige Containerindex 160 den Ort angeben, an dem die Dateneinheit gespeichert ist. Beispielsweise kann der zugehörige Containerindex 160 Informationen enthalten, die angeben, dass die Dateneinheit an einem bestimmten Offset in einer Entität gespeichert ist, und dass die Entität an einem bestimmten Offset in einem Datencontainer 170 gespeichert ist. Ferner kann der Container-Index 160 Verweiszahlen enthalten, die die Anzahl der Manifeste 150 angeben, die auf jede Dateneinheit verweisen.
  • In einigen Implementierungen kann der Speicher-Controller 110 eine Leseanforderung für den Zugriff auf die gespeicherten Daten erhalten und daraufhin auf das Manifest 150 zugreifen, um die Reihenfolge der Dateneinheiten zu bestimmen, aus denen zumindest ein Teil des ursprünglichen Datenstroms besteht. Der Speicher-Controller 110 kann dann die im Manifest 150 enthaltenen Zeigerdaten verwenden, um die den Dateneinheiten zugeordneten Container-Indizes 160 zu identifizieren. Ferner kann die Speichersteuerung 110 die in den identifizierten Containerindizes 160 (und die im Manifest 150 enthaltenen Informationen) enthaltenen Informationen verwenden, um die Speicherorte der Dateneinheiten (z. B. Datencontainer 170, Entität, Offsets usw.) zu bestimmen, und kann dann die Dateneinheiten aus den bestimmten Speicherorten lesen.
  • zeigt eine Beispielimplementierung einer Journalgruppe 120. Wie dargestellt, kann eine Zeitschriftengruppe 120 eine Datenstruktur sein, die zur Gruppierung mehrerer Zeitschriften 130 dient. Jedes Journal 130 kann mit einem anderen Behälterindex 160 verbunden sein. Außerdem kann jedes Journal 130 Informationen enthalten, die Änderungen an den Daten anzeigen, die in dem diesem Journal 130 zugeordneten Containerindex 160 gespeichert sind. Wenn beispielsweise eine Kopie des Container-Index 160 im Speicher 115 geändert wird, um eine Änderung der Metadaten widerzuspiegeln, kann diese Änderung auch als Eintrag in dem zugehörigen Journal 130 aufgezeichnet werden. Jede Journalgruppe 120 kann als Ganzes zwischen dem Speicher 115 und dem Permanentspeicher 140 übertragen werden. In einigen Implementierungen kann jeder Container-Index 160 Informationen zur Identifizierung des Journals 130 und der Journalgruppe 120 enthalten, die mit diesem Container-Index 160 verbunden sind.
  • Wie in dargestellt, kann jede Journalgruppe 120 eine Kandidatenliste 180, eine Übertragungsliste 182 und eine Sicherungskennung 186 enthalten. Die Sicherungskennung 186 kann gesetzt oder aktualisiert werden, um den Sicherungsprozess zu identifizieren, der die Journalgruppe 120 gerade verwendet (z. B. ändert). Bei der Kandidatenliste 180 und der Transferliste 182 kann es sich um Datenstrukturen handeln, die dazu dienen, die Zeitschriften 130 der Zeitschriftengruppe 120 zu identifizieren, die während der Sicherungsprozesse geändert wurden. Beispielsweise können die Kandidatenliste 180 und die Transferliste 182 jeweils ein geordnetes Array von „Flags“ sein, die für jedes Journal 130 der Journalgruppe 120 anzeigen, ob das Journal 130 während eines Sicherungsprozesses geändert wurde. Das Setzen eines solchen Kennzeichens, das die Änderung eines entsprechenden Journals anzeigt, kann hier als „Kennzeichnung“ des bestimmten Journals 130 in der Kandidatenliste 180 oder der Übertragungsliste 182 bezeichnet werden. In den hier beschriebenen Beispielen können Flaggen mit Booleschen Werten, Binärwerten (0 oder 1) oder anderen geeigneten Datentypen implementiert werden.
  • In einigen Implementierungen kann die Speichersteuerung 110 Funktionen zur Reduzierung oder Begrenzung der Verteilung der Journale 130 auf verschiedene Journalgruppen 120 enthalten. Die Speichersteuerung 110 kann die Kandidatenliste 180 auffüllen, um die Journale 130 in einer ersten Journalgruppe 120 zu kennzeichnen, die während eines ersten Sicherungsprozesses geändert wurden. In einigen Implementierungen kann die Speichersteuerung 110 beim Erkennen des Beginns eines zweiten Sicherungsprozesses eine Anzahl der in der Kandidatenliste 180 gekennzeichneten Journale 130 bestimmen (d.h. die Gesamtzahl der Journale 130 in der ersten Journalgruppe 120 angeben, die während des ersten Sicherungsprozesses geändert wurden). Die Speichersteuerung 110 kann die Einleitung des zweiten Sicherungsprozesses durch Erkennung einer neuen oder geänderten Sicherungskennung 186 erkennen.
  • In einigen Implementierungen kann die Speichersteuerung 110, wenn die ermittelte Anzahl der in der Kandidatenliste 180 gekennzeichneten Journale 130 unter einem Migrationsschwellenwert liegt, die Flaggen der Kandidatenliste 180 in die Transferliste 182 kopieren (d. h., um den Satz von Journalen zu identifizieren, die während des ersten Sicherungsprozesses geändert wurden), und die Kandidatenliste 180 löschen (z. B. alle Flaggen in der Kandidatenliste 180 zurücksetzen). Die Speichersteuerung 110 kann feststellen, ob eines der Journale 130 in der ersten Journalgruppe 120 eine Migrationsbedingung erfüllt. Wie hier verwendet, bezieht sich eine „Migrationsbedingung“ auf mindestens eine Bedingung, die erfüllt sein muss, bevor das Journal 130 in eine andere Journalgruppe 120 migriert wird. In einigen Implementierungen kann eine Migrationsbedingung beispielsweise erfüllt sein, wenn ein Journal 130, das während des zweiten Sicherungsprozesses geändert wird, auch in der Übertragungsliste 182 markiert ist. In anderen Beispielen kann eine Migrationsbedingung jedoch für jedes Journal 130 erfüllt sein, das in der Übertragungsliste 182 gekennzeichnet ist.
  • In einigen Implementierungen kann die Speichersteuerung 110, wenn eines der Journale 130 in der ersten Journalgruppe 120 die Migrationsbedingung erfüllt, diese Journale 130 in eine zweite Journalgruppe 120 (z. B. eine neue Journalgruppe 120) migrieren. Auf diese Weise können die Journale 130, die während eines bestimmten Sicherungsprozesses geändert werden, in weniger Journalgruppen 120 konsolidiert werden. Dementsprechend kann die Anzahl der E/A-Operationen, die für die Journalgruppen 120 verwendet werden, reduziert werden, wodurch die Leistung des Speichersystems 100 verbessert werden kann. Die offengelegte Migrationstechnik wird weiter unten unter Bezugnahme auf die .
  • In einigen Beispielen kann bei der Migration eines Journals 130 zu einer anderen Journalgruppe 120 der entsprechende Container-Index 160 geändert werden, um die Informationen zu aktualisieren, die das zugehörige Journal 130 und die Journalgruppe 120 identifizieren. Als solches kann die Migration des Journals 130 eine Schreib-E/A für diesen Container-Index 160 beinhalten (d. h., um die geänderte Version des Container-Index 160 im dauerhaften Speicher 140 zu speichern). Wenn der Speicher-Controller 110 mehr als eine bestimmte Anzahl von Journal-Migrationen durchführt, können die Leistungskosten für das Schreiben der zugehörigen Container-Indizes 160 den Leistungsvorteil der Verringerung der Anzahl von Lese-E/A-Operationen zur Übertragung der Journal-Gruppen 120 in den Speicher 115 aufheben oder übersteigen. Dementsprechend kann es, selbst wenn ein Journal 130 die Migrationsbedingung erfüllt, wünschenswert sein, die Migration dieses Journals 130 zu blockieren, um die Gesamtzahl der Journalmigrationen zu begrenzen.
  • In einigen Implementierungen kann der Speicher-Controller 110 ein Migrationsbudget 184 verwenden, um die Anzahl der während eines Sicherungsprozesses durchgeführten Journal-Migrationen zu steuern und dadurch zu verhindern, dass die Leistungskosten für das Schreiben der zugehörigen Container-Indizes 160 den Leistungsvorteil der Journal-Migrationen zunichte machen oder übersteigen. Das Migrationsbudget 184 kann als Ganzzahlzähler ohne Vorzeichen implementiert werden und bei der Initialisierung des Migrationsbudgets 184 auf einen vordefinierten Wert gesetzt werden. Der vordefinierte Wert des Migrationsbudgets 184 kann z. B. durch eine Konfigurationseinstellung des Speichersystems 100, durch eine Benutzereingabe usw. festgelegt werden. Das Migrationsbudget 184 kann als Reaktion auf ein Systemereignis (z. B. Neustart, Reset usw.), einen Benutzerbefehl usw. initialisiert werden.
  • In einigen Implementierungen kann die Speichersteuerung 110 das Migrationsbudget 184 um einen ersten Betrag (z. B. eins) für jede Journalmigration verringern, die im Speichersystem 100 durchgeführt wird (z. B. über mehrere Datenströme, über eine definierte Gruppe von Datenströmen, für einen einzelnen Datenstrom usw.). Wenn das Migrationsbudget 184 unter einen Mindestschwellenwert sinkt (z. B. auf einen Nullwert, wenn der Mindestschwellenwert eins ist), kann der Speicher-Controller 110 die Durchführung aller Journal-Migrationen aussetzen. Außerdem kann die Speichersteuerung 110 die Durchführung von Journalmigrationen wieder aufnehmen, wenn das Migrationsbudget 184 über den Mindestschwellenwert erhöht wird. Auf diese Weise kann das Migrationsbudget 184 verwendet werden, um die Anzahl der während eines Sicherungsvorgangs durchgeführten Journalmigrationen zu steuern (z. B. zu begrenzen).
  • In einigen Implementierungen kann der Speicher-Controller 110 das Migrationsbudget 184 um einen zweiten Betrag (z. B. 0,5) für jede Schreib-E/A eines Container-Index 160 erhöhen, die nicht durch eine Journal-Migration verursacht wird (z. B. eine Schreib-E/A, die als Reaktion auf einen Speicherbefehl für den Container-Index 160 durchgeführt wird). In einigen Implementierungen kann das Migrationsbudget 184 auf einen Höchstwert begrenzt sein. Beispielsweise kann die maximale Höhe des Migrationsbudgets 184 eine Funktion der Anzahl der vom Speichersystem 100 verarbeiteten Datenströme sein (z. B. gleich der Anzahl der Ströme multipliziert mit einem konstanten Wert). Die offengelegte Technik, die das Migrationsbudget 184 verwendet, wird weiter unten unter Bezugnahme auf beschrieben.
  • ABB. 2 - Beispielhafte Datenstrukturen
  • zeigt ein Beispiel für Datenstrukturen 200, die bei der Deduplizierung in Übereinstimmung mit einigen Implementierungen verwendet werden. Wie dargestellt, können die Datenstrukturen 200 Sicherungselement-Metadaten 202, einen Manifest-Datensatz 210, einen Container-Index 220 und einen Container 250 enthalten. In einigen Implementierungen können die Sicherungselement-Metadaten 202 mehrere Manifestdatensätze 210 enthalten. In einigen Beispielen können der Manifestdatensatz 210, der Containerindex 220 und der Container 250 im Allgemeinen den Beispielimplementierungen eines Manifests 150, eines Index 160 bzw. eines Datencontainers 170 (wie in dargestellt) entsprechen. In einigen Beispielen können die Datenstrukturen 200 von der Speichersteuerung 110 (in dargestellt) erzeugt und/oder verwaltet werden.
  • Wie in dargestellt, kann der Manifestdatensatz 210 in einigen Beispielen verschiedene Felder enthalten, z. B. Offset, Länge, Containerindex und Einheitsadresse oder Fingerabdruck. In einigen Ausführungsformen kann jeder Containerindex 220 eine beliebige Anzahl von Dateneinheitendatensätzen 230 und Entitätsdatensätzen 240 enthalten. Jeder Datensatz 230 kann verschiedene Felder enthalten, wie z. B. einen Fingerabdruck (z. B. einen Hash der Dateneinheit), eine Einheitsadresse, einen Entitätsidentifikator, einen Einheitsoffset (d. h. einen Offset der Dateneinheit innerhalb der Entität), einen Referenzzählwert, eine Einheitslänge oder Ähnliches oder eine Kombination davon. In einigen Beispielen kann der Referenzzählwert die Anzahl der Manifestdatensätze 210 angeben, die auf den Dateneinheitssatz 230 verweisen. Darüber hinaus kann jeder Entitätsdatensatz 240 verschiedene Felder enthalten, wie z. B. einen Entitätsidentifikator, einen Entitätsoffset (d. h. einen Offset der Entität innerhalb des Containers), eine gespeicherte Länge (d. h. eine Länge der Dateneinheit innerhalb der Entität), eine dekomprimierte Länge, einen Prüfsummenwert und Komprimierungs-/Verschlüsselungsinformationen (z. B. Art der Komprimierung, Art der Verschlüsselung usw.). In einigen Ausführungsformen kann jeder Container 250 eine beliebige Anzahl von Einheiten 260 enthalten, und jede Einheit 260 kann eine beliebige Anzahl von gespeicherten Dateneinheiten enthalten.
  • In einer oder mehreren Implementierungen können die Datenstrukturen 200 verwendet werden, um gespeicherte deduplizierte Daten abzurufen. Beispielsweise kann eine Leseanforderung einen Versatz und eine Länge von Daten in einer bestimmten Datei angeben. Diese Anforderungsparameter können mit den Offset- und Längenfeldern eines bestimmten Manifestdatensatzes 210 abgeglichen werden. Der Containerindex und die Einheitsadresse des bestimmten Manifestdatensatzes 210 können dann mit einem bestimmten Dateneinheitsdatensatz 230 abgeglichen werden, der in einem Containerindex 220 enthalten ist. Ferner kann die Entitätskennung des bestimmten Datensatzes 230 mit der Entitätskennung eines bestimmten Entitätsdatensatzes 240 abgeglichen werden. Darüber hinaus können ein oder mehrere andere Felder des bestimmten Entitätsdatensatzes 240 (z. B. der Entitätsoffset, die gespeicherte Länge, die Prüfsumme usw.) zur Identifizierung des Behälters 250 und der Entität 260 verwendet werden, und die Dateneinheit kann dann aus dem identifizierten Behälter 250 und der Entität 260 gelesen werden.
  • Obwohl in der Einfachheit halber nur eine der beiden Strukturen dargestellt ist, können die Datenstrukturen 200 eine Vielzahl von Instanzen der Sicherungsartikel-Metadaten 202 enthalten, die jeweils einen oder mehrere Manifestdatensätze 210 enthalten oder auf diese verweisen. In solchen Beispielen können die Datenstrukturen 200 eine Vielzahl von Manifestsätzen 210 enthalten. Die Manifesteinträge 210 können auf eine Vielzahl von Containerindizes 220 verweisen, von denen jeder einem aus einer Vielzahl von Containern 250 entspricht. Jeder Containerindex 220 kann einen oder mehrere Datensätze 230 und einen oder mehrere Entitätsdatensätze 240 umfassen.
  • ABB. 3 - Beispielhafte Datenstrukturen
  • zeigt eine Illustration des Speichers 115 mit einer Journalgruppe 310 und mehreren Containerindizes 330. Wie dargestellt, umfasst die Journalgruppe 310 mehrere Journale 320. In einigen Beispielen können die Journalgruppe 310, die Journale 320 und die Container-Indizes 330 im Allgemeinen den Beispielimplementierungen der Journalgruppe 120, der Journale 130 und der Container-Indizes 160 (in dargestellt) entsprechen.
  • In einigen Implementierungen kann jedes Journal 320 mit einem entsprechenden Container-Index 330 verbunden sein und Änderungen an den im entsprechenden Container-Index 330 gespeicherten Metadaten aufzeichnen. Darüber hinaus kann jedes Journal 320 eine Versionsnummer 325 enthalten oder mit ihr verbunden sein. Jeder Container-Index 330 kann eine Versionsnummer 335 enthalten oder mit ihr verknüpft sein. In einigen Implementierungen kann die Versionsnummer 325 mit der Versionsnummer 335 verglichen werden, um festzustellen, ob das Journal 320 oder der zugehörige Containerindex 330 die neueste Version der Metadaten wiedergibt. Wenn beispielsweise die Versionsnummer 325 größer ist als die Versionsnummer 335, kann festgestellt werden, dass die im Journal 320 enthaltenen Änderungsdaten einen neueren Stand der Metadaten widerspiegeln als die im Container-Index 330 gespeicherten Metadaten. Ist dies der Fall, kann der Container-Index 330 aktualisiert werden, um die im Journal 320 aufgezeichneten Änderungen aufzunehmen. Wenn jedoch die Versionsnummer 325 kleiner ist als die Versionsnummer 335, kann festgestellt werden, dass die im Journal 320 enthaltenen Änderungsdaten einen Zustand der Metadaten widerspiegeln, der älter ist als die im Containerindex 330 gespeicherten Metadaten. In diesem Fall kann das Journal 320 gelöscht werden, ohne den Container-Index 330 zu aktualisieren. In einigen Implementierungen kann der Vergleich der Versionsnummer 325 mit der Versionsnummer 335 als Reaktion auf das Laden des Journals 320 oder des zugehörigen Containerindex 330 aus dem Permanentspeicher in den Speicher (z. B. aus dem Permanentspeicher 140 in den Speicher 115, wie in dargestellt) durchgeführt werden.
  • In einer oder mehreren Implementierungen kann die Anzahl der in einer Journalgruppe 310 enthaltenen Journale 320 in einem gespeicherten Parameter (z. B. einer Benutzereinstellung, einer Konfigurationsvariablen usw.) angegeben werden. In einigen Beispielen kann dieser Parameter angepasst oder abgestimmt werden, um die Leistungscharakteristiken von Ein-/Ausgabeoperationen (E/A) in einem Speichersystem zu ändern. Beispielsweise kann dieser Parameter erhöht werden, um zu versuchen, relativ weniger häufige Schreib-/Eingabe-/Ausgabeoperationen von relativ großer Größe zu erhalten. In einem anderen Beispiel kann dieser Parameter verringert werden, um relativ häufige Schreib-/Eingabe-/Ausgabevorgänge mit relativ geringerem Umfang zu erreichen.
  • ABB. 4A-4D - Beispiel für die Migration eines Journals
  • zeigen ein Beispiel für die Migration eines Journals in Übereinstimmung mit einigen Implementierungen. Insbesondere zeigen die zeigen mehrere Journalgruppen 410A-410E (auch allgemein als „Journalgruppen 410“ bezeichnet) zu verschiedenen Zeitpunkten während einer Journalmigration. In dem Beispiel von umfasst jede der Journalgruppen 410 vier Journale 420, und jede der Journalgruppen 410 entspricht einem anderen Sicherungsprozess. Ferner kann in diesem Beispiel eine Journalgruppe 410 einer Journalmigration unterzogen werden, wenn die Anzahl der Journale in dieser Journalgruppe 410, die (d. h. während eines Sicherungsprozesses) geändert wurden, gleich oder kleiner als ein Schwellenwert von zwei ist. In einigen Implementierungen können die Funktionen und/oder Aktionen, die in den dargestellten Funktionen und/oder Aktionen mit Hilfe des (in dargestellten) Speichersystems 100 durchgeführt werden (z. B. über die Speichersteuerung 110, die auf einem maschinenlesbaren Speichermedium gespeicherte Anweisungen ausführt).
  • In den zeigt ein Journal 420 mit diagonaler Schraffur an, dass das Journal während eines bestimmten Sicherungsprozesses geändert wurde, und ein Journal 420 ohne Schraffur zeigt an, dass das Journal während des gegebenen Sicherungsprozesses nicht geändert wurde. Wie in dargestellt, enthält eine erste Journalgruppe 410A ein Journal 420A (mit diagonaler Schraffur), das während eines Sicherungsvorgangs geändert wurde. Darüber hinaus enthält die erste Journalgruppe 410A drei Journale (ohne Schraffur), die während des Sicherungsvorgangs nicht verändert wurden. Die zweite Journalgruppe 410B enthält ein Journal 420B, das während des Sicherungsprozesses geändert wurde (schraffiert dargestellt), und drei Journale, die nicht geändert wurden, und die dritte Journalgruppe 410C enthält ein Journal 420C, das während des Sicherungsprozesses geändert wurde (schraffiert dargestellt), und drei Journale, die nicht geändert wurden. Die vierte Journalgruppe 410D schließlich umfasst vier Journale 420D (schraffiert dargestellt), die während des Sicherungsvorgangs geändert wurden.
  • Die erste Journalgruppe 410A enthält nur ein Journal 420A, das während des Sicherungsprozesses geändert wurde, und daher ist die Anzahl der geänderten Journale (d.h. eins) geringer als der Schwellenwert von zwei. Daher wird eine neue Journalgruppe 410E initialisiert oder anderweitig erzeugt, und das Journal 420A wird 430 (z. B. durch das Speichersystem 110) von der ersten Journalgruppe 410A in die neue Journalgruppe 410E migriert.
  • zeigt, dass die zweite Journalgruppe 410B nur ein Journal 420B enthält, das während des Sicherungsprozesses geändert wurde. Daher wird das Journal 420B aus der zweiten Journalgruppe 410B in die neue Journalgruppe 410E migriert (440).
  • Die dritte Journalgruppe 410C enthält nur ein Journal 420C, das im Sicherungsprozess geändert wurde (siehe ). Daher wird das Journal 420C aus der dritten Journalgruppe 410C in die neue Journalgruppe 410E migriert (450). Nach der Migration 450 kann die Beispiel-Journalmigration abgeschlossen werden.
  • Wie in den bis dargestellt, wurden bei der beispielhaften Journalmigration die Journale, auf die während des gegebenen Sicherungsprozesses zugegriffen wurde, von vier Journalgruppen 410 (wie in dargestellt) auf zwei (wie in dargestellt) konsolidiert, so dass ein späterer Sicherungsprozess, der dem gegebenen Sicherungsprozess ähnlich ist, mit Zugriff auf eine geringere Anzahl von Journalgruppen durchgeführt werden kann. Nach der Migration der Journale werden die migrierten Journale 420 in der Reihenfolge gespeichert, in der sie während des gegebenen Sicherungsprozesses verwendet wurden. Dementsprechend kann die beispielhafte Migration von Journalen die Anzahl der E/A-Operationen reduzieren, die während eines späteren Sicherungsprozesses erforderlich sind, und dadurch die Leistung eines Deduplizierungsspeichersystems (z. B. des in dargestellten Speichersystems 100) verbessern.
  • ABB. 5 und 6A-6C - Beispielverfahren für die Migration von Journalen
  • zeigt einen Beispielprozess 500 für die Migration von Journalen in Übereinstimmung mit einigen Implementierungen. Der Prozess 500 kann von der Speichersteuerung 110 durchgeführt werden, die Anweisungen ausführt. Der Prozess 500 kann in Hardware oder einer Kombination aus Hardware und Programmierung (z. B. maschinenlesbare Anweisungen, die von einem oder mehreren Prozessoren ausgeführt werden können) implementiert werden. Die maschinenlesbaren Anweisungen können in einem nicht transitorischen, computerlesbaren Medium gespeichert werden, z. B. in einem optischen, Halbleiter- oder magnetischen Speichergerät. Die maschinenlesbaren Anweisungen können von einem einzigen Prozessor, mehreren Prozessoren, einer einzigen Verarbeitungsmaschine, mehreren Verarbeitungsmaschinen usw. ausgeführt werden. Zur Veranschaulichung werden Einzelheiten des Prozesses 500 im Folgenden unter Bezugnahme auf beschrieben, die Beispiele gemäß einigen Implementierungen zeigen. Es sind jedoch auch andere Implementierungen möglich.
  • Block 510 kann das Erkennen des Beginns eines ersten Sicherungsprozesses in einem Deduplizierungsspeichersystem beinhalten. Block 520 kann das Aktualisieren einer Kandidatenliste beinhalten, um einen ersten Satz von Journalen in einer Journalgruppe zu markieren, die im ersten Sicherungsprozess geändert wurden. Zum Beispiel, bezogen auf , erkennt der Speicher-Controller 110 die Einleitung eines ersten Sicherungsprozesses im Speichersystem 100 (z. B. durch Erkennung einer neuen Sicherungskennung 186 in der Zeitschriftengruppe 120). Der erste Sicherungsprozess kann das Speichern einer Kopie eines Datenstroms im permanenten Speicher 140 beinhalten. Wie in gezeigt, füllt die Speichersteuerung 110 die Kandidatenliste 180 auf, um die Journale 130 in einer ersten Journalgruppe 120 zu kennzeichnen, die während des ersten Sicherungsprozesses geändert werden. In einigen Beispielen kann die Kandidatenliste 180 ein geordnetes Array von Flags (z.B. Bitwerten) sein, wobei jedes Flag einem anderen Journal 130 in der Journalgruppe 120 entspricht. In solchen Beispielen wird ein Flag gesetzt (z. B. auf einen Bitwert „1“), um anzuzeigen, dass das entsprechende Journal 130 während des Sicherungsprozesses geändert wurde.
  • Block 530 kann das Erkennen des Beginns eines zweiten Sicherungsprozesses im Deduplizierungsspeichersystem beinhalten. Block 540 kann die Bestimmung der Anzahl des ersten Satzes von Journalen in der Kandidatenliste als Reaktion auf die Erkennung des Beginns des zweiten Sicherungsprozesses beinhalten. Zum Beispiel, unter Bezugnahme auf , erkennt der Speicher-Controller 110 die Einleitung eines zweiten Sicherungsprozesses im Speichersystem 100 (z. B. basierend auf einer neuen Sicherungskennung 186). Als Reaktion auf diese Erkennung zählt die Speichersteuerung 110 die Journale 130, die in der Kandidatenliste 180 markiert wurden (in mit einem „X“ dargestellt). Diese Zählung gibt an, wie viele Journale 130 in der ersten Journalgruppe 120 vom Beginn des ersten Sicherungsprozesses bis zum Ende des ersten Sicherungsprozesses geändert wurden.
  • Block 550 kann, wenn die (in Block 540 ermittelte) Anzahl unter einem Migrationsschwellenwert liegt, das Kopieren eines Inhalts der Kandidatenliste in eine Transferliste umfassen. Block 560 kann die Löschung der Kandidatenliste beinhalten. Zum Beispiel, unter Bezugnahme auf , stellt die Speichersteuerung 110 fest, dass die Anzahl der in der Kandidatenliste 180 markierten Zeitschriften 130 unter einem Migrationsschwellenwert liegt. Als Reaktion auf diese Feststellung führt die Speichersteuerung 110 eine Kopie 610 des Flag-Arrays der Kandidatenliste 180 in die Transferliste 182 durch. Die Speichersteuerung 110 löscht den Inhalt der Kandidatenliste 180 (z. B. setzt sie alle Flaggen auf einen „0“-Wert zurück, der ein nicht geändertes Journal anzeigt). Wenn festgestellt wird, dass die Anzahl der in der Kandidatenliste 180 gekennzeichneten Journale 130 nicht unter dem Migrationsschwellenwert liegt, führt die Speichersteuerung 110 die Kopie 610 nicht durch und löscht auch den vorhandenen Inhalt der Übertragungsliste 182 (z. B. alle vor dem Beginn des zweiten Sicherungsprozesses in die Übertragungsliste 182 kopierten Kennzeichnungen).
  • Block 570 kann die Aktualisierung der Kandidatenliste beinhalten, um jedes Journal in der Journalgruppe zu kennzeichnen, das nicht in der Transferliste gekennzeichnet ist und im zweiten Sicherungsprozess geändert wird. Zum Beispiel, unter Bezugnahme auf , stellt die Speichersteuerung 110 fest, dass ein erstes Journal 130 während des zweiten Sicherungsprozesses geändert wurde, und stellt auch fest, dass das Kennzeichen 640 für das erste Journal 130 in der Übertragungsliste 182 nicht gesetzt ist (d.h., es zeigt an, dass das erste Journal 130 während des ersten Sicherungsprozesses nicht geändert wurde). Daher setzt die Speichersteuerung 110 als Reaktion auf diese Feststellungen ein Kennzeichen 630 in der Kandidatenliste 180 (in mit einem „X“ dargestellt), um anzuzeigen, dass das erste Journal 130 während des zweiten Sicherungsprozesses geändert wurde. Die gesetzte Markierung 630 kann in die Transferliste 182 übertragen werden, nachdem der zweite Sicherungsprozess abgeschlossen ist (z. B. wenn die Anzahl der markierten Journale 130 in der Kandidatenliste 180 wieder unter dem Migrationsschwellenwert liegt).
  • Block 580 kann für jedes Journal in der Journalgruppe, das in der Übertragungsliste markiert und im zweiten Sicherungsprozess geändert wird, die Migration dieses Journals in eine zweite Journalgruppe beinhalten. Zum Beispiel, unter Bezugnahme auf , stellt die Speichersteuerung 110 fest, dass ein zweites Journal 130 während des zweiten Sicherungsprozesses geändert wurde, und stellt auch fest, dass das Kennzeichen 620 für das zweite Journal 130 in der Übertragungsliste 182 gesetzt ist (d. h., es zeigt an, dass das zweite Journal 130 zuvor während des ersten Sicherungsprozesses geändert wurde). Daher stellt die Speichersteuerung 110 fest, dass das zweite Journal 130 die Migrationsbedingung erfüllt hat (d. h. sowohl im ersten als auch im zweiten Sicherungsprozess geändert wurde), und migriert daraufhin das zweite Journal 130 in eine zweite Journalgruppe 120 (z. B. eine neue Journalgruppe 120). Dieser Migrationsprozess kann für andere Journale 130 wiederholt werden, die während des zweiten Sicherungsprozesses geändert wurden und ebenfalls in der Übertragungsliste 182 markiert sind. In einigen Implementierungen kann jedes Journal 130 nur einmal während eines bestimmten Sicherungsprozesses migriert werden. Nach Block 580 kann der Prozess 500 abgeschlossen sein.
  • In dem in gezeigten Implementierungsbeispiel kann jedes Journal 130 separat migriert werden, wenn während des zweiten Sicherungsvorgangs darauf zugegriffen wird. Es sind jedoch auch andere Implementierungen möglich. Wenn beispielsweise festgestellt wird, dass die Anzahl der in der Kandidatenliste 180 markierten Journale 130 unter dem Migrationsschwellenwert liegt (d. h. nach Abschluss des ersten Sicherungsprozesses), kann die Speichersteuerung 110 alle in der Kandidatenliste 180 markierten Journale 130 als Gruppe migrieren. In solchen Beispielen kann die Migration der Journale als Batch-Prozess durchgeführt werden, ohne dass die Transferliste 182 aufgefüllt werden muss.
  • ABB. 7 - Beispielprozess für die Steuerung der Journalmigration
  • zeigt einen Beispielprozess 700 zur Steuerung der Journalmigration in Übereinstimmung mit einigen Implementierungen. Der Prozess 700 kann von der Speichersteuerung 110 durchgeführt werden, die Anweisungen ausführt. Der Prozess 700 kann in Hardware oder einer Kombination aus Hardware und Programmierung (z. B. maschinenlesbare Anweisungen, die von einem oder mehreren Prozessoren ausgeführt werden können) implementiert werden. Die maschinenlesbaren Anweisungen können in einem nicht transitorischen, computerlesbaren Medium gespeichert werden, z. B. in einem optischen, Halbleiter- oder magnetischen Speichergerät. Die maschinenlesbaren Anweisungen können von einem einzigen Prozessor, mehreren Prozessoren, einer einzigen Verarbeitungsmaschine, mehreren Verarbeitungsmaschinen usw. ausgeführt werden. Zur Veranschaulichung werden im Folgenden Einzelheiten des Verfahrens 700 unter Bezugnahme auf die beschrieben, die Beispiele für einige Implementierungen zeigen. Es sind jedoch auch andere Implementierungen möglich.
  • Block 710 kann die Initialisierung eines Migrationsbudgets in einem Speichersystem beinhalten. Beispielsweise initialisiert der Speicher-Controller 110 das Migrationsbudget 184 als Reaktion auf ein Systemereignis, einen Benutzerbefehl usw. (siehe ). Bei der Initialisierung kann das Migrationsbudget 184 auf einen Wert festgelegt werden, der verhindert, dass die Leistungskosten für das Schreiben von Containerindizes 160 während Journalmigrationen ein unannehmbares Niveau erreichen (z. B. größer als der Leistungsvorteil der Journalmigrationen). In einigen Beispielen kann das Migrationsbudget 184 als Ganzzahlzähler ohne Vorzeichen implementiert werden.
  • Block 720 kann die Durchführung von Sicherungsprozessen im Speichersystem umfassen. Beispielsweise empfängt das Speichersystem 100, wie in dargestellt, mehrere Datenströme, die im Permanentspeicher 140 gespeichert werden sollen. In einigen Beispielen kann jeder Datenstrom (oder ein Satz von Datenströmen) als separater Sicherungsprozess verarbeitet werden. In einigen Beispielen kann die Speichersteuerung 110 eine Deduplizierung jedes Sicherungsprozesses durchführen.
  • Block 730 kann die Durchführung einer Journalmigration beinhalten, wenn eine Migrationsbedingung erfüllt ist und ein Migrationsbudget nicht überschritten wird. Zum Beispiel, unter Bezugnahme auf , füllt der Speicher-Controller 110 die Kandidatenliste 180 auf, um die Journale 130 in einer ersten Journalgruppe 120 zu kennzeichnen oder anderweitig zu identifizieren, die während eines ersten Sicherungsprozesses geändert werden. Beim Erkennen der Initialisierung eines zweiten Sicherungsprozesses bestimmt die Speichersteuerung 110 die Anzahl der in der Kandidatenliste 180 markierten Journale 130 und stellt fest, ob diese Anzahl unter einem Migrationsschwellenwert liegt. Ist dies der Fall, kopiert die Speichersteuerung 110 den Inhalt der Kandidatenliste 180 in die Transferliste 182 und löscht die Kandidatenliste 180. Anschließend stellt die Speichersteuerung 110 fest, dass eine Migrationsbedingung für ein zweites Journal 130 erfüllt ist (z. B. wurde das zweite Journal 130 während des zweiten Sicherungsprozesses geändert, und das Kennzeichen 620 für das zweite Journal 130 ist in der Übertragungsliste 182 gesetzt). Wenn die Migrationsbedingung erfüllt ist, ermittelt die Speichersteuerung 110, ob das Migrationsbudget 184 derzeit überschritten ist. Wenn das Migrationsbudget 184 derzeit nicht überschritten ist, migriert die Speichersteuerung 110 das zweite Journal 130 in eine zweite Journalgruppe 120. Andernfalls, wenn das Migrationsbudget 184 gegenwärtig überschritten ist, migriert die Speichersteuerung 110 das zweite Journal 130 nicht.
  • Block 740 kann beinhalten, dass für jede durchgeführte Journalmigration das Migrationsbudget um einen ersten Betrag verringert wird. Block 750 kann beinhalten, dass für jeden durchgeführten Containerindex-Schreibvorgang, der nicht durch eine Journal-Migration verursacht wird, das Migrationsbudget um einen zweiten Betrag erhöht wird. Beispielsweise reduziert der Speichercontroller 110 das Migrationsbudget 184 für jede im Speichersystem 100 durchgeführte Journalmigration um einen ersten Betrag (z. B. 1). Ferner kann der Speicher-Controller 110 das Migrationsbudget 184 um einen zweiten Betrag (z. B. 0,5) für jede Schreib-E/A eines Container-Index 160 erhöhen, die nicht durch eine Journal-Migration verursacht wird (z. B. eine Schreib-E/A, die als Reaktion auf einen Speicherbefehl für den Container-Index 160 durchgeführt wird). Nach Block 750 kann der Prozess 700 zu Block 720 zurückkehren (d. h., um die Durchführung von Sicherungsprozessen im Speichersystem fortzusetzen).
  • ABB. 8 - Beispielprozess für die Migration von Journalen
  • zeigt einen Beispielprozess 800 für die Migration von Journalen in Übereinstimmung mit einigen Implementierungen. Der Prozess 800 kann von der Speichersteuerung 110 durchgeführt werden, die Anweisungen ausführt. Der Prozess 800 kann in Hardware oder einer Kombination aus Hardware und Programmierung (z. B. maschinenlesbare Anweisungen, die von einem oder mehreren Prozessoren ausgeführt werden können) implementiert werden. Die maschinenlesbaren Anweisungen können in einem nichttransitorischen, computerlesbaren Medium gespeichert werden, z. B. in einem optischen, Halbleiter- oder magnetischen Speichergerät. Die maschinenlesbaren Anweisungen können von einem einzigen Prozessor, mehreren Prozessoren, einer einzigen Verarbeitungsmaschine, mehreren Verarbeitungsmaschinen usw. ausgeführt werden. Zur Veranschaulichung werden die Einzelheiten des Verfahrens 800 im Folgenden unter Bezugnahme auf die beschrieben, die Beispiele in Übereinstimmung mit einigen Implementierungen zeigen. Es sind jedoch auch andere Implementierungen möglich.
  • Block 810 kann beinhalten, dass ein Speichercontroller eines Deduplizierungsspeichersystems eine Vielzahl von Datenströmen empfängt, die im persistenten Speicher des Deduplizierungsspeichersystems gespeichert werden sollen. Block 820 kann beinhalten, dass der Speichercontroller einen Satz von Journalen in einer ersten Journalgruppe identifiziert, die während eines ersten Sicherungsprozesses verändert wurden. Zum Beispiel, bezogen auf , erkennt der Speicher-Controller 110 die Einleitung eines ersten Sicherungsprozesses im Speichersystem 100. Die Speichersteuerung 110 identifiziert, welche Journale 130 einer ersten Journalgruppe 120 während des ersten Sicherungsprozesses geändert werden, und kennzeichnet die identifizierten Journale 130 (in mit einem „X“ dargestellt) in der Kandidatenliste 180.
  • Block 830 kann die Bestimmung einer Anzahl von Journalen, die während des ersten Sicherungsprozesses geändert wurden, durch den Speicher-Controller beinhalten. Zum Beispiel, unter Bezugnahme auf , erkennt die Speichersteuerung 110 die Einleitung eines zweiten Sicherungsprozesses im Speichersystem 100 (z. B. durch Erkennung einer geänderten Sicherungskennung 186). Als Reaktion auf diese Erkennung zählt die Speichersteuerung 110 die Journale 130, die in der Kandidatenliste 180 markiert wurden.
  • Block 840 kann den Vergleich der ermittelten Anzahl mit einem Migrationsschwellenwert durch die Speichersteuerung beinhalten. Block 850 kann das Migrieren mindestens eines Journals aus dem identifizierten Satz von Journalen in eine zweite Journalgruppe durch den Speicher-Controller beinhalten, und zwar mindestens auf der Grundlage eines Vergleichs der ermittelten Anzahl mit dem Migrationsschwellenwert. Zum Beispiel, unter Bezugnahme auf stellt die Speichersteuerung 110 fest, dass die Anzahl der in der Kandidatenliste 180 markierten Zeitschriften 130 unter einem Migrationsschwellenwert liegt, und führt als Reaktion darauf eine Kopie 610 des Flag-Arrays der Kandidatenliste 180 in die Transferliste 182 durch. Anschließend stellt die Speichersteuerung 110 fest, dass ein zweites Journal 130 während des zweiten Sicherungsprozesses geändert wurde, und stellt außerdem fest, dass das Kennzeichen 620 für das zweite Journal 130 in der Übertragungsliste 182 gesetzt ist. Als Reaktion auf diese Feststellungen migriert die Speichersteuerung 110 das zweite Journal 130 in eine zweite Journalgruppe 120. Nach Block 850 kann der Prozess 800 abgeschlossen werden.
  • Abb. 9 - Beispiel für einen maschinenlesbaren Datenträger
  • zeigt ein maschinenlesbares Medium 900, auf dem Anweisungen 910-940 in Übereinstimmung mit einigen Implementierungen gespeichert sind. Die Anweisungen 910-940 können von einem einzelnen Prozessor, mehreren Prozessoren, einer einzelnen Verarbeitungsmaschine, mehreren Verarbeitungsmaschinen usw. ausgeführt werden. Das maschinenlesbare Medium 900 kann ein nicht-transitorisches Speichermedium sein, wie z. B. ein optisches, Halbleiter- oder magnetisches Speichermedium.
  • Die Anweisung 910 kann ausgeführt werden, um eine Vielzahl von Datenströmen zu empfangen, die im permanenten Speicher eines Deduplizierungsspeichersystems gespeichert werden sollen. Die Anweisung 920 kann ausgeführt werden, um einen Satz von Journalen in einer ersten Journalgruppe zu identifizieren, die während eines ersten Sicherungsprozesses geändert werden. Die Anweisung 930 kann ausgeführt werden, um die Anzahl der Journale zu bestimmen, die während des ersten Sicherungsprozesses geändert wurden. Die Anweisung 940 kann ausgeführt werden, um mindestens ein Journal der identifizierten Gruppe von Journalen in eine zweite Journalgruppe zu migrieren, und zwar mindestens auf der Grundlage eines Vergleichs der ermittelten Anzahl mit einem Migrationsschwellenwert.
  • Abb. 10 - Beispiel für eine Datenverarbeitungsanlage
  • zeigt ein schematisches Diagramm einer beispielhaften Rechenvorrichtung 1000. In einigen Beispielen kann die Rechenvorrichtung 1000 im Allgemeinen einem Teil oder der Gesamtheit des Speichersystems 100 (dargestellt in ) entsprechen. Wie dargestellt, kann die Rechenvorrichtung 1000 einen Hardware-Prozessor 1002, einen Speicher 1004 und einen maschinenlesbaren Speicher 1005 mit Anweisungen 1010-1040 umfassen. Der maschinenlesbare Speicher 1005 kann ein nicht-übertragbares Medium sein. Die Anweisungen 1010-1040 können von dem Hardware-Prozessor 1002 oder von einer im Hardware-Prozessor 1002 enthaltenen Verarbeitungsmaschine ausgeführt werden.
  • Die Anweisung 1010 kann ausgeführt werden, um eine Vielzahl von Datenströmen zu empfangen, die im permanenten Speicher eines Deduplizierungsspeichersystems gespeichert werden sollen. Die Anweisung 1020 kann ausgeführt werden, um einen Satz von Journalen in einer ersten Journalgruppe zu identifizieren, die während eines ersten Sicherungsprozesses geändert werden. Die Anweisung 1030 kann ausgeführt werden, um eine Anzahl der Journale zu bestimmen, die während des ersten Sicherungsprozesses verändert wurden. Die Anweisung 1040 kann ausgeführt werden, um mindestens ein Journal des identifizierten Satzes von Journalen in eine zweite Journalgruppe zu migrieren, und zwar mindestens auf der Grundlage eines Vergleichs der ermittelten Anzahl mit einem Migrationsschwellenwert.
  • In Übereinstimmung mit einigen Implementierungen der vorliegenden Offenlegung kann ein Speichersystem Journale zwischen Journalgruppen migrieren, um die Verteilung der Journale zu reduzieren oder zu kontrollieren. In einigen Implementierungen kann ein Controller einen Satz von Journalen in einer ersten Journalgruppe identifizieren, die während eines ersten Sicherungsprozesses geändert wurden, und eine Anzahl des identifizierten Satzes von Journalen bestimmen. Die Speichersteuerung kann ein Journal in eine zweite Journalgruppe migrieren, zumindest auf der Grundlage des Vergleichs der Anzahl der geänderten Journale mit dem Migrationsschwellenwert. Auf diese Weise können die Journale, auf die während eines nachfolgenden Sicherungsprozesses zugegriffen werden soll, in weniger Journalgruppen konsolidiert werden. Dementsprechend können einige Implementierungen die Anzahl der E/A-Operationen zum Lesen von Journalen reduzieren und dadurch die Leistung des Deduplizierungsspeichersystems verbessern.
  • Beachten Sie, dass die verschiedene Beispiele zeigen, sind Implementierungen in dieser Hinsicht nicht beschränkt. Beispielsweise kann das Speichersystem 100, wie in gezeigt, zusätzliche Geräte und/oder Komponenten, weniger Komponenten, andere Komponenten, andere Anordnungen usw. enthalten. Ein weiteres Beispiel ist, dass die oben beschriebene Funktionalität des Speicher-Controllers 110 in einer anderen Maschine oder Software des Speichersystems 100 enthalten sein kann. Andere Kombinationen und/oder Variationen sind ebenfalls möglich.
  • Daten und Anweisungen werden in entsprechenden Speichervorrichtungen gespeichert, die als ein oder mehrere computerlesbare oder maschinenlesbare Speichermedien ausgeführt sind. Zu den Speichermedien gehören verschiedene Formen von nicht transitorischen Speichern, darunter Halbleiterspeicher wie dynamische oder statische Direktzugriffsspeicher (DRAMs oder SRAMs), löschbare und programmierbare Festwertspeicher (EPROMs), elektrisch löschbare und programmierbare Festwertspeicher (EEPROMs) und Flash-Speicher; Magnetplatten wie Fest-, Disketten- und Wechselplatten; andere magnetische Medien einschließlich Bänder; optische Medien wie Compact Discs (CDs) oder digitale Videodisks (DVDs) oder andere Arten von Speichervorrichtungen.
  • Es ist zu beachten, dass die oben erörterten Anweisungen auf einem einzigen computerlesbaren oder maschinenlesbaren Speichermedium oder alternativ auf mehreren computerlesbaren oder maschinenlesbaren Speichermedien bereitgestellt werden können, die in einem großen System mit möglicherweise mehreren Knotenpunkten verteilt sind. Ein solches computerlesbares oder maschinenlesbares Speichermedium oder solche Speichermedien werden als Teil eines Artikels (oder eines Herstellungsartikels) betrachtet. Ein Artikel oder Herstellungsgegenstand kann sich auf jede hergestellte Einzelkomponente oder auf mehrere Komponenten beziehen. Das Speichermedium oder die Speichermedien können sich entweder in der Maschine befinden, auf der die maschinenlesbaren Anweisungen ausgeführt werden, oder an einem entfernten Standort, von dem maschinenlesbare Anweisungen über ein Netzwerk zur Ausführung heruntergeladen werden können.
  • In der vorstehenden Beschreibung sind zahlreiche Details aufgeführt, um ein Verständnis des hierin offengelegten Themas zu vermitteln. Allerdings können Implementierungen ohne einige dieser Details praktiziert werden. Andere Implementierungen können Modifikationen und Abweichungen von den oben beschriebenen Details enthalten. Es ist beabsichtigt, dass die beigefügten Ansprüche solche Modifikationen und Variationen abdecken.

Claims (20)

  1. Ein Deduplizierungs-Speichersystem, das Folgendes umfasst: einen Prozessor; einen Speicher; und ein maschinenlesbares Speichermedium, das Befehle speichert, wobei die Befehle vom Prozessor ausgeführt werden können, um: eine Vielzahl von Datenströmen empfangen, die im permanenten Speicher des Deduplizierungsspeichersystems gespeichert werden sollen; einen Satz von Journalen in einer ersten Journalgruppe identifizieren, die während eines ersten Sicherungsprozesses geändert werden; Bestimmen einer Anzahl von Journalen, die während des ersten Sicherungsprozesses geändert wurden; und mindestens ein Journal aus der Gruppe der Journale in eine zweite Journalgruppe migrieren, und zwar mindestens auf der Grundlage eines Vergleichs der ermittelten Anzahl mit einem Migrationsschwellenwert.
  2. Das Speichersystem nach Anspruch 1, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: eine Kandidatenliste aktualisieren, um die Journale zu kennzeichnen, die während des ersten Sicherungsvorgangs geändert werden.
  3. Das Speichersystem nach Anspruch 2, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: die Einleitung eines zweiten Sicherungsprozesses erkennen; als Reaktion auf die Erkennung des Beginns des zweiten Sicherungsprozesses: die Anzahl der markierten Zeitschriften in der Kandidatenliste zu ermitteln; die Anzahl der markierten Zeitschriften mit dem Migrationsschwellenwert vergleichen; und als Reaktion auf die Feststellung, dass die Anzahl der markierten Zeitschriften unter dem Migrationsschwellenwert liegt, einen Inhalt der Kandidatenliste in eine Transferliste kopieren.
  4. Das Speichersystem nach Anspruch 3, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: als Reaktion auf die Feststellung, dass das mindestens eine Journal im zweiten Sicherungsprozess geändert und in der Übertragungsliste markiert wurde, das mindestens eine Journal in die zweite Journalgruppe migrieren.
  5. Das Speichersystem nach Anspruch 3, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: als Reaktion auf die Feststellung, dass das mindestens eine Journal im zweiten Sicherungsprozess geändert und in der Übertragungsliste markiert wurde: festzustellen, ob ein Migrationsbudget derzeit überschritten wird; Migrieren des mindestens einen Journals als Reaktion auf die Feststellung, dass das Migrationsbudget derzeit nicht überschritten ist; und eine Migration des mindestens einen Journals zu blockieren, wenn festgestellt wird, dass das Migrationsbudget derzeit überschritten ist.
  6. Das Speichersystem nach Anspruch 5, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: für jede durchgeführte Journalmigration das Migrationsbudget um einen ersten Betrag zu verringern; und für jeden durchgeführten Container-Index-Schreibvorgang, der nicht durch eine Journal-Migration verursacht wird, das Migrationsbudget um einen zweiten Betrag erhöhen.
  7. Das Speichersystem nach Anspruch 6, wobei die erste Menge größer ist als die zweite Menge.
  8. Das Speichersystem nach Anspruch 3, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: die Einleitung des zweiten Sicherungsprozesses auf der Grundlage einer Änderung eines Sicherungskennzeichens erkennen, wobei der Backup-Identifikator, die Kandidatenliste und die Transferliste in der ersten Journalgruppe gespeichert werden.
  9. Das Speichersystem nach Anspruch 3, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: als Reaktion auf die Erkennung des Beginns des zweiten Sicherungsprozesses die Kandidatenliste löschen; und nach dem Löschen der Kandidatenliste als Reaktion auf die Feststellung, dass ein bestimmtes Journal im zweiten Sicherungsprozess geändert wurde und nicht in der Transferliste markiert ist, das bestimmte Journal in der Kandidatenliste zu markieren.
  10. Das Speichersystem nach Anspruch 2, wobei die Kandidatenliste eine geordnete Anordnung von Kennzeichen umfasst, wobei jedes Kennzeichen einem anderen Journal in der ersten Journalgruppe entspricht.
  11. Ein Verfahren, das Folgendes umfasst: Empfangen einer Vielzahl von Datenströmen, die in einem persistenten Speicher des Deduplizierungsspeichersystems gespeichert werden sollen, durch einen Speichercontroller eines Deduplizierungsspeichersystems; Identifizierung eines Satzes von Journalen in einer ersten Journalgruppe, die während eines ersten Sicherungsprozesses geändert werden, durch den Speicher-Controller; Bestimmen einer Anzahl von Journalen, die während des ersten Sicherungsprozesses geändert wurden, durch den Speicher-Controller; Vergleichen der ermittelten Anzahl mit einem Migrationsschwellenwert durch den Speicher-Controller; und Migrieren mindestens eines Journals des Satzes von Journalen zu einer zweiten Journalgruppe durch den Speicher-Controller mindestens auf der Grundlage eines Vergleichs der ermittelten Anzahl mit dem Migrationsschwellenwert.
  12. Das Verfahren nach Anspruch 11 umfasst ferner: Aktualisierung einer Kandidatenliste zur Kennzeichnung der Journale, die während des ersten Sicherungsvorgangs geändert werden; Erkennung der Einleitung eines zweiten Sicherungsprozesses; als Reaktion auf die Erkennung des Beginns des zweiten Sicherungsprozesses: Bestimmung der Anzahl der markierten Zeitschriften in der Kandidatenliste; Vergleichen der Anzahl der gekennzeichneten Zeitschriften mit dem Migrationsschwellenwert; und als Reaktion auf die Feststellung, dass die Anzahl der markierten Zeitschriften unter dem Migrationsschwellenwert liegt, Kopieren des Inhalts der Kandidatenliste in eine Transferliste, wobei die Kandidatenliste und die Transferliste in der ersten Journalgruppe gespeichert werden.
  13. Das Verfahren nach Anspruch 12 umfasst ferner: als Reaktion auf die Feststellung, dass das mindestens eine Journal im zweiten Sicherungsprozess geändert und in der Übertragungsliste markiert wurde, das mindestens eine Journal in die zweite Journalgruppe migriert wird.
  14. Das Verfahren nach Anspruch 12 umfasst ferner: als Reaktion auf die Feststellung, dass das mindestens eine Journal im zweiten Sicherungsprozess geändert und in der Übertragungsliste markiert wurde: Feststellung, ob ein Migrationsbudget derzeit überschritten ist; und die Migration des mindestens einen Journals als Reaktion auf die Feststellung, dass das Migrationsbudget derzeit nicht überschritten wird.
  15. Das Verfahren nach Anspruch 14 umfasst ferner: für jede in dem Deduplizierungsspeichersystem durchgeführte Journalmigration das Migrationsbudget um einen ersten Betrag verringert; und für jeden durchgeführten Container-Index-Schreibvorgang, der nicht durch eine Journal-Migration verursacht wird, und erhöht das Migrationsbudget um einen zweiten Betrag, wobei die erste Menge größer ist als die zweite Menge.
  16. Ein nicht-transitorisches maschinenlesbares Medium, das Befehle speichert, die bei Ausführung einen Prozessor dazu veranlassen: eine Vielzahl von Datenströmen empfangen, die in einem dauerhaften Speicher eines Deduplizierungsspeichersystems gespeichert werden sollen; einen Satz von Journalen in einer ersten Journalgruppe identifizieren, die während eines ersten Sicherungsprozesses geändert werden; Bestimmen einer Anzahl der Journale, die während des ersten Sicherungsprozesses geändert wurden; und mindestens ein Journal aus der Gruppe der Journale in eine zweite Journalgruppe migrieren, und zwar mindestens auf der Grundlage eines Vergleichs der ermittelten Anzahl mit einem Migrationsschwellenwert.
  17. Das nicht-transitorische maschinenlesbare Medium nach Anspruch 16, das Anweisungen enthält, die bei Ausführung den Prozessor veranlassen,: eine Kandidatenliste aktualisieren, um die Menge der Zeitschriften zu kennzeichnen, die während des ersten Sicherungsvorgangs geändert werden; die Einleitung eines zweiten Sicherungsprozesses erkennen; als Reaktion auf die Erkennung des Beginns des zweiten Sicherungsprozesses: die Anzahl der gekennzeichneten Zeitschriften in der Kandidatenliste ermitteln; die Anzahl der markierten Zeitschriften mit dem Migrationsschwellenwert vergleichen; und als Reaktion auf die Feststellung, dass die Anzahl der markierten Zeitschriften unter dem Migrationsschwellenwert liegt, einen Inhalt der Kandidatenliste in eine Transferliste kopieren, wobei die Kandidatenliste und die Transferliste in der ersten Journalgruppe gespeichert werden.
  18. Das nicht-transitorische maschinenlesbare Medium nach Anspruch 17, das Anweisungen enthält, die bei Ausführung den Prozessor veranlassen,: als Reaktion auf die Feststellung, dass das mindestens eine Journal im zweiten Sicherungsprozess geändert und in der Übertragungsliste markiert wurde, das mindestens eine Journal in die zweite Journalgruppe migrieren.
  19. Das nicht-transitorische maschinenlesbare Medium nach Anspruch 17, das Anweisungen enthält, die bei Ausführung den Prozessor veranlassen,: als Reaktion auf die Feststellung, dass das mindestens eine Journal im zweiten Sicherungsprozess geändert und in der Übertragungsliste markiert wurde: festzustellen, ob ein Migrationsbudget derzeit überschritten wird; und die Migration des mindestens einen Journals als Reaktion auf die Feststellung, dass das Migrationsbudget derzeit nicht überschritten ist.
  20. Das nicht-transitorische maschinenlesbare Medium nach Anspruch 19, das Anweisungen enthält, die bei Ausführung den Prozessor veranlassen,: für jede durchgeführte Journalmigration das Migrationsbudget um einen ersten Betrag zu verringern; und für jeden durchgeführten Container-Index-Schreibvorgang, der nicht durch eine Journal-Migration verursacht wird, das Migrationsbudget um einen zweiten Betrag erhöhen.
DE102022127040.8A 2022-07-25 2022-10-15 Migration von zeitschriftengruppen in einem speichersystem Pending DE102022127040A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/814,575 US11940882B2 (en) 2022-07-25 2022-07-25 Migration of journal groups in a storage system
US17/814,575 2022-07-25

Publications (1)

Publication Number Publication Date
DE102022127040A1 true DE102022127040A1 (de) 2024-01-25

Family

ID=89429568

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022127040.8A Pending DE102022127040A1 (de) 2022-07-25 2022-10-15 Migration von zeitschriftengruppen in einem speichersystem

Country Status (3)

Country Link
US (1) US11940882B2 (de)
CN (1) CN117493290A (de)
DE (1) DE102022127040A1 (de)

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205529B1 (en) 1997-09-25 2001-03-20 Emc Corporation Method and apparatus for defragmenting a storage device using a copy function in the device control logic
KR100848315B1 (ko) * 2005-12-08 2008-07-24 한국전자통신연구원 이중 저널링을 이용한 데이터 저장 공간 확보 방법
US20110010518A1 (en) * 2005-12-19 2011-01-13 Srinivas Kavuri Systems and Methods for Migrating Components in a Hierarchical Storage Network
JP4938328B2 (ja) * 2006-03-28 2012-05-23 株式会社日立製作所 記憶システム及びその電源制御方法並びにストレージ装置
US7930265B2 (en) * 2007-01-08 2011-04-19 International Business Machines Corporation Method for threshold migration based on fuzzy logic triggers
US8285918B2 (en) 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US8442983B2 (en) * 2009-12-31 2013-05-14 Commvault Systems, Inc. Asynchronous methods of data classification using change journals and other data structures
US9189392B1 (en) 2011-06-30 2015-11-17 Western Digital Technologies, Inc. Opportunistic defragmentation during garbage collection
US8819375B1 (en) 2011-11-30 2014-08-26 Western Digital Technologies, Inc. Method for selective defragmentation in a data storage device
US9928210B1 (en) 2012-04-30 2018-03-27 Veritas Technologies Llc Constrained backup image defragmentation optimization within deduplication system
US8909887B1 (en) 2012-09-25 2014-12-09 Emc Corporation Selective defragmentation based on IO hot spots
US10282256B1 (en) * 2013-06-15 2019-05-07 Veritas Technologies Llc System and method to enable deduplication engine to sustain operational continuity
US9600558B2 (en) * 2013-06-25 2017-03-21 Google Inc. Grouping of objects in a distributed storage system based on journals and placement policies
US10108503B2 (en) * 2015-08-24 2018-10-23 Western Digital Technologies, Inc. Methods and systems for updating a recovery sequence map
US20170357656A1 (en) 2016-06-08 2017-12-14 Hewlett Packard Enterprise Development Lp Reducing file system journaling writes
US10346366B1 (en) * 2016-09-23 2019-07-09 Amazon Technologies, Inc. Management of a data processing pipeline
US10152381B1 (en) 2017-04-27 2018-12-11 EMC IP Holding Company LLC Using storage defragmentation function to facilitate system checkpoint
US10705918B1 (en) 2017-07-21 2020-07-07 EMC IP Holding Company LLC Online metadata backup consistency check
US11182256B2 (en) * 2017-10-20 2021-11-23 Hewlett Packard Enterprise Development Lp Backup item metadata including range information
CN111143112B (zh) 2018-11-02 2023-08-25 伊姆西Ip控股有限责任公司 用于恢复元数据的方法、设备和计算机可读存储介质
US10732881B1 (en) * 2019-01-30 2020-08-04 Hewlett Packard Enterprise Development Lp Region cloning for deduplication
US11403182B2 (en) * 2019-08-28 2022-08-02 Dell Products L.P. Method and system for any-point in time recovery within traditional storage system via a continuous data protection interceptor
US11429308B2 (en) * 2020-03-18 2022-08-30 Vmware, Inc. Adaptive metadata batching based on input/output rate
US11803518B2 (en) 2020-10-01 2023-10-31 Hewlett Packard Enterprise Development Lp Journals to record metadata changes in a storage system
US11599269B2 (en) * 2021-03-17 2023-03-07 Vmware, Inc. Reducing file write latency
US20220391118A1 (en) 2021-06-08 2022-12-08 Hewlett Packard Enterprise Development Lp Journals for data cloning operations
US20230237048A1 (en) 2022-01-27 2023-07-27 Hewlett Packard Enterprise Development Lp Journal groups for metadata housekeeping operation

Also Published As

Publication number Publication date
CN117493290A (zh) 2024-02-02
US20240028465A1 (en) 2024-01-25
US11940882B2 (en) 2024-03-26

Similar Documents

Publication Publication Date Title
DE102013204972B4 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
DE102016013248A1 (de) Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
WO2015090668A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE202010018481U1 (de) Asynchroner verteilter Objekt-Upload für replizierte Assoziativspeichercluster
DE112011100618T5 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE102022108673A1 (de) Ressourcenzuweisung für synthetische backups
DE102010053282A1 (de) Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE112012001162T5 (de) Defragmentierung von Datenspeicherpools
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE112019006530T5 (de) Markieren von betroffenen ähnlichkeitsgruppen in freispeichersammeloperationen in duplizierten speichersystemen
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE102021109729A1 (de) Schätzung der nutzung der speichersystemkapazität
DE102021108455A1 (de) Erzeugen von Snapshots eines Key-Value-Index
DE102021125630A1 (de) Datensynchronisation in einem datenanalysesystem
DE19937423A1 (de) Verfahren und Vorrichtung zur schnellen Datensicherung und Datenübertragung
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems
DE102021101239B4 (de) Schwellenwert des deduplizierungssystems basierend auf der abnutzung eines speichergeräts
DE102022108668A1 (de) Zeitschriftengruppen für die verwaltung von metadaten
DE102021102442A1 (de) Katalog der mit schnappschüssen verbundenen dateien
DE102021127170A1 (de) Journale für datenklonvorgänge
DE102021108479B4 (de) Schlüssel-Wert-Index mit Knotenpuffern
DE102022127040A1 (de) Migration von zeitschriftengruppen in einem speichersystem