-
TECHNISCHER BEREICH
-
Die vorliegende Erfindung bezieht sich auf Datenmigration, genauer gesagt, auf die Migration von Daten aus einem ersten Extent-Pool in einen zweiten Extent-Pool mit einer kleineren Granularität als der erste Extent-Pool.
-
HINTERGRUND
-
Extent-Pools in Speicherprodukten können unterschiedliche Extent-Größen haben. Beispielsweise kann eine 1 GB-Extent-Größe für einen großen Extent-Pool und eine 16 MB-Extent-Größe für einen kleinen Extent-Pool implementiert sein. Einige Arbeitslasten können in einem kleinen Extent-Pool im Vergleich zu einem großen Extent-Pool besser funktionieren. Die aktuellen Verfahren zur Datenübertragung sind jedoch teuer und erfordern die Verwendung eines Hosts zum Kopieren der Daten oder die Implementierung einer Flash-Kopie. Daher besteht ein Bedarf an einer effizienten Migration von Speichereinheiten aus großen Extent-Pools in kleine Extent-Pools.
-
SUMMARY
-
Ein computerimplementiertes Verfahren gemäß einer Ausführungsform weist das Identifizieren einer Anforderung zum Migrieren von Daten auf, die einem Volume (Speichereinheit) zugeordnet sind, von einem Quellspeicher-Pool mit einer ersten Rang-Extent-Größe zu einem Zielspeicher-Pool mit einer zweiten Rang-Extent-Größe, die kleiner als die erste Rang-Extent-Größe ist, Erzeugen einer Beziehung zwischen logischen Volume-Extents des Volumens und physischen Offset-Positionen innerhalb von Rang-Extents des Quellspeicher-Pools, und Migrieren von Daten von einem oder mehreren Rängen des Quellspeicher-Pools zu einem oder mehreren Rängen des Zielspeicher-Pools unter Verwendung der Beziehung zwischen den logischen Volume-Extents des Volumens und den physischen Offset-Positionen innerhalb der Rang-Extents des Quellspeicher-Pools.
-
Auf diese Weise werden Daten von einem Quellspeicher-Pool zu einem Zielspeicher-Pool migriert, dessen Rang-Extent-Größe kleiner ist als die Rang-Extent-Größe des Quellspeicher-Pools, ohne dass ein Host zum Kopieren der Daten verwendet oder eine Flash-Kopie implementiert werden muss. Dies reduziert den Zeit- und Ressourcenaufwand eines oder mehrerer Systeme, die die Datenmigration durchführen, was die Leistung des einen oder die mehreren Systeme verbessert.
-
In einer optionalen Ausführungsform weist ein Erstellen einer Beziehung ein Identifizieren von VST-Einträgen (Volume-Segmenttabelle) innerhalb des Volumens, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, die die zu migrierenden Daten enthalten, und ein Erstellen einer kleinen VST für jeden identifizierten VST-Eintrag.
-
Gemäß einer anderen Ausführungsform weist ein Computerprogrammprodukt zum Migrieren von Daten von einem Pool mit großem Extent zu einem Pool mit kleinem Extent ein computerlesbares Speichermedium auf, das darin verkörperte Programmanweisungen aufweist, wobei das computerlesbare Speichermedium kein transitorisches Signal an sich ist und wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, ein Verfahren durchzuführen, das ein Identifizieren einer Anforderung, unter Verwendung des Prozessors, zum Migrieren von Daten, die mit einem Volume verbunden sind, von einem Quellspeicher-Pool mit einer ersten Rang-Extent-Größe zu einem Zielspeicher-Pool mit einem zweiten Rang-Extent, der kleiner als der erste Rang-Extent-Größe ist, Erzeugen, unter Verwendung des Prozessors, einer Beziehung zwischen logischen Volume-Extents des Volumens und physischen Offset-Positionen innerhalb von Rang-Extents des Quellspeicher-Pools, und Migrieren, unter Verwendung des Prozessors, von Daten von einem oder mehreren Ränge des Quellspeicher-Pools zu einem oder mehreren Ränge des Zielspeicher-Pools, unter Verwendung der Beziehung zwischen den logischen Volume-Extents des Volumens und den physischen Offset-Positionen innerhalb der Rang-Extents des Quellspeicher-Pools.
-
Ein System gemäß einer anderen Ausführungsform weist einen Prozessor und Logik auf, die in den Prozessor integriert ist, durch den Prozessor ausführbar ist oder in den Prozessor integriert und durch diesen ausführbar ist, wobei die Logik so konfiguriert ist, dass sie eine Anforderung zum Migrieren von Daten, die mit einem Volume verbunden sind, von einem Quellspeicher-Pool mit einer ersten Rang-Extent-Größe zu einem Zielspeicher-Pool mit einer zweiten Rang-Extent-Größe, die kleiner als die erste Rang-Extent-Größe ist, identifiziert, eine Beziehung zwischen logischen Volume-Extents des Volumens und physischen Offset-Positionen innerhalb von Rang-Extents des Quellspeicher-Pools erzeugt, und Daten von einem oder mehreren Ränge des Quellspeicher-Pools zu einem oder mehreren Ränge des Zielspeicher-Pools unter Verwendung der Beziehung zwischen den logischen Volume-Extents des Volumens und den physischen Offset-Positionen innerhalb der Rang-Extents des Quellspeicher-Pools migriert.
-
Ein computerimplementiertes Verfahren gemäß einer anderen Ausführungsform weist die folgenden Schritte auf: Identifizieren einer Anforderung zum Migrieren von Daten, die einem Volume zugeordnet sind, von einem Quellspeicher-Pool zu einem Zielspeicher-Pool, Identifizieren von Volume-Segment-Tabellen-(VST)-Einträgen, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, die die Daten enthalten, Zuweisen und Synchronisieren kleiner VSTs für die identifizierten VST-Einträge innerhalb des Volumens, Zuweisen eines oder mehrerer Rang-Extents innerhalb des Zielspeicher-Pools, Übertragen der mit dem Volume verbundenen Daten von den Rang-Extents innerhalb des Quellspeicher-Pools, die die Daten enthalten, zu dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Ränge des Zielspeicher-Pools, Aktualisieren der kleinen VSTs, um den übertragenen Daten in dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Ränge des Zielspeicher-Pools zu entsprechen, und Freigeben der Daten aus dem einen oder den mehreren Rang-Extents innerhalb des Quellspeicher-Pools.
-
Auf diese Weise werden Daten von einem Quellspeicher-Pool in einen Zielspeicher-Pool migriert, dessen Rang-Extent-Größe kleiner ist als die Rang-Extent-Größe des Quellspeicher-Pools. Dies kann die Leistung von Anwendungen verbessern, die auf die Daten im Zielspeicher-Pool zugreifen, da die Anwendungen bei der Verwendung kleinerer Rang-Extents besser funktionieren.
-
Gemäß einer anderen Ausführungsform weist ein Computerprogrammprodukt zum Migrieren von Daten von einem Pool mit großem Umfang zu einem Pool mit kleinem Umfang ein computerlesbares Speichermedium mit darin verkörperten Programmbefehlen auf, wobei das computerlesbare Speichermedium nicht per se ein transitorisches Signal ist, und wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, ein Verfahren durchzuführen, das aufweist: Identifizieren, unter Verwendung des Prozessors, einer Anforderung, Daten, die mit einem Volume verbunden sind, von einem Quellspeicher-Pool zu einem Zielspeicher-Pool zu migrieren, Identifizieren, unter Verwendung des Prozessors, von VST-Einträgen, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, die die Daten enthalten, Zuweisen und Synchronisieren, Verwenden des Prozessors, Zuweisen und Synchronisieren kleiner VSTs für jeden der identifizierten VST-Einträge innerhalb des Volumens, Zuweisen eines oder mehrerer Rang-Extents innerhalb des Zielspeicher-Pools unter Verwendung des Prozessors, Übertragen der dem Volumen zugeordneten Daten von den Rang-Extents innerhalb des Quellspeicher-Pools, die die Daten enthalten, zu dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Ränge des Zielspeicher-Pools unter Verwendung des Prozessors, Aktualisieren, unter Verwendung des Prozessors, der kleinen VSTs, um den übertragenen Daten in dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Ränge des Zielspeicher-Pools zu entsprechen, und Freigeben, unter Verwendung des Prozessors, der Daten aus dem einen oder den mehreren Rang-Extents innerhalb des Quellspeicher-Pools.
-
Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung ersichtlich, die in Verbindung mit den Zeichnungen die Prinzipien der Erfindung beispielhaft veranschaulichen.
-
Figurenliste
-
- 1 veranschaulicht eine Netzwerkarchitektur in Übereinstimmung mit einer Ausführungsform.
- 2 zeigt eine repräsentative Hardware-Umgebung, die mit den Servern und/oder Clients von 1 in Übereinstimmung mit einer Ausführungsform verbunden sein können.
- 3 veranschaulicht ein mehrstufiges Datenspeichersystem gemäß einer Ausführungsform.
- 4 veranschaulicht ein Verfahren zum Migrieren von Daten aus einem großen Extent-Pool in einen kleinen Extent-Pool, gemäß einer Ausführungsform.
- 5 veranschaulicht ein Verfahren zum Migrieren von Daten aus einem Quellspeicher-Pool in einen Zielspeicher-Pool mit einer kleineren Ausdehnungsgranularität als der Quell-Pool gemäß einer Ausführungsform.
- 6A zeigt eine beispielhafte Speicherumgebung vor einer Datenmigration gemäß einer Ausführungsform.
- 6B veranschaulicht eine beispielhafte Speicherumgebung als Reaktion auf eine Migrationsanforderung gemäß einer Ausführungsform.
- 6C veranschaulicht eine beispielhafte Speicherumgebung während einer Datenmigration von einem Quell-Pool zu einem Ziel-Pool, gemäß einer Ausführungsform.
- 6D veranschaulicht eine beispielhafte Speicherumgebung nach einer Datenmigration von einem Quell-Pool zu einem Ziel-Pool, gemäß einer Ausführungsform.
-
DETAILLIERTE BESCHREIBUNG
-
Die folgende Beschreibung offenbart mehrere bevorzugte Ausführungsformen von Systemen, Verfahren und Computerprogrammprodukten zum Migrieren von Daten von einem Pool mit großem Extent zu einem Pool mit kleinem Extent. Verschiedene Ausführungsformen bieten ein Verfahren zum Erstellen einer Beziehung zwischen logischen Volume-Extents des Volumens und physischen Offset-Positionen innerhalb von Rang-Extents des Quellspeicher-Pools und zum Migrieren von Daten von einem oder mehrerer Ränge des Quellspeicher-Pools zu einem oder mehrerer Ränge des Zielspeicher-Pools unter Verwendung der Beziehung.
-
Die folgende Beschreibung dient der Veranschaulichung der allgemeinen Prinzipien der vorliegenden Erfindung und soll die hier beanspruchten erfinderischen Konzepte nicht einschränken. Ferner können bestimmte hier beschriebene Merkmale in Kombination mit anderen beschriebenen Merkmalen in jeder der verschiedenen möglichen Kombinationen und Permutationen verwendet werden.
-
Sofern hier nicht ausdrücklich anders definiert, sind alle Begriffe so weit wie möglich auszulegen, einschließlich der Bedeutungen, die sich aus der Beschreibung ergeben, sowie der Bedeutungen, die von Fachleuten verstanden werden und/oder die in Wörterbüchern, Abhandlungen usw. definiert sind.
-
Es muss auch beachtet werden, dass die in der Beschreibung und den angehängten Ansprüchen verwendeten Singularformen „ein“, „eine“ und „die“ Pluralreferenzen aufweisen, sofern nicht anders angegeben. Es wird weiterhin verstanden, dass die Begriffe „umfasst“ und/oder‟ aufweisen‟, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, Ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten angeben, aber das Vorhandensein oder Hinzufügen von einem oder mehreren anderen Merkmalen, Ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon nicht ausschließen.
-
Die folgende Beschreibung offenbart mehrere bevorzugte Ausführungsformen von Systemen, Verfahren und Computerprogrammprodukten zur Migration von Daten aus einem großen Extent-Pool in einen kleinen Extent-Pool.
-
In einer allgemeinen Ausführungsform weist ein computerimplementiertes Verfahren Folgendes auf: ein Identifizieren einer Anforderung zum Migrieren von Daten, die mit einem Volume verbunden sind, von einem Quellspeicher-Pool mit einer ersten Rang-Extent-Größe zu einem Zielspeicher-Pool mit einer zweiten Rang-Extent-Größe, die kleiner als die erste Rang-Extent-Größe ist, ein Erzeugen einer Beziehung zwischen logischen Volume-Extents des Volumens und physischen Offset-Positionen innerhalb von Rang-Extents des Quellspeicher-Pools, und ein Migrieren von Daten von einem oder mehreren Ränge des Quellspeicher-Pools zu einem oder mehreren Ränge des Zielspeicher-Pools unter Verwendung der Beziehung zwischen den logischen Volume-Extents des Volumens und den physischen Offset-Positionen innerhalb der Rang-Extents des Quellspeicher-Pools.
-
Auf diese Weise werden Daten von einem Quellspeicher-Pool zu einem Zielspeicher-Pool migriert, dessen Rang-Extent-Größe kleiner ist als die Rang-Extent-Größe des Quellspeicher-Pools, ohne dass ein Host zum Kopieren der Daten verwendet oder eine Flash-Kopie implementiert werden muss. Dies reduziert den Zeit- und Ressourcenaufwand eines oder mehrerer Systeme, die die Datenmigration durchführen, was die Leistung des einen oder der mehreren Systeme verbessert.
-
In einer anderen allgemeinen Ausführungsform weist das Erstellen der Beziehung ein Identifizieren von VST-Einträgen innerhalb des Volumens auf, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, die die zu migrierenden Daten enthalten, und ein Erstellen einer kleinen VST für jeden identifizierten VST-Eintrag.
-
In einer anderen allgemeinen Ausführungsform weist ein Computerprogrammprodukt zum Migrieren von Daten von einem Pool mit großem Extent-Pool zu einem kleinem Extent-Pool ein computerlesbares Speichermedium auf, das darin verkörperte Programmanweisungen aufweist, wobei das computerlesbare Speichermedium kein transitorisches Signal an sich ist und wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, ein Verfahren durchzuführen, das unter Verwendung des Prozessors eine Anforderung zum Migrieren von Daten, die mit einem Volume verbunden sind, von einem Quellspeicher-Pool mit einer ersten Rang-Extent-Größe zu einem Zielspeicher-Pool mit einer zweiten Rang-Extent-Größe, die kleiner als die erste Rang-Extent-Größe ist, identifiziert, eine Beziehung, unter Verwendung des Prozessors, zwischen logischen Volume-Extents des Volumens und physischen Offset-Positionen innerhalb von Rang-Extents des Quellspeicher-Pools erzeugt, und Daten von einem oder mehreren Rängen des Quellspeicher-Pools, unter Verwendung des Prozessors, zu einem oder mehreren Ränge des Zielspeicher-Pools, unter Verwendung der Beziehung zwischen den logischen Volume-Extents des Volumens und den physischen Offset-Positionen innerhalb der Rang-Extents des Quellspeicher-Pools migriert.
-
In einer anderen allgemeinen Ausführungsform weist ein System einen Prozessor und eine Logik auf, die in den Prozessor integriert ist und von dem Prozessor ausführbar ist oder in den Prozessor integriert und von diesem ausführbar ist, wobei die Logik so konfiguriert ist, dass sie eine Anforderung zum Migrieren von Daten, die mit einem Volume verbunden sind, von einem Quellspeicher-Pool mit einer ersten Rang-Extent-Größe zu einem Zielspeicher-Pool mit einer zweiten Rang-Extent-Größe, die kleiner als die erste Rang-Extent-Größe ist, identifiziert, eine Beziehung zwischen logischen Volumen-Extents des Volumens und physischen Offset-Positionen innerhalb von Rang-Extents des Quellspeicher-Pools erzeugt, und Daten von einem oder mehreren Ränge des Quellspeicher-Pools zu einem oder mehreren Ränge des Zielspeicher-Pools unter Verwendung der Beziehung zwischen den logischen Volumen-Extensts des Volumens und den physischen Offset-Positionen innerhalb der Rang-Extents des Quellspeicher-Pools migriert.
-
In einer anderen allgemeinen Ausführungsform weist ein computerimplementiertes Verfahren die folgenden Schritte auf: Identifizieren einer Anforderung zum Migrieren von Daten, die einem Volume zugeordnet sind, von einem Quellspeicher-Pool zu einem Zielspeicher-Pool, Identifizieren von Volume-Segment-Tabellen-(VST)-Einträgen, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, die die Daten enthalten, Zuweisen und Synchronisieren kleiner VSTs für die identifizierten VST-Einträge innerhalb des Volumens, Zuweisen eines oder mehrerer Rang-Extents innerhalb des Zielspeicher-Pools, Übertragen der mit dem Volume verbundenen Daten von den Rang-Extents innerhalb des Quellspeicher-Pools, die die Daten enthalten, zu dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Ränge des Zielspeicher-Pools, Aktualisieren der kleinen VSTs, um den übertragenen Daten in dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Ränge des Zielspeicher-Pools zu entsprechen, und Freigeben der Daten aus dem einen oder den mehreren Rang-Extents innerhalb des Quellspeicher-Pools.
-
Auf diese Weise werden Daten von einem Quellspeicher-Pool in einen Zielspeicher-Pool migriert, dessen Rang-Extent-Größe kleiner ist als die Rang-Extent-Größe des Quellspeicher-Pools. Dies kann die Leistung von Anwendungen verbessern, die auf die Daten im Zielspeicher-Pool zugreifen, da die Anwendungen bei der Verwendung kleinerer Rang-Extents besser funktionieren.
-
In einer anderen allgemeinen Ausführungsform enthält ein Computerprogrammprodukt zum Migrieren von Daten von einem Groß-Extent-Pool zu einem Klein-Extent-Pool ein computerlesbares Speichermedium mit darin verkörperten Programmanweisungen, wobei das computerlesbare Speichermedium kein transitorisches Signal an sich ist und wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um den Prozessor zu veranlassen, folgendes Verfahren durchführt: ein Identifizieren, unter Verwendung des Prozessors, einer Anforderung zum Migrieren von Daten, die mit einem Volume verbunden sind, von einem Quellspeicher-Pool zu einem Zielspeicher-Pool, ein Identifizieren, unter Verwendung des Prozessors, von VST-Einträgen, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, die die Daten enthalten, Zuweisen und Synchronisieren, unter Verwendung des Prozessors, Zuweisen und Synchronisieren kleiner VSTs für jeden der identifizierten VST-Einträge innerhalb des Volumens, Zuweisen eines oder mehrerer Rang-Extents innerhalb des Zielspeicher-Pools, unter Verwendung des Prozessors, Übertragen, unter Verwendung des Prozessors, der dem Volumen zugeordneten Daten von den Rang-Extents innerhalb des die Daten enthaltenden Quellspeicher-Pools zu dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Rängen des Zielspeicher-Pools, Aktualisieren, unter Verwendung des Prozessors, der kleinen VSTs, um den übertragenen Daten in dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Rängen des Zielspeicher-Pools zu entsprechen, und Freigeben, unter Verwendung des Prozessors, der Daten aus dem einen oder den mehreren Rang-Extents innerhalb des Quellspeicher-Pools.
-
1 illustriert eine Architektur 100 gemäß einer Ausführungsform. Wie in 1 dargestellt, ist eine Vielzahl von entfernten Netzwerken 102, einschließlich eines ersten entfernten Netzwerks 104 und eines zweiten entfernten Netzwerks 106, vorgesehen. Ein Gateway 101 kann zwischen den entfernten Netzwerken 102 und einem nahen Netzwerk 108 gekoppelt sein. Im Zusammenhang mit der vorliegenden Architektur 100 können die Netzwerke 104, 106 jeweils eine beliebige Form annehmen, einschließlich, aber nicht beschränkt auf ein LAN, ein WAN wie das Internet, ein öffentliches Telefonnetz (PSTN), ein internes Telefonnetz, usw.
-
Im Einsatz dient das Gateway 101 als Eingangspunkt von den entfernten Netzwerken 102 zum nahen Netzwerk 108. Als solches kann das Gateway 101 als Router fungieren, der in der Lage ist, ein bestimmtes Datenpaket, das am Gateway 101 ankommt, weiterzuleiten, und als Switch, der den tatsächlichen Pfad in und aus dem Gateway 101 für ein bestimmtes Paket bereitstellt.
-
Des Weiteren ist mindestens ein Datenserver 114 enthalten, der mit dem nahen Netzwerk 108 gekoppelt ist und von den entfernten Netzwerken 102 über das Gateway 101 zugänglich ist. Es sollte beachtet werden, dass der/die Datenserver 114 jede Art von Computergerät und/oder Groupware aufweisen kann. Mit jedem Datenserver 114 ist eine Vielzahl von Benutzergeräten 116 gekoppelt. Die Benutzergeräte 116 können auch direkt über eines der Netzwerke 104, 106, 108 angeschlossen sein. Solche Benutzergeräte 116 können ein Desktop-Computer, ein Laptop-Computer, ein Handheld-Computer, ein Drucker oder eine andere Art von Logik sein. Es ist zu beachten, dass ein Benutzergerät 111 in einer Ausführungsform auch direkt mit einem der Netzwerke verbunden sein kann.
-
Ein Peripheriegerät 120 oder eine Reihe von Peripheriegeräten 120, z.B. Faxgeräte, Drucker, vernetzte und/oder lokale Speichereinheiten oder -systeme usw., können mit einem oder mehreren der Netzwerke 104, 106, 108 verbunden werden. Es ist zu beachten, dass Datenbanken und/oder zusätzliche Komponenten mit jeder Art von Netzwerkelement, das mit den Netzwerken 104, 106, 108 gekoppelt ist, verwendet oder in diese integriert werden können. Im Zusammenhang mit der vorliegenden Beschreibung kann sich ein Netzwerkelement auf jede Komponente eines Netzwerks beziehen.
-
Gemäß einigen Ansätzen können die hier beschriebenen Methoden und Systeme mit und/oder auf virtuellen Systemen und/oder Systemen implementiert werden, die ein oder mehrere andere Systeme emulieren, wie z.B. ein UNIX-System, das eine IBM z/OS-Umgebung emuliert, ein UNIX-System, das virtuell eine MICROSOFT WINDOWS-Umgebung hostet, ein MICROSOFT WINDOWS-System, das eine IBM z/OS-Umgebung emuliert, usw. Diese Virtualisierung und/oder Emulation kann in einigen Ausführungsformen durch den Einsatz von VMWARE-Software verbessert werden.
-
In weiteren Ansätzen können ein oder mehrere Netzwerke 104, 106, 108 ein Cluster von Systemen darstellen, die gemeinhin als „Cloud“ bezeichnet werden. Beim Cloud Computing werden gemeinsam genutzte Ressourcen, wie z.B. Rechenleistung, Peripheriegeräte, Software, Daten, Server usw., jedem System in der Cloud in einer On-Demand-Beziehung zur Verfügung gestellt, wodurch der Zugriff und die Verteilung von Diensten über viele Rechnersysteme hinweg ermöglicht wird. Cloud Computing erfordert typischerweise eine Internetverbindung zwischen den in der Cloud betriebenen Systemen; es können aber auch andere Techniken zur Verbindung der Systeme verwendet werden.
-
2 zeigt gemäß einer Ausführungsform eine repräsentative Hardware-Umgebung, die mit einem Benutzergerät 116 und/oder einem Server 114 aus 1 verbunden ist. Eine solche Figur veranschaulicht eine typische Hardware-Konfiguration einer Workstation mit einer zentralen Verarbeitungseinheit 210, wie z.B. einem Mikroprozessor, und einer Reihe anderer Einheiten, die über einen Systembus 212 miteinander verbunden sind.
-
Die in 2 gezeigte Workstation weist einen Direktzugriffsspeicher (RAM) 214, einen Festwertspeicher (ROM) 216, einen I/O-Adapter 218 zum Anschluss von Peripheriegeräten wie Plattenspeichereinheiten 220 an dem Bus 212, einen Benutzerschnittstellenadapter 222 zum Anschluss einer Tastatur 224, einer Maus 226, eines Lautsprechers 228, eines Mikrofons 232 und/oder anderer Benutzerschnittstellengeräte wie eines Touchscreens und einer Digitalkamera (nicht gezeigt) an den Bus 212, einen Kommunikationsadapter 234 zum Anschluss der Workstation an ein Kommunikationsnetzwerk 235 (z.B., ein Datenverarbeitungsnetzwerk) und einen Anzeigeadapter 236 zum Anschluss des Busses 212 an ein Anzeigegerät 238.
-
Auf der Workstation kann ein Betriebssystem wie das Microsoft Windows® Betriebssystem (OS), ein MAC OS, ein UNIX OS, etc. installiert sein. Es wird deutlich, dass eine bevorzugte Ausführungsform auch auf anderen als den genannten Plattformen und Betriebssystemen implementiert werden kann. Eine bevorzugte Ausführungsform kann unter Verwendung der Sprachen XML, C und/oder C++ oder anderer Programmiersprachen zusammen mit einer objektorientierten Programmiermethodik geschrieben sein. Es kann auch objektorientierte Programmierung (OOP), die zunehmend zur Entwicklung komplexer Anwendungen eingesetzt wird, verwendet werden.
-
In 3 ist nun ein Speichersystem 300 gemäß einer Ausführungsform dargestellt. Zu beachten ist, dass einige der in 3 gezeigten Elemente gemäß verschiedenen Ausführungsformen als Hardware und/oder Software implementiert sein können. Das Speichersystem 300 kann einen Speichersystem-Manager 312 zur Kommunikation mit einer Vielzahl von Medien auf mindestens einer höheren Speicherebene 302 und mindestens einer niedrigeren Speicherebene 306 aufweisen. Die höhere(n) Speicherebene(n) 302 kann/können vorzugsweise ein oder mehrere Direktzugriffsmedium(e) 304 (random access oder direct access) aufweisen, wie z.B. Festplatten in Festplattenlaufwerken (HDDs), nichtflüchtige Speicher (NVM), Solid-State-Speicher in Solid-State-Laufwerken (SSDs), Flash-Speicher, SSD-Arrays, Flash-Speicher-Arrays usw. und/oder andere, die hierin erwähnt werden oder in der Technik bekannt sind. Die untere(n) Speicherebene(n) 306 kann/können vorzugsweise ein oder mehrere Speichermedien mit geringerer Leistung 308 aufweisen, einschließlich Medien mit sequentiellem Zugriff, wie z.B. Magnetbänder in Bandlaufwerken und/oder optische Medien, langsamer zugreifende Festplatten, langsamer zugreifende SSDs usw., und/oder andere hierin erwähnte oder in der Technik bekannte Medien. Eine oder mehrere zusätzliche Speicherebenen 316 können eine beliebige Kombination von Speichermedien enthalten, wie von einem Entwickler des Systems 300 gewünscht. Außerdem kann jede der höheren Speicherebenen 302 und/oder der unteren Speicherebenen 306 eine beliebige Kombination von Speichergeräten und/oder Speichermedien enthalten.
-
Der Speichersystem-Manager 312 kann mit den Speichermedien 304, 308 auf der/den höheren Speicherebene(n) 302 und der/den niedrigeren Speicherebene(n) 306 über ein Netzwerk 310 kommunizieren, wie z.B. ein Storage Area Network (SAN), wie in 3 gezeigt, oder einen anderen geeigneten Netzwerktyp. Der Speichersystem-Manager 312 kann auch mit einem oder mehreren Host-Systemen (nicht dargestellt) über eine Host-Schnittstelle 314 kommunizieren, die ein Teil des Speichersystem-Managers 312 sein kann oder nicht. Der Speichersystem-Manager 312 und/oder jede andere Komponente des Speichersystems 300 kann in Hardware und/oder Software implementiert sein und kann einen Prozessor (nicht dargestellt) zur Ausführung von Befehlen eines in der Technik bekannten Typs verwenden wie z.B. eine Zentraleinheit (CPU), ein Field Programmable Gate Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC) usw. Natürlich kann jede beliebige Anordnung eines Speichersystems verwendet werden, wie es für den Fachmann beim Lesen der vorliegenden Beschreibung ersichtlich sein wird.
-
In weiteren Ausführungsformen kann das Speichersystem 300 eine beliebige Anzahl von Datenspeicherebenen enthalten und innerhalb jeder Speicherebene die gleichen oder unterschiedliche Speichermedien enthalten. Zum Beispiel kann jede Datenspeicherebene den gleichen Typ von Speichermedien enthalten, wie HDDs, SSDs, Medien mit sequenziellem Zugriff (Band in Bandlaufwerken, optische Platte in optischen Plattenlaufwerken usw.), Medien mit direktem Zugriff (CD-ROM, DVD-ROM, usw.) oder eine beliebige Kombination von Medienspeichertypen. In einer solchen Konfiguration kann eine höhere Speicherebene 302 eine Mehrheit von SSD-Speichermedien zum Speichern von Daten in einer Speicherumgebung mit höherer Leistung enthalten, und die verbleibenden Speicherebenen, einschließlich der unteren Speicherebene 306 und der zusätzlichen Speicherebenen 316, können eine beliebige Kombination von SSDs, HDDs, Bandlaufwerken usw. zum Speichern von Daten in einer Speicherumgebung mit geringerer Leistung enthalten. Auf diese Weise können Daten, auf die häufiger zugegriffen wird, Daten mit höherer Priorität, Daten, auf die schneller zugegriffen werden muss, usw., auf der höheren Speicherebene 302 gespeichert werden, während Daten, die keines dieser Attribute aufweisen, auf den zusätzlichen Speicherebenen 316, einschließlich der unteren Speicherebene 306, gespeichert werden. Natürlich kann ein Fachmann nach dem Lesen der vorliegenden Beschreibungen viele andere Kombinationen von Speichermedientypen entwerfen, um sie in verschiedene Speicherschemata gemäß den hier vorgestellten Ausführungsformen zu implementieren.
-
Gemäß einigen Ausführungsformen kann das Speichersystem (z.B. 300) eine Logik enthalten, die so konfiguriert ist, dass sie eine Anforderung zum Öffnen eines Datensatzes empfängt, eine Logik, die so konfiguriert ist, dass sie feststellt, ob der angeforderte Datensatz auf einer niedrigeren Speicherebene 306 eines gestaffelten (tiered) Datenspeichersystems 300 in mehreren zugehörigen Teilen gespeichert ist, eine Logik, die so konfiguriert ist, dass sie jeden zugehörigen Teil des angeforderten Datensatzes auf eine höhere Speicherebene 302 des gestaffelten Datenspeichersystems 300 verschiebt, und eine Logik, die so konfiguriert ist, dass sie den angeforderten Datensatz auf der höheren Speicherebene 302 des gestaffelten Datenspeichersystems 300 aus den zugehörigen Teilen zusammenstellt.
-
Natürlich kann diese Logik als Verfahren auf einem beliebigen Gerät und/oder System oder als Computerprogrammprodukt gemäß verschiedenen Ausführungsformen implementiert werden.
-
In 4 ist nun ein Flussdiagramm eines Verfahrens 400 gemäß einer Ausführungsform dargestellt. Das Verfahren 400 kann in Übereinstimmung mit der vorliegenden Erfindung in jeder der in den 1-3 und 6A-D dargestellten Umgebungen, unter anderem, in verschiedenen Ausführungsformen ausgeführt werden. Natürlich können mehr oder weniger Vorgänge als die speziell in 4 beschriebenen in das Verfahren 400 einbezogen werden, wie ein Fachmann beim Lesen der vorliegenden Beschreibungen verstehen würde.
-
Jeder der Schritte des Verfahrens 400 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann in verschiedenen Ausführungsformen das Verfahren 400 teilweise oder vollständig von einem oder mehreren Servern, Computern oder einem anderen Gerät mit einem oder mehreren Prozessoren darin ausgeführt werden. Der Prozessor, z.B. eine Verarbeitungsschaltung(en), ein Chip(s) und/oder ein/eine Modul(e), der/die in Hardware und/oder Software implementiert ist/sind und vorzugsweise mindestens eine Hardwarekomponente aufweist/aufweisen, kann in jedem Gerät verwendet werden, um einen oder mehrere Schritte des Verfahrens 400 durchzuführen. Illustrative Prozessoren umfassen, sind aber nicht beschränkt auf, eine Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) usw., Kombinationen davon oder jede andere geeignete, in der Technik bekannte Rechenvorrichtung.
-
Wie in 4 dargestellt, kann das Verfahren 400 mit dem Vorgang 402 beginnen, bei dem eine Anforderung empfangen wird, Daten, die einem Volume zugeordnet sind, von einem Quellspeicher-Pool mit einer ersten Rang-Extent-Größe zu einem Zielspeicher-Pool mit einer zweiten Rang-Extent-Größe zu migrieren, die kleiner als die erste Rang-Extent-Größe ist.
-
Zusätzlich kann das Verfahren 400 mit der Operation 404 fortfahren, bei der eine Beziehung zwischen logischen Volume-Extents des Volumens und physischen Offset-Positionen innerhalb von Rang-Extents des Quellspeicher-Pools erstellt wird. In einer Ausführungsform weist das Erstellen der Beziehung das Identifizieren von VST-Einträgen innerhalb des Volumens auf, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, die die zu migrierenden Daten enthalten. Zum Beispiel kann eine VST eine logische Darstellung von Daten speichern, die innerhalb des Volumens gespeichert sind, wobei die VST eine Vielzahl von Einträgen enthält. Eine Teilmenge dieser Einträge kann innerhalb der VST identifiziert werden, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, die die zu migrierenden Daten enthalten.
-
Weiterhin kann eine Ausführungsform das Erstellen der Beziehung das Erstellen einer kleinen VST für jeden identifizierten VST-Eintrag aufweisen. Zum Beispiel kann für jede identifizierte Teilmenge von VST-Einträgen eine kleine VST erstellt werden. In einem anderen Beispiel kann jede der kleinen VSTs verwendet werden, um alle logischen Volume-Extents innerhalb ihres entsprechenden VST-Eintrags mit einer höheren Granularität darzustellen.
-
Weiterhin kann in einer Ausführungsform ein Erstellen der Beziehung das Einstellen der logischen Volume-Extents innerhalb der kleinen VSTs aufweisen, um auf entsprechende Offset-Positionen innerhalb der Rang-Extents innerhalb des Quellspeicher-Pools zu zeigen, die die zu migrierenden Daten enthalten. Auf diese Weise kann eine direkte Beziehung zwischen den logischen Volume-Extents der kleinen VSTs des Volumes und den Offset-Positionen innerhalb der Rang-Extents innerhalb des Quellspeicher-Pools hergestellt werden, die die zu migrierenden Daten enthalten.
-
Weiterhin kann das Verfahren 400 mit der Operation 406 fortfahren, bei dem Daten von einem oder mehreren Rängen des Quellspeicher-Pools zu einem oder mehreren Rängen des Zielspeicher-Pools migriert werden, wobei die Entsprechung zwischen den logischen Volume-Extents des Volumens und den physischen Offsetpositionen innerhalb der Rang-Extents des Quellspeicher-Pools verwendet wird. In einer Ausführungsform kann das Migrieren der Daten das Auswählen einer Vielzahl von Rang-Extents innerhalb des Zielspeicher-Pools aufweisen, um die migrierten Daten aufzunehmen. Beispielsweise kann die Vielzahl der Rang-Extents zufällig oder nach einem oder mehreren Kriterien (z.B. einer Rangnummerierung, einer Datenabrufgeschwindigkeit eines entsprechenden Rangs, einer Datenmenge, die derzeit im entsprechenden Rang gespeichert ist, usw.) ausgewählt werden.
-
In einer Ausführungsform kann das Migrieren der Daten auch das Übertragen der die Volume zugeordneten Daten von einem oder mehreren Offset-Speicherorten innerhalb der Rang-Extents des Quellspeicher-Pools zu der ausgewählten Vielzahl von Rang-Extents innerhalb des Zielspeicher-Pools aufweisen.
-
Zusätzlich kann in einer Ausführungsform das Migrieren der Daten das Freigeben der Daten aus dem einen oder mehreren Rang-Extents innerhalb des Quellspeicher-Pools aufweisen. In einer anderen Ausführungsform kann das Migrieren der Daten das Anpassen der Volume-Extents innerhalb der kleinen VSTs zum Verweisen auf die entsprechenden Speicherorte der migrierten Daten innerhalb der ausgewählten Vielzahl von Rang-Extents des Zielspeicher-Pools, die die übertragenen Daten speichern, aufweisen.
-
Auf diese Weise werden Daten von einem Quellspeicher-Pool zu einem Zielspeicher-Pool migriert, dessen Rang-Extent-Größe kleiner ist als die Rang-Extent-Größe des Quellspeicher-Pools, ohne dass ein Host zum Kopieren der Daten verwendet oder eine Flash-Kopie implementiert werden muss. Dies reduziert den Zeit- und Ressourcenaufwand eines oder mehrerer Systeme, die die Datenmigration durchführen, was die Leistung des einen oder die mehreren Systeme verbessert.
-
Unter Bezugnahme auf 5 wird nun gemäß einer Ausführungsform ein Flussdiagramm eines Verfahrens 500 zum Migrieren von Daten aus einem Quellspeicher-Pool in einen Zielspeicher-Pool mit einer kleineren Ausdehnungsgranularität als der Quell-Pool gezeigt. Das Verfahren 500 kann gemäß der vorliegenden Erfindung in jeder der in 1-3 und 6A-D dargestellten Umgebungen, unter anderem, in verschiedenen Ausführungsformen durchgeführt werden. Natürlich können mehr oder weniger Vorgänge als die speziell in 5 beschriebenen in das Verfahren 500 einbezogen werden, wie ein Fachmann beim Lesen der vorliegenden Beschreibungen verstehen würde.
-
Jeder der Schritte des Verfahrens 500 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann in verschiedenen Ausführungsformen das Verfahren 500 teilweise oder vollständig von einem oder mehreren Servern, Computern oder einem anderen Gerät mit einem oder mehreren Prozessoren darin ausgeführt werden. Der Prozessor, z.B. eine Verarbeitungsschaltung(en), ein Chip(s) und/oder ein Modul(e), der/die in Hardware und/oder Software implementiert ist/sind und vorzugsweise mindestens eine Hardware-Komponente aufweist/aufweisen, kann in jedem Gerät verwendet werden, um einen oder mehrere Schritte des Verfahrens 500 durchzuführen. Dargestellte Prozessoren weisen auf, sind aber nicht beschränkt auf, eine Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) usw., Kombinationen davon oder jede andere geeignete, in der Technik bekannte Rechenvorrichtung.
-
Wie in 5 dargestellt, kann das Verfahren 500 mit dem Vorgang 502 beginnen, bei dem eine Anforderung zur Migration von Daten, die einem Volume zugeordnet sind, von einem Quellspeicher-Pool zu einem Zielspeicher-Pool identifiziert wird. In einer Ausführungsform weist das Volume ein Speicher-Volume auf, dass eine logische Darstellung der Daten in einer zusammenhängenden Weise für einen oder mehrere Hosts organisiert und darstellt. In einer anderen Ausführungsform weist die Volume eine Vielzahl von Volume-Extents auf. Zum Beispiel kann jeder Volume-Extent einen logischen Extent enthalten.
-
Zusätzlich weist ein Speicher-Pool in einer Ausführungsform einen oder mehrerer Ränge auf. In einer anderen Ausführungsform enthält jeder Rang eine redundante Menge an Speicher (z.B. ein RAID-Speicher-Array, usw.). In einer weiteren Ausführungsform werden die logisch in den Volumen dargestellten Daten physisch in einem oder mehrerer Rängen eines Speicher-Pools gespeichert. In einer Ausführungsform enthält beispielsweise jeder Rang eine Vielzahl von Rang-Extents.
-
Ferner werden in einer Ausführungsform die Ausdehnungen innerhalb eines Rangs als Einträge in einer Rangsegmenttabelle (RST) für den Rang dargestellt, wobei jede Rangausdehnung entweder voll oder leer ist. Beispielsweise repräsentiert jeder Rangbereich einen physischen Bereich. In einem anderen Beispiel stellt jeder Rangerweiterung eine vorbestimmte Menge an Speicherplatz zum Speichern von Daten innerhalb des Speicher-Pools dar. In einem weiteren Beispiel enthalten volle Rang-Extents einen logischen Speicherort von Daten innerhalb des Volumens (z.B. eine Identifikation eines Volumens und eines Volume-Extents innerhalb dieses Volumens, in dem die Daten logisch gespeichert und einem oder mehreren Hosts präsentiert werden).
-
Weiterhin enthält der Quellspeicher-Pool in einer Ausführungsform einen oder mehrere Ränge, der anfänglich alle logisch in den Volumen dargestellten Daten speichert. In einer anderen Ausführungsform werden die logisch in den Volumen dargestellten Daten physisch in mehreren Rängen innerhalb des Quellspeicher-Pools gespeichert.
-
Außerdem hat in einer Ausführungsform der Quellspeicher-Pool eine erste Rang-Extent-Größe und der Zielspeicher-Pool eine zweite Rang-Extent-Größe, die kleiner als die erste Rang-Extent-Größe ist. Beispielsweise kann der Quellspeicher-Pool Rang-Extents mit einer Größe von 1 GB aufweisen, und der zweite Erweiterungspool kann Rang-Extents mit einer Größe von 16 MB aufweisen.
-
Darüber hinaus kann das Verfahren 500 mit der Operation 504 fortfahren, bei der VST-Einträge identifiziert werden, die Rang-Extents innerhalb des Quellspeicher-Pools entsprechen, der die Daten enthält. In einer Ausführungsform werden die Volumen-Extents in Einträgen einer Volumen-Segment-Tabelle (VST) gruppiert, wobei jedes Volumen-Extent entweder voll oder leer ist. In einer Ausführungsform weisen volle Volumen-Extents beispielsweise einen physischen Speicherort der Daten innerhalb des Quellspeicher-Pools auf (z.B. eine Identifikation eines Rangs und eines Rang-Extent innerhalb dieses Rangs, in dem die mit dem Volumen-Extent verbundenen Daten gespeichert sind). In einem anderen Beispiel weist jeder Eintrag einer VST eine vorbestimmte Anzahl von aufeinanderfolgenden Volumen-Extents auf. In einem weiteren Beispiel ordnet die VST die logischen Extents des Volumens (z.B. die Volumen-Extents) den physischen Extents eines oder mehrerer Ränge innerhalb eines Speicher-Pools zu (z.B. Rang-Extents).
-
Darüber hinaus kann das Verfahren 500 mit Operation 506 fortfahren, in der kleine VSTs für die identifizierten VST-Einträge innerhalb des Volumens zugewiesen und synchronisiert werden. In einer Ausführungsform repräsentieren und verwalten die kleinen VSTs die Einträge der VST mit einer höheren Granularität. Zum Beispiel weist jeder Eintrag der VST eine gruppierte Vielzahl von Volumen-Extents auf, die nur durch eine VST-Eintragsnummer identifiziert werden. In einem anderen Beispiel kann ein einzelner VST-Eintrag durch eine kleine VST dargestellt werden, die Einträge hat, die jeder der Vielzahl von Volumen-Extents entsprechen, die innerhalb des einzelnen VST-Eintrags gruppiert sind.
-
Weiterhin kann in einer Ausführungsform die Synchronisierung der kleinen VSTs aufweisen, dass die logischen Volumen-Extents innerhalb jeder der kleinen VSTs auf entsprechende Offset-Positionen innerhalb der Rang-Extents innerhalb des Quellspeicher-Pools verweisen, die die zu migrierenden Daten enthalten. Beispielsweise stellen die Offset-Positionen eines Rang-Extent eine logische Rang-Extent-Nummer innerhalb einer logischen Darstellung des Rang-Extent dar (z.B., die einen vorbestimmten Teil des Rang-Extent anzeigt). In einem anderen Beispiel kann ein Rang-Extent der Größe 1 GB eine Vielzahl von Offset-Speicherplätzen haben, die jeweils 16 MB große Teile des Rang-Extent darstellen (so dass ein einzelner Rang-Extent von 1 GB vierundsechzig 16-MB-Offset-Speicherplätze hätte usw.). Dies ermöglicht eine Darstellung eines Rang-Extent mit einer höheren Granularität.
-
In einer anderen Ausführungsform kann die Synchronisierung der kleinen VSTs ein Auffüllen der kleinen VSTs aufweisen, so dass sie Volumen-Extents aufweisen, die Offset-Positionen innerhalb eines entsprechenden Rang-Extents innerhalb des Quellspeicher-Pools enthalten. Auf diese Weise werden die Einträge in den kleinen VSTs so aufgefüllt, dass die Organisation (z.B. Reihenfolge, Nummerierung usw.) der Einträge in den kleinen VSTs mit der Organisation der Offset-Speicherplätze in den zugeordneten Rang-Extents übereinstimmt, die den kleinen VSTs entsprechen.
-
Außerdem kann das Verfahren 500 mit Vorgang 508 fortfahren, bei dem ein oder mehrere Rang-Extents innerhalb des Zielspeicher-Pools zugeordnet werden. In einer Ausführungsform entspricht die Anzahl der Rang-Extents, die im Zielspeicher-Pool zugeordnet werden, der Größe des Volumens. Zum Beispiel wird die Gesamtgröße der Daten, die logisch durch das Volumen repräsentiert werden, im Zielspeicher-Pool zugeordnet. In einem anderen Beispiel wird die Gesamtgröße der Daten, die logisch durch das Volumen repräsentiert werden, durch eine Rang-Extent-Größe des Zielspeicher-Pools geteilt, um eine Anzahl von Rang-Extents zu ermitteln, die innerhalb des Zielspeicher-Pools zugewiesen werden. In einer anderen Ausführungsform werden die ein oder mehreren Rang-Extents zufällig, seriell, nicht seriell, usw. zugeordnet.
-
Zusätzlich können in einer Ausführungsform der eine oder die mehreren Rang-Extents nach einem oder mehreren Kriterien zugeordnet werden. Beispielsweise können der eine oder die mehreren Rang-Extents auf der Grundlage einer Datenabrufgeschwindigkeit der Ränge innerhalb des Zielspeicher-Pools zugeordnet werden. Beispielsweise kann jeder der Ränge in der Reihenfolge abnehmender Datenabrufgeschwindigkeit aufgelistet werden, und die Extents können in Rängen gemäß der Liste zugeordnet werden (z.B. beginnend mit Rängen mit der schnellsten Datenabrufgeschwindigkeit, usw.).
-
In einem anderen Beispiel können die ein oder mehreren Rang-Extents auf der Grundlage einer Datenmenge von Daten zugeordnet werden, die derzeit in jedem der Ränge innerhalb des Zielspeicher-Pools gespeichert sind. Beispielsweise können die Ränge in der Reihenfolge einer abnehmenden Menge an aktuell verfügbarem Speicherplatz aufgelistet werden, und die Extents können in Rängen gemäß der Liste zugeordnet werden (z.B. beginnend mit Rängen mit den meisten aktuell verfügbaren Extents, usw.).
-
Darüber hinaus kann das Verfahren 500 mit Operation 510 fortfahren, bei der die dem Volumen zugeordneten Daten von den Rang-Extents innerhalb des Quellspeicher-Pools, der die Daten enthält, zu dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Rängen des Zielspeicher-Pools übertragen werden. In einer Ausführungsform weist das Übertragen der Daten ein Ermitteln einer Position aller Offset-Positionen innerhalb der Rang-Extents eines oder mehrerer RSTs des Quellspeicher-Pools auf, die allen zuvor zugeordneten Volume-Extents innerhalb des Volume entsprechen. In einer anderen Ausführungsform weist das Übertragen der Daten das Ermitteln aller zugeordneten Rang-Extents innerhalb des Zielspeicher-Pools auf.
-
In einer weiteren Ausführungsform weist das Übertragen der Daten ein Übertragen der in den Offsetpositionen der Rang-Extents innerhalb des Quellspeicher-Pools gespeicherten Daten zu den entsprechenden zugeordneten Rang-Extents innerhalb des Zielspeicher-Pools auf. Beispielsweise werden Daten, die in einem Offset-Speicherplatz eines Rang-Extent eines Rangs des Quellspeicher-Pools gespeichert sind, in einen zugeordneten Rang-Extent des Zielspeicher-Pools übertragen.
-
Außerdem kann das Verfahren 500 mit Vorgang 512 fortfahren, bei dem die kleinen VSTs aktualisiert werden, um den übertragenen Daten in dem einen oder den mehreren Rang-Extents in dem einen oder den mehreren Rängen des Zielspeicher-Pools zu entsprechen. Beispielsweise werden die Volumen-Extents innerhalb der kleinen VSTs des Volumens so angepasst, dass sie auf die entsprechenden Speicherplätze innerhalb des zugeordneten einen oder der mehreren Rang-Extents des Zielspeicher-Pools zeigen, in denen die übertragenen Daten gespeichert sind.
-
Zusätzlich kann das Verfahren 500 mit der Operation 514 fortfahren, bei der die Daten aus dem einen oder den mehreren Rang-Extents innerhalb des Quellspeicher-Pools freigegeben werden. In einer Ausführungsform kann das Freigeben der Daten ein Löschen der Daten aus dem einen oder den mehreren Rang-Extents innerhalb des Quellspeicher-Pools aufweisen.
-
Beispielsweise identifiziert ein Volumen-Extent innerhalb einer kleinen VST ursprünglich einen Offset-Speicherort innerhalb einer logischen Darstellung eines Rang-Extent im Quellspeicher-Pool, an dem die durch dieses Volumen-Extent logisch dargestellten Daten physisch gespeichert sind. In einem anderen Beispiel wird das Volumen-Extent innerhalb der kleinen VST aktualisiert, um den zugeordneten Rang-Extent des Zielspeicher-Pools zu identifizieren, in den die mit dem Volumen-Extent verbundenen Daten migriert wurden. In einem weiteren Beispiel werden die gespeicherten Daten vom Offset-Speicherort innerhalb der logischen Darstellung des Rang-Extent im Quellspeicher-Pool in einen zugeordneten Rang-Extent des Zielspeicher-Pools migriert.
-
Auf diese Weise stimmen die Volume-Extents innerhalb der kleinen VSTs des Volumens mit den zugeordneten Rang-Extents im Zielspeicher-Pool überein, in dem die mit diesen Volume-Extents verbundenen Daten gespeichert werden. Beispielsweise stimmt die Position eines Volume-Extent innerhalb einer kleinen VST des Volumens mit einem zugeordneten Rang-Extent überein, in dem die Daten für den Eintrag gespeichert sind. Dies vereinfacht und beschleunigt den Datenabruf innerhalb des Zielspeicher-Pools.
-
In einer Ausführungsform wird einer oder mehreren Anwendungen der Zugriff auf die Daten im Zielspeicher-Pool ermöglicht. Beispielsweise können eine oder mehrere Anwendungen, die auf einem oder mehreren Hosts laufen, eine oder mehrere Datenanforderungen an das Volume senden, und das Volume kann die Datenanforderungen an den Zielspeicher-Pool weiterleiten, um den Datenzugriff zu implementieren. In einer anderen Ausführungsform können die eine oder die mehreren Anwendungen effizienter laufen, wenn sie auf Daten mit der kleineren Rang-Extent-Granularität im Zielspeicher-Pool im Vergleich zur größeren Rang-Extent-Granularität im Quellspeicher-Pool zugreifen.
-
Auf diese Weise werden Daten aus einem Quellspeicher-Pool in einen Zielspeicher-Pool migriert, dessen Rang-Extent-Größe kleiner ist als die Rang-Extent-Größe des Quellspeicher-Pools. Dies kann die Leistung von Anwendungen verbessern, die auf die Daten im Zielspeicher-Pool zugreifen, da die Anwendungen bei Verwendung kleinerer Rang-Extents eine bessere Leistung erbringen können.
-
6A zeigt eine beispielhafte Speicherumgebung 600 vor einer Datenmigration gemäß einer Ausführungsform. Wie dargestellt, speichert eine VST 602 eine logische Darstellung von Daten, die in einem Volumen 0 604 gespeichert sind. Zusätzlich speichern RSTs eine physische Darstellung der Daten, wie sie in einem Rang 3 624 eines Quell-Pools 0 626 gespeichert sind. Außerdem beträgt die Rang-Granularität des Quell-Pools 0 626 1 GB. Zum Beispiel hat jeder Rang-Extent innerhalb des Quell-Pools 0 626 eine Größe von 1 GB.
-
Des Weiteren beziehen sich die VST-Einträge 632 und 634 des vollen Volumen-Extent auf die Stellen 630A-B innerhalb der RSTs, an denen die Daten physisch innerhalb des Quell-Pools 0 626 gespeichert sind. Zum Beispiel weist Rang-Extent 0 630A von Rang 3 624 des Quell-Pools 0 626 eine Verknüpfung zum VST-Eintrag 0 632 innerhalb des Volumens 0 604 auf. Umgekehrt weist der VST-Eintrag 0 632 im Volumen 0 604 eine Verknüpfung zum Rang-Extent 0 630A des Rangs 3 624 des Quell-Pools 0 626 auf.
-
Ebenso weist der Rang-Extent 64 630B von Rang 3 624 des Quell-Pools 0 626 eine Verknüpfung zum VST-Eintrag 2 634 im Volumen 0 604 auf. Umgekehrt weist der VST-Eintrag 2 634 innerhalb des Volumens 0 604 eine Verknüpfung zum Rang-Extent 64 630B des Rangs 3 624 des Quell-Pools 0 626 auf.
-
Auf diese Weise wird eine Verbindung zwischen einer logischen Repräsentation von Daten im Volumen 0 604 und einer physischen Repräsentation von Daten im Quell-Pool 0 626 abgebildet.
-
6B zeigt eine beispielhafte Speicherumgebung 600 als Reaktion auf eine Migrationsanforderung, gemäß einer Ausführungsform. Die Rang-Granularität eines Ziel-Pool Ziel-Pools 1 622 beträgt 16 MB. Zum Beispiel hat jeder Rang-Extent innerhalb des Ziel-Pool Ziel-Pools 1 622 eine Größe von 16MB. Da die Ranggranularität des Quell-Pools 0 626 1 GB beträgt, hat der Ziel-Pool Ziel-Pool 1 622 eine kleinere Ranggranularität als der Quell-Pool 0 626.
-
In einer Ausführungsform wird eine Anforderung empfangen, Daten vom Quell-Pool 0 626 zum Ziel-Pool 1 622 zu migrieren. In einer anderen Ausführungsform werden als Reaktion auf die Migrationsanforderung kleine VSTs 614 und 616 innerhalb des Volumens 0 604 erstellt. Beispielsweise werden die kleinen VSTs 614 und 616 verwendet, um die Volumen-Extents innerhalb des VST-Eintrags 0 632 bzw. des VST-Eintrags 2 634 darzustellen.
-
Zusätzlich werden in einer Ausführungsform die Extents 618A-E und 619A-E innerhalb der kleinen VSTs 614 und 616 aktualisiert, um Verknüpfungen zu den entsprechenden Offsetpositionen 640A-E und 641A-E der zugeordneten Rang-Extents 630A und 630B aufzuweisen. Die logischen Darstellungen 636 und 638 der Offsetpositionen 640A-E und 641A-E der zugeordneten Rang-Extents 630A und 630B werden dargestellt. Beispielsweise kann das Volumen-Extent 0 618A des kleinen VST 614 aktualisiert werden, um auf die Offset-Position 0 640A der logischen Darstellung 636 des zugeordneten Rang-Extent 0 630A zu zeigen, das Volumen-Extent 1 618B des kleinen VST 614 kann aktualisiert werden, um auf die Offset-Position 1 640B der logischen Darstellung 636 des zugeordneten Rang-Extent 0 630A zu zeigen, usw.
-
Auf diese Weise kann eine Korrelation zwischen den Extents 618A-E und 619A-E innerhalb der kleinen VSTs 614 und 616 und den Offsetpositionen 640A-E und 641A-E der zugeordneten Rang-Extents 630A und 630B hergestellt werden.
-
6C zeigt gemäß einer Ausführungsform eine beispielhafte Speicherumgebung 600 während einer Datenmigration von einem Quell-Pool 0 626 zu einem Ziel-Pool 1 622. Wie gezeigt, werden Rang-Extents 620A-E und 621A-E innerhalb des Zielrangs 0 610 und des Zielrangs 1 612 im Ziel-Pool 1 622 zugeordnet. Es sollte beachtet werden, dass, obwohl die zugewiesenen Rang-Extents 620A-E und 621A-E seriell sind, die Zuweisung möglicherweise nicht seriell durchgeführt wird.
-
Zusätzlich können, obwohl Zielrang 0 610 und Zielrang 1 612 gezeigt sind, Rang-Extents von anderen Rängen innerhalb des Ziel-Pools 622 zugeordnet werden. Beispielsweise können Rang-Extents unter den Rängen innerhalb des Ziel-Pools 622 zufällig zugeordnet werden, entsprechend einer Datenabrufgeschwindigkeit der Ränge, entsprechend einer Datenmenge, die derzeit in den Rängen gespeichert ist, usw.
-
Des Weiteren wurden, wie gezeigt, Daten, die physikalisch in der Offsetposition 0 640A des Rangs 0 630A des Rangs 3 624 gespeichert sind, in den Rang-Extent 1 621B des Zielrangs 1 612 übertragen, und der Volumen-Extent 0 618A des kleinen VST 614 wird aktualisiert, um auf den Rang-Extent 1 621B zu verweisen. Umgekehrt wird der Rang-Extent 1 621B des Zielrangs 1 612 des Quell-Pools 1 622 aktualisiert, um eine Verknüpfung zum Volumen-Extent 0 618A innerhalb des Volumens 0 604 aufzuweisen. Dies führt zu veralteten Daten an der Offsetposition 0 640A.
-
In ähnlicher Weise wurden, wie gezeigt, Daten, die physikalisch im Offset-Speicherplatz 2 640C gespeichert sind, in den Rang-Extent 1 620B des Zielrangs 0 610 übertragen, und der Volumen-Extent 2 618C des kleinen VST 614 wird aktualisiert, um auf den Rang-Extent 1 620B zu zeigen. Umgekehrt wird der Rang-Extent 1 620B des Zielrangs 0 610 des Quell-Pools 1 622 aktualisiert, um eine Verknüpfung zum Volumen-Extent 2 618C innerhalb des Volumens 0 604 aufzuweisen. Dies führt zu veralteten Daten an der Offsetposition 2 640C.
-
Außerdem wurden, wie gezeigt, Daten, die physisch im Offset-Speicher 65 641 B gespeichert sind, in den Rang-Extent 0 621A des Zielrangs 1 612 übertragen, und der Volumen-Extent 129 619B des kleinen VST 616 wird aktualisiert, um auf den Rang-Extent 0 621A zu zeigen. Umgekehrt wird der Rang-Extent 0 621A des Zielrangs 1 612 des Quell-Pools 1 622 aktualisiert, um eine Verknüpfung zum Volumen-Extent 129 619B innerhalb des Volumens 0 604 aufzuweisen. Dies führt zu veralteten Daten an der Offsetposition 65 641B.
-
Außerdem wurden, wie gezeigt, Daten, die physikalisch im Offset-Speicher 127 641E gespeichert sind, in den Rang-Extent 2 620C des Zielrangs 0 610 übertragen, und der Volumen-Extent 191 619E des kleinen VST 616 wird aktualisiert, um auf den Rang-Extent 2 620C zu zeigen. Umgekehrt wird der Rang-Extent 2 620C des Zielrangs 0 610 des Quell-Pools 1 622 aktualisiert, um eine Verknüpfung zum Volumen-Extent 191 619E innerhalb des Volumens 0 604 aufzuweisen. Dies führt zu veralteten Daten an der Offsetposition 127 641 E.
-
6D zeigt eine beispielhafte Speicherumgebung 600 nach einer Datenmigration von einem Quell-Pool 0 626 zu einem Ziel-Pool 1 622, gemäß einer Ausführungsform. Wie dargestellt, werden alle Daten, die physisch in den Rang-Extents 0 630A und 64 630B des Quell-Pools 0 626 gespeichert sind, in zugeordnete Rang-Extents innerhalb von Rang 0 610 und Rang 1 612 des Ziel-Pools 1 622 übertragen. Zusätzlich werden die entsprechenden Volumen-Extents in den kleinen VSTs 614 und 616 aktualisiert, um auf die entsprechenden Rang-Extents zu zeigen, die nun die migrierten Daten speichern.
-
Dies führt zu veralteten Daten in allen Offsetpositionen der Rang-Extents 0 630A und 64 630B, und die Daten in diesen Rang-Extents 0 630A und 64 630B werden daher freigegeben.
-
Auf diese Weise können Daten aus dem Quell-Pool 0 626 in den Ziel-Pool 1 622 migriert werden, und das Volumen 0 604 kann aktualisiert werden, um die Migration widerzuspiegeln.
-
Migration von Volumen aus einem Groß-Extent-Pool in einen Klein-Extent-Pool
-
Extent-Pools in Speicherprodukten können unterschiedliche Extent-Größen haben. DS8000 kann z.B. eine Extent-Größe von 1 GB für einen großen Pool und 16 MB für einen kleinen Pool verwenden. Einige Workloads funktionieren besser mit kleinen Pools, während andere besser in Groß-Extent-Pools funktionieren. Es besteht daher die Notwendigkeit, Volumina über unterschiedlich große Extent-Pools zu migrieren, wenn sich die Arbeitslast ändert.
-
Extent-Migration ist ein Baustein für Volume-Migration. Zu Beginn der Extent-Migration werden Rank-Extents in dem Ziel-Extent-Pool als Migrationsziel des Quell-Extent allokiert. Wenn die Extent-Größe von des Quell- und Ziel-Extent-Pool die gleiche ist, weist der Migrationsprozess ein Allokieren eines Extent in dem Ziel-Pool, eine Migration der Daten von der Quelle zum Ziel, ein Zurückhalten von Backend-I/O während der Migration (oder Nutzung von Spiegel-Schreibvorgängen) und eine Umschaltung des I/O zum Ziel, sobald die Migration abgeschlossen wurde.
-
Es wird ein Verfahren zur effizienten Migration von Daten aus einem Groß-Extent-Pool in einen Klein-Extent-Pool offengelegt, bei dem die Migration wieder aufgenommen werden kann, wenn sie (geplant oder ungeplant) unterbrochen wird.
-
In einer Ausführungsform ist eine Rang-Segment-Tabelle (RST) eine Abbildungstabelle für einen Rang (Array), die den Zustand der Rang-Extents und der logischen Volumen-Extents beschreibt, zu denen die physischen Rang-Extents gehören. Angenommen, Rang rO ist 1T und die Extent-Größe ist 1G, dann würde diese RST-Tabelle 1024 Einträge haben, wobei jeder Eintrag einen physischen Extent darstellt. Wenn Rang-Extent 0 dem logischen Extent 1 des Volumens 0x1010 zugeordnet ist, dann enthält der Eintrag in RST die Information, dass der physische Extent-Zustand zugeordnet ist, und er ist dem logischen Extent 1 des Volumens 0x1010 zugeordnet.
-
Zusätzlich ist in einer Ausführungsform eine Volume-Segment-Tabelle (VST) eine Abbildungstabelle für Volumen, die die logische Ausdehnung des Volumens auf die physische Ausdehnung des Rangs abbildet, so dass man die physische Position leicht identifizieren kann, wenn Host-E/A ankommt, die auf einer Volumen-LBA-Grenze liegt.
-
Des Weiteren ist in einer Ausführungsform eine Small-Volume-Segment-Tabelle (smVST) auch eine Abbildungstabelle für ein Volumen, die 64 Einträge enthält, wobei jeder Eintrag einen kleinen logischen Umfang (16 MB) auf den physischen Umfang des Rangs abbildet, so dass man einen physischen Speicherort leicht identifizieren kann, wenn eine Host-E/A ankommt, die auf einer Volumen-LBA-Grenze liegt.
-
Weiterhin ist in einer Ausführungsform nur ein RST auf den Festplatten persistent, und ein VST wird bei Bedarf auf der Grundlage des RST erstellt und in den Speicher geladen.
-
In einer Ausführungsform sorgen die folgenden Schritte für die Migration von einem Groß-Extent-Pool zu einem Klein-Extent-Pool:
- 1. Vorprüfung, um sicherzustellen, dass die Migrationsanforderung erfüllt werden kann.
- 2. Quiesce-Thin-Provisioning-Schreiben, wenn es sich um ein Thin-Provisioning-Volumen handelt.
- 3. Aktualisieren der Volume-Extent-Pool-ID auf den Ziel-Extent-Pool, Einschalten des Volume-Flag, um anzuzeigen, dass die Speicherplatzzuweisung läuft, und „härten“ die Volume-Struktur.
- 4. Ordnen zielgerichteter RST-Objekte für Kundendaten.
- 5. Wenn, wie bei Thin-Provisioning-Volumen, der große Quell-Extent bereits zugewiesen ist, Allokieren von 64 kleinen Extents im Ziel-Extent-Pool und Markieren als DSR_TGT. Wenn der Quell-Extent nicht zugewiesen ist, brauchen keine kleinen Extents im Ziel-Extent-Pool zugewiesen werden.
- 6. Zuordnen der Ziel-RST-Objekte für die Metadaten.
- 7. Fortsetzen des Thin-Provisioning-Schreibvorgangs, wenn es sich um ein Thin-Provisioning-Volumen handelt.
- 8. „Härtet“ der geänderte RST-Objekte durch Verwendung einer RST-Changed-Bitmap.
- 9. Beenden des Thin-Provisioning-Schreibvorgangs, wenn es sich um ein Thin-Provisioning-Volumen handelt.
- 10. Allokieren von smVST, wenn sich alle Einträge in einem nicht zugeordneten Zustand befinden.
- 11. Senden einer E-Mail an die Peer-LPAR, um smVST zu synchronisieren (dieser Schritt gilt nur für ESE-Volumen).
- 12. Fortsetzen von Thin-Provisioning-Schreiben, wenn es sich um ein Thin-Provisioning-Volumen handelt.
- 13. Ausschalten des Volume-Zuordnungsflag, Einschalten eines Volume-Migrationsflag und „härten“ der Volume-Struktur.
- 14. Fortfahren mit der Migration von Volume-Extents.
- 15. Suchen eines Small Extent im Status DSR_TGT im Ziel-Pool und Koppeln mit dem Small-Extent-Chunk der Quelle, um die Small-Extent-Migration zu starten; halten der I/Os in 16-MB-Einheiten.
- 16. Wechseln zu einer Metadaten-Aktualisierungsphase, sobald sich die 16 MB Kundendaten aus dem Quell-Extent im Ziel befinden.
- 17. Ändern und „härten“ des Zustands des Ziel-RST in den Zustand TGT_CMPLT.
- 18. Allokieren einer smVST, wenn noch keine smVST vorhanden ist.
- 19. Initialisieren von smVST-Einträgen, um auf die zugehörigen kleinen Chunks in einem Quell-Großbereich zu verweisen.
- 20. Aktualisieren der smVST, um auf den neuen kleinen Ziel-Extent auf allen verfügbaren Clustern zu verweisen.
- 21. Freigeben aller gehaltenen Stage & Destage I/Os.
- 22. CACHE SCAN, damit CACHE alle geänderten Spuren im Extent vernichtet.
- 23. Freigeben des Quell-Extentionsbereiches, wenn es sich um den letzten kleinen Chunk handelt, der zum Ziel migriert wird; andernfalls zurückgehen zu Schritt 15, um den nächsten kleinen Chunk zu behandeln.
- 24. Ändern und „härten“ des Zustands des Ziel-RST in einen ALLOCATED-Zustand.
-
Verfahren zum Zuordnen von Speicherplatz und Zeitplan für die Zuweisung/Aktualisierung der smVST-Abbildungstabelle
-
In einer Ausführungsform wird im Ziel-Extent-Pool vor Beginn der Migration Speicherplatz zugewiesen. 1GB Large Extent entspricht 64 16MB Small Extents. Wenn also das Quell-Groß-Extent zugeteilt ist, sind im Ziel-Pool 64 Small Extents vorreserviert. Wenn der Quell-Groß-Extent noch nicht allokiert wurde, muss auch im Ziel-Pool kein Speicherplatz bereitgestellt werden.
-
Ein smVST-Eintrag sollte für die 64 Small-Extent-Chunks allokiert werden, wenn die Quelle noch nicht zugeordnet ist; auf diese Weise können man, sobald I/O beim Schreiben auf einen der 64 Small-Extent-Chunks eintrifft, einen Small-Extent aus dem Small-Extent-Pool des Ziels allokieren und den smVST-Eintrag aktualisieren, damit er auf den Small-Extent des Ziels zeigt. Die smVST-Aktualisierung muss zwischen den Speicherknoten synchronisiert werden.
-
Wenn sich der Quell-Groß-Extent in einem allokierten Zustand befindet, kann man entweder den smVST noch vorher zuordnen und seine Einträge aktualisieren, um auf die zugehörigen kleinen Chunks im Groß-Extent zu verweisen, oder man verzögert die Zuordnung des smVST bis zu dem Zeitpunkt, an dem der erste 16 MB große kleine Chunk des Groß-Extent in den kleinen Ziel-Extent migriert wurde.
-
Methode zum Zurückhalten der Backend-E/A
-
In einer Ausführungsform wird der Backend-I/O in einer 16 MB großen Small-Extent-Einheit gehalten. Während der Migration des 16-MB-Small-Chunks vom Large-Extent zum zugehörigen Small-Extent im Target-Pool wird der Backend-I/O sowohl in die Quelle als auch in das Ziel geschrieben, da die Migration von der Quelle zum Target durchgeführt wird. Der Wechsel zu einer Metadaten-Aktualisierungsphase wird durchgeführt, sobald die Kundendaten aus dem Small Chunk der Quelle größtenteils im Ziel sind. Das Ändern des RST-Zustands des Ziels in einen TGT_CMPLT-Zustand zeigt an, dass die Kopie abgeschlossen ist, und der zugehörige smVST-Eintrag wird aktualisiert, um auf den Ziel-Extent zu verweisen, sodass der I/O anschließend auf das Ziel geleitet werden kann.
-
Verfahren zur Behandlung der Migrationsunterbrechung aufgrund eines geplanten/ungeplanten Neustarts
-
Wenn die Migration durch einen geplanten/ungeplanten Neustart unterbrochen wird, befindet sich ein Teil der 1-GB-Daten im Quell-Pool und die anderen Teile befinden sich im Ziel-Pool. Wie wählt man aus, welche Kopien verwendet werden? Wie baut man die VST so auf, dass sie auf die richtigen Rang-Segmente abgebildet wird? In einer Ausführungsform triumphiert immer der kleine Rang: Der Prozess kann ein Scannen von Rängen und ein Erstellen einer VST für jeden RST aufweisen, der sich entweder im Zustand TGT_CMPLT oder ALLOCATED befindet. Eine RST aus kleinen Rängen überschreibt immer eine RST aus großen Rängen. Das liegt daran, dass der I/O so umgeschaltet wurde, dass er auf einen kleinen Bereich abzielt, wenn sich der kleine Bereich bereits in einem TGT_CMPLT- oder ALLOCATED-Zustand befindet. Daher muss man den zugehörigen smVST überschreiben, damit er auf den kleinen Ziel-Extent verweist.
-
Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Medien) aufweisen, auf dem sich computerlesbare Programmanweisungen befinden, die einen Prozessor veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Das computerlesbare Speichermedium kann eine greifbare Vorrichtung sein, die Befehle zur Verwendung durch eine Befehlsausführungsvorrichtung aufbewahren und speichern kann. Das computerlesbare Speichermedium kann zum Beispiel, ist aber nicht beschränkt auf, eine elektronische Speichervorrichtung, eine magnetische Speichervorrichtung, eine optische Speichervorrichtung, eine elektromagnetische Speichervorrichtung, eine Halbleiterspeichervorrichtung oder jede geeignete Kombination der vorgenannten sein. Eine nicht erschöpfende Liste spezifischerer Beispiele für das computerlesbare Speichermedium weist Folgendes auf: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Compact-Disc-Festwertspeicher (CD-ROM), eine Digital Versatile Disk (DVD), ein Memory-Stick, eine Diskette, eine mechanisch kodierte Vorrichtung, wie z.B. Lochkarten oder erhabene Strukturen in einer Nut mit darauf aufgezeichneten Befehlen und jede geeignete Kombination der vorgenannten. Ein computerlesbares Speichermedium, wie es hier verwendet wird, ist nicht so zu verstehen, dass es sich um transitorische Signale per se handelt, wie z.B. Radiowellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtimpulse, die durch ein Glasfaserkabel laufen), oder elektrische Signale, die durch einen Draht übertragen werden.
-
Hierin beschriebene computerlesbare Programmanweisungen können von einem computerlesbaren Speichermedium oder einem externen Computer oder externen Speichergerät über ein Netzwerk, z.B. das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk, auf entsprechende Rechen-/Verarbeitungsgeräte heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, optische Übertragungsfasern, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jedem Rechen-/Bearbeitungsgerät empfängt computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb des jeweiligen Rechen-/Bearbeitungsgeräts weiter.
-
Computerlesbare Programmanweisungen zur Ausführung von Operationen der vorliegenden Erfindung können Assembler-Befehle, ISA-Befehle (Instruction-Set-Architecture), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Firmware-Befehle, zustandsabhängige Daten oder entweder Quellcode oder Objektcode sein, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben wurden, einschließlich einer objektorientierten Programmiersprache wie Smalltalk, C++ oder dergleichen, und konventionellen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernte (remote) Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (z.B. über das Internet unter Verwendung eines Internet Service Providers). In einigen Ausführungsformen können elektronische Schaltungen, die beispielsweise programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) aufweisen, die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen verwenden, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Flussdiagrammabbildungen und/oder Blockdiagramme von Verfahren, Geräten (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammabbildungen und/oder Blockdiagramme sowie Kombinationen von Blöcken in den Flussdiagrammabbildungen und/oder Blockdiagrammen durch computerlesbare Programmanweisungen implementiert werden können.
-
Diese computerlesbaren Programmanweisungen können einem Prozessor eines Allzweckcomputers, eines Spezialcomputers oder eines anderen programmierbaren Datenverarbeitungsgeräts zur Verfügung gestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder des anderen programmierbaren Datenverarbeitungsgeräts ausgeführt werden, Mittel zum Implementieren der im Flussdiagramm und/oder Blockdiagramm angegebenen Funktionen/Aktionen erzeugen. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, ein programmierbares Datenverarbeitungsgerät und/oder andere Vorrichtungen anweisen kann, in einer bestimmten Weise zu arbeiten, so dass das computerlesbare Speichermedium, in dem Anweisungen gespeichert sind, einen Herstellungsgegenstand aufweist, der Anweisungen aufweist, die Aspekte der in dem Flussdiagramm und/oder dem Blockdiagrammblock oder den Blöcken spezifizierten Funktion/Aktion implementieren.
-
Die computerlesbaren Programmanweisungen können auch auf einen Computer, ein anderes programmierbares Datenverarbeitungsgerät oder ein anderes Gerät geladen werden, um eine Reihe von Betriebsschritten zu veranlassen, die auf dem Computer, einem anderen programmierbaren Gerät oder einem anderen Gerät ausgeführt werden, um einen computerimplementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer, einem anderen programmierbaren Gerät oder einem anderen Gerät ausgeführt werden, die im Flussdiagramm und/oder im Blockdiagrammblock oder in den Blöcken angegebenen Funktionen/Aktionen implementieren.
-
Die Flussdiagramme und Blockdiagramme in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block im Flussdiagramm oder in den Blockdiagrammen ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweisen. In einigen alternativen Implementierungen können die im Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten. So können z.B. zwei nacheinander gezeigte Blöcke in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach der betreffenden Funktionalität. Es wird auch darauf hingewiesen, dass jeder Block der Blockdiagramme und/oder der Flussdiagramm-Darstellung sowie Kombinationen von Blöcken in den Blockdiagrammen und/oder der Flussdiagramm-Darstellung durch spezielle Hardware-basierte Systeme implementiert werden können, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von spezieller Hardware und Computeranweisungen ausführen.
-
Darüber hinaus kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und eine Logik aufweisen, die in den Prozessor integriert ist und/oder von diesem ausgeführt werden kann, wobei die Logik so konfiguriert ist, dass sie einen oder mehrere der hier genannten Prozessschritte ausführt. Mit „integriert mit“ ist gemeint, dass der Prozessor eine in ihn eingebettete Logik als Hardware-Logik aufweist, wie z.B. einen anwendungsspezifischen integrierten Schaltkreis (ASIC), ein FPGA usw. Mit „vom Prozessor ausführbar“ ist gemeint, dass es sich bei der Logik um Hardware-Logik, Software-Logik wie Firmware, Teil eines Betriebssystems, Teil eines Anwendungsprogramms usw. oder um eine Kombination aus Hardware- und Software-Logik handelt, auf die der Prozessor zugreifen kann und die so konfiguriert ist, dass sie den Prozessor veranlasst, bei ihrer Ausführung durch den Prozessor eine bestimmte Funktionalität auszuführen. Die Softwarelogik kann in einem lokalen und/oder entfernten Speicher eines beliebigen Speichertyps gespeichert werden, wie er in der Technik bekannt ist. Es kann jeder in der Technik bekannte Prozessor verwendet werden, wie z.B. ein Software-Prozessor-Modul und/oder ein Hardware-Prozessor, wie z.B. ein ASIC, ein FPGA, eine Zentraleinheit (CPU), ein integrierter Schaltkreis (IC), eine Grafikverarbeitungseinheit (GPU), usw.
-
Es wird klar sein, dass die verschiedenen Merkmale der vorstehenden Systeme und/oder Methoden in beliebiger Weise kombiniert werden können, so dass eine Vielzahl von Kombinationen aus den oben dargestellten Beschreibungen entsteht.
-
Es wird weiter zu verstehen sein, dass Ausführungsformen der vorliegenden Erfindung in Form eines Dienstes bereitgestellt werden können, der im Auftrag eines Kunden eingesetzt wird, um einen Dienst auf Anforderung anzubieten.
-
Während verschiedene Ausführungsformen oben beschrieben wurden, sollte es verstanden werden, dass sie nur als Beispiel und nicht als Einschränkung dargestellt wurden. Daher sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen begrenzt werden, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und deren Äquivalenten definiert werden.