-
HINTERGRUND DER ERFINDUNG
-
Diese Veröffentlichung bezieht sich auf die Datenverarbeitung und Datenspeicherung, und insbesondere auf die effiziente Verteilung von Daten auf die Speichergeräte eines Datenspeichersystems. Noch spezieller bezieht sich die Offenlegung auf die Verlagerung von Daten zwischen Datenspeichergeräten auf Grundlage der zeitlichen Nähe von Zugriffen auf die Daten.
-
Datenspeichersysteme versuchen im Allgemeinen, eine Zugriffslatenz zu verringern und eine Zunahme eines Eingabe/Ausgabe (E/A)-Durchsatzes zu erhöhen, indem sie Engpässe beim Datenzugriff verringern. In einigen Implementierungen versuchen Datenspeichersysteme beispielsweise, die Zugriffslatenz zu verbessern und den Durchsatz zu erhöhen, indem sie Daten „horizontal“ auf mehrere verschiedene Peer-Speichergeräte verteilen, die ein Speicherarray bilden (z. B. ein Redundant Array of Independent Disks (RAID)). In einigen Implementierungen versuchen Datenspeichersysteme alternativ oder zusätzlich, die Zugriffslatenz zu verbessern und den Durchsatz zu erhöhen, indem sie die Daten „vertikal“ auf mehrere Ebenen von Speichergeräten mit unterschiedlichen Zugriffslatenzen auf Grundlage der Häufigkeit des Zugriffs auf die Daten verteilen.
-
Die vorliegende Veröffentlichung erkennt jedoch an, dass selbst in Datenspeichersystemen, die Daten „horizontal“ und/oder „vertikal“ verteilen, immer noch Leistungsfähigkeitsengpässe aufgrund der zeitlichen Nähe von Zugriffen auf verschiedene Daten entstehen können, die sich auf demselben Speichergerät befinden oder auf welche über einen gemeinsamen Controller zugegriffen wird.
-
ZUSAMMENFASSUNG
-
Die vorliegende Offenlegung verbessert Leistungsengpässe, die aufgrund der zeitlichen Nähe von Zugriffen auf Daten entstehen können, die sich auf demselben Speichergerät befinden und/oder dem Zugriff über einen gemeinsamen Controller unterliegen.
-
In mindestens einer Ausführungsform umfasst ein Datenspeichersystem mindestens ein erstes und zweites Speichergerät, auf das über erste bzw. zweite Hardware-Kanäle zugegriffen wird. Ein Speicher-Controller des Datenspeichersystems empfängt eine erste Zugriffsanforderung, die einen Zugriff auf erste Daten anfordert, und eine zweite Zugriffsanforderung, die einen Zugriff auf zweite Daten anfordert, wobei sowohl auf die ersten Daten als auch auf die zweiten Daten über den ersten Hardware-Kanal zugegriffen wird. In Reaktion auf das Erkennen des Empfangs der ersten und zweiten Zugriffsanforderung innerhalb desselben Dienstfensters, das einen Bereich zeitlicher Nähe definiert, zeichnet der Speicher-Controller eine Verknüpfung von Kennungen der ersten Daten und zweiten Daten auf, die von der ersten bzw. zweiten Zugriffsanforderung angefordert wurden. Der Speicher-Controller migriert anschließend die zweiten Daten, auf die durch die zweite Zugriffsanforderung zugegriffen wurde, von dem ersten Speichergerät auf das zweite Speichergerät auf der Grundlage der aufgezeichneten Verknüpfung, so dass die ersten und zweiten Daten für den Zugriff über verschiedene Hardware-Kanäle verfügbar sind.
-
Figurenliste
-
- 1 ist ein übergeordnetes Blockdiagramm einer Datenverarbeitungsumgebung gemäß einer Ausführungsform;
- 2 ist ein übergeordnetes logisches Flussdiagramm eines beispielhaften Prozesses zur Aufzeichnung von Zielen zeitlich benachbarter Zugriffe gemäß einer Ausführungsform;
- 3 veranschaulicht eine beispielhafte Zugriffsdatenstruktur, in der Ziele von zeitlich nahe beieinander liegenden Zugriffsanforderungen durch den Prozess aus 2 gemäß einer Ausführungsform aufgezeichnet werden; und
- 4 ist ein übergeordnetes logisches Flussdiagramm eines beispielhaften Prozesses zur Verteilung von Daten, auf welche in einem Datenspeichersystem zeitnah zugegriffen wird, gemäß einer Ausführungsform.
-
DETAILLIERTE BESCHREIBUNG
-
Unter Bezugnahme auf die Figuren und insbesondere auf 1 wird ein übergeordnetes Blockdiagramm einer beispielhaften Datenverarbeitungsumgebung 100 veranschaulicht, die ein Datenspeichersystem 120 umfasst, wie es ferner hier beschrieben wird. Wie gezeigt, umfasst die Datenverarbeitungsumgebung 100 einen oder mehrere Hosts, wie z.B. ein Prozessorsystem 102 mit einem oder mehreren Prozessoren 104, die Anweisungen und Daten verarbeiten. Ein Prozessorsystem 102 kann zusätzlich einen lokalen Speicher 106 (z.B. einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM) oder Platten) umfassen, der Programmcode, Operanden und/oder Ausführungsergebnisse der von Prozessor(en) 104 ausgeführten Prozesse speichern kann. In verschiedenen Ausführungsformen kann ein Prozessorsystem 102 z.B. ein mobiles Rechengerät (wie ein Smartphone oder Tablet), ein Laptop- oder Desktop-Personalcomputersystem, ein Server-Computersystem (wie einer der Server der POWER-Serie, die bei der International Business Machines Corporation erhältlich sind) oder ein Großrechner-Computersystem sein. Ein Prozessorsystem 102 kann auch ein eingebettetes Prozessorsystem sein, das verschiedene Prozessoren wie ARM, POWER, Intel x86 oder jeden anderen Prozessor in Kombination mit Speicher-Caches, Speicher-Controllern, lokalen Speichern, E/A-Bus-Hubs usw. verwendet.
-
Jedes Prozessorsystem 102 umfasst ferner einen oder mehrere Ein-/Ausgabe (E/A)-Adapter 108, die jeweils direkt (d.h. ohne zwischengeschaltetes Gerät) oder indirekt (d.h. über mindestens ein zwischengeschaltetes Gerät) mit einem oder mehreren Datenspeichersystemen 120 über einen E/A-Kanal 110 gekoppelt werden können. In einigen Ausführungsformen kann ein Datenspeichersystem 120 in ein Prozessorsystem 102 integriert sein. In verschiedenen Ausführungsformen kann der E/A-Kanal 110 ein beliebiges oder eine Kombination bekannter oder zukünftig entwickelter Kommunikationsprotokolle verwenden, einschließlich z.B. Fibre Channel (FC), FC over Ethernet (FCoE), Internet Small Computer System Interface (iSCSI), InfiniBand, Transport Control Protocol/Internet Protocol (TCP/IP), Peripheral Component Interconnect Express (PCle) usw. E/A-Anforderungen (Operationsanforderung), die über den E/A-Kanal 110 übermittelt werden, umfassen z.B. Leseanforderungen, mit denen ein Prozessorsystem 102 Daten vom Datenspeichersystem 120 anfordert, Schreibanforderungen, mit denen ein Prozessorsystem 102 die Speicherung von Daten im Datenspeichersystem 120 anfordert, und offene Anforderungen, mit denen ein Prozessorsystem 102 das Öffnen eines Dateisystemobjekts (z.B. einer Datei) anfordert.
-
In der veranschaulichen Ausführungsform umfasst das Datenspeichersystem 120 eine oder mehrere Schnittstellenkarten 122, über die das Datenspeichersystem 120 E/A-Anforderungen von Hosts über E/A-Kanäle 110 empfängt und beantwortet. Jede Schnittstellenkarte 122 ist mit einem oder mehreren Redundant Array of Inexpensive Disks (RAID)-Controllern 124 gekoppelt, die Fehlertoleranz und Lastausgleich bereitstellen. Jeder der RAID-Controller 124 ist wiederum (z. B. über einen PCIe-Bus) mit einem oder mehreren nichtflüchtigen Speichergeräten 126a-126d gekoppelt, die eine oder mehrere Typen von Speichergeräten umfassen können, einschließlich nichtflüchtiger Speicher (z. B. Flash-Speicher), Festplatten, Bandlaufwerke usw. Jeder der RAID-Controller 124, der vorzugsweise mit einem entsprechenden Controller-Speicher 125 gekoppelt ist oder einen entsprechenden Controller-Speicher 125 enthält, verteilt die Extents der Dateisystemobjekte auf die Speichergeräte 126, um einen guten E/A-Durchsatz und eine niedrige Latenz zu erreichen.
-
In der dargestellten Ausführungsform wird der Gesamtbetrieb des Datenspeichersystems 120 durch redundante System-Management-Controller (SMCs) 123 verwaltet, die mit Schnittstellenkarten 122 und RAID-Controllern 124 gekoppelt sind. In verschiedenen Ausführungsformen kann der System-Management-Controller 123 unter Verwendung von Hardware oder Hardware, die Firmware und/oder Software ausführt, implementiert werden.
-
Diejenigen, die sich auf diesem Gebiet auskennen, werden unter Bezugnahme auf 1 leicht erkennen, dass die Datenverarbeitungsumgebung 100 mehrere Hardware-Kanäle umfasst, die aufgrund der inhärenten Latenzen und Durchsatzbeschränkungen dieser Hardware-Kanäle potenziell Engpässe für Datenzugriffsanforderungen bilden können. Im Allgemeinen können diese mehrfachen Hardware-Kanäle im gegebenen Beispiel mindestens E/A-Adapter 108, Schnittstellenkarte 122, RAID-Controller 124 und Speichergeräte 126 umfassen. Die inhärenten Latenzen und Durchsatzbegrenzungen dieser Hardware-Kanäle haben die Wirkung, dass zeitlich nahe beieinander liegende Zugriffsanforderungen unter Verwendung eines gemeinsamen Satzes von Hardware-Kanälen serialisiert werden, so dass die später empfangene Zugriffsanforderung mit einer Latenz bedient werden kann, die den inhärenten Latenzen aller Hardware-Kanäle entspricht, die von der Zugriffsanforderung durchlaufen werden, zuzüglich der Wartezeiten, die durch Warteschlangenverzögerungen entstehen, wenn die Zugriffsanforderung auf den Abschluss der unmittelbar vorangehenden Zugriffsanforderung wartet. Im Allgemeinen wird bei Datenspeichersystemen 120 einschließlich Speichergeräten 126 wie Festplatten und Bandlaufwerken der größte Anteil an der Latenz einer Zugriffsanforderung die Suchzeit des Speichergerätes 126 sein, die beispielsweise 2 bis 10 ms betragen kann.
-
Unter Bezugnahme auf 2 wird nun ein übergeordnetes logisches Flussdiagramm eines beispielhaften Prozesses zur Aufzeichnung von Zielen zeitlich nahe beieinander liegender Zugriffsanforderungen gemäß einer Ausführungsform dargestellt. Der veranschaulichte Prozess kann z.B. von einem RAID-Controller 124 und/oder einem SMC 123 in verschiedenen Ausführungsformen (die einzeln oder gemeinsam als „Speicher-Controller“ bezeichnet werden können) ausgeführt werden. In der folgenden Beschreibung wird der Prozess der Einfachheit halber als von einem RAID-Controller 124 ausgeführt beschrieben. In verschiedenen Ausführungsformen kann der veranschaulichte Prozess vollständig in Hardware oder auf einer Hardware-Plattform implementiert werden, die so konfiguriert ist, dass sie den Prozess durch die Ausführung von Firmware und/oder Software ausführt. Die folgende detaillierte Beschreibung dient lediglich der Veranschaulichung und ist nicht dazu gedacht, Ausführungsformen und/oder die Anwendung oder den Gebrauch von Ausführungsformen einzuschränken. Darüber hinaus besteht keine Absicht, durch ausdrückliche oder implizite Informationen, die in den vorangegangenen Abschnitten „Hintergrund“ oder „Zusammenfassung“ oder im Abschnitt „Ausführliche Beschreibung“ dargestellt sind, gebunden zu sein.
-
Der Prozess aus 2 beginnt bei Block 200 und geht dann weiter zu Block 202, der einen RAID-Controller 124 veranschaulicht, der auf den Empfang einer Zugriffsanforderung wartet, z.B. auf eine Lese-, Schreib- oder Offen-Anforderung. Die Zugriffsanforderung kennzeichnet in der Regel den Initiator der Anforderung (z. B. durch eine IP-Adresse (Internet Protocol), eine MAC-Adresse (Media Access Control) oder eine andere Kennung des Prozessorsystems 102 und/oder die Arbeitslast, die die Zugriffsanforderung initiiert hat) und gibt ein Zieldateisystemobjekt an, auf das die Anforderung zugreifen soll. Abhängig von der Konfiguration des Datenspeichersystems 120 kann das Zieldateisystemobjekt dem Initiator über eine Logikschnittstelle präsentiert werden, z. B. ein Speichervolumen, das eine oder mehrere Llogikeinheiten (LUNs) umfasst. Unabhängig davon, wie das Zieldateisystemobjekt dem Initiator präsentiert wird, wird das Zieldateisystemobjekt physisch innerhalb eines oder mehrerer Speichergeräte 126 in einem oder mehreren Extents gespeichert, von denen jedes aus einem oder mehreren fortlaufenden Blöcken physischen Speichers gebildet wird.
-
Wenn bei Block 202 keine Zugriffsanforderung empfangen wird, setzt der Prozess seine Iteration fort, bis RAID-Controller 124 eine Zugriffsanforderung empfängt. In Reaktion auf den Empfang einer Zugriffsanforderung ermittelt RAID-Controller 124 in Block 204, ob die Zugriffsanforderung innerhalb eines Dienstfensters einer oder mehrerer anderer vorangegangener Zugriffsanforderungen empfangen wird, die auf unterschiedliche Extents abzielen und über denselben Hardware-Kanal bedient werden. In einer bevorzugten Ausführungsform ist das Dienstfenster eines Hardware-Kanals eine konfigurierbare Dauer, die einen Bereich der zeitlichen Nähe von Zugriffsanforderungen definiert. In einigen Ausführungsformen kann das Dienstfenster eines Hardware-Kanals zum Beispiel automatisch durch ein Betriebssystem oder eine Speichersystem-Software oder alternativ oder zusätzlich manuell durch einen Speicheradministrator konfiguriert werden. Im Falle von Datenspeichersystemen 120 einschließlich Speichergeräten 126 mit einer Latenz, die einer Suchzeit unterliegt (z.B. Festplatten, Bandlaufwerke usw.), hat das Dienstfenster für einen bestimmten Hardware-Kanal vorzugsweise einen Mindestwert, der gleich der Suchzeit des zugrundeliegenden Speichergeräts 126 ist. Wenn also eine Zugriffsanforderung einen Zugriff auf einen oder mehrere Extents anfordert, die auf einem Festplattenspeichergerät 126 mit einer Suchzeit von 2 ms gespeichert sind, kann das Dienstfenster für Zugriffe, die von diesem Festplattenspeichergerät aus bedient werden, z.B. so konfiguriert werden, dass es zwischen 2 und 5 ms liegt. Wenn das Dienstfenster für ein Festplatten-Speichergerät 126 so konfiguriert ist, dass es 3 ms beträgt, ermittelt RAID-Controller 124 dementsprechend im Block 204, ob eine Zugriffsanforderung, die einen Zugriff auf einen auf einem Festplatten-Speichergerät 126 (z.B. Speichergerät 126a) gespeicherten Extent anfordert, im Block 202 innerhalb von 3 ms nach einer anderen Zugriffsanforderung empfangen wird, die auf einen anderen, auf demselben Speichergerät 126a gespeicherten Extent abzielt.
-
In Reaktion darauf, dass RAID-Controller 124 bei Block 204 feststellt, dass die Zugriffsanforderung nicht im Dienstfenster einer anderen Zugriffsanforderung empfangen wurde, die über denselben Hardware-Kanal bedient wird, geht der Prozess zu Block 214 über, der nachfolgend beschrieben wird. In Reaktion darauf, dass RAID-Controller 124 bei Block 204 feststellt, dass die Zugriffsanforderung im Dienstfenster einer oder mehrerer vorangegangener Zugriffsanforderungen empfangen wurde, die auf unterschiedliche Extents abzielen und über denselben Hardware-Kanal bedient werden, geht der Prozess von 2 jedoch zu Block 206 und folgenden Blöcken über. Block 206 und folgende Blöcke veranschaulichen RAID-Controller 124, der eine oder mehrere Verknüpfungen zwischen der Kennung eines Extents, auf den die aktuelle Zugriffsanforderung abzielt, und der/den Kennung(en) des/der anderen Extents, auf den/die andere(n) Speicherzugriffsanforderung(en) abzielen, im Dienstfenster desselben Hardware-Kanals aufzeichnet.
-
Unter Bezugnahme auf 3 wird nun eine beispielhafte Zugriffsdatenstruktur 300 veranschaulicht, in der Ziel-Extents von zeitlich nahe beieinander liegenden Zugriffsanforderungen in Block 206 von 2 gemäß einer Ausführungsform aufgezeichnet werden können. In dem dargestellten Beispiel behält RAID-Controller 124 die Zugriffsdatenstruktur 300 in seinem verknüpften Controller-Speicher 125 bei.
-
In der dargestellten Ausführungsform umfasst die Zugriffsdatenstruktur 300, die die Form einer Tabelle oder einer anderen geeigneten Datenstruktur haben kann, eine Vielzahl von Einträgen 302. Jeder Eintrag 302 umfasst ein Extent-Paar-Feld 304 zum Speichern eines Paares von Extent-Kennungen, ein Zählerfeld 306 zum Angeben einer Zählung einer Anzahl von Speicherzugriffsanforderungspaaren, die auf die identifizierten Extents innerhalb des betreffenden Dienstfensters abzielen, und ein Kandidaten-Speichergerät-Feld 308 zum Kennzeichnen eines Kandidaten-Speichergeräts 126, zu dem eines der beiden identifizierten Extents migriert werden kann, um die Zugriffslatenz zu verbessern.
-
In Anbetracht dieser beispielhaften Zugriffsdatenstruktur 300 ermittelt RAID-Controller 124 in Block 206 der 2, ob die Zugriffsdatenstruktur 300 bereits einen Eintrag 302 umfasst, der eine Verknüpfung zwischen der Kennung des von der aktuellen Zugriffsanforderung angeforderten Extents und einer Kennung des Ziel-Extents der anderen Speicherzugriffsanforderung, die in das Dienstfenster desselben Hardware-Kanals fällt, verknüpft. Wenn dies der Fall ist, kann RAID-Controller 124 einfach das Zählerfeld 306 des entsprechenden Eintrags 302 inkrementieren, wie in Block 212 gezeigt. Wenn RAID-Controller 124 jedoch in Block 206 feststellt, dass innerhalb der Zugriffsdatenstruktur 300 kein passender Eintrag 302 bereits vorhanden ist, weist RAID-Controller 124 einen neuen Eintrag 302 zu und zeichnet im Feld 304 des Extent-Paares eine Verknüpfung zwischen der Kennung des von der aktuellen Zugriffsanforderung angeforderten Extents und einer Kennung des Ziel-Extents der anderen Speicherzugriffsanforderung auf, die in das Dienstfenster desselben Hardware-Kanals fällt (Block 208). Darüber hinaus ermittelt der RAID-Controller 124 eine Kennung eines Kandidaten-Speichergeräts 126, falls vorhanden, und zeichnet diese in Feld 308 auf, in das der Ziel-Extent der aktuellen Zugriffsanforderung migriert werden kann, um die Latenz des Ziel-Extents zu verringern (Block 210). Darüber hinaus erhöht RAID-Controller 124 den Zählwert von Zählerfeld 306, zum Beispiel von 0 auf 1 (Block 212). Der Prozess von 2 verläuft dann von Block 212 bis Block 214.
-
Block 214 veranschaulicht, wie RAID-Controller 124 die aktuelle Speicherzugriffsanforderung bedient, indem er den Typ des Zugriffs auf den durch die Zugriffsanforderung angeforderten Ziel-Extent (z. B. Lesen, Schreiben, Öffnen usw.) bereitstellt. Nach Block 214 kehrt der Prozess von 2 zu Block 202 und folgenden Blöcken zurück, die beschrieben wurden.
-
3 veranschaulicht ein spezifisches Beispiel dafür, wie RAID Controller 124 die Zugriffsdatenstruktur 300 in einem Betriebsszenario auffüllen kann. In diesem Beispiel empfängt RAID-Controller 124 innerhalb eines Dienstfensters fünf verschiedene Zugriffsanfragen, die jeweils auf einen der Extents E1, ..., E5 abzielen, die alle auf Speichergerät 126a gespeichert sind. Diese Abfolge von Zugriffsanforderungen lässt sich wie folgt darstellen:
- R1(A(E1))
- R2(A(E2))
- R3(A(E3))
- R4(A(E4))
- R5(A(E5))
-
In Reaktion auf den Empfang dieser Abfolge von Zugriffsanforderungen zeichnet RAID-Controller 124 eine Verknüpfung zwischen den Kennungen jedes Paares von Extents, auf die die Abfolge von Zugriffsanforderungen abzielt, innerhalb der Extent-Paar-Felder 304 der Einträge 302 auf, wie in 3 dargestellt. RAID-Controller 124 aktualisiert auch das Zählfeld 306 jedes solchen Eintrags 302 auf den Wert 1, unter der Annahme, dass dies das erste Mal ist, dass diese Extent-Paare seit der letzten Initialisierung der Zählfelder 306 aufgezeichnet wurden. Darüber hinaus bezeichnet RAID-Controller 124 Kandidaten-Speichergeräte, falls vorhanden, zu denen verschiedene der Ziel-Extents migriert werden können, um die Latenz zu verbessern. In diesem Beispiel bezeichnet RAID-Controller 124 mit der Kennung B das Speichergerät 126b als Kandidaten-Speichergerät für Extent E2, mit der Kennung C das Speichergerät 126c als Kandidaten-Speichergerät für Extent E3 und mit der Kennung D das Speichergerät 126d als Kandidaten-Speichergerät für Extent E4. Es ist zu beachten, dass der RAID-Controller 124 zumindest anfänglich kein Kandidaten-Speichergerät für den Extent E5 angibt, da die Migration des Extents E5 vom Speichergerät 126a die Gesamtlatenz nicht verbessern würde, wenn weiterhin in zeitlicher Nähe zu den Extents E2 - E4 auf den Extent E5 zugegriffen wird.
-
Es ist zu beachten, dass, nachdem RAID-Controller 124 ein Kandidaten-Speichergerät bestimmt hat, zu dem ein Extent eines Extent-Paares migriert werden kann (oder auf eine anfängliche Bestimmung verzichtet), RAID-Controller 124 vorzugsweise so konfiguriert ist, dass er den bestimmten Kandidaten (oder die Bestimmung eines Kandidaten-Speichergeräts) auf der Grundlage beobachteter Zugriffshäufigkeiten verschiedener Extent-Paare aktualisiert. Wenn man beispielsweise annimmt, dass auf Extent E2 tendenziell innerhalb desselben Dienstfensters wie auf Extent E1 weniger als auf Extent E5 innerhalb desselben Dienstfensters wie auf Extent E1 zugegriffen wird, aktualisiert RAID-Controller 124 vorzugsweise die Bezeichnung der Kandidaten-Speichergeräte in den Kandidaten-Speichergeräte-Feldern 308, um Speichergerät 126b als den designierten Kandidaten für Extent E5 zu bestimmen und das Kandidaten-Speichergerätefeld 308 für den Eintrag 302 für das Extent-Paar E1:E2 zu löschen.
-
Unter Bezugnahme auf 4 ist nun ein übergeordnetes logisches Flussdiagramm eines beispielhaften Prozesses zur Verteilung von Daten, auf welche in einem Datenspeichersystem zeitnah zugegriffen wird, gemäß einer Ausführungsform dargestellt. Zum einfacheren Verständnis wird der Prozess von 4 im Folgenden unter Bezugnahme auf einen RAID-Controller 124 beschrieben, der Extents zwischen Speichergeräten 126 migriert; es sollte jedoch berücksichtigt werden, dass der Prozess auch auf die Verteilung von Daten, auf welche zeitnah zugegriffen wird, über andere Hardware-Kanäle angewendet werden kann.
-
Der Prozess von 4 beginnt bei Block 400 und setzt sich dann fort bis Block 402, der veranschaulicht, wie RAID-Controller 124 feststellt, ob ein minimales Migrationsintervall (z.B. 4 Stunden, 8 Stunden, 1 Tag usw.) seit der letzten Ausführung einer Extent-Migration zwischen Speichergeräten 126 verstrichen ist oder nicht. Falls nicht, iteriert der Prozess einfach bei Block 402. Wenn RAID-Controller 124 jedoch in Block 402 feststellt, dass das minimale Migrationsintervall verstrichen ist, kann RAID-Controller 124 ferner optional in Block 404 ermitteln, ob ein Zählwert im Zählerfeld 306 eines der Einträge 302 (oder einer Schwellenanzahl von Einträgen 302) einen Migrationsschwellenwert erfüllt (z. B. größer oder gleich). Die in Block 404 veranschaulichte optionale Feststellung stellt sicher, dass die Migration von Extents zwischen Speichergerät 126 erst dann ausgeführt wird, wenn die Häufigkeit der zeitlichen Nähe von Zugriffen auf Extents ausreichend ist, um den Overhead des Migrationsprozesses zu rechtfertigen.
-
In Reaktion darauf, dass RAID-Controller 124 bei Block 404 feststellt, dass die Migrationsschwelle nicht erfüllt wurde, kehrt der Prozess zu Block 402 zurück. Wenn jedoch RAID-Controller 124 bei Block 404 feststellt, dass die Migrationsschwelle erfüllt wurde, migriert RAID-Controller 124 die Extents zwischen Speichergeräten 126 gemäß der Verteilung, die durch Kandidaten-Speichergeräte-Felder 308 der Zugriffsdatenstruktur 300 (Block 406) angegeben wird. Als Ergebnis der Migration sind Extents, auf die in enger zeitlicher Nähe häufig zugegriffen wird, danach über verschiedene Hardware-Kanäle (z. B. Speichergeräte 126) zugänglich. Der Fachmann wird der dessen gewahr sein, dass während der in Block 406 dargestellten Migration ein Speicher-Controller, wie z.B. RAID-Controller 124, zusätzlich Daten auf der Grundlage anderer Metriken wie Extent-Zugriffsfrequenz (Wärme), Lastausgleich usw. migrieren kann. Nach der Migration in Block 406 initialisiert RAID-Controller 124 die Zugriffsdatenstruktur 300 neu, indem er beispielsweise die Extent-Paar-Felder 304 und die Felder 308 des Kandidatengeräts löscht und die Zählerfelder 306 auf null zurücksetzt (Block 408). Der Prozess kehrt dann zu Block 402 zurück, der beschrieben wurde.
-
Wie bereits beschrieben, umfasst ein Datenspeichersystem in mindestens einer Ausführungsform mindestens ein erstes und ein zweites Speichergerät, auf die über einen ersten bzw. zweiten Hardware-Kanal zugegriffen wird. Ein Speicher-Controller des Datenspeichersystems empfängt eine erste Zugriffsanforderung, die einen Zugriff auf erste Daten anfordert, und eine zweite Zugriffsanforderung, die einen Zugriff auf zweite Daten anfordert, wobei sowohl auf die ersten Daten als auch auf die zweiten Daten über den ersten Hardware-Kanal zugegriffen wird. In Reaktion auf das Erkennen des Empfangs der ersten und zweiten Zugriffsanforderung innerhalb desselben Dienstfensters, das einen Bereich zeitlicher Nähe definiert, zeichnet der Speicher-Controller eine Verknüpfung von Kennungen der ersten Daten und zweiten Daten auf, die von der ersten bzw. zweiten Zugriffsanforderung angefordert wurden. Der Speicher-Controller migriert danach die zweiten Daten, auf die durch die zweite Zugriffsanforderung zugegriffen wurde, von dem ersten Speichergerät zu dem zweiten Speichergerät auf Grundlage der aufgezeichneten Verknüpfung, so dass die ersten und zweiten Daten für den Zugriff über verschiedene Hardware-Kanäle verfügbar sind.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein oder mehrere computerlesbare Speichermedien, die computerlesbare Programmanweisungen enthalten, um einen Prozessor zur Ausführung von Aspekten der vorliegenden Erfindung zu veranlassen, umfassen.
-
Das computerlesbare Speichermedium kann ein greifbares Gerät sein, das Anweisungen zur Verwendung durch ein Anweisungsausführungsgerät aufbewahren und speichern kann. Das computerlesbare Speichermedium kann zum Beispiel ein elektronisches Speichergerät, ein magnetisches Speichergerät, ein optisches Speichergerät, ein elektromagnetisches Speichergerät, ein Halbleiterspeichergerät oder eine geeignete Kombination der vorgenannten sein, ist aber nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezifischeren Beispielen des computerlesbaren Speichermediums umfasst das Folgende: eine tragbare Computerdiskette, eine Festplatte, einen Speicher mit wahlfreiem Zugriff (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Speicher mit wahlfreiem Zugriff (SRAM), einen tragbaren Nur-Lese-Speicher für Compact Discs (CD-ROM), eine digitale vielseitige Platte (DVD), einen Speicherstick, eine Diskette, ein mechanisch codiertes Gerät wie Lochkarten oder erhabene Strukturen in einer Nut, auf denen Befehle aufgezeichnet sind, und jede geeignete Kombination der vorstehenden Elemente. Ein hier verwendetes computerlesbares Speichermedium sollte nicht so ausgelegt werden, dass es sich dabei per se um vergängliche Signale handelt wie beispielsweise Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch eine Leitung übertragen werden.
-
Die hierin beschriebenen computerlesbaren Programmanweisungen können von einem computerlesbaren Speichermedium oder über ein Netzwerk, z.B. das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk, auf die entsprechenden Rechengeräte/Verarbeitungsgeräte heruntergeladen werden. Das Netzwerk kann Kupfer-Übertragungskabel, optische Übertragungsfasern, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server umfassen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jedem Rechengerät/Verarbeitungsgerät empfängt computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb des jeweiligen Rechengerätes/Verarbeitungsgerätes weiter.
-
Bei computerlesbaren Programmanweisungen zur Ausführung von Betriebsanweisungen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandsetzende Daten oder entweder um Quellcode oder Objektcode handeln, die in einer beliebigen Kombination einer oder mehrerer Programmiersprachen, einschließlich einer objektorientierten Programmiersprache wie Smalltalk, C++ oder dergleichen, und herkömmlicher prozeduraler Programmiersprachen, wie der Programmiersprache „C“ oder ähnlicher Programmiersprachen, geschrieben sind. 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 Remote-Computer oder vollständig auf dem Remote-Computer oder Server ausgeführt werden. Im letzteren Fall kann der Remote-Computer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzwerks (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet mit Hilfe eines Internet Service Providers). In einigen Ausführungsformen können elektronische Schaltungen, die z.B. programmierbare Logikschaltungen, feldprogrammierbare Gatterfelder (FPGA) oder programmierbare Logikfelder (PLA) umfassen, die computerlesbaren Programmanweisungen ausführen, indem sie die Zustandsinformationen der computerlesbaren Programmanweisungen zur Personalisierung der elektronischen Schaltung nutzen, um Aspekte der vorliegenden Erfindung auszuführen.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Flussdiagrammabbildungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird vorausgesetzt, dass jeder Block der Flussdiagrammabbildungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammabbildungen und/oder Blockdiagrammen durch computerlesbare Programmanweisungen implementiert werden kann.
-
Diese computerlesbaren Programmanweisungen können einem Prozessor eines Allzweck-Computers, eines Spezial-Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Verfügung gestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der im Flussdiagramm- und/oder Blockdiagramm-Block oder in den Blockdiagrammen angegebenen Funktionen/Aktionen zu schaffen. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Vorrichtungen anweisen kann, in einer bestimmten Weise zu funktionieren, so dass das computerlesbare Speichermedium, in dem Anweisungen gespeichert sind, einen Herstellungsgegenstand umfasst, der Anweisungen umfasst, die Aspekte der im Flussdiagramm und/oder im Blockdiagrammblock oder in den Blockdiagrammblöcken spezifizierten Funktion/Handlung implementieren.
-
Die computerlesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder ein anderes Gerät geladen werden, um eine Reihe von Betriebsanweisungen auf dem Computer, einer anderen programmierbaren Vorrichtung oder einem anderen Gerät auszuführen, um einen computerimplementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einem anderen Gerät ausgeführt werden, die Funktionen/Handlungen implementieren, die in dem Flussdiagramm und/oder dem Block oder den Blöcken des Blockdiagramms spezifiziert sind.
-
Das Flussdiagramm und die Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Flussdiagramm oder den Blockdiagrammen ein Modul, ein Segment oder einen Teil von Befehlen darstellen, das/der einen oder mehrere ausführbare Befehle zur Implementierung der angegebenen logischen Funktion(en) umfasst. In einigen alternativen Implementierungen können die im Block vermerkten Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten. So können z.B. zwei nacheinander dargestellte Blöcke 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 ist zu beachten, dass jeder Block der Blockdiagramme und/oder der veranschaulichenden Flussdiagrammdarstellung sowie Kombinationen von Blöcken in den Blockdiagrammen und/oder der veranschaulichenden Flussdiagrammdarstellung durch auf Spezial-Hardware basierende Systeme implementiert werden kann, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von Spezial-Hardware und Computerbefehlen ausführen.
-
Während die vorliegende Erfindung insbesondere in Bezug auf eine oder mehrere bevorzugte Ausführungsformen wie beschrieben gezeigt wurde, wird es von den Fachleuten verstanden werden, dass darin verschiedene Form- und Detailänderungen vorgenommen werden können, ohne vom Geist und Umfang der Erfindung abzuweichen. Obwohl zum Beispiel Aspekte in Bezug auf ein Datenspeichersystem beschrieben wurden, das einen Flash-Controller umfasst, der bestimmte Funktionen steuert, sollte verstanden werden, dass die vorliegende Erfindung alternativ als ein Programmprodukt implementiert werden kann, das ein Speichergerät zur Speicherung von Programmcode umfasst, der von einem Prozessor verarbeitet werden kann, um solche Funktionen auszuführen oder ausführen zu lassen. Wie hier verwendet, ist ein „Speichergerät“ speziell so definiert, dass es nur satzungsgemäße Herstellungsgegenstände umfasst und Signalmedien per se, vorübergehende verbreitende Signale per se und Energie per se ausschließt.
-
Die oben beschriebenen Figuren und die schriftliche Beschreibung spezifischer Strukturen und Funktionen unten werden nicht dargestellt, um den Umfang dessen, was die Anmelder erfunden haben, oder den Umfang der beigefügten Ansprüche einzuschränken. Vielmehr werden die Figuren und die schriftliche Beschreibung bereitgestellt, um jeden Fachmann zu lehren, die Erfindungen, für die Patentschutz beantragt wird, zu machen und zu benutzen. Fachkundige Personen werden verstehen, dass nicht alle Merkmale einer kommerziellen Ausführungsform der Erfindungen aus Gründen der Klarheit und des Verständnisses beschrieben oder gezeigt werden. Fachkundige Personen werden auch verstehen, dass die Entwicklung einer tatsächlichen kommerziellen Ausführungsform, die Aspekte der gegenwärtigen Erfindungen enthält, zahlreiche implementierungsspezifische Entscheidungen erfordern wird, um das Endziel des Entwicklers für die kommerzielle Ausführungsform zu erreichen. Solche implementierungsspezifischen Entscheidungen können die Einhaltung systembedingter, geschäftlicher, staatlicher und anderer Einschränkungen umfassen, die je nach spezifischer Implementierung, Standort und von Zeit zu Zeit variieren können, und sind wahrscheinlich nicht darauf beschränkt. Auch wenn die Bemühungen eines Entwicklers im absoluten Sinne komplex und zeitaufwendig sein mögen, so wären solche Bemühungen für Fachleute, die von dieser Offenlegung profitieren, dennoch ein Routineunternehmen. Es muss verstanden werden, dass die hier offengelegten und gelehrten Erfindungen zahlreichen und verschiedenen Modifikationen und alternativen Formen zugänglich sind. Schließlich ist die Verwendung eines Begriffs im Singular, wie z.B., aber nicht beschränkt auf „ein“, nicht als Begrenzung der Anzahl der Gegenstände gedacht.