DE112018002500T5 - Speicherarray für Hybriddaten - Google Patents

Speicherarray für Hybriddaten Download PDF

Info

Publication number
DE112018002500T5
DE112018002500T5 DE112018002500.4T DE112018002500T DE112018002500T5 DE 112018002500 T5 DE112018002500 T5 DE 112018002500T5 DE 112018002500 T DE112018002500 T DE 112018002500T DE 112018002500 T5 DE112018002500 T5 DE 112018002500T5
Authority
DE
Germany
Prior art keywords
data
drives
write
access frequency
solid
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
DE112018002500.4T
Other languages
English (en)
Inventor
Jun Xu
Junpeng Niu
William Bernard BOYLE
Jie Yu
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112018002500T5 publication Critical patent/DE112018002500T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0629Configuration or reconfiguration of storage 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0688Non-volatile semiconductor memory arrays
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

Ein Datenspeichersystem schließt Speicherarrays mit einem ersten Set Solid-State-Laufwerke und einem ersten Set unterteilter Festplattenlaufwerke ein. Jedes Solid-State-Laufwerk des ersten Sets Solid-State-Laufwerke weist einen ersten Datendurchsatz auf und das Set der unterteilten Festplattenlaufwerke weist einen zweiten Datendurchsatz innerhalb eines Schwellenwerts des ersten Datendurchsatzes auf. Das Datenspeichersystem schließt außerdem eine Verarbeitungsvorrichtung zum Empfangen einer Zugriffsanforderung zum Schreiben erster Daten auf das Speicherarray und zum Bestimmen einer Lesezugriffsfrequenz der ersten Daten ein. Die Verarbeitungsvorrichtung kann eine Schreibzugriffsfrequenz der ersten Daten bestimmen und die ersten Daten in das erste Set Solid-State-Laufwerke oder das erste Set Festplattenlaufwerke schreiben, basierend auf der Lesezugriffsfrequenz und der Schreibzugriffsfrequenz.

Description

  • HINTERGRUND
  • Gebiet
  • Die vorliegende Offenbarung betrifft Datenspeichersysteme. Insbesondere betrifft die vorliegende Offenbarung Datenspeichersysteme, die Festplattenlaufwerke (HDDs) und Solid-State-Laufwerke (SSDs) einschließen.
  • Beschreibung des Stands der Technik
  • Benutzer können Daten, wie Dateien, in verschiedenen Arten von Datenspeichersystemen/-architekturen speichern. Beispielsweise können Rechenzentren, Cloud-Speicherplattformen/-systeme, Cloud-Computerplattformen/-systeme Datenspeichersysteme/- architekturen verwenden, um Benutzern das Speichern/Zugreifen auf Daten zu ermöglichen. Die Datenspeichersysteme können verschiedene Arten von Festplattenlaufwerken einschließen, wie Festplatten und Solid-State-Laufwerke. Die Datenfestplatten und Solid-State-Laufwerke können in Arrays und/oder Sub-Arrays (z. B. Gruppen von Festplatten) angeordnet werden. Im Allgemeinen werden die Solid-State-Festplatten und die Festplattenlaufwerke in separaten Speicherpools, Speicher-Arrays oder Speicher-Sub-Arrays verwendet (z. B. kann ein Sub-Array/Pool nur Solid-State-Laufwerke oder nur Festplattenlaufwerke einschließen).
  • Figurenliste
  • Verschiedene Ausführungsformen sind in den beigefügten Zeichnungen zu Veranschaulichungszwecken dargestellt und sollten in keiner Weise als Einschränkung des Schutzumfangs dieser Offenbarung ausgelegt werden. Außerdem können verschiedene Merkmale verschiedener offenbarter Ausführungsformen kombiniert werden, um zusätzliche Ausführungsformen zu bilden, die Teil dieser Offenbarung sind.
    • 1 ist ein Diagramm einer beispielhaften Systemarchitektur gemäß einer oder mehrerer Ausführungsformen.
    • 2 ist eine beispielhafte Tabelle, die die Leistungsstufen für Festplattenlaufwerke und Solid-State-Laufwerke in einem Sub-Array gemäß einer oder mehreren Ausführungsformen veranschaulicht.
    • 3 ist ein Diagramm eines beispielhaften Speicherarrays gemäß einer oder mehreren Ausführungsformen.
    • 4 ist ein Flussdiagramm, das einen beispielhaften Prozess zum Schreiben von Daten in ein Speicherarray gemäß einer oder mehreren Ausführungsformen veranschaulicht.
    • 5 ist ein Flussdiagramm, das einen beispielhaften Prozess zum Schreiben von Daten in ein Speicherarray gemäß einer oder mehreren Ausführungsformen veranschaulicht.
    • 6 ist ein Diagramm einer Computervorrichtung gemäß einer oder mehreren Ausführungsformen.
  • DETAILLIERTE BESCHREIBUNG
  • Obwohl bestimmte Ausführungsformen beschrieben werden, werden diese Ausführungsformen nur beispielhaft dargestellt und sollen den Schutzumfang nicht einschränken. Tatsächlich können die hierin beschriebenen neuen Verfahren und Systeme in einer Vielzahl anderer Formen verkörpert sein. Ferner können verschiedene Auslassungen, Ersetzungen und Änderungen in der Form der hierin beschriebenen Verfahren und Systeme vorgenommen werden, ohne vom Schutzumfang abzuweichen.
  • Datenspeichersysteme
  • Wie vorstehend erläutert, können Speicherarchitekturen/-systeme (die in Rechenzentren, Cloud-Speicherplattformen/-systemen, Cloud-Computing-Plattformen/-Systemen usw. verwendet werden können) sowohl Solid-State-Festplatten als auch Festplattenlaufwerke verwenden. Im Allgemeinen werden die Solid-State-Festplatten und die Festplattenlaufwerke in separaten Speicherpools, Speicher-Arrays oder Speicher-Sub-Arrays verwendet (z. B. kann ein Sub-Array/Pool nur Solid-State-Laufwerke oder nur Festplattenlaufwerke einschließen). Somit können die Arrays, Sub-Arrays, Pools usw., die nur Solid-State-Laufwerke einschließen, als Cache für Datenzugriffe und/oder zur Bereitstellung einer höheren Leistung für Kunden verwendet werden (z. B. für Kunden, die einen höheren Preis für die höhere Leistung zahlen). Obwohl Solid-State-Laufwerke eine höhere/schnellere Leistung (als Festplattenlaufwerke) bereitstellen können, weisen Solid-State-Laufwerke Schreibzyklusbeschränkungen auf. Somit kann das Schreiben von Daten auf die Solid-State-Laufwerke den Verschleiß erhöhen und/oder die Lebensdauer (z. B. die Ausfallzeit, die Nutzungsdauer usw.) der Solid-State-Laufwerke verkürzen. Obwohl Festplattenlaufwerke möglicherweise keine solchen Einschränkungen des Schreibzyklus aufweisen, können Festplattenlaufwerke eine langsamere/geringere Leistung bereitstellen (als Solid-State-Laufwerke).
  • Bestimmte hierin beschriebene Ausführungsformen bieten die Möglichkeit, sowohl Solid-State-Laufwerke als auch Festplattenlaufwerke in einem Speicherarray/Sub-Array von Datenspeichersystemen zu kombinieren. Die Festplattenlaufwerke im Speicherarray/Sub-Array können so eingerichtet (z. B. in Stripes unterteilt) werden, dass sie der Leistung der Solid-State-Laufwerke im Speicherarray/Sub-Array entsprechen oder sich innerhalb eines Schwellenwerts befinden. Daten, die in ein Speicherarray/Sub-Array gespeichert bzw. geschrieben werden, können auf den Solid-State-Laufwerken (im Speicherarray/Sub-Array) oder den Festplattenlaufwerken (im Speicherarray/Sub-Array) basierend auf der Lesezugriffsfrequenz und der Schreibzugriffsfrequenz der Daten gespeichert werden. Dies kann es dem Speicherarray/Sub-Array ermöglichen, direkte und sequenzielle Daten mit einer Leistung zu verarbeiten, die mit einem Speicherarray/Sub-Array vergleichbar ist, das nur Solid-State-Laufwerke einschließt. Dies kann außerdem die Kosten für das Datenspeichersystem senken, da Festplattenlaufwerke günstiger sein können als Solid-State-Laufwerke. Dies kann die Lebensdauer (z. B. durch kürzere Ausfallzeiten, verkürzte Nutzungsdauer usw.) der Solid-State-Laufwerke weiter erhöhen, da häufig geschriebene Daten in den Festplattenlaufwerken gespeichert werden können (die keine Schreibzyklusbeschränkungen aufweisen). Darüber hinaus kann der Datentransfer zwischen den Solid-State-Laufwerken und den Festplattenlaufwerken im gleichen Speicherarray/Sub-Array schneller erfolgen, da sich die Solid-State-Laufwerke und die Festplattenlaufwerke einen internen Bus/eine interne Schnittstelle teilen, der/die einen schnelleren Datentransfer ermöglichen kann.
  • 1 ist ein Diagramm einer beispielhaften Systemarchitektur 100 gemäß einer oder mehrerer Ausführungsformen. Die Systemarchitektur schließt ein Netzwerk 105, eine Server-Computervorrichtung 110, ein Speicherarray 120 und eine Client-Computervorrichtung 130 ein. Die Server-Computervorrichtung 110 kann über das Netzwerk 105 kommunikativ mit der Client-Computervorrichtung 130 gekoppelt werden. Die Server-Computervorrichtung ist mit dem Speicherarray 120 gekoppelt. Die Systemarchitektur 100 kann verschiedenen Computervorrichtungen (z. B. Client-Vorrichtungen, Smartphones, Set-Top-Boxen für Kabelanschluss, Smart-TVs, Videospielkonsolen, Laptops, Tablet-Computern, Desktop-Computern usw.) den Zugriff auf verschiedene Arten von Daten (z. B. Dateien) ermöglichen, die auf dem Speicherarray 120 gespeichert sind. So kann beispielsweise die Systemarchitektur 100 der Client-Computervorrichtung 130 dateibasierte Datenspeicherdienste bereitstellen. Die Systemarchitektur 100 kann es Benutzern auch ermöglichen, verschiedene Arten von Benutzerdaten auf dem Speicherarray 120 zu speichern. Die Server-Computervorrichtung 110 schließt ein Speichermodul 111 ein. Die Client-Computervorrichtung 130 schließt eine Speicheranwendung 131 ein.
  • Das Netzwerk 105 kann ein oder mehrere Ad-hoc-Netzwerke, eine Peer-to-Peer-Kommunikationsverbindung, ein Intranet, ein Extranet, ein Virtuelles Privates Netzwerk (VPN), ein öffentliches Netzwerk (z. B. das Internet), ein privates Netzwerk (z. B. ein lokales Netzwerk (LAN)) oder ein Weitbereichsnetzwerk (Wide Area Network, WAN) wie das Internet, ein kabelgebundenes Netzwerk (z. B. Ethernet-Netzwerk), ein drahtloses Netzwerk (z. B. ein 802.11-Netzwerk, ein Wi-Fi-Netzwerk, ein Wireless LAN (WLAN), ein Wireless WAN (WWAN) usw.), ein Mobilfunknetzwerk (z. B. ein Long Term Evolution-Netzwerk (LTE-Netzwerk)), ein Metropolregionsnetzwerk (MAN), einen Abschnitt des Internets, einen Abschnitt des öffentlichen Telefonnetzes (PSTN), Router, Hubs, Switches, Servercomputer, andere Arten von Computernetzen und/oder eine Kombination davon einschließen. In einigen Ausführungsformen kann das Speicherarray 120 auch mit dem Netzwerk 105 gekoppelt werden.
  • Das Speicherarray 220 kann Daten und/oder Datenobjekte speichern, auf die die Client-Computervorrichtung 130 zugreifen kann. Das Speicherarray 220 kann mehrere Datenspeichervorrichtungen einschließen (z. B. mehrere Speicherlaufwerke wie Festplattenlaufwerke (HDDs), Solid-State-Laufwerke (SSDs) usw.). Eine Datenspeichervorrichtung kann magnetische Medien (z. B. Magnetplatten, Medien/Platten mit geschichteten magnetischen Aufzeichnungen (SMR) usw.) und/oder Festkörpermedien umfassen. Während bestimmte Beschreibungen hierin sich auf einen Solid-State-Speicher oder Flash-Speicher im Allgemeinen beziehen können, versteht es sich, dass Solid-State-Speicher und/oder Flash-Speicher eine oder mehrere verschiedene Arten von nichtflüchtigen Solid-State-Speichervorrichtungen wie integrierte Flash-Schaltungen, Chalcogenid-RAM (C-RAM), Phasenwechselspeicher (PC-RAM oder PRAM), programmierbaren Metallisierungszellen-RAM (PMC-RAM oder PMCm), Ovonic-Einheitsspeicher (OUM), Resistenz-RAM (RRAM), NAND-Speicher (z. B. Einstufen-Zellen-Speicher (SLC-Speicher), Mehrstufen-Zellen-Speicher (MLC-Speicher) oder eine beliebige Kombination davon), NOR-Speicher, EEPROM, ferroelektrischen Speicher (FeRAM), magnetoresistiven RAM (MRAM), andere diskrete NVM-Chips (nichtflüchtiger Speicher) oder eine beliebige Kombination davon umfassen können. In einigen Ausführungsformen kann das Speicherarray 120 mit dem Netzwerk 105 gekoppelt werden. In anderen Ausführungsformen kann das Speicherarray 120 in und/oder einen Teil der Server-Computervorrichtung 110 einschließen. So kann sich beispielsweise das Speicherarray 120 im selben Gestell, Gehäuse, Rahmen usw. befinden wie die Server-Computervorrichtung 110.
  • Das Speicherarray 120 kann ein oder mehrere Sub-Arrays einschließen, wie im Folgenden näher erläutert wird. Jedes der Sub-Arrays kann ein Set von Solid-State-Laufwerken (z. B. ein oder mehrere Solid-State-Laufwerke) und ein Set von Festplattenlaufwerken (z. B. ein oder mehrere Festplattenlaufwerke) einschließen. In einer Ausführungsform kann das Set von Solid-State-Laufwerken eine Vielzahl von homogenen Laufwerken aufweisen. So kann beispielsweise jedes der Solid-State-Laufwerke in dem Set der Solid-State-Laufwerke (für ein Sub-Array) die gleiche Kapazität (z. B. Speicherkapazität, Speicherplatz usw.), die gleiche Modellnummer/Hersteller, den gleichen Flash-Speichertyp (z. B. Single-Level-Zelle (SLC), Multi-Level-Zelle (MLC), Tri-Level-Zelle (TLC) usw.), die gleiche Leistung/den gleichen Durchsatz usw. aufweisen. In einer weiteren Ausführungsform kann das Set der Solid-State-Laufwerke eine Vielzahl von heterogenen Laufwerken einschließen. So kann beispielsweise jedes der Solid-State-Laufwerke in dem Set der Solid-State-Laufwerke (für ein Sub-Array) unterschiedliche Kapazitäten, unterschiedliche Modellnummern/Hersteller, die verschiedenen Arten von Flash-Speichem, unterschiedliche Leistungen/Durchsätze usw. aufweisen. In einer Ausführungsform kann das Set der Festplattenlaufwerke eine Vielzahl von homogenen Laufwerken einschließen. So kann beispielsweise jedes der Festplattenlaufwerke in dem Set der Festplattenlaufwerke (für das Sub-Array) die gleiche Kapazität (z. B. Speicherkapazität, Speicherplatz usw.), die gleiche Modellnummer/den gleichen Hersteller, das gleiche Festplattenlayout (z. B. die gleichen Sektoren pro Spur, die gleiche Blockgröße usw.) und/oder den gleichen Typ magnetischer Medien (z. B. SMR-Medien/Discs usw.) aufweisen. In einer weiteren Ausführungsform kann das Set der Festplattenlaufwerke eine Vielzahl von heterogenen Laufwerken einschließen. So kann beispielsweise jedes der Festplattenlaufwerke in dem Set der Festplattenlaufwerke (für das Sub-Array) unterschiedliche Kapazitäten, unterschiedliche Modellnummern/Hersteller, unterschiedliche Plattenlayouts und/oder unterschiedliche Arten magnetischer Medien aufweisen.
  • In einer Ausführungsform kann das Set von Solid-State-Laufwerken einen oder mehrere Datendurchsätze aufweisen. Die Datendurchsätze für das Set von Solid-State-Laufwerken können einen oder mehrere der sequenziellen Lesedurchsätze (z. B. die Menge der Daten, die in einem Zeitraum sequenziell gelesen werden), den sequenziellen Schreibdurchsatz (z. B. die Datenmenge, die in einem Zeitraum sequenziell geschrieben werden kann), den Direktlesedurchsatz (z. B. die Datenmenge, die in einem Zeitraum direkt gelesen werden kann) und den Direktschreibdurchsatz (z. B. die Datenmenge, die in einem Zeitabschnitt direkt geschrieben werden kann) einschließen. Die Solid-State-Laufwerke in dem Set können die gleichen Datendurchsätze aufweisen (bei Verwendung homogener Laufwerke) oder unterschiedliche Datendurchsätze aufweisen (bei Verwendung heterogener Laufwerke). In einer weiteren Ausführungsform kann das Set der Festplattenlaufwerke auch einen oder mehrere Datendurchsätze aufweisen. Die Datendurchsätze für das Set der Festplattenlaufwerke können auch einen oder mehrere der folgenden Werte einschließen: den sequenziellen Lesedurchsatz, den sequenziellen Schreibdurchsatz, den Direktlesedurchsatz und den Direktschreibdurchsatz. Die Festplattenlaufwerke in dem Set können den gleichen Datendurchsatz aufweisen (bei Verwendung homogener Laufwerke) oder unterschiedliche Datendurchsätze aufweisen (bei Verwendung heterogener Laufwerke).
  • In einer Ausführungsform bestimmt das Speichermodul 111 die Anzahl der Festplattenlaufwerke, die in einem Sub-Array verwendet werden sollen, basierend auf dem Datendurchsatz (bzw. den Datendurchsätzen) der Solid-State-Laufwerke, die sich in dem Sub-Array befinden, wie im Folgenden näher erläutert. So kann beispielsweise das Speichermodul 111 die Anzahl der Festplattenlaufwerke bestimmen, die in einem Level/einer Konfiguration eines redundanten Arrays von unabhängigen Festplatten (RAID) (z. B. RAID 0, RAID 5 usw.) eingerichtet werden sollen, sodass die Festplattenlaufwerke (z. B. unterteilte Festplattenlaufwerke) mit der Leistung (z. B. Lesedurchsatz, Schreibdurchsatz usw.) eines oder mehrerer Solid-State-Laufwerke in dem Sub-Array übereinstimmen und/oder sich innerhalb eines Schwellenwerts befinden. Wenn beispielsweise ein Solid-State-Laufwerk einen Schreibdurchsatz von 350 Megabyte pro Sekunde (MBps) und ein Festplattenlaufwerk einen Schreibdurchsatz von 180 MPps aufweist, können zwei Festplattenlaufwerke im RAID 0 eingerichtet werden, um die Leistung des Solid-State-Laufwerks zu erzielen. In einem weiteren Beispiel, wenn ein Solid-State-Laufwerk einen Schreibdurchsatz von 380 MBps und eine Festplatte einen Schreibdurchsatz von 180 MPps aufweist, können fünf Festplattenlaufwerke in RAID 0 eingerichtet werden, um die Leistung der beiden Solid-State-Laufwerke zu erzielen. Der Schwellenwert für die Leistung der Solid-State-Laufwerke in dem Sub-Array kann verwendet werden, wenn eine genaue Leistungsentsprechung (z. B. eine genaue Durchsatzentsprechung) aufgrund der Leistungen der verwendeten Solid-State-Laufwerke und Festplattenlaufwerke nicht erreichbar ist. Ein Durchschnittsfachmann versteht, dass eine beliebige Anzahl von Festplattenlaufwerken (in dem Sub-Array) in einer unterteilten Konfiguration (wie RAID 0, RAID 1, RAID, RAID, 5, RAID 6 usw.) eingerichtet werden kann, um die Leistung eines oder mehrerer Solid-State-Laufwerke (in dem Sub-Array) zu erzielen oder innerhalb einer Schwelle zu erreichen. Die Festplattenlaufwerke in einem Sub-Array können als unterteilte Festplattenlaufwerke bezeichnet werden.
  • In einer Ausführungsform können die Arrays, Sub-Arrays und/oder Laufwerke in den Arrays/Sub-Arrays (z. B. HDDs, SSDs) auf verschiedene Weise mit unterschiedlichen RAID-Levels und Codierverfahren/Formaten eingerichtet sein. So kann beispielsweise RAID innerhalb eines Sub-Arrays oder über mehrere Sub-Arrays implementiert werden. Darüber hinaus können Codierverfahren/Formate wie Löschcodes, Paritätscodes usw. innerhalb eines Sub-Arrays oder über mehrere Sub-Arrays implementiert werden. Die Codierverfahren/Formate (z. B. Löschcodes) können eine Daten-/Fehlerwiederherstellung von Daten ermöglichen, die im Speicherarray 120 gespeichert sind.
  • Wie in 1 veranschaulicht, schließt die Client-Computervorrichtung 130 die Speicheranwendung 131 ein. Die Speicheranwendung 131 kann eine Anwendung (z. B. eine Software, eine App usw.) sein, die es einem Benutzer ermöglicht, auf Daten (z. B. Dateien) zuzugreifen, die in der Systemarchitektur 100 gespeichert sind (z. B. Speicherung im Speicherarray 120). Die Speicheranwendung 131 kann mit dem Speichermodul 111 und/oder der Server-Computervorrichtung 110 unter Verwendung einer auf Darstellungszustandsübertragung (REST) basierenden Schnittstelle kommunizieren. So kann beispielsweise das Speichermodul 111 und/oder die Server-Computervorrichtung 110 Anwendungsprogrammierschnittstellen (APIs) bereitstellen, die von der Speicheranwendung 131 zur Kommunikation (z. B. Senden und/oder Empfangen von Daten wie Nachrichten, Dateien usw.) mit dem Speichermodul 111 und/oder der Server-Computervorrichtung 110 verwendet werden können. In einer Ausführungsform kann die Speicheranwendung 131 (und/oder die Client-Computervorrichtung 130) Datenzugriffsanforderungen an das Speichermodul 111 (und/oder die Server-Computervorrichtung 110) über das Netzwerk 105 übertragen. Die Datenzugriffsanforderungen können Nachrichten, Befehle und/oder Anforderungen für den Zugriff auf das Speicherarray 120 sein. So kann beispielsweise eine Datenzugriffsanforderung darauf hinweisen, dass die Speicheranwendung 131 Daten aus dem Speicherarray 120 lesen möchte. In einem weiteren Beispiel kann eine Datenzugriffsanforderung darauf hinweisen, dass die Speicheranwendung 131 Daten in das Speicherarray 120 schreiben möchte.
  • In einer Ausführungsform kann das Speichermodul 111 (und/oder die Server-Computervorrichtung 110) die Datenzugriffsanforderungen von der Speicheranwendung 131 (und/oder der Client-Computervorrichtung) empfangen. So kann beispielsweise das Speichermodul 111 eine Datenzugriffsanforderung (von der Speicheranwendung 131) empfangen, um Daten (z. B. eine Datei, ein oder mehrere Blöcke/Seiten usw.) in das Speicherarray 120 zu schreiben.
  • In einer Ausführungsform kann das Speichermodul 111 eine Lesezugriffsfrequenz der Daten und/oder eine Schreibzugriffsfrequenz der Daten bestimmen. Anhand einer Lesezugriffsfrequenz kann angegeben werden, wie oft Daten (z. B. eine Datei, Blöcke/Seiten usw.) von Benutzern gelesen werden können (z. B. darauf zugegriffen werden kann), und/oder kann eine Vorhersage getroffen werden, wie oft die Daten von Benutzern gelesen werden können. So kann beispielsweise die Lesezugriffsfrequenz für eine Datei angeben, wie oft Benutzer die Datei lesen, und/oder kann eine Vorhersage treffen, wie oft Benutzer die Datei lesen werden. Anhand einer Schreibzugriffsfrequenz kann angegeben werden, wie oft Daten (z. B. in eine Datei, Blöcke/Seiten usw.) von Benutzern geschrieben werden können (z. B. darauf zugegriffen werden kann) und/oder wie oft die Daten von Benutzern geschrieben werden können. So kann beispielsweise die Schreibzugriffsfrequenz für eine Datei angeben, wie oft Benutzer in die Datei schreiben, und/oder kann eine Vorhersage treffen, wie oft Benutzer in die Datei schreiben werden. In einigen Ausführungsformen kann das Speichermodul 111 die Zugriffsfrequenz empfangen. So kann beispielsweise das Speichermodul 111 die Zugriffsfrequenz für die Daten aus einer Konfigurationsdatei lesen. In einem weiteren Beispiel kann ein Benutzer (Benutzereingaben vornehmen, die) die Zugriffsfrequenz für die Daten angeben.
  • Ein Durchschnittsfachmann versteht, dass verschiedene Techniken, Verfahren, Funktionen, Operationen, Algorithmen verwendet werden können, um die Lese- und/oder Schreibzugriffsfrequenz für Daten zu bestimmen. Ein Durchschnittsfachmann versteht auch, dass verschiedene Darstellungen und/oder Bereiche verwendet werden können, um die Lesezugriffsfrequenz und/oder Schreibzugriffsfrequenz für Daten darzustellen. So kann beispielsweise eine numerische Darstellung (von 0 bis 1, von 1 bis 5 usw.) so verwendet werden, dass je höher die Zahl, desto höher die Zugriffsfrequenz ist (oder umgekehrt). Daten, die eine Lesezugriffsfrequenz aufweisen, die größer als eine Schwellenwert-Lesezugriffsfrequenz ist, können als häufig gelesene Daten (Read Hot Data) bezeichnet werden. Daten, die eine Schreibzugriffsfrequenz aufweisen, die größer als eine Schwellenwert-Schreibzugriffsfrequenz ist, können als häufig geschriebene Daten (Write Hot Data) bezeichnet werden.
  • In einer Ausführungsform kann das Speichermodul 111 (und/oder die Server-Computervorrichtung 110) die (von der Speicheranwendung 131 und/oder der Client-Computerervorrichtung 130 empfangenen) Daten basierend auf der Lesezugriffsfrequenz und/oder der Schreibzugriffsfrequenz in die Festplattenlaufwerke des Sub-Arrays oder die Solid-State-Laufwerke des Sub-Arrays schreiben (wie im Folgenden näher erläutert). So kann beispielsweise das Speichermodul 111 bestimmen, ob die Lesezugriffsfrequenz einen Schwellenwert für die Lesezugriffsfrequenz überschreitet (z. B. ob die Lesezugriffsfrequenz größer als 0 ist, wenn die Lesezugriffsfrequenz von 0 bis 1 reicht). In einem weiteren Beispiel kann das Speichermodul 111 bestimmen, ob die Schreibzugriffsfrequenz einen Schwellenwert für die Schreibzugriffsfrequenz überschreitet (z. B. ob die Schreibzugriffsfrequenz größer als 0 ist, wenn die Schreibzugriffsfrequenz von 0 bis 1 reicht).
  • In einer Ausführungsform kann das Speichermodul 111 Daten in ein oder mehrere der Solid-State-Laufwerke (in dem Sub-Array) schreiben, wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz überschreitet, die die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz nicht überschreitet, wie im Folgenden näher erläutert. So kann beispielsweise das Speichermodul 111 Daten in ein oder mehrere der Solid-State-Laufwerke (in dem Sub-Array) schreiben, wenn die Lesezugriffsfrequenz für die Daten 1 ist (wenn die Lesezugriffsfrequenz von 0 bis 1 reicht) und wenn die Schreibzugriffsfrequenz 0 ist (wenn die Schreibzugriffsfrequenz von 0 bis 1 reicht).
  • In einer Ausführungsform kann das Speichermodul 111 Daten an ein oder mehrere Festplattenlaufwerke (in dem Sub-Array) schreiben, wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz nicht überschreitet und die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz überschreitet. So kann beispielsweise das Speichermodul 111 Daten an ein oder mehrere Festplattenlaufwerke (in dem Sub-Array) schreiben, wenn die Lesezugriffsfrequenz für die Daten 0 ist (wenn die Lesezugriffsfrequenz von 0 bis 1 reicht) und wenn die Schreibzugriffsfrequenz 1 ist (wenn die Schreibzugriffsfrequenz von 0 bis 1 reicht).
  • In einer Ausführungsform kann das Speichermodul 111 Daten an ein oder mehrere Festplattenlaufwerke (im Subarray) schreiben, wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz nicht überschreitet und die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz nicht überschreitet. So kann beispielsweise das Speichermodul 111 Daten an ein oder mehrere Festplattenlaufwerke (in dem Sub-Array) schreiben, wenn die Lesezugriffsfrequenz für die Daten 0 ist (wenn die Lesezugriffsfrequenz von 0 bis 1 reicht) und wenn die Schreibzugriffsfrequenz 0 ist (wenn die Schreibzugriffsfrequenz von 0 bis 1 reicht).
  • In einer Ausführungsform kann das Speichermodul 111 Leistungskennzahlen für die Festplattenlaufwerke (in dem Sub-Array) und die Solid-State-Laufwerke (in dem Sub-Array) bestimmen, wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz überschreitet und die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz überschreitet, wie im Folgenden näher erläutert. So kann beispielsweise das Speichermodul 111 eine erste Leistungskennzahl für die Solid-State-Laufwerke und eine zweite Leistungskennzahl für die Festplattenlaufwerke bestimmen, wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz und die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz überschreitet.
  • In einer Ausführungsform kann eine Leistungskennzahl die aktuelle oder geschätzte Leistung der Festplattenlaufwerke und/oder Solid-State-Laufwerke anzeigen. So kann beispielsweise eine höhere Leistungskennzahl (z. B. ein höherer Wert) darauf hindeuten, dass ein Laufwerk möglicherweise eine geringere Leistung aufweist (z. B. mehr Last, weniger Speicherplatz, höhere Antwortzeiten usw.) und umgekehrt. In einigen Ausführungsformen kann die Leistungskennzahl basierend auf einem oder mehreren Durchsätzen (z. B. sequenziellen und/oder Direktdurchsätzen) der Festplatten und der Solid-State-Festplatten, den Reaktionszeiten der Festplatten und der Solid-State-Festplatten (z. B., wie lange es dauert, bis Daten von den Platten gelesen oder auf die Platten geschrieben werden), die verbleibende Kapazität/der verbleibende Speicherplatz der Festplatten und der Solid-State-Festplatten (z. B. die Größe des freien Speicherplatzes) und die aktuelle Auslastung der Festplatten und der Solid-State-Festplatten (z. B. die aktuelle Datenmenge, die geschrieben/gelesen wird) bestimmt, berechnet, generiert usw. werden. Ein Durchschnittsfachmann versteht, dass verschiedene Werte und/oder Leistungskennzahlen verwendet werden können. So kann beispielsweise die Leistungskennzahl ein Zahlenwert im Bereich von 1 bis 10 sein, wobei 10 die bessere/schnellere Leistung und 1 die schlechtere/schwächere Leistung anzeigen kann.
  • In einer Ausführungsform kann das Speichermodul 111 die Daten auf die Solid-State-Laufwerke (in dem Sub-Array) oder die Festplattenlaufwerke (in dem Sub-Array) schreiben, basierend auf der Leistungskennzahl für Solid-State-Laufwerke und der Leistungskennzahl für die Festplattenlaufwerke, wie vorstehend erläutert. So kann beispielsweise das Speichermodul 111 die Daten auf die Festplattenlaufwerke schreiben, wenn die erste Leistungskennzahl kleiner als die zweite Leistungskennzahl ist. In einem weiteren Beispiel kann das Speichermodul 111 die Daten in die Solid-State-Laufwerke schreiben, wenn die erste Leistungskennzahl nicht kleiner als die zweite Leistungskennzahl ist.
  • In einer Ausführungsform kann das Speichermodul 111 bestimmen, ob es sich bei den im Speicherarray 120 gespeicherten Daten um Daten mit Direktzugriff oder um Daten mit sequenziellem Zugriff handelt. So kann das Speichermodul 111 beispielsweise bestimmen, ob der Benutzer wahrscheinlich auf die Daten als kontinuierliches Set von Blöcken/Seiten (z. B. eine einzelne Datei) zugreifen wird. In einem weiteren Beispiel kann das Speichermodul 111 bestimmen, ob der Benutzer wahrscheinlich auf die Daten als Direktblöcke/Seiten zugreifen wird (z. B. als unterschiedliche Abschnitte unterschiedlicher Dateien). Das Speichermodul 111 kann die Daten an die Festplattenlaufwerke (in einem Sub-Array) der Solid-State-Laufwerke (in dem Sub-Array) speichern, je nachdem, ob auf die Daten direkt oder sequenziell zugegriffen wird, und je nach den Lese-/Schreibzugriffsfrequenzen, wie im Folgenden näher erläutert.
  • Wie vorstehend erläutert, können Speicherarchitekturen/-systeme (die in Rechenzentren, Cloud-Speicherplattformen/-systemen, Cloud-Computing-Plattformen/- Systemen usw. verwendet werden können) sowohl Solid-State-Festplatten als auch Festplattenlaufwerke verwenden. Im Allgemeinen werden die Solid-State-Festplatten und die Festplattenlaufwerke in separaten Speicherpools, Speicher-Arrays oder Speicher-Sub-Arrays verwendet (z. B. kann ein Sub-Array/Pool nur Solid-State-Laufwerke oder nur Festplattenlaufwerke einschließen). So können beispielsweise die Arrays, Sub-Arrays, Pools usw., die nur Solid-State-Laufwerke einschließen, eine höhere Leistung aufweisen (z. B. Durchsatz, Zugriffszeiten, Lesezeiten, Schreibzeiten usw.) als Arrays, Sub-Arrays, Pools usw., die nur Festplattenlaufwerke einschließen. Somit können die Arrays, Sub-Arrays, Pools usw., die nur Solid-State-Laufwerke einschließen, als Cache für Datenzugriffe und/oder zur Bereitstellung einer höheren Leistung für Kunden verwendet werden (z. B. für Kunden, die einen höheren Preis für die höhere Leistung zahlen). Obwohl Solid-State-Laufwerke eine höhere/schnellere Leistung bereitstellen können (z. B. höherer sequenzieller/Direkt-durchsatz, schnellere Zugriffszeiten usw.), weisen Solid-State-Laufwerke Schreibzyklusbeschränkungen auf. So kann beispielsweise das Schreiben von Daten in den Flash-Speicher (z. B. in SLC-Zellen, MLC-Zellen, TLC-Zellen usw.) zu einem Verschleiß des Flash-Speichers führen (z.B. von SLC-Zellen, MLC-Zellen, TLC-Zellen usw.). Somit kann das Schreiben von Daten auf die Solid-State-Laufwerke den Verschleiß erhöhen und/oder die Lebensdauer (z. B. die Ausfallzeit, die Nutzungsdauer usw.) der Solid-State-Laufwerke verkürzen. Obwohl Festplattenlaufwerke möglicherweise keine solchen Einschränkungen des Schreibzyklus aufweisen, können Festplattenlaufwerke eine langsamere/geringere Leistung bereitstellen (als Solid-State-Laufwerke). So kann beispielsweise das Lesen von Daten von einer Festplatte im Vergleich zum Lesen von einem Solid-State-Laufwerk langsamer sein. Bei sequenziellen Zugriffen (z. B. sequenziellem Lesen und/oder Schreiben) kann ein Festplattenlaufwerk jedoch eine Leistung aufweisen, die der von Solid-State-Laufwerken nahe kommt, dieser ähnlich ist und/oder die damit konkurrieren kann. So können beispielsweise Festplattenlaufwerke mit geschichteten Magnetplatten (SMR) eine Leistung (z. B. sequenzieller Lesedurchsatz, sequenzieller Schreibdurchsatz usw.) aufweisen, die der Leistung von Solid-State-Laufwerken nahekommt. Daher kann es sinnvoll sein, Daten, auf die sequenziell zugegriffen wird, in die Festplattenlaufwerke zu schreiben.
  • In einigen Ausführungsformen können die hierin beschriebenen Beispiele, Implementierungen, Ausführungsformen und/oder Konfigurationen es ermöglichen, dass ein Speicherarray/Sub-Array (sowohl bei Festplattenlaufwerken als auch bei Solid-State-Laufwerken) direkte und sequenzielle Daten vergleichbar mit einem Speicherarray/Sub-Array verarbeitet, das nur Solid-State-Laufwerke enthält. So können beispielsweise Daten, auf die sequenziell zugegriffen wird, auf den unterteilten Festplattenlaufwerken eines Sub-Arrays gespeichert werden, das eine Leistung (z. B. einen Schreibdurchsatz) erbringen kann, die einem Solid-State-Laufwerk ähnlich ist. Darüber hinaus können einige Ausführungsformen auch die Kosten der Systemarchitektur 100 reduzieren. Durch die Nutzung von Festplattenlaufwerken bei gleicher oder ähnlicher/vergleichbarer Leistung mit Solid-State-Laufwerken können die Kosten für die Systemarchitektur 100 niedriger sein, da Festplattenlaufwerke günstiger sein können als Solid-State-Laufwerke. Darüber hinaus können einige Ausführungsformen die Lebensdauer (z. B. durch kürzere Ausfallzeiten, verkürzte Nutzungsdauer usw.) der Solid-State-Laufwerke weiter erhöhen, da häufig geschriebene Daten in den Festplattenlaufwerken gespeichert werden können (die keine Schreibzyklusbeschränkungen aufweisen). Da beispielsweise schreibintensive Daten (z. B. häufig in eine Datei geschriebene Daten, wie eine Datei, die ständig aktualisiert/geändert wird) in den Festplattenlaufwerken gespeichert werden können, reduziert dies die Menge der auf die Solid-State-Laufwerke geschriebenen Daten, was die Lebensdauer der Solid-State-Laufwerke erhöhen kann (aufgrund der Schreibzyklusbeschränkungen von Solid-State-Laufwerken).
  • Ein Durchschnittsfachmann versteht, dass die hierin beschriebenen Operationen, Verfahren, Aktionen, Prozesse usw. von einem oder mehreren der Speichermodule 111 und/oder der Speicheranwendungen 131 ausgeführt werden können. So kann das Speichermodul 111 beispielsweise einige der hierin beschriebenen Operationen durchführen (z. B. Leistungskennzahlen bestimmen), während die Speicheranwendung 131 andere hierin beschriebene Operationen durchführen kann (z. B. Zugriffsfrequenzen bestimmen).
  • 2 ist eine beispielhafte Tabelle 200, die die Leistungsstufen für Festplattenlaufwerke und Solid-State-Laufwerke in einem Sub-Array gemäß einer oder mehreren Ausführungsformen veranschaulicht. Wie vorstehend erläutert, kann ein Speicherarray (z. B. Speicherarray 120 in 1) Daten und/oder Datenobjekte speichern, auf die eine Client-Computervorrichtung (z.B. Client-Computervorrichtung 130 in 1) zugreifen kann. Das Speicherarray kann mehrere Datenspeichergeräte einschließen (z. B. mehrere Speicherlaufwerke wie Festplattenlaufwerke und Solid-State-Laufwerke, wie vorstehend erläutert). Die Festplattenlaufwerke können magnetische Speichermedien (z. B. magnetische Rotationsplatten) einschließen. Die Solid-State-Laufwerke können einen Flash-Speicher (z. B. eine SSD) einschließen. Ein Durchschnittsfachmann versteht, dass in anderen Ausführungsformen eine unterschiedliche Anzahl und/oder verschiedene Arten von Speicherlaufwerken in das Speicherarray aufgenommen werden können. Die Festplattenlaufwerke können in einem oder mehreren Sub-Arrays zusammengefasst werden. In dem in 2 veranschaulichten Beispiel schließt jedes Sub-Array drei Festplattenlaufwerke und drei Solid-State-Laufwerke ein.
  • In einer Ausführungsform kann jede der Spalten der Tabelle 200 eine Speichervorrichtung in dem Sub-Array darstellen. So kann beispielsweise die erste Spalte (von links nach rechts) die erste Festplatte HDD1 im Sub-Array darstellen. In einem weiteren Beispiel kann die vierte Spalte das erste Solid-State-Laufwerk SSD1 im Sub-Array darstellen. In einer Ausführungsform kann jedes Sub-Array auch in Stripes unterteilt werden, wie vorstehend erläutert. So kann beispielsweise jedes der Solid-State-Laufwerke SSD1, SSD2 und SSD3 in mehrere Stripes unterteilt werden oder jedes der Solid-State-Laufwerke kann einen Stripe bilden. In einem weiteren Beispiel können verschiedene Abschnitte der Festplattenlaufwerke HDD1, HDD2 und HDD3 zu unterschiedlichen Stripes zusammengefasst werden. So kann es beispielsweise schneller sein, auf Daten auf dem äußersten Durchmesser (OD) oder den äußeren Spuren (der rotierenden magnetischen Medien) der Festplattenlaufwerke zuzugreifen als auf den innersten Durchmesser (ID) oder die inneren Spuren (der rotierenden magnetischen Medien) der Festplattenlaufwerke. Die unterschiedlichen Spuren/Durchmesser der Festplattenlaufwerke können Teil unterschiedlicher Stripes sein. Jede Festplatte kann in mehrere Stripes unterteilt werden oder mehrere Abschnitte mehrerer Festplattenlaufwerke können zu einem Stripe zusammengefasst werden. Wie in Tabelle 200 veranschaulicht, können die einzelnen HDD1, HDD2, HDD3, SSD1, SSD2 und SDD3 in jeweils fünf Stripes unterteilt werden.
  • Eine Leistungsstufe können Daten sein (z. B. eine Zahl, ein Wert, eine alphanumerische Zeichenkette usw.), die anzeigen können, wie schnell auf die Daten in einem Datenblock zugegriffen (z. B. gelesen oder geschrieben) werden kann. Je höher beispielsweise die Leistungsstufe, desto schneller kann auf die Daten im Stripe zugegriffen werden (und umgekehrt). Ein Durchschnittsfachmann versteht, dass verschiedene Leistungsstufen verwendet werden können. So kann beispielsweise die Leistungsstufe ein Zahlenwert im Bereich von 1 bis 4 sein, wobei 1 den schnellsten Zugriff auf Daten für einen Stripe und 4 den langsamsten Zugriff auf Daten für einen Stripe darstellen kann.
  • Wie vorstehend erläutert, können die Festplattenlaufwerke heterogene Laufwerke sein (z. B. Datenspeicher mit unterschiedlichen Leistungen, Kapazitäten usw.) und die -State-Laufwerke können ebenfalls heterogene Laufwerke sein. Wie in Tabelle 200 veranschaulicht, weisen SSD1, SSD2 und SSD3 unterschiedliche Leistungsstufen P1, P2 und P2 auf, wobei P1 > P2 > P3. So kann beispielsweise jeder Stripe in SSD1 eine Leistungsstufe P1 aufweisen (z. B. Lesedurchsatz, Schreibdurchsatz, sequenzieller Durchsatz und/oder Direktdurchsatz usw.), kann jeder Stripe in SSD2 eine Leistungsstufe P2 aufweisen und kann jeder Stripe in SSD3 eine Leistungsstufe P3 aufweisen. Wie ebenfalls in 2 dargestellt, weisen HDD1 und HDD3 jeweils zwei Stripes mit der Leistungsstufe P2, einen Stripe mit der Leistungsstufe P1 und zwei Stripes mit der Leistungsstufe P3 auf. HDD2 weist einen Stripe mit der Leistungsstufe P1, drei Stripes mit der Leistungsstufe P2 und einen Stripe mit der Leistungsstufe P3 auf. Dies kann an den Leistungsunterschieden zwischen den inneren Spuren (z. B. innersten Spuren) und den äußeren Spuren (z. B. den äußersten Spuren) der Festplattenlaufwerke liegen. In einer Ausführungsform können die Leistungsstufen der Stripes von HDD1, HDD2, HDD2, HDD2, SSD1, SSD2 und/oder SSD3 regelmäßig aktualisiert werden. So kann beispielsweise ein Speichermodul den Betrieb der Festplattenlaufwerke und der Solid-State-Laufwerke überwachen und die Leistungsstufen aktualisieren, wenn sich die Leistungen der Stripes ändern (z. B. wenn Lese-/Schreib-Latenzen steigen/abnehmen, wenn der Freiraum abnimmt, wenn die Anzahl der Schreibzyklen für Flash-Speicher abnimmt usw).
  • 3 ist ein Diagramm eines beispielhaften Speicherarrays 120 gemäß einer oder mehreren Ausführungsformen. Wie vorstehend erläutert, kann das Speicherarray 120 Daten und/oder Datenobjekte speichern, auf die eine Client-Computervorrichtung (z. B. Client-Computervorrichtung 130, veranschaulicht in 1) zugreifen kann. Das Speicherarray 220 kann mehrere Datenspeichervorrichtungen einschließen (z. B. mehrere Speicherlaufwerke wie Festplattenlaufwerke 332 und Solid-State-Laufwerke 331, wie vorstehend erläutert). Die Festplattenlaufwerke 332 können magnetische Speichermedien (z. B. magnetische Rotationsplatten) einschließen. Die Solid-State-Laufwerke können einen Flash-Speicher (z. B. eine SSD) einschließen. Ein Durchschnittsfachmann versteht, dass in anderen Ausführungsformen eine unterschiedliche Anzahl und/oder verschiedene Arten von Speicherlaufwerken in das Speicherarray 220 aufgenommen werden können. Das Speicherarray 120 ist mit einer Server-Computervorrichtung 110 gekoppelt und die Server-Computervorrichtung schließt ein Speichermodul 111 ein, wie vorstehend erläutert. Obwohl das Speicherarray 120 als getrennt von der Server-Computervorrichtung 110 dargestellt ist, kann das Speicherarray 120 in die Server-Computervorrichtung 110 integriert und/oder Teil dieser sein.
  • Wie in 3 veranschaulicht, schließt das Speicherarray 120 mehrere Sub-Arrays 330 ein. Jedes der Sub-Arrays 330 schließt drei Solid-State-Laufwerke (z. B. ein Set von Solid-State-Laufwerken) und drei Festplattenlaufwerke (z. B. ein Set von Festplattenlaufwerken) ein. Die vier Solid-State-Laufwerke 331 (in jedem Sub-Array 330) können homogene Laufwerke einschließen (z. B. Laufwerke mit der gleichen Speicherkapazität, Leistung usw., wie vorstehend erläutert) oder können heterogene Laufwerke einschließen (z. B. Laufwerke mit unterschiedlichen Speicherkapazitäten, Leistungen usw., wie vorstehend erläutert). Die drei Festplattenlaufwerke 332 (in jedem Sub-Array 330) können homogene Laufwerke einschließen (z. B. Laufwerke mit der gleichen Speicherkapazität, Leistung usw., wie vorstehend erläutert) oder können heterogene Laufwerke einschließen (z. B. Laufwerke mit unterschiedlichen Speicherkapazitäten, Leistungen usw., wie vorstehend erläutert).
  • In einer Ausführungsform kann jedes Sub-Array ferner in Stripes unterteilt werden, wie vorstehend erläutert. So kann beispielsweise jedes der Solid-State-Laufwerke 331 Teil eines Stripes sein. In einem weiteren Beispiel können unterschiedliche Abschnitte der Festplattenlaufwerke 332 Teil unterschiedlicher Stripes sein. So können beispielsweise der Außendurchmesser oder die Außenspuren (der rotierenden magnetischen Medien) der Festplattenlaufwerke 332 Teil eines ersten Stripes sein, und der Innendurchmesser oder die Innenspuren (der rotierenden magnetischen Medien) der Festplattenlaufwerke 332 können Teil eines zweiten Stripes sein.
  • Wie vorstehend erläutert, kann die Server-Computervorrichtung 110 und/oder das Speichermodul 111 (in 1 veranschaulicht) die Anzahl der Festplattenlaufwerke 332 (in einem Sub-Array 330) bestimmen, die in einer unterteilten Konfiguration eingerichtet werden sollen (z. B. eine RAID-Level/Konfiguration wie RAID 0, RAID 5 usw.), sodass die Festplattenlaufwerke 332 (z.B. unterteilte Festplattenlaufwerke) mit der Leistung (z. B. Lesedurchsatz, Schreibdurchsatz usw.) eines oder mehrerer der Solid-State-Laufwerke 331 im Sub-Array 330 übereinstimmen und/oder sich innerhalb eines Schwellenwerts befinden. In einer Ausführungsform kann die Server-Computervorrichtung 110 und/oder ein Speichermodul 111 die Anzahl der Stripes und/oder die Anzahl der Festplattenlaufwerke bestimmen, indem sie für jeden der Stripes in dem Sub-Array 330 ein Leistungsniveau bestimmt. Die folgende Gleichung (1) kann verwendet werden, um das Leistungsniveau für jeden der Stripes in dem Sub-Array 330 zu bestimmen. g i ( t ) = α 1 P s , i P s , M a x + α 2 P r , i P r , M a x
    Figure DE112018002500T5_0001
    wobei Ps,i und Pr,i der sequenzielle Durchsatz und der Direktdurchsatz (Input/Output Operations (IOPS)) der Leistungsstufe für den jeweiligen Stripe i sein können. Ps,Max and Pr,Max der maximale sequenzielle Durchsatz und der maximale Direktdurchsatz von Stripes von allen Arten von Festplatten im Array sein können. α1 and α2 Gewichtungskoeffizienten (Gewichte) jeweils für die sequenziellen Durchsätze bzw. Direktdurchsätze sein können. In einer Ausführungsform kann α1 größer als α2 sein, wenn das Verhältnis von sequenziellem Zugriff zu Direktzugriff höher ist (z. B. es gibt mehr sequenzielle Zugriffe auf das Speicherarray 120). In einer anderen Ausführungsform kann α1 kleiner als α2 sein, wenn das Verhältnis von sequenziellem Zugriff zu Direktzugriff niedriger ist (z. B. es gibt mehr Direktzugriffe auf das Speicherarray 120). In einer weiteren Ausführungsform kann α1 gleich α2 sein, wenn das Verhältnis von sequenziellem Zugriff zu Direktzugriff höher ist (z. B. es gibt mehr sequenzielle Zugriffe auf das Speicherarray 120). In einigen Ausführungsformen können der Lesedurchsatz und der Schreibdurchsatz für ein Solid-State-Laufwerk unterschiedlich sein und separat betrachtet werden. So können beispielsweise zwei Fälle von Gleichungen (1) verwendet werden, eine für den Lesedurchsatz und eine für den Schreibdurchsatz.
  • Wie vorstehend erläutert, empfängt das Speichermodul 111 (und/oder die Server-Computervorrichtung 110) Daten zum Schreiben oder Speichern auf dem Speicherarray 120 (z. B. kann es Daten von einer Client-Computervorrichtung oder einer Speicheranwendung empfangen). Das Speichermodul 111 kann die Lesezugriffsfrequenz der Daten bestimmen und/oder eine Schreibzugriffsfrequenz der Daten bestimmen, wie vorstehend erläutert. Anhand einer Lesezugriffsfrequenz kann angegeben werden, wie oft Daten (z. B. eine Datei, Blöcke/Seiten usw.) von Benutzern gelesen werden können (z. B. darauf zugegriffen werden kann), und/oder kann eine Vorhersage getroffen werden, wie oft die Daten von Benutzern gelesen werden können, wie vorstehend erläutert. Anhand einer Schreibzugriffsfrequenz kann angegeben werden, wie oft Daten (z. B. in eine Datei, Blöcke/Seiten usw.) von Benutzern geschrieben werden können (z. B. darauf zugegriffen werden kann) und/oder wie oft die Daten von Benutzern geschrieben werden können, wie vorstehend erläutert. Daten, die eine Lesezugriffsfrequenz aufweisen, die größer als eine Schwellenwert-Lesezugriffsfrequenz ist, können als häufig gelesene Daten (Read Hot Data) bezeichnet werden. Daten, die eine Schreibzugriffsfrequenz aufweisen, die größer als eine Schwellenwert-Schreibzugriffsfrequenz ist, können als häufig geschriebene Daten (Write Hot Data) bezeichnet werden.
  • Wie vorstehend erläutert, kann das Speichermodul 111 Daten an ein oder mehrere Solid-State-Laufwerke 331 (z. B. an Stripes der Solid-State-Laufwerke 331) in einem Sub-Array 330 schreiben, wenn es sich bei den Daten um häufig gelesene Daten handelt und es sich bei den Daten nicht um häufig geschriebene Daten handelt (z. B. wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz überschreitet und die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz nicht überschreitet). Wie vorstehend erläutert, kann das Speichermodul 111 ebenso Daten an ein oder mehrere Festplattenlaufwerke 332 (z. B. an Stripes der Festplattenlaufwerke 332) in dem Sub-Array 330 schreiben, wenn es sich bei den Daten nicht um häufig gelesene Daten handelt und es sich bei den Daten um häufig geschriebene Daten handelt (z. B. wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz nicht überschreitet und die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz überschreitet). Wie vorstehend erläutert, kann das Speichermodul 111 ferner Daten an eine oder mehrere Festplattenlaufwerke 332 (z. B. an Stripes der Festplattenlaufwerke 332) in dem Sub-Array 330 schreiben, wenn es sich bei den Daten nicht um häufig gelesene Daten handelt und es sich bei den Daten nicht um häufig geschriebene Daten handelt (z. B. wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz nicht überschreitet und die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz nicht überschreitet).
  • In einer Ausführungsform kann das Speichermodul 111 (und/oder die Server-Computervorrichtung 110) Leistungskennzahlen für die Festplattenlaufwerke 332 (im Sub-Array 330) und die Solid-State-Laufwerke 331 (im Sub-Array 330) bestimmen, wenn es sich bei den Daten um häufig gelesene Daten oder um häufig geschriebene Daten handelt (z. B. wenn die Lesezugriffsfrequenz den Schwellenwert für die Lesezugriffsfrequenz überschreitet und die Schreibzugriffsfrequenz den Schwellenwert für die Schreibzugriffsfrequenz überschreitet). Die Leistungskennzahl kann die Leistung (z. B. wie schnell auf Daten zugegriffen werden kann) eines Laufwerks angeben. So kann beispielsweise eine höhere Leistungskennzahl auf eine geringere Leistung hinweisen (z. B. kann es länger dauern, Daten zu lesen bzw. zu schreiben) und umgekehrt. In einer Ausführungsform können die Leistungskennzahlen für die Festplattenlaufwerke 332 (oder Stripes der Festplattenlaufwerke 332) mit den folgenden Gleichungen (2) und (4) bestimmt werden. In einer weiteren Ausführungsform können die Leistungskennzahlen für die Solid-State-Laufwerke 331 (oder Stripes der Solid-State-Laufwerke 31) unter Verwendung der Gleichungen (3) und (4) bestimmt werden, wie nachstehend veranschaulicht. f H D D , j ( t ) = β 11 ( R j ( t ) R 1 f , i ) + β 12 ( C 1 f , j C j ( t ) ) + β 13 ( I j ( t ) I 1 f , j )
    Figure DE112018002500T5_0002
    f S S D , j ( t ) = β 21 ( R j ( t ) R 2 f , j ) + β 22 ( C 2 f , j C j ( t ) ) + β 23 ( I j ( t ) I 2 f , j )
    Figure DE112018002500T5_0003
    I j ( t ) = γ 1 P S , j ( t ) P S , m a x , j + γ 2 P R , j ( t ) P R , m a x , j
    Figure DE112018002500T5_0004
    βlm, l = 1,; m = 1,2,3, können Gewichtungskoeffizienten (z. B. Gewichte) für die Parameter der Gleichungen (2) und (3) sein. Rj(t) kann die Reaktionszeit eines Laufwerks auf externe Benutzeranfragen sein (z. B. die Reaktionszeit auf einen Zugriffsbefehl oder eine Anforderung zum Lesen von Daten). Rlf kann die Referenzreaktionszeit bezogen auf eine QoS sein (z. B. die Reaktionszeit, die eine QoS erfüllen kann). Cj(t) kann die verbleibende effektive Kapazität der Festplatte sein (z. B. der verbleibende freie Speicherplatz). C(lf,j)(t) kann der minimale Speicherplatzbedarf (z. B. ein minimaler freier Speicherplatz) sein. Ilf,j kann der Lastreferenzwert sein. Ij(t) kann die aktuelle Last sein (Kombination aus sequenziellen und Direktzugriffen). PS,j und PR,j können die durchschnittliche sequenzielle und Direktleistung für die Festplattenlaufwerke bzw. Solid-State-Laufwerke in einem Hybrid-Sub-Array j sein. Ps,Max,j und Pr,Max,j sind die maximale sequenzielle und Direktleistung der Festplattenlaufwerke bzw. Solid-State-Laufwerke in dem Sub-Array j. In einigen Ausführungsformen können die Gewichtungskoeffizienten βlm für verschiedene Sub-Arrays unterschiedlich sein. In anderen Ausführungsformen können die Gleichungen (3) und (4) andere Parameter einschließen, wie die verbleibende Anzahl von Schreibzyklen für einen Stripe und/oder ein Solid-State-Laufwerk.
  • Das Speichermodul 111 kann die Daten auf die Solid-State-Laufwerke 331 (im Sub-Array 330) oder auf die Festplattenlaufwerke 332 (im Sub-Array 330) schreiben, basierend auf den Leistungskennzahlen für Solid-State-Laufwerke 331 und den Leistungskennzahlen für die Festplattenlaufwerke 332 im Sub-Array 330 unter Verwendung der Gleichung (5), wie nachstehend veranschaulicht. F j ( t ) = f S S D , j ( t ) f H D D , j ( t )
    Figure DE112018002500T5_0005
  • Wie vorstehend erläutert, wird fHDD,j(t) (bei dem es sich um eine Leistungskennzahl für die Festplattenlaufwerke 332 in einem Sub-Array 330 handelt) mit den Gleichungen (2) und (4) und fSDD,j(t) (bei dem es sich um eine Leistungskennzahl für die Solid-State-Laufwerke 331 im Sub-Array 330 handelt) mit den Gleichungen (3) und (4) bestimmt. Gleichung (5) kann eine zeitvariable Funktion sein (z. B. eine Funktion, die sich im Laufe der Zeit ändern kann), die sich auf die Leistung von Laufwerken in einem Sub-Array 330 (z. B. von den Solid-State-Laufwerken 331 und den Festplattenlaufwerken 332), auf die verbleibende Speicherkapazität der Laufwerke in dem Sub-Array 330, auf die Leistung der Laufwerke in dem Sub-Array 330 (z. B. Reaktionszeiten), auf die Servicequalität der Laufwerke in dem Sub-Array 330, auf die Lastverteilung usw. bezieht. In einer Ausführungsform kann das Speichermodul 111 Daten in die Solid-State-Laufwerke 331 (in dem Sub-Array 330) schreiben, wenn das Ergebnis bzw. der Wert der Gleichung (5) größer als Null ist. Wenn beispielsweise fSDD,j(t) größer ist als fHDD,j(t), kann das Speichermodul 111 Daten in die Solid-State-Laufwerke 331 (im Sub-Array 330) schreiben. In einer weiteren Ausführungsform kann das Speichermodul 111 Daten an die Festplattenlaufwerke 332 (in dem Sub-Array 330) schreiben, wenn das Ergebnis bzw. der Wert der Gleichung (5) kleiner oder gleich Null ist. Wenn beispielsweise fSDD,j(t) kleiner ist als fHDD,j(t), kann das Speichermodul 111 Daten in die Festplattenlaufwerke 332 (im Sub-Array 330) schreiben.
  • 4 ist ein Flussdiagramm, das einen beispielhaften Prozess 400 zum Schreiben von Daten in ein Speicherarray (z. B. zum Speichern von Daten in einem Speicherarray oder einem Sub-Array des Speicherarrays) gemäß einer oder mehreren Ausführungsformen veranschaulicht. Der Prozess 400 kann von einem Speichermodul, einer Verarbeitungsvorrichtung (z. B. einem Prozessor, einer zentralen Verarbeitungseinheit (CPU)) und/oder einer Computervorrichtung (z. B. einer Server-Computervorrichtung) durchgeführt werden. Das Speichermodul, die Verarbeitungsvorrichtung und/oder die Computervorrichtung können Verarbeitungslogik sein, die Hardware (z. B. Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Anweisungen, die auf einem Prozessor ausgeführt werden, um eine Hardwaresimulation durchzuführen), Firmware oder eine Kombination davon einschließt.
  • Bei Block 405 kann der Prozess 400 eine Zugriffsanforderung zum Schreiben von Daten in das Speicherarray empfangen. So kann beispielsweise der Prozess 400 eine Zugriffsanforderung von einer Speicheranwendung und/oder einer Client-Computervorrichtung erhalten, wie vorstehend erläutert. Der Prozess 400 kann die Lesezugriffsfrequenz (RAF) und die Schreibzugriffsfrequenz (WAF) der Daten (die in das Speicherarray geschrieben werden sollen) bei Block 410 bestimmen, wie vorstehend erläutert. So kann der Prozess 400 beispielsweise verschiedene Algorithmen, Funktionen, Formeln, Operationen usw. verwenden, um die Lesezugriffsfrequenz und die Schreibzugriffsfrequenz für die Daten zu bestimmen, wie vorstehend erläutert. In einem weiteren Beispiel kann der Prozess 400 die Lesezugriffsfrequenz und die Schreibzugriffsfrequenz von einem Benutzer oder einer Konfigurationsdatei/Einstellung empfangen, wie vorstehend erläutert.
  • Bei Block 415 bestimmt der Prozess 400, ob die Lesezugriffsfrequenz (der Daten) größer ist als ein Schwellenwert für die Lesezugriffsfrequenz (z. B. ob es sich bei den Daten um häufig gelesene Daten handelt), wie vorstehend erläutert. Wenn die Lesezugriffsfrequenz nicht größer als der (z. B. kleiner als der oder gleich dem) Schwellenwert für die Lesezugriffsfrequenz ist, fährt der Prozess 400 mit Block 430 fort, in den die Daten auf ein oder mehrere Festplattenlaufwerke in einem Sub-Array geschrieben (z. B. darauf gespeichert) werden. Ist die Lesezugriffsfrequenz größer als der Schwellenwert für die Lesezugriffsfrequenz, fährt der Prozess 400 mit Block 420 fort, wobei der Prozess 400 bestimmt, ob die Schreibzugriffsfrequenz (der Daten) größer als ein Schwellenwert für die Schreibzugriffsfrequenz ist (z. B. ob es sich bei den Daten um häufig geschriebene Daten handelt). Wenn die Schreibzugriffsfrequenz nicht größer als der (z. B. kleiner als der oder gleich dem) Schwellenwert für die Schreibzugriffsfrequenz ist, fährt der Prozess 400 mit Block 435 fort, in den die Daten auf ein oder mehrere Solid-State-Laufwerke in einem Sub-Array geschrieben (z. B. darauf gespeichert) werden.
  • Ist die Schreibzugriffsfrequenz größer als der Schwellenwert für die Schreibzugriffsfrequenz (und die Lesezugriffsfrequenz größer als der Schwellenwert für die Lesezugriffsfrequenz), fährt der Prozess 400 mit Block 421 fort, wobei der Prozess 400 eine erste Leistungskennzahl für die Solid-State-Laufwerke in dem Sub-Array (z. B. eine SSD-Leistungskennzahl) und eine zweite Leistungskennzahl für die Festplattenlaufwerke in dem Sub-Array (z. B. eine HDD-Leistungskennzahl) bestimmt, wie vorstehend erläutert. So kann beispielsweise der Prozess 400 mit den Gleichungen (2)-(4) die erste Leistungskennzahl (für die Solid-State-Laufwerke in dem Sub-Array) und die zweite Leistungskennzahl (für die Festplattenlaufwerke in dem Sub-Array) bestimmen (z. B. berechnen, erstellen, erhalten usw.).
  • Bei Block 425 bestimmt der Prozess 400, ob die erste Leistungskennzahl (z. B. die SSD-Leistungskennzahl) größer ist als die zweite Leistungskennzahl (z. B. die HDD-Leistungskennzahl). So kann beispielsweise der Prozess 500 die Gleichung (5) verwenden, um zu bestimmen, ob die erste Leistungskennzahl größer als die zweite Leistungskennzahl ist. Wenn die erste Leistungskennzahl größer als die zweite Leistungskennzahl ist, kann der Prozess 400 die Daten an die Festplattenlaufwerke bei Block 430 schreiben (z. B. speichern), wie vorstehend erläutert. Wenn die erste Leistungskennzahl (z. B. die SSD-Leistungskennzahl) nicht größer als die (z. B. kleiner die oder gleich der) zweite(n) Leistungskennzahl (z. B. die bzw. der HDD-Leistungskennzahl) ist, kann der Prozess 400 die Daten auf die Solid-State-Laufwerke bei Block 435 schreiben (z. B. speichern), wie vorstehend erläutert.
  • 5 ist ein Flussdiagramm, das einen beispielhaften Prozess 500 zum Schreiben von Daten in ein Speicherarray (z. B. zum Speichern von Daten in einem Speicherarray oder einem Sub-Array des Speicherarrays) gemäß einer oder mehreren Ausführungsformen veranschaulicht. Der Prozess 500 kann von einem Speichermodul, einer Verarbeitungsvorrichtung (z. B. einem Prozessor, einer zentralen Verarbeitungseinheit (CPU)) und/oder einer Computervorrichtung (z. B. einer Server-Computervorrichtung) durchgeführt werden. Das Speichermodul, die Verarbeitungsvorrichtung und/oder die Computervorrichtung können Verarbeitungslogik sein, die Hardware (z. B. Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Anweisungen, die auf einem Prozessor ausgeführt werden, um eine Hardwaresimulation durchzuführen), Firmware oder eine Kombination davon einschließt.
  • Bei Block 505 kann der Prozess 500 eine Zugriffsanforderung zum Schreiben von Daten in das Speicherarray empfangen. So kann beispielsweise der Prozess 500 eine Zugriffsanforderung von einer Speicheranwendung und/oder einer Client-Computervorrichtung erhalten, wie vorstehend erläutert. Der Prozess 500 kann die Lesezugriffsfrequenz (RAF) und die Schreibzugriffsfrequenz (WAF) der Daten (die in das Speicherarray geschrieben werden sollen) bei Block 510 bestimmen, wie vorstehend erläutert. So kann der Prozess 500 beispielsweise verschiedene Algorithmen, Funktionen, Formeln, Operationen usw. verwenden, um die Lesezugriffsfrequenz und die Schreibzugriffsfrequenz für die Daten zu bestimmen, wie vorstehend erläutert. In einem weiteren Beispiel kann der Prozess 500 die Lesezugriffsfrequenz und die Schreibzugriffsfrequenz von einem Benutzer oder einer Konfigurationsdatei/Einstellung empfangen, wie vorstehend erläutert.
  • Bei Block 511 bestimmt der Prozess 500, ob die Daten (empfangen in/mit der Zugriffsanforderung) Direktdaten oder sequenzielle Daten sind. So kann beispielsweise der Prozess 500 bestimmen, ob die Daten auf einzelne Blöcke verteilt oder verbreitet sind. In einem weiteren Beispiel kann der Prozess 500 bestimmen, ob die Daten in sequenzielle Blöcke geschrieben werden (z. B. ein Set von kontinuierlichen bzw. zusammenhängenden Blöcken). Wenn die Daten direkt sind, kann der Prozess 500 bestimmen, ob die Lesezugriffsfrequenz kleiner oder gleich einem Schwellenwert für den Lesezugriff ist und ob die Schreibzugriffsfrequenz kleiner oder gleich einem Schwellenwert für den Schreibzugriff ist (z. B. ob es sich bei den Daten nicht um häufig gelesene Daten und nicht um häufig geschriebene Daten handelt) bei Block 512. Wenn die Lesezugriffsfrequenz kleiner oder gleich einem Schwellenwert für den Lesezugriff ist und die Schreibzugriffsfrequenz kleiner oder gleich einem Schwellenwert für den Schreibzugriff ist, kann der Prozess 500 die Daten im Sub-Array bei Block 530 an die Festplattenlaufwerke speichern bzw. schreiben. Wenn die Lesezugriffsfrequenz größer als ein Schwellenwert für den Lesezugriff oder die Schreibzugriffsfrequenz größer als ein Schwellenwert für den Schreibzugriff ist, kann der Prozess 500 die Daten an die Solid-State-Laufwerke im Sub-Array bei Block 535 speichern bzw. schreiben.
  • Wenn es sich bei den Daten um sequenzielle Daten handelt, fährt der Prozess 500 mit Block 515 fort. Bei Block 515 bestimmt der Prozess 500, ob die Lesezugriffsfrequenz (der Daten) größer ist als ein Schwellenwert für die Lesezugriffsfrequenz (z. B. ob es sich bei den Daten um häufig gelesene Daten handelt), wie vorstehend erläutert. Wenn die Lesezugriffsfrequenz nicht größer als der (z. B. kleiner als der oder gleich dem) Schwellenwert für die Lesezugriffsfrequenz ist, fährt der Prozess 500 mit Block 530 fort, in den die Daten auf ein oder mehrere Festplattenlaufwerke in einem Sub-Array geschrieben (z. B. darauf gespeichert) werden. Ist die Lesezugriffsfrequenz größer als der Schwellenwert für die Lesezugriffsfrequenz, fährt der Prozess 500 mit Block 520 fort, wobei der Prozess 500 bestimmt, ob die Schreibzugriffsfrequenz (der Daten) größer als ein Schwellenwert für die Schreibzugriffsfrequenz ist (z. B. ob es sich bei den Daten um häufig geschriebene Daten handelt). Wenn die Schreibzugriffsfrequenz nicht größer als der (z. B. kleiner als der oder gleich dem) Schwellenwert für die Schreibzugriffsfrequenz ist, fährt der Prozess 500 mit Block 535 fort, in den die Daten auf ein oder mehrere Solid-State-Laufwerke in einem Sub-Array geschrieben (z. B. darauf gespeichert) werden.
  • Ist die Schreibzugriffsfrequenz größer als der Schwellenwert für die Schreibzugriffsfrequenz (und die Lesezugriffsfrequenz größer als der Schwellenwert für die Lesezugriffsfrequenz), fährt der Prozess 500 mit Block 521 fort, wobei der Prozess 500 eine erste Leistungskennzahl für die Solid-State-Laufwerke in dem Sub-Array (z. B. eine SSD-Leistungskennzahl) und eine zweite Leistungskennzahl für die Festplattenlaufwerke in dem Sub-Array (z. B. eine HDD-Leistungskennzahl) bestimmt, wie vorstehend erläutert. So kann beispielsweise der Prozess 500 mit den Gleichungen (2)-(5) die erste Leistungskennzahl (für die Solid-State-Laufwerke in dem Sub-Array) und die zweite Leistungskennzahl (für die Festplattenlaufwerke in dem Sub-Array) bestimmen (z. B. berechnen, erstellen, erhalten usw.).
  • Bei Block 525 bestimmt der Prozess 500, ob die erste Leistungskennzahl (z. B. die SSD-Leistungskennzahl) größer ist als die zweite Leistungskennzahl (z. B. die HDD-Leistungskennzahl). So kann beispielsweise der Prozess 500 die Gleichung (5) verwenden, um zu bestimmen, ob die erste Leistungskennzahl größer als die zweite Leistungskennzahl ist. Wenn die erste Leistungskennzahl größer als die zweite Leistungskennzahl ist, kann der Prozess 500 die Daten an die Festplattenlaufwerke bei Block 530 schreiben (z. B. speichern), wie vorstehend erläutert. Wenn die erste Leistungskennzahl (z. B. die SSD-Leistungskennzahl) nicht größer als die (z. B. kleiner die oder gleich der) zweite(n) Leistungskennzahl (z. B. die bzw. der HDD-Leistungskennzahl) ist, kann der Prozess 500 die Daten auf die Solid-State-Laufwerke bei Block 535 schreiben (z. B. speichern), wie vorstehend erläutert.
  • 6 ist ein Diagramm einer Computervorrichtung 600 gemäß einer oder mehreren Ausführungsformen. Die Computervorrichtung 600 kann Anweisungen ausführen, die die Computervorrichtung 600 veranlassen können, eine oder mehrere der hierin beschriebenen Vorgehensweisen (z. B. Operationen, Verfahren, Funktionen usw.) auszuführen. Bei der Computervorrichtung 600 kann es sich um ein Mobiltelefon, ein Smartphone, einen Netbook-Computer, einen Rackmount-Server, einen Router-Computer, einen Server-Computer, einen Personalcomputer, einen Großrechner, einen Laptop-Computer, einen Tablet-Computer, einen Desktop-Computer usw. handeln, innerhalb dessen eine Reihe von Anweisungen ausgeführt werden können, die die Maschine veranlassen, eines oder mehrere der hierin beschriebenen Verfahren auszuführen. In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet verbunden (z. B. vernetzt) sein. Die Maschine kann als Servermaschine in einer Client-Server-Netzwerkumgebung betrieben werden. Bei der Maschine kann es sich um einen Personalcomputer (PC), eine Set-Top-Box (STB), einen Server, einen Netzwerkrouter, einen Switch oder eine Brücke oder um eine Maschine handeln, die in der Lage ist, eine Reihe von Anweisungen (sequenziell oder anderweitig) auszuführen, die von dieser Maschine auszuführende Aktionen vorgeben. Obwohl nur eine einzelne Maschine veranschaulicht wird, ist unter dem Begriff „Maschine“ außerdem jede Zusammenstellung von Maschinen zu verstehen, die einzeln oder gemeinsam ein Set (oder mehrere Sets) von Anweisungen zum Ausführen einer oder mehrerer der hierin beschriebenen Funktionen, Operationen, Verfahren, Algorithmen usw. ausführen.
  • Die beispielhafte Computervorrichtung 600 schließt eine Verarbeitungsvorrichtung (z. B. einen Prozessor, eine Steuerung, eine zentrale Verarbeitungseinheit (CPU) usw.) 602, einen Hauptspeicher 604 (z. B. einen Festspeicher (ROM), Flash-Speicher, dynamischen Direktzugriffsspeicher (DRAM) wie synchronen DRAM (SDRAM)), eine Netzwerkzugriffsschnittstelle 608, eine Direktzugriffsschnittstelle 609, eine Ausgabevorrichtung, 610, eine Eingabevorrichtung 612 und eine Datenspeichervorrichtung 618, die über einen Bus 630 miteinander kommunizieren, ein.
  • Die Verarbeitungsvorrichtung 602 stellt eine oder mehrere universell einsetzbare Verarbeitungsvorrichtungen dar, wie einen Mikroprozessor, eine zentrale Verarbeitungseinheit oder dergleichen. Insbesondere kann es sich bei der Verarbeitungsvorrichtung 602 um einen Mikroprozessor mit komplexer Befehlssatzverarbeitung (CISC), einen Mikroprozessor mit reduzierter Befehlssatzverarbeitung (RISC), einen Mikroprozessor mit sehr langem Befehlswort (VLIW) oder einen Prozessor handeln, der andere Befehlssätze oder Prozessoren implementiert, die eine Kombination von Befehlssätzen implementieren. Bei der Verarbeitungsvorrichtung 602 kann es sich auch um eine oder mehrere spezielle Verarbeitungsvorrichtungen handeln, wie eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor oder dergleichen. Die Verarbeitungsvorrichtung 602 ist dazu eingerichtet, die Anweisungen 635 des Speichermoduls (z. B. Anweisungen für das in 2 veranschaulichte Speichermodul 211) zur Durchführung der hierin beschriebenen Vorgänge und Schritte auszuführen.
  • Die Computervorrichtung 600 kann eine Netzwerkzugriffsschnittstelle 608 (z. B. eine Netzwerkschnittstellenkarte, eine Wi-Fi-Schnittstelle usw.) einschließen, die mit einem Netzwerk (z. B. Netzwerk 170, wie in 1 veranschaulicht) kommunizieren kann. Die Computervorrichtung kann außerdem eine Direktzugriffsschnittstelle 609 einschließen (z. B. eine USB-Schnittstelle, eine eSATA-Schnittstelle, eine Thunderbolt-Schnittstelle usw.). Die Computervorrichtung 600 kann außerdem eine Ausgabevorrichtung 610 (z. B. eine Flüssigkristallanzeige (LCD) oder eine Kathodenstrahlröhre (CRT)) und eine Eingabevorrichtung 612 (z. B. eine Maus, eine Tastatur usw.) einschließen. In einer Ausführungsform können die Ausgabevorrichtung 610 und die Eingabevorrichtung 612 zu einer einzigen Komponente oder Vorrichtung (z. B. einem LCD-Touchscreen) kombiniert werden.
  • Die Datenspeichervorrichtung 618 kann ein computerlesbares Speichermedium 628 einschließen, auf dem ein oder mehrere Befehlssätze (z. B. Speichermodulanweisungen 635) gespeichert sind, die eine oder mehrere der hierin beschriebenen Verfahren oder Funktionen enthalten. Die Anweisungen des Speichermoduls 635 können sich während der Ausführung durch die Computervorrichtung 600 auch ganz oder zumindest teilweise im Hauptspeicher 604 und/oder in der Verarbeitungsvorrichtung 602 befinden. Bei dem Hauptspeicher 604 und der Verarbeitungsvorrichtung 602 kann es sich auch um computerlesbare Medien handeln. Die Anweisungen können ferner über die Netzwerkzugriffsschnittstelle 608 und/oder die Direktzugriffsschnittstelle 609 gesendet oder empfangen werden.
  • Während das computerlesbare Speichermedium 628 in einer beispielhaften Ausführungsform als Einzelmedium dargestellt ist, sollte der Begriff „computerlesbares Speichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien (z. B. eine zentralisierte oder dezentrale Datenbank und/oder zugehörige Caches und Server) einschließt, die einen oder mehrere Befehlssätze speichern. Unter dem Begriff „computerlesbares Speichermedium“ ist auch jedes Medium zu verstehen, das in der Lage ist, eine Reihe von Anweisungen zur Ausführung durch die Maschine zu speichern, zu codieren oder zu übertragen, und das die Maschine veranlasst, eine oder mehrere der Verfahren der vorliegenden Offenbarung durchzuführen. Der Begriff „computerlesbares Speichermedium“ schließt dementsprechend unter anderem Festkörperspeicher, optische Medien und magnetische Medien ein.
  • Allgemeine Bemerkungen
  • Der Fachmann wird erkennen, dass in einigen Ausführungsformen andere Arten von verteilten Datenspeichersystemen unter Wahrung des Schutzumfangs der vorliegenden Offenbarung implementiert werden können. Außerdem können die tatsächlichen Schritte, die in den hierin erörterten Prozessen vorgenommen werden, sich von denjenigen unterscheiden, die in den Figuren beschrieben oder gezeigt sind. In Abhängigkeit von der Ausführungsform können bestimmte der vorstehend beschriebenen Schritte entfernt werden, andere können hinzugefügt werden.
  • Obwohl bestimmte Ausführungsformen beschrieben wurden, wurden diese Ausführungsformen nur beispielhaft dargestellt und sollen den Schutzumfang nicht einschränken. Tatsächlich können die hierin beschriebenen neuen Verfahren und Systeme in einer Vielzahl anderer Formen verkörpert sein. Ferner können verschiedene Auslassungen, Ersetzungen und Änderungen in der Form der hierin beschriebenen Verfahren und Systeme vorgenommen werden. Die beigefügten Ansprüche und ihre Entsprechungen sollen solche Formen oder Modifikationen abdecken, die in den Umfang und Geist des Schutzes fallen würden. Beispielsweise können die verschiedenen in den Figuren veranschaulichten Komponenten als Software und/oder Firmware auf einem Prozessor, ASIC/FPGA oder spezieller Hardware implementiert werden. Außerdem können die Merkmale und Attribute der vorstehend offenbarten spezifischen Ausführungsformen auf verschiedene Weisen kombiniert werden, um zusätzliche Ausführungsformen zu bilden, die alle in den Schutzumfang der vorliegenden Offenbarung fallen. Obwohl die vorliegende Offenbarung bestimmte bevorzugte Ausführungsformen und Anwendungen bereitstellt, liegen andere Ausführungsformen, die für den Fachmann offensichtlich sind, einschließlich Ausführungsformen, die nicht alle der hierin dargelegten Merkmale und Vorteile bereitstellen, ebenfalls innerhalb des Schutzumfangs dieser Offenbarung. Entsprechend soll der Schutzumfang der vorliegenden Offenbarung nur durch Bezugnahme auf die beigefügten Ansprüche definiert sein.
  • Die Wörter „Beispiel“ oder „beispielhaft“ werden hierin verwendet, um als Beispiel, Vorbild oder Illustration zu dienen. Jeder Aspekt bzw. jede Ausgestaltung, der bzw. die hierin als „Beispiel“ oder „beispielhaft“ beschrieben wird, ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Ausgestaltungen auszulegen. Vielmehr soll die Verwendung der Wörter „Beispiel“ oder „beispielhaft“ dazu dienen, Konzepte auf konkrete Weise darzustellen. Wie in dieser Anwendung verwendet, soll der Begriff „oder“ ein inklusives „oder“ und nicht ein exklusives „oder“ bedeuten. Das heißt, sofern nicht anders angegeben oder aus dem Zusammenhang hervorgeht, soll „X schließt A oder B ein“ eine der natürlichen inklusiven Kombinationen bedeuten. Das heißt, wenn X A einschließt; X B einschließt oder X sowohl A als auch B einschließt, dann ist „X schließt A oder B ein“ unter einem der vorgenannten Fälle erfüllt. Darüber hinaus sind die Artikel „ein“, „eine“, „einer“ und „eines“, wie sie in dieser Anmeldung verwendet werden, und die beigefügten Ansprüche im Allgemeinen so auszulegen, dass sie „ein/eine/einer/eines oder mehrere“ bedeuten, sofern nicht anders angegeben oder aus dem Zusammenhang ersichtlich ist, dass sie auf eine singuläre Form gerichtet sind. Darüber hinaus ist die Verwendung der Begriffe „eine Ausführungsform“ bzw. „eine Implementierung“ durchweg nicht dazu gedacht, die gleiche Ausführungsform oder Implementierung zu bedeuten, es sei denn, sie wird als solche beschrieben. Des Weiteren sind die hierin verwendeten Begriffe „erste“, „zweite“, „dritte“, „vierte“ usw. als Kennzeichnungen zur Unterscheidung zwischen verschiedenen Elementen gedacht und haben aufgrund ihrer numerischen Bezeichnung nicht unbedingt eine ordinale Bedeutung.
  • Die hierin beschriebenen Verfahren und Prozesse können in von einem oder mehreren Allzweck- und/oder Spezialcomputern/-prozessoren ausgeführten Software-Code-Modulen ausgestaltet und teilweise oder vollständig automatisiert sein. Das Wort „Modul“ kann sich auf Logik beziehen, die in Hardware und/oder Firmware ausgeführt ist, oder auf eine Sammlung von Softwareanweisungen, die möglicherweise Ein- und Ausstiegspunkte aufweisen und in einer Programmiersprache geschrieben sind, wie z. B. C oder C++. Ein Softwaremodul kann kompiliert und in ein ausführbares Programm eingebunden, in einer dynamisch verknüpften Bibliothek installiert oder in einer interpretierten Programmiersprache wie z. B. BASIC, Perl oder Python geschrieben werden. Es wird darauf hingewiesen, dass Softwaremodule von anderen Modulen oder von sich selbst aufgerufen werden können und/oder als Reaktion auf erkannte Ereignisse oder Unterbrechungen aufgerufen werden können. Softwareanweisungen können in Firmware eingebettet sein, wie z. B. in einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM). Die Softwareanweisungen können auf jeder Art von computerlesbaren Datenträgern (z.B. einem nicht vorübergehenden computerlesbaren Datenträger) oder anderen Computerspeichermedien oder einer Zusammenstellung von Datenträgern gespeichert werden. „Modul“ kann sich ferner auf eine oder mehrere Vorrichtungen, Komponenten, Systeme oder Subsysteme beziehen, die konzeptionell relevante Funktionen implementieren können. Es wird ferner darauf hingewiesen, dass Hardwaremodule aus verbundenen logischen Einheiten, wie Gates und Flip-Flops, und/oder aus programmierbaren Einheiten, wie programmierbaren Gate-Arrays, anwendungsspezifischen integrierten Schaltungen und/oder Prozessoren, bestehen können. Die hierin beschriebenen Module werden vorzugsweise als Softwaremodule implementiert, können aber auch in Hardware und/oder Firmware dargestellt werden. Obwohl in einigen Ausführungsformen ein Modul separat kompiliert werden kann, kann ein Modul darüber hinaus in anderen Ausführungsformen eine Teilmenge von Anweisungen eines separat kompilierten Programms darstellen und keine Schnittstelle für andere logische Programmeinheiten zur Verfügung haben.

Claims (24)

  1. Vorrichtung, umfassend: ein Speicherarray, umfassend: ein erstes Set Solid-State-Laufwerke, wobei jedes Solid-State-Laufwerk des ersten Sets Solid-State-Laufwerke einen ersten Datendurchsatz aufweist, und ein erstes Set unterteilter Festplattenlaufwerke, wobei ein zweiter Datendurchsatz des ersten Sets unterteilter Festplattenlaufwerke sich innerhalb eines Schwellenwerts des ersten Datendurchsatzes befindet, und eine Verarbeitungsvorrichtung, die eingerichtet ist, um: eine Zugriffsanforderung zum Schreiben erster Daten auf das Speicherarray zu empfangen; eine Lesezugriffsfrequenz der ersten Daten zu bestimmen; eine Schreibzugriffsfrequenz der ersten Daten zu bestimmen, und die ersten Daten in das erste Set Solid-State-Laufwerke oder das erste Set Festplattenlaufwerke zu schreiben, basierend auf der Lesezugriffsfrequenz und der Schreibzugriffsfrequenz.
  2. Vorrichtung gemäß Anspruch 1, wobei die Verarbeitungsvorrichtung eingerichtet ist, um die ersten Daten zu schreiben durch: Schreiben der ersten Daten in das erste Set Solid-State-Laufwerke als Reaktion auf das bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff nicht überschreitet.
  3. Vorrichtung gemäß Anspruch 1, wobei die Verarbeitungsvorrichtung eingerichtet ist, um die ersten Daten zu schreiben durch: Schreiben der ersten Daten in das erste Set Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff nicht überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff überschreitet.
  4. Vorrichtung gemäß Anspruch 1, wobei die Verarbeitungsvorrichtung eingerichtet ist, um die ersten Daten zu schreiben durch: Schreiben der ersten Daten in das erste Set Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff nicht überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff nicht überschreitet.
  5. Vorrichtung gemäß Anspruch 1, wobei die Verarbeitungsvorrichtung eingerichtet ist, um die ersten Daten zu schreiben durch: Bestimmen einer ersten Leistungskennzahl für das erste Set Solid-State-Laufwerke und einer zweiten Leistungskennzahl für das erste Set unterteilter Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff überschreitet.
  6. Vorrichtung gemäß Anspruch 5, wobei die Verarbeitungsvorrichtung ferner eingerichtet ist, um die ersten Daten zu schreiben durch: Schreiben der ersten Daten in das erste Set Solid-State-Laufwerke als Reaktion auf das Bestimmen, dass die erste Leistungskennzahl kleiner als die zweite Leistungskennzahl ist.
  7. Vorrichtung gemäß Anspruch 5, wobei die Verarbeitungsvorrichtung ferner eingerichtet ist, um die ersten Daten zu schreiben durch: Schreiben der ersten Daten in das erste Set unterteilter Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die erste Leistungskennzahl nicht kleiner als die zweite Leistungskennzahl ist.
  8. Vorrichtung gemäß Anspruch 5, wobei: die erste Leistungskennzahl auf einer ersten Direktzugriffsleistung und einer ersten sequenziellen Zugriffsleistung des ersten Sets Solid-State-Laufwerke basiert, und die zweite Leistungskennzahl auf einer zweiten Direktzugriffsleistung und einer zweiten sequenziellen Zugriffsleistung des ersten Sets der unterteilten Festplattenlaufwerke basiert.
  9. Vorrichtung gemäß Anspruch 1, wobei die Verarbeitungseinrichtung ferner eingerichtet ist, um: eine Anzahl von Festplattenlaufwerken im ersten Set Festplattenlaufwerke basierend auf dem ersten Datendurchsatz zu bestimmen.
  10. Vorrichtung gemäß Anspruch 1, wobei das erste Set unterteilter Festplattenlaufwerke in einer Konfiguration eines redundanten Arrays von unabhängigen Festplatten (RAID) eingerichtet sind.
  11. Verfahren, umfassend: Empfangen einer Zugriffsanforderung zum Schreiben erster Daten in ein Speicherarray, wobei das Speicherarray umfasst: ein erstes Set Solid-State-Laufwerke, wobei jedes Solid-State-Laufwerk des ersten Sets Solid-State-Laufwerke einen ersten Datendurchsatz aufweist, ein erstes Set unterteilter Festplattenlaufwerke, wobei ein zweiter Datendurchsatz des ersten Sets unterteilter Festplattenlaufwerke sich innerhalb eines Schwellenwerts des ersten Datendurchsatzes befindet, und Bestimmen einer Lesezugriffsfrequenz der ersten Daten; Bestimmen einer Schreibzugriffsfrequenz der ersten Daten und Schreiben der ersten Daten in das erste Set Solid-State-Laufwerke oder das erste Set unterteilter Festplattenlaufwerke, basierend auf der Lesezugriffsfrequenz und der Schreibzugriffsfrequenz.
  12. Verfahren gemäß Anspruch 11, wobei das Schreiben der ersten Daten umfasst: Schreiben der ersten Daten in das erste Set Solid-State-Laufwerke als Reaktion auf das bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff nicht überschreitet.
  13. Verfahren gemäß Anspruch 11, wobei das Schreiben der ersten Daten umfasst: Schreiben der ersten Daten in das erste Set Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff nicht überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff überschreitet.
  14. Verfahren gemäß Anspruch 11, wobei das Schreiben der ersten Daten umfasst: Schreiben der ersten Daten in das erste Set Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff nicht überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff nicht überschreitet.
  15. Verfahren gemäß Anspruch 11, wobei das Schreiben der ersten Daten umfasst: Bestimmen einer ersten Leistungskennzahl für das erste Set Solid-State-Laufwerke und einer zweiten Leistungskennzahl für das erste Set unterteilter Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff überschreitet.
  16. Verfahren gemäß Anspruch 15, wobei das Schreiben der ersten Daten ferner umfasst: Schreiben der ersten Daten in das erste Set Solid-State-Laufwerke als Reaktion auf das Bestimmen, dass die erste Leistungskennzahl kleiner als die zweite Leistungskennzahl ist.
  17. Verfahren gemäß Anspruch 15, wobei das Schreiben der ersten Daten ferner umfasst: Schreiben der ersten Daten in das erste Set unterteilter Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die erste Leistungskennzahl nicht kleiner als die zweite Leistungskennzahl ist.
  18. Verfahren gemäß Anspruch 15, wobei: die erste Leistungskennzahl auf einer ersten Direktzugriffsleistung und einer ersten sequenziellen Zugriffsleistung des ersten Sets Solid-State-Laufwerke basiert, und die zweite Leistungskennzahl auf einer zweiten Direktzugriffsleistung und einer zweiten sequenziellen Zugriffsleistung des ersten Sets der unterteilten Festplattenlaufwerke basiert.
  19. Verfahren gemäß Anspruch 11, ferner umfassend: Bestimmen einer Anzahl von Festplattenlaufwerken im ersten Set Festplattenlaufwerke basierend auf dem ersten Datendurchsatz.
  20. Vorrichtung, umfassend: Mittel zum Empfangen einer Zugriffsanforderung zum Schreiben erster Daten in ein Speicherarray, wobei das Speicherarray umfasst: ein erstes Set Solid-State-Laufwerke, wobei jedes Solid-State-Laufwerk des ersten Sets Solid-State-Laufwerke einen ersten Datendurchsatz aufweist, und ein erstes Set unterteilter Festplattenlaufwerke, wobei ein zweiter Datendurchsatz des ersten Sets unterteilter Festplattenlaufwerke sich innerhalb eines Schwellenwerts des ersten Datendurchsatzes befindet, Mittel zum Bestimmen einer Lesezugriffsfrequenz der ersten Daten; Mittel zum Bestimmen einer Schreibzugriffsfrequenz der ersten Daten und Mittel zum Schreiben der ersten Daten in das erste Set Solid-State-Laufwerke oder das erste Set unterteilter Festplattenlaufwerke, basierend auf der Lesezugriffsfrequenz und der Schreibzugriffsfrequenz.
  21. Vorrichtung gemäß Anspruch 20, ferner umfassend: Mittel zum Schreiben der ersten Daten in das erste Set Solid-State-Laufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff nicht überschreitet.
  22. Vorrichtung gemäß Anspruch 20, ferner umfassend: Mittel zum Schreiben der ersten Daten in das erste Set Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff nicht überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff überschreitet.
  23. Vorrichtung gemäß Anspruch 20, ferner umfassend: Mittel zum Schreiben der ersten Daten in das erste Set Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff nicht überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff nicht überschreitet.
  24. Vorrichtung gemäß Anspruch 20, ferner umfassend: Mittel zum Bestimmen einer ersten Leistungskennzahl für das erste Set Solid-State-Laufwerke und einer zweiten Leistungskennzahl für das erste Set unterteilter Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die Lesezugriffsfrequenz einen Schwellenwert für den Lesezugriff überschreitet und dass die Schreibzugriffsfrequenz einen Schwellenwert für den Schreibzugriff überschreitet. Mittel zum Schreiben der ersten Daten in das erste Set Solid-State-Laufwerke als Reaktion auf das Bestimmen, dass die erste Leistungskennzahl kleiner als die zweite Leistungskennzahl ist, und Mittel zum Schreiben der ersten Daten in das erste Set unterteilter Festplattenlaufwerke als Reaktion auf das Bestimmen, dass die erste Leistungskennzahl nicht kleiner als die zweite Leistungskennzahl ist.
DE112018002500.4T 2017-08-11 2018-06-20 Speicherarray für Hybriddaten Pending DE112018002500T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/675,018 US10572407B2 (en) 2017-08-11 2017-08-11 Hybrid data storage array
US15/675,018 2017-08-11
PCT/US2018/038623 WO2019032197A1 (en) 2017-08-11 2018-06-20 HYBRID DATA STORAGE MATRIX

Publications (1)

Publication Number Publication Date
DE112018002500T5 true DE112018002500T5 (de) 2020-03-19

Family

ID=62875349

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018002500.4T Pending DE112018002500T5 (de) 2017-08-11 2018-06-20 Speicherarray für Hybriddaten

Country Status (4)

Country Link
US (1) US10572407B2 (de)
CN (1) CN110770691B (de)
DE (1) DE112018002500T5 (de)
WO (1) WO2019032197A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124269B (zh) * 2018-10-31 2023-10-27 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机可读存储介质
CN111176557B (zh) * 2019-11-13 2022-08-02 中国科学院国家天文台 数据读取、存储方法和数据读取、存储装置
CN111722797B (zh) * 2020-05-18 2021-06-29 西安交通大学 面向ssd与ha-smr混合存储系统数据管理方法、存储介质及设备
RU2757659C1 (ru) * 2020-06-16 2021-10-19 Александр Георгиевич Носков Накопитель магнитный с разделёнными областями
US11853605B2 (en) * 2021-09-17 2023-12-26 Micron Technology, Inc. Database persistence
CN116027990B (zh) * 2023-03-29 2023-07-14 苏州浪潮智能科技有限公司 一种raid卡及其数据访问方法、系统及存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179219A1 (en) * 2004-04-05 2011-07-21 Super Talent Electronics, Inc. Hybrid storage device
CN101201800B (zh) * 2007-12-21 2010-06-09 福建星网锐捷网络有限公司 数据处理方法和装置
US8103825B2 (en) * 2008-09-30 2012-01-24 Netapp, Inc. System and method for providing performance-enhanced rebuild of a solid-state drive (SSD) in a solid-state drive hard disk drive (SSD HDD) redundant array of inexpensive disks 1 (RAID 1) pair
US8725946B2 (en) * 2009-03-23 2014-05-13 Ocz Storage Solutions, Inc. Mass storage system and method of using hard disk, solid-state media, PCIe edge connector, and raid controller
CN102576293B (zh) * 2009-09-08 2015-08-26 国际商业机器公司 固态存储设备和分层存储系统中的数据管理
US8438334B2 (en) * 2009-12-22 2013-05-07 International Business Machines Corporation Hybrid storage subsystem with mixed placement of file contents
US8555022B1 (en) 2010-01-06 2013-10-08 Netapp, Inc. Assimilation of foreign LUNS into a network storage system
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
EP2671160A2 (de) 2011-02-01 2013-12-11 Drobo, Inc. System, vorrichtung und verfahren zur unterstützung einer redundanzspeicherung auf basis asymmetrischer blöcke
EP2791774A1 (de) * 2012-02-08 2014-10-22 Hitachi, Ltd. Speichervorrichtung mit mehreren nichtflüchtigen halbleiterspeichereinheiten sowie steuerungsverfahren dafür zur ablage heisser daten in speichereinheiten mit längerer restlebensdauer sowie kalter daten in speichereinheiten mit kürzerer restlebensdauer
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
US9639457B1 (en) * 2012-12-20 2017-05-02 Datadirect Networks, Inc. Data storage system and method for data migration between high-performance computing architectures and data storage devices using storage controller with distributed XOR capability
US20160077747A1 (en) * 2014-09-11 2016-03-17 Dell Products, Lp Efficient combination of storage devices for maintaining metadata
US9830092B2 (en) * 2015-02-20 2017-11-28 Netapp, Inc. Solid state device parity caching in a hybrid storage array

Also Published As

Publication number Publication date
US10572407B2 (en) 2020-02-25
US20190050353A1 (en) 2019-02-14
CN110770691A (zh) 2020-02-07
CN110770691B (zh) 2023-05-16
WO2019032197A1 (en) 2019-02-14

Similar Documents

Publication Publication Date Title
DE112018002500T5 (de) Speicherarray für Hybriddaten
DE102010030748A1 (de) Bitfehlerschwelle und Umabbildung einer Speicheranordnung
DE102018202497A1 (de) Technologien für optimiertes Maschinenlerntraining
DE112014004761T5 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112013003255T5 (de) Managementmechanismus für fehlerhafte Blöcke
DE102020112531A1 (de) Operationelle metrische Berechnung für Arbeitsbelastungstyp
DE102019103114A1 (de) Speichersteuereinrichtung und Anwendungsprozessor für eine gesteuerte Auslastung und Leistung einer Eingabe/Ausgabe-Vorrichtung und Verfahren zur Betätigung der Speichersteuereinrichtung
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE112019003288T5 (de) Verwenden eines moduls mit maschinellem lernen, um zu ermitteln, wann eine fehlerprüfung eines speicherelements durchzuführen ist
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE112016002631T5 (de) Speicherfunktionszustandsüberwachung
DE112021002268T5 (de) Neuronales Regressionsnetzwerk zum Identifizieren von Schwellenspannungen, die beim Lesen von Flash-Speichervorrichtungen zu verwenden sind
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE112019005391T5 (de) Optimierte datenorganisation für neuronale netze
DE102020124761A1 (de) Speicher-Controller und Speicher-Vorrichtung mit demselben und Betriebsverfahren für denselben
DE102019102861A1 (de) Verfahren und Vorrichtung zur Abschätzung der Abnutzung eines nicht-flüchtigen Informationsspeichers
DE112021002290T5 (de) Partitionierbares neuronales netz für festkörperlaufwerke
DE112020005695T5 (de) Speichercontroller für solid-state-speichereinheiten
DE102021108827A1 (de) Reihenschlagerkennung und - vermeidung
DE112020005227T5 (de) Speicherzustandsüberwachung für differenziertedatenwiederherstellungskonfigurationen
DE102021127522A1 (de) Verwaltung der arbeitsbelastung anhand eines trainierten modells
DE102022121773A1 (de) In-memory-assoziativverarbeitungssystem
DE112016002305T5 (de) Reduktion der Schreibverstärkung in einem Objektspeicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0012020000

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE