DE102021130358A1 - E/a-operationen in log-strukturierten arrays - Google Patents

E/a-operationen in log-strukturierten arrays Download PDF

Info

Publication number
DE102021130358A1
DE102021130358A1 DE102021130358.3A DE102021130358A DE102021130358A1 DE 102021130358 A1 DE102021130358 A1 DE 102021130358A1 DE 102021130358 A DE102021130358 A DE 102021130358A DE 102021130358 A1 DE102021130358 A1 DE 102021130358A1
Authority
DE
Germany
Prior art keywords
volume
storage
computer
internal
lsa
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021130358.3A
Other languages
English (en)
Inventor
Grzegorz Piotr SZCZEPANIK
Lukasz Jakub Palus
Kushal S. Patel
Sarvesh S. Patel
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 DE102021130358A1 publication Critical patent/DE102021130358A1/de
Pending legal-status Critical Current

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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • 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

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)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Es wird ein Verfahren, System und Computerprogrammprodukt zum Verwalten von Eingabe/Ausgabe-Operationen (E/A-Operationen) in Log-strukturierten Arrays (LSA) bereitgestellt. Das Verfahren erhält eine Schreibanforderung für einen Speicherdatenträger. Die Schreibanforderung umfasst einen Datensatz. Das Verfahren stellt auf Grundlage einer Zielzuordnung für einen Flashkopie-Datenträger fest, dass der Datensatz für einen Zielbereich des Speicherdatenträgers nicht an einen Zielort kopiert wurde. Ein LSA wird angewiesen, während einer nächsten E/A-Operation für den Speicherdatenträger ein internes Copy-on-Write (COW) für den Datensatz durchzuführen. Auf Grundlage der Anweisung für ein internes COW verschiebt das Verfahren einen internen Zeiger des Zielorts von einem virtuellen Datenträger auf den Flashkopie-Datenträger.

Description

  • HINTERGRUND
  • Manche Computerspeichersysteme ermöglichen Funktionen für Point-in-Time- bzw. Zeitpunkt-Datenkopien. Diese Funktionen können auf Blockspeicherebene verfügbar sein. Zum Beispiel können die Funktionen für Zeitpunkt-Datenkopien ein Erstellen von Kopien derart umfassen, dass Kopien von Daten eines ganzen Datenträgers in einer gegebenen Speichereinheit erstellt werden. Die Kopie stellt eine Beziehung zwischen einem Quelldatenträger und einem Zieldatenträger her. Das eingerichtete Paar von Datenträgern fungiert als Zeitpunkt-Kopie und erlaubt Lese- und Schreib-Operationen auf dem Quell- wie dem Zieldatenträger. Wenn auf dem Quelldatenträger ein Schreibvorgang durchgeführt wird, können Daten an einen Zielort kopiert werden und dann neue Daten auf den Quelldatenträger geschrieben werden.
  • KURZDARSTELLUNG
  • Gemäß einer hierin beschriebenen Ausführungsform ist ein von einem Computer umgesetztes Verfahren zum Verwalten von Eingabe/Ausgabe-Operationen (E/A-Operationen) in Log-strukturierten Arrays (LSA) vorgesehen. Das Verfahren erhält eine Schreibanforderung für einen Speicherdatenträger. Die Schreibanforderung umfasst einen Datensatz. Das Verfahren stellt auf Grundlage einer Zielzuordnung für einen Flashkopie-Datenträger fest, dass der Datensatz für einen Zielbereich des Speicherdatenträgers nicht an einen Zielort kopiert wurde. Ein LSA wird angewiesen, während einer nächsten E/A-Operation für den Speicherdatenträger ein internes Copy-on-Write (COW) für den Datensatz durchzuführen. Auf Grundlage der Anweisung für ein internes COW verschiebt das Verfahren einen internen Zeiger des Zielorts von einem virtuellen Datenträger auf den Flashkopie-Datenträger.
  • Gemäß einer hierin beschriebenen Ausführungsform ist ein System zum Verwalten von Eingabe/Ausgabe-Operationen (E/A-Operationen) in Log-strukturierten Arrays (LSA) vorgesehen. Das System umfasst einen oder mehrere Prozessoren und ein von einem Computer lesbares Speichermedium, das mit dem einen oder den mehreren Prozessoren verbunden ist und Programmanweisungen speichert, die bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren veranlassen, Operationen auszuführen. Die Operationen erhalten eine Schreibanforderung für einen Speicherdatenträger. Die Schreibanforderung umfasst einen Datensatz. Die Operationen stellen auf Grundlage einer Zielzuordnung für einen Flashkopie-Datenträger fest, dass der Datensatz für einen Zielbereich des Speicherdatenträgers nicht an einen Zielort kopiert wurde. Ein LSA wird angewiesen, während einer nächsten E/A-Operation für den Speicherdatenträger ein internes Copy-on-Write (COW) für den Datensatz durchzuführen. Auf Grundlage der Anweisung für ein internes COW verschieben die Operationen einen internen Zeiger des Zielorts von einem virtuellen Datenträger auf den Flashkopie-Datenträger.
  • Gemäß einer hierin beschriebenen Ausführungsform ist ein Computerprogrammprodukt zum Verwalten von Eingabe/Ausgabe-Operationen (E/A-Operationen) in Log-strukturierten Arrays (LSA) vorgesehen. Das Computerprogrammprodukt umfasst ein von einem Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen, wobei die Programmanweisungen von einem oder mehreren Prozessoren ausführbar sind, um zu bewirken, dass der eine oder die mehreren Prozessoren eine Schreibanforderung für einen Speicherdatenträger erhalten. Die Schreibanforderung umfasst einen Datensatz. Das Computerprogrammprodukt stellt auf Grundlage einer Zielzuordnung für einen Flashkopie-Datenträger fest, dass der Datensatz für einen Zielbereich des Speicherdatenträgers nicht an einen Zielort kopiert wurde. Ein LSA wird angewiesen, während einer nächsten E/A-Operation für den Speicherdatenträger ein internes Copy-on-Write (COW) für den Datensatz durchzuführen. Auf Grundlage der Anweisung für ein internes COW verschiebt das Computerprogrammprodukt einen internen Zeiger des Zielorts von einem virtuellen Datenträger auf den Flashkopie-Datenträger.
  • Figurenliste
  • Die in der vorliegenden Anmeldung enthaltenen Zeichnungen sind in die Beschreibung aufgenommen und bilden einen Teil derselben. Sie zeigen Ausführungsformen der vorliegenden Offenbarung und erläutern zusammen mit der Beschreibung die Grundsätze der Offenbarung. Die Zeichnungen sind nur beispielhaft für bestimmte Ausführungsformen und schränken die Offenbarung nicht ein.
    • 1 zeigt ein Blockschaubild einer Datenverarbeitungsumgebung zum Umsetzen von Konzepten und computergestützten Verfahren gemäß mindestens einer Ausführungsform.
    • 2 zeigt ein Flussdiagramm eines von einem Computer umgesetzten Verfahrens zum Verwalten von E/A-Operationen in LSA-Umgebungen gemäß mindestens einer Ausführungsform.
    • 3 zeigt ein Flussdiagramm eines von einem Computer umgesetzten Verfahrens zum Verwalten von E/A-Operationen in LSA-Umgebungen gemäß mindestens einer Ausführungsform.
    • 4 zeigt ein Blockschaubild eines Computersystems zum Verwalten von E/A-Operationen in LSA-Umgebungen gemäß mindestens einer Ausführungsform.
    • 5 ist ein Schaubild einer Cloud-Computing-Umgebung, in der Konzepte der vorliegenden Offenbarung gemäß einer Ausführungsform der vorliegenden Offenbarung umgesetzt werden können.
    • 6 ist ein Schaubild von Modellschichten einer Cloud-Computing-Umgebung, in der Konzepte der vorliegenden Offenbarung gemäß einer Ausführungsform der vorliegenden Offenbarung umgesetzt werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Die vorliegende Offenbarung betrifft allgemein Verfahren zum Verwalten von E/A-Operationen in LSA-Umgebungen. Insbesondere, aber nicht ausschließlich, betreffen Ausführungsformen der vorliegenden Offenbarung ein von einem Computer umgesetztes Verfahren zum Verwalten von E/A-Operationen in einem LSA während einer Blockdatensicherung in Unified-Storage-Systemen. Die vorliegende Offenbarung betrifft ferner ein verwandtes System zum Verwalten von E/A-Operationen in LSA-Umgebungen und ein Computerprogrammprodukt zum Betreiben eines solchen Systems.
  • Datenspeichersysteme und -einrichtungen werden oft hergestellt, um Verarbeitungsherausforderungen schnell und für eine relativ große Anzahl von Benutzern zu bewältigen. Einige dieser Systeme integrieren Datenbank, Verarbeitung und Speicher in einem einzigen kompakten System. Diese Systeme können für eine analytische Verarbeitung konfiguriert und für ein flexibles Wachstum ausgelegt sein. Wenn Rohdaten analysiert werden, können Business-Intelligence-Anwendungen, die diese Datenspeichersysteme nutzen, viele Lese-Eingabe/Ausgabe-Operationen (Lese-E/A-Operationen) veranlassen, um Daten für die Verarbeitung zu sammeln. Diese Anwendungen können auch viele Schreib-E/A-Operationen senden, um Zwischendaten an vorläufigen Speicherplätzen zu speichern. Diese Anwendungen können Datenspeichersystemarchitekturen mit einer Mehrzahl von Hosts verwenden, die mit einer Mehrzahl von Server-Blades verbunden sind, die wiederum mit einer Mehrzahl von Plattenträgern verbunden sind. Die mehreren Platten können Datenträger sein, die von dem Speichersystem bzw. der Speichersystemarchitektur aus sichtbar sind. Jede Platte kann mehrere virtuelle Datenträger aufweisen. Die virtuellen Datenträger können von oberen Schichten der Systeme aus sichtbar sein und zum zumindest vorübergehenden Speichern von Daten verwendet werden. Ein Speichersteuerungs- bzw. Speichercontroller-Cluster kann die Virtualisierung der Speicherplatten ermöglichen. Diese Speichersteuerungskomponenten können auch Backups und Schnappschüsse auf Speicherebene, Flashkopien oder Zeitpunkt-Datenkopien von virtuellen Datenträgern ermöglichen. Diese Zeitpunkt-Datenkopien können auf Blockebene durchgeführt werden und können für verschiedene Zwecke verwendet werden.
  • Wenn Zeitpunkt-Kopien in Verbindung mit Log-strukturierten Arrays verwendet werden, können Schreiboperationen, die auf Zeitpunkt-Datenkopien ausgeführt werden, zu Lücken aufgrund interner Datenverschiebungen führen, was ungültige Datenorte erzeugt. Wenn die Lücken zunehmen, kann sich der verfügbare Speicher verringern. Garbage-Collection-Operationen werden verwendet, um Lücken aus den Log-strukturierten Arrays zu entfernen. Garbage-Collection-Operationen können rechenintensiv sein und eine Unterbrechung anderer Operationen verursachen.
  • Manche Datenspeichersysteme verwenden Dateisysteme mit Log-strukturierten Arrays (LSA-Dateisysteme). LSA-Systeme können Probleme bei der Schreibleistung einiger Datenspeichersysteme durch Puffern einer Folge von Änderungen im Dateisystem lösen. Die Änderungen können in einem Cache zwischengespeichert werden. Sobald eine geeignete Anzahl von Änderungen, ein Zeitraum oder eine andere Schwellenbedingung erfüllt ist, können die Änderungen sequentiell aus dem Cache auf eine gegebene Platte geschrieben werden. Das sequentielle Schreiben kann in einer einzigen Plattenschreiboperation ausgeführt werden. Die Änderungen können auf die Platte geschrieben werden und können Datei-Datenblöcke, Attribute, Indexblöcke, Verzeichnisse oder andere Informationen enthalten, die zum Verwalten des Dateisystems verwendet werden können.
  • Blockspeichersysteme können einen ähnlichen Ansatz für Log-strukturierten Blockspeicher verwenden. In solchen Systemen können logische Blöcke für einen Datenträger definiert sein. Die logischen Blöcke können auf die tatsächliche logische Blockadresse (LBA) der Platte verweisen. Die LBAs eines logischen Datenträgers (z.B. die LBAs für einen virtuellen Datenträger der Platte) der Blockspeichersysteme können als Log-strukturiertes Array verwaltet werden, um Schreiboperationen für das Speichersystem zu verwalten. Jede Host-Schreiboperation kann an neuen logischen LBA-Orten gespeichert werden, an denen die Datenzeiger angeordnet werden. In solchen Systemen können Schreib-E/A-Operationen und Suchzeiten für eine physische LBA des Speichersystems für jede Schreiboperation vermieden werden. Beispielsweise kann das Blockspeichersystem einen Datenträger aus einem Blockspeicher-Pool erstellen. Der Datenträger kann von einer Host-Anwendung aus zum Ausführen von E/A-Operationen auf der Platte sichtbar sein. Der Datenträger kann ihm zugeordnete logische LBAs aufweisen, die intern auf Grundlage einer Zuordnungsrichtlinie einer Speichercontrollerarchitektur für das Blockspeichersystem auf physische LBA-Orte verweisen. Auf diese Weise kann das Blockspeichersystem eine Logstrukturierte Umsetzung auf Ebene eines Speicherpools aufweisen. Ferner kann das Blockspeichersystem einen bestimmten Ort als Zeiger auf einen Ort in einem Ringpuffer aufweisen. Wenn ein Host eine Schreib-E/A auf einem Datenträger veranlasst, können die Daten auf den letzten Zeigerort des LSA geschrieben werden und der Zeiger kann an einen nächsten logischen Ort verschoben werden.
  • Wenn auf diese Weise Daten in einen Ringpuffer geschrieben werden, wird jedes Mal, wenn ein Zeiger zu einem nächsten Ort verschoben wird, ein ungültiger Ort in dem LSA des Speichercontrollers erzeugt. Der ungültige Datenspeicherort kann eine Lücke in dem LSA sein. Um aus dem Pufferspeicher gelöscht zu werden, werden Lücken Garbage-Collection-Operationen unterzogen. Während das Garbage-Collection-Verfahren eine LBA eines physischen Datenträgers in dem LSA freigibt, sind die Operationen rechenintensiv und verursachen eine Unterbrechung bei normalen E/A-Operationen. Garbage-Collection-Operationen können ausgelöst werden, wenn eine Schwellenanzahl von logischen Blöcken in dem LSA belegt ist oder eine Anzahl von Lücken über einen bestimmten Schwellenwert hinaus angestiegen ist. Während der Garbage-Collection-Operationen können die logischen und physischen LBA-Adressen geändert werden, um Orte in der Zuordnung der logischen LBAs sequentiell zu machen. Die LSA-Zeiger können aktualisiert werden, damit die zusätzlichen freigegebenen Orte der logischen LBAs von dem LSA bzw. dem Speichercontroller verwendet werden können. Wenn Garbage-Collection-Operationen verwendet werden oder häufiger werden, nehmen die Beeinträchtigungen des Speichersystems durch die Garbage-Collection-Operationen zu.
  • Blockspeichersysteme können Zeitpunkt-Datenkopierfunktionen wie beispielsweise Flashkopien verwenden, um Kopien von vollständigen Datenträgern von Daten in einer Speichereinheit zu erstellen. Eine Flashkopie stellt eine Beziehung zwischen einem Quelldatenträger und einem Zieldatenträger her. Die Flashkopie-Operation erzeugt auch eine Bitmap des Quelldatenträgers. Nachdem die Beziehung und die Bitmap erzeugt sind, kann auf den Zieldatenträger so zugegriffen werden, als ob die Daten physisch kopiert worden wären. In ähnlicher Weise kann ein Hintergrundprozess auch die Spuren vom Quellzum Zieldatenträger kopieren. Durch das Ziel bzw. die Kopie, die durch die Flashkopie-Operation erzeugt wird, wird eine Zeitpunkt-Kopie des Quelldatenträgers erzeugt, und sowohl der Quelldatenträger als auch der Zieldatenträger können Lese- und Schreib-Operationen unterzogen werden. In einigen Fällen kann ein Zieldatenträger als Flashkopie erzeugt werden, wenn neue Daten auf einen Quelldatenträger geschrieben werden sollen. In solchen Fällen können die Daten des Quelldatenträgers zu einem Zeitpunkt T als T0-Daten an den Zielort kopiert werden. Die auf den Quelldatenträger zu schreibenden Daten können als T1-Daten geschrieben werden. Das Schreiben der T1-Daten kann eine Bitmap für einen ausgewählten E/A-Ort aktualisieren. Auf diese Weise wird eine Sofortkopie des Datenträgers erstellt, während tatsächliche Daten kopiert werden, wenn Schreib-Operationen auf der Quellplatte veranlasst werden. Diese Operation kann als Copy-on-Write-Operation (COW-Operation) beschrieben werden.
  • In Log-strukturierten Arrays können speichergestützte Schnappschüsse in einer Speichervirtualisierung unter Verwendung einer COW-Operation konfiguriert sein. Wenn eine E/A-Schreiboperation an das Speichersystem gesendet wird, wird ein Ort der LBA auf Ebene eines logischen Datenträgers in einer Virtualisierungszuordnung erkannt. Von einer Virtualisierungs-Engine bzw. einem Speichercontroller kann eine bestehende Flashkopie-Beziehung geparst werden und eine Datenverschiebungsentscheidung kann getroffen werden. Wenn ein Quelldatenträger eine E/A-Schreiboperation erhält und keine vorherige Flashkopie erzeugt wurde, werden die Daten auf die Zielplatte verschoben. Eine Host-E/A-Operation kann dann auf die Quellplatte geschrieben werden. In diesen Fällen wird durch die Verschiebung von dem Quelldatenträger zum Zieldatenträger eine interne E/A-Operation erzeugt, die einen LSA-Zeiger um eins erhöht. Die interne E/A-Operation erzeugt auch eine Lücke in dem LSA. Wenn die Operation abgeschlossen ist, ist eine Host-Schreiboperation an einem letzten LSA-Zeigerort gespeichert. Diese interne Verschiebung führt zu einer Lücke in dem LSA. Wenn Quellplatten schreiborientiert sind, nimmt eine Anzahl von Lücken in dem LSA zu und eine Garbage-Collection-Operation kann ausgelöst werden. Wiederholte Garbage-Collection-Operationen können zu Leistungsproblemen und Verzögerungen für Host-Anwendungen führen, während die Garbage-Collection-Operationen verarbeitet werden.
  • Ausführungsformen der vorliegenden Offenbarung ermöglichen effiziente COW-Handhabung von Daten und -Operationen in einem LSA und ähnlichen Umsetzungen von Speichersystemen. Einige Ausführungsformen der vorliegenden Offenbarung ermöglichen es einem Speichersystem, Lücken bzw. Leerstellen in einem Log-Speicherarray oder Log-Datenträgern eines Speichersystems zu vermeiden. Die vorliegende Offenbarung kann Leerstellen in einem Log-strukturierten Array verringern oder vermeiden, indem sie Datenverschiebungen durch Schreiboperationen in einer geschichteten Weise ermöglicht. In einigen Ausführungsformen ermöglicht die vorliegende Offenbarung eine Unterscheidung zwischen internen Datenverschiebungen und Schreiboperationen der Host-Anwendungen. Einige Ausführungsformen der vorliegenden Offenbarung ermöglichen einen Mechanismus, durch den ein LSA-Algorithmus zwischen COW-Verschiebungen und Schreib-E/A-Operationen unterscheidet, um die Leistung und die Datenverwaltungseffizienz in einem Speichersystem zu erhöhen. In einigen Ausführungsformen stellt die vorliegende Offenbarung Verfahren und Systeme vor, die den Betrieb eines Log-strukturierten Arrays und von Flashkopie-Dienstmodulen in einem Speicherverwaltungssystem ermöglichen. Ausführungsformen der vorliegenden Offenbarung können einem Speichersystem Informationen bereitstellen, die Flashkopie-COW-Operationen und interne Verschiebungen von Datenblöcken zum Zeitpunkt von COW-Operationen betreffen. In einigen Ausführungsformen ermöglicht die vorliegende Offenbarung einen Datenaustausch zwischen zwei Modellen in einem Speicherverwaltungssystem für eine Umsetzung von eingehenden und ausgehenden APIs und ermöglicht einen Befehlsaustausch zwischen Funktionsmodulen des Speichersystems.
  • Einige Ausführungsformen der hierin beschriebenen Konzepte können die Form eines Systems oder eines Computerprogrammprodukts annehmen. Zum Beispiel kann ein Computerprogrammprodukt Programmanweisungen enthalten, die, wenn sie von einem oder mehreren Prozessoren eines Datenverarbeitungssystems ausgeführt werden, das Datenverarbeitungssystem veranlassen, die Operationen auszuführen, die oben in Bezug auf das von einem Computer umgesetzte Verfahren beschrieben sind. Als weiteres Beispiel kann das System Komponenten wie etwa Prozessoren und von einem Computer lesbare Speichermedien aufweisen. Die von einem Computer lesbaren Speichermedien können mit anderen Komponenten des Systems zusammenwirken, um zu bewirken, dass das System Programmanweisungen ausführt, die Operationen des hierin beschriebenen von einem Computer umgesetzten Verfahrens aufweisen. Im Sinne dieser Beschreibung kann ein von einem Computer verwendbares oder von einem Computer lesbares Medium jede Einheit sein, die Mittel zum Speichern, Übertragen, Verbreiten oder Transportieren des Programms zur Verwendung durch das System, die Vorrichtung oder Einheit zum Ausführen der Anweisungen oder im Zusammenhang mit diesen enthalten kann.
  • Unter Bezugnahme auf 1 ist ein Blockschaubild einer beispielhaften Datenverarbeitungsumgebung 100 gezeigt. Die vorliegende Offenbarung kann in der beispielhaften Datenverarbeitungsumgebung 100 umgesetzt werden. In einigen Ausführungsformen kann die Datenverarbeitungsumgebung 100 in ein Computersystem wie unten beschrieben integriert oder von diesem verkörpert sein. Die Datenverarbeitungsumgebung 100 kann ein Speicherverwaltungssystem 102 umfassen. Das Speicherverwaltungssystem 102 kann einen Speichercontroller 110, einen Flashkopie-Manager 120 und eine Array-Komponente 130 umfassen. Der Speichercontroller 110 erhält Anforderungen für einen oder mehrere Speicherdatenträger und koordiniert Operationen für Platten, die zu dem Speicherverwaltungssystem 102 gehören. Der Flashkopie-Manager 120 führt Operationen in Bezug auf virtuelle Speicherdatenträger für Platten durch, die zu dem Speicherverwaltungssystem 102 gehören. Die Array-Komponente 130 führt Operationen in Bezug auf ein Log-strukturiertes Array von Platten aus, die zu dem Speicherverwaltungssystem 102 gehören. Obwohl sie als getrennte Komponenten beschrieben sind, versteht es sich, dass in zumindest einigen Ausführungsformen die Komponenten kombiniert oder aufgeteilt werden können und/oder zusätzliche Komponenten hinzugefügt werden können, ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • Unter Bezugnahme auf 2 ist ein Flussdiagramm eines von einem Computer umgesetzten Verfahrens 200 gezeigt. Das von einem Computer umgesetzte Verfahren 200 ist ein Verfahren zum Verwalten von E/A-Operationen in LSA-Umgebungen. In einigen Ausführungsformen kann das von einem Computer umgesetzte Verfahren 200 von einer oder mehreren Komponenten der Datenverarbeitungsumgebung 100 ausgeführt werden, wie unten ausführlicher beschrieben wird.
  • Bei Operation 210 erhält der Speichercontroller 110 eine Schreibanforderung für einen Speicherdatenträger. In einigen Ausführungsformen umfasst die Schreibanforderung einen Datensatz. Der Speicherdatenträger kann ein einzelner Speicherdatenträger einer Mehrzahl von Speicherdatenträgern sein, auf die das Speicherverwaltungssystem 102 zugreifen kann oder die von diesem verwaltet werden. Die Schreibanforderung kann von einem Host erhalten werden, der mit einem Satz von Platten oder einem Speichersystem interagiert, die mit dem Speicherverwaltungssystem 102 verbunden sind. In einigen Ausführungsformen kann der Host eine Datenverarbeitungseinheit sein, die von einem Benutzer betrieben wird und mit einem vom Host entfernt angeordneten Speichersystem oder Satz von Platten interagiert. Zum Beispiel kann der Host über ein Datenübertragungsnetzwerk eine Schreibanforderung an den Speichercontroller 110 übertragen. Der Speichercontroller 110 kann die Schreibanforderung erhalten, um die Schreibanforderung auf einem Datenträger in einem Cloud-gestützten Speichersystem zu verarbeiten und umzusetzen.
  • Bei Operation 220 ermittelt der Flashkopie-Manager 120 einen Copy-on-Write-Status (COW-Status) bei dem von der Schreibanforderung betroffenen Speicherdatenträger. In einigen Ausführungsformen ermittelt der Flashkopie-Manager 120 den COW-Status, indem er feststellt, dass für den Speicherdatenträger in dem Speichersystem eine COW-Funktionalität aktiviert ist. Der Flashkopie-Manager kann den COW-Status für den Speicherdatenträger auf Grundlage einer oder mehrerer Konfigurationsdateien für den Speicherdatenträger, eine Platte, die den Speicherdatenträger beherbergt, oder das Speichersystem ermitteln, zu dem der Speicherdatenträger oder die Platte gehören.
  • Bei Operation 230 stellt der Flashkopie-Manager 120 fest, dass der Datensatz für den Zielbereich des Speicherdatenträgers nicht an einen Zielort kopiert wurde. Der Flashkopie-Manager 120 kann auf Grundlage einer Zielzuordnung für einen Flashkopie-Datenträger ermitteln, dass der Datensatz nicht kopiert wurde. Die Zielzuordnung kann Daten wiedergeben, die an festgelegten Datenorten für einen Zieldatenträger gespeichert sind. In manchen Fällen gibt die Zielzuordnung Daten in einer Flashkopie eines Datenträgers (z.B. eines Quelldatenträgers) zu einem bestimmten Zeitpunkt wieder. Zum Beispiel kann der Zieldatenträger ein Zieldatenträger bei T0 sein.
  • In einigen Ausführungsformen tauscht der Flashkopie-Manager 120 Daten mit der Array-Komponente 130 unter Verwendung eines Out-of-Band-Protokolls aus. Der Flashkopie-Manager 120 kann mit der Array-Komponente 130 unter Verwendung von reservierten Feldern in einem Schreib-Befehlsbeschreibungsblock (Command Descriptor Block, CDB) wie etwa einem SCSI-CDB („Small Computer System Interface“) Daten austauschen. Der SCSI-CDB kann ein Informationsblock sein, der einen Befehl beschreibt. Jeder CDB kann insgesamt 6, 10, 12 oder 16 oder eine beliebige geeignete variable Länge an Bytes aufweisen. In einigen Fällen tauschen der Flashkopie-Manager 120 und die Array-Komponente 130 unter Verwendung sowohl des Out-of-Band-Protokolls als auch der reservierten Felder in dem CDB als Schichten in dem Speicherverwaltungssystem 102 Daten aus. Der Flashkopie-Manager 120 und die Array-Komponente 130 leiten Informationen über Schichten oder unter Verwendung irgendeines anderen geeigneten unabhängigen Mechanismus' weiter. In einigen Ausführungsformen kann eine Heatmap von einem Speichersystem zu einem anderen übertragen werden. Die Heatmap kann übertragen werden, um sicherzustellen, dass Remote-Kopien, die beim Zugriff auf entfernt angeordnete Standorte fehlschlagen können, bestimmte Daten in einem gegebenen Speicherdatenträger, einer gegebenen Platte oder SSD beibehalten.
  • Bei Operation 240 weist die Array-Komponente 130 ein Log-strukturiertes Array (LSA) an, eine interne COW-Operation durchzuführen. Die interne COW-Operation kann für den Datensatz während einer nächsten Eingabe/Ausgabe-Operation (E/A-Operation) für den Speicherdatenträger ausgeführt werden. In einigen Ausführungsformen überträgt der Flashkopie-Manager 120 Anweisungen an einen als LSA konfigurierten Speicherpool. Die Anweisungen geben an, dass eine nächste E/A-Operation eine interne COW-Operation sein wird. Die interne COW-Operation kann den Datensatz der Schreibanforderung auf einen virtuellen Datenträger (z.B. einen Quelldatenträger) schreiben. Bevor der Datensatz geschrieben wird, kann die interne COW-Operation auch eine Kopie des virtuellen Datenträgers als Flashkopie-Datenträger (z.B. Zieldatenträger) erzeugen. Die Anweisungen können angeben, dass der internen COW-Operation eine tatsächliche E/A-Schreiboperation des Anwendungshosts folgen soll.
  • Bei Operation 250 verschiebt der Speichercontroller 110 einen internen Zeiger des Zielorts von einem virtuellen Datenträger zu dem Flashkopie-Datenträger. In einigen Ausführungsformen wird der interne Zeiger auf Grundlage der Anweisung für ein internes COW verschoben. In solchen Fällen wird die Anweisung für ein internes COW als Nachricht an eine Lückenverhinderungsvorrichtung in dem Speichercontroller 110 zum Verschieben des internen Zeigers behandelt. In Ausführungsformen, bei denen der Datensatz auf den Quelldatenträger geschrieben wird und ein Zieldatenträger als Flashkopie erzeugt wird, wird der interne Zeiger des Zielspeicherorts von einem Ort im Quelldatenträger zu einem Ort im Zieldatenträger verschoben. Das Verschieben des internen Zeigers des Zielorts auf den Zieldatenträger bzw. Flashkopie-Datenträger verhindert, dass eine Lücke in dem LSA auftritt, weil der Datensatz der Schreibanforderung auf den virtuellen Datenträger bzw. den Quelldatenträger geschrieben wird. Nachdem der Flashkopie-Datenträger eingerichtet und der interne Zeiger verschoben wurde, ist die ältere Version der Daten in dem LSA, die zu der Schreibanforderung gehören, einem Zeiger zugeordnet, der auf den Flashkopie-Datenträger zeigt und der die ältere logische Quell-LBA wiedergibt.
  • Bei Operation 260 aktualisiert die Array-Komponente 130 eine Bitmap für das LSA. In einigen Ausführungsformen wird die Bitmap als Reaktion auf die Änderung des internen Zeigers aktualisiert. Wenn der interne Zeiger verschoben wurde, kann die Bitmap für das LSA durch die Array-Komponente 130 aktualisiert und eine Anweisung an den Flashkopie-Manager 120 gesendet werden, die Datenträgerkopien in Flashkopie-Datenträgern konsistent zu machen. Nach Beendigung der Bitmap-Aktualisierung und der Herstellung der Konsistenz der Datenträgerkopien kann eine Host-Anwendung normal behandelt werden und einen LSA-Zeiger erhöhen und Daten an einem nächsten Ort in einem Ringpuffer speichern. In solchen Fällen kann ein neuer Zeiger für den Datensatz der Schreibanforderung den virtuellen Datenträger oder den Quelldatenträger mit dem Datensatz an einem neuen Ort in dem LSA verbinden.
  • Da bei einer COW-Operation der interne Zeiger verschoben und der neue Zeiger erzeugt wird, ist die eigentliche Datenkopie auf eine physische Platte nicht erforderlich. Das Erzeugen einer Flashkopie mithilfe von COW und das Verschieben von Zeigern verringert E/A-Verschiebungen auf physischen Orte. Die Verringerung der E/A-Verschiebungen kann Rechenzeit und Ressourcen verringern, die zum funktionellen Ausführen der Schreibanforderung erforderlich sind. Die Begrenzung der E/A-Verschiebungen kann die Leistung eines zugehörigen Speichersystems erhöhen. Weiterhin minimiert die Verwendung von COW und das Verschieben der Zeiger Lücken in dem Log-strukturierten Array, wodurch die Häufigkeit von Garbage-Collection-Operationen an dem LSA verringert wird. Eine verringerte Häufigkeit von Garbage-Collection-Operationen kann auch den Zustand und die Lebensdauer von SSD-Platten erhöhen.
  • 3 zeigt ein Flussdiagramm einer Ausführungsform eines von einem Computer umgesetzten Verfahrens 300 zum Verwalten von E/A-Operationen in LSA-Umgebungen. Das Verfahren 300 kann von der Datenverarbeitungsumgebung 100 oder innerhalb derselben durchgeführt werden. In einigen Ausführungsformen umfasst oder verwendet das Verfahren 300 eine oder mehrere Operationen des Verfahrens 200.
  • In Operation 310 erkennt der Speichercontroller 110 einen virtuellen Datenträger für einen Speicherdatenträger, der einer Schreibanforderung zugeordnet ist. Der virtuelle Datenträger kann als Reaktion darauf erkannt werden, dass der Speichercontroller 110 eine Schreibanforderung erhält, die einen Satz von Daten enthält, die auf den Speicherdatenträger geschrieben werden sollen. In einigen Ausführungsformen arbeitet der Speichercontroller 110 mit dem Flashkopie-Manager 120 zusammen, um den virtuellen Datenträger zu erkennen. Der virtuelle Datenträger kann ein Puffer oder Cache für einen physischen Datenträger zur Datenspeicherung (z.B. den Speicherdatenträger) sein.
  • In Operation 320 erkennt der Speichercontroller 110 einen Flashkopie-Datenträger für den Speicherdatenträger. Die Flashkopie kann eine Kopie des virtuellen Speicherdatenträgers zu einem bestimmten Zeitpunkt sein. In einigen Ausführungsformen ist der Flashkopie-Datenträger eine zuvor erzeugte Kopie des virtuellen Datenträgers. Der Flashkopie-Datenträger kann eine vollständige Kopie der Daten in dem virtuellen Datenträger zu einem bestimmten Zeitpunkt enthalten. Der bestimmte Zeitpunkt kann jederzeit vor dem Empfang der Schreibanforderung liegen. Wenn kein Flashkopie-Datenträger erkannt wird, kann der Flashkopie-Manager 120 angewiesen werden, eine Flashkopie des virtuellen Datenträgers zu einem Zeitpunkt, zu dem der virtuelle Datenträger von dem Speichercontroller 110 erkannt wird, oder zu einem Zeitpunkt zu erzeugen, zu dem die Schreibanforderung erhalten wird. In einigen Fällen wird der Flashkopie-Datenträger als Reaktion auf eine oder mehrere der Operationen 220 und 230 erkannt oder erzeugt.
  • In Operation 330 überschreibt die Array-Komponente 130 den Datensatz auf den virtuellen Datenträger. In einigen Ausführungsformen ersetzt der Datensatz einen Satz früherer Werte in dem virtuellen Datenträger. In einigen Fällen überschreibt die Array-Komponente 130 den Datensatz in dem virtuellen Datenträger durch Einfügen des Datensatzes in eine logische LBA-Zuordnung für den virtuellen Datenträger.
  • In Operation 340 verschiebt der Speichercontroller 110 einen ersten internen Zeiger des Zielorts vom virtuellen Datenträger zum Flashkopie-Datenträger. In einigen Ausführungsformen wird der erste interne Zeiger auf Grundlage der Anweisung für ein internes COW verschoben. Der erste interne Zeiger kann auf ähnliche oder gleiche Weise wie in Bezug auf Operation 250 beschrieben verschoben werden.
  • In Operation 350 erzeugt der Speichercontroller 110 einen zweiten internen Zeiger für den Datensatz in dem virtuellen Datenträger. In einigen Ausführungsformen wird der zweite interne Zeiger so erzeugt, dass er von dem Datensatz in dem virtuellen Datenträger auf einen Ort in einer Zuordnung der logischen Blockadressen (LBA-Zuordnung) eines physischen Datenträgers für den Speicherdatenträger verweist.
  • In Operation 360 löst der Speichercontroller 110 eine Bitmap-Aktualisierung für die LBA-Zuordnung des physischen Datenträgers bei dem LSA aus. In einigen Ausführungsformen wird die Bitmap-Aktualisierung auf Grundlage des Verschiebens des ersten internen Zeigers und des Erzeugens des zweiten internen Zeigers ausgelöst.
  • Ausführungsformen der vorliegenden Offenbarung können zusammen mit fast jeder Art von Computer umgesetzt werden, unabhängig davon, ob die Plattform zum Speichern und/oder Ausführen eines bestimmten Programmcodes geeignet ist. 4 zeigt als ein Beispiel ein Computersystem 400 (z.B. ein Cloud-Computing-System), das zum Ausführen von Programmcode in Bezug auf die hierin offenbarten Verfahren und zum Verwalten von E/A-Operationen in LSA-Umgebungen geeignet ist.
  • Das Computersystem 400 ist nur ein Beispiel für ein geeignetes Computersystem und soll keine Einschränkung hinsichtlich des Anwendungsbereichs oder der Funktionalität von Ausführungsformen der hierin beschriebenen vorliegenden Offenbarung nahe legen, unabhängig davon, ob das Computersystem 400 mit einer der oben dargelegten Funktionalitäten umgesetzt werden und/oder diese ausführen kann. In dem Computersystem 400 gibt es Komponenten, die mit zahlreichen anderen Allzweck- oder Spezial-Datenverarbeitungssystemumgebungen oder -konfigurationen verwendbar sind. Beispiele für bekannte Datenverarbeitungssysteme, -umgebungen und/oder - konfigurationen, die zur Verwendung mit dem Computersystem/Server 400 geeignet sein können, umfassen ohne Einschränkung Personal-Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, Hand-Held- oder Laptopeinheiten, Multiprozessorsysteme, mikroprozessorgestützte Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerkcomputer, Minicomputersysteme, Mainframe-Computer-Systeme und verteilte Cloud-Computing-Umgebungen, die beliebige der oben genannten Systeme oder Einheiten umfassen, und dergleichen. Das Computersystem/der Server 400 kann im allgemeinen Kontext von durch das Computersystem ausführbaren Anweisungen beschrieben werden, beispielsweise Programmmodulen, die von dem Computersystem 400 ausgeführt werden. Im Allgemeinen können die Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. umfassen, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 400 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, bei denen Aufgaben von Fernverarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokalen als auch auf entfernt angeordneten Computersystem-Speichermedien wie beispielsweise Speichereinheiten befinden.
  • Wie in der Figur gezeigt, ist das Computersystem/der Server 400 in Form einer Allzweck-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/Servers 400 können einen oder mehrere Prozessoren 402 (z.B. Verarbeitungseinheiten), einen Systemspeicher 404 (z.B. ein von einem Computer lesbares Speichermedium, das mit dem einen oder den mehreren Prozessoren verbunden ist) und einen Bus 406 umfassen, der verschiedene Systemkomponenten wie beispielsweise den Systemspeicher 404 mit dem Prozessor 402 verbindet, sind aber nicht darauf beschränkt. Der Bus 406 stellt eine oder mehrere von mehreren Arten von Busstrukturen dar, beispielsweise eines Speicherbusses oder einer Speichersteuerung, eines Peripheriebusses, eines Accelerated Graphics Port und eines Prozessor- oder lokalen Busses, unter Verwendung einer Vielfalt von Busarchitekturen. Beispielhaft und nicht einschränkend umfassen solche Architekturen einen ISA-Bus („Industry Standard Architecture“), einen MCA-Bus („Micro Channel Architecture“), einen EISA-Bus („Enhanced ISA“), einen lokalen VESA-Bus („Video Electronics Standards Association“) und einen PCI-Bus („Peripheral Component Interconnects“). Das Computersystem/der Server 400 umfasst üblicherweise eine Vielfalt von einem Computersystem lesbare Medien. Solche Medien können alle verfügbaren Medien sein, auf die das Computersystem/der Server 400 zugreifen kann, und sie umfassen sowohl flüchtige als auch nichtflüchtige Medien, austauschbare und nicht austauschbare Medien.
  • Der Systemspeicher 404 kann vom Computersystem lesbare Medien in Form von flüchtigem Speicher umfassen, beispielsweise Direktzugriffsspeicher (RAM) 408 und/oder Cache-Speicher 410. Das Computersystem/der Server 400 kann ferner weitere austauschbare/nicht austauschbare, flüchtige/nichtflüchtige Speichermedien des Computersystems umfassen. Nur beispielhaft kann ein Speichersystem 412 zum Lesen und Beschreiben eines nicht austauschbaren, nichtflüchtigen magnetischen Mediums (nicht gezeigt und üblicherweise als „Festplatte“ bezeichnet) vorgesehen sein. Obwohl nicht gezeigt, können ein Magnetplattenlaufwerk zum Lesen und Beschreiben einer austauschbaren, nichtflüchtigen Magnetplatte (z.B. einer „Diskette“) und ein Laufwerk für optische Platten zum Lesen oder Beschreiben einer austauschbaren, nichtflüchtigen optischen Platte wie einer CD-ROM, DVD-ROM oder eines anderen optischen Mediums vorgesehen sein. In solchen Fällen können diese jeweils über eine oder mehrere Medien-Datenschnittstellen mit dem Bus 406 verbunden sein. Wie nachstehend weiter gezeigt und beschrieben, kann der Systemspeicher 404 mindestens ein Programmprodukt mit einem Satz (z.B. mindestens einem) von Programmmodulen enthalten, die zum Ausführen der Funktionen von Ausführungsformen der vorliegenden Offenbarung konfiguriert sind.
  • Es können das Programm/der Dienst mit einem Satz (mindestens einem) von Programmmodulen 416 ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten beispielhaft und nicht einschränkend im Systemspeicher 404 gespeichert sein. Die Programmmodule können eines oder mehrere des Speichercontrollers 110, des Flashkopie-Managers 120 und der Array-Komponente 130 umfassen, die in 1 gezeigt sind. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, die anderen Programmmodule und die Programmdaten und/oder eine Kombination davon können eine Umsetzung einer Netzwerkumgebung umfassen. Die Programmmodule 416 führen im Allgemeinen die Funktionen und/oder Verfahren von Ausführungsformen der vorliegenden Offenbarung wie hierin beschrieben aus.
  • Das Computersystem/der Server 400 kann auch mit einem oder mehreren externen Einheiten 418 Daten austauschen, beispielsweise einer Tastatur, einem Zeigegerät, einer Anzeige 420 usw.; einer oder mehreren Einheiten, die es einem Benutzer erlauben, mit dem Computersystem/Server 400 zu interagieren; und/oder einer oder mehreren Einheiten (z.B. einer Netzwerkkarte, einem Modem usw.), die es dem Computersystem/Server 400 erlauben, mit einem oder mehreren anderen Recheneinheiten Daten auszutauschen. Eine solche Datenübertragung kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 414 erfolgen. Noch weiter kann das Computersystem/der Server 400 über einen Netzwerkadapter 422 mit einem oder mehreren Netzwerken wie einem lokalen Netzwerk (LAN), einem Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet) Daten austauschen. Wie gezeigt, kann der Netzwerkadapter 422 mit den anderen Komponenten des Computersystems/Servers 400 über den Bus 406 Daten austauschen. Es versteht sich, dass andere Hardware- und/oder Softwarekomponenten, obwohl nicht gezeigt, in Verbindung mit dem Computersystem/Server 400 verwendet werden könnten. Beispiele hierfür sind unter anderem: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Festplattenarrays, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
  • Es sei von vornherein klargestellt, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing umfasst. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften umfassen, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
  • Die Dienstmodelle können Software as a Service (SaaS), Platform as a Service (PaaS), und Infrastructure as a Service (laaS) umfassen. Bei SaaS besteht die dem Nutzer bereitgestellte Funktion darin, Anwendungen des Anbieters zu verwenden, die in einer Cloud-Infrastruktur ausgeführt werden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen. Bei PaaS besteht die dem Nutzer bereitgestellte Funktion darin, durch einen Nutzer erstellte bzw. erworbene Anwendungen in der Cloud-Infrastruktur einzusetzen, die unter Verwendung von durch den Anbieter unterstützte Programmiersprachen und Werkzeuge erstellt wurden. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment. Bei laaS besteht die dem Nutzer bereitgestellte Funktion darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bereitstellungsmodelle können Private Cloud, Community Cloud, Public Cloud und Hybrid Cloud umfassen. Bei Private Cloud wird die Cloud-Infrastruktur einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden. Bei Community Cloud wird die Cloud-Infrastruktur von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden, der in den eigenen Räumen oder fremden Räumen angesiedelt sein kann. Bei Public Cloud wird Cloud-Infrastruktur der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation. Bei Hybrid Cloud ist die Cloud-Infrastruktur eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netz aus zusammengeschalteten Knoten aufweist.
  • Unter Bezugnahme auf 5 ist eine beispielhafte Cloud-Computing-Umgebung 50 gezeigt. Wie gezeigt, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der elektronische Assistent (PDA, personal digital assistant) oder das Mobiltelefon 54A, der Desktop-Computer 54B, der Laptop-Computer 54C und/oder das Automobil-Computer-System 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie private, Benutzergemeinschafts-, öffentliche oder hybride Clouds gruppiert werden (nicht gezeigt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten von in 5 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich beispielhaft sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 6 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (5) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 6 gezeigten Komponenten, Schichten und Funktionen lediglich beispielhaft sein sollen und Ausführungsformen der Offenbarung nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 umfasst Hardware- und SoftwareKomponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 61; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen SoftwareKomponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Datenbank-Software 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71, virtueller Speicher 72, virtuelle Netzwerke 73, darunter virtuelle private Netzwerke, virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann die Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 82 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen umfassen. Die Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
  • Eine Arbeitslastschicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalytikverarbeitung 94; Transaktionsverarbeitung 95; und Speicherverwaltungsverarbeitung 96.
  • Die Cloud-Modelle können Merkmale wie On-Demand Self-Service, Broad Network Access, Ressourcen-Pooling, Rapid Elasticity und Measured Service umfassen. Bei On-Demand Self-Service kann ein Cloud-Nutzer einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist. Bei Broad Network Access sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen. Bei Resource-Pooling werden die Datenverarbeitungsressourcen des Anbieters zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum). Bei Rapid Elasticity können Funktionen für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden. Bei Measured Service steuern und optimieren Cloud-Systeme die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Nutzung von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Die Beschreibung der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurde zum Zweck der Veranschaulichung angegeben, ist aber nicht als erschöpfend oder auf die offenbarten Ausführungsformen beschränkt anzusehen. Viele Modifikationen und Varianten sind für Fachleute offensichtlich, ohne vom Umfang und Geist der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde ausgewählt, um die Grundsätze der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber Technologien, die am Markt vorhanden sind, am besten zu beschreiben oder anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.
  • Die vorliegende Erfindung kann als ein System, ein Verfahren und/oder ein Computerprogrammprodukt ausgeführt sein. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Das von einem Computer lesbare Speichermedium kann ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarotsystem oder ein Halbleitersystem für ein Ausbreitungsmedium sein. Beispiele für ein von einem Computer lesbares Medium können ein Halbleiter- bzw. Solid-State-Speicher, ein Magnetband, eine austauschbare Computerdiskette, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), eine starre Magnetplatte und eine optische Platte sein. Heutige Beispiele für optische Platten umfassen CD-ROM („Compact Disk Read Only Memory“), CD-RW („Compact Disk Read/Write“), DVD und Blu-Ray-Disk.
  • 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 erhabene 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. Lichtwellenleiterkabel durchlaufende 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 objektorientierte Programmiersprachen wie 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, vor Ort 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 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, andere programmierbare Datenverarbeitungsvorrichtungen 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, anderen programmierbaren Vorrichtungen 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/oder 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 zeigen, 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 hierin verwendete Terminologie dient nur der Beschreibung bestimmter Ausführungsformen und soll die vorliegende Offenbarung nicht einschränken. Wie hierin verwendet, sollen die Singularformen „ein“ und „der/die/das“ auch die Pluralformen umfassen, es sei denn, der Kontext zeigt es deutlich anders an. Es versteht sich ferner, dass die Begriffe „weist auf“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementen und/oder Komponenten anzeigen, aber das Vorhandensein oder Hinzufügen von weiteren Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementen, Komponenten und/oder Gruppen davon nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Äquivalente aller Mittel oder Step-Plus-Function-Elementen in den nachfolgenden Ansprüchen sollen jede Struktur, jedes Material oder jeder Vorgang zur Ausführung der Funktion in Kombination mit anderen beanspruchten Elementen, wie sie speziell beansprucht sind, umfassen. Die Beschreibung der vorliegenden Offenbarung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgestellt, soll jedoch in der offenbarten Form nicht als erschöpfend oder auf die vorliegende Offenbarung beschränkt verstanden werden. Fachleuten werden viele Modifikationen und Variationen offensichtlich sein, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Die Ausführungsformen wurden gewählt und beschrieben, um die Grundsätze der vorliegenden Offenbarung und der praktischen Anwendung zu erläutern und es anderen Fachleuten zu ermöglichen, die vorliegende Offenbarung für verschiedene Ausführungsformen mit verschiedenen Modifikationen zu verstehen, die für die jeweilige betrachtete Verwendung geeignet sind.
  • Die Beschreibung der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurde zum Zweck der Veranschaulichung angegeben, ist aber nicht als erschöpfend oder auf die offenbarten Ausführungsformen beschränkt anzusehen. Viele Modifikationen und Varianten sind für Fachleute offensichtlich, ohne vom Umfang und Geist der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundsätze der Ausführungsformen, die praktische Anwendung oder die technischen Verbesserungen gegenüber am Markt vorhandenen Technologien zu beschreiben oder anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.

Claims (9)

  1. Durch einen Computer umgesetztes Verfahren, aufweisend: Empfangen einer Schreibanforderung für einen Speicherdatenträger durch einen Speichercontroller, wobei die Schreibanforderung einen Datensatz umfasst; Ermitteln auf Grundlage einer Zielzuordnung für einen Flashkopie-Datenträger, dass der Datensatz für einen Zielbereich des Speicherdatenträgers nicht an einen Zielort kopiert wurde; Anweisen eines Log-strukturierten Arrays (LSA), ein internes Copy-on-Write (COW) für den Datensatz während einer nächsten Eingabe/Ausgabe-Operation (E/A-Operation) für den Speicherdatenträger durchzuführen; und Verschieben, auf Grundlage der Anweisung für ein internes COW, eines internen Zeigers des Zielorts von einem virtuellen Datenträger auf den Flashkopie-Datenträger.
  2. Verfahren nach Anspruch 1, ferner aufweisend: als Reaktion auf das Verschieben des internen Zeigers, Aktualisieren einer Bitmap für das LSA.
  3. Verfahren nach Anspruch 1, ferner aufweisend: Ermitteln eines COW-Status auf dem von der Schreibanforderung betroffenen Speicherdatenträger.
  4. Verfahren nach Anspruch 1, ferner aufweisend: Erkennen des virtuellen Datenträgers für den Speicherdatenträger; und Erkennen des Flashkopie-Datenträgers für den Speicherdatenträger.
  5. Verfahren nach Anspruch 4, ferner aufweisend: Überschreiben des Datensatzes auf den virtuellen Datenträger, wobei der Datensatz einen Satz früherer Werte in dem virtuellen Datenträger ersetzt.
  6. Verfahren nach Anspruch 5, wobei der interne Zeiger ein erster interner Zeiger ist, wobei das Verfahren ferner aufweist: Erzeugen eines zweiten internen Zeigers für den Datensatz in dem virtuellen Datenträger auf einen Ort in einer Zuordnung für logische Blockadressen (LBA-Zuordnung) eines physischen Datenträgers für den Speicherdatenträger.
  7. Verfahren nach Anspruch 6, ferner aufweisend: Auslösen einer Bitmap-Aktualisierung für die LBA-Zuordnung des physischen Datenträgers an dem LSA auf Grundlage des Verschiebens des ersten internen Zeigers und des Erzeugens des zweiten internen Zeigers.
  8. System, aufweisend: einen oder mehrere Prozessoren; und ein von einem Computer lesbares Speichermedium, das mit dem einen oder den mehreren Prozessoren verbunden ist und Programmanweisungen enthält, die bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren veranlassen, das Verfahren nach einem der Ansprüche 1 bis 7 auszuführen.
  9. Computerprogrammprodukt, aufweisend ein von einem Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen, wobei die Programmanweisungen durch einen oder mehrere Prozessoren ausführbar sind, um den einen oder die mehreren Prozessoren zu veranlassen, das Verfahren nach einem der Ansprüche 1 bis 7 auszuführen.
DE102021130358.3A 2020-12-01 2021-11-19 E/a-operationen in log-strukturierten arrays Pending DE102021130358A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/108,068 2020-12-01
US17/108,068 US11467735B2 (en) 2020-12-01 2020-12-01 I/O operations in log structured arrays

Publications (1)

Publication Number Publication Date
DE102021130358A1 true DE102021130358A1 (de) 2022-06-02

Family

ID=79163602

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021130358.3A Pending DE102021130358A1 (de) 2020-12-01 2021-11-19 E/a-operationen in log-strukturierten arrays

Country Status (5)

Country Link
US (1) US11467735B2 (de)
JP (1) JP2022087843A (de)
CN (1) CN114579043A (de)
DE (1) DE102021130358A1 (de)
GB (1) GB2604974B (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11782641B2 (en) * 2021-06-09 2023-10-10 International Business Machines Corporation Backend aware virtualized storage
CN115826878B (zh) * 2023-02-14 2023-05-16 浪潮电子信息产业股份有限公司 一种写时拷贝方法、装置、设备及计算机可读存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237021B1 (en) 1998-09-25 2001-05-22 Complex Data Technologies, Inc. Method and apparatus for the efficient processing of data-intensive applications
GB0030226D0 (en) 2000-12-12 2001-01-24 Ibm A data storage system and a method of storing data including a multi-level cache
GB0104469D0 (en) 2001-02-23 2001-04-11 Ibm Log-structured array
US7171516B2 (en) 2003-09-29 2007-01-30 International Business Machines Corporation Increasing through-put of a storage controller by autonomically adjusting host delay
US8935493B1 (en) 2011-06-30 2015-01-13 Emc Corporation Performing data storage optimizations across multiple data storage systems
US20140136884A1 (en) 2012-11-15 2014-05-15 Lsi Corporation Read disturb handling for non-volatile solid state media
US9904598B2 (en) 2015-04-21 2018-02-27 Commvault Systems, Inc. Content-independent and database management system-independent synthetic full backup of a database based on snapshot technology
US20170032005A1 (en) 2015-07-31 2017-02-02 Netapp, Inc. Snapshot and/or clone copy-on-write
US9940041B2 (en) * 2015-09-21 2018-04-10 International Business Machines Corporation Copy-redirect on write
US10514986B2 (en) 2015-09-30 2019-12-24 Commvault Systems, Inc. Dynamic triggering of block-level backups based on block change thresholds and corresponding file identities in a data storage management system
US10146631B1 (en) 2015-09-30 2018-12-04 EMC IP Holding Company LLC Incremental forever backups for exchange

Also Published As

Publication number Publication date
GB202116550D0 (en) 2021-12-29
GB2604974A (en) 2022-09-21
US11467735B2 (en) 2022-10-11
CN114579043A (zh) 2022-06-03
JP2022087843A (ja) 2022-06-13
US20220171537A1 (en) 2022-06-02
GB2604974B (en) 2023-05-03

Similar Documents

Publication Publication Date Title
DE112016003120B4 (de) Umleiten einer Kopie beim Schreiben
DE112018004008B4 (de) Auf dateisysteminhalten beruhende sicherheit
DE112019000321T5 (de) Transaktionsoperationen in verteilten Multi-Master-Datenverwaltungssystemen
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE112012005032T5 (de) Entfernen der Datenremanenz in deduplizierten Speicher-Clouds
DE112017005588T5 (de) Speichern und abrufen von eingeschränkten datensätzen in und aus einem cloud-netzwerk mit nichteingeschränkten datensätzen
DE112012005037T5 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112020004840B4 (de) Speicherbereinigung in datenspeichersystemen
DE102021130358A1 (de) E/a-operationen in log-strukturierten arrays
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112017005772T5 (de) Zeitpunktgesteuerte sicherungen über einen speicher-controller in eine objektspeicher-cloud
DE112020002164T5 (de) Sichere datenspeicherung auf der grundlage von verschleierung durch verteilung
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE112019000399B4 (de) Schnelle wiederherstellung nach ausfällen in einem chronologisch geordneten log-strukturierten schlüssel-wert-speichersystem
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE112021005233T5 (de) Verbesserte anwendungsleistung durch verwenden vonspeichersystemoptimierung
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE112019000402T5 (de) Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem
DE112019003130T5 (de) Hsm-selbstzerstörung in einer hybriden cloud-kms-lösung
DE112020004522T5 (de) Erhöhen der leistungsfähigkeit von frame-übergreifenden live-aktualisierungen
DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
DE112021000408T5 (de) Prädiktives bereitstellen von fern gespeicherten dateien
DE112021003031T5 (de) Archivieren von nur-beschleuniger-datenbanktabellen
DE102021125847A1 (de) Auf blockchain beruhende reservierung und delegierung von diensten
DE112021003615T5 (de) Schutz vor logischer beschädigung für daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, A, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, US

R084 Declaration of willingness to licence