DE112020004840B4 - Speicherbereinigung in datenspeichersystemen - Google Patents

Speicherbereinigung in datenspeichersystemen Download PDF

Info

Publication number
DE112020004840B4
DE112020004840B4 DE112020004840.3T DE112020004840T DE112020004840B4 DE 112020004840 B4 DE112020004840 B4 DE 112020004840B4 DE 112020004840 T DE112020004840 T DE 112020004840T DE 112020004840 B4 DE112020004840 B4 DE 112020004840B4
Authority
DE
Germany
Prior art keywords
memory
memory area
target
target memory
data
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.)
Active
Application number
DE112020004840.3T
Other languages
English (en)
Other versions
DE112020004840T5 (de
Inventor
Roderick Guy Charles Moore
Miles Mulholland
William John Passingham
Richard Alan Bordoli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020004840T5 publication Critical patent/DE112020004840T5/de
Application granted granted Critical
Publication of DE112020004840B4 publication Critical patent/DE112020004840B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/10Address translation
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Verfahren zur Speicherbereinigung in einem Speichersystem (200, 712), in dem ein virtueller Adressraum einem physischen Adressraum zugeordnet ist, wobei der virtuelle Adressraum in Speicherbereichen (Ext-1, Ext-2, Ext-3) adressiert wird und das Speichersystem (200, 712) einen oder mehrere Prozessoren (242), eine Mehrzahl von Speichereinheiten (230a, 230b, 230n) und einen Cache-Speicher (245) aufweist, wobei das Verfahren aufweist:Auswählen (S1) eines ersten Zielspeicherbereichs als einen aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten;Auswählen (S2) eines ersten Quellspeicherbereichs als einen aktuellen Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, wobei der aktuelle Quellspeicherbereich einen oder mehrere Abschnitte von gültigen Daten aufweist;Bestimmen (S5), ob ein Zielspeicherbereich, der als der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten ausgewählt wurde, voll ist;Bestimmen, ob ein Quellspeicherbereich, der als der aktuelle Quellspeicherbereich ausgewählt wurde, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte von gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert wurden;in Reaktion auf das Bestimmen (S5), dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten nicht voll ist, und das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte mit gültigen Daten aufweist, die nicht in einen Zielspeicherbereich kopiert wurden, Kopieren von einem der Abschnitte mit gültigen Daten, die nicht in einen Zielspeicherbereich kopiert wurden, über den Cache-Speicher (718) aus dem aktuellen Quellspeicherbereich in den aktuellen Zielspeicherbereich;in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Entleeren der gültigen Daten, die in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, über den Cache-Speicher (718) aus dem Cache-Speicher (718); undim Anschluss an das Entleeren der gültigen Daten, die aus dem Cache-Speicher (718) in den aktuellen Zielspeicherbereich verschoben wurden, nach Verfügbarkeit Freigeben (F4) für Schreibvorgänge in den physischen Adressraum, der dem virtuellen Adressraum von einem oder mehreren Quellspeicherbereichen zugeordnet ist, die alle gültigen darin gespeicherten Daten über den Cache-Speicher (718) in den aktuellen Zielspeicherbereich kopiert haben.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft Speicherbereinigung in Datenspeichersystemen.
  • HINTERGRUND
  • Eine beliebte Strategie zum Ausführen von Schreibvorgängen in einem Datenspeichersystem besteht darin, immer in frische Datenbereiche in der Datendomäne zu schreiben. Diese Strategie hat den Vorteil, dass es möglich ist, ein RAID- (Redundant Array of Independent Disk) Array zu aktualisieren, ohne dazu Lesevorgänge von der Festplatte vornehmen zu müssen.
  • Ein typischer ,Schreibvorgang' führt Folgendes aus: eine Eingabe-Ausgabe (EA) wird für ein bestimmtes Datenvolumen mit einer Adresse, einer Größe und einigen Daten empfangen. Die Speicherzuordnungseinrichtung weist dieses Datenvolumen einem Speicherplatz auf der physischen Domäne zu. Der EA-Pfad schreibt dann in diesem Speicherplatz auf der physischen Domäne. Wenn der Schreibvorgang abgeschlossen ist, werden Forward- und Reverse-Lookup-Strukturen aktualisiert, und die EA ist abgeschlossen. Ein Journal wird als Bestandteil der Forward-Lookup-Aktualisierung ebenfalls aktualisiert.
  • Ein typischer ,Lesevorgang' prüft die Forward-Lookup-Struktur, um zu ermitteln, wo sich die Daten auf der Datendomäne befinden. Die Datendomäne wird dann gelesen, und die dort befindlichen Daten werden an den Benutzer zurückgegeben.
  • In diesem Kontext gibt es bereits veröffentlichte Dokumente. Beispielsweise beschreibt das Dokument US 2013 / 0 311 741 A1 eine Speicherverwaltung mit einem Identifizieren eines Bereiches des wiederzugewinnenden virtuellen Speichers. Dabei weist der Bereich ein Objekt auf, das sich derzeit an einem ursprünglichen virtuellen Speicherplatz befindet. Dabei wird der Bereich von mindestens einem Teil einer Speicher-Ressource unterstützt. Außerdem beschreibt das Dokument US 2015 / 0 212 938 A1 eine Verwaltung von Daten in einem Datenspeichersystem mit mindestens einem Datenspeichergerät und einem Host. Ein anfänglicher Speicherort für Daten, die in dem mindestens einen Datenspeichergerät gespeichert werden sollen, wird auf der Grundlage mindestens eines vom Host definierten Attributs bestimmt. Eine Garbage-Collection-Operation basiert auf mindestens einem vom Host definierten Attribut.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Verschiedene Ausführungsformen sind auf ein Verfahren zur Speicherbereinigung in einem Speichersystem ausgerichtet, in dem ein virtueller Adressraum einem physischen Adressraum zugeordnet ist, wobei der virtuelle Adressraum in Speicherbereichen (Extents) adressiert wird und das Speichersystem einen oder mehrere Prozessoren, eine Mehrzahl von Speichereinheiten und einen Cache-Speicher hat. Das Verfahren kann ein Auswählen eines ersten Zielspeicherbereichs als einen aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten und ein Auswählen eines ersten Quellspeicherbereichs als einen aktuellen Quellspeicherbereich umfassen, der einer Speicherbereinigung unterzogen werden soll, wobei der aktuelle Quellspeicherbereich einen oder mehrere Abschnitte von gültigen Daten enthält. Das Verfahren kann auch ein Bestimmen umfassen, ob ein Zielspeicherbereich, der als der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten ausgewählt wurde, voll ist. Das Verfahren kann ein Bestimmen, ob ein Quellspeicherbereich, der als der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, ausgewählt wurde, einen oder mehrere Abschnitte von gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert wurden. Außerdem, in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten nicht voll ist, und das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte mit gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert sind, kann das Verfahren ein Kopieren von einem der Abschnitte mit gültigen Daten, die nicht in einen Zielspeicherbereich kopiert wurden, aus dem aktuellen Quellspeicherbereich über den Cache-Speicher in den aktuellen Zielspeicherbereich umfassen. Ferner kann das Verfahren in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, die gültigen Daten, die über den Cache-Speicher in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, aus dem Cache-Speicher entleeren. Im Anschluss an das Entleeren der gültigen Daten, die aus dem Cache-Speicher in den aktuellen Zielspeicherbereich verschoben wurden, kann das Verfahren zusätzlich nach Verfügbarkeit ein Freigeben von physischem Adressraum für Schreibvorgänge umfassen, der dem virtuellen Adressraum von einem oder mehreren Quellspeicherbereichen zugeordnet ist, die alle gültigen darin gespeicherten Daten über den Cache-Speicher in den aktuellen Zielspeicherbereich kopiert haben.
  • Verschiedene Ausführungsformen eines Verfahrens zur Speicherbereinigung können umfassen: in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Auswählen eines zweiten Zielspeicherbereichs als den aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten.
  • Verschiedene Ausführungsformen eines Verfahrens zur Speicherbereinigung können umfassen: in Reaktion auf das Bestimmen, dass der zweite Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Entleeren der gültigen Daten, die über den Cache-Speicher in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, aus dem Cache-Speicher, wobei das Entleeren von gültigen Daten, die über den Cache-Speicher in einen Zielspeicherbereich des aktuellen Ziels kopiert wurden, aus dem Cache-Speicher in einer selben Reihenfolge entleert werden wie eine Reihenfolge, in der bestimmt wurde, dass die Zielspeicherbereiche voll sind.
  • Verschiedene Ausführungsformen eines Verfahrens zur Speicherbereinigung können umfassen: in Reaktion auf das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, keine Abschnitte von gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert wurden, Auswählen eines zweiten Quellspeicherbereichs als den aktuellen Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll.
  • Verschiedene Ausführungsformen eines Verfahrens zur Speicherbereinigung können umfassen: Steuern der Freigabe von physischem Adressraum nach dem Entleeren des Caches von Zielspeicherbereichen mit der Hilfe eines Zuordnens einer Sequenznummer zu jedem Zielspeicherbereich, wobei jede Sequenznummer ein Nachschlagen in den Quellspeicherbereichen ermöglicht, deren Speicherbereinigung durch Kopieren von Daten in diesen Zielspeicherbereich abgeschlossen wurde, wobei die Sequenznummer des ältesten Zielspeicherbereichs, für den kein Entleeren ausgeführt worden ist, als eine Untergrenzen-Sequenznummer gespeichert wird, und wobei die Sequenznummer des aktuellen Zielspeicherbereichs, der zur Speicherbereinigung von Quellspeicherbereichen zugeordnet ist, als eine Obergrenzen-Sequenznummer gespeichert wird, wobei die Untergrenzen-Sequenznummer nach Abschluss des Entleerens des ältesten Zielspeicherbereichs aus dem Cache-Speicher erhöht wird, und die Obergrenzen-Sequenznummer beim Auswählen eines weiteren Zielspeicherbereichs zur Speicherbereinigung erhöht wird.
  • Verschiedene Ausführungsformen eines Verfahrens zur Speicherbereinigung können umfassen: wobei in Reaktion auf ein Bestimmen, dass der verfügbare virtuelle Adressraum kleiner als ein Schwellenwert ist: Aussetzen des Kopierens von gültigen Daten von einem Quellspeicherbereich in einen Zielspeicherbereich; und nach Verfügbarkeit ein Freigeben für Schreibvorgänge in den physischen Adressraum, der dem virtuellen Adressraum von mindestens einem Zielspeicherbereich zugeordnet ist, der eine Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert hat.
  • Verschiedene Ausführungsformen eines Verfahrens zur Speicherbereinigung können umfassen: Verwalten eines Journals, das Wiederherstellungsinformationen für Zielspeicherbereiche mit einer Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert speichert, wobei die Wiederherstellungsinformationen Zuordnungen zwischen Quellspeicherbereichen, deren gültige Daten einer Speicherbereinigung unterzogen wurden, und entsprechenden Zielspeicherbereichen umfassen.
  • Verschiedene Ausführungsformen eines Verfahrens zur Speicherbereinigung können umfassen: in Reaktion auf ein Bestimmen eines Verlusts von Cache-Inhalten während der Speicherbereinigung, Verwenden der Wiederherstellungsinformationen zum Wiederherstellen einer Forward-Lookup-Metadatenstruktur, die den virtuellen Adressraum mit dem physischen Adressraum für die Quellspeicherbereiche verbindet, die in den Wiederherstellungsinformationen identifiziert wurden.
  • Verschiedene Ausführungsformen sind auf ein Computerprogrammprodukt zur Speicherbereinigung in einem Speichersystem ausgerichtet, in dem ein virtueller Adressraum einem physischen Adressraum zugeordnet ist, wobei der virtuelle Adressraum in Speicherbereichen adressiert wird und das Speichersystem einen oder mehrere Prozessoren, eine Mehrzahl von Speichereinheiten und einen Cache-Speicher hat.
  • Verschiedene Ausführungsformen sind auf ein Speichersystem mit einem virtuellen Adressraum ausgerichtet, der einem physischen Adressraum zugeordnet ist, wobei der virtuelle Adressraum in Speicherbereichen adressiert wird, wobei das Speichersystem einen oder mehrere Prozessoren, eine Mehrzahl von Speichereinheiten und einen Cache-Speicher hat, wobei das Speichersystem aufweist: eine Speicherzuordnungseinrichtung und eine Speicherbereinigungseinrichtung.
  • Verschiedene Ausführungsformen können das Datenspeichersystem vor Datenverlust in Bezug auf eine Speicherbereinigung schützen, die zum Zeitpunkt eines Cache-Ausfalls durchgeführt wurde. Verschiedene Ausführungsformen stellen einen Speicherbereinigungsalgorithmus bereit, der mit Cache-Entleeroperationen in Bezug auf speicherbereinigte Daten koordiniert ist. Die Speicherbereinigung wird so ausgeführt, dass alte Daten (d.h. Live-Daten, die in aus dem Cache entleerten Blöcken gespeichert sind) erst verworfen werden, wenn die Speicherzuordnungseinrichtung sicher ist, dass alle Live-Daten, die aus dem speicherbereinigten Block verschoben werden, über den Cache erfolgreich in ihren neuen physischen Arbeitsspeicher-Speicherplatz entleert wurden und daher sicher in dem Zielblock für die speicherbereinigten Live-Daten angekommen sind und dort gespeichert wurden.
  • Es wird angemerkt, dass, obwohl die verschiedenen Ausführungsformen dafür ausgelegt wurden, erfolgreich in Speichersystemen zu arbeiten, die eine Komprimierung verwenden, die Ausführungsformen auch in Speichersystemen verwendet werden können, die keine Komprimierung verwenden. Umsetzungen der Ausführungsformen können für jede Datenreduktion verwendet werden, die neue Daten in einen neuen Speicherplatz schreibt und Speicherbereinigung nutzt. Zum Beispiel könnten nicht komprimierte Daten wie vorgeschlagen geschrieben werden, obwohl ein Überschreiben an derselben Stelle möglich gewesen wäre.
  • Die Freigabe von physischem Adressraum nach dem Entleeren des Caches von Zielspeicherbereichen kann in bestimmten Ausführungsformen mit der Hilfe eines Zuordnens einer Sequenznummer zu jedem Zielspeicherbereich gesteuert werden, wobei jede Sequenznummer ein Nachschlagen in den Quellspeicherbereichen ermöglicht, deren Speicherbereinigung durch Verschieben von Daten in diesen Zielspeicherbereich abgeschlossen wurde, wobei die Sequenznummer des ältesten Zielspeicherbereichs, für den ein Entleeren nicht abgeschlossen ist, als eine Untergrenzen-Sequenznummer gespeichert wird, und wobei die Sequenznummer des Zielspeicherbereichs, der aktuell zur Speicherbereinigung von Quellspeicherbereichen zugeordnet ist, als eine Obergrenzen-Sequenznummer gespeichert wird, wobei die Untergrenzen-Sequenznummer nach Abschluss des Entleerens des ältesten Zielspeicherbereichs aus dem Cache-Speicher erhöht wird, und die Obergrenzen-Sequenznummer beim Auswählen eines weiteren Zielspeicherbereichs zur Speicherbereinigung erhöht wird. Wenn bestimmt wird, dass der verfügbare virtuelle Adressraum knapp geworden ist, kann dies verwaltet werden durch: Aussetzen des Verschiebens von gültigen Daten aus einem Quell- in einen Zielspeicherbereich; und nach Verfügbarkeit Freigeben von physischem Adressraum für Schreibvorgänge, der dem virtuellen Adressraum der Zielspeicherbereiche mit Sequenznummern zugeordnet ist, die zwischen dem Untergrenzen- und dem Obergrenzen-Wert liegen.
  • Für eine Wiederherstellung, z.B. aus einem spontanen Verlust von Cache-Inhalten, ist es vorteilhaft, ein Journal zu verwalten, das Wiederherstellungsinformationen für jede Sequenznummer zwischen der Untergrenzen-Sequenznummer und der Obergrenzen-Sequenznummer speichert, wobei die Wiederherstellungsinformationen für jede Sequenznummer eine Zuordnung zu den Quellspeicherbereichen umfassen, deren Speicherbereinigung durch Verschieben von Daten in den Zielspeicherbereich abgeschlossen wurde, der dieser Sequenznummer zugehörig ist. In dem Fall eines Verlusts von Cache-Inhalten während der Speicherbereinigung können die Wiederherstellungsinformationen verwendet werden, um eine Forward-Lookup-Metadatenstruktur wiederherzustellen, die den virtuellen Adressraum mit dem physischen Adressraum für die Quellspeicherbereiche verbindet, die in den Wiederherstellungsinformationen identifiziert wurden.
  • Das Verfahren und das Speichersystem sind besonders geeignet für ein Verwenden in Verbindung mit einem Betriebssystem, in dem jeder Schreibvorgang in einem frischen Speicherbereich ausgeführt wird, sie sind aber nicht darauf beschränkt. Das Verfahren und das Speichersystem sind besonders für ein Verwenden in Verbindung mit einem Betriebssystem geeignet, in dem Daten in komprimierter Form gespeichert werden, sie sind aber nicht darauf beschränkt.
  • Zusammengefasst stellen verschiedene Ausführungsformen ein Speicherbereinigungsverfahren für virtualisierte Speichersysteme bereit, deren virtueller Adressraum in Blöcken adressiert wird, die als Speicherbereiche bezeichnet werden. Alte Speicherbereiche werden durch Übertragen ihrer immer noch gültigen Daten in frische Speicherbereiche speicherbereinigt, auf die als Zielspeicherbereiche verwiesen wird. Die speicherbereinigten Speicherbereiche können anschließend zum Wiederverwenden mit neuen Schreibvorgängen freigegeben werden. Zum Berücksichtigen der Möglichkeit eines Cache-Verlusts, während die speicherbereinigten Daten immer noch in den physischen Arbeitsspeicher geschrieben werden, werden die speicherbereinigten Speicherbereiche anfänglich von einer Freigabe nach ihrer Speicherbereinigung zurückgehalten. Wenn ein Zielspeicherbereich, der speicherbereinigte Daten aufnimmt, voll ist, wird ein Entleeren des Cache dieses Zielspeicherbereichs initiiert. Der Arbeitsspeicherraum der speicherbereinigten Speicherbereiche, die diesem Zielspeicherbereich zugehörig sind, wird anschließend bei Abschluss des Entleerens des Cache freigegeben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird im Folgenden des Weiteren nur zu Beispielzwecken unter Bezugnahme auf beispielhafte Ausführungsformen beschrieben, die in den Figuren veranschaulicht sind.
    • 1 zeigt eine Computersystemumgebung mit einer Massenspeichereinheit.
    • 2 ist ein Blockschaubild, das die Hardware-Struktur eines Datenspeichersystems zeigt.
    • 3A und 3B sind Ablaufpläne, die Schritte in einem Verfahren gemäß der Offenbarung zeigen.
    • 4A bis 4D sind schematische Blockschaubilder, die einen beispielhaften Verlauf der Speicherbereinigung gemäß einem Verfahren gemäß der Offenbarung zeigen.
    • 5 stellt eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 6 stellt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 7 ist eine schematische Darstellung eines Servers, der mit einem Speichersystem gemäß einer Ausführungsform der vorliegenden Offenbarung verbunden ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden ausführlichen Beschreibung werden zu Erläuterungszwecken und keinesfalls zur Einschränkung spezifische Details dargelegt, um ein gründlicheres Verständnis der vorliegenden Offenbarung bereitzustellen. Dem Fachmann wird klar sein, dass die vorliegende Offenbarung in anderen Ausführungsformen ausgeübt werden kann, die von diesen spezifischen Details abweichen.
  • Wie erwähnt, besteht eine beliebte Strategie zum Ausführen von Schreibvorgängen in einem Datenspeichersystem darin, immer in frische Datenbereiche in der Datendomäne zu schreiben. Diese Strategie hat den Vorteil, dass es möglich ist, ein RAID- (Redundant Array of Independent Disk) Array zu aktualisieren, ohne dazu Lesevorgänge von der Festplatte vornehmen zu müssen. Eine Konsequenz dessen, dass ein Schreibvorgang immer in einen frischen Datenbereich ausgeführt wird, ist jedoch, dass eine Menge Arbeitsspeicher-Speicherraum zugeordnet wird, der anschließend durch eine Speicherbereinigung zurückgefordert werden muss. Wenn eine Datenkomprimierung verwendet wird, was in einigen Betriebssystemen eine Option darstellt, wie zum Beispiel IBM z/OS, schwankt die Größe von Schreibvorgängen allerdings unvermeidlich, da die Größe von der Komprimierbarkeit der Daten abhängt. Zum Beispiel kann ein Schreibvorgang einen Speicherraum von 8 kB in Anspruch nehmen, ein anderer hingegen nur 1 kB. Es ist daher nicht möglich, Daten an dieser Stelle immer wieder zu überschreiben, da nicht garantiert werden kann, dass die überschriebenen Daten in den alten Arbeitsspeicher-Speicherplatz passen, wenn eine Komprimierung verwendet wird, daher müssen Schreibvorgänge immer in frischen Datenbereichen ausgeführt werden.
  • Die Speicherbereinigung fordert alte Datenbereiche zurück, die durch veraltete Daten infolge von Überschreibungen vorherrschend wurden und somit nur spärliche Mengen von Live-Daten enthalten. Die Speicherbereinigung fährt mit einem Retten der restlichen Live-Daten fort und schreibt sie in einem zusammenhängenden Block in einen frischen Datenbereich. Wenn Daten überschrieben werden, werden sie als ungültig gemacht bezeichnet. Die Speicherbereinigung übernimmt einen Bereich mit ungültig gemachten Daten in der Datendomäne, verschiebt die Live-Daten aus dieser heraus und schreibt sie in neue Speicherplätze auf der Datendomäne; dadurch werden die Forward-Lookup-Metadaten in dem Prozess aktualisiert. Forward-Lookup-Metadaten können als ein Baum umgesetzt werden, am häufigsten als ein B-Baum. Die Forward-B-Baum-Struktur ordnet virtuelle Arbeitsspeicheradressen physischen Arbeitsspeicheradressen in einem virtuellen Speichersystem zu. Reverse-Lookup-Metadaten beschreiben, welche Volumen einen bestimmten Bereich der physischen Domäne referenzieren und damit dokumentieren, welche Datenunterbereiche auf der physischen Domäne zugeordnet sind. Die Reverse-Lookup-Struktur ist somit für den Speicherbereinigungsalgorithmus erforderlich.
  • Ein Journal wird verwaltet, das zum Wiederherstellen der Forward-Lookup-Metadatenstrukturen für den Fall eines Cache-Ausfalls verwendet werden kann. Cache-Ausfälle lösen im Allgemeinen den Verlust vieler Gigabytes von Live-Daten aus. Die Journalerstellung stellt sicher, dass jede Aktualisierung der Forward-Lookup-Metadaten in einem sequenziellen Protokoll dokumentiert wird. Dieses Protokoll kann wiederholt werden, um die Forward-Lookup-Metadaten wiederherzustellen. Ein Integrieren eines periodischen Kopierens (das manchmal auch als Erstellen von Snapshots bezeichnet wird) der Forward-Lookup-Metadaten in dieses Schema beseitigt die Notwendigkeit einer immer weiter zunehmenden Journal-Größe, da das Journal dann nur Forward-Lookup-Aktualisierungen seit dem letzten Snapshot verfolgen muss. In dem Fall, dass die Forward-Lookup-Metadaten eine Baumstruktur haben, wie zum Beispiel ein B-Baum, wird auf das periodische Kopieren manchmal als Baum-Snapshotting verwiesen. Es wird angemerkt, dass die Daten selbst, auf die das Journal verweist, aufgrund der untragbar hohen Schreib-Bandbreitenkosten in der Regel nicht protokolliert werden. Der Ansatz zur Journalerstellung der Forward-Lookup-Metadaten (z.B. B-Baum-Aktualisierungen) erfordert eine weitaus geringere Bandbreite. Journalerstellung und die Aktualisierung der Lookup-Strukturen können durch verschiedene Module oder Komponenten in verschiedenen Ausführungsformen ausgeführt werden. In verschiedenen Ausführungsformen können Journalerstellung und die Aktualisierung der Lookup-Strukturen durch die Speicherzuordnungseinrichtung oder durch die Speicherbereinigungseinrichtung ausgeführt werden.
  • Ein typischer ,Schreibvorgang' führt Folgendes aus: eine Eingabe-Ausgabe (EA) wird für ein bestimmtes Datenvolumen mit einer Adresse, einer Größe und einigen Daten empfangen. Die Speicherzuordnungseinrichtung weist dieses Datenvolumen einem Speicherplatz auf der physischen Domäne zu. Der EA-Pfad schreibt dann in diesen Speicherplatz auf der physischen Domäne. Wenn der Schreibvorgang abgeschlossen ist, werden die Forward- und Reverse-Lookup-Strukturen aktualisiert, und die EA ist abgeschlossen. Das Journal wird als Bestandteil der Forward-Lookup-Aktualisierung ebenfalls aktualisiert.
  • Ein typischer ,Lesevorgang' prüft die Forward-Lookup-Struktur, um zu ermitteln, wo sich die Daten auf der Datendomäne befinden. Die Datendomäne wird dann gelesen, und die dort befindlichen Daten werden an den Benutzer zurückgegeben.
  • Im Fall eines Systemausfalls ist es möglich, dass Cache-Inhalte verloren gehen: wenn der Cache unter der Komponente vorhanden ist, die Datenreduktions-Technologien umsetzt, können in Verarbeitung befindliche (in-flight) Daten verloren gehen. (In Verarbeitung befindliche Daten sind alle Daten, die noch vollständig auf Datenträger geschrieben werden müssen und daher möglicherweise verloren sind, wenn der Cache verworfen wird.) Dies ist ein in Speichersystemen allgemeines Ausfallmuster und kann in gewissem Maß akzeptabel sein - oder zumindest erwartet werden. Wenn ein derartiger Cache verwendet wird, ist dies der Leistungskompromiss, den man eingeht.
  • In Speichersystemen mit festen physischen Domänenspeicherplätzen für Aktualisierungen oder umfangreiche Volumen kann der Verlust von Cache toleriert werden, da das Resultat nur darin besteht, dass alte Daten zurückgegeben werden in dem Fall, dass Aktualisierungen zum Zeitpunkt des Ausfalls in dem Cache noch anhängig waren. Bei Datenreduktionsvolumen ist es jedoch eventuell nicht möglich, während Überschreibungen zusammenhängend in denselben Speicherort zu schreiben, was bedeutet, dass Daten, die zum Zeitpunkt des Ausfalls speicherbereinigt wurden, auch verloren werden können, sodass dieser Teil der alten Daten nicht zurückgegeben wird. In Dateisystemen ist ein Zurückgeben von veralteten Daten oft einem Zurückgeben von Datenträgerfehlern (d.h. Datenverlust) vorzuziehen.
  • 1 veranschaulicht ein beispielhaftes Computersystem 10. Das Computersystem 10 umfasst eine Zentraleinheit (CPU) 12, die mit einer oder mehreren Massenspeichereinheiten 14 und einer Arbeitsspeichereinheit 16 verbunden ist. Massenspeichereinheiten können Festplattenlaufwerk- (HDD) Einheiten umfassen, die in einem Redundant Array of Independent Disks (RAID) konfiguriert werden können. Speicherbereinigungs-Operationen können an einer oder mehreren Einheiten 14 ausgeführt werden, die sich in dem System 10 oder an anderer Stelle befinden. Die Arbeitsspeichereinheit 16 kann einen derartigen Arbeitsspeicher als elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM) oder einen Host von zugehörigen Einheiten usw. umfassen. Die Arbeitsspeichereinheit 16 und die Massenspeichereinheit 14 sind mit der CPU 12 über ein signaltragendes Medium verbunden. Außerdem ist die CPU über einen Datenübertragungsanschluss 18 mit einem Datenübertragungsnetzwerk 20 mit einer angeschlossenen Mehrzahl von zusätzlichen Computersystemen 22 und 24 verbunden. Das Computersystem 10 kann eine oder mehrere Prozessoreinheiten (z.B. CPU 12) und zusätzliche Arbeitsspeichereinheiten 16 für jede einzelne Komponente des Computersystems 10 umfassen, um eine Speicherbereinigung und andere Operationen wie hierin beschrieben auszuführen und vorzunehmen.
  • 2 ist ein beispielhaftes Blockschaubild 200, das eine Hardware-Struktur eines Datenspeichersystems in einem Computersystem zum Umsetzen von Ausführungsformen der Erfindung zeigt. Host-Computer 210, 220, 225 arbeiten jeweils als Zentraleinheiten zum Ausführen einer Datenverarbeitung als Teil eines Datenspeichersystems 200. Die Hosts (physische oder virtuelle Einheiten) 210, 220 und 225 können eine oder mehrere neue physische Einheiten oder logische Einheiten zum Erfüllen der Zwecke der vorliegenden Erfindung in dem Datenspeichersystem 200 sein. In einer Ausführungsform kann ein Datenspeichersystem 200 als System Storage™ V9000™ von IBM® umgesetzt werden. Eine Netzwerkverbindung 260 kann eine Fibre-Channel-Struktur, eine Fibre-Channel-Punkt-zu-Punkt-Verbindung, eine Fibre-Channel-over-Ethernet- oder Punkt-zu-Punkt-Verbindung, eine FICON- oder ESCON-E/A-Schnittstelle, jeder andere E/A-Schnittstellentyp, ein drahtloses Netzwerk, ein drahtgebundenes Netzwerk, ein LAN, ein WAN, heterogen, homogen, öffentlich (d.h. das Internet), privat oder jede Kombination davon sein. Die Hosts 210, 220 und 225 können lokal oder auf einen oder mehrere Speicherplätze verteilt sein und mit jedem Strukturtyp (oder Strukturkanal) oder einem Netzwerkadapter 260 mit dem Speicher-Controller 240 ausgestattet sein, wie zum Beispiel Fibre-Channel, FICON, ESCON, Ethernet, Lichtwellenleiter, drahtlose oder koaxiale Adapter. Das Datenspeichersystem 200 ist dementsprechend mit einer geeigneten Struktur oder dem Netzwerkadapter 260 zum Übertragen von Daten ausgestattet. Das Datenspeichersystem 200 wird in 2 dargestellt und weist den Speicher-Controller 240 und einen Speicher 230 auf.
  • Der Speicher-Controller 240 wird in 2 als eine einzelne Verarbeitungseinheit gezeigt, die einen Mikroprozessor 242, einen Systemspeicher 243 und einen nicht flüchtigen Speicher („NVS“) 216 umfasst. Es wird angemerkt, dass der Speicher-Controller 240 jedoch mehrere Verarbeitungseinheiten umfassen kann, jede mit ihrem eigenen Prozessorkomplex und Systemarbeitsspeicher und durch ein dediziertes Netzwerk in dem Datenspeichersystem 200 miteinander verbunden. Der Speicher 230 kann aus einer oder mehreren Speichereinheiten bestehen, wie zum Beispiel Speicher-Arrays, die über ein Speichernetzwerk mit dem Speicher-Controller 240 verbunden sind.
  • In einigen Ausführungsformen können die in dem Speicher 230 enthaltenen Einheiten in einer Schleifenarchitektur verbunden sein. Der Speicher-Controller 240 verwaltet den Speicher 230 und ermöglicht die Verarbeitung von Schreib- und Leseanforderungen, die für den Speicher 230 bestimmt sind. Der Systemarbeitsspeicher 243 des Speicher-Controllers 240 speichert die Betriebssoftware 250, Programmanweisungen und Daten, auf die der Prozessor 242 zum Ausführen von Funktionen und Verfahrensschritten zugreifen kann, die einem Verwalten des Speichers 230 einschließlich Speicherbereinigung zugehörig sind. Wie in 2 gezeigt, umfasst der Systemarbeitsspeicher 243 einen internen Arbeitsspeicher-Cache 245 (oder steht alternativ mit einem externen Cache in Datenübertragung), der ein Cache für den Speicher 230 ist. Der Cache-Speicher wird zum Puffern von Schreibdaten und Lesedaten von jeweiligen Schreib- und Leseanforderungen verwendet. In einer Ausführungsform wird der Cache 245 in einer zum Systemarbeitsspeicher 243 externen Einheit angeordnet, bleibt für den Mikroprozessor 242 jedoch zugänglich und kann zum Bereitstellen von zusätzlicher Sicherheit vor Datenverlust dienen.
  • In einigen Ausführungsformen wird der Cache 245 mit einem flüchtigen Arbeitsspeicher und einem nicht flüchtigen Arbeitsspeicher umgesetzt und ist mit dem Mikroprozessor 242 über einen lokalen Bus (in 2 nicht gezeigt) für eine verbesserte Leistung des Datenspeichersystems 200 verbunden. Der in dem Datenspeicher-Controller 240 enthaltene NVS 216 ist durch den Mikroprozessor 242 zugänglich und dient zum Bereitstellen von zusätzlicher Unterstützung von Operationen, einschließlich Speicherbereinigung. Der NVS 216 kann als ein permanenter Cache bezeichnet werden, da er mit nicht flüchtigem Arbeitsspeicher umgesetzt werden kann, der zum Beibehalten seiner Daten keine Energie in Anspruch nehmen muss. Der NVS 216 kann mit dem Cache 245 integriert sein. In einigen Ausführungsformen versorgt eine Reservestromquelle (in 2 nicht gezeigt), wie beispielsweise eine Batterie, den NVS 216 mit ausreichender Energie, um die in ihm gespeicherten Daten im Fall eines Energieverlusts des Datenspeichersystems 200 beizubehalten. In bestimmten Ausführungsformen ist die Kapazität des NVS 216 kleiner oder gleich der Gesamtkapazität des Cache 245.
  • Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten bestehen, wie zum Beispiel Speicher-Arrays. Ein Speicher-Array ist eine logische Gruppierung von einzelnen Speichereinheiten, wie zum Beispiel eine Festplatte. In bestimmten Ausführungsformen besteht der Speicher 230 aus einem JBOD- (Just a Bunch of Disks) Array oder einem RAID. Eine Sammlung von physischen Speicher-Arrays kann ferner kombiniert werden, um eine Reihe zu bilden, die den physischen Speicher von der logischen Konfiguration trennt. Der Speicherraum in einer Reihe kann in logischen Volumen zugeordnet werden, die den in einer Schreib-/Leseanforderung angegebenen Speicherplatz definieren.
  • Das Speichersystem, wie in 2 gezeigt, kann ein logisches Volumen oder einfach „Volumen“ umfassen und kann verschiedene Arten von Zuordnungen haben. Die Speicher 230a, 230b und 230n werden als Reihen in dem Datenspeichersystem 200 gezeigt und werden hierin als Reihe 230a, 230b und 230n bezeichnet. Reihen können für das Datenspeichersystem 200 lokal sein oder sich an einen physisch entfernt angeordneten Platz befinden. Mit anderen Worten, ein lokaler Speicher-Controller kann mit einem entfernt angeordneten Speicher-Controller verbunden sein und Speicher an dem entfernt angeordneten Platz verwalten. Die Reihe 230a wird mit zwei ganzen Volumen 234 und 236 sowie einem Teilvolumen 232a konfiguriert gezeigt. Die Reihe 230b wird mit einem weiteren Teilvolumen 232b gezeigt. Somit wird das Volumen 232 über die Reihen 230a und 230b zugeordnet. Die Reihe 230n wird als einem Volumen 238 vollständig zugeordnet gezeigt - d.h. die Reihe 230n verweist auf den gesamten physischen Speicher für das Volumen 238. Aus den vorgenannten Beispielen sollte klar sein, dass eine Reihe so konfiguriert werden kann, dass sie ein oder mehrere Teil- und/oder Gesamtvolumen umfasst.
  • Der Speicher-Controller 240 umfasst ein Speicherbereinigungsmodul 255 zum Unterstützen der Speicherbereinigung in einem Journal-Dateisystem. Das Speicherbereinigungsmodul 255 arbeitet in Verbindung mit den Komponenten des Speicher-Controllers 240, den Hosts 210, 220, 225 und den Speichereinheiten 230. Das Speicherbereinigungsmodul 255 kann sich in dem Cache 245 oder anderen Komponenten des Speicher-Controllers 240 befinden.
  • Der Speicher-Controller 240 umfasst einen Steuerschalter 241 zum Steuern des Fibre-Channel-Protokolls zu den Host-Computern 210, 220, 225, einen Mikroprozessor 242 zum Steuern aller Speicher-Controller 240, einen nicht flüchtigen Steuerarbeitsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs des Speicher-Controllers 240, den Cache 245 zum vorübergehenden Speichern (Puffern) von Daten, und Puffer 244 zum Unterstützen des Caches 245 beim Lesen und Schreiben von Daten, einen Steuerschalter 241 zum Steuern eines Protokolls zum Steuern eines Datentransfers zu oder von den Speichereinheiten 230, und das Speicherbereinigungsmodul 255, in dem Informationen eingerichtet werden können. Mehrere Puffer 244 können zum Unterstützen der Speicherbereinigung in dem Journal-Dateisystem umgesetzt werden.
  • Die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und der Speicher-Controller 240 sind über einen Netzwerkadapter (bei dem es sich um einen Fibre-Channel handeln könnte) 260 als eine Schnittstelle verbunden, d.h. über einen als „Struktur“ bezeichneten Schalter. Der Mikroprozessor 242 kann den Arbeitsspeicher 243 steuern, um Befehlsinformationen von der Host-Einheit (physisch oder virtuell) 210 und Informationen zum Identifizieren der Host-Einheit (physisch oder virtuell) 210 zu speichern. Der Steuerschalter 241, die Puffer 244, der Cache 245, die Betriebssoftware 250, der Mikroprozessor 242, der Arbeitsspeicher 243, der NVS 216 und das Speicherbereinigungsmodul stehen miteinander in Datenübertragung. Einige oder alle der Komponenten, wie beispielsweise die Betriebssoftware 250, kann in dem Arbeitsspeicher 243 enthalten sein, um die Speicherbereinigung in dem Journal-Dateisystem auszuführen. Alle Komponenten in den gezeigten Einheiten können miteinander verbunden sein und miteinander in Datenübertragung stehen.
  • 7 zeigt einen Server 710, der mit einem Speichersystem 712 verbunden ist, in dem die Grundgedanken der vorliegenden Erfindung in verschiedenen Ausführungsformen umgesetzt werden können. Der Server 710 führt Lese- und Schreibaktionen in Bezug auf das Speichersystem 712 über eine Schnittstelle aus, zum Beispiel eine Schnittstelle, die einen Standard wie SCSI (das Small Computer System Interface) verwendet. Das Speichersystem 712 hat eine Anzahl von verbundenen physischen Komponenten, die Verarbeitungs- und Speicherfunktionen bereitstellen. Die primäre Langzeit-Speicherfunktion wird durch einen Satz von physischem Speicher 714 bereitgestellt (der bevorzugt aus einem Satz von Platten besteht), der in logische Zuordnungsbereiche 716 geteilt ist. Zusätzlicher Arbeitsspeicher wird ebenfalls innerhalb des Speichersystems 712 durch einen Schreib-Cache 718 bereitgestellt, der lokal durch die Verarbeitungskomponenten des Speichersystems 712 verwendet wird.
  • Vom Blickpunkt des externen Servers 710 aus zeigt das Speichersystem 712 eine oder mehrere virtuelle Platten 720 (vdisks), die die gespeicherten Daten auf logische Weise für den externen Server 710 darstellen. Daten, die für den Server 710 als auf einer einzelnen virtuellen Platten 710 vorhanden dargestellt werden, können tatsächlich auf verschiedenen Platten 714 in der tatsächlichen physischen Speicherdomäne 714 gespeichert sein. Die Zuordnung zwischen den virtuellen Platten 720 und den physischen Platten 714 wird von zwei Komponenten in dem Speichersystem 712, einer Forward-Lookup-Struktur 722 und einer Reverse-Lookup-Struktur 724 verwaltet. Die Forward-Lookup-Struktur 722 ordnet eine oder mehrere Adressen in der vdisk 720 dem bzw. den tatsächlichen physischen Speicherplätzen in den Platten 714 zu, auf denen die Daten gespeichert sind. Die Reverse-Lookup-Struktur 724 ordnet den bzw. die physischen Speicherplätze in den Platten 714 wieder der bzw. den Adressen in der einen oder den mehreren der vdisks 720 zu.
  • Wenn an der vdisk 720 ein Lesevorgang von dem Server 710 eintrifft, steht die vdisk 710 mit der Forward-Lookup-Struktur 722 in Datenübertragung, um die physische Adresse der Daten zu erhalten, und liest anschließend die angeforderten Daten aus der Adresse in der physischen Domäne 714. In dem Fall eines Lesevorgangs ist eine Änderung weder an der Forward-Lookup-Struktur 722 noch an der Reverse-Lookup-Struktur 724 erforderlich.
  • Wenn ein Schreibvorgang an der vdisk 720 von dem Server 710 eintrifft, ist das Verhalten komplizierter. Wenn neue Daten auf die Platten 714 geschrieben werden, muss die Forward-Lookup-Struktur 722 aktualisiert werden, um die Adresse der neuen Daten in der vdisk 710 mit dem physischen Speicherplatz der Daten zu verbinden, da sie aktuell in den Platten 714 gespeichert ist. In diesem Fall müssen sowohl die Forward-Lookup-Struktur als auch die Reverse-Lookup-Struktur 724 aktualisiert werden, um die Verbindung zwischen den Daten, die dem Server 710 von der vdisk 720 bereitgestellt werden, und dem tatsächlichen physischen Speicherplatz auf den Platten 714 wiederzugeben, auf denen die Daten gespeichert sind.
  • Das Speichersystem 712 umfasst auch zwei weitere Komponenten, eine Speicherzuordnungseinrichtung 726 und eine Speicherbereinigungseinrichtung 728. Die Speicherzuordnungseinrichtung 726 führt eine Anzahl von Funktionen aus, primär zum Zuordnen von Live-Blöcken aus Live-Bereichen 716 in der physischen Domäne 714, die zu den vdisks 720 übertragen werden, und zum Verwalten von freien Listen für die zugeordneten Daten, wie dies im Folgenden ausführlicher beschrieben wird. Wenn neue Daten in das Speichersystem 712 geschrieben werden müssen, schreibt die Forward-Lookup-Struktur 722 auf Speicherplätze, die durch den zugeordneten Blockspeicherort bestimmt werden. Die Speicherzuordnungseinrichtung oberster Ebene 726 weist einen Satz von „aktiven“ Bereichen 716 auf, die jederzeit verfolgt werden. Eine endliche Anzahl dieser Bereiche 716 kann verfolgt werden. Zum Beispiel würde dies in einer physischen Exabyte-Domäne 714 mit einer Bereichsgröße von einem Gigabyte (zum Beispiel) zu einem Verfolgen von mehr als einer Milliarde Bereichen führen. Selbst wenn ein Bereichseintrag in der Speicherzuordnungseinrichtung 726 nur 4 B ausmachen würde (d.h. verfolgt würde, wie viele Blöcke in den Bereich 716 verfügbar waren), würde dies einen Wert von 4 GB von Arbeitsspeicher in Anspruch nehmen, wobei es sich um Arbeitsspeicher handelt, der besser als Cache verwendet würde. Daher wird ein Satz von aktiven Bereichen 16 mit einer Größe von bis zu N Bereichen 16 verwaltet (wobei N der Höchstwert ist, der durch den Cache 18 bearbeitet werden kann). Wenn sämtlicher Speicher in einem aktiven Bereich 716 erschöpft ist, verlässt dieser volle Bereich 716 den Satz von aktiven Bereichen 716, der zum Verfolgen des Bereichs 716 verwendete Arbeitsspeicher kann zurückgefordert werden, und sofern anwendbar, kann die Speicherbereinigung durch die Speicherbereinigungseinrichtung 728 ausgeführt werden. Wenn alle N Bereiche 716 aktiv sind, können keine weiteren Bereiche 716 zugeordnet werden, und dies bedeutet, dass keine freie Liste (eine Liste mit nicht zugeordneten Blöcken von Arbeitsspeicher) zusätzliche Host-Blöcke empfangen kann. Die Speicherbereinigungseinrichtung 728 fordert im Wesentlichen Bereiche 716 mit begrenzten vorhandenen Live-Daten zurück, indem die übrigen Live-Daten in neue Bereiche 716 überschrieben werden, wodurch diese zurückgeforderten Bereiche 716 wieder für die Speicherzuordnungseinrichtung 726 freigegeben werden. Die Speicherbereinigungseinrichtung 728 (oder das Speicherbereinigungsmodul) verbindet sich mit der Reverse-Lookup-Struktur 724, die zum Ausführen der Speicherbereinigung verwendet wird.
  • Das Speichersystem 712 wird für den Server 710 als Thin-Provisioned (reduziert bereitgestellt) (auch als speicherplatzeffizient bekannt) dargestellt, wobei der zugrundeliegende Speicher weitaus kleiner sein kann als der, der für einen Host (den Server 710) dargestellt wird. Dies wird durch eine Metadatenstruktur, die Schreibvorgänge der virtuellen Domäne der physischen Domäne zuordnet, und durch Komprimierung und Deduplizierung erreicht. Umsetzungen, die eine Komprimierung nutzen, müssen einen Mechanismus zur Platzwiederherstellung umsetzen, der als Speicherbereinigung bekannt ist, da es keine Garantie gibt, dass zwei beliebige Schreibvorgänge auf dieselbe virtuelle Adresse dieselbe Menge von physischem Speicher in Anspruch nehmen werden. Früher oder später weist eine Platte 714 viele kleine Bereiche von freiem Speicherplatz auf, und es ist wünschenswert, diese durch Verschieben von Schreibvorgängen in die physische Domäne (und Aktualisieren ihrer Zuordnung in der virtuellen Domäne) zusammenzufügen.
  • Im Folgenden wird die Rolle des Journals beschrieben. Das Journal verfolgt Aktualisierungen in einen B-Baum. Der B-Baum speichert Zuordnungen zwischen den virtuellen Adressen und den physischen Adressen. Die Rolle des Journals besteht darin, Änderungen an diesen Zuordnungen für den Fall zu verfolgen, dass während der Aktualisierungen Fehler auftreten. Der B-Baum kann dann unter Bezugnahme auf die Wiederherstellungsinformationen in dem Journal wiederhergestellt werden. Eine Verfälschung der Zuordnung zwischen der virtuellen und der physischen Domäne infolge eines Verlusts von Cache-Inhalten oder eines anderen Fehlers wird somit vermieden.
  • In diesem Kontext einer Überschreiboperation bestehen die relevanten Schritte zur Protokollierung in dem Journal aus: Schreiben von neuen Daten in einen neuen Speicherplatz; Aktualisieren des B-Baums zum Protokollieren der physischen Adresse des neuen Speicherplatzes; und Markieren der alten physischen Daten als ungültig (veraltet). Die Speicherbereinigung muss dann ausgeführt werden und alle nicht ungültigen Daten (d.h. immer noch gültigen Daten) verschieben, die mit den ungültigen Daten vermischt sind. In der Regel stehen die gültigen Daten in einem bestimmten virtuellen Arbeitsspeicherblock nur für einen ganz kleinen Bruchteil der Gesamtheit, z.B. 10 % oder weniger. Die Speicherbereinigung verschiebt die immer noch gültigen Daten, die sehr wahrscheinlich kalt sind (d.h. auf dem Haupt-Arbeitsspeicher, dem physischem Speicher und nicht mehr im Cache-Speicher), und die Handlung einer Speicherbereinigung veranlasst, dass diese kalten Daten aktiv werden, d.h. sich in Verarbeitung im Cache-Speicher befinden und daher bei einem Ausfall ein Verlustrisiko besteht.
  • Verschiedene Ausführungsformen stellen ein Speicherbereinigungsverfahren für ein virtualisiertes Speichersystem bereit, in dem virtueller Adressraum physischem Adressraum zugeordnet ist. Das Verfahren kann durch Modifizieren der Speicherzuordnungseinrichtung des Systems umgesetzt werden. Das Verfahren kann in Speichersystemen, die Daten in komprimierter Form speichern, wie beispielsweise IBM z/OS, und auch für nicht komprimierte Speichersysteme verwendet werden. Das Verfahren wird insbesondere für Speichersysteme in Erwägung gezogen, die immer in frischen virtuellen Arbeitsspeicherplatz schreiben, um Lesevorgänge zu reduzieren, und daher eine Menge von virtuellem Arbeitsspeicherplatz in Anspruch nehmen und eine kontinuierliche Speicherbereinigung erfordern. Die Speicherzuordnungseinrichtung verfolgt gemäß verschiedenen Ausführungsformen virtuellen Arbeitsspeicher auf Schreibvorgänge nach Blöcken, wobei jeder Block ein Bereich von virtuellen Speicheradressen ist. Diese Blöcke werden als „Speicherbereiche“ bezeichnet.
  • In verschiedenen Ausführungsformen geht das Speicherbereinigungsverfahren wie folgt vor. Die Speicherzuordnungseinrichtung wählt einen Speicherbereich zum Empfangen von speicherbereinigten Daten, der als Bestimmungsort oder Zielspeicherbereich bezeichnet wird.
  • Die Speicherzuordnungseinrichtung wählt einen Speicherbereich, der einer Speicherbereinigung unterzogen werden soll, der als ein Quellspeicherbereich bezeichnet wird, wobei die virtuellen Adressen des Quellspeicherbereichs so markiert sind, dass sie entweder gültige Daten oder ungültige Daten enthalten. Wie oben erwähnt, ist es wahrscheinlich, dass die Menge von gültigen Daten in Bezug auf die Größe des Quellspeicherbereichs ziemlich klein ist, d.h. viel kleiner als die Menge von ungültigen Daten. Mit anderen Worten, jeder Zielspeicherbereich weist wahrscheinlich genug Platz zum Aufnehmen aller gültigen Daten aus mehreren Quellspeicherbereichen auf; typische Anzahlen könnten eventuell 5 bis 10 sein.
  • Die Speicherzuordnungseinrichtung, oder in einigen Ausführungsformen die Speicherbereinigungseinrichtung 728 (oder das Speicherbereinigungsmodul 255), verschiebt oder kopiert die gültigen Daten in dem Quellspeicherbereich über den Cache-Speicher in den Zielspeicherbereich und wählt anschließend zweite, dritte usw. Quellspeicherbereiche, um sie ihrerseits einer Speicherbereinigung zu unterziehen, wobei die gültigen Daten jedes Mal über den Cache-Speicher in den Zielspeicherbereich verschoben werden. Dies wird fortgesetzt, bis der Zielspeicherbereich voll ist. Die Speicherbereinigungseinrichtung 728 (oder das Speicherbereinigungsmodul 255) können bestimmen, wann der Zielspeicherbereich voll ist. Wenn ein Zielspeicherbereich voll wird, können restliche Daten, die noch aus dem Quellspeicherbereich, der speicherbereinigt wird, verschoben oder kopiert werden müssen, in den nächsten zugeordneten Zielspeicherbereich übertragen, d.h. kopiert werden. Die Gesamtheit der Daten des Quellspeicherbereichs aus einem bestimmten Quellspeicherbereich muss nicht in einen Zielspeicherbereich passen. Sie kann auf zwei aufgeteilt werden; sie muss nur so markiert werden, dass sie von mindestens der einen abhängig ist, da verschiedene Ausführungsformen ein sequentielles Entleeren bereitstellen, damit garantiert werden kann, dass beide Zielspeicherbereiche dann entleert worden sind.
  • Wenn der Punkt erreicht wird, an dem der aktuell für die Speicherbereinigung verwendete Zielspeicherbereich voll ist, wählt die Speicherzuordnungseinrichtung oder die Speicherbereinigungseinrichtung einen weiteren Speicherbereich aus, der der nächste Zielspeicherbereich werden soll, und ermöglicht somit die fortgesetzte Speicherbereinigung. Der Prozess wird dann wiederholt, indem der nächste Zielspeicherbereich mit speicherbereinigten gültigen Daten gefüllt wird usw.
  • Asynchron zum fortgesetzten Füllen einer Abfolge von Zielspeicherbereichen und Entleeren von immer noch gültigen Daten aus einer viel größeren Anzahl von Quellspeicherbereichen wird jeder volle Zielspeicherbereich seinerseits aus dem Cache entleert. Das Entleeren jedes Zielspeicherbereichs aus dem Cache-Speicher in der Reihenfolge, in der er zugeordnet und gefüllt wurde, wird erst initiiert, nachdem jeder derartige Zielspeicherbereich voll geworden ist. Die Entleer- und Speicherbereinigungs-Transfers werden unabhängig gesteuert, sodass die Zeitdauer, die zum Entleeren jedes Zielspeicherbereichs benötigt wird, in Bezug auf die Geschwindigkeit der Speicherbereinigung länger oder kürzer sein kann. Wegen der Asynchronität zwischen Entleer- und Speicherbereinigungs-Transfer zwischen Quell- und Zielspeicherbereichen wird der virtuelle Adressraum der speicherbereinigten Quellspeicherbereiche nicht sofort für neue Schreibvorgänge verfügbar gemacht, sondern vielmehr vorübergehend zurückgehalten. Die Freigabe erfolgt erst nach Abschluss des Entleerens jedes Zielspeicherbereichs, wobei „Freigeben“ bedeutet, dass physischer Adressraum, der dem virtuellen Adressraum der Quellspeicherbereiche zugeordnet ist, deren gültige Daten vollkommen aus dem Cache-Speicher durch das Entleeren dieses bestimmten Zielspeicherbereichs entleert worden sind, für Schreibvorgänge verfügbar gemacht wird. Obwohl das Entleeren des Cache und ein anschließendes Freigeben von alten Adressen nicht synchron mit der Speicherbereinigung von Quell- in Zielspeicherbereiche ausgeführt wird, sind diese Aktivitäten daher koordiniert.
  • 3A zeigt den Prozessverlauf der Speicherbereinigungsaktivität. In einem Schritt S1 wird ein Zielspeicherbereich ausgewählt, um speicherbereinigte Daten zu empfangen. In einem Schritt S2 wird ein Quellspeicherbereich zur Speicherbereinigung ausgewählt. Schritt S1 und S2 können durch die Speicherzuordnungseinrichtung ausgeführt werden. In einem Schritt S3 werden die gültigen Daten in dem Quellspeicherbereich identifiziert, und in einem Schritt S4 werden diese gültigen Daten in den Zielspeicherbereich verschoben oder kopiert. Schritt S4 und S5 können durch die Speicherzuordnungseinrichtung oder durch die Speicherbereinigungseinrichtung ausgeführt werden. Im Schritt 5, wenn der Zielspeicherbereich voll ist (wie durch die Speicherzuordnungseinrichtung oder durch die Speicherbereinigungseinrichtung bestimmt), kehrt der Prozessablauf zum Schritt S1 zurück, um einen neuen Zielspeicherbereich für eine Fortsetzung der Speicherbereinigung auszuwählen, und die übrigen Daten aus dem vorhandenen Quellspeicherbereich oder einem neuen Quellspeicherbereich werden in Schritt S2 ausgewählt. Der jetzt volle Zielspeicherbereich ist ein Kandidat für ein Entleeren des Cache, wie in 3B gezeigt.
  • 3B zeigt den Prozessverlauf des Entleerens des Cache und des Freigebens von Speicherbereichen, die speicherbereinigt worden sind, d.h. Quellspeicherbereiche. Ein voller Zielspeicherbereich wird für das Entleeren des Cache in einem Schritt F1 ausgewählt. Ein voller Zielspeicherbereich wird für das Entleeren des Cache durch die Speicherbereinigungseinrichtung ausgewählt. Das Entleeren des Cache kann durch die Speicherbereinigungseinrichtung in einem Schritt F2 initiiert werden. Wenn das Entleeren des Cache, wie in einem Schritt F3 bestimmt, durch die Speicherbereinigungseinrichtung abgeschlossen ist, kann der Arbeitsspeicher-Speicherplatz, der den Quellspeicherbereichen zugeordnet ist, die in den soeben entleerten Zielspeicherbereich speicherbereinigt worden sind, in einem Schritt F4 durch die Speicherzuordnungseinrichtung für neue Schreibvorgänge freigegeben werden.
  • Im Einzelnen kann das Verfahren so umgesetzt werden, dass jeder Schreibvorgang auf die Platte Metadaten-Kopfdaten aufweist, die dokumentieren, zu welchem Volumen und welcher logischen Forward-Lookup-Blockadresse (LBA) sie ursprünglich gehörten. Nach Abschluss aller Metadaten-Aktualisierungen werden die Reverse-Lookup-Strukturen, z.B. ein B-Baum, die sich auf einen bestimmten Speicherbereich beziehen, aktualisiert und über den Cache-Speicher in den Hauptarbeitsspeicher (von Cache auf Platte) entleert. Nach Abschluss der Speicherbereinigung werden die Reverse-Lookup-Metadaten für den speicherbereinigten Speicherbereich aktualisiert, um zu dokumentieren, dass er speicherbereinigt ist, doch wird der speicherbereinigte Speicherbereich nicht sofort verworfen, d.h. nicht unmittelbar für neue Schreibvorgänge bereitgestellt, sondern wird vorübergehende zurück- und verfügbar gehalten, sollten die Cache-Inhalte verloren gehen. Die Reverse-Lookup-Metadaten für den speicherbereinigten Speicherbereich werden erst verworfen, wenn dieser Speicherbereich anschließend wiederverwendet oder verworfen wird.
  • Ein Speicherbereich kann gleichzeitig von mehr als einer umsetzenden Forward-Lookup-Struktur verwendet werden, z.B. einem B-Baum. Wenn alle Metadaten-Aktualisierungen für einen Speicherbereich abgeschlossen sind, wird ein Entleeren des Cache ausgelöst. Da ein Schreibvorgang immer auf einen „neuen“ Speicherplatz erfolgt (entweder auf frisch zugeordneten Speicher oder auf einen vorher speicherbereinigten Speicherbereich), wirkt der Cache effektiv nur als temporärer Puffer für vollständige Schreibvorgänge.
  • Die Speicherzuordnungseinrichtung unterscheidet zwischen aktuellen Speicherbereichen, die verwendet werden, um neue, in das System eingehende Schreibvorgänge zu empfangen, und aktuellen Speicherbereichen, die intern zum Empfangen von speicherbereinigten Daten aus anderen Speicherbereichen verwendet werden. Die Speicherzuordnungseinrichtung verfolgt den Satz von Speicherbereichen, die aktuell in einer Speicherbereinigung aktiv sind, durch die Verwendung eines Paars von Sequenznummern. (In einem System, das mehrere Speicherknoten unterstützt, kann für jeden Knoten eine separate Sequenznummer verwendet werden.)
  • Wenn an einem Speicherbereich eine Speicherbereinigung ausgeführt wird, statt zu erlauben, den alten Speicherbereich unmittelbar nachdem er speicherbereinigt worden ist wiederzuverwenden, wird dieser alte Speicherbereich vorübergehend festgehalten, d.h. vorübergehend verzögert und als neuer Speicherbereich als für Schreibvorgänge verfügbar markiert. Da Live-Daten aus einem Speicherbereich, der speicherbereinigt worden ist, für ein Verschieben zu mehreren Zielspeicherbereichen zugewiesen worden sein können, und deren einzelnes Verfolgen kostspielig ist, verfolgen verschiedene Ausführungsformen, welche Speicherbereiche aktuell für Schreibvorgänge verwendet werden, über ein Paar von Sequenznummern, auf die hierin als Untergrenzen- und Obergrenzen-Sequenznummern verwiesen wird. Die Verwendung der Untergrenzen- und Obergrenzen-Sequenznummern vereinfacht die Steuerung der Freigabe von physischem Adressraum nach einem Entleeren des Cache von Zielspeicherbereichen. Der Speicher-Controller ordnet jedem Zielspeicherbereich eine eindeutige Sequenznummer zu. Jede Sequenznummer ermöglicht ein Nachschlagen der Quellspeicherbereiche, deren Speicherbereinigung durch Verschieben von Daten in diesen Zielspeicherbereich abgeschlossen wurde. Die Sequenznummer des ältesten Zielspeicherbereichs, für den das Entleeren nicht abgeschlossen ist, wird als eine Untergrenzen-Sequenznummer gespeichert. Die Sequenznummer des Zielspeicherbereichs, der aktuell zur Speicherbereinigung von Quellspeicherbereichen zugeordnet ist, wird als eine Obergrenzen-Sequenznummer gespeichert. Der Wert der Untergrenzen-Sequenznummer wird nach Abschluss des Entleerens des ältesten Zielspeicherbereichs aus dem Cache-Speicher erhöht, und der Wert der Obergrenzen-Sequenznummer wird beim Auswählen eines weiteren Zielspeicherbereichs zur Speicherbereinigung erhöht. Da die Geschwindigkeit des Entleerens variabel ist und über bestimmte Zeiträume langsamer als das Füllen von Zielspeicherbereichen und über andere Zeiträume schneller sein kann, nimmt die Differenz zwischen dem Untergrenzen- und Obergrenzwert im Lauf der Zeit zu und ab.
  • Da die Zielspeicherbereiche in der Reihenfolge einer Sequenznummern-Zunahme entleert werden, entspricht die Untergrenzen-Sequenznummer immer dem ältesten Zielspeicherbereich, für den ein Entleeren nicht abgeschlossen ist. Der Bereich von Speicherbereichen mit Indizes zwischen der Untergrenzen- und der Obergrenzen-Sequenznummer gibt daher diejenigen Zielspeicherbereiche an (und damit die speicherbereinigten Speicherbereiche, von denen er speicherbereinigte Daten empfangen hat), die potenziell ein Risiko eines Verlusts von Cache-Inhalten oder einen anderen Cache-Fehler aufweisen. Nur wenn mit Sicherheit feststeht, dass ein Zielspeicherbereich auf eine Platte entleert worden ist, können die speicherbereinigten Speicherbereiche, die von diesem Zielspeicherbereich abhängen, sicher für neue Schreibvorgänge freigegeben werden.
  • Das Vorhandensein der Untergrenzen- und Obergrenzen-Sequenznummern kann auch vereinfachen, was in dem Journal gespeichert werden muss, um vor Cache-Fehlern zu schützen. Der Speicher-Controller kann die Wiederherstellungsinformationen, die in dem Journal gespeichert sind, auf die Arbeitsspeicheradressen einschränken, die mit denjenigen verbunden sind, die Sequenznummern zwischen dem Untergrenzen- und dem Obergrenzen-Wert zugehörig sind. Die Wiederherstellungsinformationen für jede derartige Sequenznummer umfassen eine Zuordnung zu den Quellspeicherbereichen, deren Speicherbereinigung durch Verschieben von Daten in den Zielspeicherbereich abgeschlossen wurde, der dieser Sequenznummer zugehörig ist. In dem Fall eines Verlusts von Cache-Inhalten während der Speicherbereinigung werden die Wiederherstellungsinformationen verwendet, um eine Forward-Lookup-Metadatenstruktur wiederherzustellen, die den virtuellen Adressraum mit dem physischen Adressraum für die Quellspeicherbereiche verbindet, die in den Wiederherstellungsinformationen identifiziert wurden. Insbesondere kann das Journal versuchen, die Forward-Lookup-Strukturen durch einen Wiederholungsansatz wiederherzustellen. Dieser Wiederholungsansatz liest einen Journaleintrag, der eine physische Adresse eines Zielspeicherbereichs angibt, und liest anschließend den Zielspeicherbereich in der physischen Domäne, um zu bestimmen, ob der Speicherplatz, auf den der Journaleintrag verweist, die korrekten Metadaten-Kopfdaten aufweist, die zu dem Volumen gehören, dessen Wiederherstellung versucht wird. Wenn eine fehlende Übereinstimmung zwischen dem Journal und der Datendomäne festgestellt wird, fährt die Journal-Wiederholung mit späteren Journaleinträgen fort, und die Adresse, die wiederhergestellt wird, verbleibt als mittelmäßiger Fehler, der von einem späteren JournalEintrag zum Suchen nach gültigeren Daten abhängt. Dieser Wiederholungsansatz versucht, den letzten Verweis zu finden, der nicht überschrieben worden ist. Zusätzliche Details zu diesem Wiederholungsansatz werden in der Miteigentums-, gleichzeitig anhängigen U.S.-Patentanmeldung 16/548 474 offenbart, eingereicht am 22. Aug. 2019 mit dem Titel „Data Validation During Data Recovery in a Log-Structured Array Storage System“, die hierin in ihrer Gesamtheit integriert ist. Wenn identifiziert wurde, dass Verweise auf einen speicherbereinigten Speicherbereich wiederhergestellt worden sind, ist es notwendig, den fraglichen Speicherbereich so zu behandeln, als wäre die Speicherbereinigung nicht erfolgreich gewesen und daher eine zweite Runde einer Speicherbereinigung erforderlich. Da die Reverse-Lookup-Metadaten die wiederhergestellten Verweise als ungültig gemacht markiert haben können, ist es notwendig, den Speicherbereich als Gegenstand einer Speicherbereinigung ohne die Verwendung der Reverse-Lookup-Struktur zu markieren. Dies kann durch Verwenden der Kopfdaten erreicht werden, die jedem Schreibvorgang zugehörig sind. Die Speicherbereinigung führt alle Volumen-Schreibvorgänge, die sie auf der Datenplatte aus den Kopfdaten identifizieren kann, dem E/A-Pfad zu. Der E/A-Pfad weist Schreibvorgänge zurück, die ursprünglich von Speicherplätzen kommen, die nicht mit der Forward-Lookup-Struktur übereinstimmen. Dies erfolgt für eine Speicherbereinigung mit Verwenden der Reverse-Lookup-Struktur und einer Speicherbereinigung ohne die Reverse-Lookup-Struktur, da die Anforderung der Reverse-Lookup-Struktur beseitigt wird, um mit der Forward-Lookup-Struktur perfekt konsistent zu sein. Da vor einem abgeschlossenen Entleeren die Wiederverwendung von Speicherbereichen, die zu speicherbereinigten Speicherbereichen gehören, identifiziert und verhindert wurde, findet dieser Wiederholungsansatz immer Daten, die im Fall eines Cache-Verlusts zu speicherbereinigten Speicherbereichen gehören.
  • Es ist eine Konsequenz des vorgeschlagenen Verfahrens, dass es mehr Arbeitsspeicher-Speicherplatz in Anspruch nimmt als ein herkömmliches Verfahren, da es an Speicherbereichen länger festhält als ein Ansatz, der speicherbereinigte Speicherbereiche sofort wiederverwendet. Es ist daher möglich, dass ein Verwenden des vorgeschlagenen Verfahrens zu einer Knappheit des virtuellen Arbeitsspeicher-Speicherplatzes führt, wobei berücksichtigt wird, dass einem bestimmten Benutzer, einer Unternehmensentität oder einer Anwendung in der Regel nur eine feste Menge von virtuellem Arbeitsspeicher-Speicherplatz zugeordnet wird. Wenn sich insbesondere ein Entleeren aus irgendeinem Grund verlangsamt hat, kann die Differenz zwischen den Werten von Untergrenzen- und Obergrenzen-Wert hoch werden, was bedeutet, dass eine große Menge von Arbeitsspeicher-Speicherplatz in der Speicherbereinigung gebunden ist. Wenn sich infolgedessen die Menge von freiem virtuellen Arbeitsspeicher unter einen bestimmten Schwellenwert reduziert, z.B. 10 % oder 5 % des gesamten verfügbaren virtuellen Arbeitsspeichers, kann es von Vorteil sein, die Speicherbereinigungsaktivität gemäß dem vorgeschlagenen Verfahren anzuhalten, was dem virtuellen Arbeitsspeicher-Speicherplatz ermöglicht, der den Zielspeicherbereichen der Speicherbereinigung für diejenigen Zielspeicherbereiche zugeordnet ist, für die die Quellspeicherbereiche noch nicht freigegeben worden sind, als für neue Schreibvorgänge verfügbar freigegeben zu werden. Wenn für den verfügbaren virtuellen Adressraum bestimmt wurde, dass er knapp geworden ist, setzt die Speicherzuordnungseinrichtung die Speicherbereinigung aus, indem das Verschieben von gültigen Daten aus dem Quell- in den Zielspeicherbereich ausgesetzt wird. Sie kann den physischen Adressraum nach Verfügbarkeit für Schreibvorgänge freigeben, der dem virtuellen Adressraum von Zielspeicherbereichen zugeordnet ist, die eine Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert haben. Diese Freigabe kann in der Praxis nicht sofort erfolgen, da dazu zuerst ein Benachrichtigen aller Teile der Speicherzuordnungseinrichtung gehört, um ein Verwenden dieser Zielspeicherbereiche zu stoppen. Wenn der gesamte Speicher, der diesen Zielspeicherbereichen zugehörig ist, eine abgeschlossene Verwendung meldet oder meldet, dass sie verworfen worden sind, können diese Zielspeicherbereiche für neue Schreibvorgänge freigegeben werden. Eine weitere Option für den Umgang mit demselben Problem besteht darin, die Differenz zwischen dem Untergrenzen- und dem Obergrenzen-Wert zu deckeln, sodass eine maximale Anzahl von Zielspeicherbereichen vorliegt, die in die Speicherbereinigung eingebunden werden können. Wenn der Deckelungswert erreicht ist, wird die Speicherbereinigung angehalten, bis die Untergrenzen-Sequenznummer erhöht worden ist, d.h. bis das aktuelle Entleeren des Cache abgeschlossen ist.
  • 4A bis 4D sind schematische Blockschaubilder, die einen beispielhaften Verlauf der Speicherbereinigung gemäß dem vorgeschlagenen Verfahren zeigen. Eine zeitliche Abfolge wird in 4A bis 4D schematisch veranschaulicht. Anfänglich verwendet der virtuelle Arbeitsspeicher drei beispielhafte Speicherbereiche: Ext1, Ext2, Ext3 mit Transfers zu physischem Speicher, die über einen Cache stattfinden. Extent1 (Ext1) enthält eine Mischung von kalten und veralteten (immer noch gültigen) Daten, die speicherbereinigt werden sollen. Extent2 (Ext2) enthält kalte statische Daten. Extent3 (Ext3) ist der Speicherbereich, der aktuell für neue Schreibvorgänge verwendet wird. Extent1 wird dann als ein Kandidat für eine Speicherbereinigung auf Grundlage seines relativ kleinen Anteils an immer noch gültigen Daten identifiziert. Der Speicherbereinigungs-Prozess liest einen Speicherbereich und wählt Daten aus, die beibehalten werden sollen (401). Wie schematisch in 4B gezeigt, werden die veralteten Daten aus Extent1 als zu verwerfen identifiziert, und die immer noch gültigen ,Live'-Daten aus Extent1 werden in Extent3 geschrieben. 4C zeigt, dass selbst nach Abschluss der Speicherbereinigung von Extent1 bis Extent3 die Daten in Extent1 zurückgehalten werden, während sich die speicherbereinigten Daten potenziell noch über den Cache unterwegs zu dem physischen Speicher befinden. 4D zeigt anschließend, wie Extent1 verworfen werden kann, wenn der Cache in Bezug auf Extent3 in den physischen Speicher entleert worden ist.
  • Dem Fachmann wird klar sein, dass alle oder ein Teil der logischen Prozessschritte der bevorzugten Ausführungsform alternativ in einer Logikvorrichtung oder einer Mehrzahl von Logikvorrichtungen verkörpert werden können, die Logikelemente aufweisen, die angeordnet sind, um die logischen Prozessschritte des Verfahrens auszuführen, und dass derartige Logikelemente Hardware-Komponenten, Firmware-Komponenten oder eine Kombination davon aufweisen können.
  • Dem Fachmann wird ebenfalls klar sein, dass alle oder ein Teil der Logikkomponenten der bevorzugten Ausführungsform alternativ in logischen Vorrichtungen verkörpert sein können, die Logikelemente zum Ausführen der Schritte des Verfahrens aufweisen, und dass solche Logikelemente Komponenten wie Logikgatter zum Beispiel in einem programmierbaren Logik-Array oder einer anwendungsspezifischen integrierten Schaltung aufweisen können. Eine derartige Logikanordnung kann ferner in grundlegenden Elementen zum temporären oder permanenten Erstellen von Logikstrukturen in einem derartigen Array oder einer derartigen Schaltung verkörpert werden, die zum Beispiel eine virtuelle Hardware-Deskriptorsprache verwenden, die unter Verwendung von festen oder übertragbaren Trägermedien gespeichert oder übertragen werden können.
  • In einer weiteren alternativen Ausführungsform kann die vorliegende Erfindung in der Form eines durch einen Computer umgesetzten Verfahrens zum Verwenden eines Dienstes verwirklicht werden, das Schritte zum Verwenden eines Computerprogramms aufweist, das betriebsfähig ist, wenn es in einer Computerinfrastruktur bereitgestellt und darauf ausgeführt wird, um Datenverarbeitungseinheit zu veranlassen, alle Schritte des Verfahrens auszuführen.
  • Es sollte klar sein, dass das Verfahren und die Komponenten der bevorzugten Ausführungsform alternativ vollständig oder teilweise in einem parallelen Datenverarbeitungssystem verkörpert sein können, das zwei oder mehrere Prozessoren zum Ausführen von paralleler Software aufweist.
  • Eine weitere Ausführungsform der Offenbarung ist ein Computerprogrammprodukt, das in Bezug auf ein System und ein Verfahren definiert ist. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium, wie hierin verwendet, soll nicht als flüchtige Signale per se aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können für einen Prozessor eines Computers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erstellen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich als ein Schritt durchgeführt werden, der gleichzeitig, im Wesentlichen gleichzeitig, in einer teilweise oder vollständig zeitlich überlappenden Weise ausgeführt wird, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud Computing enthält, sollte klar sein, dass die Umsetzung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jedem beliebigen Typ von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud Computing ist ein Dienstbereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle umfassen.
  • Die Eigenschaften sind wie folgt:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
    • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
    • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
    • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt, und sie können jederzeit in jeder beliebigen Menge gekauft werden.
    • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Der Ressourcen-Verbrauch kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Die Dienstmodelle sind wie folgt:
    • Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. eine auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
    • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
    • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Die Nutzungsmodelle sind wie folgt:
    • Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb von Geschäftsräumen vorhanden sein.
    • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
    • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
    • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt von Cloud Computing steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten enthält.
  • Unter folgender Bezugnahme auf 5 wird eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen lokale Datenverarbeitungseinheiten, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und/oder Fahrzeug-Computersystem 54N, Daten austauschen können. Die Knoten 10 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder in einer Kombination davon. Damit hat die Cloud-Computing-Umgebung 50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sollte klar sein, dass die in 5 gezeigten Typen von Datenverarbeitungseinheiten 54A bis N nur zur Veranschaulichung dienen sollen, und dass die Cloud-Computing-Knoten 10 und die Cloud-Computing-Umgebung 50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
  • Ein Add-On gemäß Ausführungsformen der Offenbarung kann in einem Web-Browser in der Umgebung von 5 wie folgt installiert werden. Einer der Cloud-Computing-Knoten 10 kann eine Website hosten, von der aus das Add-On auf Anforderungen auf eine Datenverarbeitungseinheit einer Drittpartei heruntergeladen werden kann, wie zum Beispiel jede der Datenverarbeitungseinheiten 54A, 54B und 54C. Die Anforderung veranlasst, dass das Add-On von dem Knoten 10 über eine Netzwerkverbindung zu der Datenverarbeitungseinheit 54A/54B/54C gesendet wird, wobei das Add-On zusammen mit einem Installationsprogramm zum Integrieren des Add-Ons mit einem Web-Browser gesendet wird, der bereits auf der Datenverarbeitungseinheit vorhanden ist.
  • Unter folgender Bezugnahme auf 6 wird eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (5) bereitgestellt werden. Dabei sollte von Anfang an klar sein, dass die in 6 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Offenbarung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 61; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und vernetzte Komponenten 66. In einigen Ausführungsformen enthalten Software-Komponenten Software für Netzwerkanwendungsserver 67 und Datenbank-Software 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und anderen Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 82 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Service-Level- (Dienstgüte) Verwaltung 84 sorgt für Zuweisung und Verwaltung von Cloud-Computing-Ressourcen, sodass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 85 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
  • Eine Arbeitslastenschicht 90 stellt Beispiele für eine Funktionalität bereit, für welche die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 91; Software-Lifecycle-Management 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und eine Speicherzuordnungseinrichtung 96 mit Speicherbereinigungsverwaltung wie oben gemäß Ausführungsformen der Offenbarung beschrieben.

Claims (24)

  1. Verfahren zur Speicherbereinigung in einem Speichersystem (200, 712), in dem ein virtueller Adressraum einem physischen Adressraum zugeordnet ist, wobei der virtuelle Adressraum in Speicherbereichen (Ext-1, Ext-2, Ext-3) adressiert wird und das Speichersystem (200, 712) einen oder mehrere Prozessoren (242), eine Mehrzahl von Speichereinheiten (230a, 230b, 230n) und einen Cache-Speicher (245) aufweist, wobei das Verfahren aufweist: Auswählen (S1) eines ersten Zielspeicherbereichs als einen aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten; Auswählen (S2) eines ersten Quellspeicherbereichs als einen aktuellen Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, wobei der aktuelle Quellspeicherbereich einen oder mehrere Abschnitte von gültigen Daten aufweist; Bestimmen (S5), ob ein Zielspeicherbereich, der als der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten ausgewählt wurde, voll ist; Bestimmen, ob ein Quellspeicherbereich, der als der aktuelle Quellspeicherbereich ausgewählt wurde, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte von gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert wurden; in Reaktion auf das Bestimmen (S5), dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten nicht voll ist, und das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte mit gültigen Daten aufweist, die nicht in einen Zielspeicherbereich kopiert wurden, Kopieren von einem der Abschnitte mit gültigen Daten, die nicht in einen Zielspeicherbereich kopiert wurden, über den Cache-Speicher (718) aus dem aktuellen Quellspeicherbereich in den aktuellen Zielspeicherbereich; in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Entleeren der gültigen Daten, die in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, über den Cache-Speicher (718) aus dem Cache-Speicher (718); und im Anschluss an das Entleeren der gültigen Daten, die aus dem Cache-Speicher (718) in den aktuellen Zielspeicherbereich verschoben wurden, nach Verfügbarkeit Freigeben (F4) für Schreibvorgänge in den physischen Adressraum, der dem virtuellen Adressraum von einem oder mehreren Quellspeicherbereichen zugeordnet ist, die alle gültigen darin gespeicherten Daten über den Cache-Speicher (718) in den aktuellen Zielspeicherbereich kopiert haben.
  2. Verfahren nach Anspruch 1, das ferner aufweist: in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Auswählen eines zweiten Zielspeicherbereichs als den aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten.
  3. Verfahren nach Anspruch 2, das ferner aufweist: in Reaktion auf das Bestimmen, dass der zweite Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Entleeren (F2) der gültigen Daten, die in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, über den Cache-Speicher (718) aus dem Cache-Speicher (718), wobei das Entleeren von gültigen Daten, die in einen Zielspeicherbereich des aktuellen Ziels über den Cache-Speicher kopiert wurden, aus dem Cache-Speicher (718) in einer selben Reihenfolge entleert werden wie eine Reihenfolge, in der bestimmt wurde, dass die Zielspeicherbereiche voll sind.
  4. Verfahren nach Anspruch 1, in Reaktion auf das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, keine Abschnitte von nicht in einen Zielspeicherbereich kopierten gültigen Daten enthält, Auswählen eines zweiten Quellspeicherbereichs als den aktuellen Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll.
  5. Verfahren nach Anspruch 1, das ferner aufweist: Steuern der Freigabe von physischem Adressraum nach einem Entleeren des Cache von Zielspeicherbereichen mit der Hilfe eines Zuordnens einer Sequenznummer zu jedem Zielspeicherbereich, wobei jede Sequenznummer ein Nachschlagen in den Quellspeicherbereichen ermöglicht, deren Speicherbereinigung durch Kopieren von Daten in diesen Zielspeicherbereich abgeschlossen wurde, wobei die Sequenznummer des ältesten Zielspeicherbereichs, für den kein Entleeren ausgeführt worden ist, als eine Untergrenzen-Sequenznummer (low watermark sequence number) gespeichert wird, und wobei die Sequenznummer des aktuellen Zielspeicherbereichs, der zur Speicherbereinigung von Quellspeicherbereichen zugeordnet ist, als eine Obergrenzen-Sequenznummer (high watermark sequence number) gespeichert wird, wobei die Untergrenzen-Sequenznummer nach Abschluss des Entleerens des ältesten Zielspeicherbereichs aus dem Cache-Speicher erhöht wird, und die Obergrenzen-Sequenznummer beim Auswählen eines weiteren Zielspeicherbereichs zur Speicherbereinigung erhöht wird.
  6. Verfahren nach Anspruch 5, wobei in Reaktion auf ein Bestimmen, dass der verfügbare virtuelle Adressraum kleiner als ein Schwellenwert ist: Aussetzen des Kopierens von gültigen Daten von einem Quellspeicherbereich in einen Zielspeicherbereich; und nach Verfügbarkeit Freigeben für Schreibvorgänge in den physischen Adressraum, der dem virtuellen Adressraum von mindestens einem Zielspeicherbereich zugeordnet ist, der eine Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert hat.
  7. Verfahren nach Anspruch 1, das ferner aufweist: Verwalten eines Journals, das Wiederherstellungsinformationen für Zielspeicherbereiche mit einer Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert speichert, wobei die Wiederherstellungsinformationen Zuordnungen zwischen Quellspeicherbereichen, deren gültige Daten einer Speicherbereinigung unterzogen wurden, und entsprechenden Zielspeicherbereichen aufweisen.
  8. Verfahren nach Anspruch 7, das ferner aufweist: in Reaktion auf ein Bestimmen eines Verlusts von Cache-Inhalten während der Speicherbereinigung, Verwenden der Wiederherstellungsinformationen zum Wiederherstellen einer Forward-Lookup-Metadatenstruktur, die den virtuellen Adressraum mit dem physischen Adressraum für die Quellspeicherbereiche verbindet, die in den Wiederherstellungsinformationen identifiziert wurden.
  9. Computerprogrammprodukt zur Speicherbereinigung in einem Speichersystem (200, 712), in dem ein virtueller Adressraum einem physischen Adressraum zugeordnet ist, wobei der virtuelle Adressraum in Speicherbereichen (Ext-1, Ext-2, Ext-3) adressiert wird und das Speichersystem einen oder mehrere Prozessoren (242), eine Mehrzahl von Speichereinheiten (230a, 230b, 230n) und einen Cache-Speicher (245) hat, wobei das Computerprogrammprodukt ein durch einen Computer-lesbares Speichermedium mit darauf verkörperten Programmanweisungen aufweist, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen zum: Auswählen (S1) eines ersten Zielspeicherbereichs als einen aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten; Auswählen (S2) eines ersten Quellspeicherbereichs als einen aktuellen Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, wobei der aktuelle Quellspeicherbereich einen oder mehrere Abschnitte von gültigen Daten aufweist; Bestimmen (S5), ob ein Zielspeicherbereich, der als der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten ausgewählt wurde, voll ist; Bestimmen, ob ein Quellspeicherbereich, der als der aktuelle, Quellspeicherbereich ausgewählt wurde, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte von gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert wurden; in Reaktion auf das Bestimmen (S5), dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten nicht voll ist, und das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte mit gültigen Daten aufweist, die nicht in einen Zielspeicherbereich kopiert wurden, Kopieren von einem der Abschnitte mit gültigen Daten, die nicht in einen Zielspeicherbereich kopiert wurden, aus dem aktuellen Quellspeicherbereich über den Cache-Speicher (718) in den aktuellen Zielspeicherbereich; in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Entleeren der gültigen Daten, die in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, über den Cache-Speicher (718) aus dem Cache-Speicher (718); und im Anschluss an das Entleeren der gültigen Daten, die aus dem Cache-Speicher (718) in den aktuellen Zielspeicherbereich verschoben wurden, nach Verfügbarkeit Freigeben (F4) für Schreibvorgänge in den physischen Adressraum, der dem virtuellen Adressraum von einem oder mehreren Quellspeicherbereichen zugeordnet ist, die alle gültigen darin gespeicherten Daten über den Cache-Speicher (718) in den aktuellen Zielspeicherbereich kopiert haben.
  10. Computerprogrammprodukt nach Anspruch 9, das ferner aufweist: in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Auswählen eines zweiten Zielspeicherbereichs als den aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten.
  11. Computerprogrammprodukt nach Anspruch 10, das ferner aufweist: in Reaktion auf das Bestimmen, dass der zweite Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Entleeren der gültigen Daten, die in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, über den Cache-Speicher (718) aus dem Cache-Speicher (718), wobei das Entleeren von gültigen Daten, die in einen Zielspeicherbereich des aktuellen Ziels über den Cache-Speicher (718) kopiert wurden, aus dem Cache-Speicher in einer selben Reihenfolge entleert werden wie eine Reihenfolge, in der bestimmt wurde, dass die Zielspeicherbereiche voll sind.
  12. Computerprogrammprodukt nach Anspruch 9, in Reaktion auf das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, keine Abschnitte von gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert wurden, Auswählen eines zweiten Quellspeicherbereichs als den aktuellen Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll.
  13. Computerprogrammprodukt nach Anspruch 9, das ferner aufweist: Steuern der Freigabe von physischem Adressraum nach dem Entleeren des Cache von Zielspeicherbereichen mit der Hilfe eines Zuweisens einer Sequenznummer zu jedem Zielspeicherbereich, wobei jede Sequenznummer ein Nachschlagen in den Quellspeicherbereichen ermöglicht, deren Speicherbereinigung durch Kopieren von Daten in diesen Zielspeicherbereich abgeschlossen wurde, wobei die Sequenznummer des ältesten Zielspeicherbereichs, für den kein Entleeren ausgeführt worden ist, als eine Untergrenzen-Sequenznummer gespeichert wird, und wobei die Sequenznummer des aktuellen Zielspeicherbereichs, der zur Speicherbereinigung von Quellspeicherbereichen zugeordnet ist, als eine Obergrenzen-Sequenznummer gespeichert wird, wobei die Untergrenzen-Sequenznummer nach Abschluss des Entleerens des ältesten Zielspeicherbereichs aus dem Cache-Speicher erhöht wird, und die Obergrenzen-Sequenznummer beim Auswählen eines weiteren Zielspeicherbereichs zur Speicherbereinigung erhöht wird.
  14. Computerprogrammprodukt nach Anspruch 13, wobei in Reaktion auf ein Bestimmen, dass der verfügbare virtuelle Adressraum kleiner als ein Schwellenwert ist: Aussetzen des Kopierens von gültigen Daten von einem Quellspeicherbereich in einen Zielspeicherbereich; und nach Verfügbarkeit Freigeben für Schreibvorgänge in den physischen Adressraum, der dem virtuellen Adressraum von mindestens einem Zielspeicherbereich zugeordnet ist, der eine Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert hat.
  15. Computerprogrammprodukt nach Anspruch 9, das ferner aufweist: Verwalten eines Journals, das Wiederherstellungsinformationen für Zielspeicherbereiche mit einer Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert speichert, wobei die Wiederherstellungsinformationen Zuordnungen zwischen Quellspeicherbereichen, deren gültige Daten einer Speicherbereinigung unterzogen wurden, und entsprechenden Zielspeicherbereichen aufweisen.
  16. Computerprogrammprodukt nach Anspruch 9, das ferner aufweist: in Reaktion auf ein Bestimmen eines Verlusts von Cache-Inhalten während der Speicherbereinigung, Wiederherstellen, durch Verwenden der Wiederherstellungsinformationen, einer Forward-Lookup-Metadatenstruktur, die den virtuellen Adressraum mit dem physischen Adressraum für die Quellspeicherbereiche verbindet, die in den Wiederherstellungsinformationen identifiziert wurden.
  17. Speichersystem (200, 712) mit einem virtuellen Adressraum, der einem physischen Adressraum zugeordnet ist, wobei der virtuelle Adressraum in Speicherbereichen adressiert wird, wobei das Speichersystem (242) einen oder mehrere Prozessoren(12), eine Mehrzahl von Speichereinheiten (230a, 230b, 230n) und einen Cache-Speicher (245) hat, wobei das Speichersystem (200, 712) aufweist: eine Speicherzuordnungseinrichtung (storage allocator) zum Auswählen eines ersten Zielspeicherbereichs als einen aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten; wobei die Speicherzuordnungseinrichtung (726) einen ersten Quellspeicherbereich als einen aktuellen Quellspeicherbereich auswählen soll, der einer Speicherbereinigung unterzogen werden soll, wobei der aktuelle Quellspeicherbereich einen oder mehrere Abschnitte von gültigen Daten enthält; eine Speicherbereinigungseinrichtung (garbage collector) (728) zum Bestimmen, ob ein Zielspeicherbereich, der als der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten ausgewählt wurde, voll ist; wobei die Speicherbereinigungseinrichtung (728) bestimmen soll, ob ein Quellspeicherbereich, der als der aktuelle Quellspeicherbereich ausgewählt wurde, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte von gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert wurden; in Reaktion auf das Bestimmen (S5), dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten nicht voll ist, und das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, einen oder mehrere Abschnitte mit gültigen Daten aufweist, die nicht in einen Zielspeicherbereich kopiert wurden, Kopieren von einem der Abschnitte mit gültigen Daten, die nicht in einen Zielspeicherbereich kopiert wurden, durch die Speicherbereinigungseinrichtung aus dem aktuellen Quellspeicherbereich über den Cache-Speicher (718) in den aktuellen Zielspeicherbereich; in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Entleeren der gültigen Daten, die über den Cache-Speicher in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, durch die Speicherbereinigungseinrichtung aus dem Cache-Speicher (718); und im Anschluss an das Entleeren der gültigen Daten, die aus dem Cache-Speicher (718) in den aktuellen Zielspeicherbereich verschoben wurden, durch die Speicherzuordnungseinrichtung Freigeben von physischem Adressraum nach Verfügbarkeit für Schreibvorgänge, der dem virtuellen Adressraum von einem oder mehreren Quellspeicherbereichen zugeordnet ist, die alle gültigen darin gespeicherten Daten über den Cache-Speicher (718) in den aktuellen Zielspeicherbereich kopiert haben.
  18. Speichersystem (200, 712) nach Anspruch 17, das ferner aufweist: in Reaktion auf das Bestimmen, dass der aktuelle Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Auswählen eines zweiten Zielspeicherbereichs als den aktuellen Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten durch die Speicherzuordnungseinrichtung.
  19. Speichersystem (200, 712) nach Anspruch 18, das ferner aufweist: in Reaktion auf das Bestimmen, dass der zweite Zielspeicherbereich zum Aufnehmen von speicherbereinigten Daten voll ist, Entleeren (F2) der gültigen Daten, die durch die Speicherbereinigungseinrichtung über den Cache-Speicher (718) in den Zielspeicherbereich des aktuellen Ziels kopiert wurden, aus dem Cache-Speicher (718), wobei das Entleeren von gültigen Daten, die in einen Zielspeicherbereich des aktuellen Ziels über den Cache-Speicher kopiert wurden, aus dem Cache-Speicher (718) in einer selben Reihenfolge entleert werden wie eine Reihenfolge, in der bestimmt wurde, dass die Zielspeicherbereiche voll sind.
  20. Speichersystem (200, 712) nach Anspruch 17, in Reaktion auf das Bestimmen, dass der aktuelle Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll, keine Abschnitte von gültigen Daten enthält, die nicht in einen Zielspeicherbereich kopiert worden sind, Auswählen, durch die Speicherzuordnungseinrichtung, eines zweiten Quellspeicherbereichs als den aktuellen Quellspeicherbereich, der einer Speicherbereinigung unterzogen werden soll.
  21. Speichersystem (200, 712) nach Anspruch 17, das ferner aufweist: die Speicherzuordnungseinrichtung zum Steuern der Freigabe von physischem Adressraum nach dem Entleeren des Cache von Zielspeicherbereichen mit der Hilfe eines Zuordnens einer Sequenznummer zu jedem Zielspeicherbereich, wobei jede Sequenznummer ein Nachschlagen in den Quellspeicherbereichen ermöglicht, deren Speicherbereinigung durch Kopieren von Daten in diesen Zielspeicherbereich abgeschlossen wurde, wobei die Sequenznummer des ältesten Zielspeicherbereichs, für den kein Entleeren ausgeführt worden ist, als eine Untergrenzen-Sequenznummer gespeichert wird, und wobei die Sequenznummer des aktuellen Zielspeicherbereichs, der zur Speicherbereinigung von Quellspeicherbereichen zugeordnet ist, als eine Obergrenzen-Sequenznummer gespeichert wird, wobei die Untergrenzen-Sequenznummer nach Abschluss des Entleerens des ältesten Zielspeicherbereichs aus dem Cache-Speicher erhöht wird, und die Obergrenzen-Sequenznummer beim Auswählen eines weiteren Zielspeicherbereichs zur Speicherbereinigung erhöht wird.
  22. Speichersystem (200, 712) nach Anspruch 21, wobei in Reaktion auf ein Bestimmen, dass der verfügbare virtuelle Adressraum kleiner als ein Schwellenwert ist: die Speicherzuordnungseinrichtung das Kopieren von gültigen Daten von einem Quellspeicherbereich in einen Zielspeicherbereich aussetzt; und die Speicherzuordnungseinrichtung physischen Adressraum nach Verfügbarkeit für Schreibvorgänge freigibt, der dem virtuellen Adressraum von mindestens einem Zielspeicherbereich zugeordnet ist, der eine Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert hat.
  23. Speichersystem (200, 712) nach Anspruch 17, das ferner aufweist: die Speicherbereinigungseinrichtung (718) zum Verwalten eines Journals, das Wiederherstellungsinformationen für Zielspeicherbereiche mit einer Sequenznummer zwischen dem Untergrenzen- und dem Obergrenzen-Wert speichert, wobei die Wiederherstellungsinformationen Zuordnungen zwischen Quellspeicherbereichen, deren gültige Daten einer Speicherbereinigung unterzogen wurden, und entsprechenden Zielspeicherbereichen aufweisen.
  24. Speichersystem (200, 712) nach Anspruch 23, das ferner aufweist: in Reaktion auf ein Bestimmen eines Verlusts von Cache-Inhalten während der Speicherbereinigung, Verwenden der Wiederherstellungsinformationen durch die Speicherbereinigungseinrichtung zum Wiederherstellen einer Forward-Lookup-Metadatenstruktur, die den virtuellen Adressraum mit dem physischen Adressraum für die Quellspeicherbereiche verbindet, die in den Wiederherstellungsinformationen identifiziert wurden.
DE112020004840.3T 2019-10-08 2020-09-30 Speicherbereinigung in datenspeichersystemen Active DE112020004840B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/595,840 US10929288B1 (en) 2019-10-08 2019-10-08 Protecting against data loss during garbage collection
US16/595,840 2019-10-08
PCT/IB2020/059142 WO2021070014A1 (en) 2019-10-08 2020-09-30 Garbage collection in data storage systems

Publications (2)

Publication Number Publication Date
DE112020004840T5 DE112020004840T5 (de) 2022-06-15
DE112020004840B4 true DE112020004840B4 (de) 2024-05-02

Family

ID=74659379

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020004840.3T Active DE112020004840B4 (de) 2019-10-08 2020-09-30 Speicherbereinigung in datenspeichersystemen

Country Status (6)

Country Link
US (2) US10929288B1 (de)
JP (1) JP2022552804A (de)
CN (1) CN114556310A (de)
DE (1) DE112020004840B4 (de)
GB (1) GB2606635B (de)
WO (1) WO2021070014A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220086934A (ko) * 2020-12-17 2022-06-24 에스케이하이닉스 주식회사 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법
US11875193B2 (en) 2021-03-25 2024-01-16 Oracle International Corporation Tracking frame states of call stack frames including colorless roots
US11507503B1 (en) * 2021-05-19 2022-11-22 Oracle International Corporation Write barrier for remembered set maintenance in generational Z garbage collector
US11797208B2 (en) 2021-09-17 2023-10-24 International Business Machines Corporation Backend deduplication awareness

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130311741A1 (en) 2004-12-30 2013-11-21 Azul Systems, Inc. Garbage collection with memory quick release
US20150212938A1 (en) 2014-01-27 2015-07-30 Western Digital Technologies, Inc. Garbage collection and data relocation for data storage system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
JP6044181B2 (ja) * 2012-08-24 2016-12-14 富士通株式会社 ガーベジコレクションのための情報処理方法、プログラム及び装置
US10789223B2 (en) * 2016-03-24 2020-09-29 Microsoft Technology Licensing, Llc Hybrid garbage collection in a distributed storage system
US20170293554A1 (en) * 2016-04-12 2017-10-12 Google Inc. Hardware-assisted garbage collection
US10402108B2 (en) * 2017-01-20 2019-09-03 Fujitsu Limited Efficient control of data storage areas based on a size of compressed data to be written
US10754556B2 (en) 2017-06-27 2020-08-25 International Business Machines Corporation Prioritization of virtual volumes to take offline in a thin provisioning system
US11176047B2 (en) 2017-08-07 2021-11-16 International Business Machines Corporation Data storage system with physical storage and cache memory
US10565125B2 (en) * 2018-02-27 2020-02-18 Hewlett Packard Enterprise Development Lp Virtual block addresses
US10802726B2 (en) * 2018-10-29 2020-10-13 Microsoft Technology Licensing, Llc Optimized placement of data contained in a garbage collected storage system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130311741A1 (en) 2004-12-30 2013-11-21 Azul Systems, Inc. Garbage collection with memory quick release
US20150212938A1 (en) 2014-01-27 2015-07-30 Western Digital Technologies, Inc. Garbage collection and data relocation for data storage system

Also Published As

Publication number Publication date
GB2606635B (en) 2023-03-15
US20210103521A1 (en) 2021-04-08
JP2022552804A (ja) 2022-12-20
CN114556310A (zh) 2022-05-27
GB202205501D0 (en) 2022-05-25
GB2606635A (en) 2022-11-16
US11314639B2 (en) 2022-04-26
WO2021070014A1 (en) 2021-04-15
DE112020004840T5 (de) 2022-06-15
US10929288B1 (en) 2021-02-23

Similar Documents

Publication Publication Date Title
DE112020004840B4 (de) Speicherbereinigung in datenspeichersystemen
DE112016003120B4 (de) Umleiten einer Kopie beim Schreiben
DE102016103359B4 (de) Singleton-cachespeicher-verwaltungsprotokoll für hierarchische virtualisierte speichersysteme
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102013215535A1 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE102020120553A1 (de) Virtuell persistente volumes für containerisierte anwendungen
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE112010004573T5 (de) System und verfahren zur optimierten wiedernutzbarmachungsverarbeitung in einem virtuellen bandbibliotheksystem
DE102021125179A1 (de) Erzeugen und bereitstellen von containerabbildern
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE112015000222T5 (de) Zusammenführen von mehreren Zeitpunktkopien zu einer zusammengeführten Zeitpunktkopie
DE112013000650T5 (de) Datenzwischenspeicherungsbereich
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112017005772T5 (de) Zeitpunktgesteuerte sicherungen über einen speicher-controller in eine objektspeicher-cloud
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE112019000402T5 (de) Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem
DE102012221814A1 (de) Neuanordnung von Software-Abbildern auf der Grundlage von deren vorhergesagter Verwendung
DE112022002830T5 (de) Spiegeln von daten in schreibcaches eines controllers eines nicht flüchtigen speichers
DE112020004522T5 (de) Erhöhen der leistungsfähigkeit von frame-übergreifenden live-aktualisierungen
DE112021003615T5 (de) Schutz vor logischer beschädigung für daten
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE112020000498T5 (de) Migrieren von daten aus einem grossen extent-pool in einen kleinen extent-pool
DE102021130358A1 (de) E/a-operationen in log-strukturierten arrays
DE112019000399B4 (de) Schnelle wiederherstellung nach ausfällen in einem chronologisch geordneten log-strukturierten schlüssel-wert-speichersystem
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence