DE102022108673A1 - Ressourcenzuweisung für synthetische backups - Google Patents

Ressourcenzuweisung für synthetische backups Download PDF

Info

Publication number
DE102022108673A1
DE102022108673A1 DE102022108673.9A DE102022108673A DE102022108673A1 DE 102022108673 A1 DE102022108673 A1 DE 102022108673A1 DE 102022108673 A DE102022108673 A DE 102022108673A DE 102022108673 A1 DE102022108673 A1 DE 102022108673A1
Authority
DE
Germany
Prior art keywords
cache
data stream
data
full backup
logical group
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
DE102022108673.9A
Other languages
English (en)
Inventor
David Malcolm Falkinder
Richard Phillip MAYO
Peter Thomas Camble
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 DE102022108673A1 publication Critical patent/DE102022108673A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1469Backup restoration techniques
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/065Replication mechanisms

Abstract

Beispielimplementierungen beziehen sich auf Metadatenoperationen in einem Speichersystem. Ein Beispielspeichersystem enthält einen maschinenlesbaren Speicher, der Anweisungen speichert, die von einem Prozessor ausgeführt werden können, um zu bestimmen, dass eine synthetische Vollsicherung auf der Grundlage von Datenstromdarstellungen einer Vielzahl von Datenströmen zu erzeugen ist. Die Anweisungen sind auch ausführbar, um als Reaktion auf eine Bestimmung zur Erzeugung der synthetischen Vollsicherung eine logische Gruppe zu erstellen, die die Datenstromdarstellungen enthält. Die Anweisungen sind auch ausführbar, um eine Cache-Ressourcenzuweisung für die logische Gruppe zu spezifizieren und die synthetische Vollsicherung aus Datenstromdarstellungen zu erzeugen, wobei eine Menge einer Cache-Ressource verwendet wird, die durch die Cache-Ressourcenzuweisung für die logische Gruppe begrenzt ist.

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.
  • Figurenliste
  • Einige Ausführungsformen werden anhand der folgenden Abbildungen beschrieben.
    • ist ein schematisches Diagramm eines Beispielspeichersystems gemäß 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.
    • ist eine Illustration eines Beispielprozesses in Übereinstimmung mit einigen Implementierungen.
    • sind Abbildungen von Beispiel-Datenstrukturen gemäß einigen Implementierungen.
    • sind Abbildungen von Beispiel-Datenstrukturen gemäß einigen Implementierungen.
    • ist eine Illustration eines Beispielprozesses in Übereinstimmung mit einigen Implementierungen.
    • sind Abbildungen von Beispiel-Datenstrukturen gemäß einigen Implementierungen.
    • ist ein schematisches Diagramm eines Beispiel-Computergeräts gemäß einigen Implementierungen.
    • ist ein Diagramm eines Beispiels eines maschinenlesbaren Mediums, das Anweisungen in Übereinstimmung mit einigen Implementierungen speichert.
    • ist eine Illustration eines Beispielprozesses 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 Daten deduplizieren, um den für die Speicherung der Daten erforderlichen Speicherplatz zu reduzieren. Das Speichersystem kann einen Deduplizierungsprozess durchführen, bei dem ein Datenstrom in diskrete Dateneinheiten oder „Chunks“ unterteilt wird. „Darüber hinaus kann das Speichersystem Identifikatoren oder „Fingerabdrücke“ eingehender Dateneinheiten ermitteln und feststellen, welche eingehenden Dateneinheiten Duplikate von zuvor gespeicherten Dateneinheiten sind. Im Falle von Dateneinheiten, bei denen es sich um Duplikate handelt, kann das Speichersystem Verweise auf die vorherigen Dateneinheiten speichern, anstatt die doppelten eingehenden Dateneinheiten zu speichern.
  • 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“ die Gesamtheit oder eine Teilmenge des Inhalts der Dateneinheit umfassen kann). Ein Beispiel für eine Funktion, die angewendet werden kann, ist eine Hash-Funktion, die einen Hash-Wert auf der Grundlage der eingehenden Dateneinheit 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 Deduplizierungsspeichersystem Metadaten für die Verarbeitung eines oder mehrerer eingehender Datenströme (z. B. mehrerer gleichzeitiger eingehender Datenströme) verwenden. Solche Metadaten können zum Beispiel Datenrezepte (hier auch als „Manifeste“ bezeichnet) enthalten, die die Reihenfolge angeben, in der bestimmte Dateneinheiten (z. B. in einem Datenstrom) empfangen werden. Anschließend kann das Deduplizierungssystem als Reaktion auf eine Leseanforderung einen Satz von Manifesten verwenden, um die Reihenfolge der empfangenen Dateneinheiten zu bestimmen, und so den ursprünglichen Datenstrom wiederherstellen. Dementsprechend kann der Satz von Manifesten eine Darstellung des ursprünglichen Datenstroms sein. Die Manifeste können eine Folge von Datensätzen enthalten, wobei jeder Datensatz einen bestimmten Satz von Dateneinheiten darstellt.
  • In einigen Beispielen kann das Deduplizierungsspeichersystem einen eingehenden Datenstrom verarbeiten, um eine deduplizierte Kopie aller Datenblöcke einer bestimmten Datensammlung (z.B. einer Datei, eines Verzeichnisses usw.) zu speichern, was hier als „Vollsicherung“ der Datensammlung bezeichnet werden kann. Anschließend kann das Deduplizierungsspeichersystem einen weiteren Datenstrom verarbeiten, um eine deduplizierte Kopie nur derjenigen Datenblöcke der Datensammlung zu speichern, die sich seit der vorherigen Sicherung geändert haben, was hier als „inkrementelle Sicherung“ der Datensammlung bezeichnet werden kann. Darüber hinaus kann das Deduplizierungsspeichersystem die Verarbeitung weiterer Datenströme fortsetzen, um zu verschiedenen Zeitpunkten inkrementelle Sicherungen zu erstellen.
  • In einigen Beispielen kann das Deduplizierungsspeichersystem die Datensammlung so wiederherstellen, wie sie zu einem bestimmten Zeitpunkt auf der Grundlage der Vollsicherung und einer Folge inkrementeller Sicherungen bestand. Insbesondere kann das Deduplizierungsspeichersystem die Daten aus der Vollsicherung neu erstellen und auch die Daten aus jeder folgenden inkrementellen Sicherung neu erstellen, bis die inkrementelle Sicherung erreicht ist, die dem bestimmten Zeitpunkt entspricht. Auf diese Weise können die Änderungen, die an der Datensammlung vorgenommen wurden, der Reihe nach akkumuliert werden, bis der Zustand der Datensammlung erreicht ist, wie er zu dem bestimmten Zeitpunkt bestand. Die vollständige Kopie der Datensammlung, die aus einer Vollsicherung und einer Reihe inkrementeller Sicherungen neu erstellt wird, kann hier als „synthetische Vollsicherung“ bezeichnet werden. Die Vollsicherung und die inkrementellen Sicherungen, die zur Erstellung der synthetischen Vollsicherung verwendet werden, können im Folgenden als „Komponentensicherungen“ der synthetischen Vollsicherung bezeichnet werden. Ein Beispiel für die Erstellung einer synthetischen Vollsicherung wird im Folgenden unter Bezugnahme auf beschrieben.
  • In einigen Beispielen muss das Deduplizierungsspeichersystem bei der Erstellung einer synthetischen Vollsicherung (z. B. als Reaktion auf eine Leseanforderung) möglicherweise auf Metadaten aus mehreren Datenströmen zugreifen und diese lesen, die den Komponentensicherungen entsprechen (z. B. eine Vollsicherung und inkrementelle Sicherungen). Darüber hinaus kann das Deduplizierungsspeichersystem jedem Datenstrom die gleiche Menge an Systemressourcen zuweisen, um ihn zu verarbeiten. Beispielsweise kann das Deduplizierungsspeichersystem einen gleichen Anteil des Cache-Speichers für die Speicherung von Metadaten aus jedem Datenstrom zuweisen. Solche Zuweisungen sind jedoch durch die Gesamtmenge des Cache-Speichers im Deduplizierungsspeichersystem begrenzt.
  • In einigen Beispielen kann jede inkrementelle Sicherung mehrere Änderungen an verschiedenen Teilen der Datensammlung enthalten und kann Teile der Daten überschreiben, die in früheren Komponentensicherungen enthalten waren. Daher kann die Erstellung der synthetischen Vollsicherung ein wiederholtes Hin- und Herspringen zwischen einer beliebigen Anzahl von Komponentensicherungen erfordern, um verschiedene Datenbereiche zu lesen. Da der verfügbare Cache-Speicher jedoch begrenzt ist, müssen die Metadaten unter Umständen wiederholt aus dem Cache-Speicher geladen (z. B. um gelesen zu werden) und entladen werden (z. B. um Platz für andere Metadaten zu schaffen). Dieses „Hin- und Herschieben“ von Daten kann dazu führen, dass der Cache-Speicher weniger wahrscheinlich Daten speichert, die zu einem bestimmten Zeitpunkt benötigt werden. Dementsprechend kann die Leistungsverbesserung, die normalerweise durch den Cache-Speicher erzielt wird (d. h. der schnelle Zugriff auf benötigte Daten), bei der Erstellung einer synthetischen Vollsicherung verringert oder aufgehoben werden. Außerdem kann das wiederholte Laden und Entladen von Daten in den Cache-Speicher beträchtliche Mengen an Bandbreite und Zeit verbrauchen (z. B. für den Zugriff auf den Speicher, die Übertragung von Daten, das Auslagern von Daten usw.), ohne dass ein nennenswerter Nutzen entsteht. Darüber hinaus können sich diese Probleme noch verschärfen, wenn das Deduplizierungsspeichersystem mehrere gleichzeitige Generationen von synthetischen Vollbackups unterstützen muss (z. B. für verschiedene Anforderer).
  • In Übereinstimmung mit einigen Implementierungen der vorliegenden Offenbarung kann ein Speichersystem einen Speicher-Controller enthalten, um eine logische Gruppe mit mehreren Datenströmen zu erzeugen, die mit einer synthetischen Vollsicherung verbunden sind. Der logischen Gruppe kann eine bestimmte Menge einer begrenzten Systemressource (z. B. Cache-Speicher) zugewiesen werden. Darüber hinaus kann der logischen Gruppe eine Ressourcenrichtlinie zugewiesen werden, die angibt, wie die Ressourcenzuweisung für den Zugriff auf Metadaten für die mehreren Datenströme in der logischen Gruppe aufgeteilt wird. Bei der Erstellung der synthetischen Vollsicherung kann der Storage Controller die Nutzung der Ressourcenzuweisung in der logischen Gruppe gemäß der Ressourcenrichtlinie verwalten. Auf diese Weise kann die Gesamtnutzung der Ressource intelligent verwaltet werden, um die Effizienz zu steigern und die Verschwendung der Ressource zu reduzieren.
  • Darüber hinaus können einige Implementierungen einen Cache-Controller enthalten, der einen Cache-Eintrag vorverlegt, der in einem aktuellen Kontext als am nützlichsten erachtet wird. Eine solche Funktionalität kann beinhalten, dass festgestellt wird, welcher Datenstrom während eines bestimmten Zeitraums am meisten genutzt wurde, dass der jüngste Cache-Eintrag identifiziert wird, der Daten aus dem am meisten genutzten Datenstrom enthält, und dass der identifizierte Eintrag im Cache gefördert wird. Auf diese Weise können die Daten, die für den aktuellen Kontext (z. B. die Erstellung einer synthetischen Vollsicherung) am nützlichsten sind, für einen längeren Zeitraum im Cache verbleiben und dadurch die Leistung des Cache verbessern.
  • ABB. 1 - Beispiel für ein Speichersystem
  • zeigt ein Beispiel für ein Speichersystem 100, das einen Speicher-Controller 110, einen Speicher 115, einen dauerhaften Speicher 140 und einen Cache 180 gemäß einigen Implementierungen umfasst. Wie dargestellt, kann der persistente Speicher 140 eine beliebige Anzahl von Manifesten 150, Container-Indizes 160 und Datencontainern 170 enthalten. Ferner kann der Speicher 115 auch Manifeste 150, Container-Indizes 160 und Datencontainer 170 enthalten. Der dauerhafte Speicher 140 kann ein oder mehrere nicht-übertragbare Speichermedien wie Festplattenlaufwerke (HDDs), Solid-State-Laufwerke (SSDs), optische Platten usw. oder eine Kombination davon umfassen. Der Speicher 115 kann durch eine oder mehrere Speichervorrichtungen implementiert werden, einschließlich flüchtiger Speichervorrichtungen (z. B. Direktzugriffsspeicher (RAM)), nichtflüchtiger Speichervorrichtungen (einschließlich dauerhafter Speicher) oder einer Kombination davon.
  • In einigen Implementierungen kann das Speichersystem 100 eine gleichzeitige Deduplizierung mehrerer eingehender Datenströme 105A-105N (hier auch als „Datenströme 105“ bezeichnet) durchführen. Zum Beispiel kann der Speicher-Controller 110 jeden Datenstrom 105 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 Containers 170). In einigen Beispielen kann jeder Datencontainer 170 in Teile (hier auch als „Einheiten“ bezeichnet) 175 unterteilt sein. Jede Einheit 175 kann eine oder mehrere gespeicherte Dateneinheiten enthalten.
  • 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 auf der Grundlage der 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.
  • In einigen Implementierungen kann die Speichersteuerung 110 ein Manifest 150 erstellen, um die Reihenfolge aufzuzeichnen, in der die Dateneinheiten in jedem Datenstrom 105 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. Zum Beispiel kann der zugehörige Containerindex 160 Informationen enthalten, die angeben, dass die Dateneinheit an einem bestimmten Offset in einer Entität 175 gespeichert ist und dass die Entität 175 an einem bestimmten Offset in einem Datencontainer 170 gespeichert ist.
  • In einigen Implementierungen kann der Speicher-Controller 110 eine Leseanforderung für den Zugriff auf die gespeicherten Daten erhalten und daraufhin das Manifest 150 in den Speicher 115 laden und die Reihenfolge der Dateneinheiten bestimmen, aus denen die ursprünglichen Daten bestanden. Die Speichersteuerung 110 kann dann die im Manifest 150 enthaltenen Zeigerdaten verwenden, um die den Dateneinheiten zugeordneten Containerindizes 160 zu identifizieren. Ferner kann der Speicher-Controller 110 die identifizierten Container-Indizes 160 in den Speicher 115 laden und die Orte bestimmen, an denen die Dateneinheiten gespeichert sind (z. B. Datencontainer 170, Entität 175, Offsets usw.). Die Speichersteuerung 110 kann dann die Dateneinheiten von den ermittelten Speicherplätzen lesen.
  • In einigen Implementierungen kann der Speicher-Controller 110 eine synthetische Vollsicherung (z. B. als Reaktion auf eine Leseanforderung) auf der Grundlage von Komponentensicherungen (z. B. eine Vollsicherung und inkrementelle Sicherungen) erstellen. Dieser Prozess kann den gleichzeitigen Zugriff auf Metadaten (z. B. Manifeste 150 und Container-Indizes 160) aus mehreren Datenströmen 105 beinhalten, die den Komponentensicherungen entsprechen. Die abgerufenen Metadaten können in den Speicher 115 geladen werden. Darüber hinaus kann ein Teil der abgerufenen Metadaten in den Cache 180 geladen werden.
  • Wie in dargestellt, kann die Speichersteuerung 110 eine Ressourcengruppierungs-Engine 120 enthalten. In einigen Implementierungen kann die Ressourcengruppierungs-Engine 120 ein Auslöseereignis erkennen, um eine synthetische Vollsicherung zu erzeugen, und als Reaktion darauf eine logische Gruppe mit Darstellungen der mehreren Datenströme 105 erzeugen, die den Komponentensicherungen entsprechen. Die Ressourcengruppierungsmaschine 120 kann dann der logischen Gruppe eine Ressourcenrichtlinie und mindestens eine Ressourcenzuweisung zuweisen. Die Ressourcenzuweisung kann eine bestimmte Menge einer begrenzten Systemressource (z. B. Cache-Speicher) festlegen. Die Ressourcenrichtlinie kann Einschränkungen und/oder Regeln für die Aufteilung der Ressourcenzuweisung in der logischen Gruppe festlegen. In einigen Implementierungen kann die Ressourcengruppierungsmaschine 120 die Verwendung der Ressourcenzuweisung innerhalb der logischen Gruppe gemäß der Ressourcenrichtlinie steuern. Auf diese Weise kann die Ressourcengruppierungsmaschine 120 ein intelligentes Management der Gesamtnutzung der Systemressource bereitstellen und dadurch die Effizienz steigern und die Verschwendung der Systemressource verringern. Die Verwendung von logischen Gruppen mit Ressourcenrichtlinien und Ressourcenzuweisungen wird weiter unten unter Bezugnahme auf die . Wie hierin beschrieben, kann eine Maschine über Hardware (z. B. elektronische Schaltungen) oder eine Kombination aus Hardware und Programmierung implementiert werden, wie z. B. mindestens ein Prozessor (Hardware) zur Ausführung von Anweisungen (Programmierung), die auf mindestens einem maschinenlesbaren Speichermedium gespeichert sind.
  • Wie in dargestellt, kann der Cache 180 außerdem einen Cache-Controller 185 enthalten (oder mit ihm verbunden sein). In einigen Implementierungen kann der Cache-Controller 185 einen Fehler im Cache 180 erkennen und als Reaktion darauf einen Cache-Eintrag fördern, von dem vorhergesagt wird, dass er in einem aktuellen Kontext am nützlichsten ist. Beispielsweise kann der Cache-Controller 185 die Anzahl der Cache-Fehlversuche in einem bestimmten Zeitraum zählen (d. h. die Anzahl der Fälle, in denen ein angefordertes Datenelement nicht im Cache 180 gefunden wurde). Der Cache-Controller 185 kann einen Cache-Fehler erkennen, wenn die Anzahl der Cache-Fehlversuche einen Schwellenwert überschreitet. In einigen Implementierungen kann der Schwellenwert gleich der Anzahl der Datenelemente sein, die im Cache 180 gespeichert werden können. Ferner kann der Cache-Controller 185 bei der Erkennung des Cache-Fehlers bestimmen, welcher Datenstrom 105 mit den meisten Daten verbunden ist, die während einer bestimmten Zeitspanne aus dem Cache 180 gelesen wurden. Ferner kann der Cache-Controller 185 den jüngsten Eintrag des Cache 180 identifizieren, der mit dem ermittelten Datenstrom 105 verbunden ist, und den identifizierten Eintrag an eine Position im Cache befördern, die in der Räumungsreihenfolge die letzte ist. Auf diese Weise kann der Cache-Controller 185 die Zeitspanne verlängern, in der der für den aktuellen Kontext nützlichste Eintrag (z. B. die Erstellung einer synthetischen Vollsicherung) im Cache 180 verbleibt, und dadurch die Leistung des Cache 180 verbessern. Die Verwendung des Cache-Controllers 185 zur Förderung des Cache-Eintrags, der als am nützlichsten vorhergesagt wird , wird weiter unten unter Bezugnahme auf . In einigen Beispielen kann der Cache-Controller 185 über 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 Beispielen kann der Cache 180 über eine oder mehrere Speichervorrichtungen, einschließlich flüchtiger oder nichtflüchtiger Speichervorrichtungen oder einer Kombination davon, implementiert werden.
  • ABB. 2 - Beispielhafte Datenstrukturen
  • zeigt ein Beispiel für Datenstrukturen 200, die bei der Deduplizierung in Übereinstimmung mit einigen Implementierungen verwendet werden. Wie gezeigt, können die Datenstrukturen 200 einen Manifestdatensatz 210, einen Containerindex 220, einen Container 250 und eine Entität 260 enthalten. In einigen Beispielen können der Manifestdatensatz 210, der Containerindex 220, der Container 250 und die Entität 230 im Allgemeinen den Beispielimplementierungen eines Manifestdatensatzes 155, eines Indexes 160, eines Datencontainers 170 bzw. einer Entität 175 (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, wie z. B. Offset, Länge, Containerindex und Einheitsadresse. 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 Zählwert und eine Einheitslänge. Darüber hinaus kann jeder Entitätsdatensatz 240 verschiedene Felder enthalten, z. B. einen Entitätsbezeichner, 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 und so weiter). 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.
  • ABB. 3 - Beispielhafte Datenstrukturen
  • zeigt eine Illustration von Beispiel-Datenstrukturen 300, die bei der Erstellung einer synthetischen Vollsicherung gemäß einigen Implementierungen beteiligt sind. Wie gezeigt, enthalten die Datenstrukturen 300 mehrere Datenstromdarstellungen 310-314, die zu verschiedenen Zeitpunkten empfangene Datenströme darstellen (z. B. durch das in dargestellte System 100). Beispielsweise stellt die Datenstromdarstellung 310 einen Datenstrom dar, der zu einem ersten Zeitpunkt empfangen wird und zur Erstellung der vollständigen Sicherung 320 verwendet wird (d. h. einschließlich deduplizierter Kopien aller Datenblöcke in einer Quellensammlung von Daten). In einigen Implementierungen kann jede der Datenstromdarstellungen 310-340 ein oder mehrere Manifeste enthalten, die die Reihenfolge angeben, in der bestimmte Dateneinheiten in einem eingehenden Datenstrom empfangen wurden.
  • Des Weiteren stellt die Datenstromdarstellung 311 einen Datenstrom dar, der zu einem zweiten Zeitpunkt empfangen wird und zur Erstellung der inkrementellen Sicherung 321 verwendet wird (d. h. einschließlich deduplizierter Kopien nur derjenigen Datenblöcke der Quellensammlung von Daten, die sich seit der Erstellung der vollständigen Sicherung 320 geändert haben). Darüber hinaus stellen die Datenstromdarstellungen 312-314 Datenströme dar, die jeweils zu einem dritten, vierten und fünften Zeitpunkt empfangen und zur Erstellung der inkrementellen Backups 322-324 verwendet werden.
  • Wie in dargestellt, kann zu einem sechsten Zeitpunkt eine synthetische Vollsicherung 330 erzeugt werden, indem die Vollsicherung 320 und die inkrementellen Sicherungen 321-324 neu erstellt und kombiniert werden. In einigen Implementierungen können die in den inkrementellen Sicherungen 321-324 enthaltenen Datenänderungen in der Reihenfolge ihrer Erstellung akkumuliert werden. Beachten Sie zum Beispiel, dass ein Teil 350 der Vollsicherung 320 durch die inkrementelle Sicherung 321 geändert wird und durch die inkrementelle Sicherung 323 erneut geändert wird. Dementsprechend kann die synthetische Vollsicherung 330 alle Datenblöcke in der Quellensammlung von Daten enthalten, wie sie zum fünften Zeitpunkt (d. h. zum Erstellungszeitpunkt der letzten inkrementellen Sicherung 324) vorhanden waren.
  • In einigen Implementierungen können Anweisungen zur Erzeugung einer logischen Gruppe 340 als Reaktion auf ein auslösendes Ereignis zur Erzeugung der synthetischen Vollsicherung 330 ausgeführt werden. Zum Beispiel können die Anweisungen zum Erzeugen der logischen Gruppe 340 Anweisungen zum Definieren der logischen Gruppe 340 enthalten, um die Datenstromdarstellungen 310-314 einzuschließen, die die Daten in den Komponentensicherungen (d. h. Vollsicherung 320 und inkrementelle Sicherungen 321-324) enthalten, die zum Erzeugen der synthetischen Vollsicherung 330 verwendet werden. In einigen Implementierungen kann ein Speicher-Controller (z. B. der in gezeigte Speicher-Controller 110) die logische Gruppe 340 verwenden, um die gemeinsame Nutzung einer Systemressource (z. B. Cache-Speicher) durch mehrere gleichzeitige Prozesse zu verwalten, die auf die Datenstromdarstellungen 310-314 zugreifen und diese verarbeiten, um die synthetische Vollsicherung 330 zu erzeugen.
  • In einigen Implementierungen kann die Mitgliedschaft in der logischen Gruppe 340 nach deren Erstellung geändert werden. So können beispielsweise einige oder alle Datenstromdarstellungen 310-314 aus der logischen Gruppe 340 entfernt werden, wenn sie für die Erstellung der synthetischen Vollsicherung 330 nicht mehr benötigt werden. Außerdem können der logischen Gruppe 340 weitere Datenstromdarstellungen hinzugefügt werden, wenn sie für die Erstellung der synthetischen Vollsicherung 330 benötigt werden.
  • ABB. 4 und 5A-5B - Beispielverfahren für zur Erstellung einer synthetischen Vollsicherung
  • zeigt einen Beispielprozess 400 zum Erzeugen einer synthetischen Vollsicherung in Übereinstimmung mit einigen Implementierungen. Der Prozess 400 kann von der Speichersteuerung 110 durchgeführt werden, die Anweisungen ausführt (die Anweisungen der Ressourcengruppierungsmaschine 120 enthalten können), oder von der Ressourcengruppierungsmaschine 120 (die Schaltkreise oder Hardware (z. B. eine Steuerung) und zugehörige Programmierung (z. B. Anweisungen) enthalten kann). Der Prozess 400 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 400 im Folgenden unter Bezugnahme auf , die Beispiel-Datenstrukturen 500 in Übereinstimmung mit einigen Implementierungen zeigen. Es sind jedoch auch andere Implementierungen möglich.
  • Block 410 kann die Entscheidung beinhalten, eine synthetische Vollsicherung zu erzeugen. Block 420 kann die Identifizierung mehrerer Datenströme umfassen, die die Quelldaten für die synthetische Vollsicherung enthalten. Block 430 kann die Erstellung einer logischen Gruppe umfassen, die die mehreren Datenströme enthält. Zum Beispiel, bezogen auf die und , kann der Speicher-Controller 110 einen Befehl oder eine Anforderung (z. B. von einem internen Prozess, von einem Client usw.) erhalten, eine synthetische Vollsicherung 330 zu erzeugen, um den Zustand einer Quellensammlung von Daten zu einem bestimmten Zeitpunkt wiederherzustellen. Als Reaktion auf die Anforderung kann der Speicher-Controller 110 feststellen, dass der bestimmte Zeitpunkt dem Erstellungszeitpunkt der inkrementellen Sicherung 324 entspricht, und kann dadurch feststellen, dass die synthetische Vollsicherung 330 durch Kombination der Vollsicherung 320 und der inkrementellen Sicherungen 321-324 erzeugt werden kann. Die Speichersteuerung 110 kann dann eine logische Gruppe 340 erzeugen, die die Datenstromdarstellungen 310-314 enthält, die jeweils der Vollsicherung 320 und den inkrementellen Sicherungen 321-324 entsprechen.
  • Wiederum Bezug nehmend auf , kann Block 440 die Angabe einer Ressourcenzuweisung für die logische Gruppe beinhalten. Block 450 kann die Festlegung einer Ressourcenrichtlinie für die logische Gruppe beinhalten. Block 460 kann die Erstellung der synthetischen Vollsicherung unter Verwendung der Systemressourcenzuweisung und der Ressourcenrichtlinie für die logische Gruppe umfassen. Zum Beispiel, siehe und , kann der Speicher-Controller 110 der logischen Gruppe 340 (einschließlich der Datenstromdarstellungen 310-314) eine Gruppenzuweisung 510 zuweisen. Wie in gezeigt, kann die Gruppenzuweisung 510 in einigen Ausführungsformen eine Ressourcenrichtlinie 520 und eine beliebige Anzahl von Ressourcenzuweisungen 530A-530N (hier auch als „Ressourcenzuweisungen 530“ bezeichnet) enthalten. Jede Ressourcenzuweisung 530 kann einen bestimmten Teil (z. B. Menge, Prozentsatz usw.) einer Systemressource (z. B. Cache-Speicher, Bandbreite, Speicher usw.) angeben, der ausschließlich der logischen Gruppe 340 zugewiesen wird. Die Ressourcenrichtlinie 520 kann Beschränkungen und/oder Regeln dafür festlegen, wie die Ressourcenzuweisungen 530 innerhalb der logischen Gruppe 340 geteilt werden. Einige Beispiele für Ressourcenrichtlinien 520 werden im Folgenden unter Bezugnahme auf beschrieben. Die Speichersteuerung 110 kann die Verwendung der Ressourcenzuweisungen 530 gemäß der Ressourcenrichtlinie 520 verwalten und dadurch die angeforderte synthetische Vollsicherung erzeugen.
  • Wiederum Bezug nehmend auf , kann der Entscheidungsblock 470 die Feststellung beinhalten, ob irgendeine Datenstromdarstellung in der logischen Gruppe nicht mehr für die Erzeugung der synthetischen Vollsicherung benötigt wird. Ist dies nicht der Fall, kann der Prozess 400 zu Block 460 (siehe oben) zurückkehren. Andernfalls, wenn im Entscheidungsblock 470 festgestellt wird, dass ein Datenstrom in der logischen Gruppe nicht mehr benötigt wird, kann der Prozess 400 im Block 475 fortgesetzt werden, einschließlich des Entfernens des nicht benötigten Datenstroms aus der logischen Gruppe. Zum Beispiel, bezogen auf und kann der Speicher-Controller 110 beispielsweise feststellen, dass alle Datenänderungen an der Vollsicherung 320, die durch die Datenstromdarstellungen 311 und 313 repräsentiert werden, bereits verarbeitet (d. h. in die synthetische Vollsicherung 330 aufgenommen) wurden und daher die Datenströme 311 und 313 nicht mehr für die Erzeugung der synthetischen Vollsicherung 330 benötigt werden. Dementsprechend können die Datenströme 311 und 313 aus der logischen Gruppe 340 entfernt werden (, wie in dargestellt,). In einigen Implementierungen kann die Anzahl der Mitglieder der logischen Gruppe 340 erhöht werden, nachdem sie erstellt wurde. Beispielsweise kann, wie in gezeigt, der Datenstrom 315 der logischen Gruppe 340 hinzugefügt werden, wenn dies zur Erstellung der synthetischen Vollsicherung erforderlich ist.
  • Wiederum Bezug nehmend auf kann der Entscheidungsblock 480 die Feststellung beinhalten, ob alle in der logischen Gruppe enthaltenen Datenstromdarstellungen in die synthetische Vollsicherung aufgenommen wurden. Ist dies nicht der Fall, kann der Prozess 400 zu Block 460 (siehe oben) zurückkehren. Andernfalls, wenn in Entscheidungsblock 480 festgestellt wird, dass alle Datenstromdarstellungen in der logischen Gruppe in die synthetische Vollsicherung aufgenommen wurden, kann der Prozess 400 in Block 485 fortfahren, einschließlich des Löschens der logischen Gruppe und der Freigabe ihrer Ressourcenzuweisungen. Nach Block 485 kann der Prozess 400 abgeschlossen werden. Zum Beispiel, siehe und , kann der Speicher-Controller 110 feststellen, dass die verbleibenden Datenstromdarstellungen 310, 312 und 314 in der logischen Gruppe 340 bereits verarbeitet wurden (oder zuvor aus der logischen Gruppe 340 entfernt wurden). Daraufhin kann die Speichersteuerung 110 die logische Gruppe 340 löschen und ihre Ressourcenzuweisungen 530A-530N freigeben (d. h. die Ressourcenzuweisungen für die Zuweisung an eine andere logische Gruppe verfügbar machen).
  • ABB. 6A-6B - Beispielhafte Datenstrukturen
  • zeigt eine Darstellung mehrerer Ressourcenzuweisungen 610A-610N (hier auch als „Ressourcenzuweisungen 610“ bezeichnet). Wie dargestellt, kann jede Ressourcenzuweisung 610 einen festen oder variablen Teil einer Gesamtmenge 600 einer Systemressource darstellen. In einigen Implementierungen kann jede Ressourcenzuweisung 610 für eine andere logische Gruppe reserviert (oder anderweitig zugewiesen) werden.
  • In ist eine Richtlinientabelle 650 abgebildet. In einigen Implementierungen kann die Richtlinientabelle 650 eine gespeicherte Datenstruktur sein, die zur Auswahl der der logischen Gruppe 340 zugewiesenen Ressourcenrichtlinie 520 (dargestellt in verwendet wird. Wie dargestellt, kann die Richtlinientabelle 650 verschiedene Richtlinien 1-4 enthalten, wobei jede Richtlinie eine andere Strategie oder Methodik zur Verwaltung einer Ressourcenzuweisung für eine logische Gruppe widerspiegelt.
  • Beispielsweise kann die erste Strategie der „festen Zuweisung“ festlegen, dass jede Ressourcenzuweisung zum Zeitpunkt der Erstellung der logischen Gruppe festgelegt ist und nicht geändert wird, wenn sich die logische Gruppe ändert (z. B. wenn eine Datenstromdarstellung aus der logischen Gruppe entfernt wird). In einem anderen Beispiel kann die zweite Strategie der „begrenzten Skalierung“ festlegen, dass die Ressourcenzuweisung für jede Datenstromdarstellung, die der logischen Gruppe hinzugefügt wird, gleichmäßig erhöht wird, bis ein Höchstwert erreicht ist.
  • In einem weiteren Beispiel kann die dritte Richtlinie der „nichtlinearen Skalierung“ festlegen, dass der ersten Datenstromdarstellung in der logischen Gruppe eine erste konfigurierbare Menge X zugewiesen wird und allen zusätzlichen Datenstromdarstellungen, die der logischen Gruppe hinzugefügt werden, eine zweite konfigurierbare Menge Y zugewiesen wird (z. B. wobei Y kleiner als X oder größer als X sein kann). In einem weiteren Beispiel kann die vierte Richtlinie „Client-gesteuert“ festlegen, dass eine Client-Anwendung oder ein Benutzer in der Lage ist, die den einzelnen Datenstromdarstellungen zugewiesenen Mengen festzulegen (z. B. durch Zuweisung größerer Mengen an Datenstromdarstellungen für vollständige Backups als an Datenstromdarstellungen für inkrementelle Backups).
  • ABB. 7 und 8A-8C - Beispiel eines Verfahrens zur Förderung eines Cache-Eintrags
  • In ist ein Beispielprozess 700 zur Förderung eines Cache-Eintrags in Übereinstimmung mit einigen Implementierungen dargestellt. Der Prozess 700 kann unter Verwendung des Cache-Controllers 185 und/oder des Speicher-Controllers 110 (dargestellt in ) durchgeführt werden. 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 Prozesses 700 unter Bezugnahme auf die beschrieben, die ein Beispiel für Datenstrukturen in Übereinstimmung mit einigen Implementierungen zeigen. Es sind jedoch auch andere Implementierungen möglich.
  • Block 710 kann die Erkennung eines Fehlers in einem Cache beinhalten, der Daten aus einer Vielzahl von Datenströmen speichert. Beispielsweise kann der Cache 180 Metadaten (z. B. Manifeste 150 und Container-Indizes 160) speichern, die mit mehreren Datenströmen 105 verbunden sind (z. B. während der Erstellung einer synthetischen Vollsicherung) (siehe ). Der Cache-Controller 185 kann die Gesamtzahl der Fehlversuche zählen, die während eines bestimmten Zeitraums im Cache 180 auftreten, und feststellen, ob die Anzahl der Fehlversuche einen Schwellenwert überschreitet. In einigen Implementierungen kann der Schwellenwert gleich der Gesamtzahl der Einträge im Cache 180 sein. Der Cache-Controller 185 kann einen Cache-Fehler erkennen, wenn die Anzahl der Fehlversuche den Schwellenwert überschreitet.
  • Wiederum Bezug nehmend auf kann Block 720 für jede Datenstromdarstellung die Bestimmung eines Maßes für die Gesamtmenge an Daten beinhalten, die mit der Datenstromdarstellung verbunden sind, die während einer kürzlichen Zeitspanne aus dem Cache gelesen wurde. Zum Beispiel, bezogen auf die und , kann der Cache-Controller 185 Cache-Informationen 800 in Bezug auf den Cache 180 bestimmen oder sammeln. Die Cache-Informationen 800 können die Datenstromdarstellung 820 identifizieren, die die derzeit in jedem Cache-Eintrag 810 gespeicherten Daten enthält. Die Cache-Informationen 800 können auch eine Wertmetrik 830 identifizieren, die mit jedem Cache-Eintrag 810 verbunden ist. In einigen Implementierungen kann die Wertmetrik 830 eine Zahl sein, die die Datenmenge angibt, die aus dem zugehörigen Cache-Eintrag 810 während eines kürzlichen Zeitraums (z. B. seit der letzten Erkennung eines Cache-Fehlers) gelesen wurde. Ferner kann der Cache-Controller 185 als Reaktion auf die Erkennung eines Fehlers im Cache 180 die Wertmetriken 830 nach der Datenstromdarstellung 810 summieren und so die Summe der Wertinformationen 840 bestimmen. Die Summe der Wertinformationen 840 kann die Gesamtdatenmenge für jede Datenstromdarstellung 810 angeben, die aus dem Cache 180 gelesen wurde.
  • Wieder Bezug nehmend auf , kann Block 730 die Identifizierung einer Datenstromdarstellung mit der größten Menge an Daten beinhalten, die in der jüngsten Zeitperiode aus dem Cache gelesen wurden. Block 740 kann die Identifizierung eines Eintrags umfassen, der zuletzt aus dem Cache gelesen wurde und Daten aus der identifizierten Datenstromdarstellung enthält. Zum Beispiel, bezogen auf und , kann der Cache-Controller 185 die Summe der Wertinformationen 840 verwenden, um zu bestimmen, dass die Datenstromdarstellung C die größte Menge 850 an Daten hatte, die in der jüngsten Zeitperiode aus dem Cache 180 gelesen wurden. In einigen Implementierungen kann der zuletzt gelesene Cache-Eintrag, der der Datenstromdarstellung mit der größten aus dem Cache gelesenen Datenmenge zugeordnet ist (d. h. Eintrag 8 in dem in den dargestellten Beispiel), als der nützlichste Eintrag für den aktuellen Verwendungskontext des Cache 180 angesehen werden.
  • Erneut auf Bezug nehmend, kann Block 750 die Beförderung des identifizierten Eintrags an eine Position im Cache beinhalten, die in der Räumungsreihenfolge die letzte ist. Nach Block 750 kann der Prozess 700 abgeschlossen sein. Zum Beispiel, bezogen auf und , kann der Cache-Controller 185 eine Beförderung 870 durchführen, um den Eintrag 8 an die niedrigste nummerierte Position im Cache 180 (d. h. Position 1) zu verschieben, die in der Räumungsreihenfolge die letzte ist (d. h. die letzte, die von den Einträgen 1-10 geräumt wird). Wie in gezeigt, können die verbleibenden Einträge 1-7 und 9-10 in ihren jeweiligen Positionen im Cache 180 nach unten verschoben werden. Auf diese Weise kann der Cache-Controller 185 die Zeitspanne erhöhen, in der der für den aktuellen Nutzungskontext nützlichste Eintrag (d. h. Eintrag 8) im Cache 180 verbleibt, und dadurch die Leistung des Cache 180 verbessern.
  • ABB. 9 - Beispiel für eine Datenverarbeitungsanlage
  • zeigt ein schematisches Diagramm eines Beispiel-Computergeräts 900. In einigen Beispielen kann die Rechenvorrichtung 900 im Allgemeinen einem Teil oder der Gesamtheit des Speichersystems 100 (dargestellt in ) entsprechen. Wie dargestellt, kann die Rechenvorrichtung 900 einen Hardwareprozessor 902 und einen maschinenlesbaren Speicher 905 mit Befehlen 910-940 enthalten. Der maschinenlesbare Speicher 905 kann ein nicht-übertragbares Medium sein. Die Befehle 910-940 können von dem Hardware-Prozessor 902 oder von einer im Hardware-Prozessor 902 enthaltenen Verarbeitungsmaschine ausgeführt werden.
  • Die Anweisung 910 kann ausgeführt werden, um zu bestimmen, dass eine synthetische Vollsicherung auf der Grundlage von Datenstromdarstellungen einer Vielzahl von Datenströmen erzeugt werden soll. Die Anweisung 920 kann ausgeführt werden, um als Reaktion auf die Bestimmung, die synthetische Vollsicherung zu erzeugen, eine logische Gruppe zu erstellen, die die Vielzahl von Datenstromdarstellungen enthält. Die Anweisung 930 kann ausgefiihrt werden, um eine Cache-Ressourcenzuweisung für die logische Gruppe festzulegen. Die Anweisung 940 kann ausgeführt werden, um die synthetische Vollsicherung unter Verwendung einer durch die Cache-Ressourcenzuweisung für die logische Gruppe begrenzten Menge an Cache-Ressourcen zu erzeugen.
  • ABB. 10 - Beispiel für ein maschinenlesbares Medium
  • zeigt ein maschinenlesbares Medium 1000, auf dem Anweisungen 1010-1040 gemäß einigen Implementierungen gespeichert sind. Die Anweisungen 1010-1040 können von einem einzelnen Prozessor, mehreren Prozessoren, einer einzelnen Verarbeitungsmaschine, mehreren Verarbeitungsmaschinen usw. ausgeführt werden. Das maschinenlesbare Medium 1000 kann ein nicht-transitorisches Speichermedium sein, wie z. B. ein optisches, Halbleiter- oder magnetisches Speichermedium.
  • Die Anweisung 1010 kann ausgeführt werden, um zu bestimmen, dass eine synthetische Vollsicherung auf der Grundlage von Datenstromdarstellungen einer Vielzahl von Datenströmen zu erzeugen ist. Die Anweisung 1020 kann ausgeführt werden, um als Reaktion auf die Bestimmung, eine synthetische Vollsicherung zu erzeugen, eine logische Gruppe zu erstellen, die die Datenstromdarstellungen enthält. Die Anweisung 1030 kann ausgeführt werden, um der logischen Gruppe eine Ressourcenrichtlinie und eine Ressourcenzuweisung zuzuweisen. Die Anweisung 1040 kann ausgefiihrt werden, um die synthetische Vollsicherung aus den Datenstromdarstellungen auf der Grundlage der Ressourcenrichtlinie und der Ressourcenzuweisung zu erzeugen, die der logischen Gruppe zugewiesen wurden.
  • ABB. 11 - Beispielprozess für das Heraufstufen eines Cache-Eintrags
  • In ist ein Beispielprozess 1100 zur Förderung eines Cache-Eintrags in Übereinstimmung mit einigen Implementierungen dargestellt. Der Prozess 1100 kann unter Verwendung des Cache-Controllers 185 (in dargestellt) durchgeführt werden. Der Prozess 1100 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.
  • Block 1110 kann beinhalten: Erkennen eines Fehlers in einem Cache, der eine Vielzahl von Cache-Einträgen umfasst, durch einen Cache-Controller, wobei die Vielzahl von Cache-Einträgen Daten aus einer Vielzahl von Datenstromdarstellungen speichert. Block 1120 kann als Reaktion auf die Erkennung des Fehlers beinhalten, dass der Cache-Controller eine Datenstromdarstellung bestimmt, die die größte Menge an Daten aufweist, die in einer ersten Zeitperiode aus dem Cache gelesen wurde. Block 1130 kann beinhalten, dass der Cache-Controller einen zuletzt verwendeten Cache-Eintrag bestimmt, der mit der bestimmten Datenstromdarstellung verbunden ist. Block 1140 kann beinhalten, dass der Cache-Controller den ermittelten, zuletzt verwendeten Cache-Eintrag an eine Position des Caches befördert, die in der Auslagerungsreihenfolge die letzte ist.
  • Einige der hier beschriebenen Implementierungen können einen Speicher-Controller umfassen, der eine logische Gruppe mit mehreren Datenstromdarstellungen erzeugt, die mit einer synthetischen Vollsicherung verbunden sind. Der logischen Gruppe können eine Ressourcenrichtlinie und eine oder mehrere Ressourcenzuweisungen zugewiesen werden. Bei der Erstellung der synthetischen Vollsicherung kann der Controller die Nutzung der Ressourcenzuweisung in der logischen Gruppe gemäß der Ressourcenrichtlinie verwalten. Auf diese Weise kann die Gesamtnutzung der Ressource intelligent verwaltet werden, um die Effizienz zu steigern und die Verschwendung der Ressource zu verringern.
  • Darüber hinaus können einige Implementierungen einen Cache-Controller enthalten, der einen Cache-Eintrag vorverlegt, der in einem aktuellen Kontext als am nützlichsten erachtet wird. Dieser Prozess kann beinhalten, dass ermittelt wird, welche Datenstromdarstellung während eines bestimmten Zeitraums am häufigsten verwendet wurde, dass der jüngste Cache-Eintrag identifiziert wird, der Daten aus der am häufigsten verwendeten Datenstromdarstellung enthält, und dass der identifizierte Eintrag im Cache gefördert wird. Auf diese Weise können die Daten, die für den aktuellen Kontext am nützlichsten sind, für einen längeren Zeitraum im Cache verbleiben und dadurch die Leistung des Cache verbessern.
  • Beachten Sie, dass die verschiedene Beispiele zeigen, sind die 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 und/oder des Cache-Controllers 185 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 Speichersystem, das Folgendes umfasst: einen Prozessor; und einen maschinenlesbaren Speicher, der Befehle speichert, wobei die Befehle vom Prozessor ausgeführt werden können, um: bestimmen, um eine synthetische Vollsicherung auf der Grundlage von Datenstromdarstellungen einer Vielzahl von Datenströmen zu erzeugen; als Reaktion auf eine Entscheidung, die synthetische Vollsicherung zu erzeugen, eine logische Gruppe zu erstellen, die die Datenstromdarstellungen enthält; eine Cache-Ressourcenzuweisung für die logische Gruppe angeben; und Erzeugen der synthetischen Vollsicherung aus Datenstromdarstellungen unter Verwendung einer durch die Cache-Ressourcenzuweisung für die logische Gruppe begrenzten Menge einer Cache-Ressource.
  2. Das Speichersystem nach Anspruch 1, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: eine Ressourcenpolitik für die logische Gruppe angeben; und während der Erstellung der synthetischen Vollsicherung die Nutzung der Ressourcenzuweisung innerhalb der logischen Gruppe gemäß der Ressourcenpolitik zu verwalten.
  3. Das Speichersystem nach Anspruch 2, wobei die Ressourcenpolitik eine ist, die aus einer festen Zuweisungspolitik, einer begrenzten Skalierungspolitik, einer nichtlinearen Skalierungspolitik und einer clientgesteuerten Politik ausgewählt ist.
  4. Das Speichersystem nach Anspruch 1, wobei die Mehrzahl der Datenströme einer vollständigen Sicherung und einer Mehrzahl inkrementeller Sicherungen entspricht.
  5. Das Speichersystem nach Anspruch 1 umfasst ferner einen Cache; und einen Cache-Controller an: als Reaktion auf die Erkennung eines Fehlers im Cache eine Datenstromdarstellung zu identifizieren, die mit der größten Menge an Daten verbunden ist, die in einer ersten Zeitperiode aus dem Cache gelesen wurden; Bestimmen eines zuletzt verwendeten Cache-Eintrags in Verbindung mit der identifizierten Datenstromdarstellung; und den ermittelten zuletzt verwendeten Cache-Eintrag an eine Position des Cache verschieben, die in der Räumungsreihenfolge an letzter Stelle steht.
  6. Das Speichersystem nach Anspruch 5, wobei der Cache-Controller zu: Verfolgen einer Gesamtzahl von Fehlversuchen, die in dem Cache während der ersten Zeitperiode auftreten; und Erkennen des Fehlers im Cache in Reaktion auf die Feststellung, dass die Gesamtzahl der Fehlversuche einen Schwellenwert überschreitet.
  7. Das Speichersystem nach Anspruch 1, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: als Reaktion auf die Feststellung, dass eine bestimmte Datenstromdarstellung nicht mehr benötigt wird, um die synthetische Vollsicherung zu erzeugen, die bestimmte Datenstromdarstellung aus der logischen Gruppe entfernen.
  8. Das Speichersystem nach Anspruch 1, das Anweisungen enthält, die vom Prozessor ausgeführt werden können, um: als Reaktion auf die Feststellung, dass alle Datenstromdarstellungen nicht mehr benötigt werden, um die synthetische Vollsicherung zu erzeugen, die logische Gruppe löschen.
  9. Ein Verfahren, das Folgendes umfasst: Erkennen eines Fehlers in einem Cache, der eine Vielzahl von Cache-Einträgen umfasst, durch einen Cache-Controller einer Speichervorrichtung, wobei die Vielzahl der Cache-Einträge Daten aus einer Vielzahl von Datenstromdarstellungen speichert; als Reaktion auf die Erkennung des Fehlers bestimmt der Cache-Controller eine Datenstromdarstellung mit der größten Menge an Daten, die in einer bestimmten Zeitperiode aus dem Cache gelesen wurden; Bestimmen eines zuletzt verwendeten Cache-Eintrags, der mit der bestimmten Datenstromdarstellung verbunden ist, durch den Cache-Controller; und Beförderung des ermittelten, zuletzt verwendeten Cache-Eintrags, der mit der ermittelten Datenstromdarstellung verbunden ist, durch den Cache-Controller an eine Position des Cache, die in der Räumungsreihenfolge die letzte ist.
  10. Das Verfahren nach Anspruch 9, wobei das Erkennen des Fehlers im Cache umfasst: Zählen der Gesamtzahl der Fehlversuche, die während des ersten Zeitraums im Cache auftreten; festzustellen, ob die Gesamtzahl der Fehlschüsse einen Schwellenwert überschreitet; und Erkennen des Fehlers im Cache in Reaktion auf die Feststellung, dass die Gesamtzahl der Fehlversuche den Schwellenwert überschreitet.
  11. Das Verfahren nach Anspruch 10, wobei der Schwellenwert gleich der Gesamtzahl der im Cache enthaltenen Einträge ist.
  12. Das Verfahren nach Anspruch 9, wobei die Vielzahl der Datenstromdarstellungen einer Vollsicherung und einer Vielzahl von inkrementellen Sicherungen entspricht.
  13. Das Verfahren nach Anspruch 9, umfassend: für jede Datenstromdarstellung, Bestimmen eines Maßes einer Gesamtmenge von Daten, die mit der Datenstromdarstellung verbunden sind, die während der bestimmten Zeitperiode aus dem Cache gelesen wurde, wobei die bestimmte Zeitperiode eine verstrichene Zeitperiode seit einem letzten Fehler im Cache ist.
  14. Das Verfahren nach Anspruch 9, umfassend: Bestimmen, durch einen Speichercontroller des Speichergeräts, eine synthetische Vollsicherung auf der Grundlage von Daten zu erzeugen, die mit der Vielzahl von Datenstromdarstellungen verbunden sind; als Reaktion auf eine Bestimmung, die synthetische Vollsicherung zu erzeugen, erzeugt der Speicher-Controller eine logische Gruppe, die die Vielzahl von Datenstromdarstellungen enthält; Zuweisung einer Ressourcenpolitik und einer Ressourcenzuweisung an die logische Gruppe durch den Speicher-Controller; und Erzeugen der synthetischen Vollsicherung aus der Vielzahl von Datenstromdarstellungen durch den Speicher-Controller auf der Grundlage der Ressourcenrichtlinie und der der logischen Gruppe zugewiesenen Ressourcenzuweisung.
  15. Das Verfahren nach Anspruch 14, umfassend: Feststellung, ob eine bestimmte Datenstromdarstellung nicht mehr benötigt wird, um die synthetische Vollsicherung zu erzeugen; und als Reaktion auf eine Feststellung, dass eine bestimmte Datenstromdarstellung nicht mehr benötigt wird, um die synthetische Vollsicherung zu erzeugen, Entfernen der bestimmten Datenstromdarstellung aus der logischen Gruppe.
  16. Ein nicht-transitorisches maschinenlesbares Medium, das Befehle speichert, die bei Ausführung einen Prozessor dazu veranlassen: bestimmen, um eine synthetische Vollsicherung auf der Grundlage von Datenstromdarstellungen einer Vielzahl von Datenströmen zu erzeugen; als Reaktion auf eine Entscheidung, die synthetische Vollsicherung zu erzeugen, eine logische Gruppe zu erstellen, die die Datenstromdarstellungen enthält; Zuweisung einer Ressourcenpolitik und einer Ressourcenzuweisung an die logische Gruppe; und Erzeugen der synthetischen Vollsicherung aus den Datenstromdarstellungen auf der Grundlage der Ressourcenrichtlinie und der der logischen Gruppe zugewiesenen Ressourcenzuweisung.
  17. Das nicht-transitorische maschinenlesbare Medium nach Anspruch 16, das Anweisungen enthält, die bei Ausführung den Prozessor veranlassen,: während der Erstellung der synthetischen Vollsicherung die Nutzung der Ressourcenzuweisung innerhalb der logischen Gruppe gemäß der Ressourcenpolitik zu verwalten.
  18. Das nicht-transitorische maschinenlesbare Medium nach Anspruch 16, wobei die Ressourcenpolitik eine ist, die ausgewählt ist aus einer festen Zuweisungspolitik, einer begrenzten Skalierungspolitik, einer nichtlinearen Skalierungspolitik und einer clientgesteuerten Politik.
  19. Das nicht-transitorische maschinenlesbare Medium nach Anspruch 16, das Anweisungen enthält, die bei Ausführung den Prozessor veranlassen,: als Reaktion auf die Feststellung, dass eine bestimmte Datenstromdarstellung nicht mehr benötigt wird, um die synthetische Vollsicherung zu erzeugen, die bestimmte Datenstromdarstellung aus der logischen Gruppe entfernen.
  20. Das nicht-transitorische maschinenlesbare Medium nach Anspruch 16, das Anweisungen enthält, die bei Ausführung den Prozessor veranlassen,: als Reaktion auf die Feststellung, dass alle Datenstromdarstellungen nicht mehr benötigt werden, um die synthetische Vollsicherung zu erzeugen, Löschen der logischen Gruppe.
DE102022108673.9A 2021-09-27 2022-04-10 Ressourcenzuweisung für synthetische backups Pending DE102022108673A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/448,968 US11836053B2 (en) 2021-09-27 2021-09-27 Resource allocation for synthetic backups
US17/448,968 2021-09-27

Publications (1)

Publication Number Publication Date
DE102022108673A1 true DE102022108673A1 (de) 2023-03-30

Family

ID=85477353

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022108673.9A Pending DE102022108673A1 (de) 2021-09-27 2022-04-10 Ressourcenzuweisung für synthetische backups

Country Status (3)

Country Link
US (1) US11836053B2 (de)
CN (1) CN115878373A (de)
DE (1) DE102022108673A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11899540B2 (en) * 2021-12-27 2024-02-13 Dell Products, L.P. Regenerating a chain of backups
US11899538B2 (en) 2021-12-27 2024-02-13 Dell Products, L.P. Storage integrated differential block based backup
US11934275B2 (en) 2021-12-28 2024-03-19 Dell Products L.P. Backup copy validation as an embedded object
US11782799B2 (en) 2021-12-27 2023-10-10 Dell Products L.P. Using bitmaps to validate data
US11880283B2 (en) 2021-12-28 2024-01-23 Dell Products L.P. Backup copy validation as a workflow

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823428B2 (en) 2002-05-17 2004-11-23 International Business Preventing cache floods from sequential streams
WO2008149348A2 (en) 2007-06-04 2008-12-11 Yissum Research Development Company Of The Hebrew University Of Jerusalem Method architecture circuit & system for providing caching
US9372810B2 (en) 2012-04-27 2016-06-21 Hewlett Packard Enterprise Development Lp Collaborative caching
US9177028B2 (en) 2012-04-30 2015-11-03 International Business Machines Corporation Deduplicating storage with enhanced frequent-block detection
US9390116B1 (en) 2013-09-26 2016-07-12 Emc Corporation Insertion and eviction schemes for deduplicated cache system of a storage system
US9189402B1 (en) 2013-09-26 2015-11-17 Emc Corporation Method for packing and storing cached data in deduplicated cache system of a storage system
US8935446B1 (en) 2013-09-26 2015-01-13 Emc Corporation Indexing architecture for deduplicated cache system of a storage system
US10430102B2 (en) 2014-06-27 2019-10-01 Nec Corporation Storage device, program, and information processing method
US10289549B1 (en) 2016-06-28 2019-05-14 EMC IP Holding Company LLC Checkpointing cache status information
US10007620B2 (en) * 2016-09-30 2018-06-26 Intel Corporation System and method for cache replacement using conservative set dueling
US20190213088A1 (en) * 2018-01-08 2019-07-11 Softnas Operating Inc. System and method for generating a synthetic backup in a redundant storage solution
US10942867B2 (en) 2018-07-11 2021-03-09 EMC IP Holding Company LLC Client-side caching for deduplication data protection and storage systems
US10768971B2 (en) * 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data

Also Published As

Publication number Publication date
CN115878373A (zh) 2023-03-31
US20230098965A1 (en) 2023-03-30
US11836053B2 (en) 2023-12-05

Similar Documents

Publication Publication Date Title
DE102022108673A1 (de) Ressourcenzuweisung für synthetische backups
DE112007003678B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112011100819B4 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE60313783T2 (de) Bewegen von daten zwischen speichereinheiten
DE112008003826B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE102013204972B4 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE60128200T2 (de) Methode und System für skalierbare, hochperformante hierarchische Speicherverwaltung
DE112019006784T5 (de) Skalierbare Datenbereinigung für die deduplizierte Speicherung
EP3084638A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE102013215535A1 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE112007003645T5 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE112019006530T5 (de) Markieren von betroffenen ähnlichkeitsgruppen in freispeichersammeloperationen in duplizierten speichersystemen
DE102021109729A1 (de) Schätzung der nutzung der speichersystemkapazität
DE102021108455A1 (de) Erzeugen von Snapshots eines Key-Value-Index
DE102021101239B4 (de) Schwellenwert des deduplizierungssystems basierend auf der abnutzung eines speichergeräts
DE102021102442A1 (de) Katalog der mit schnappschüssen verbundenen dateien
DE112021006506T5 (de) Verwaltung von Sperren-Koordinator-Rebalance in verteilten Dateisystemen
DE102022108668A1 (de) Zeitschriftengruppen für die verwaltung von metadaten
DE102021126985A1 (de) Speicherung einer kleinen objektdarstellung in einem deduplizierungssystem
DE102021127170A1 (de) Journale für datenklonvorgänge
DE102021108479B4 (de) Schlüssel-Wert-Index mit Knotenpuffern

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TX, US

R012 Request for examination validly filed