DE112018005768T5 - Copy-source-to-target-verwaltung in einem datenspeichersystem - Google Patents

Copy-source-to-target-verwaltung in einem datenspeichersystem Download PDF

Info

Publication number
DE112018005768T5
DE112018005768T5 DE112018005768.2T DE112018005768T DE112018005768T5 DE 112018005768 T5 DE112018005768 T5 DE 112018005768T5 DE 112018005768 T DE112018005768 T DE 112018005768T DE 112018005768 T5 DE112018005768 T5 DE 112018005768T5
Authority
DE
Germany
Prior art keywords
source
copy
data
point
time
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.)
Granted
Application number
DE112018005768.2T
Other languages
English (en)
Other versions
DE112018005768B4 (de
Inventor
Lokesh Gupta
Kevin John Ash
Clint Hardy
Karl Allen Neilsen
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 DE112018005768T5 publication Critical patent/DE112018005768T5/de
Application granted granted Critical
Publication of DE112018005768B4 publication Critical patent/DE112018005768B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy

Landscapes

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

Abstract

Copy-source-to-target-Operationen können selektiv und präemptiv vor Quellen-Auslagerungsoperationen vorgenommen werden. In einem weiteren Aspekt erkennt Logik sequenzielle Schreibvorgänge, zu denen Schreibvorgänge von großen Blöcken gehören, an Zeitpunktkopie-Quellen. Als Reaktion darauf werden Auslagerungstasks auf den zugehörigen Zeitpunktkopie-Zielen begonnen, die in einer Ausführungsform auf einen Stride ausgerichtete Copy-source-to-target-Operationen umfassen, die nicht geänderte Daten von den Zeitpunktkopie-Quellen an die Zeitpunktkopie-Ziele kopieren, die an den Strides des Ziels ausgerichtet sind. Somit, wenn Schreibdaten von Schreiboperationen an die Zeitpunktkopie-Quellen ausgelagert werden, brauchen solche Quellen-Auslagerungen nicht auf Copy-source-to-target-Operationen zu warten, da sie bereits durchgeführt worden sind. Ferner können die Copy-source-to-target-Operationen in Bezug auf die Stride-Begrenzungen der Zeitpunktkopie-Ziele auf einen Stride ausgerichtet sein. Weitere Merkmale und Aspekte können in Abhängigkeit von der jeweiligen Anwendung realisiert werden.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren für eine Copy-source-to target-(Kopiere-Quelle-an-Ziel-)Verwaltung in Datenspeichersystemen.
  • HINTERGRUND
  • Datenspeichersysteme, insbesondere auf Unternehmensebene, sind gewöhnlich so ausgelegt, dass sie ein hohes Maß an Redundanz bereitstellen, um die Gefahr eines Datenverlusts im Falle eines Ausfalls einer Komponente des Datenspeichersystems zu verringern. Somit werden mehrere Kopien von Daten häufig auf mehreren Systemen gespeichert, die geografisch verstreut sein können. Folglich werden Daten von einem Host, die in dem Datenspeichersystem gespeichert werden sollen, üblicherweise an eine Primäreinheit eines primären Datenspeichersystems an einem lokalen Standort geleitet und dann auf eine oder mehrere Sekundäreinheiten von sekundären Datenspeichersystemen repliziert, bei denen es sich um Systeme handeln kann, die sich geografisch entfernt von dem primären Datenspeichersystem befinden. Eine Primäreinheit kann mehrere sekundäre Beziehungen haben, bei denen Daten, die an eine Primäreinheit geleitet werden, auf mehrere Sekundäreinheiten repliziert werden.
  • Ein Speichercontroller kann eine Mehrzahl von Speichereinheiten steuern, zu denen Festplatten, Bänder usw. gehören können. Ein Cache kann von dem Speichercontroller ebenfalls verwaltet werden, wobei der Cache einen Hochgeschwindigkeitsspeicher aufweisen kann, auf den im Vergleich zu bestimmten anderen Speichereinheiten wie beispielsweise Festplatten, Bänder usw. schneller zugegriffen werden kann. Jedoch kann die gesamte Menge an Speicherkapazität des Cache im Vergleich zur Speicherkapazität von bestimmten anderen Speichereinheiten wie beispielsweise Festplatten usw., die von dem Speichercontroller gesteuert werden, verhältnismäßig klein sein. Der Cache kann aus einem/einer oder mehreren eines/einer Direktzugriffsspeichers (RAM), nicht flüchtigen Speichereinheit (NVS, non-volatile storage device), Lesecaches, Schreibcaches usw. bestehen, der/die auf unterschiedliche Weise miteinander arbeiten können. Die NVS kann aus einem Direktzugriffsspeicher mit Batteriepufferung bestehen und ein Durchführen von Schreiboperationen mit hoher Geschwindigkeit ermöglichen. Der Speichercontroller kann Eingabe-/Ausgabe-(E/A-)Anforderungen von vernetzen Hosts an die Mehrzahl der Speichereinheiten verwalten.
  • Durch den Speichercontroller ausgeführte Zwischenspeicherungstechniken tragen dazu bei, die Eingabe-/Ausgabe-(E/A-)Latenzzeit zu verbergen, indem sie die effektive Zeit verringern, die erforderlich ist, um Daten aus einem/einer langsameren Speicher bzw. Speichereinheit zu lesen oder auf diese(n) zu schreiben. Somit wird der Cache für einen schnellen Zugriff auf Daten verwendet, die aus externem Speicher zwischengespeichert werden, um Lesedaten-Zugriffsanforderungen zu bedienen und eine Pufferung von geänderten Daten bereitzustellen. Schreibanforderungen werden in den Cache geschrieben und dann in die externen Speichereinheiten geschrieben (d.h. ausgelagert). Um eine weiterhin geringe Latenzzeit für Schreibvorgänge zu gewährleisten, müssen die Daten in der NVS möglicherweise entleert, d.h. ausgelagert werden, um sicherzustellen, dass es immer Platz für ankommende Schreibvorgänge gibt.
  • Ein Tasksteuerblock (TCB, Task Control Block) ist eine Tasksteuerungsdatenstruktur im Betriebssystemkern, die die zur Verwaltung eines bestimmten Prozesses benötigten Informationen enthält. Speichercontroller können Informationen in und aus Speichereinheiten und in den und aus dem Cache (darunter die NVS) übertragen, indem sie TCBs verwenden, um die Übertragung von Daten zu verwalten. Wenn eine Schreibanforderung von einem Host-Computer an einen Speichercontroller ausgegeben wird, kann ein TCB von dem Betriebssystemcode zugeordnet werden. Der TCB wird verwendet, um Informationen über den Schreibprozess vom Anfang bis zum Ende zu verwalten, während zu schreibende Daten von dem Host-Computer durch den Cache an die Speichereinheiten weitergereicht werden. Wenn der Cache voll ist, kann der TCB in eine Warteschlange gestellt werden, bis vorhandene Daten in dem Cache ausgelagert (d.h. in Speichereinheiten geschrieben) werden können, um Platz zu schaffen. Die Auslagerungsoperationen können das Übertragen von Informationen aus dem Cache an einen Speicher, wie zum Beispiel einen Redundant-Array-of-Independent Disks-(RAID-)Speicher, einschließen und Auslagerungs-TCBs können zugeordnet werden, um die Auslagerungsoperationen durchzuführen.
  • TCBs können auf der Grundlage der Task, die von dem bestimmten TCB gesteuert wird, klassifiziert werden. Zum Beispiel ist ein „Hintergrund“- TCB ein TCB, der eine Operation steuert, die nicht direkt zu einer Host-Eingabe-/Ausgabe-Operation gehört. Somit ist ein Beispiel für einen Hintergrund-TCB ein TCB, der eine Auslagerungsoperation als eine Hintergrundoperation steuert, die als Teil einer bestimmten Host-E/A-Operation nicht erforderlich ist. Ein weiteres Beispiel für einen Hintergrund-TCB ist ein TCB, der ein Vorauslesen von Spuren aus einem Speicher in einen Cache steuert, in dem die Vorausleseoperation als eine Hintergrundoperation durchgeführt wird, die als Teil einer bestimmten Host-E/A-Operation nicht erforderlich ist.
  • Eine weitere Art eines TCB ist ein „Vordergrund“-TCB, der eine Operation steuert, die üblicherweise direkt mit einer Host-Eingabe-/Ausgabe-Operation in Zusammenhang steht. Zum Beispiel kann ein Vordergrund-TCB zugeordnet werden, um eine Auslagerungs- oder Zwischenspeicherungsoperation für eine Host-E/A-Operation durchzuführen. Somit veranlasst ein Cachefehler bei einem Host-Lesevorgang üblicherweise eine durch einen Vordergrund-TCB gesteuerte Zwischenspeicherungsoperation, um eine oder mehrere Spuren aus einem Speicher in einen Cache zwischenzuspeichern, um die Host-Leseoperation zu erfüllen.
  • Speichercontroller nutzen häufig einen Prozess zum sicheren Festschreiben von Daten (Safe-data-commit-Prozess), der ein Cacheverzeichnis nach geänderten (oft als „unsauber“ bezeichneten) Daten durchsucht, die in einen Sekundärspeicher ausgelagert werden sollen. Ein solches Durchsuchen des Cacheverzeichnisses kann regelmäßig, wie zum Beispiel stündlich, eingeleitet werden.
  • In Datenreplikationssystemen werden Daten üblicherweise in Datenträgerpaaren verwaltet, die einen primären Datenträger in einer Primärspeichereinheit und einen entsprechenden sekundären Datenträger in einer Sekundärspeichereinheit aufweisen, die eine identische Kopie der in dem primären Datenträger verwalteten Daten enthält. Der primäre und der sekundäre Datenträger werden durch eine Kopierbeziehung gekennzeichnet, bei der die Daten des primären Datenträgers, der auch als Quellendatenträger bezeichnet wird, auf den sekundären Datenträger, der auch als Zieldatenträger bezeichnet wird, kopiert werden. Primäre und sekundäre Speichercontroller können verwendet werden, um den Zugriff auf die primären und sekundären Speichereinheiten zu steuern.
  • Eine nahezu sofortige Kopie eines Satzes von Spuren kann unter Verwendung einer Zeitpunkt-Snapkopie-Funktion, wie zum Beispiel der FlashCopy-Funktion von IBM®, die eine Zeitpunktkopie-Beziehung zwischen einem Satz von Quellenspuren und einem Satz von Zielspuren in einem Speichercontroller herstellt, erzeugt werden. Der Satz von Spuren der Kopierbeziehung kann zum Beispiel einen ganzen Datenträger oder eine logische Einheit (LUN, logical unit) oder Teile eines Datenträgers aufweisen. Somit, wenn der Satz von Spuren ein ganzer Datenträger ist, erstellt die Zeitpunkt-Snapkopie-Funktion eine Momentaufnahme („snapshot“) des Inhalts eines Quellendatenträgers ab einem bestimmten Zeitpunkt in einem Zieldatenträger, der als Zeitpunkt-Snapkopie-Datenträger oder einfach als Zeitpunktkopie-Datenträger bezeichnet werden kann. Eine Version einer Zeitpunkt-Snapkopie-Funktion überträgt den Inhalt des Zeitpunktkopie-Quellendatenträgers in einer Hintergrundkopieroperation an den Zeitpunktkopie-Zieldatenträger.
  • Jedwede Leseoperationen, die an eine Spur des Zeitpunktkopie-Zieldatenträgers geleitet werden, der noch nicht den Inhalt der entsprechenden Spur des Quellendatenträgers empfangen hat, werden umgeleitet, um den Inhalt dieser Spur von dem Quellendatenträger zu erhalten. Folglich ist der Inhalt eines Zeitpunktkopie-Zieldatenträgers sofort verfügbar, wenn auch indirekt, bevor jedwede Spuren tatsächlich an den Zieldatenträger übertragen wurden. Umgekehrt, wenn der Host eine Aktualisierung an eine Spur des Quellendatenträgers leitet, bevor der Inhalt dieser Spur an den Zeitpunktkopie-Zieldatenträger übertragen wurde, wird der Inhalt der Spur des Quellendatenträgers an den Zeitpunktkopie-Zieldatenträger übertragen, bevor die Aktualisierung den Inhalt dieser Spur des Quellendatenträgers überschreiben darf.
  • Eine weitere Version einer Zeitpunkt-Snapkopie-Funktion lässt die Hintergrundkopieroperation weg. Somit wird der Inhalt des Quellendatenträgers nicht in einer Hintergrundkopieroperation an den Zeitpunktkopie-Datenträger übertragen. Folglich werden jedwede Leseoperationen, die an eine Spur des Zeitpunktkopie-Zieldatenträgers geleitet werden, gewöhnlich umgeleitet, um den Inhalt dieser Spur aus dem Quellendatenträger zu erhalten. Umgekehrt, wenn der Host eine Aktualisierung an eine Spur des Quellendatenträgers leitet, wird der nicht geänderte Inhalt dieser Spur des Quellendatenträgers an den Zeitpunktkopie-Zieldatenträger übertragen, bevor die Aktualisierung den ursprünglichen, nicht geänderten Inhalt dieser Spur des Quellendatenträgers überschreiben darf. Wird eine solche Kopieroperation zum Zeitpunkt eines Schreibvorgangs durchgeführt, wird sie als „Kopieren beim Schreiben“ („Copy on Write“) bezeichnet.
  • Daten können auch von einer Quelle an ein Ziel kopiert werden, wenn es eine Auslagerung an die Quelle für Daten gibt, die in den Cache geschrieben werden, nachdem die Zeitpunktkopie-Beziehung hergestellt wurde, und dies wird üblicherweise als „Kopieren beim Auslagern“ („Copy on Destage“) bezeichnet. Bekannte Copy-on-Destage-Operationen können beträchtliche Systemressourcen in Anspruch nehmen. Genauer gesagt, die Copy-on-Destage-Operation speichert zuerst alte, nicht geänderte Daten von der Quelle der Zeitpunktkopie-Beziehung im Cache zwischen und lagert diese alten, nicht geänderten Daten dann aus dem Cache an das Ziel der Zeitpunktkopie-Beziehung aus. Die Auslagerung von neuen, geänderten Daten aus dem Cache an die Quelle darf dann die alten, nicht geänderten Daten auf der Quelle überschreiben. Es ist klar, dass solche bekannten Copy-on-Destage-Operationen für Zeitpunktkopie-Beziehungen Auslagerungsoperationen an die Quelle erheblich verlangsamen können.
  • Bei sequenziellen Schreibvorgängen, die an die Quelle einer Zeitpunktkopie-Beziehung geleitet werden, liest eine „Copy-on-Destage“-Operation üblicherweise die alten, nicht geänderten Daten in einem ganzen Stride von Spuren von der Quelle, speichert den Stride von Daten im Cache zwischen und lagert die Daten dieser Spuren dann an das Ziel der Zeitpunktkopie-Beziehung aus. Ein Stride ist ein Satz von Spuren, üblicherweise sequenzielle Spuren, die klar definierte Anfangs- und Endbegrenzungen haben. Paritätsdaten wie RAID-(Redundant-Array-of-Independent- Disks-)Paritätsdaten zum Beispiel werden beruhend auf den Daten berechnet, die auf den Spuren innerhalb dieser Begrenzungen gespeichert werden sollen, und die Paritätsdaten für den Stride von Spuren werden ebenfalls innerhalb der Stride-Begrenzungen gespeichert. Daher ermöglichen Lese- und Schreiboperationen, die an den Begrenzungen von einem oder mehreren Strides ausgerichtet sind, Effizienz, da Lese-(Decodier-) und Schreib-(Codier-)Operationen strideweise für Stride-Paritätsdaten abgeschlossen werden können.
  • Somit werden Copy-on-Destage-Operationen vereinfacht, wenn die Quellen- und Ziel-Strides ausgerichtet sind. Wenn die Quellen- und die Ziel-Strides jedoch nicht ausgerichtet sind, sind Auslagerungen auf dem Ziel üblicherweise nicht an Stride-Begrenzungen des Ziels auf einen Stride ausgerichtet, obgleich Leseoperationen von der Quelle an den Stride-Begrenzungen der Quelle auf einen Stride ausgerichtet sein können. In verschiedenen Systemen ist es schwierig, eine Konfiguration zu erstellen, bei der die Quellen- und die Ziel-Strides ausgerichtet sind. Daher kann die Performanz sequenzieller E/As negativ beeinflusst werden, wenn es Zeitpunktkopie-Beziehungen in dem von einem Speichercontroller gesteuerten Speicher gibt.
  • KURZDARSTELLUNG
  • Ein allgemeiner Aspekt einer Datenverarbeitungsumgebung, die eine Copy-source-to-target-Verwaltung gemäß der vorliegenden Beschreibung nutzt, betrifft eine sequenzielle Schreiberkennungslogik, die eine sequenzielle Schreiboperation erkennt, um einen Satz von Daten in einer Zeitpunktkopie-Quelle zu ändern, und Copy-source-to-target-Logik, die als Reaktion auf das Erkennen eine auf einen Stride ausgerichtete Copy-source-to-target-Operation einleitet. In einer einzelnen Ausführungsform umfasst die auf einen Stride ausgerichtete Copy-source-to-target-Operation das Leiten einer auf einen Stride ausgerichteten Leseoperation an ein Zeitpunktkopie-Ziel der Zeitpunktkopie-Quelle, um eine umgeleitete Operation an die Zeitpunktkopie-Quelle zu erzwingen, um Lesedaten zu erhalten, die den Satz von Daten enthalten, und das Schreiben von auf einen Stride ausgerichteten Daten an das Zeitpunktkopie-Ziel, das den gelesenen Satz von Daten enthält.
  • In einem weiteren Aspekt erzeugt eine Tasksteuerblock-Erzeugungslogik eine Tasksteuerblock-Datenstruktur, um die Copy-source-to-target-Operation zu steuern, wobei der Tasksteuerblock mindestens zwei Eingabewerte hat, die einen Anfangsspur-Wert und einen Spurenanzahl-Wert umfassen. Die von der Tasksteuerblock-Datenstruktur gesteuerte, auf einen Stride ausgerichtete Leseoperation wird an einen oder mehrere Strides von Spuren geleitet, zu denen eine durch den Anfangsspur-Wert gekennzeichnete Spur gehört, auf die mehrere Spuren folgen, die durch den Spurenanzahl-Wert gekennzeichnet sind.
  • In einem weiteren Aspekt, bei dem die Zeitpunktkopie-Quelle eine Eins-zumehrfach-Kopierbeziehung mit einer Mehrzahl von Zeitpunktkopie-Zielen hat, leitet die Copy-source-to-target-Logik eine Folge der Copy-source-to-target-Operationen einschließlich einer Copy-source-to-target-Operation der Folge für jedes Zeitpunktkopie-Ziel der Kopierbeziehung ein. Die Tasksteuerblock-Erzeugungslogik erzeugt Tasksteuerblock-Datenstrukturen, wobei jede Tasksteuerblock-Datenstruktur eine Copy-source-to-target-Operation der Folge von Copy-source-to-target-Operationen einzeln steuert.
  • Noch ein weiterer Aspekt betrifft eine sequenzielle Schreiberkennungslogik, die eine sequenzielle Schreiboperation erkennt, indem sie jede N-te Spur der Schreiboperation prüft und feststellt, ob es sich bei der Schreiboperation um eine sequenzielle Schreiboperation handelt. In einer weiteren Ausführungsform erkennt die sequenzielle Schreiberkennungslogik eine sequenzielle Schreiboperationen, indem sie feststellt, ob ein Host, der die Schreiboperationen eingeleitet hat, die Schreiboperation als eine sequenzielle Schreiboperation angegeben hat. In noch einer weiteren Ausführungsform, in der eine Schreiboperation ein Schreiben von Datenspuren in einen Cache umfasst, erkennt die sequenzielle Schreiberkennungslogik eine sequenzielle Schreiboperationen, indem sie zuvor geschriebene Spuren in dem Cache überprüft, um festzustellen, ob die Spuren der Schreiboperation aufeinanderfolgend sind. In noch einer weiteren Ausführungsform erkennt die sequenzielle Schreiberkennungslogik eine sequenzielle Schreiboperation, indem sie feststellt, wann die Schreiboperation in den Cache abgeschlossen ist, und in den Cache geschriebene Spuren überprüft, um festzustellen, ob die in den Cache geschriebenen Spuren aufeinanderfolgend sind.
  • In einem weiteren Aspekt der vorliegenden Beschreibung leitet eine Logik für ein sicheres Festschreiben von Daten (Safe-data-commit-Logik) eine Safe-Data-Commit-Durchsuchung des Cache ein, um Spuren von geänderten Daten zu kennzeichnen, die in den Speicher auszulagern sind, und umgeht ein Auslagen der Spuren von geänderten Daten im Cache der sequenziellen Schreiboperation. Die Tasksteuerblock-Erzeugungslogik erzeugt eine Tasksteuerblock-Datenstruktur zur Steuerung der Copy-source-to-target-Operation, so dass die auf einen Stride ausgerichtete Leseoperation der Copy-source-to-target-Operation Spuren des Zeitpunktkopie-Ziels enthält, die den umgangenen Spuren im Cache entsprechen.
  • Ein weiterer allgemeiner Aspekt einer Datenverarbeitungsumgebung, die eine Copy-source-to-target-Verwaltung gemäß der vorliegenden Beschreibung nutzt, betrifft eine präemptive Bedingungsüberwachungslogik, die feststellt, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, und eine Copy-source-to-target-Logik, die als Reaktion auf eine Feststellung, dass Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind, präemptiv und selektiv eine Copy-source-to-target-Operation einleitet. In einer einzelnen Ausführungsform umfasst die Copy-source-to-target-Operation das Lesen der Zeitpunktkopie-Quelle, um Lesedaten zu erhalten, die den nicht geänderten Satz von Daten enthalten, und das Schreiben des nicht geänderten Satzes von Daten an das Zeitpunktkopie-Ziel. Eine Safe-data-commit-Logik leitet eine Durchsuchung eines Cache ein, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind.
  • In einer einzelnen Ausführungsform stellt eine präemptive Bedingungsüberwachungslogik ein Zeitintervall vor dem Einleiten einer Safe-data-commit-Durchsuchung des Cache fest, ob Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind. In einer weiteren Ausführungsform stellt eine präemptive Bedingungsüberwachungslogik in Abhängigkeit davon, ob eine Zeitpunktkopie-Beziehung von der Zeitpunktkopie-Quelle zu dem Zeitpunktkopie-Ziel persistent ist oder der Zeitpunkt der Kopierbeziehung erhöht wurde, fest, ob Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind. In einer einzelnen Ausführungsform stellt eine präemptive Bedingungsüberwachungslogik fest, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Zeitpunktkopie-Beziehung von der Zeitpunktkopie-Quelle zu dem Zeitpunktkopie-Ziel persistent ist.
  • In noch einer weiteren Ausführungsform, in der das Schreiben eines geänderten Satzes von Daten in einen Cache das Schreiben von geänderten Daten in Spuren umfasst, stellt eine präemptive Bedingungsüberwachungslogik in Abhängigkeit davon, ob die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, einen Schwellenwert überschreitet, fest, ob Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind. In einer einzelnen Ausführungsform stellt die präemptive Bedingungsüberwachungslogik fest, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, den Schwellenwert überschreitet.
  • Noch eine weitere Ausführungsform betrifft eine präemptive Durchsuchungslogik, die als Reaktion auf eine Feststellung, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, eine Durchsuchung von Spuren von geänderten Daten im Cache einleitet, um Spuren von geänderten Daten zu kennzeichnen, die a) einer Zeitpunktkopie-Quelle entsprechen und b) noch nicht an ein entsprechendes Zeitpunktkopie-Ziel der Zeitpunkt-Quelle kopiert wurden. Die präemptive Durchsuchungslogik veranlasst die Copy-source-to-target-Logik selektiv und präemptiv, eine Copy-source-to-target-Operation für gekennzeichnete Spuren im Cache einzuleiten, die diese Bedingungen erfüllen.
  • Noch eine weitere Ausführungsform betrifft eine sequenzielle Schreiberkennungslogik, die erkennt, ob gekennzeichnete Spuren im Cache sequenziell sind. Die Copy-source-to-target-Logik leitet als Reaktion auf das Erkennen von gekennzeichneten sequenziellen Spuren präemptiv und selektiv eine auf einen Stride ausgerichtete Leseoperation an ein Zeitpunktkopie-Ziel der Zeitpunktkopie-Quelle. Die auf einen Stride ausgerichtete Leseoperation an ein Zeitpunktkopie-Ziel erzwingt eine umgeleitete Leseoperation an die Zeitpunktkopie-Quelle, um nicht geänderte Daten zu erhalten, die den gekennzeichneten sequenziellen Spuren von geänderten Daten im Cache entsprechen. Die Copy-source-to-target-Logik schreibt auf einen Stride ausgerichtete Spuren von sequenziellen Daten an das Zeitpunktkopie-Ziel, das die erhaltenen nicht geänderten Daten enthält, die den gekennzeichneten sequenziellen Spuren von geänderten Daten im Cache entsprechen. Noch eine weitere Ausführungsform betrifft eine präemptive Durchsuchungslogik, die das Durchsuchen von verbleibenden Spuren umgeht, welche der auf einen Stride ausgerichteten Leseoperation entsprechen.
  • Ein weiterer Aspekt der Copy-source-to-target-Verwaltung gemäß der vorliegenden Beschreibung betrifft die Nutzung in einem System, das über einen Host, der so konfiguriert ist, dass er Eingabe-/Ausgabe-Operationen einleitet, einen Speichercontroller mit einem Prozessor und einem Cache sowie über Speicher verfügt, der von dem Speichercontroller gesteuert wird, wobei der Speicher eine Zeitpunktkopie-Quelle und ein Zeitpunktkopie-Ziel enthält.
  • Zu Ausführungen der beschriebenen Techniken können Hardware, ein Verfahren oder ein Prozess oder Computer-Software auf einem Datenträger gehören, auf den ein Computer zugreifen kann. Weitere Merkmale und Aspekte können in Abhängigkeit von der jeweiligen Anwendung realisiert werden.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung, die eine Copy-source-to-target-Verwaltung in einem Datenspeichersystem gemäß einem Aspekt der vorliegenden Beschreibung nutzt.
    • 2 veranschaulicht ein Beispiel eines Datenspeichersystems, das eine Copy-source-to-target-Verwaltung in der Datenverarbeitungsumgebung von 1 nutzt.
    • Die 3A und 3b stellen zwei Beispiele von Copy-source-to-target-Operationen gemäß einem Aspekt der vorliegenden Beschreibung dar, die in einer Datenverarbeitungsumgebung verwendet werden können, welche eine Copy-source-to-target-Verwaltung in einem Datenspeichersystem nutzt.
    • 4 veranschaulicht ein Beispiel eines Hosts in der Datenverarbeitungsumgebung von 1.
    • 5 veranschaulicht ein Beispiel von sequenziellen Copy-source-to-target-Schreiboperationen gemäß einem Aspekt der vorliegenden Beschreibung.
    • 6 veranschaulicht ein Beispiel einer Zielauslagerungslogik in dem Speichersystem von 2.
    • 7 veranschaulicht ein Beispiel einer Tasksteuerblock-Datenstruktur zur Steuerung von Copy-source-to-target-Operationen gemäß einer einzelnen Ausführungsform der vorliegenden Beschreibung.
    • 8 veranschaulicht ein Beispiel von Safe-data-commit-Durchsuchungsoperationen gemäß einem Aspekt der vorliegenden Beschreibung.
    • 9 veranschaulicht ein Beispiel einer Feststellung von präemptiven Bedingungen für Copy-source-to-target-Operationen gemäß einem Aspekt der vorliegenden Beschreibung.
    • 10 stellt ein Beispiel einer präemptiven Copy-source-to-target-Durchsuchung gemäß einem Aspekt der vorliegenden Beschreibung dar.
    • 11 veranschaulicht eine Ausführungsform eines Computers, die eine Copy-source-to-target-Verwaltung in einem Datenspeichersystem gemäß der vorliegenden Beschreibung nutzt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ohne eine Copy-source-to-target-(CST-)Verwaltung gemäß der vorliegenden Beschreibung kann eine bekannte „Copy-on-Destage“-(„Kopieren-beim- Auslagern“-)Operation unter verschiedenen Bedingungen eine erhebliche Herabsetzung der Systemperformanz verursachen. Zum Beispiel kann, wie vorstehend erklärt wurde, eine bekannte Copy-on-Destage-Operation beträchtliche Systemressourcen in Anspruch nehmen. Genauer gesagt, die Copy-on-Destage-Operation speichert zuerst alte, nicht geänderte Daten von der Quelle der Zeitpunktkopie-Beziehung im Cache zwischen und lagert diese alten, nicht geänderten Daten dann aus dem Cache an das Ziel der Zeitpunktkopie-Beziehung aus. Die Auslagerung von neuen, geänderten Daten auf der Quelle darf dann die alten, nicht geänderten Daten auf der Quelle überschreiben. Es ist klar, dass solche Copy-on-Destage-Operationen Auslagerungsoperationen an die Quelle erheblich verlangsamen können. Daher kann die Systemperformanz herabgesetzt werden, wenn der Cache geänderte Daten für Spuren enthält, die zu Zeitpunktkopie-Beziehungen gehören.
  • Wie nachstehend ausführlicher erklärt wird, können in einem Aspekt einer Copy-source-to-target-(CST-)Verwaltung gemäß der vorliegenden Beschreibung Copy-source-to-target-Operationen präemptiv vor Quellen-Auslagerungsoperationen vorgenommen werden. Somit wurde das Kopieren von alten, nicht geänderten Daten von der Quelle an das Ziel bereits ausgeführt, wenn die Quellen-Auslagerungsoperationen eingeleitet werden. Folglich brauchen die Quellen-Auslagerungsoperationen nicht verzögert zu werden, indem man wartet, bis das Kopieren von alten, nicht geänderten Daten von der Quelle an das Ziel abgeschlossen ist.
  • In einem weiteren Aspekt der Copy-source-to-target-(CST-)Verwaltung gemäß der vorliegenden Beschreibung können präemptive Copy-source-to-target-Operationen selektiv vor Quellen-Auslagerungsoperationen vorgenommen werden. Zum Beispiel können solche präemptiven Copy-source-to-target-Operationen selektiv vorgenommen werden, wenn festgestellt wird, dass Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind, so dass präemptive Copy-source-to-target-Operationen benötigte Daten erhalten können, bevor sie durch Quellen-Auslagerungsoperationen überschrieben werden. Umgekehrt können solche präemptiven Copy-source-to-target-Operationen umgangen werden, wenn festgestellt wird, dass Bedingungen für präemptive Copy-source-to-target-Operationen nicht vorhanden sind, so dass präemptive Copy-source-to-target-Operationen nicht benötigt werden, um Daten zu erhalten, bevor sie durch Quellen-Auslagerungsoperationen überschrieben werden. Somit kann die Systemperformanz durch präemptive Copy-source-to-target-Operationen, wenn diese benötigt werden, verbessert werden, jedoch nicht herabgesetzt werden, wenn solche präemptiven Copy-source-to-target-Operationen nicht benötigt werden.
  • Wie zuvor erwähnt wurde, lesen bekannte „Copy On Destage“-Operationen für Auslagerungen von sequenziellen Schreibvorgängen an die Kopierquelle einen Stride von der Kopierquelle und lagern diese Spuren dann an das Kopierziel aus. Wenn die Quellen- und die Ziel-Strides ausgerichtet sind, wird Effizienz ermöglicht. Wenn die Quellen- und Ziel-Strides jedoch nicht ausgerichtet sind, sind Auslagerungen auf dem Ziel oftmals keine vollständigen Strides in bekannten Copy-on-Destage-Operationen, welche sich deutlich negativ auf die Performanz auswirken können. Um zum Beispiel neue Strides zu erzeugen, die an das Ziel geschrieben werden sollen, werden möglicherweise zusätzliche Daten von der Quelle oder dem Ziel benötigt, um die Strides für das Ziel zu vervollständigen.
  • In einem weiteren Aspekt der vorliegenden Beschreibung ist Logik so konfiguriert, dass sie sequenzielle Schreibvorgänge, zu denen Schreibvorgänge von großen Blöcken gehören, die an Zeitpunktkopie-Quellen geleitet werden, erkennt und als Reaktion darauf Auslagerungstasks auf den zugehörigen Zeitpunktkopie-Zielen startet. Wie nachstehend ausführlicher erklärt wird, gehören zu den Auslagerungstasks in einer einzelnen Ausführungsform auf einen Stride ausgerichtete Copy-source-to-target-Operationen, die nicht geänderte Daten von den Zeitpunktkopie-Quellen an die Zeitpunktkopie-Ziele kopieren, bevor die nicht geänderten Daten in den Zeitpunktkopie-Quellen in nachfolgenden Kopierquelle-Auslagerungsoperationen überschrieben werden. Somit, wenn die sequenziellen Schreibdaten der sequenziellen Schreiboperationen an die Zeitpunktkopie-Quellen ausgelagert werden, brauchen solche Quellen-Auslagerungen nicht auf Copy-source-to-target-Operationen zu warten, da sie bereits durchgeführt worden sind. Ferner sind die Copy-source-to-target-Operationen in Bezug auf die Stride-Begrenzungen der Zeitpunktkopie-Ziele auf einen Stride ausgerichtet. Somit sind sowohl die sequenziellen Schreiboperationen an die Zeitpunktkopie-Quellen in Quellen-Auslagerungsoperationen als auch die sequenziellen Schreiboperationen an die Zeitpunktkopie-Ziele in Ziel-Auslagerungsoperationen in Bezug auf die jeweiligen Stride-Begrenzungen der Quellen- und Ziel-Datenträger auf einen Stride ausgerichtet. Daher kann eine Herabsetzung einer sequenziellen E/A-Performanz verringert oder ausgeschlossen werden, wenn Zeitpunktkopien in dem Speichercontroller vorhanden sind. Weitere Aspekte und Vorteile können in Abhängigkeit von der jeweiligen Anwendung realisiert werden.
  • Ein System aus einem oder mehreren Computern kann für eine Copy-source-to-target-Verwaltung in einem Datenspeichersystem gemäß der vorliegenden Beschreibung aufgrund dessen konfiguriert sein, dass Software, Firmware, Hardware oder eine Kombination daraus auf dem System installiert ist, die im Betrieb das System veranlasst bzw. veranlassen, Copy-source-to-target-Operationen gemäß der vorliegenden Beschreibung durchzuführen. Zum Beispiel können ein oder mehrere Computerprogramme so konfiguriert sein, dass sie eine Copy-source-to-target-Verwaltung in einem Datenspeichersystem aufgrund dessen durchführen, dass sie Anweisungen enthalten, die, wenn sie von einer Datenverarbeitungsvorrichtung ausgeführt werden, die Vorrichtung veranlassen, die Aktionen durchzuführen.
  • Die hierin beschriebenen Operationen werden von Logik durchgeführt, die so konfiguriert ist, dass sie die Operationen entweder automatisch oder im Wesentlichen automatisch mit geringem oder keinem Eingriff des Systembedieners durchführt, sofern nicht angegeben ist, dass sie manuell durchgeführt werden. Somit umfasst der Begriff „automatisch“ in der Verwendung hierin sowohl „vollautomatisch“, das heißt, Operationen, die durch eine oder mehrere hardware- oder softwaregesteuerte Maschinen ohne Bedienereingriff durchgeführt werden, wie beispielsweise Benutzereingaben in eine grafische Benutzerauswahloberfläche. In der Verwendung hierin umfasst der Begriff „automatisch“ des Weiteren „überwiegend automatisch“, das heißt, die meisten Operationen (wie zum Beispiel mehr als 50 %) werden durch eine oder mehrere hardware- oder softwaregesteuerte Maschinen ohne Bedienereingriff durchgeführt, wie beispielsweise Benutzereingaben in eine grafische Benutzerauswahloberfläche, und die verbleibenden Operationen (weniger als 50 %, zum Beispiel) werden manuell durchgeführt, das heißt, die manuellen Operationen werden durch eine oder mehrere hardware- oder softwaregesteuerte Maschinen mit Bedienereingriff durchgeführt, wie beispielsweise Benutzereingaben in eine grafische Benutzerauswahloberfläche, um die Performanz der Operationen zu steuern.
  • Viele der in dieser Spezifikation beschriebenen Funktionselemente wurden als „Logik“ bezeichnet, um ihre Unabhängigkeit hinsichtlich der Ausführung stärker hervorzuheben. Zum Beispiel kann ein Logikelement als eine Hardwareschaltung ausgeführt sein, die kundenspezifische VLSI-Schaltkreise oder Gatter-Anordnungen, gebrauchsfertige Halbleiter wie zum Beispiel Logikchips, Transistoren oder andere diskrete Bauelemente aufweist. Ein Logikelement kann auch in programmierbaren Hardware-Einheiten wie zum Beispiel im Feld programmierbaren Gatter-Anordnungen, programmierbaren Logikbausteinen (programmable array logic), programmierbaren Logikeinheiten oder dergleichen ausgeführt sein.
  • Ein Logikelement kann auch in Software zur Ausführung durch verschiedene Arten von Prozessoren ausgeführt sein. Ein Logikelement, das ausführbaren Code enthält, kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computeranweisungen aufweisen, die zum Beispiel als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können. Trotzdem brauchen sich die ausführbaren Dateien eines gekennzeichneten Logikelements nicht physisch zusammen an einem Ort zu befinden, sondern können unterschiedliche, an verschiedenen Speicherorten gespeicherte Anweisungen aufweisen, die, wenn sie logisch verknüpft werden, das Logikelement bilden und den angegebenen Zweck für das Logikelement erfüllen.
  • Tatsächlich kann es sich bei ausführbarem Code für ein Logikelement um eine einzelne Anweisung oder um viele Anweisungen handeln und er kann sogar über mehrere unterschiedliche Codesegmente, zwischen verschiedenen Programmen, zwischen verschiedenen Prozessoren und über mehrere Hauptspeichereinheiten hinweg verteilt sein. Ebenso können Betriebsdaten hierin innerhalb von Logikelementen gekennzeichnet und veranschaulicht werden und in jeder beliebigen geeigneten Form realisiert und innerhalb einer jeden beliebigen geeigneten Art von Datenstruktur organisiert sein. Die Betriebsdaten können als ein einzelner Datensatz erfasst oder über verschiedene Speicherorte, unter anderem zum Beispiel über verschiedene Speichereinheiten, verteilt sein.
  • Zu Ausführungen der beschriebenen Techniken können Hardware, ein Verfahren oder ein Prozess oder Computer-Software auf einem Datenträger gehören, auf den ein Computer zugreifen kann. Die 1, 2 veranschaulichen eine Ausführungsform einer Datenverarbeitungsumgebung, die eine Copy-source-to-target-Verwaltung in einem Datenspeichersystem gemäß der vorliegenden Beschreibung nutzt. Eine Mehrzahl von Hosts 1a, 1b ... 1n kann Eingabe-/Ausgabe-(E/A-)Anforderungen über ein Netz 6 an ein(e) oder mehrere Datenspeichereinheiten oder -systeme 2a, 2b, 2 (2) für das Lesen oder Schreiben von Daten übergeben. Die Hosts 1a, 1b ... 1n können getrennte physische Einheiten oder virtuelle Einheiten sein, die zum Beispiel unter Verwendung von zugewiesenen Ressourcen von Partitionen eines Servers ausgeführt sind. Auf ähnliche Weise können das Datenspeichersystem bzw. die Datenspeichersysteme 2 (2) 2a, 2b getrennte physische Einheiten oder virtuelle Einheiten sein, die zum Beispiel unter Verwendung von zugewiesenen Ressourcen von Partitionen von einem oder mehreren Servern ausgeführt sind.
  • In der veranschaulichten Ausführungsform ist das Datenspeichersystem 2a ein primäres Datenspeichersystem und das Datenspeichersystem 2b ist ein sekundäres Datenspeichersystem, wobei auf dem primären Datenspeichersystem 2a durch einen Host gespeicherte Daten auf das sekundäre Datenspeichersystem 2b gespiegelt werden. Obgleich die in 1 dargestellte Ausführungsform ein einzelnes sekundäres Datenspeichersystem 2b zeigt, ist klar, dass ein primäres Datenspeichersystem 2a über mehr als ein sekundäres Datenspeichersystem verfügen kann.
  • Jedes Datenspeichersystem 2 (2) 2a, 2b enthält einen Speichercontroller oder eine Speichersteuereinheit 4 (2) 4a bzw. 4b, die auf Daten zugreift, welche in einer Mehrzahl von Datenspeichereinheiten des Speichers 10, 10a bzw. 10b gespeichert sind. Jede Datenspeichereinheit des Speichers 10, 10a, 10b kann eine beliebige geeignete Einheit aufweisen, die Daten speichern kann, wie beispielsweise physische Festplatten, Solid-State-Laufwerke usw., welche in der Technik bekannt sind. Somit kann der Speicher 10, 10a, 10b in einer einzelnen Ausführungsform aus einem oder mehreren Speichereinheiten mit sequenziellem Zugriff bestehen, wie beispielsweise Festplattenlaufwerken und Magnetband, oder zu ihm können Speichereinheiten mit nicht sequenziellem Zugriff, wie zum Beispiel Solid-State-Laufwerke (SSD, solid state drives), gehören. Jede Einheit des Speichers 10 ( 2), 10a, 10b, kann eine einzelne Einheit mit sequenziellem oder nicht sequenziellem Zugriff zur Datenspeicherung aufweisen oder sie kann eine Anordnung von Einheiten zur Datenspeicherung, wie beispielsweise ein Plattenbündel (JBOD, Just a Bunch of Disks), eine Speichereinheit mit direktem Zugriff (DASD, Direct Access Storage Device), eine redundante Anordnung unabhängiger Festplatten (RAID, Redundant Array of Independent Disks), eine Virtualisierungseinheit, Bandspeicher, Flashspeicher usw. aufweisen.
  • In bestimmten Ausführungsformen können Speichereinheiten zum Beispiel Platten sein, die als Redundant-Array-of-Independent-Disk-(RAID)-Speicherbänke 11a ( 2), ... 11n konfiguriert sind, bei denen eine oder mehrere RAID-Speicherbänke eine Anordnung von Festplatten in einer RAID-Konfiguration sind, um die Datenwiederherstellung im Falle eines Ausfalls einer Festplatte zu vereinfachen. Die Speichereinheiten des Speichers 10, 10a, 10b können auch andere Arten von Speicher sein, wie beispielsweise Solid-State-Laufwerke in einer RAID-Konfiguration, um die Datenwiederherstellung im Falle eines Ausfalls eines Solid-State-Laufwerks zu vereinfachen. Die Speichereinheiten des Speichers 10 (2), 10a, 10b können so konfiguriert sein, dass sie Daten in Untereinheiten des Datenspeichers, wie beispielsweise Datenträgern, Speicherbereichen, Strides, Spuren usw., speichern.
  • Jeder Speichercontroller 4 (2), 4a, 4b enthält einen CPU-Komplex 12 (2), der Prozessorressourcen enthält, die von einem oder mehreren Prozessoren oder zentralen Verarbeitungseinheiten bereitgestellt werden, von denen jeder bzw. jede über einen einzigen oder mehrere Prozessorkerne verfügt. In dieser Ausführungsform enthält ein Prozessorkern die Komponenten einer an der Ausführung von Anweisungen beteiligten CPU, wie zum Beispiel eine arithmetisch-logische Einheit (ALU, arithmetic logic unit), eine Gleitkommaeinheit (FPU, floating point unit) und/oder verschiedene Stufen eines Cache (wie beispielsweise eines L1- und L2-Caches). Es ist klar, dass ein Prozessorkern zusätzlich zu oder anstelle der hierin erwähnten weitere Logikelemente haben kann.
  • Jeder Speichercontroller 4 (2), 4a, 4b hat des Weiteren einen Hauptspeicher 20, der einen Speichermanager 24 zur Verwaltung von Speicheroperationen enthält, zu denen das Schreiben von Daten auf einen oder das Lesen von Daten von einem zugehörigen Speicher 10 (2), 10a, 10b als Reaktion auf eine E/A-Datenanforderung von einem Host oder gespiegelte Daten von einem anderen Datenspeichersystem gehören. Ein Cache 28 des Hauptspeichers 20 kann eine oder mehrere von verschiedenen Arten von Hauptspeicher aufweisen, wie beispielsweise RAMs, Schreibcaches, Lesecaches, NVS usw. Die verschiedenen Arten von Hauptspeicher, die den Cache aufweisen, können zusammenarbeiten. Der CPU-Komplex 12 eines jeden Speichercontrollers 4 (2), 4a, 4b kann mehrere Cluster von Prozessoren haben, wobei jedes Cluster über seinen eigenen zugewiesenen Hauptspeicher 20, Speichermanager 24, Cache 28 usw. verfügt. Die Verarbeitung und die einem jeden Cluster zugewiesenen Hauptspeicherressourcen können in Abhängigkeit von der jeweiligen Anwendung physisch, virtuell, gemeinsam genutzt, übertragbar oder fest zugeordnet sein.
  • Schreibvorgänge von den Hosts 1a ... 1n können zunächst in einen Cache 28 des primären Speichercontrollers 4a geschrieben und später dann in den Speicher 10a des primären Speichersystems 2a ausgelagert werden. Leseanforderungen von den Hosts 1a ... 1n können aus einem Cache 28 des primären Speichercontrollers 4a erfüllt werden, wenn die entsprechenden Informationen in diesem Cache 28 zur Verfügung stehen, andernfalls werden die Informationen aus dem Speicher 10a in dem Cache 28 zwischengespeichert und dann dem anfordernden Host 1a ... 1n zur Verfügung gestellt.
  • Schreibvorgänge von den Hosts 1a ... 1n, die zunächst in den Cache 28 und den Speicher 10a des primären Speichercontrollers 4a geschrieben werden, können durch einen Speichermanager 24 des primären Speichercontrollers 4a an den sekundären Speichercontroller 4b gespiegelt werden. Gespiegelte Daten können anfangs in einen Cache 28 des sekundären Speichercontrollers 4b geschrieben und dann später an den Speicher 10b ausgelagert werden, der von dem sekundären Speichercontroller 4b des sekundären Speichersystems 2b gesteuert wird.
  • Der Hauptspeicher 20 des Speichercontrollers 4 (2), 4a, 4b enthält ein Cacheverzeichnis 30, das Spuren kennzeichnet, die über in dem Cache 28 gespeicherte Daten als Folge einer Vorauslese- oder Zwischenspeicherungsoperation, welche die Daten einer in dem Speicher 10 (2), 10a, 10b gespeicherten Spur an den Cache 28 überträgt, oder als Folge einer Host-Schreiboperation, die Daten in den Cache 28 für eine nachfolgende Auslagerung an die entsprechende Spur oder die entsprechenden Spuren des Speichers 10 (2), 10a, 10b in den Cache 28 schreibt, verfügen. In der veranschaulichten Ausführungsform ist das Cacheverzeichnis 30 in Form einer bekannten Datenstruktur ausgeführt, bei der es sich um eine Hash-Tabelle aller Spuren im Cache 28 handelt. Jede Spur wird in einen Bereich des Cacheverzeichnisses 30 gehasht, der eine Spurkennung (ID) und eine Angabe enthält, ob die Daten der Spur „unsauber“ sind, d.h. noch nicht sicher auf die entsprechende Spur des Speichers 10 (2), 10a, 10b ausgelagert wurden. Mehrere in einen Bereich gehashte Spuren werden miteinander verknüpft. Es ist klar, dass ein geeignetes Cacheverzeichnis unter Verwendung von anderen Arten von Datenstrukturen ausgeführt sein kann.
  • Operationen, darunter E/A-Operationen des Speichermanagers 24, zu denen zum Beispiel Cache-Schreib-, -Zwischenspeicherungs-, -Vorauslese- und - Auslagerungsoperationen gehören, verwenden Tasksteuerblöcke (TCBs) 32 des Hauptspeichers 20. Jeder TCB ist eine Datenstruktur im Betriebssystemkern, die die zur Verwaltung eines bestimmten Prozesses benötigten Informationen enthält. Speichercontroller können Informationen in den und aus dem Speicher und in den und aus dem Cache übertragen, indem sie TCBs verwenden, um die Übertragung von Daten zu verwalten. Wenn eine Schreibanforderung von einem Host an einen Speichercontroller ausgegeben wird oder Daten von dem primären Datenspeichersystem an ein sekundäres Datenspeichersystem gespiegelt werden, kann ein TCB von dem Betriebssystemcode zugeordnet werden. Der TCB wird verwendet, um Informationen über den Schreibprozess vom Anfang bis zum Ende zu verwalten, während zu schreibende Daten von der Quelle durch den Cache an den Speicher weitergereicht werden. Wenn der Cache voll ist, kann der TCB in eine Warteschlange gestellt werden, bis vorhandene Daten in dem Cache ausgelagert (d.h. in den Speicher geschrieben) werden können, um Platz zu schaffen.
  • In einem Aspekt der vorliegenden Beschreibung enthält der Speichermanager 24 eine Zielauslagerungslogik 33, die so konfiguriert ist, dass sie sequenzielle Schreibvorgänge, zu denen Schreibvorgänge von großen Blöcken gehören, an Zeitpunktkopie-Quellendatenträger erkennt und als Reaktion darauf Auslagerungstasks auf den zugehörigen Zeitpunktkopie-Zielen startet. Wie nachstehend ausführlicher erklärt wird, gehören zu den Auslagerungstasks in einer einzelnen Ausführungsform auf einen Stride ausgerichtete Copy-source-to-target-Operationen, die nicht geänderte Daten von den Zeitpunktkopie-Quellen an die Zeitpunktkopie-Ziele kopieren, bevor die nicht geänderten Daten in den Zeitpunktkopie-Quellen in nachfolgenden Kopierquelle-Auslagerungsoperationen überschrieben werden.
  • In einem weiteren Aspekt der vorliegenden Beschreibung ist die Zielauslagerungslogik 33 des Weiteren so konfiguriert, dass sie selektiv und präemptiv Copy-source-to-target-Operationen durchführt, die von Bedingungen abhängen, welche angeben, ob solche Copy-source-to-target-Operationen angebracht sind oder durch andere Vorkommnisse überflüssig gemacht wurden. Zum Beispiel gehören zu diesen Bedingungen, bei denen Copy-source-to-target-Operationen angebracht bleiben, um nicht geänderte Daten von einer Zeitpunktkopie-Quelle an ein Zeitpunktkopie-Ziel zu kopieren, bevor solche nicht geänderten Daten aufgrund einer an die Zeitpunktkopie-Quelle geleiteten Schreiboperation überschrieben werden, Instanzen, bei denen eine Safe-data-commit-Durchsuchung eingeleitet wurde oder bevorsteht. Zu anderen Beispielen von Bedingungen für präemptive Copy-source-to-target-Operationen gehört das Vorhandensein im Cache von Spuren, die zu einer persistenten Zeitpunktkopie-Beziehung im Gegensatz zu einer Kopierbeziehung, die erhöht wurde, gehören, so dass vorherige nicht kopierte Daten vor dem Überschreiben in einer Auslagerungsoperation an die Zeitpunktkopie-Quelle der Beziehung nicht mehr erhalten werden müssen.
  • Zu einem weiteren Beispiel, bei dem Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sein können, gehören Instanzen, bei denen die Anzahl der Spuren von geänderten Daten im Cache, die zu einer Zeitpunktkopie-Beziehung gehören, einen Schwellenwert überschreitet, der gesetzt wurde. Wenn eine oder mehrere dieser oder anderer Bedingungen erfüllt sind, können präemptive Copy-source-to-target-Operationen besonders nützlich sein, um die Systemperformanz zu verbessern, indem nicht geänderte Daten präemptiv erhalten werden, indem sie von der Zeitpunktkopie-Quelle an das Zeitpunktkopie-Ziel kopiert werden, bevor die Daten in Auslagerungsoperationen an die Kopierquellen überschrieben werden. Daher brauchen die nachfolgenden Quellen-Auslagerungsoperationen nicht auf eine Copy-source-to-target-Operation zu warten, um nicht geänderte Daten zu erhalten, bevor sie durch die Quellen-Auslagerung überschrieben werden, da der Erhalt der nicht geänderten Daten bereits präemptiv abgeschlossen wurde. Umgekehrt, wenn festgestellt wird, dass Bedingungen für präemptive Copy-source-to-target-Operationen nicht vorhanden sind, können präemptive Copy-source-to-target-Operationen umgangen werden.
  • Der Speichermanager 24 enthält des Weiteren eine Datenreplikationslogik 35 (2), die so konfiguriert ist, dass sie Zeitpunktkopien gemäß einer Zeitpunktkopie-Beziehung 37 zwischen einer Zeitpunktkopie-Quelle und einem Zeitpunktkopie-Ziel erzeugt. 3A zeigt ein Beispiel einer Zeitpunktkopie-Beziehung, die zwischen einem Satz von Quellenspuren einer Zeitpunktkopie-Quelle wie beispielsweise der Quelle 50 des Speichers 10 (2) und einem entsprechenden Satz von Zielspuren eines Zeitpunktkopie-Ziels wie beispielsweise dem Ziel 54 hergestellt wird, das sich ebenfalls im Speicher 10 befinden kann, der durch einen Speichercontroller wie beispielsweise den Controller 4 (2) gesteuert wird. Spuren einer Zeitpunktkopie-Beziehung können zum Beispiel einen ganzen Datenträger oder eine logische Einheit (LUN, logical unit), Teile eines Datenträgers oder andere Einheiten oder Untereinheiten von Speicher aufweisen.
  • Bei einer typischen Zeitpunktkopie-Beziehung werden die Daten gewöhnlich nicht von der Quelle 50 an das Ziel 54 kopiert, wenn die Beziehung hergestellt ist. Stattdessen können Daten von der Quelle 50 an das Ziel 54 unter Verwendung eines Hintergrundkopierprozesses oder in Verbindung mit einer Auslagerung auf der Quelle 50 von Daten, die in den Cache geschrieben werden, nachdem die Zeitpunktkopie-Beziehung hergestellt wurde, kopiert werden. Eine bekannte Kopieroperation, die Daten von einer Quelle an ein Ziel einer Zeitpunktkopie-Beziehung in Verbindung mit einer auf der Quelle durchzuführenden Auslagerungsoperation kopiert, wird oftmals als „Kopieren beim Auslagern“ („Copy on Destage“) bezeichnet. Ohne eine Copy-source-to-target-Verwaltung gemäß der vorliegenden Beschreibung kann eine bekannte „Copy-on-Destage“-Operation unter verschiedenen Bedingungen eine erhebliche Herabsetzung der Systemperformanz verursachen. Wie nachstehend ausführlicher erklärt wird, nimmt die Zielauslagerungslogik 33 (2) in einem Aspekt der Copy-source-to-target-Verwaltung gemäß der vorliegenden Beschreibung selektiv und präemptiv Copy-source-to-target-Operationen vor Quellen-Auslagerungsoperationen vor. Somit wurde das Kopieren von alten, nicht geänderten Daten von der Quelle an das Ziel bereits ausgeführt, wenn die Quellen-Auslagerungsoperationen eingeleitet werden. Folglich brauchen die Quellen-Auslagerungsoperationen nicht verzögert zu werden, indem man wartet, bis das Kopieren von alten, nicht geänderten Daten von der Quelle an das Ziel abgeschlossen ist.
  • Ein weiteres Beispiel einer Copy-source-to-target-Verwaltung gemäß der vorliegenden Beschreibung betrifft sequenzielle Schreibvorgänge, die für eine Zeitpunktkopie-Quelle vorgesehen sind. Bekannte Copy-on-destage-Operationen, die in Verbindung mit sequenziellen Schreiboperationen durchgeführt werden, lesen üblicherweise einen Stride von Spuren von alten, nicht geänderten Daten von einer Quelle und lagern diese Spuren dann an das Ziel aus. Effizienz bei solchen Operationen wird ermöglicht, wenn die Quellen- und die Ziel-Strides ausgerichtet sind. Wenn die Quellen- und die Ziel-Strides jedoch nicht ausgerichtet sind, erfolgen Auslagerungen der alten, nicht geänderten Daten auf dem Ziel üblicherweise nicht in ganzen Strides, was sich negativ auf die Systemperformanz auswirkt. Es sei angemerkt, dass es in vielen Systemen schwierig sein kann, das System so zu konfigurieren, dass sowohl Quellen- als auch Ziel-Strides ausgerichtet sind. Somit kann die Systemperformanz herabgesetzt sein, wenn geänderte Daten auf Spuren im Cache geschrieben werden, wenn Zeitpunktkopie-Beziehungen ....
  • In einem Aspekt der vorliegenden Beschreibung erkennt die Zielauslagerungslogik 33 (2) sequenzielle Schreibvorgänge, zu denen Schreibvorgänge von großen Blöcken gehören, an Zeitpunktkopie-Quellendatenträger, und als Reaktion darauf startet sie Auslagerungstasks auf den zugehörigen Zeitpunktkopie-Zielen. Zu den Auslagerungstasks gehören in einer einzelnen Ausführungsform auf einen Stride ausgerichtete Copy-source-to-target-Operationen, die nicht geänderte Daten von den Zeitpunktkopie-Quellen an die Zeitpunktkopie-Ziele kopieren, bevor die nicht geänderten Daten in den Zeitpunktkopie-Quellen in nachfolgenden Kopierquelle-Auslagerungsoperationen überschrieben werden.
  • Die Datenreplikationslogik 35 (2) des Speichermanagers 24 ist des Weiteren so konfiguriert, dass sie synchron (oder asynchron in einigen Ausführungsformen) Kopien des primären Datenträgers1 (1) des primären Datenspeichersystems 2a als einen sekundären Datenträger2 (1) der sekundären Datenspeichersysteme, wie durch das sekundäre Datenspeichersystem 2b dargestellt, erzeugt. Ein primäres-sekundäres Paar von Datenträgern, Datenträger1, Datenträger2, befinden sich in einer Synchronkopie- oder Spiegelbeziehung 37, so dass Aktualisierungen des primären Datenträgers1 auf jeden sekundären Datenträger2 synchron gespiegelt werden. Ein solches Spiegeln kann in einigen Ausführungsformen auch asynchron durchgeführt werden.
  • In der in 1 veranschaulichten Konfiguration wurden der Speichercontroller 4a und das Datenspeicherlaufwerk 10a als eine primäre Speichersteuereinheit bzw. der Primärspeicher eines primären Datenspeichersystems 2a konfiguriert. Ebenso wurden der Speichercontroller 4b und sein Datenspeicherlaufwerk 10b als eine sekundäre Speichersteuereinheit bzw. ein Sekundärspeicher eines sekundären Datenspeichersystems 2b konfiguriert. Daher wird der Speichercontroller 4a in der in 1 dargestellten Konfiguration als primärer Speichercontroller oder primäre Steuereinheit 4a bezeichnet und das Datenspeicherlaufwerk 10a wird als primäres Speicherlaufwerk 10a bezeichnet. Ebenso wird der Speichercontroller oder die Steuereinheit 4b als sekundärer Speichercontroller oder sekundäre Steuereinheit 4b bezeichnet und das Datenspeicherlaufwerk 10b wird als sekundäres Datenspeicherlaufwerk 10b bezeichnet. In dieser Ausführungsform kann es mehrere sekundäre Datenspeicher geben, so dass eine Kopierbeziehung eine Eins-zu-viele-Beziehung haben kann, die auch als Mehrfachziel-Beziehung bezeichnet wird.
  • In einer bestimmten Kopierbeziehung wird die Quelleneinheit oftmals als die primäre bezeichnet und die Zieleinheit wird oftmals als die sekundäre bezeichnet. Replikationsbeziehungen werden zwischen Speichereinheiten des primären Datenspeicherlaufwerks 10a und der sekundären Datenspeicherlaufwerke 10b definiert. Ungeachtet eines Verweises auf das Datenspeicherlaufwerk 10a als „primär“ und den Datenspeicher 10b als „sekundär“ können bestimmte Speichereinheiten der Datenspeicher 10a, 10b in Abhängigkeit von der bestimmten Kopierbeziehung sowohl eine primäre Rolle (oder Quellenrolle) als auch eine sekundäre Rolle (oder Zielrolle) spielen.
  • In einer einzelnen Ausführungsform können die Speichereinheiten 10, 10a, 10b aus einer oder mehreren Speichereinheiten mit sequenziellem Zugriff bestehen, wie beispielsweise Festplattenlaufwerken und Magnetband, oder zu ihnen können Speichereinheiten mit nicht sequenziellem Zugriff, wie zum Beispiel Solid-State-Laufwerke, gehören. Jede Speichereinheit 10, 10a, 10b kann eine einzelne Speichereinheit mit sequenziellem oder nicht sequenziellem Zugriff aufweisen oder sie kann eine Anordnung von Speichereinheiten, wie beispielsweise ein Plattenbündel (JBOD, Just a Bunch of Disks), eine Speichereinheit mit direktem Zugriff (DASD, Direct Access Storage Device), eine redundante Anordnung unabhängiger Festplatten (RAID, Redundant Array of Independent Disks), eine Virtualisierungseinheit, Bandspeicher, Flashspeicher usw. aufweisen.
  • Der Speichermanager 24 enthält des Weiteren eine Safe-data-commit-Logik 60, die das Cacheverzeichnis 30 regelmäßig nach unsauberen Daten durchsucht, die in den Speicher 10 (2), 10a, 10b (1) ausgelagert werden sollen. Durch den Safe-data-commit-Prozess kann ein Bediener sicher sein, dass alles, was vor dem Startzeitpunkt der Safe-data-commit-Durchsuchung in den Cache 28 geschrieben wurde, erfolgreich ausgelagert und sicher auf dem Speicher 10 (2), 10a, 10b (1) gespeichert wurde.
  • In der veranschaulichten Ausführungsform ist der Speichermanager 24, der die Zielauslagerungslogik 33 enthält, als Software dargestellt, die im Hauptspeicher 20 gespeichert und von dem CPU-Komplex 12 ausgeführt wird. Es ist jedoch klar, dass die Logikfunktionen des Speichermanagers 24 in Abhängigkeit von der jeweiligen Anwendung als Hardware, Software, Firmware oder Kombinationen aus einem oder mehreren daraus ausgeführt sein können.
  • Der Speichermanager 24 (2) kann in einer einzelnen Ausführungsform Daten in dem Cache 28 speichern und Daten zwischen dem Cache 28 und dem Speicher 10 (2), 10a, 10b (1) in Spuren übertragen. Beim Schreiben einer Spur in den Cache ordnet ein TCB ein oder mehrere Segmente von Cachespeicher zu, um die Spur zu schreiben. Ebenso kann der Speichermanager 24 (2) in einer einzelnen Ausführungsform Daten von dem primären Speicherlaufwerk 10a (FIG. a). an ein sekundäres Speicherlaufwerk 10b in Spuren übertragen. In der Verwendung hierin kann sich der Begriff „Spur“ auf eine Untereinheit von Daten oder Speicher einer Plattenspeichereinheit, einer Solid-State-Speichereinheit oder anderer Arten von Speichereinheiten beziehen. Zusätzlich zu Spuren können Speichereinheiten über andere Untereinheiten von Speicher oder Daten wie beispielsweise ein(e/n) Bit, Byte, Wort, Segment, Seite, Block (wie beispielsweise eine logische Blockadresse (LBA, Logical Block Address), Zylinder, Segment, Speicherbereich, Datenträger, Stride, logische Einheit usw. oder einen beliebigen Teil davon oder andere für die Übertragung oder Speicherung geeignete Untereinheiten verfügen. Folglich kann die Größe von Untereinheiten von Daten, die in Cache-Schreib- und Safe-data-commit-Prozessen gemäß der vorliegenden Beschreibung verarbeitet werden, in Abhängigkeit von der jeweiligen Anwendung unterschiedlich sein. Somit bezieht sich der Begriff „Spur“ in der Verwendung hierin auf eine beliebige geeignete Untereinheit einer Datenspeicherung oder -übertragung.
  • Die Systemkomponenten 1a (1), 1b ... 1n, 4 (2), 6 sind mit einem Netzwerk 6 verbunden, das einen Datenaustausch unter diesen Komponenten ermöglicht. Somit enthält das Netz ein Fabric, das ein Speicherbereichsnetz (SAN, Storage Area Network), ein lokales Netz (LAN, Local Area Network), ein Intranet, das Internet, ein Weitverkehrsnetz (WAN, Wide Area Network), ein Peer-zu-Peer-Netz, ein drahtloses Netz, ein Arbitrated-Loop-Netz usw. aufweisen kann. Übertragungswege von den Speichersubsystemen zu den Hosts 1a, 1b ... 1n können zum Beispiel auf einem bestimmten Hostanschlussprotokoll wie etwa Fibre Connection (FICON) beruhen. Andere Übertragungswege des Fabric können zum Beispiel eine Fibre Channel Arbitrated Loop-Konfiguration, eine Serial-Loop-Architektur oder eine Busschnittstelle wie beispielsweise eine Peripheral Component Interconnect-(PCI-)Schnittstelle, wie etwa eine PCI Express-Schnittstelle, aufweisen. Die Übertragungswege des Fabric können zum Beispiel auch Teil eines Ethernet-Netzwerks sein, so dass jeder Knoten eine individuelle Netzwerk-(Internet-Protokoll-)Adresse hat. Andere Arten von Übertragungswegen können in Abhängigkeit von der jeweiligen Anwendung verwendet werden, wie beispielsweise ein Modemtelefonpfad, ein drahtloses Netz usw.
  • Zu den Übertragungswegen gehörende Übertragungssoftware enthält Anweisungen und andere Software, die Übertragungsprotokolle und den Betrieb der Übertragungshardware gemäß den Übertragungsprotokollen, sofern vorhanden, steuert. Es ist klar, dass in Abhängigkeit von der jeweiligen Anwendung andere Übertragungswegprotokolle verwendet werden können.
  • Ein typischer Host, wie er durch den Host 1a von 4 dargestellt ist, enthält einen CPU-Komplex 202 und einen Hauptspeicher 204, der über ein Betriebssystem 206 und eine Anwendung 208 verfügt, die zusammenarbeiten, um Daten über einen Speichercontroller 4, 4a, 4b aus dem Speicher 10 (2), 10a, 10b zu lesen und Datenaktualisierungen in den Speicher 10, 10a, 10b zu schreiben. Ein Beispiel eines geeigneten Betriebssystems ist das z/OS-Betriebssystem. Es ist klar, dass in Abhängigkeit von der jeweiligen Anwendung andere Arten von Betriebssystemen genutzt werden können.
  • 5 stellt ein Beispiel von Operationen einer Copy-source-to-target-Logik 214 (6) der Zielauslagerungslogik 33 in Verbindung mit einer sequenziellen Schreiboperation dar, um sequenzielle Daten in eine Zeitpunktkopie-Quelle zu schreiben. In dieser Ausführungsform ist die Copy-source-to-target-Logik 214 so konfiguriert, dass sie eine Copy-source-to-target-Operation durchführt, bei der ursprüngliche, nicht geänderte sequenzielle Daten von der Zeitpunktkopie-Quelle 50 (3B) gelesen werden, bevor die ursprünglichen, nicht geänderten Daten der Quelle 50 durch eine nachfolgende Quellen-Auslagerungsoperation überschrieben werden, die die sequenziellen Schreibdaten der Schreiboperation aus dem Cache 28 (2) in die Zeitpunktkopie-Quelle 50 (3B) auslagert. Die von der Zeitpunktkopie-Quelle 50 gelesenen ursprünglichen, nicht geänderten Daten werden an das Zeitpunktkopie-Ziel 54 ausgelagert, das an Strides des Ziels 54 ausgerichtet ist. Eine nachfolgende Quellen-Auslagerungsoperation lagert die sequenziellen Schreibdaten der Schreiboperation aus dem Cache 28 (2) an die Zeitpunktkopie-Quelle 50 aus, die wieder an den Strides der Quelle 50 ausgerichtet ist. Die Copy-source-to-target-Operation wird in dieser Ausführungsform von einer Tasksteuerblock-Datenstruktur gesteuert, wofür ein Beispiel der Copy-source-to-target-TCB 218 von 7 ist.
  • Wie nachstehend ausführlicher erklärt wird, gibt es in dieser Ausführungsform verschiedene Bedingungen, bei denen eine auf einen Stride ausgerichtete Copy-source-to-target-Operation, wie beispielsweise die in 3B dargestellte, anwendbar sein kann. Zu diesen Bedingungen gehören das Erkennen einer Schreiboperation und das Feststellen, ob die Schreiboperation eine sequenzielle Schreiboperation ist, um schließlich auf sequenzielle Spuren der Zeitpunktkopie-Quelle zu schreiben.
  • In der veranschaulichten Ausführungsform ist die Copy-source-to-target-Logik 214 so konfiguriert, dass sie eine Schreiboperation in den Cache 28 (2) erkennt (Block 224, 5). Bei einer erkannten Schreiboperation ist die Copy-source-to-target-Logik 214 des Weiteren so konfiguriert, dass sie feststellt (Block 230, 5), ob die erkannte Schreiboperation an eine Zeitpunktkopie-Quelle wie beispielsweise die Quelle 50 von 3B geleitet wird. Bei einer an eine Zeitpunktkopie-Quelle geleitete Schreiboperation enthält die Copy-source-to-target-Logik 214 des Weiteren eine sequenzielle Schreiberkennungslogik 234 (6), die so konfiguriert ist, dass sie erkennt (Block 240, 5), ob die erkannte Schreiboperation eine sequenzielle Schreiboperation ist.
  • Wenn festgestellt wird (Block 230, 5), dass die erkannte Schreiboperation nicht an eine Zeitpunktkopie-Quelle geleitet werden soll, oder wenn festgestellt wird (Block 240, 5), dass sie keine sequenzielle Schreiboperation ist, kann die erkannte Schreiboperation anschließend abgeschlossen werden (Block 244, 5), ohne eine auf einen Stride ausgerichtete Copy-source-to-target-Operation durchzuführen, die ähnlich der in 3B dargestellten ist. Zum Beispiel können die Schreibdaten der Schreiboperation in einen Cache geschrieben und anschließend in einen Speicher ausgelagert werden, ohne eine auf einen Stride ausgerichtete Copy-source-to-target-Operation durchzuführen, die ähnlich der in 3B dargestellten ist. Wie nachstehend in Verbindung mit den 9 und 10 und einem weiteren Aspekt der vorliegenden Beschreibung beschrieben ist, kann eine nicht sequenzielle Copy-source-to-target-Operation jedoch dennoch präemptiv durchgeführt werden, wenn verschiedene Bedingungen erfüllt sind.
  • Es ist klar, dass es eine Vielzahl von bekannten Techniken gibt, um festzustellen, ob eine Schreiboperation eine sequenzielle Schreiboperation einer Folge von Schreiboperationen ist, bei denen die Folge der Schreiboperationen Daten auf sequenzielle Spuren schreiben. Ferner können Techniken, um festzustellen, ob eine Schreiboperation eine sequenzielle Schreiboperation ist, gemäß der vorliegenden Beschreibung gegebenenfalls geändert werden.
  • In einer einzelnen Ausführungsform ist die sequenzielle Schreiberkennungslogik 234 (6) so konfiguriert, dass sie regelmäßig prüft, ob die Schreiboperation eine sequenzielle Schreiboperation ist. Zum Beispiel kann die sequenzielle Schreiberkennungslogik 234 (6) so konfiguriert sein, dass sie jede N-te Spur prüft, die geschrieben wird, und feststellt, ob die Schreiboperation eine sequenzielle Schreiboperation ist. Die N-te Spur kann zum Beispiel so ausgewählt werden, dass sie mit der letzten Spur des Stride der Zeitpunktkopie-Quelle übereinstimmt, an die die Schreiboperation schließlich geleitet wird.
  • Als ein weiteres Beispiel kann die sequenzielle Schreiberkennungslogik 234 ( 6) so konfiguriert sein, dass sie feststellt, ob ein Host wie zum Beispiel ein Host 1a (4), der die Schreiboperation eingeleitet hat, die Schreiboperation als eine sequenzielle Schreiboperation angegeben hat. Als ein weiteres Beispiel kann die sequenzielle Schreiberkennungslogik 234 (6) so konfiguriert sein, dass sie zuvor geschriebene Spuren in dem Cache prüft, um festzustellen, ob die Spuren der Schreiboperation sequenziell sind. Auf diese Weise können sequenzielle Schreiboperationen, die einen großen Block geänderter Daten in einen Cache schreiben, von der sequenziellen Schreiberkennungslogik 234 erkannt werden. In noch einem weiteren Beispiel kann die sequenzielle Schreiberkennungslogik 234 (6) so konfiguriert sein, dass sie feststellt, wann der Schreibvorgang in den Cache für eine Schreiboperation abgeschlossen ist, und geschriebene Spuren in dem Cache prüft, um festzustellen, ob die in den Cache geschriebenen Spuren aufeinanderfolgend sind.
  • Wenn festgestellt wird (Block 230, 5), dass die erkannte Schreiboperation an eine Zeitpunktkopie-Quelle geleitet werden soll, und wenn festgestellt wird (Block 240, 5), dass sie eine sequenzielle Schreiboperation ist, kann eine auf einen Stride ausgerichtete Copy-source-to-target-Operation durchgeführt werden, die ähnlich der in 3B dargestellten ist, bevor die erkannte Schreiboperation abgeschlossen wird (Block 244, 5). In der veranschaulichten Ausführungsform kann eine auf einen Stride ausgerichtete Copy-source-to-target-Operation von einer Tasksteuerblock-Datenstruktur wie zum Beispiel dem TCB 218 von 7 gesteuert werden. Folglich ist eine Tasksteuerblock-Erzeugungslogik 250 (6) der Copy-source-to-target-Logik 214 so konfiguriert, dass sie eine Tasksteuerblock-Datenstruktur zur Steuerung der auf einen Stride ausgerichteten Copy-source-to-target-Operation von 3B erzeugt. In der veranschaulichten Ausführungsform hat der Tasksteuerblock 218 eine Mehrzahl von Feldern 254, 258, die so konfiguriert sind, dass sie mindestens zwei Eingabewerte speichern, darunter einen Anfangsspur-Wert S (Feld 254) und einen Spurenanzahl-Wert N (Feld 258), um die Folge von Spuren einer auf einen Stride ausgerichteten Copy-source-to-target-Operation zu kennzeichnen.
  • Die Copy-source-to-target-Logik 214 (6) ist so konfiguriert, dass sie eine auf einen Stride ausgerichtete Copy-source-to-target-Operation (3B) unter Verwendung eines Tasksteuerblocks 218 (7) einleitet, wobei die auf einen Stride ausgerichtete Copy-source-to-target-Operation das Leiten (Block 260, 5) einer auf einen Stride ausgerichteten Leseoperation 264 (3B) an ein Zeitpunktkopie-Ziel 54 (3B) der Zeitpunktkopie-Quelle 50 (3B) umfasst. Somit ist die Leseoperation 264 an den Stride-Begrenzungen der Strides des Zeitpunktkopie-Ziels 54 ausgerichtet. Jedoch wurden die Daten der Leseoperation noch nicht an das Zeitpunktkopie-Ziel 54 kopiert. Folglich erzwingt die auf einen Stride ausgerichtete Leseoperation 264 an das Ziel 54 eine umgeleitete Leseoperation 268 (3B) an die Zeitpunktkopie-Quelle 50, um nicht geänderte Lesedaten, die den Satz von Daten enthalten, der durch den Anfangsspur-Wert S (Feld 254, 7) und den Spurenanzahl-Wert N (Feld 258, 7) gekennzeichnet ist, für eine Folge von Spuren von ursprünglichen, nicht geänderten Daten von der Zeitpunktkopie-Quelle 50 (3B) zu erhalten. Die Folge von Spuren der Quelle 50, die die nicht geänderten Daten enthalten, entsprechen den von der sequenziellen Schreiboperation in den Cache geschriebenen Spuren von geänderten Daten. Da die Leseoperation 264 mit den Strides des Zeitpunktkopie-Ziels 54 auf einen Stride ausgerichtet ist, enthalten die von der umgeleiteten Leseoperation 268 gelesenen Daten nicht nur die von dem TCB 218 (7) gekennzeichneten Lesedaten, der den Anfangsspur-Wert S (Feld 254, 7) und den Spurenanzahl-Wert N (Feld 258, 7) für eine Folge von Spuren von ursprünglichen, nicht geänderten Daten, die gelesen werden sollen, kennzeichnet, sondern sie können auch zusätzliche Spuren eines Stride vor oder nach den von dem TCB 218 gekennzeichneten Spuren enthalten, um sicherzustellen, dass die Spuren der umgeleiteten Leseoperation 268 mit den Spuren des Zeitpunktkopie-Ziels 54 jederzeit auf einen Stride ausgerichtet sein können, wenn die Lesedaten anschließend an das Ziel 54 ausgelagert werden.
  • Die gemäß der umgeleiteten Leseoperation 268 von der Quelle 50 gelesenen, nicht geänderten Daten werden, wie durch die Zwischenspeicherungsoperation 270 (3B) dargestellt, von der Copy-source-to-target-Logik 214 in dem Cache 28 zwischengespeichert. Die Copy-source-to-target-Logik 214 ist des Weiteren so konfiguriert, dass sie, wie durch die Auslagerungsoperation 280 (3B) dargestellt, die von der Quelle 50 gelesenen, nicht geänderten Daten aus dem Cache 28 an das Ziel 54 schreibt (Block 274, 5). Die von der Quelle 50 gelesenen und an das Ziel 54 ausgelagerten Daten sind in Bezug auf die Strides des Ziels 54 auf einen Stride ausgerichtet, da die umgeleitete Leseoperation 268 mit den Spuren des Zeitpunktkopie-Ziels 54 auf einen Stride ausgerichtet war.
  • In einigen Ausführungsformen kann die Zeitpunktkopie-Quelle eine Eins-zu-mehrere-Zeitpunktkopie-Beziehung mit mehreren Zeitpunktkopie-Zielen haben. Folglich kann die Copy-source-to-target-Logik 214 (6) in einer einzelnen Ausführungsform des Weiteren so konfiguriert sein, dass sie feststellt (Block 284, 5), ob die Quelle eine Eins-zu-mehrere-Zeitpunktkopie-Beziehung mit mehreren Zeitpunktkopie-Zielen hat. Wenn ja, kann die Copy-source-to-target-Logik 214 (6) des Weiteren so konfiguriert sein, dass sie feststellt (Block 288, 5), ob eine auf einen Stride ausgerichtete Copy-source-to-target-Operation für jedes Ziel der Eins-zu-mehrere-Zeitpunktkopie-Beziehung abgeschlossen wurde. Wenn nicht, kann die Copy-source-to-target-Logik 214 (6) des Weiteren so konfiguriert sein, dass sie eine auf einen Stride ausgerichtete Copy-source-to-target-Operation (Blöcke 260, 274) für ein jedes solches Ziel der Beziehung einleitet und wiederholt.
  • Auf diese Weise wird eine Folge von auf einen Stride ausgerichteten Copy-source-to-target-Operationen durchgeführt, zu denen eine Copy-source-to-target-Operation der Folge für jedes Zeitpunktkopie-Ziel der Kopierbeziehung gehört. Folglich kann eine Tasksteuerblock-Erzeugungslogik 250 (6) so konfiguriert sein, dass sie eine Folge von Tasksteuerblock-Datenstrukturen erzeugt, die ähnlich dem TCB 218 (7) sind, wobei jede Tasksteuerblock-Datenstruktur der Folge eine auf einen Stride ausgerichtete Copy-source-to-target-Operation der Folge von Copy-source-to-target-Operationen jeweils einzeln steuert.
  • Sobald festgestellt wird (Block 284, 5), dass die erkannte Schreiboperation nicht an eine Quelle in einer Kopierbeziehung mit mehreren Zielen geleitet wird, oder festgestellt wird (Block 288), dass Daten an alle Ziele der Eins-zu-mehrere-Kopierbeziehung kopiert wurden, kann die erkannte Schreiboperation nach dem Abschluss der auf einen Stride ausgerichteten Copy-source-to-target-Operation bzw. -Operationen für das Ziel oder die Ziele der Zeitpunktkopie-Beziehung abgeschlossen werden (Block 244, 5). Zum Beispiel können die Schreibdaten der Schreiboperation, die in einen Cache geschrieben wurden, nach dem Abschluss der auf einen Stride ausgerichteten Copy-source-to-target-Operation bzw. -Operationen in einer Weise, die ähnlich der in 3B dargestellten ist, anschließend an die Kopierquelle ausgelagert werden.
  • Wie nachstehend in Verbindung mit 8 ausführlicher erklärt wird, kann eine Feststellung getroffen werden, ob eine auf einen Stride ausgerichtete Copy-source-to-target-Operation, die ähnlich der in 3B dargestellten ist, durchgeführt werden soll, und zwar in Verbindung mit einer Safe-data-commit-Durchsuchung durch die Safe-data-commit-Logik 60 (2), bei der der Cache nach Spuren von geänderten Daten durchsucht wird, die in den Speicher ausgelagert werden sollen. Folglich ist die Safe-data-commit-Logik 60 (2) so konfiguriert, dass sie eine Safe-data-commit-Durchsuchung des Cache einleitet (Block 314, 8), um Spuren von geänderten Daten zu kennzeichnen, die in den Speicher auszulagern sind.
  • Gemäß einem Aspekt der vorliegenden Beschreibung kann eine Auslagerung der Spuren von geänderten Daten im Cache in Verbindung mit der Safe-data-commit-Durchsuchung für gekennzeichnete Spuren von sequenziellen Schreiboperationen umgangen werden, die für auf einen Stride ausgerichtete Copy-source-to-target-Operationen in Frage kommen, wie vorstehend in Verbindung mit 3B beschrieben wurde. Anstatt gemäß der Safe-data-commit-Durchsuchung eine sofortige Auslagerung vorzunehmen, kann somit ein Tasksteuerblock erzeugt werden, um eine auf einen Stride ausgerichtete Copy-source-to-target-Operation für eine solche sequenzielle Schreiboperation zu steuern. Nach dem Abschluss einer auf einen Stride ausgerichteten Copy-source-to-target-Operation können die geänderten Spuren im Cache für die sequenzielle Schreiboperation an die Zeitpunktkopie-Quelle in einer Weise ausgelagert werden, die ähnlich der vorstehend in Verbindung mit der Schreibabschlussoperation (Block 244) von 5 beschriebenen ist, um die Safe-data-commit-Operationen abzuschließen.
  • Unter Bezugnahme auf die 2 und 8 ist die Safe-data-commit-Logik 60 (2) so konfiguriert, dass sie eine Safe-data-commit-Durchsuchung des Cache einleitet (Block 314, 8), um Spuren von geänderten Daten zu kennzeichnen (Block 318), die in den Speicher auszulagern sind. Als Reaktion auf die Kennzeichnung (Block 318, 8) einer Spur von geänderten Daten im Cache ist die Copy-source-to-target-Logik 214 (6) so konfiguriert, dass sie feststellt (Block 322, 8), ob die gekennzeichnete geänderte Spur im Cache eine Zeitpunktkopie-Beziehung betrifft, so dass die Spur einer Spur einer Zeitpunktkopie-Quelle wie beispielsweise der Quelle 50 von 3B entspricht. Zum Beispiel wird eine geänderte Spur im Cache an eine Zeitpunktkopie-Quelle geleitet oder entspricht einer Zeitpunktkopie-Quelle, wenn die geänderte Spur bei ihrer Auslagerung in den Speicher an eine Zeitpunkt-Quelle ausgelagert wird. Bei einer geänderten Spur im Cache, die einer Zeitpunktkopie-Quelle entspricht, ist die sequenzielle Schreiberkennungslogik 234 (6) so konfiguriert, dass sie erkennt (Block 324, 5), ob die geänderte Spur in Verbindung mit einer sequenziellen Schreiboperation geschrieben wurde, so dass die geänderte Spur Teil einer Folge von sequenziellen geänderten Spuren im Cache ist. Es ist klar, dass eine solche Feststellung in Abhängigkeit von der jeweiligen Anwendung unter Verwendung einer Vielzahl von Techniken getroffen werden kann, wie vorstehend in Verbindung mit dem Block 240 von 5 erläutert wurde.
  • Wenn festgestellt wird (Block 322, 8), dass die gekennzeichnete geänderte Spur im Cache nicht einer Zeitpunktkopie-Quelle entspricht, oder wenn festgestellt wird (Block 334), dass die gekennzeichnete Spur nicht Teil einer Folge von sequenziellen geänderten Spuren ist, kann die geänderte Spur anschließend in den Speicher ausgelagert werden (Block 326), und es wird eine Feststellung (Block 330) getroffen, ob alle Spuren der Safe-data-commit-Durchsuchung durchsucht worden sind. Wenn ja, ist die Safe-data-commit-Durchsuchung abgeschlossen (Block 332). Umgekehrt, wenn festgestellt wird (Block 330), dass alle Spuren der Safe-data-commit-Durchsuchung nicht durchsucht worden sind, wird eine weitere geänderte Spur im Cache gekennzeichnet (Block 318, 8).
  • Wenn festgestellt wird (Block 322, 8), dass die gekennzeichnete geänderte Spur im Cache nicht einer Zeitpunktkopie-Quelle entspricht, und wenn festgestellt wird (Block 334), dass die gekennzeichnete Spur Teil einer Folge von in den Cache geschriebenen sequenziellen geänderten Spuren ist, ist die Tasksteuerblock-Erzeugungslogik 250 (6) so konfiguriert, dass sie eine Tasksteuerblock-Datenstruktur erzeugt (Block 338), die ähnlich dem TCB 218 (7) ist, um eine auf einen Stride ausgerichtete Copy-source-to-target-Operation für die Folge der geänderten Spuren zu steuern, die an die Zeitpunktkopie-Quelle geleitet werden. Nachdem sie den Tasksteuerblock für die auf einen Stride ausgerichtete Copy-source-to-target-Operation für die Folge der geänderten Spuren, die an die Zeitpunktkopie-Quelle geleitet werden, erzeugt hat, kann die Safe-data-commit-Logik 60 so konfiguriert sein, dass sie die Folge der geänderten Spuren, die an die Zeitpunktkopie-Quelle geleitet werden, überspringt (Block 342) oder umgeht, anstatt diese Spuren sofort in den Speicher auszulagern. Für die umgangenen Spuren der Safe-data-commit-Durchsuchung können die erzeugten, auf einen Stride ausgerichteten TCBs 218 zugeteilt werden, um auf einen Stride ausgerichtete Copy-source-to-target-Operationen in einer ähnlichen Weise wie der in 3B dargestellten und in Verbindung mit den Blöcken 260, 274, 284 und 288 von 5 beschriebenen Weise durchzuführen. Nach dem Abschluss von auf einen Stride ausgerichteten Copy-source-to-target-Operationen für die umgangenen (Block 342) sequenziellen Spuren können die sequenziellen Spuren an die Zeitpunkt-Quelle in einer Weise ausgelagert werden, die ähnlich der vorstehend in Verbindung mit dem Block 244 von 5 beschriebenen ist, um die sequenziellen Schreiboperationen und das sichere Festschreiben von Daten für diese Schreiboperationen abzuschließen.
  • Sobald festgestellt wird (Block 330), dass alle Spuren der Safe-data-commit-Durchsuchung durchsucht worden sind, ist die Safe-data-commit-Durchsuchung abgeschlossen (Block 332). Umgekehrt, wenn nicht alle geänderten Spuren der Safe-data-commit-Durchsuchungsoperation durchsucht worden sind, wird eine weitere geänderte Spur im Cache gekennzeichnet (Block 314), bis alle geänderten Spuren im Cache durchsucht worden sind. Eine Safe-data-commit-Durchsuchung im Cache kann in Abhängigkeit von der jeweiligen Anwendung in Bezug auf alle Spuren im Cache oder speicherbankweise oder in Bezug auf andere Unterteilungen des Cache durchgeführt werden.
  • 9 betrifft ein Beispiel von Operationen, um festzustellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen gemäß einem Aspekt der vorliegenden Beschreibung vorhanden sind. Wie zuvor erwähnt wurde, kann die Zielauslagerungslogik 33 (2) in einem Aspekt der vorliegenden Beschreibung so konfiguriert sein, dass sie selektiv und präemptiv Copy-source-to-target-Operationen in Abhängigkeit von Bedingungen durchführt, die angeben, ob solche Copy-source-to-target-Operationen angebracht bleiben oder durch andere Vorkommnisse überflüssig gemacht wurden.
  • In einer einzelnen Ausführungsform kann eine Copy-source-to-target-Operation von dem Zeitpunkt, zu dem eine für eine Zeitpunkt-Quelle vorgesehene Schreiboperation eingeleitet wird, bis zu einem Zeitpunkt, bevor die Spur der Schreiboperation an die Quelle ausgelagert wird, wodurch die entsprechenden nicht geänderten Daten der Quelle überschrieben werden, an einem beliebigen Punkt präemptiv durchgeführt werden. In einer weiteren Ausführungsform kann eine Copy-source-to-target-Operation präemptiv, aber selektiver durchgeführt werden, um die Systemperformanz weiter zu verbessern, indem die Copy-source-to-target-Operation vor einer Quellenauslagerung durchgeführt wird, so dass die Quellenauslagerung nicht durch die Copy-source-to-target-Operation verzögert wird. Umgekehrt, indem eine präemptive Copy-source-to-target-Operation bei Bedingungen nicht durchgeführt wird, die angeben, dass Copy-source-to-target-Operationen gegebenenfalls nicht angebracht sind, kann eine Herabsetzung der Systemperformanz durch nicht notwendige präemptive Operationen verringert oder ausgeschlossen werden.
  • Unter Bezugnahme auf die 2, 6 und 9 ist eine präemptive Bedingungsüberwachungslogik 410 (6) der Zielauslagerungslogik 33 so konfiguriert, dass sie feststellt, ob Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, was die Feststellung (Block 414, 9) einschließt, ob eine Safe-data-commit-Durchsuchung gleich eingeleitet wird. Eine Safe-data-commit-Durchsuchung durch die Safe-data-commit-Logik 60 (2) kennzeichnet Spuren von geänderten Daten im Cache zwecks Auslagerung der gekennzeichneten geänderten Spuren in den Speicher. Da alle geänderten Spuren im Cache in den Speicher ausgelagert werden, wodurch nicht geänderte Daten in den Zeitpunktkopie-Quellen im Speicher überschrieben werden, wird festgestellt (Block 418), dass eine Bedingung für präemptive Copy-source-to-target-Operationen vorhanden ist. In einer einzelnen Ausführungsform ist die präemptive Bedingungsüberwachungslogik 410 des Weiteren so konfiguriert, dass sie ein Zeitintervall (dargestellt durch den Wert „Delta X“) vor dem Einleiten einer Safe-data-commit-Durchsuchung des Cache feststellt, dass Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind.
  • Als Reaktion auf eine Feststellung (Block 418), dass eine Bedingung für präemptive Copy-source-to-target-Operationen vorhanden ist, kann eine präemptive Durchsuchungslogik 420 (6) der Zielauslagerungslogik 33 eine Durchsuchung von geänderten Spuren im Cache einleiten, um festzustellen, ob eine präemptive Copy-source-to-target-Operation für jede geänderte Spur im Cache angebracht ist. 10 stellt ein Beispiel einer präemptiven Copy-source-to-target-Durchsuchung des Cache gemäß einem Aspekt der vorliegenden Beschreibung dar. In einer einzelnen Ausführungsform kann die präemptive Copy-source-to-target-Durchsuchung von geänderten Spuren im Cache mindestens ein bestimmtes Zeitintervall (Delta X) vor dem Start der Safe-data-commit-Durchsuchung eingeleitet werden, um genügend Zeit für die präemptive Copy-source-to-target-Durchsuchung und jedwede resultierenden präemptiven Copy-source-to-target-Operationen vorzusehen, die abzuschließen sind, bevor eine Auslagerung von geänderten Spuren an die Quellen als Teil einer nachfolgenden Safe-data-commit-Durchsuchung beginnt.
  • Die präemptive Bedingungsüberwachungslogik 410 (6) ist des Weiteren so konfiguriert, dass sie in Abhängigkeit davon, ob es (Block 422, 9) eine Zeitpunktkopie-Beziehung zwischen einer Zeitpunktkopie-Quelle und einem Zeitpunktkopie-Ziel gibt, das geänderte Daten in dem Cache hat, und wenn ja, ob die Zeitpunktkopie-Beziehung persistent ist, feststellt, ob Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind. Wie zuvor erwähnt wurde, ist eine persistente Zeitpunktkopie-Beziehung eine Beziehung, bei der sich der Zeitpunkt der Kopierbeziehung nicht geändert hat. Ein Beispiel für eine nicht persistente Zeitpunktkopie-Beziehung ist eine Beziehung, bei der der Zeitpunkt der Kopierbeziehung nach der Schreiboperation in den Cache erhöht wurde. Es ist klar, dass, wenn die Zeitpunktkopie-Beziehung nicht persistent ist, das heißt, dass der Zeitpunkt der Beziehung erhöht wurde, jedwede geänderten Spuren, die für die Kopierbeziehung in den Cache geschrieben werden, bevor die Beziehung erhöht wird, zu der erhöhten Beziehung gehören und jedwede entsprechenden nicht geänderten Daten in der Quelle ersetzen. Somit können die entsprechenden nicht geänderten Daten in der Quelle verworfen werden, indem eine Auslagerung an die entsprechenden Spuren der Quelle gestattet wird, ohne die nicht geänderten Daten der Spuren in einer präemptiven Copy-source-to-target-Operation zu erhalten. Daher ist eine präemptive Copy-source-to-target-Operation nicht erforderlich und es kann festgestellt werden, dass Bedingungen für eine präemptive Copy-source-to-target-Operation für diese erhöhte Kopierbeziehung nicht vorhanden sind.
  • Umgekehrt, wenn die Zeitpunktkopie-Beziehung persistent ist, gehören jedwede geänderten Spuren im Cache, die sich in der Zeitpunktkopie-Beziehung befinden, nicht zu einer erhöhten Kopierbeziehung und ersetzen nicht entsprechende nicht geänderte Daten in der Quelle. Somit sollen die entsprechenden nicht geänderten Daten in der Quelle durch eine präemptive Copy-source-to-storage-(Kopiere-Quelle-an-Speicher-) Operation erhalten werden, bevor die nicht geänderten Daten durch eine Auslagerungsoperation an die Quelle überschrieben werden. Daher ist die präemptive Copy-source-to-target-Operation angebracht, und es kann festgestellt werden (Block 418, 9), dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind.
  • Wie vorstehend erwähnt wurde, kann in einer einzelnen Ausführungsform eine Copy-source-to-target-Operation in dem Intervall von dem Zeitpunkt, zu dem eine für eine Zeitpunkt-Quelle vorgesehene Schreiboperation eingeleitet wird, bis zu einem Zeitpunkt, bevor die Spur der Schreiboperation aus dem Cache an die Quelle ausgelagert wird, wodurch die entsprechenden nicht geänderten Daten der Quelle überschrieben werden, an einem beliebigen Punkt präemptiv durchgeführt werden. Daher kann, wenn festgestellt wird (Block 418, 9), dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, weil festgestellt wird (Block 422, 9), dass eine geänderte Spur im Cache zu einer persistenten Zeitpunktkopie-Beziehung gehört, die präemptive Durchsuchungslogik 420 (6) der Zielauslagerungslogik 33 anschließend jederzeit eine Durchsuchung von geänderten Spuren im Cache einleiten, um festzustellen, ob eine präemptive Copy-source-to-target-Operation für jede geänderte Spur im Cache angebracht ist. In einer einzelnen Ausführungsform könnte eine solche Durchsuchung jedoch mindestens ein bestimmtes Zeitintervall (Delta X) vor dem Start einer nachfolgenden Safe-data-commit-Durchsuchung eingeleitet werden, um genügend Zeit für die präemptive Copy-source-to-target-Durchsuchung und jedwede resultierenden präemptiven Copy-source-to-target-Operationen vorzusehen, die abzuschließen sind, bevor eine Auslagerung von geänderten Spuren an die Quellen als Teil der Safe-data-commit-Durchsuchung beginnt.
  • Die präemptive Bedingungsüberwachungslogik 410 (6) ist des Weiteren so konfiguriert, dass sie in Abhängigkeit davon, ob (Block 426) die Anzahl der Spuren von geänderten Daten im Cache, die zu einer Zeitpunktkopie-Beziehung gehören, das heißt, einer Zeitpunktkopie-Quelle entsprechen, einen Schwellenwert überschreitet, feststellt, ob Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind. Es ist klar, dass, wenn die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, einen Schwellenwert überschreitet, nicht präemptive Copy-source-to-target-Operationen, die zum Beispiel in Verbindung mit Copy-on-Destage-Operationen durchgeführt werden, aufgrund ihrer verhältnismäßig hohen Anzahl einen erheblichen Nachteil für die Systemperformanz bedeuten können. Eine solche Herabsetzung der Systemperformanz kann gemindert werden, indem Copy-source-to-target-Operationen präemptiv vor Auslagerungsoperationen durchgeführt werden, so dass die Auslagerungsoperationen, wenn sie schließlich durchgeführt werden, nicht auf den Abschluss von Copy-source-to-target-Operationen warten müssen, bevor die Quellen-Auslagerungsoperationen abgeschlossen werden können. Daher wird in der Ausführungsform von 9 festgestellt (Block 418, 9), dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Anzahl der Spuren von geänderten Daten im Cache, die zu einer Zeitpunktkopie-Beziehung gehören, den Schwellenwert überschreitet (Block 426).
  • Ein geeigneter Schwellenwert kann in Abhängigkeit von der jeweiligen Anwendung unter Verwendung einer Vielzahl von Techniken ausgewählt werden. Zum Beispiel kann ein geeigneter Schwellenwert in Form eines Prozentsatzes der Gesamtkapazität des Cache als Ganzes oder einer jeden Speicherbank ausgedrückt werden, wenn Durchsuchungen speicherbankweise durchgeführt werden. Ein Beispiel für einen geeigneten Schwellenwert kann gegebenenfalls 70 % oder in einem Bereich von 70 bis 100 % der Gesamtkapazität des Cache oder des Cache für eine Speicherbank sein.
  • Auch hier kann, wenn festgestellt wird (Block 418, 9), dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, weil festgestellt wird, dass die Anzahl der Spuren von geänderten Daten im Cache, die zu einer Zeitpunktkopie-Beziehung gehören, den Schwellenwert überschreitet (Block 426), die präemptive Durchsuchungslogik 420 (6) der Zielauslagerungslogik 33 anschließend jederzeit eine Durchsuchung von geänderten Spuren im Cache einleiten, um festzustellen, ob eine präemptive Copy-source-to-target-Operation für jede geänderte Spur im Cache angebracht ist, vorzugsweise jedoch mindestens ein Zeitintervall (Delta X) vor dem Start einer nachfolgenden Safe-data-commit-Durchsuchung, wie vorstehend erläutert wurde.
  • Umgekehrt, wenn festgestellt wird (Block 414, 9), dass eine Safe-data-commit-Durchsuchung nicht gleich eingeleitet wird, und festgestellt wird (Block 422), dass die durch geänderte Spuren im Cache dargestellte Zeitpunktkopie-Beziehungen nicht persistent sind, sowie festgestellt wird (Block 426), dass die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, den Schwellenwert nicht überschreitet, wird in einer einzelnen Ausführungsform festgestellt (Block 430, 9), dass Bedingungen für eine präemptive Copy-source-to-target-Operation nicht vorhanden sind. Folglich kann eine Durchsuchung von geänderten Spuren im Cache, um festzustellen, ob eine präemptive Copy-source-to-target-Operation für jede geänderte Spur im Cache angebracht ist, umgangen werden. Es ist jedoch klar, dass in anderen Ausführungsformen in einer Feststellung, ob Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind, verschiedene Tests hinzugefügt, ersetzt oder entfernt werden können.
  • 10 stellt ein Beispiel einer Durchsuchung von geänderten Spuren im Cache dar, um festzustellen, ob eine präemptive Copy-source-to-target-Operation für jede geänderte Spur im Cache angebracht ist. Folglich stellt die präemptive Bedingungsüberwachungslogik 410 (6) fest (Block 450, 10), ob Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wie vorstehend in Verbindung mit 9 beschrieben wurde. Die präemptive Durchsuchungslogik 452 (6) ist so konfiguriert, dass sie als Reaktion auf eine Feststellung, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, eine Durchsuchung von Spuren von geänderten Daten im Cache einleitet (Block 454, 10), um Spuren von geänderten Daten im Cache für präemptive Copy-source-to-target-Operationen zu kennzeichnen und auszuwählen.
  • In einer einzelnen Ausführungsform ist die präemptive Durchsuchungslogik 452 (6) so konfiguriert, dass sie eine geänderte Spur von Daten in einem Cache kennzeichnet und feststellt (Block 458, 10), ob die Spur der geänderten Daten im Cache einer Zeitpunktkopie-Quelle entspricht, das heißt, zu einer Zeitpunktkopie-Beziehung gehört. Die präemptive Durchsuchungslogik 452 (6) ist des Weiteren so konfiguriert, dass sie, wenn festgestellt wird, dass die gekennzeichnete geänderte Datenspur im Cache zu einer Zeitpunktkopie-Beziehung gehört, auch feststellt (Block 458, 10), ob nicht geänderte Daten in den entsprechenden Spuren der Zeitpunktkopie-Quelle bereits von der Zeitpunktkopie-Quelle an das entsprechende Zeitpunktkopie-Ziel der Beziehung kopiert wurden. Wenn nicht, kann eine präemptive Copy-source-to-target-Operation eingeleitet werden, um die nicht geänderten Daten von den entsprechenden Spuren in der Zeitpunktkopie-Quelle an das Zeitpunktkopie-Ziel vor einer nachfolgenden Quellen-Auslagerungsoperation präemptiv zu kopieren.
  • Wie vorstehend in Verbindung mit den 5 und 7 beschrieben wurde, kann eine auf einen Stride ausgerichtete Copy-source-to-target-Operation für sequenzielle Spuren einer sequenziellen Schreiboperation durchgeführt werden. Folglich ist die präemptive Durchsuchungslogik 452 (6) des Weiteren so konfiguriert, dass sie feststellt (Block 470), ob die gekennzeichnete Spur Teil einer Folge von sequenziellen Spuren von geänderten Daten ist. Wenn ja, ist die präemptive Durchsuchungslogik 452 (6) des Weiteren so konfiguriert, dass sie die Copy-source-to-target-Logik 214 (6) veranlasst (Block 474, 10), eine präemptive, auf einen Stride ausgerichtete Copy-source-to-target-Operation für entsprechende sequenzielle Spuren des Zeitpunktkopie-Ziels durchzuführen. Folglich kann ein Tasksteuerblock 218 (7), der eine Folge von sequenziellen Spuren kennzeichnet, auf eine Weise erzeugt werden, die ähnlich der vorstehend in Verbindung mit dem Block 338 von 8 beschriebenen ist.
  • Nachdem der Tasksteuerblock für die auf einen Stride ausgerichtete Copy-source-to-target-Operation für die Folge der geänderten Spuren, die an die Zeitpunktkopie-Quelle geleitet werden, erzeugt wurde, kann die präemptive Durchsuchungslogik 452 ( 6) so konfiguriert sein, dass sie die verbleibenden sequenziellen Spuren der Folge der geänderten Spuren, für die der sequenzielle Tasksteuerblock erzeugt wurde, auf eine Weise überspringt (Block 478) oder im Cache umgeht, die ähnlich der vorstehend in Verbindung mit dem Block 342 von 8 beschriebenen ist. Nach einer anschließenden Zuteilung des erzeugten sequenziellen Tasksteuerblocks 218 kann eine auf einen Stride ausgerichtete Copy-source-to-target Operation für entsprechende sequenzielle Spuren, die durch den sequenziellen Tasksteuerblock gekennzeichnet werden, in einer Weise präemptiv durchgeführt werden, die ähnlich der vorstehend in Verbindung mit den Blöcken 260 bis 288 und 244 von 5 beschriebenen ist.
  • Umgekehrt, wenn die präemptive Durchsuchungslogik 452 (6) feststellt (Block 470), dass die gekennzeichnete Spur nicht Teil einer Folge von sequenziellen Spuren von geänderten Daten ist, ist die präemptive Durchsuchungslogik 452 (6) des Weiteren so konfiguriert, dass sie die Copy-source-to-target-Logik 214 (6) veranlasst (Block 482, 10), eine nicht sequenzielle Copy-source-to-target-Operation für eine entsprechende nicht sequenzielle Spur der Zeitpunktkopie-Beziehung präemptiv durchzuführen. Folglich kann ein nicht sequenzieller Tasksteuerblock 218 (7) zum Beispiel für nur eine einzige Spur erzeugt werden. Wenn die präemptive Copy-source-to-target-Operation für eine einzige Spur gedacht ist, kann der Anfangsspur-Wert S (Feld 254) eines nicht sequenziellen Tasksteuerblocks 218 (7) die einzige Spur kennzeichnen und der Spurenanzahl-Wert N (Feld 258) kann für eine nicht sequenzielle präemptive Copy-source-to-target-Operation für eine einzige Spur auf eins gesetzt werden. Es ist klar, dass eine Vielzahl von Formaten für nicht sequenzielle und sequenzielle Tasksteuerblöcke gemäß der vorliegenden Beschreibung verwendet werden kann. Zum Beispiel können mehrere nicht sequenzielle Spuren durch geeignete Felder eines nicht sequenziellen Tasksteuerblocks für eine präemptive Copy-source-to-target-Operation gekennzeichnet werden.
  • Nach einer anschließenden Zuteilung des nicht sequenziellen Tasksteuerblocks kann die nicht sequenzielle präemptive Copy-source-to-target-Operation präemptiv durchgeführt werden. In einer einzelnen Ausführungsform braucht eine nicht sequenzielle präemptive Copy-source-to-target-Operation nicht auf einen Stride ausgerichtet zu sein, da nur eine Spur Gegenstand der präemptiven Copy-source-to-target-Operation sein kann. 3A stellt ein Beispiel einer nicht sequenziellen Copy-source-to-target-Operation für eine einzige Spur gemäß einem für eine einzige Spur konfigurierten Tasksteuerblock, wie vorstehend beschrieben wurde, dar. Es ist jedoch klar, dass nicht sequenzielle Copy-source-to-target-Operationen an mehrere nicht sequenzielle Copy-source-to-target-Operationen unter Verwendung von einem oder mehreren Tasksteuerblöcken geleitet werden können, die für mehrere nicht sequenzielle Spuren konfiguriert sind, wie vorstehend beschrieben wurde.
  • Folglich ist die Copy-source-to-target-Logik 214 (6) so konfiguriert, dass sie eine nicht sequenzielle Copy-source-to-target-Operation (3A) unter Verwendung eines Tasksteuerblocks 218 (7), der für eine nicht sequenzielle Spur konfiguriert ist, einleitet, wobei die nicht sequenzielle Copy-source-to-target-Operation das Leiten einer Leseoperation 484 (3A) an eine Zeitpunktkopie-Quelle 50 (3A) umfasst, da die Daten der Leseoperation noch nicht an das Zeitpunktkopie-Ziel 54 kopiert wurden. Folglich erhält die Leseoperation 484 nicht geänderte Lesedaten von einer Spur der Quelle 50, die der gekennzeichneten Spur im Cache entspricht, der geänderte Daten enthält, die schließlich ausgelagert werden sollen, um die entsprechende Spur in der Quelle 50 zu überschreiben.
  • Die nicht geänderten Daten, die gemäß der Leseoperation 484 von der Quelle 50 gelesen wurden, werden mittels einer Zwischenspeicherungsoperation 486 durch die Copy-source-to-target-Logik 214 (6) in dem Cache 28 zwischengespeichert. Die Copy-source-to-target-Logik 214 ist des Weiteren so konfiguriert, dass sie in einer Auslagerungsoperation 488 (3A) die von der Quelle 50 gelesenen, nicht geänderten Daten aus dem Cache 28 an die entsprechende Spur des Ziels 54 schreibt.
  • Sobald festgestellt wird (Block 490, 10), dass alle geänderten Spuren des Cache durchsucht wurden, ist die präemptive Durchsuchung abgeschlossen (Block 494). Alternativ wird eine weitere geänderte Spur im Cache gekennzeichnet (Block 458) und auf Eignung für eine präemptive Copy-source-to-target-Operation geprüft, wie vorstehend beschrieben wurde, bis alle geänderten Spuren im Cache durchsucht worden sind. Eine präemptive Durchsuchung im Cache kann in Bezug auf alle Spuren im Cache oder speicherbankweise oder in Bezug auf andere Unterteilungen des Cache durchgeführt werden.
  • Nach dem Abschluss von sequenziellen (auf einen Stride ausgerichteten) und nicht sequenziellen (z.B. einzige Spur) präemptiven Copy-source-to-target-Operationen kann eine Safe-data-commit-Durchsuchung des Cache durch die Safe-data-commit-Logik 60 ( 2) eingeleitet werden, um Spuren von geänderten Daten aus dem Cache in den Speicher auszulagern. Da Copy-source-to-target-Operationen bereits selektiv und präemptiv für geänderte Spuren abgeschlossen wurden, die zu Zeitpunktkopie-Beziehungen gehören, kann ein Auslagern von geänderten Spuren an Zeitpunktkopie-Quellen jedoch fortgesetzt werden, ohne auf einen Abschluss von Copy-source-to-target-Operationen zu warten, um die nicht geänderten Daten von entsprechenden Spuren in der Quelle zu erhalten, bevor sie durch das Auslagern an Quellenoperationen überschrieben werden. Überdies, da die präemptiven Copy-source-to-target-Operationen selektiv durchgeführt werden, wenn festgestellt wurde, dass vorteilhafte Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind, kann jedwede Herabsetzung der Systemperformanz aufgrund von solchen präemptiven Operationen verringert oder ausgeschlossen werden. Weitere Aspekte und Vorteile können in Abhängigkeit von der jeweiligen Anwendung realisiert werden.
  • Die Berechnungskomponenten der Figuren können jeweils in einem oder mehreren Computersystemen ausgeführt werden, wie beispielsweise dem in 11 gezeigten Computersystem 1002. Das Computersystem/der Server 1002 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen, wie beispielsweise Programmmodulen, die durch ein Computersystem ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Tasks durchführen oder bestimmte abstrakte Datentypen ausführen. Das Computersystem/der Server 1002 kann in verteilten Cloud-Computing-Umgebungen in die Praxis umgesetzt werden, in denen Tasks durch ferne Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk miteinander verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, darunter in Hauptspeichereinheiten, befinden.
  • Wie in 11 gezeigt ist, ist das Computersystem/der Server 1002 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers 1002 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 1004, ein Systemspeicher 1006 und ein Bus 1008 gehören, der verschiedene Systemkomponenten verbindet, darunter den Systemspeicher 1006 mit dem Prozessor 1004. Der Bus 1008 stellt eine oder mehrere von beliebigen Busstrukturen von mehreren Arten von Busstrukturen dar, darunter einen Hauptspeicherbus oder einen Hauptspeichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige einer Vielzahl von Busarchitekturen verwendet. Beispielhaft, und nicht darauf beschränkt, gehören zu solchen Architekturen der Bus „Industry Standard Architecture (ISA)“, der Bus „Micro Channel Architecture (MCA)“, der Bus „Enhanced ISA (EISA)“, der lokale Bus „Video Electronics Standards Association (VESA)“ und der Bus „Peripheral Component Interconnects (PCI)“.
  • Das Computersystem/der Server 1002 enthält üblicherweise eine Vielzahl von Datenträgern, die durch ein Computersystem gelesen werden können. Solche Datenträger können jedwede verfügbaren Datenträger sein, auf die von dem Computersystem/Server 1002 zugegriffen werden kann, und zu ihnen gehören sowohl flüchtige und nicht flüchtige als auch auswechselbare und nicht auswechselbare Datenträger.
  • Zum Systemspeicher 1006 können durch ein Computersystem lesbare Datenträger in Form von flüchtigem Speicher, wie beispielsweise einem Direktzugriffsspeicher (RAM) 1010 und/oder einem Cachespeicher 1012, gehören. Das Computersystem/der Server 1002 kann darüber hinaus weitere auswechselbare/nicht auswechselbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems enthalten. Lediglich als Beispiel kann das Speichersystem 1013 für Leseoperationen von und Schreiboperationen auf einen nicht auswechselbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als „Festplattenlaufwerk“ bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für Leseoperationen von und Schreiboperationen auf eine auswechselbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für Leseoperationen von oder Schreiboperationen auf eine auswechselbare, nicht flüchtige optische Platte, wie beispielsweise ein CD-ROM, DVD-ROM, oder andere optische Datenträger bereitgestellt werden. In diesen Fällen kann jedes über eine oder mehrere Datenträger-Schnittstellen mit dem Bus 1008 verbunden werden. Wie weiter dargestellt und nachstehend beschrieben wird, kann der Systemspeicher 1006 mindestens ein Programmprodukt enthalten, das über einen Satz (z.B. zumindest einen) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm 1014, das über (mindestens) einen Satz von Programmmodulen 1016 verfügt, kann beispielhaft und nicht als Einschränkung im Systemspeicher 1006 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführung einer Netzwerkumgebung umfassen. Die Komponenten des Computersystems 1002 können als Programmmodule 1016 ausgeführt sein, die im Allgemeinen die Funktionen und/oder die methodischen Vorgehensweisen von Ausführungsformen der Erfindung ausführen, wie hierin beschrieben ist. Das System von 1 kann in einem oder mehreren Computersystemen 1002 ausgeführt sein, wobei, wenn sie in mehreren Computersystemen 1002 ausgeführt sind, die Computersysteme dann über ein Netzwerk Daten austauschen können.
  • Das Computersystem/der Server 1002 kann auch mit einer oder mehreren externen Einheiten 1018 wie beispielsweise einer Tastatur, einer Zeigereinheit, einem Bildschirm 1020 usw.; mit einer oder mehreren Einheiten, die einem Benutzer den Dialogverkehr mit dem Computersystem/Server 1002 ermöglichen; und/oder beliebigen Einheiten (z.B. Netzkarte, Modem usw.), die dem Computersystem/Server 1002 den Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen 1022 erfolgen. Dennoch kann das Computersystem/der Server 1002 mit einem oder mehreren Netzwerken wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über den Netzwerkadapter 1024 Daten austauschen. Wie dargestellt ist, tauscht der Netzwerkadapter 1024 mit den anderen Komponenten des Computersystems/Servers 1002 über den Bus 1008 Daten aus. Es sollte klar sein, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 1002 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.
  • Die hierin verwendeten Referenzzeichen, wie beispielsweise i, j und n, werden verwendet, um eine veränderliche Anzahl von Instanzen eines Elements anzugeben, die dieselben oder andere Werte darstellen kann und bei Verwendung mit anderen oder denselben Elementen in verschiedenen beschriebenen Instanzen denselben oder einen anderen Wert darstellen kann.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Prozessoroperationen gemäß Aspekten 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 ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele 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 Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel 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 Weitverkehrsnetz 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 oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ o.ä. sowie herkömmliche 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 fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit 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, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. 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, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder 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 Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass 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 Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder 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 Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Begriffe „eine Ausführungsform“, „Ausführungsform“, „Ausführungsformen“, „die Ausführungsform“, „die Ausführungsformen“, „eine oder mehrere Ausführungsformen“, „einige Ausführungsformen“ und „eine einzelne Ausführungsform“ bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)“, soweit nicht ausdrücklich anders angegeben.
  • Die Begriffe „enthalten(d)“, „aufweisen(d)“, „verfügen(d) über“, „haben“ und Variationen hiervon bedeuten „einschließlich, ohne darauf beschränkt zu sein“, sofern nicht ausdrücklich anders angegeben.
  • Die Aufzählungsliste von Positionen bedeutet nicht, dass sich beliebige oder alle der Positionen gegenseitig ausschließen, sofern nicht ausdrücklich anders angegeben.
  • Die Begriffe „ein“, „eine“, „einer“ und „der“, „die“, „das“ bedeuten „ein(e) oder mehrere“, sofern nicht ausdrücklich anders angegeben.
  • Einheiten, die miteinander in Verbindung stehen, brauchen nicht ständig in Verbindung miteinander zu stehen, soweit nicht ausdrücklich anders angegeben. Überdies können Einheiten, die miteinander in Verbindung stehen, über einen oder mehrere Vermittler Daten direkt oder indirekt austauschen.
  • Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die miteinander in Verbindung stehen, bedeutet nicht, dass alle diese Komponenten benötigt werden. Hingegen wird eine Vielzahl von optionalen Komponenten beschrieben, um das breite Spektrum an möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
  • Wenn eine einzelne Einheit oder ein einzelner Artikel hierin beschrieben wird, ist ohne Weiteres ersichtlich, dass anstelle von einer einzelnen Einheit/einem einzelnen Artikel mehr als eine Einheit/ein Artikel (ungeachtet dessen, ob sie zusammenarbeiten oder nicht) verwendet werden können. Wenn mehr als eine Einheit oder mehr als ein Artikel hierin beschrieben wird (ungeachtet dessen, ob sie zusammenarbeiten oder nicht), ist ebenso ohne Weiteres ersichtlich, dass eine einzelne Einheit/ein einzelner Artikel anstelle der mehr als einen Einheit oder des mehr als einen Artikels verwendet werden kann oder dass anstelle der gezeigten Anzahl von Einheiten oder Programmen eine andere Anzahl von Einheiten/Artikeln verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten realisiert werden, die nicht ausdrücklich als über diese Funktionalität/Merkmale verfügend beschrieben sind. Folglich brauchen weitere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht zu enthalten.
  • Die vorstehende Beschreibung von verschiedenen Ausführungsformen der Erfindung erfolgte zum Zweck der Veranschaulichung und Beschreibung. Sie soll weder erschöpfend sein noch die Erfindung auf die offenbarte genaue Form beschränken. Viele Änderungen und Varianten sind in Anbetracht der vorstehenden Lehre möglich. Der Umfang der Erfindung soll nicht durch diese ausführliche Beschreibung, sondern vielmehr durch die hier beigefügten Ansprüche eingeschränkt werden. Die vorstehende Spezifikation, die vorstehenden Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und Verwendung der Komposition der Erfindung dar. Da viele Ausführungsformen der Erfindung realisiert werden können, ohne vom Umfang der Erfindung abzuweichen, besteht die Erfindung in den nachfolgend beigefügten Ansprüchen.

Claims (21)

  1. Verfahren, das umfasst: Schreiben eines geänderten Satzes von Daten für eine Zeitpunktkopie-Quelle in einen Cache, wobei der geänderte Satz von Daten in Bezug auf einen nicht geänderten Satz von Daten in der Zeitpunktkopie-Quelle geändert wird; Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind; und als Reaktion auf eine Feststellung, dass Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind, präemptives und selektives Einleiten einer Copy-source-to-target-Operation, die umfasst: Lesen der Zeitpunktkopie-Quelle, um Lesedaten zu erhalten, die den nicht geänderten Satz von Daten enthalten; und Schreiben des nicht geänderten Satzes von Daten an ein Zeitpunktkopie-Ziel; und Einleiten einer Durchsuchung des Cache, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind.
  2. Verfahren nach Anspruch 1, wobei ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, ein Feststellen, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, ein Zeitintervall vor einem Einleiten einer Safe-data-commit-Durchsuchung des Cache umfasst, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind.
  3. Verfahren nach Anspruch 2, wobei ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, in Abhängigkeit davon umfasst, ob eine Zeitpunktkopie-Beziehung von der Zeitpunktkopie-Quelle zu dem Zeitpunktkopie-Ziel persistent ist oder der Zeitpunkt der Kopierbeziehung erhöht wurde, wobei festgestellt wird, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Zeitpunktkopie-Beziehung von der Zeitpunktkopie-Quelle zu dem Zeitpunktkopie-Ziel persistent ist.
  4. Verfahren nach Anspruch 2, wobei ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, in Abhängigkeit davon umfasst, ob die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, einen Schwellenwert überschreitet, wobei festgestellt wird, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, den Schwellenwert überschreitet.
  5. Verfahren nach Anspruch 2, das des Weiteren als Reaktion auf eine Feststellung, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, ein Einleiten einer Durchsuchung von Spuren von geänderten Daten im Cache, um Spuren von geänderten Daten zu kennzeichnen, die a) einer Zeitpunktkopie-Quelle entsprechen und b) noch nicht an ein entsprechendes Zeitpunktkopie-Ziel der Zeitpunkt-Quelle kopiert wurden, sowie ein selektives und präemptives Einleiten einer Copy-source-to-target-Operation für gekennzeichnete Spuren im Cache umfasst.
  6. Verfahren nach Anspruch 5, wobei Daten an die Zeitpunktkopie-Quelle in Strides geschrieben werden und Daten an das Zeitpunktkopie-Ziel in Strides geschrieben werden und wobei ein Einleiten einer Copy-source-to-target-Operation für gekennzeichnete Spuren im Cache aufweist: Erkennen, ob gekennzeichnete Spuren im Cache sequenziell sind, und als Reaktion auf ein Erkennen von gekennzeichneten sequenziellen Spuren präemptives und selektives: Leiten einer auf einen Stride ausgerichteten Leseoperation an ein Zeitpunktkopie-Ziel der Zeitpunktkopie-Quelle, um eine umgeleitete Leseoperation an die Zeitpunktkopie-Quelle zu erzwingen, um nicht geänderte Daten zu erhalten, die den gekennzeichneten sequenziellen Spuren von geänderten Daten im Cache entsprechen; und Schreiben von auf einen Stride ausgerichteten Spuren von sequenziellen Daten an ein Zeitpunktkopie-Ziel, das die erhaltenen nicht geänderten Daten enthält, die den gekennzeichneten sequenziellen Spuren von geänderten Daten im Cache entsprechen.
  7. Verfahren nach Anspruch 6, wobei die Durchsuchung von Spuren von geänderten Daten im Cache ein Umgehen eines Durchsuchens von verbleibenden Spuren umfasst, die der auf einen Stride ausgerichteten Leseoperation entsprechen.
  8. System, das aufweist: einen Host, der so konfiguriert ist, dass er Eingabe-/Ausgabe-Operationen einleitet; einen Speichercontroller mit einem Prozessor und einem Cache; und Speicher, der von dem Speichercontroller gesteuert wird, wobei der Speicher eine Zeitpunktkopie-Quelle und ein Zeitpunktkopie-Ziel enthält; wobei der Speichercontroller enthält: Speichermanager-Logik, die so konfiguriert ist, dass sie einen geänderten Satz von Daten für eine Zeitpunktkopie-Quelle in einen Cache schreibt, wobei der geänderte Satz von Daten in Bezug auf einen nicht geänderten Satz von Daten in der Zeitpunktkopie-Quelle geändert wird, wobei die Speichermanager-Logik des Weiteren aufweist: präemptive Bedingungsüberwachungslogik, die so konfiguriert ist, dass sie feststellt, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind; Copy-source-to-target-Logik, die so konfiguriert ist, dass sie als Reaktion auf eine Feststellung, dass Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind, präemptiv und selektiv eine Copy-source-to-target-Operation einleitet, die umfasst: Lesen der Zeitpunktkopie-Quelle, um Lesedaten zu erhalten, die den nicht geänderten Satz von Daten enthalten; und Schreiben des nicht geänderten Satzes von Daten an das Zeitpunktkopie-Ziel; und Safe-data-commit-Logik, die so konfiguriert ist, dass sie eine Durchsuchung eines Cache einleitet, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind.
  9. System nach Anspruch 8, wobei die präemptive Bedingungsüberwachungslogik des Weiteren so konfiguriert ist, dass sie ein Zeitintervall vor dem Einleiten einer Safe-data-commit-Durchsuchung des Cache feststellt, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind.
  10. System nach Anspruch 8, wobei die präemptive Bedingungsüberwachungslogik des Weiteren so konfiguriert ist, dass sie in Abhängigkeit davon, ob eine Zeitpunktkopie-Beziehung von der Zeitpunktkopie-Quelle zu dem Zeitpunktkopie-Ziel persistent ist oder der Zeitpunkt der Kopierbeziehung erhöht wurde, feststellt, ob Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wobei festgestellt wird, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Zeitpunktkopie-Beziehung von der Zeitpunktkopie-Quelle zu dem Zeitpunktkopie-Ziel persistent ist.
  11. System nach Anspruch 8, wobei ein Schreiben eines geänderten Satzes von Daten in einen Cache ein Schreiben von geänderten Daten in Spuren umfasst und wobei die präemptive Bedingungsüberwachungslogik des Weiteren so konfiguriert ist, dass sie in Abhängigkeit davon, ob die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, einen Schwellenwert überschreitet, feststellt, ob Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wobei festgestellt wird, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, den Schwellenwert überschreitet.
  12. System nach Anspruch 8, wobei ein Schreiben eines geänderten Satzes von Daten in einen Cache ein Schreiben von geänderten Daten in Spuren umfasst, wobei die Speichermanager-Logik des Weiteren eine präemptive Durchsuchungslogik umfasst, die so konfiguriert ist, dass sie als Reaktion auf eine Feststellung, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, eine Durchsuchung von Spuren von geänderten Daten im Cache einleitet, um Spuren von geänderten Daten zu kennzeichnen, die a) einer Zeitpunktkopie-Quelle entsprechen und b) noch nicht an ein entsprechendes Zeitpunktkopie-Ziel der Zeitpunkt-Quelle kopiert wurden, und die Copy-source-to-target-Logik selektiv und präemptiv veranlasst, eine Copy-source-to-target-Operation für gekennzeichnete Spuren im Cache einzuleiten.
  13. System nach Anspruch 12, wobei Daten in die Zeitpunktkopie-Quelle in Strides geschrieben werden und Daten in das Zeitpunktkopie-Ziel in Strides geschrieben werden, wobei die Speichermanager-Logik des Weiteren eine sequenzielle Schreiberkennungslogik aufweist, die so konfiguriert ist, dass sie erkennt, ob gekennzeichnete Spuren im Cache sequenziell sind, wobei die Copy-source-to-target-Logik des Weiteren so konfiguriert ist, dass sie als Reaktion auf ein Erkennen von gekennzeichneten sequenziellen Spuren präemptiv und selektiv eine auf einen Stride ausgerichtete Leseoperation an ein Zeitpunktkopie-Ziel der Zeitpunktkopie-Quelle leitet, um eine umgeleitete Leseoperation an die Zeitpunktkopie-Quelle zu erzwingen, um nicht geänderte Daten zu erhalten, die den gekennzeichneten sequenziellen Spuren von geänderten Daten im Cache entsprechen, und auf einen Stride ausgerichtete Spuren von sequenziellen Daten an ein Zeitpunktkopie-Ziel schreibt, das die erhaltenen nicht geänderten Daten enthält, die den gekennzeichneten sequenziellen Spuren von geänderten Daten im Cache entsprechen.
  14. System nach Anspruch 13, wobei die präemptive Durchsuchungslogik des Weiteren so konfiguriert ist, dass sie ein Durchsuchen von verbleibenden Spuren umgeht, die der auf einen Stride ausgerichteten Leseoperation entsprechen.
  15. Computerprogrammprodukt zur Verwendung mit einem Host und einem Datenspeichersystem, das über einen Speichercontroller mit einem Prozessor und einem Cache sowie über Speicher verfügt, der von dem Speichercontroller gesteuert wird, wobei der Speicher eine Zeitpunktkopie-Quelle und ein Zeitpunktkopie-Ziel enthält, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, das über damit realisierte Programmanweisungen verfügt, wobei die Programmanweisungen durch einen Prozessor des Speichercontrollers ausführbar sind, um Prozessoroperationen zu veranlassen, wobei die Prozessoroperationen aufweisen: Schreiben eines geänderten Satzes von Daten für eine Zeitpunktkopie-Quelle in einen Cache, wobei der geänderte Satz von Daten in Bezug auf einen nicht geänderten Satz von Daten in der Zeitpunktkopie-Quelle geändert wird; Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind; und als Reaktion auf eine Feststellung, dass Bedingungen für präemptive Copy-source-to-target-Operationen vorhanden sind, präemptives und selektives Einleiten einer Copy-source-to-target-Operation, die umfasst: Lesen der Zeitpunktkopie-Quelle, um Lesedaten zu erhalten, die den nicht geänderten Satz von Daten enthalten; und Schreiben des nicht geänderten Satzes von Daten an das Zeitpunktkopie-Ziel; und Einleiten einer Durchsuchung eines Cache, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind.
  16. Computerprogrammprodukt nach Anspruch 15, wobei ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, ein Feststellen, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, ein Zeitintervall vor einem Einleiten einer Safe-data-commit-Durchsuchung des Cache umfasst, um Spuren von geänderten Daten im Cache zu kennzeichnen, die in den Speicher auszulagern sind.
  17. Computerprogrammprodukt nach Anspruch 16, wobei ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, in Abhängigkeit davon umfasst, ob eine Zeitpunktkopie-Beziehung von der Zeitpunktkopie-Quelle zu dem Zeitpunktkopie-Ziel persistent ist oder der Zeitpunkt der Kopierbeziehung erhöht wurde, wobei festgestellt wird, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Zeitpunktkopie-Beziehung von der Zeitpunktkopie-Quelle zu dem Zeitpunktkopie-Ziel persistent ist.
  18. Computerprogrammprodukt nach Anspruch 16, wobei ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, ein Feststellen, ob Bedingungen für präemptive Copy-source-to-target-Operationen für geänderte Daten im Cache vorhanden sind, in Abhängigkeit davon umfasst, ob die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, einen Schwellenwert überschreitet, wobei festgestellt wird, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, wenn die Anzahl der Spuren von geänderten Daten im Cache, die einer Zeitpunktkopie-Quelle entsprechen, den Schwellenwert überschreitet.
  19. Computerprogrammprodukt nach Anspruch 16, das des Weiteren als Reaktion auf eine Feststellung, dass Bedingungen für eine präemptive Copy-source-to-target-Operation vorhanden sind, ein Einleiten einer Durchsuchung von Spuren von geänderten Daten im Cache, um Spuren von geänderten Daten zu kennzeichnen, die a) einer Zeitpunktkopie-Quelle entsprechen und b) noch nicht an ein entsprechendes Zeitpunktkopie-Ziel der Zeitpunkt-Quelle kopiert wurden, sowie ein selektives und präemptives Einleiten einer Copy-source-to-target-Operation für gekennzeichnete Spuren im Cache aufweist.
  20. Computerprogrammprodukt nach Anspruch 19, wobei Daten an die Zeitpunktkopie-Quelle in Strides geschrieben werden und Daten an das Zeitpunktkopie-Ziel in Strides geschrieben werden und wobei ein Einleiten einer Copy-source-to-target-Operation für gekennzeichnete Spuren im Cache umfasst: Erkennen, ob gekennzeichnete Spuren im Cache sequenziell sind, und als Reaktion auf das Erkennen von gekennzeichneten sequenziellen Spuren präemptives und selektives: Leiten einer auf einen Stride ausgerichteten Leseoperation an ein Zeitpunktkopie-Ziel der Zeitpunktkopie-Quelle, um eine umgeleitete Leseoperation an die Zeitpunktkopie-Quelle zu erzwingen, um nicht geänderte Daten zu erhalten, die den gekennzeichneten sequenziellen Spuren von geänderten Daten im Cache entsprechen; und Schreiben von auf einen Stride ausgerichteten Spuren von sequenziellen Daten an ein Zeitpunktkopie-Ziel, das die erhaltenen nicht geänderten Daten enthält, die den gekennzeichneten sequenziellen Spuren von geänderten Daten im Cache entsprechen.
  21. Computerprogrammprodukt nach Anspruch 20, wobei die Durchsuchung von Spuren von geänderten Daten im Cache ein Umgehen eines Durchsuchens von verbleibenden Spuren umfasst, die der auf einen Stride ausgerichteten Leseoperation entsprechen.
DE112018005768.2T 2017-12-14 2018-11-29 Copy-source-to-target-verwaltung in einem datenspeichersystem Active DE112018005768B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/842,856 2017-12-14
US15/842,856 US10521139B2 (en) 2017-12-14 2017-12-14 Copy source to target management in a data storage system
PCT/IB2018/059451 WO2019116136A1 (en) 2017-12-14 2018-11-29 Copy source to target management in a data storage system

Publications (2)

Publication Number Publication Date
DE112018005768T5 true DE112018005768T5 (de) 2020-07-23
DE112018005768B4 DE112018005768B4 (de) 2021-12-23

Family

ID=66813886

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018005768.2T Active DE112018005768B4 (de) 2017-12-14 2018-11-29 Copy-source-to-target-verwaltung in einem datenspeichersystem

Country Status (6)

Country Link
US (2) US10521139B2 (de)
JP (1) JP7058020B2 (de)
CN (1) CN111448554B (de)
DE (1) DE112018005768B4 (de)
GB (1) GB2581463B (de)
WO (1) WO2019116136A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11054994B2 (en) 2017-12-14 2021-07-06 International Business Machines Corporation Copy source to target management in a data storage system
US10521139B2 (en) * 2017-12-14 2019-12-31 International Business Machines Corporation Copy source to target management in a data storage system
US10891227B2 (en) * 2018-11-29 2021-01-12 International Business Machines Corporation Determining modified tracks to destage during a cache scan
CN111796766A (zh) * 2020-05-29 2020-10-20 苏宁云计算有限公司 一种数据的存储方法、装置及计算机系统

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6338114B1 (en) 1999-08-18 2002-01-08 International Business Machines Corporation Method, system, and program for using a table to determine an erase operation to perform
JP3866466B2 (ja) 1999-12-13 2007-01-10 株式会社東芝 データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体
US7171610B2 (en) 2002-06-12 2007-01-30 International Business Machines Corporation Method, system, and article of manufacture for preventing data loss
US7024586B2 (en) * 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
AU2002951907A0 (en) * 2002-10-08 2002-10-24 Bhp Steel Limited Hot dip coating apparatus
US7328226B1 (en) 2003-06-30 2008-02-05 Symantec Operating Corporation Coordinated distributed log-based snapshots in a multi-host environment
US7133989B2 (en) 2004-05-05 2006-11-07 International Business Machines Corporation Point in time copy between data storage systems
US7461100B2 (en) * 2004-05-27 2008-12-02 International Business Machines Corporation Method for fast reverse restore
US20070124345A1 (en) * 2005-11-30 2007-05-31 Heinz Kathy K Library backup
US7823007B2 (en) * 2006-02-17 2010-10-26 International Business Machines Corporation Apparatus, system, and method for switching a volume address association in a point-in-time copy relationship
US20080049254A1 (en) * 2006-08-24 2008-02-28 Thomas Phan Method and means for co-scheduling job assignments and data replication in wide-area distributed systems
CN104899286B (zh) * 2009-09-21 2018-09-11 高通股份有限公司 分布式内容存储和取回
US8433870B2 (en) * 2010-10-12 2013-04-30 International Business Machines Corporation Multiple incremental virtual copies
US8854751B2 (en) 2011-01-06 2014-10-07 Seagate Technology Llc Reducing errors resulting from width variability of storage media write tracks
US8751762B2 (en) 2011-03-30 2014-06-10 International Business Machines Corporation Prevention of overlay of production data by point in time copy operations in a host based asynchronous mirroring environment
US20120254547A1 (en) * 2011-03-31 2012-10-04 International Business Machines Corporation Managing metadata for data in a copy relationship
US8793436B2 (en) 2011-05-23 2014-07-29 International Business Machines Corporation Cache management of tracks in a first cache and a second cache for a storage
US8566530B2 (en) * 2011-07-22 2013-10-22 International Business Machines Corporation Prefetching source tracks for destaging updated tracks in a copy relationship
US9063883B2 (en) 2011-09-26 2015-06-23 International Business Machines Corporation Management of point-in-time copy relationship for extent space efficient volumes
US8572319B2 (en) 2011-09-28 2013-10-29 Hitachi, Ltd. Method for calculating tier relocation cost and storage system using the same
US9336150B2 (en) 2012-06-08 2016-05-10 International Business Machines Corporation Performing asynchronous discard scans with staging and destaging operations
US9779016B1 (en) * 2012-07-25 2017-10-03 Smart Modular Technologies, Inc. Computing system with backup and recovery mechanism and method of operation thereof
US9195403B2 (en) 2012-09-12 2015-11-24 International Business Machines Corporation Replicating tracks from a first storage site to a second and third storage sites
US9405704B2 (en) * 2012-10-16 2016-08-02 International Business Machines Corporation Establishing a point-in-time copy relationship between source logical addresses and target logical addresses
US11030125B2 (en) 2013-02-05 2021-06-08 International Business Machines Corporation Point in time copy operations from source volumes to space efficient target volumes in two stages via a non-volatile storage
US9582213B2 (en) 2013-02-21 2017-02-28 Netapp, Inc. Object store architecture for distributed data processing system
US9891860B1 (en) 2013-06-28 2018-02-13 EMC IP Holding Company, LLC. Managing copying of data in storage systems
US9563565B2 (en) 2013-08-14 2017-02-07 Micron Technology, Inc. Apparatuses and methods for providing data from a buffer
US9632945B2 (en) 2013-11-12 2017-04-25 International Business Machines Corporation Destage grouping for sequential fast write tracks
US9354994B2 (en) 2014-02-18 2016-05-31 International Business Machines Corporation Preemptive relocation of failing data
US9395925B2 (en) 2014-03-11 2016-07-19 International Business Machines Corporation Grouping of tracks for copy source to target destage on global mirror secondary
CN106980625B (zh) 2016-01-18 2020-08-04 阿里巴巴集团控股有限公司 一种数据同步方法、装置及系统
US20170293556A1 (en) * 2016-04-07 2017-10-12 Imagination Technologies Limited Read discards in a processor system with write-back caches
US10628331B2 (en) * 2016-06-01 2020-04-21 International Business Machines Corporation Demote scan processing to demote tracks from cache
US20180157697A1 (en) * 2016-12-07 2018-06-07 International Business Machines Corporation Updating change information for current copy relationships when establishing a new copy relationship having overlapping data with the current copy relationships
US10521139B2 (en) * 2017-12-14 2019-12-31 International Business Machines Corporation Copy source to target management in a data storage system

Also Published As

Publication number Publication date
GB2581463B (en) 2021-01-06
US20190187921A1 (en) 2019-06-20
US20200042206A1 (en) 2020-02-06
US10976940B2 (en) 2021-04-13
CN111448554A (zh) 2020-07-24
GB202009753D0 (en) 2020-08-12
DE112018005768B4 (de) 2021-12-23
JP2021507377A (ja) 2021-02-22
US10521139B2 (en) 2019-12-31
CN111448554B (zh) 2023-09-12
WO2019116136A1 (en) 2019-06-20
GB2581463A (en) 2020-08-19
JP7058020B2 (ja) 2022-04-21

Similar Documents

Publication Publication Date Title
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE112018005768B4 (de) Copy-source-to-target-verwaltung in einem datenspeichersystem
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE112011103026B4 (de) Bedarfsgesteuertes Streaming von Abbildern virtueller Maschinen
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE112012004540B4 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112014003349T5 (de) Verfahren und Gerät zum Ausführen atomarer Schreibvorgänge
DE102013209528A1 (de) Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE102013209318B4 (de) Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen
DE102013205571B4 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zum Migrieren von Datenträgern mit schlanker Speicherzuweisung in mehrschichtigen Speicherarchitekturen
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE112018005135T5 (de) Thin provisioning unter verwendung von speicherbänken auf cloud-grundlage

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
R020 Patent grant now final