DE112021000794T5 - Präventives zwischenspeichern für auslagerung eines ganzen stride - Google Patents

Präventives zwischenspeichern für auslagerung eines ganzen stride Download PDF

Info

Publication number
DE112021000794T5
DE112021000794T5 DE112021000794.7T DE112021000794T DE112021000794T5 DE 112021000794 T5 DE112021000794 T5 DE 112021000794T5 DE 112021000794 T DE112021000794 T DE 112021000794T DE 112021000794 T5 DE112021000794 T5 DE 112021000794T5
Authority
DE
Germany
Prior art keywords
cache
strides
raid array
data
stride
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112021000794.7T
Other languages
English (en)
Inventor
Lokesh Mohan Gupta
Clint A. Hardy
Brian Anthony Rinaldi
Karl Allen Nielsen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112021000794T5 publication Critical patent/DE112021000794T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Es wird ein Verfahren zum Verbessern der Auslagerungsleistung in ein RAID-Array offenbart. Das Verfahren scannt periodisch einen Cache nach ersten Strides, die bereit sind, in ein RAID-Array ausgelagert zu werden. Beim Scannen des Cache erkennt das Verfahren zweite Strides, die derzeit nicht bereit sind, in das RAID-Array ausgelagert zu werden, aber wahrscheinlich bereit sein werden, während eines nachfolgenden Scans des Cache ausgelagert zu werden. Das Verfahren leitet als Vorbereitung für den nachfolgenden Scan ein präventives Zwischenspeichern aller fehlenden Daten der zweiten Strides aus dem RAID-Array in den Cache ein. Beim Eintreten des nachfolgenden Scans lagert das Verfahren die zweiten Strides aus dem Cache vom Cache in das RAID-Array aus.

Description

  • HINTERGRUND
  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft Systeme und Verfahren zum Verbessern der Auslagerungsleistung für RAID-Arrays.
  • HINTERGRUND DER ERFINDUNG
  • Ein RAID („Redundant Array of Independent Disks“) ist eine Speichertechnologie, die verbesserte Speicherfunktionen und eine verbesserte Zuverlässigkeit durch Redundanz bietet. Ein RAID wird erstellt, indem mehrere Speicherlaufwerkskomponenten (z.B. Plattenlaufwerke und/oder Solid-State-Laufwerke) zu einer logischen Einheit zusammengeführt werden. Die Daten werden dann mithilfe verschiedener Techniken, die als „RAID-Stufen“ bezeichnet werden, auf die Laufwerke verteilt. Die Standard-RAID-Stufen, die derzeit die RAID-Stufen 1 bis 6 umfassen, sind ein grundlegender Satz von RAID-Konfigurationen, die Striping, Spiegelung und/oder Parität verwenden, um für Datenredundanz zu sorgen. Alle Konfigurationen sorgen für ein Gleichgewicht zwischen zwei Hauptzielen: (1) Erhöhung der Datenzuverlässigkeit und (2) Erhöhung der E/A-Leistung.
  • In einem RAID-Array konfigurierte Festplatten können eine beschleunigte Leseleistung bieten, da auf Daten von mehreren Laufwerken gleichzeitig zugegriffen werden kann. Es kann jedoch zu einem erhöhten Aufwand kommen, wenn Schreibvorgänge auf RAID-Arrays wie RAID-5- oder RAID-6-Arrays ausgeführt werden. Dies liegt vor allem an der Paritätsberechnung. Um beispielsweise in eine Teilmenge (d.h. einen Strip bzw. Streifen) eines Stride (Segments) von Daten in einem RAID-5-Array zu schreiben, müssen die anderen Streifen des Stride von dem RAID-5-Array möglicherweise zwischengespeichert werden, um den zu dem Stride gehörenden Paritätswert neu zu berechnen. Nachdem der Paritätswert neu berechnet wurde, kann der gesamte Stride zurück auf das RAID-5-Array ausgelagert werden. Daher können Schreibvorgänge von weniger als einem vollen Stride auf ein RAID-5-Array einen erheblichen Aufwand beim Zwischenspeichern von Daten aus dem RAID-Array, Neuberechnen des Paritätswerts und Auslagern der Daten und des neu berechneten Paritätswerts zurück in das RAID-Array erfordern. Andererseits kann ein Schreibvorgang, der einen vollständigen Daten-Stride abdeckt, zusammen mit einem berechneten Paritätswert unter Verwendung einer einzigen Operation auf ein RAID-5-Array ausgelagert werden. Dies liegt daran, dass keine fehlenden Datenwerte oder Paritätswerte von den Plattenlaufwerken geladen werden müssen, bevor ein Stride in das RAID-Array geschrieben wird.
  • KURZDARSTELLUNG
  • Die Erfindung wurde in Reaktion auf den gegenwärtigen Stand der Technik und insbesondere in Reaktion auf die Probleme und Bedürfnisse im Stand der Technik entwickelt, die durch derzeit verfügbare Systeme und Verfahren noch nicht vollständig gelöst wurden. Dementsprechend wurde die Erfindung entwickelt, um die Auslagerungsleistung in ein RAID-Array zu verbessern. Die Merkmale und Vorteile der Erfindung werden aus der folgenden Beschreibung und den beigefügten Ansprüchen vollständiger ersichtlich oder können durch die Umsetzung der Erfindung, wie sie nachstehend beschrieben wird, erlernt werden.
  • In Übereinstimmung mit dem Vorangegangenen ist ein Verfahren zum Verbessern der Auslagerungsleistung in ein RAID-Array offenbart. In einer Ausführungsform scannt ein solches Verfahren periodisch einen Cache nach ersten Strides, die bereit sind, in ein RAID-Array ausgelagert zu werden. Beim Scannen des Cache erkennt das Verfahren zweite Strides, die derzeit nicht bereit sind, in das RAID-Array ausgelagert zu werden, aber wahrscheinlich bereit sein werden, während eines nachfolgenden Scans des Cache ausgelagert zu werden. Das Verfahren leitet als Vorbereitung für den nachfolgenden Scan ein präventives Zwischenspeichern aller fehlenden Daten der zweiten Strides aus dem RAID-Array in den Cache ein. Beim Eintreten des nachfolgenden Scans lagert das Verfahren die zweiten Strides aus dem Cache vom Cache in das RAID-Array aus.
  • Ein entsprechendes Computerprogrammprodukt und -system werden hierin ebenfalls offenbart und beansprucht.
  • Figurenliste
  • Damit die Vorteile der Erfindung leicht verständlich werden, erfolgt eine genauere Beschreibung der oben kurz beschriebenen Erfindung unter Bezugnahme auf bestimmte Ausführungsformen, die in den beigefügten Zeichnungen gezeigt sind. In Anbetracht dessen, dass diese Zeichnungen nur typische Ausführungsformen der Erfindung zeigen und daher nicht als ihren Umfang einschränkend anzusehen sind, wird die Erfindung mit zusätzlicher Genauigkeit und Detailliertheit durch Verwendung der beigefügten Zeichnungen beschrieben und erläutert, in denen:
    • 1 ein übergeordnetes Blockschema ist, das ein Beispiel einer Netzwerkumgebung zeigt, in der Systeme und Verfahren gemäß der Erfindung umgesetzt werden können;
    • 2 ein übergeordnetes Blockschema ist, das ein Beispiel eines Speichersystems zur Verwendung in der Netzwerkumgebung von 1 zeigt;
    • 3A ein übergeordnetes Blockschema ist, das Strides in einem RAID-Array zeigt;
    • 3B eine Tabelle ist, die Paritätswerte zeigt, die für jeden Stride in dem RAID-Array von 3A berechnet wurden;
    • 4 ein übergeordnetes Blockschema ist, das einen Lese-Cache und einen Schreib-Cache innerhalb des Cache zeigt;
    • 5 ein übergeordnetes Blockschema ist, das ein Cache-Auslagerungsmodul zum Auslagern von Daten aus dem Cache in ein RAID-Array zeigt;
    • 6 ein Flussdiagramm ist, das eine Ausführungsform eines Verfahrens zum Scannen eines Cache nach Strides zum Auslagern in ein RAID-Array zeigt; und
    • 7 ein Flussdiagramm ist, das eine Ausführungsform eines Verfahrens zum Steuern einer Anzahl von Strides zeigt, die in dem Cache präventiv zwischengespeichert werden.
  • DETAILLIERTE BESCHREIBUNG
  • Es versteht sich von selbst, dass die Komponenten der vorliegenden Erfindung, wie sie allgemein in den Figuren hierin beschrieben und gezeigt sind, in einer großen Vielfalt unterschiedlicher Konfigurationen angeordnet und ausgestaltet werden können. Somit soll die folgende ausführlichere Beschreibung der Ausführungsformen der Erfindung, wie sie in den Figuren gezeigt sind, den Schutzbereich der Erfindung wie beansprucht nicht einschränken, sondern steht lediglich stellvertretend für bestimmte Beispiele derzeit in Betracht gezogener Ausführungsformen gemäß der Erfindung. Die hier beschriebenen Ausführungsformen werden am besten unter Bezugnahme auf die Zeichnungen verstanden, in denen gleiche Teile durchweg mit gleichen Bezugszeichen gekennzeichnet sind.
  • Die vorliegende Erfindung kann als ein System, Verfahren und/oder Computerprogrammprodukt ausgeführt sein. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen halten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen.
  • Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann ein fern angeordneter Computer mit dem Computer eines Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Unter Bezugnahme auf 1 ist ein Beispiel einer Netzwerkumgebung 100 gezeigt. Die Netzwerkumgebung 100 wird gezeigt, um ein Beispiel einer Umgebung zu zeigen, in der Ausführungsformen der Erfindung arbeiten können. Die Netzwerkumgebung 100 wird nur als Beispiel und nicht einschränkend gezeigt. Tatsächlich können die hierin offenbarten Systeme und Verfahren zusätzlich zu der gezeigten Netzwerkumgebung 100 auf eine große Vielfalt unterschiedlicher Netzwerkumgebungen anwendbar sein.
  • Wie gezeigt, umfasst die Netzwerkumgebung 100 einen oder mehrere Computer 102, 106, die durch ein Netzwerk 104 miteinander verbunden sind. Das Netzwerk 104 kann beispielsweise ein lokales Netzwerk (LAN) 104, ein Weitverkehrsnetz (WAN) 104, das Internet 104, ein Intranet 104 oder dergleichen umfassen. In bestimmten Ausführungsformen können die Computer 102, 106 sowohl Client-Computer 102 als auch Server-Computer 106 umfassen (hierin auch als „Hosts“ 106 oder „Host-Systeme“ 106 bezeichnet). Im Allgemeinen leiten die Client-Computer 102 Datenübertragungssitzungen ein, während die Server-Computer 106 auf Anfragen von den Client-Computern 102 warten und auf diese antworten. In bestimmten Ausführungsformen können die Computer 102 und/oder Server 106 mit einem oder mehreren internen oder externen direkt angeschlossenen Speichersystemen 112 (z.B. Arrays von Festplattenlaufwerken, Solid-State-Laufwerken, Bandlaufwerken usw.) verbunden sein. Diese Computer 102, 106 und direkt angeschlossene Speichersysteme 112 können unter Verwendung von Protokollen wie ATA, SATA, SCSI, SAS, Fibre Channel oder dergleichen Daten austauschen.
  • Die Netzwerkumgebung 100 kann in bestimmten Ausführungsformen ein Speichernetzwerk 108 hinter den Servern 106 umfassen, beispielsweise ein Speicherbereichsnetzwerk (SAN) 108 oder ein LAN 108 (z.B. bei Verwendung von Networkattached Storage). Dieses Netzwerk 108 kann die Server 106 mit einem oder mehreren Speichersystemen 110 verbinden, beispielsweise Arrays 110a von Festplattenlaufwerken oder Solid-State-Laufwerken, Bandbibliotheken 110b, einzelnen Festplattenlaufwerken 110c oder Solid-State-Laufwerken 110c, Bandlaufwerken 110d, CD-ROM-Bibliotheken oder dergleichen. Um auf ein Speichersystem 110 zuzugreifen, kann ein Host-System 106 über physische Verbindungen von einem oder mehreren Ports auf dem Host 106 zu einem oder mehreren Ports auf dem Speichersystem 110 Daten austauschen. Eine Verbindung kann über einen Switch, ein Fabric, eine direkte Verbindung oder dergleichen erfolgen. In bestimmten Ausführungsformen können die Server 106 und die Speichersysteme 110 unter Verwendung eines Netzwerkstandards wie Fibre Channel (FC) oder iSCSI Daten austauschen.
  • Unter Bezugnahme auf 2 ist eine Ausführungsform eines Speichersystems 110a gezeigt, das ein Array von Speicherlaufwerken 204 (z.B. Festplattenlaufwerken und/oder Solid-State-Laufwerken) umfasst. Wie gezeigt, umfasst das Speichersystem 110a einen Speichercontroller 200, einen oder mehrere Switches 202 und ein oder mehrere Speicherlaufwerke 204 wie beispielsweise Festplattenlaufwerke und/oder Solid-State-Laufwerke (etwa Flash-Speicher-gestützte Laufwerke). Der Speichercontroller 200 kann es einem oder mehreren Hosts 106 (z.B. Open-System- und/oder Mainframe-Servern 106) erlauben, auf Daten in dem einen oder den mehreren Speicherlaufwerken 204 zuzugreifen. Die Speicherlaufwerke 204 können in bestimmten Ausführungsformen in RAID-Arrays verschiedener RAID-Stufen konfiguriert sein, um für gewünschte Stufen der E/A-Leistung und/oder Datenredundanz zu sorgen.
  • In ausgewählten Ausführungsformen umfasst der Speichercontroller 200 einen oder mehrere Server 206. Der Speichercontroller 200 kann auch Hostadapter 208 und Einheitenadapter 210 umfassen, um den Speichercontroller 200 mit den Hosteinheiten 106 bzw. Speicherlaufwerken 204 zu verbinden. Während des normalen Betriebs (wenn beide Server 206 in Betrieb sind) können die Server 206 E/A zu verschiedenen logischen Teilsystemen (LSSs) in dem Enterprise Storage System 110a verwalten. Beispielsweise kann in bestimmten Konfigurationen ein erster Server 206a E/A zu geraden LSSs bearbeiten, während ein zweiter Server 206b E/A zu ungeraden LSSs bearbeiten kann. Diese Server 206a, 206b können für Redundanz sorgen, um sicherzustellen, dass Daten für verbundene Hosts 106 immer verfügbar sind. Wenn somit ein Server 206a ausfällt, kann der andere Server 206b die E/A-Last des ausgefallenen Servers 206a übernehmen, um sicherzustellen, dass E/A zwischen den Hosts 106 und den Speicherlaufwerken 204 fortgesetzt werden kann. Dieser Vorgang kann als „Übernahme“ bezeichnet werden.
  • In ausgewählten Ausführungsformen umfasst jeder Server 206 einen oder mehrere Prozessoren 212 und Speicher 214. Der Speicher 214 kann flüchtigen Speicher (z.B. RAM) sowie nichtflüchtigen Speicher (z.B. ROM, EPROM, EEPROM, Flash-Speicher, lokale Festplatten, lokale Solid-State-Laufwerke usw.) umfassen. Der flüchtige und der nichtflüchtige Speicher können in bestimmten Ausführungsformen Softwaremodule speichern, die auf dem einen/den mehreren Prozessoren 212 laufen und verwendet werden, um auf Daten in den Speicherlaufwerken 204 zuzugreifen. Diese Softwaremodule können alle Lese- und Schreibanforderungen an logische Datenträger 302 in den Speicherlaufwerken 204 verwalten.
  • In ausgewählten Ausführungsformen umfasst der Speicher 214 einen Cache 218, etwa einen DRAM-Cache 218. Immer wenn ein Host 106 (z.B. ein Open-System- oder Mainframe-Server 106) eine Leseoperation ausführt, kann der Server 206, der die Leseoperation ausführt, Daten von den Speicherlaufwerken 204 abrufen und sie für den Fall in seinem Cache 218 speichern, dass sie erneut benötigt werden. Wenn die Daten erneut von einem Host 106 angefordert werden, kann der Server 206 die Daten aus dem Cache 218 abrufen, anstatt sie von den Speicherlaufwerken 204 abzurufen, was sowohl Zeit als auch Ressourcen spart. Wenn ein Host 106 eine Schreiboperation ausführt, kann der Server 106, der die Schreibanforderung empfängt, in ähnlicher Weise die Schreiboperation in seinem Cache 218 speichern und die Schreiboperation zu einem späteren Zeitpunkt auf die Speicherlaufwerke 204 auslagern. Wenn die Schreiboperation in einem Cache 218 gespeichert wird, kann die Schreiboperation auch in einem nichtflüchtigen Speicher (NVS) 220 des anderen Servers 206 gespeichert werden, so dass die Schreiboperation durch den anderen Server 206 wiederhergestellt werden kann, falls der erste Server 206 ausfällt.
  • Ein Beispiel eines Speichersystems 110a mit einer ähnlichen Architektur wie der in 2 gezeigten ist das IBM DS8000® Enterprise Storage System. Das DS8000® ist ein hochleistungsfähiger Speichercontroller mit hoher Kapazität, das Festplatten- und Solid-State-Speicher bereitstellt, der für die Unterstützung des Dauerbetriebs ausgelegt ist. Dennoch sind die hierin offenbarten Systeme und Verfahren nicht auf das IBM DS8000® Enterprise Storage System beschränkt, sondern können in allen vergleichbaren oder analogen Speichersystemen oder Gruppen von Speichersystemen umgesetzt werden, unabhängig von Hersteller, Produktname oder Komponenten oder Komponentennamen, die zu dem System gehören. Jedes Speichersystem, das von einer oder mehreren Ausführungsformen der Erfindung profitieren kann, wird als in den Umfang der Erfindung fallend angesehen. Somit wird das IBM DS8000® nur beispielhaft angegeben und soll nicht einschränkend sein.
  • Unter Bezugnahme auf 3A können in ausgewählten Ausführungsformen Plattenlaufwerke 204 des Speichersystems 110a in einem RAID-Array 302 („redundanten Array von kostengünstigen Festplatten“) konfiguriert sein. Beispielsweise können in einem „RAID 5“-Array 302 logisch sequentielle Daten über mehrere Plattenlaufwerke 204a - d segmentiert werden. Wenn zum Beispiel die Plattenlaufwerke 204a - d vier Platten umfassen, können logisch sequentielle Daten „A“ in Segmente „A1“, „A2“ und „A3“ (zusammen als „Stride A“ bezeichnet) aufgeteilt und auf drei getrennten Platten 204a - c gespeichert werden. In ausgewählten Ausführungsformen weist jedes Segment eine oder mehrere Spuren 300 auf, obwohl auch andere Unterteilungen möglich sind. Es können Paritätsdaten „Ap“ berechnet werden, indem eine XOR-Operation an A1, A2 und A3 durchgeführt wird. Diese Paritätsdaten können auf einer vierten Platte 204d gespeichert werden. Beispielhafte Daten und Paritätswerte sind in 3B gezeigt (die Paritätswerte sind schattiert). Falls eine der Platten 204a - c ausfällt, können die verbleibenden Daten und Paritätswerte verwendet werden, um die Daten auf der ausgefallenen Platte zu rekonstruieren. Wenn zum Beispiel die Platte 204b ausfällt, die A2 enthält, können die Werte A1, A3 und Ap verwendet werden, um A2 zu rekonstruieren.
  • In einem RAID-Array 302 konfigurierte Platten können eine beschleunigte Leseleistung bieten, da auf Daten von mehreren Laufwerken 204a - c gleichzeitig zugegriffen werden kann. Es besteht jedoch normalerweise ein erhöhter Aufwand, wenn Schreibvorgänge in das Array ausgeführt werden. Dies liegt vor allem an der Paritätsberechnung. Um beispielsweise auf A1 zu schreiben, müssen möglicherweise die Werte A2, A3 und Ap von den Plattenlaufwerken 204 geladen (d.h. zwischengespeichert) werden, der Wert A1 muss auf den Plattenlaufwerken geändert werden und der Paritätswert Ap muss (unter Verwendung der Werte A1, A2 und A3) neu berechnet und in die Plattenlaufwerke 204 ausgelagert werden. Diese Operationen erfordern insgesamt vier Plattenoperationen. Andererseits kann ein voller Daten-Stride (d.h. A1, A2 und A3) zusammen mit dem Paritätswert Ap unter Verwendung einer einzigen Plattenoperation auf die Plattenlaufwerke 204 ausgelagert werden. Dies liegt daran, dass es nicht erforderlich ist, die Datenwerte oder den Paritätswert von den Plattenlaufwerken 204 zu laden, wenn ein Stride darauf geschrieben wird. Aus diesem Grund werden Auslagerungen vollständiger Strides bevorzugt, wenn Daten aus dem Cache 218 in die Speicherlaufwerke 204 ausgelagert werden.
  • Unter Bezugnahme auf 4 kann der Cache 218 in bestimmten Ausführungsformen in einen Lese-Cache 218a und einen Schreib-Cache 218b unterteilt sein. Der Lese-Cache 218a kann unveränderte Daten (z.B. unveränderte Spuren 400) speichern. Der Schreib-Cache 218b kann geänderte Daten (z.B. geänderte Spuren 400) speichern. Diese geänderten Daten können schließlich auf Backend-Speicherlaufwerke 204 ausgelagert werden.
  • In bestimmten Ausführungsformen kann für jeden Speicherbereich (d.h. das RAID-Array 302) im Speichersystem 110a eine geordnete Liste (z.B. ein b-Baum) geänderter Datenelemente (z.B. Spuren) geführt werden. Diese geordnete Liste kann verwendet werden, um zu ermitteln, welche geänderten Datenelemente aus dem Schreib-Cache 218b in das RAID-Array 302 ausgelagert werden sollen, sowie in welcher Reihenfolge die Auslagerungen ausgeführt werden. In bestimmten Ausführungsformen wird die geordnete Liste auf Grundlage physischer Orte jedes Datenelements in dem RAID-Array 302 sortiert.
  • Wie in 4 gezeigt, können in bestimmten Ausführungsformen ein oder mehrere Zeitgeber-Bits 402 für jedes geänderte Datenelement 400 im Schreib-Cache 218b geführt werden. Beispielsweise können in bestimmten Ausführungsformen vier Zeitgeber-Bits 402 für jedes Datenelement 400 geführt werden, was Werte von null bis fünfzehn ermöglicht. Wie in Verbindung mit 6 ausführlicher beschrieben wird, können diese Zeitgeber-Bits 402 Zählwerte speichern, die verwendet werden, um zu ermitteln, wann die Datenelemente ausgelagert werden sollen. Jedes Mal, wenn die geordnete Liste gescannt wird, können die Zählwerte der Datenelemente dekrementiert werden. Jedes Mal, wenn in ein Datenelement 400 geschrieben wird, kann der zu dem Datenelement 400 gehörende Zählwert inkrementiert werden. Die Zählwerte können sicherstellen, dass Datenelemente 400, auf die oft geschrieben wird, nicht vorzeitig aus dem Cache 218 in die Speicherlaufwerke 204 ausgelagert werden.
  • Unter Bezugnahme auf 5 kann in bestimmten Ausführungsformen ein Cache-Auslagerungsmodul 500 bereitgestellt werden, um Datenelemente 400 aus dem Schreib-Cache 218b in die Speicherlaufwerke 204 auszulagern. Dieses Cache-Auslagerungsmodul 500 kann verschiedene Teilmodule aufweisen, die verschiedene Merkmale und Funktionen bereitstellen. Das Cache-Auslagerungsmodul 500 und die zugehörigen Teilmodule können in Hardware, Software, Firmware oder Kombinationen davon umgesetzt sein. Das Cache-Auslagerungsmodul 500 und die zugehörigen Teilmodule werden beispielhaft und nicht einschränkend gezeigt. In verschiedenen Ausführungsformen können mehr oder weniger Teilmodule vorgesehen sein. Beispielsweise kann die Funktionalität mancher Teilmodule in einem einzelnen oder einer kleineren Anzahl von Teilmodulen zusammengeführt sein, oder die Funktionalität eines einzelnen Teilmoduls kann über mehrere Teilmodule verteilt sein.
  • Wie gezeigt, umfasst das Cache-Auslagerungsmodul 500 ein Cache-Scan-Modul 502, ein Zähler-Dekrementierungsmodul 504, ein Zähler-Ermittlungsmodul 506, ein Schwellenwertmodul 508, ein Zwischenspeichermodul 510, ein Auslagerungsmodul 512, ein Modul zum präventiven Zwischenspeichern 514 und/oder ein Begrenzungsmodul 516. Das Cache-Scan-Modul 502 kann dazu konfiguriert sein, die geordnete Liste periodisch zu scannen, um zu ermitteln, welche Datenelemente 400 bereit sind, aus dem Schreib-Cache 218b in das RAID-Array 302 ausgelagert zu werden. Jedes Mal, wenn Datenelemente 400 in der geordneten Liste gescannt werden, kann das Zähler-Dekrementierungsmodul 504 die Zählwerte in den Zeitgeber-Bits 402 dekrementieren, die zu den Datenelementen 400 gehören.
  • Beim Scannen der Datenelemente 400 in der geordneten Liste kann das Zähler-Ermittlungsmodul 506 die Zählwerte ermitteln, die zu den Datenelementen 400 gehören, indem es die Zeitgeber-Bits 402 liest. Nach dem Ausführen dieser Ermittlung kann das Schwellenwertmodul 508 ermitteln, ob alle Zählwerte, die zu Datenelementen 400 desselben Stride gehören, kleiner oder gleich einem ersten Schwellenwert (z.B. null) sind. Wenn die Zählwerte kleiner oder gleich dem ersten Schwellenwert sind, können die Datenelemente 400 als „bereit“ betrachtet werden, aus dem Cache 218 in das RAID-Array 302 ausgelagert zu werden. Falls erforderlich, kann das Zwischenspeichermodul 510 alle fehlenden Datenelemente 400 aus dem RAID-Array 302 in den Cache 218 zwischenspeichern, so dass die Datenelemente 400 in dem Cache 218 einen vollständigen Stride bilden. Das Auslagerungsmodul 512 kann dann, falls erforderlich, den zu dem Stride gehörenden Paritätswert neu berechnen und den Stride aus dem Cache 218 in das RAID-Array 302 auslagern.
  • Wenn die Zählwerte für Datenelemente 400, die zu dem Stride gehören, nicht kleiner oder gleich dem ersten Schwellenwert sind, kann das Schwellenwertmodul 508 ermitteln, ob die Zählwerte kleiner oder gleich einem zweiten Schwellenwert (z.B. drei) sind. Wenn dies der Fall ist, sind die zu dem Stride gehörenden Datenelemente 400 derzeit möglicherweise nicht für die Auslagerung in das RAID-Array 302 „bereit“ (da ihre Zählwerte nicht kleiner oder gleich dem ersten Schwellenwert sind), werden aber wahrscheinlich während eines nachfolgenden Scans des Cache 218 bereit sein (da ihre Zählwerte dekrementiert werden und daher während des nachfolgenden Scans wahrscheinlich kleiner oder gleich dem ersten Schwellenwert sein werden, vorausgesetzt, es treten keine Ereignisse wie Schreibvorgänge auf, die die Zählwerte über den ersten Schwellenwert anheben würden). In solchen Fällen kann das Modul zum präventiven Zwischenspeichern 514 alle fehlenden Datenelemente 400 präventiv aus dem RAID-Array 302 in den Cache 218 zwischenspeichern, so dass für den nächsten Durchlauf des Cache-Scan-Moduls 502 der vollständige Stride im Cache 218 vorhanden ist. Wenn während des nächsten Scans des Cache 218 alle Zählwerte, die zu den Datenelementen 400 des Stride gehören, unter dem ersten Schwellenwert liegen, werden die zu dem Stride gehörenden Datenelemente 400 als „bereit“ zum Auslagern betrachtet. Das präventive Zwischenspeichern fehlender Datenelemente 400 auf diese Weise kann die Notwendigkeit beseitigen oder verringern, zum Zeitpunkt der Auslagerung fehlende Datenelemente 400 aus dem RAID-Array 302 in den Cache 218 zwischenzuspeichern, wodurch die Effizienz verbessert wird.
  • Das Begrenzungsmodul 516 kann dazu konfiguriert sein, eine Anzahl von Strides zu begrenzen, die gerade präventiv aus einem RAID-Array 302 zwischengespeichert werden. In bestimmten Ausführungsformen kann das Begrenzungsmodul 516 die Anzahl der Strides auf einen ausgewählten Schwellenwert (z.B. fünfzig) begrenzen. Wenn die Anzahl der Strides, die präventiv zwischengespeichert werden, größer oder gleich diesem Wert ist, kann das Begrenzungsmodul 516 alle zusätzlichen Anforderungen für präventives Zwischenspeichern in eine Warteschlange stellen. Wenn die Anzahl der Strides, die präventiv zwischengespeichert werden, unter den Schwellenwert (oder einen noch niedrigeren Schwellenwert) fällt, kann das Begrenzungsmodul 516 erneut mit der Verarbeitung von Anforderungen beginnen, Strides präventiv zwischenzuspeichern, beginnend mit Anforderungen in der Warteschlange in der Reihenfolge, in der sie in die Warteschlange gestellt wurden. Eine Ausführungsform eines Verfahrens 700, das von dem Begrenzungsmodul 516 verwendet werden kann, wird in Verbindung mit 7 beschrieben.
  • Unter Bezugnahme auf 6 ist eine Ausführungsform eines Verfahrens 600 zum Scannen eines Cache 218 gezeigt. Ein derartiges Verfahren 600 kann durch das zuvor beschriebene Cache-Auslagerungsmodul 500 ausgeführt werden. Wie gezeigt, ermittelt 602 das Verfahren 600 anfänglich, ob ein Scan des Cache 218 ansteht. In bestimmten Ausführungsformen kann ein Scan bei Abschluss eines vorherigen Scans oder in einem festgelegten Intervall erfolgen. Die Zeit, die benötigt wird, um einen Scan auszuführen, kann in bestimmten Ausführungsformen einer Zeitdauer entsprechen, die benötigt wird, um die zuvor beschriebene geordnete Liste zu durchlaufen.
  • Wenn ein neuer Scan eingeleitet wird, prüft 604 das Verfahren 600, wie gezeigt, Datenelemente 400 in dem Cache 218, die zu einem ersten Stride in der geordneten Liste gehören. Wenn bei Schritt 606 Zählwerte (d.h. die Zeitgeber-Bits 402) aller Datenelemente 400, die zu dem Stride gehören, bei oder unter einem ersten Schwellenwert (z.B. null) liegen, ist der Stride zum Auslagern in das RAID-Array 302 bereit. Wenn bei Schritt 608 Daten zum Ausführen einer Auslagerung eines ganzen Stride fehlen (unter der Annahme, dass eine Auslagerung eines ganzen Stride erforderlich und/oder die effizienteste Art und Weise zum Auslagern der Daten ist), speichert das Verfahren 600 die fehlenden Datenelemente 400 aus RAID-Array 302 zwischen 610, so dass der vollständige Stride im Cache 218 vorhanden ist. Unter Verwendung des vollständigen Daten-Strides berechnet das Verfahren 600 bei 612 den Paritätswert neu und lagert den Stride in das RAID-Array 302 aus 612. Wenn andererseits bei Schritt 608 keine Daten in dem Stride fehlen, berechnet das Verfahren 600 einfach den Paritätswert neu 612 und lagert den Stride aus 612. Es ist kein Zwischenspeichern fehlender Datenelemente 400 aus dem RAID-Array 302 erforderlich. Das Verfahren 600 ermittelt 614 dann, ob die geordnete Liste mehr Strides enthält, und prüft 604, wenn dies der Fall ist, den nächsten Stride in der geordneten Liste.
  • Wenn bei Schritt 606 die Zählwerte (d.h. Zeitgeber-Bits 402) aller Datenelemente 400, die zu dem Stride gehören, nicht bei oder unter dem ersten Schwellenwert liegen, ermittelt 616 das Verfahren 600, ob die Zählwerte aller Datenelemente 400, die zu dem Stride gehören, bei oder unter einem zweiten Schwellenwert (z.B. drei) liegen. Wenn die nicht der Fall ist, ermittelt 614 das Verfahren 600, ob die geordnete Liste mehr Strides enthält, und prüft 604, wenn dies der Fall ist, den nächsten Stride in der geordneten Liste. Wenn alle zu dem Stride gehörenden Datenelemente 400 bei oder unter dem zweiten Schwellenwert liegen, ist der Stride möglicherweise derzeit nicht zum Auslagern in das RAID-Array 302 bereit, wird aber wahrscheinlich während eines nachfolgenden Scans des Cache 218 zum Auslagern bereit sein (vorausgesetzt, dass keine weiteren Schreibvorgänge an den Datenelementen 400 vorgenommen werden). Wenn bei Schritt 616 alle Datenelemente 400, die zu dem Stride gehören, bei oder unter dem zweiten Schwellenwert liegen, ermittelt 618 das Verfahren 600, ob irgendwelche fehlenden Daten benötigt werden, um den Stride zu vervollständigen, unter der Annahme, dass eine vollständige Stride-Auslagerung erforderlich und/oder am effizientesten ist. Wenn Daten fehlen, speichert das Verfahren 600 die fehlenden Daten präventiv aus dem RAID-Array 302 in den Cache 218 zwischen 620, wodurch sichergestellt wird, dass der vollständige Stride für den nächsten Scan im Cache 218 vorhanden ist. Wenn andererseits in Schritt 618 keine Daten in dem Stride fehlen, ist kein präventives Zwischenspeichern erforderlich. Das Verfahren 600 ermittelt 614 dann, ob die geordnete Liste mehr Strides enthält, und prüft 604, wenn dies der Fall ist, den nächsten Stride in der geordneten Liste.
  • Nachdem alle Strides in der geordneten Liste geprüft wurden 604, endet das Verfahren 600 und wartet 602 auf den Beginn des nächsten Scan. In bestimmten Ausführungsformen beginnt der nächste Scan sofort. In weiteren Ausführungsformen beginnt der nächste Scan, nachdem der vorherige Scan beendet wurde und eine bestimmte Zeitspanne verstrichen ist. In noch weiteren Ausführungsformen treten Scans in regelmäßigen Intervallen ein und der nächste Scan beginnt am Beginn des nächsten regelmäßigen Intervalls.
  • Unter Bezugnahme auf 7 ist eine Ausführungsform eines Verfahrens 700 zum Steuern einer Anzahl von Strides gezeigt, die präventiv aus dem RAID-Array 302 zwischengespeichert werden. Wie gezeigt, ermittelt das Verfahren 700 bei 702, ob für einen Stride im Cache 218 ein präventives Zwischenspeichern erforderlich ist. Wenn dies der Fall ist, ermittelt 704 das Verfahren 700, ob eine Anzahl von Strides, die präventiv zwischengespeichert werden, über einem hohen Schwellenwert (z.B. fünfzig) liegt. Wenn dies der Fall ist, stellt das Verfahren 700 den Stride in die Warteschlange 706. Wenn bei Schritt 704 die Anzahl der Strides, die präventiv zwischengespeichert werden, unter dem hohen Schwellenwert liegt, inkrementiert 708 das Verfahren 700 eine Anzahl der Strides, die gegenwärtig präventiv zwischengespeichert werden, und leitet ein präventives Zwischenspeichern für den Stride ein 708.
  • Wenn bei Schritt 710 das präventive Zwischenspeichern für einen Stride abgeschlossen ist, dekrementiert 712 das Verfahren 700 eine Anzahl der Strides, die derzeit präventiv zwischengespeichert werden. Das Verfahren 700 ermittelt 714 dann, ob die Anzahl der Strides, die derzeit präventiv zwischengespeichert werden, unter einem niedrigen Schwellenwert (z.B. vierzig) liegt. Wenn dies der Fall ist, ermittelt 716 das Verfahren 700, ob sich derzeit irgendwelche Strides in der Warteschlange befinden. Wenn dies der Fall ist, inkrementiert 708 das Verfahren 700 die Anzahl der Strides, die derzeit präventiv zwischengespeichert werden, und leitet ein präventives Zwischenspeichern für den nächsten Stride oben in der Warteschlange ein 708. Wenn sich keine Strides in der Warteschlange befinden, kehrt das Verfahren 700 zum Anfang zurück, um zu ermitteln 702, ob ein weiterer Stride präventiv zwischengespeichert werden soll, oder ermittelt 710, ob das präventive Zwischenspeichern für einen Stride abgeschlossen ist.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und von einem Computer nutzbaren Medien gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion(en) aufweist. Es sollte auch beachtet werden, dass in einigen alternativen Umsetzungen die Funktionen, die in dem Block beschrieben sind, außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder Ablaufplänen durch spezielle auf Hardware beruhende Systeme, welche die festgelegten Funktionen oder Schritte ausführen, oder durch Kombinationen aus Spezial-Hardware und Computeranweisungen umgesetzt werden können.

Claims (20)

  1. Verfahren zum Verbessern der Auslagerungsleistung in ein RAID-Array, das Verfahren aufweisend: periodisches Scannen eines Cache nach ersten Strides, die bereit sind, in ein RAID-Array ausgelagert zu werden; während des Scannens des Cache, Erkennen von zweiten Strides, die derzeit nicht bereit sind, in das RAID-Array ausgelagert zu werden, aber wahrscheinlich bereit sein werden, während eines nachfolgenden Scans des Cache ausgelagert zu werden; Einleiten eines präventiven Zwischenspeicherns jeglicher fehlender Daten der zweiten Strides aus dem RAID-Array in den Cache als Vorbereitung für den nachfolgenden Scan; und Auslagern, aus dem Cache, der zweiten Strides vom Cache in das RAID-Array, wenn der nachfolgende Scan eintritt.
  2. Verfahren nach Anspruch 1, ferner aufweisend ein Führen eines Zählwerts für jedes Datenelement jedes Stride, das im Cache gespeichert ist, wobei der Zählwert jedes Mal inkrementiert wird, wenn in das Datenelement geschrieben wird, und jedes Mal dekrementiert wird, wenn das Datenelement gescannt wird.
  3. Verfahren nach Anspruch 2, wobei jedes Datenelement der ersten Strides einen Zählwert aufweist, der kleiner oder gleich einem ersten festgelegten Schwellenwert ist.
  4. Verfahren nach Anspruch 3, wobei der erste festgelegte Schwellenwert null ist.
  5. Verfahren nach Anspruch 2, wobei jedes Datenelement der zweiten Strides einen Zählwert aufweist, der kleiner oder gleich einem zweiten festgelegten Schwellenwert ist.
  6. Verfahren nach Anspruch 2, wobei die Datenelemente Spuren sind.
  7. Verfahren nach Anspruch 1, wobei das Einleiten eines präventiven Zwischenspeicherns ein Einleiten eines präventiven Zwischenspeicherns für eine Anzahl von zweiten Strides bis zu einem festgelegten Schwellenwert aufweist.
  8. Computerprogrammprodukt zum Verbessern der Auslagerungsleistung in ein RAID-Array, wobei das Computerprogrammprodukt ein nichtflüchtiges von einem Computer lesbares Speichermedium mit darin verkörpertem von einem Computer verwendbarem Programmcode aufweist, wobei der von einem Computer verwendbare Programmcode so konfiguriert ist, dass er bei Ausführung durch mindestens einen Prozessor Folgendes ausführt: periodisches Scannen eines Cache nach ersten Strides, die bereit sind, in ein RAID-Array ausgelagert zu werden; beim Scannen des Cache, Erkennen zweiter Strides, die derzeit nicht bereit sind, in das RAID-Array ausgelagert zu werden, aber wahrscheinlich bereit sein werden, während eines nachfolgenden Scans des Cache ausgelagert zu werden; Einleiten eines präventiven Zwischenspeicherns jeglicher fehlender Daten der zweiten Strides aus dem RAID-Array in den Cache in Vorbereitung auf den nachfolgenden Scan; und Auslagern, aus dem Cache, der zweiten Strides vom Cache in das RAID-Array, wenn der nachfolgende Scan eintritt.
  9. Computerprogrammprodukt nach Anspruch 8, wobei der von einem Computer verwendbare Programmcode ferner so konfiguriert ist, dass er einen Zählwert für jedes Datenelement jedes Stride führt, das im Cache gespeichert ist, wobei der Zählwert jedes Mal inkrementiert wird, wenn in das Datenelement geschrieben wird, und jedes Mal dekrementiert wird, wenn das Datenelement gescannt wird.
  10. Computerprogrammprodukt nach Anspruch 9, wobei jedes Datenelement der ersten Strides einen Zählwert aufweist, der kleiner oder gleich einem ersten festgelegten Schwellenwert ist.
  11. Computerprogrammprodukt nach Anspruch 10, wobei der erste festgelegte Schwellenwert null ist.
  12. Computerprogrammprodukt nach Anspruch 9, wobei jedes Datenelement der zweiten Strides einen Zählwert aufweist, der kleiner oder gleich einem zweiten festgelegten Schwellenwert ist.
  13. Computerprogrammprodukt nach Anspruch 9, wobei die Datenelemente Spuren sind.
  14. Computerprogrammprodukt nach Anspruch 8, wobei das Einleiten eines präventiven Zwischenspeicherns ein Einleiten eines präventiven Zwischenspeicherns für eine Anzahl von zweiten Strides bis zu einem festgelegten Schwellenwert aufweist.
  15. System zum Verbessern der Auslagerungsleistung in ein RAID-Array, das System aufweisend: mindestens einen Prozessor; mindestens eine Speichereinheit, die betriebsfähig mit dem mindestens einen Prozessor verbunden ist und Anweisungen zur Ausführung auf dem mindestens einen Prozessor speichert, wobei die Anweisungen den mindestens einen Prozessor veranlassen zum: periodischen Scannen eines Cache nach ersten Strides, die bereit sind, in ein RAID-Array ausgelagert zu werden; beim Scannen des Cache, Erkennen zweiter Strides, die derzeit nicht bereit sind, in das RAID-Array ausgelagert zu werden, aber wahrscheinlich bereit sein werden, während eines nachfolgenden Scans des Cache ausgelagert zu werden; Einleiten eines präventiven Zwischenspeicherns jeglicher fehlender Daten der zweiten Strides aus dem RAID-Array in den Cache in Vorbereitung auf den nachfolgenden Scan; und Auslagern, aus dem Cache, der zweiten Strides vom Cache in das RAID-Array, wenn der nachfolgende Scan eintritt.
  16. System nach Anspruch 15, wobei die Anweisungen den mindestens einen Prozessor ferner veranlassen, einen Zählwert für jedes Datenelement jedes Stride zu führen, das im Cache gespeichert ist, wobei der Zählwert jedes Mal inkrementiert wird, wenn in das Datenelement geschrieben wird, und jedes Mal dekrementiert wird, wenn das Datenelement gescannt wird.
  17. System nach Anspruch 16, wobei jedes Datenelement der ersten Strides einen Zählwert aufweist, der kleiner oder gleich einem ersten festgelegten Schwellenwert ist.
  18. System nach Anspruch 16, wobei jedes Datenelement der zweiten Strides einen Zählwert aufweist, der kleiner oder gleich einem zweiten festgelegten Schwellenwert ist.
  19. System nach Anspruch 16, wobei die Datenelemente Spuren sind.
  20. System nach Anspruch 15, wobei das Einleiten eines präventiven Zwischenspeicherns ein Einleiten eines präventiven Zwischenspeicherns für eine Anzahl von zweiten Strides bis zu einem festgelegten Schwellenwert aufweist.
DE112021000794.7T 2020-04-22 2021-03-30 Präventives zwischenspeichern für auslagerung eines ganzen stride Pending DE112021000794T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/855,229 US11467772B2 (en) 2020-04-22 2020-04-22 Preemptive staging for full-stride destage
US16/855,229 2020-04-22
PCT/CN2021/083765 WO2021213139A1 (en) 2020-04-22 2021-03-30 Preemptive staging for full-stride destage

Publications (1)

Publication Number Publication Date
DE112021000794T5 true DE112021000794T5 (de) 2022-12-22

Family

ID=78222178

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021000794.7T Pending DE112021000794T5 (de) 2020-04-22 2021-03-30 Präventives zwischenspeichern für auslagerung eines ganzen stride

Country Status (8)

Country Link
US (1) US11467772B2 (de)
JP (1) JP2023523144A (de)
KR (1) KR20220139420A (de)
CN (1) CN115087962A (de)
AU (1) AU2021260526B2 (de)
DE (1) DE112021000794T5 (de)
GB (1) GB2610121A (de)
WO (1) WO2021213139A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11880600B2 (en) * 2021-09-02 2024-01-23 Micron Technology, Inc. Consolidating write request in cache memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740465A (en) * 1992-04-08 1998-04-14 Hitachi, Ltd. Array disk controller for grouping host commands into a single virtual host command
US6704837B2 (en) 1998-06-29 2004-03-09 International Business Machines Corporation Method and apparatus for increasing RAID write performance by maintaining a full track write counter
WO2011121590A1 (en) * 2010-03-31 2011-10-06 Kaminario Technologies Ltd. Log structure array
US8332589B2 (en) * 2010-09-29 2012-12-11 International Business Machines Corporation Management of write cache using stride objects
US8880839B2 (en) 2011-04-14 2014-11-04 International Business Machines Corporation Writing adjacent tracks to a stride, based on a comparison of a destaging of tracks to a defragmentation of the stride
US8560771B2 (en) 2011-07-22 2013-10-15 International Business Machines Corporation Efficient track destage in secondary storage
US8631190B2 (en) * 2011-07-22 2014-01-14 International Business Machines Corporation Prefetching data tracks and parity data to use for destaging updated tracks
US9342463B2 (en) * 2012-09-20 2016-05-17 International Business Machines Corporation Management of destage tasks with large number of ranks
US9395925B2 (en) 2014-03-11 2016-07-19 International Business Machines Corporation Grouping of tracks for copy source to target destage on global mirror secondary
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US10120811B2 (en) 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US9858146B2 (en) 2015-12-21 2018-01-02 International Business Machines Corporation Reducing latency for raid destage operations
US9952974B2 (en) * 2016-06-07 2018-04-24 International Business Machines Corporation Preservation of modified cache data in local non-volatile storage following a failover
US11054994B2 (en) 2017-12-14 2021-07-06 International Business Machines Corporation Copy source to target management in a data storage system

Also Published As

Publication number Publication date
AU2021260526B2 (en) 2023-12-14
AU2021260526A1 (en) 2022-08-18
KR20220139420A (ko) 2022-10-14
JP2023523144A (ja) 2023-06-02
US11467772B2 (en) 2022-10-11
CN115087962A (zh) 2022-09-20
GB202217375D0 (en) 2023-01-04
US20210334038A1 (en) 2021-10-28
WO2021213139A1 (en) 2021-10-28
GB2610121A (en) 2023-02-22

Similar Documents

Publication Publication Date Title
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE112013002355B4 (de) Steigern von Datenzwischenspeicherungsleistung
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE102013210642B4 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE102016001682A1 (de) Leistungsausgeglichene Datenspeichervorrichtung
DE112011103290T5 (de) Intelligente Schreibcacheoperation für sequenzielle Datenspuren
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE112004001255T5 (de) Speichervorrichtung und Speichersystem
DE112018005121T5 (de) Speichersystem unter verwendung von cloud-speicher als eine speicherbank
DE112018005135T5 (de) Thin provisioning unter verwendung von speicherbänken auf cloud-grundlage

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence