-
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.
wobei P
s,i und P
r,i der sequenzielle Durchsatz und der Direktdurchsatz (Input/Output Operations (IOPS)) der Leistungsstufe für den jeweiligen Stripe i sein können. P
s,Max and P
r,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.
β
lm, l = 1,; m = 1,2,3, können Gewichtungskoeffizienten (z. B. Gewichte) für die Parameter der Gleichungen (2) und (3) sein. R
j(t) kann die Reaktionszeit eines Laufwerks auf externe Benutzeranfragen sein (z. B. die Reaktionszeit auf einen Zugriffsbefehl oder eine Anforderung zum Lesen von Daten). R
lf kann die Referenzreaktionszeit bezogen auf eine QoS sein (z. B. die Reaktionszeit, die eine QoS erfüllen kann). C
j(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. I
lf,j kann der Lastreferenzwert sein. I
j(t) kann die aktuelle Last sein (Kombination aus sequenziellen und Direktzugriffen). P
S,j und P
R,j können die durchschnittliche sequenzielle und Direktleistung für die Festplattenlaufwerke bzw. Solid-State-Laufwerke in einem Hybrid-Sub-Array j sein. P
s,Max,j und P
r,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.
-
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.