DE112013004250B4 - Vorrichtung, Verfahren und Computerprogrammprodukt für adaptive Persistenz - Google Patents

Vorrichtung, Verfahren und Computerprogrammprodukt für adaptive Persistenz Download PDF

Info

Publication number
DE112013004250B4
DE112013004250B4 DE112013004250.9T DE112013004250T DE112013004250B4 DE 112013004250 B4 DE112013004250 B4 DE 112013004250B4 DE 112013004250 T DE112013004250 T DE 112013004250T DE 112013004250 B4 DE112013004250 B4 DE 112013004250B4
Authority
DE
Germany
Prior art keywords
cache
data
persistence
request
storage
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.)
Active
Application number
DE112013004250.9T
Other languages
English (en)
Other versions
DE112013004250T5 (de
Inventor
Vikram Joshi
Yang Luan
Michael F. Brown
David Flynn
Brent Lim Tze Hao
Jerene Zhe Yang
Prashanth Radhakrishnan
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.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
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 SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE112013004250T5 publication Critical patent/DE112013004250T5/de
Application granted granted Critical
Publication of DE112013004250B4 publication Critical patent/DE112013004250B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Verfahren, umfassendAuswählen jeweiliger Grade der Persistenz für Eingabe/Ausgabe, (E/A)-Anforderungen (116), die unter Verwendung eines Speichersystems versorgt werden, das einen E/A-Stapel (117) und mehrere Speicherbetriebsmittel (240A, 240B-N) umfasst, wobei die Speicherbetriebsmittel persistente primäre Speicherbetriebsmittel (204B-N), auf die über den E/A-Stapel (117) zugegriffen wird, und ein Cache-Speicherbetriebsmittel (240A) umfassen, auf das außerhalb des E/A-Stapels (117) zugegriffen wird, wobei die Grade der Persistenz aus mehreren Persistenzgraden (739) ausgewählt werden, wobei ein erster der Persistenzgrade einem vergänglichen Cache-Speicherungsmodus entspricht, der in Reaktion darauf, dass eine E/A-Anforderung Daten betrifft, die nur für eine begrenzte Zeit behalten werden müssen, ausgewählt wird; undVersorgen der E/A-Anforderungen unter Verwendung der Speicherbetriebsmittel (240A, 240B-N) gemäß dem für die E/A-Anforderungen (116) ausgewählten Grad der Persistenz, wobei das Versorgen einer Schreib-E/A-Anforderung, die den ersten Persistenzgrad aufweist, umfasst:Schreiben von Daten in das Cache-Speicherbetriebsmittel (240A) ohne die Daten in eines der primären Speicherbetriebsmittel (240B N) zu schreiben, wobei das Schreiben der Daten in einer schneller-Pfad-E/A-Operation (782) implementiert ist, die die außerhalb des E/A-Stapels (117) und ohne Beteiligung von primären Speicherbetriebsmitteln (240B N) stattfindet.

Description

  • TECHNISCHES GEBIET
  • Die Offenbarung betrifft Systeme und Verfahren für adaptive Persistenz und in mehreren Ausführungsformen Systeme und Verfahren zum Verwalten von in einem vergänglichen Cache-Modus Cache-gespeicherten Daten.
  • HINTERGRUND
  • Anforderungen von Eingabe/Ausgabe (E/A) können verschiedene Datenpersistenzbedürfnisse aufweisen. Zum Beispiel betreffen bestimmte Schreibanforderungen Daten, die vor Datenverlust oder -verfälschung gesichert werden müssen. Andere Schreibanforderungen können Daten betreffen, die nicht für lange Zeiträume bewahrt werden müssen und/oder von denen erwartet wird, dass sie beim Neustart und/oder Neubooten verloren werden. Ein Speichersystem kann alle Anforderungen gleich behandeln, wodurch die E/A-Leistungsfähigkeit verringert werden kann.
  • US 2010/0274962 A1 betrifft die Implementierung von Caching-Strategien in einer externen nichtflüchtigen Speichervorrichtung. US 2011/0119228 A1 betrifft ein Verfahren zur Implementierung von selektivem Dateisystem-Caching. US 2012/0210066 A1 betrifft einen Cache mit mehreren Ebenen.
  • KURZFASSUNG
  • Bereitgestellt werden ein Verfahren, ein Computerprogrammprodukt und eine Vorrichtung mit den Merkmalen der unabhängigen Ansprüche; abhängige Ansprüche betreffen bevorzugte Ausführungsformen.
  • Es werden hier Ausführungsformen eines Verfahrens für adaptive Persistenz offenbart. Die offenbarten Verfahren können eine oder mehrere maschinenausführbare Operationen und/oder Schritte umfassen. Die offenbarten Operationen und/oder Schritte können als Programmcode realisiert werden, der auf einem computerlesbaren Speichermedium gespeichert wird. Hier offenbarte Ausführungsformen der Verfahren können dementsprechend als ein Computerprogrammprodukt realisiert werden, das ein computerlesbares Speichermedium umfasst, das computerbenutzbaren Programmcode speichert, der ausführbar ist, um eine oder mehrere Verfahrensoperationen und/oder Schritte auszuführen.
  • Bei bestimmten Ausführungsformen umfasst das offenbarte Verfahren Identifizieren mehrerer E/A-Anforderungen, Auswählen jeweiliger Grade der Persistenz für die E/A-Anforderungen auf der Basis einer oder mehrerer Eigenschaften der E/A-Anforderungen und Versorgen der E/A-Anforderungen unter Verwendung eines oder mehrerer Speicherbetriebsmittel gemäß dem für die E/A-Anforderungen ausgewählten Grad der Persistenz. Das Identifizieren der E/A-Anforderung kann Überwachen von E/A-Anforderungen in einem Speicherstapel umfassen.
  • Der Grad der Persistenz kann einem oder mehreren Speicherbetriebsmitteln zur Verwendung beim Versorgen von E/A-Anforderungen mit dem jeweiligen Grad der Persistenz, einer Konfiguration eines oder mehrerer zum Versorgen von E/A-Anforderungen verwendeter Speicherbetriebsmittel oder dergleichen entsprechen. Ein oder mehrere der Grade der Persistenz können konfiguriert werden, um einen Speichermodus zu spezifizieren. Ein Persistenzgrad kann redundante Speicherung auf zwei oder mehr Speicherbetriebsmitteln spezifizieren, und das Verfahren kann ferner Versorgen von E/A-Anforderungen, die den einen Persistenzgrad aufweisen, unter Verwendung der zwei oder mehr Speicherbetriebsmittel umfassen.
  • Bei bestimmten Ausführungsformen umfasst das Verfahren Auswählen eines ersten Persistenzgrads für eine erste E/A-Anforderung auf der Basis einer der ersten E/A-Anforderung zugeordneten Dateikennung und/oder einer der ersten E/A-Anforderung zugeordneten Anwendung. Einer der Persistenzgrade kann einem vergänglichen Cache-Speicherungsmodus entsprechen und das Verfahren kann ferner Speichern von Daten von E/A-Anforderungen mit dem einen Persistenzgrad in einem Cache ohne Speicherung der Daten auf einem primären Speicherbetriebsmittel umfassen.
  • Es werden hier Ausführungsformen eines Verfahrens offenbart, umfassend: Empfangen einer Anforderung von Eingabe/Ausgabe (E/A), die von einem Speicher-Client stammt, Bestimmen eines von mehreren Persistenzgraden für die E/A-Anforderung auf der Basis einer oder mehrerer Eigenschaften der E/A-Anforderung, wobei jeder der Persistenzgrade eines oder mehrere eines zum Versorgen der E/A-Anforderung verwendeten Speicherbetriebsmittels, einer Konfiguration des Speicherbetriebsmittels und eines Speichermodus spezifiziert, und/oder Versorgen der E/A-Anforderung gemäß dem ausgewählten Persistenzgrad. Ein erster der Persistenzgrade kann einen vergänglichen Cache-Speicherungsmodus spezifizieren, und ein zweiter der Persistenzgrade spezifiziert einen Hindurchschreib-Cache-Speicherungsmodus. Zwei oder mehr der Persistenzgrade unterscheiden sich mit Bezug auf zum Versorgen der E/A-Anforderung verwendete Speicherbetriebsmittel, Speicherkonfiguration und/oder Cache-Speicherungsmodus.
  • Ein erster der Persistenzgrade kann einen vergänglichen Cache-Modus spezifizieren, und das Verfahren kann ferner Bestätigen des Abschlusses von Schreib-E/A-Anforderungen des ersten Persistenzgrads als Reaktion auf Schreiben von Daten der Schreib-E/A-Anforderungen in ein Cache-Betriebsmittel und ohne Schreiben von Daten der Schreib-E/A-Anforderungen in primäre Speicherung umfassen. Bei bestimmten Ausführungsformen spezifiziert ein erster der Persistenzgrade eine erste Fehlerkorrekturcode-Codierung und ein zweiter der Persistenzgrade spezifiziert eine zweite, verschiedene Fehlerkorrekturcode-Codierung.
  • Das Verfahren kann ferner Bestimmen eines Persistenzgrads für eine E/A-Anforderung auf der Basis einer Quellenkennung der E/A-Anforderung und/oder einer Dateikennung der E/A-Anforderung und/oder einer der E/A-Anforderung zugeordneten Anwendung und/oder eines Parameters der E/A-Anforderung umfassen.
  • Es werden hier Ausführungsformen einer Vorrichtung offenbart, umfassend: ein Persistenzgradmodul, ausgelegt zum Wählen eines von mehreren adaptiven Persistenzgraden für jede von mehreren Speicheranforderungen auf der Basis von Eigenschaften der Speicheranforderungen, wobei der für eine Speicheranforderung gewählte adaptive Persistenzgrad ein Speicherbetriebsmittel und/oder eine Konfiguration des Speicherbetriebsmittels und/oder einen Speichermodus zum Versorgen der Speicheranforderung bestimmt, ein Schnittstellenmodul, ausgelegt zum Bilden einer Schnittstelle mit einem oder mehreren Speicherbetriebsmitteln und ein Speicheranforderung-Ausführungsmodul, ausgelegt zum Versorgen der Speicheranforderungen gemäß den adaptiven Persistenzgraden, die den Speicheranforderungen zugewiesen werden, durch Verwendung des Schnittstellenmoduls. Das Persistenzgradmodul kann ausgelegt sein zum Wählen eines adaptiven Persistenzgrads für eine Speicheranforderung auf der Basis einer Dateikennung der Speicheranforderung und/oder einer der Speicheranforderung zugeordneten Anwendung und/oder eines Parameters der Speicheranforderung und/oder eines Steuerparameters für Eingabe/Ausgabe (EA). Das Speicheranforderungs-Ausführungsmodul kann ausgelegt sein zum Cache-Speichern von Daten einer Speicheranforderung mit einem vergänglichen adaptiven Persistenzgrad in einem Niemals-Schreiben-Cache-Modus. Ein erster der adaptiven Persistenzgrade kann Speichern von Daten in einer ersten RAID-Konfiguration umfassen, und ein zweiter der adaptiven Persistenzgrade umfasst Speichern von Daten in einer zweiten, verschiedenen RAID-Konfiguration.
  • Es werden hier Ausführungsformen eines Verfahrens für adaptive Persistenz offenbart. Die offenbarten Verfahren können eine oder mehrere maschinenausführbare Operationen und/oder Schritte umfassen. Die offenbarten Operationen und/oder Schritte können als Programmcode realisiert werden, der auf einem computerlesbaren Speichermedium gespeichert wird. Hier offenbarte Ausführungsformen der Verfahren können dementsprechend als ein Computerprogrammprodukt realisiert werden, das ein computerlesbares Speichermedium umfasst, das computerbenutzbaren Programmcode speichert, der ausführbar ist, um eine oder mehrere Verfahrensoperationen und/oder Schritte auszuführen.
  • Bei bestimmten Ausführungsformen umfasst das offenbarte Verfahren Identifizieren einer an einen Backing-Store gerichteten E/A-Anforderung; Auswählen eines vergänglichen Cache-Modus für die identifizierte E/A-Anforderung aus mehreren Cache-Modi, wobei der vergängliche Cache-Modus Speichern von Daten in einem Cache ohne Speichern der Daten in dem Backing-Store umfasst; und/oder Cache-Speichern der Daten der identifizierten E/A-Anforderung im vergänglichen Cache-Modus. Das Verfahren kann ferner Bestätigen des Abschlusses der identifizierten E/A-Anforderung als Reaktion auf das Speichern der Daten der identifizierten E/A-Anforderung im Cache und ohne Speichern der Daten in dem Backing-Store umfassen.
  • Der vergängliche Cache-Modus kann als Reaktion auf die Bestimmung ausgewählt werden, dass die Daten der identifizierten E/A-Anforderung zwischen Neustartoperationen nicht bewahrt werden müssen. Das Verfahren kann ferner Auswählen des vergänglichen Cache-Modus aus den mehreren Cache-Modi auf der Basis einer Quellenkennung der identifizierten E/A-Anforderung und/oder einer Dateikennung der identifizierten E/A-Anforderung und/oder einer der identifizierten E/A-Anforderung zugeordneten Anwendung umfassen.
  • Bei bestimmten Ausführungsformen umfasst das Verfahren Ausräumen von vergänglichen Cache-Daten als Reaktion auf Migration auf einen neuen Virtuellmaschinenhost, wobei das Ausräumen der vergänglichen Cache-Daten Speichern von in dem vergänglichen Cache-Modus Cache-gespeicherten Daten auf dem Backing-Store umfasst. Das Verfahren kann ferner Behalten von Cache-Metadaten bezüglich im vergänglichen Cache-Modus Cache-gespeicherten Daten in einer virtuellen Maschine als Reaktion darauf, dass die virtuelle Maschine von einem ersten Virtuellmaschinenhost zu einem zweiten Virtuellmaschinenhost migriert, und/oder Auffüllen eines Virtuellmaschinencaches in dem zweiten Virtuellmaschinenhost mit in dem vergänglichen Cache-Modus Cache-gespeicherten Daten, die im ersten Virtuellmaschinenhost behalten werden, umfassen.
  • Bei bestimmten Ausführungsformen kann das offenbarte Verfahren Folgendes umfassen: Bestimmen, dass Daten einer Anforderung von Eingabe/Ausgabe (E/A), die an eine primäre Speicherung gerichtet ist, entbehrlich sind, Cache-Speichern der Daten der E/A-Anforderung ausschließlich in Cache-Speicherung und/oder Bestätigen des Abschlusses der E/A-Anforderung als Reaktion auf das Cache-Speichern der Daten der E/A-Anforderung in der Cache-Speicherung. Das Cache-Speichern der Daten der E/A-Anforderung kann Ausführen einer oder mehrerer schneller Pfad-E/A-Operationen umfassen, an denen die primäre Speicherung nicht beteiligt ist.
  • Bei bestimmten Ausführungsformen kann das Verfahren ferner Überwachen von E/A-Anforderungen in einem Speicherstapel umfassen und das Cache-Speichern von Daten der E/A-Anforderung kann Ausführen einer oder mehrerer schneller Pfad-E/A-Operationen außerhalb des Speicherstapels umfassen.
  • Das Bestimmen, dass die E/A-Anforderung entbehrliche Daten betrifft, kann Anwenden von Persistenzgradkriterien auf eine Quellenkennung der E/A-Anforderung umfassen. Die Persistenzgradkriterien können auf Dateiebenenwissen oder auf Anwendungsebenenwissen basieren.
  • Die E/A-Anforderung kann durch eine virtuelle Maschine erzeugt werden, und das Verfahren kann ferner Schieben von Daten der virtuellen Maschine, die ausschließlich in der Cache-Speicherung gespeichert werden, auf einen entfernten Virtuellmaschinenhost als Reaktion darauf, dass die virtuelle Maschine auf den entfernten Virtuellmaschinenhost transferiert wird, umfassen. Bei bestimmten Ausführungsformen umfasst das Verfahren ferner Transferieren von ausschließlich in der Cache-Speicherung gespeicherten Daten zu einem entfernten Virtuellmaschinenhost als Reaktion auf eine Anforderung von einem entfernten Virtuellmaschinenhost und/oder Behalten eines ausschließlich in der Cache-Speicherung gespeicherten Daten zugeordneten Cache-Tag in der Cache-Speicherung als Reaktion auf Migration der virtuellen Maschine zu einem anderen Virtuellmaschinenhost.
  • Das Transferieren der ausschließlich in der Cache-Speicherung gespeicherten Daten zu einem Virtuellmaschinen-Cache des entfernten Virtuellmaschinenhost kann Identifizieren von Daten der virtuellen Maschine, die ausschließlich in der Cache-Speicherung gespeichert werden, auf der Basis einer Virtuellmaschinenkennung eines Cache-Verwaltungssystems der virtuellen Maschine umfassen.
  • Es werden hier Ausführungsformen einer Vorrichtung offenbart, umfassend: einen Agenten, ausgelegt zum Abfangen einer an einen Backing-Store gerichteten E/A-Anforderung, ein Persistenzgradmodul, ausgelegt zum Identifizieren eines von mehreren Cache-Modi für die abgefangene E/A-Anforderung auf der Basis einer oder mehrerer Eigenschaften der abgefangenen E/A-Anforderung und/oder ein Cache-Verwaltungssystem, ausgelegt zum Cache-Speichern der Daten der abgefangenen E/A-Anforderung in einem Cache und gemäß dem identifizierten Cache-Modus, wobei die mehreren Cache-Modi einen vergänglichen Cache-Modus umfassen und wobei das Cache-Speichern von Daten in dem vergänglichen Cache-Modus Schreiben der Daten nur in den Cache und ohne Schreiben der Daten in den Backing-Store umfasst. Das Persistenzgradmodul kann ausgelegt sein zum Identifizieren des Cache-Modus für die abgefangene E/A-Anforderung auf der Basis einer Quellenkennung der abgefangenen E/A-Anforderung und/oder einer Dateikennung der abgefangenen E/A-Anforderung und/oder einer der abgefangenen E/A-Anforderung zugeordneten Anwendung.
  • Bei bestimmten Ausführungsformen ist das Cache-Verwaltungssystem ausgelegt zum Bestätigen des Abschlusses von E/A-Anforderungen, die in dem vergänglichen Cache-Modus Cache-gespeichert werden, als Reaktion auf Schreiben von Daten der entsprechenden E/A-Anforderungen in den Cache und zum Bestätigen des Abschlusses von einem Hindurchschreib-Cache-Modus zugewiesenen E/A-Anforderungen als Reaktion auf Schreiben von Daten der entsprechenden E/A-Anforderungen in den Backing-Store.
  • Ausführungsformen der Vorrichtung können ferner Folgendes umfassen: ein Cache-Retentionsmodul, ausgelegt zum Behalten von Daten einer virtuellen Maschine, die in dem Cache im vergänglichen Cache-Modus in einem ersten Virtuellmaschinenhost zugelassen werden, als Reaktion auf das Bestimmen, dass die virtuelle Maschine zu einem entfernten Virtuellmaschinenhost transferiert wird, und/oder ein Cache-Transfermodul, ausgelegt zum Transferieren der behaltenen Daten der virtuellen Maschine, die in den Cache im vergänglichen Cache-Modus zugelassen sind, zu dem entfernten Virtuellmaschinenhost. Ein Cache-Speicherungsmodul kann ausgelegt sein zum Auffüllen eines Virtuellmaschinen-Cache in einem entfernten Virtuellmaschinenhost mit aus dem ersten Virtuellmaschinenhost transferierten Daten. Bei bestimmten Ausführungsformen kann das Cache-Verwaltungsmodul ausgelegt sein zum Ausräumen von Daten einer virtuellen Maschine, die in dem vergänglichen Cache-Modus Cache-gespeichert werden, in ein oder mehrere primäre Speicherbetriebsmittel als Reaktion auf den Transfer der virtuellen Maschine zu dem entfernten Virtuellmaschinenhost.
  • Figurenliste
  • Die vorliegende Offenbarung umfasst und bezieht sich auf die beigefügten Zeichnungen, die eine konkretere Beschreibung der hier offenbarten Ausführungsformen bereitstellen. Die Offenbarung ist jedoch nicht auf die in den Figuren abgebildeten konkreten Ausführungsformen beschränkt. Die Lehren der Offenbarung können benutzt und/oder an andere Ausführungsformen angepasst werden und/oder Änderungen können an den offenbarten Ausführungsformen vorgenommen werden, ohne vom Schutzumfang der Offenbarung abzuweichen.
    • 1A ist ein Blockschaltbild einer Ausführungsform eines Systems für adaptive Persistenz;
    • 1B ist ein Blockschaltbild einer anderen Ausführungsform eines Systems für adaptive Persistenz;
    • 1C ist ein Flussdiagramm eines bekannten Verfahrens zum Versorgen von E/A-Anforderungen;
    • 2A ist ein Blockschaltbild einer Ausführungsform einer virtuellen Datenverarbeitungsumgebung,
    • 2B ist ein Blockschaltbild einer anderen Ausführungsform einer virtuellen Datenverarbeitungsumgebung;
    • 3 ist ein Blockschaltbild einer Ausführungsform eines Cache;
    • 4 zeigt eine Ausführungsform einer Cache-Tag-Datenstruktur;
    • 5 zeigt eine Ausführungsform von Cache-Abbildungen;
    • 6 zeigt eine Ausführungsform eines Cache-Verwaltungssystems;
    • 7A ist ein Blockschaltbild einer anderen Ausführungsform eines Cache-Verwaltungssystems;
    • 7B zeigt eine Ausführungsform einer Persistenzgrad-Richtlinie;
    • 7C zeigt eine andere Ausführungsform eines Cache-Verwaltungssystems;
    • 8A ist ein Flussdiagramm einer Ausführungsform zum Cache-Speichern von Daten gemäß adaptiven Graden der Persistenz;
    • 8B ist ein Flussdiagramm einer anderen Ausführungsform zum Cache-Speichern von Daten gemäß adaptiven Graden der Persistenz;
    • 9 ist ein Blockschaltbild einer anderen Ausführungsform einer virtuellen Datenverarbeitungsumgebung;
    • 10 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Transferieren von Cache-Daten;
    • 11 ist eine Flussdiagramm einer anderen Ausführungsform eines Verfahrens zum Transferieren von Cache-Daten; und
    • 12 ist ein Flussdiagramm einer anderen Ausführungsform eines Verfahrens zum Transferieren von Cache-Daten.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die hier beschriebenen Ausführungsformen betreffen die Verwaltung von Anforderungen von Dateneingabe/-ausgabe (E/A) und Operationen in verschiedenen Datenverarbeitungsumgebungen, darunter, aber ohne Beschränkung darauf, virtualisierte Datenverarbeitungsumgebungen, Bare-Metal-Datenverarbeitungsumgebungen und dergleichen. Obwohl hier offenbarte konkrete Beispiele und/oder Ausführungsformen virtualisierte Datenverarbeitungsumgebungen betreffen, ist die Offenbarung deshalb in dieser Hinsicht nicht beschränkt.
  • Ein Speichermodul kann ausgelegt sein zum Verwalten von E/A-Operationen für einen oder mehrere Speicher-Clients, zu denen, aber ohne Beschränkung darauf, Betriebssysteme, virtuelle Betriebssysteme, Hypervisors, Dateisysteme, Volumenmanager, Datenbankanwendungen, Benutzeranwendungen oder dergleichen gehören können. Das Speichermodul kann ausgelegt sein zum Versorgen von E/A-Anforderungen für die Speicher-Clients. Das Speichermodul kann ausgelegt sein zum Versorgen von E/A-Anforderungen gemäß einem ausgewählten „Grad der Persistenz“. Im vorliegenden Gebrauch bezieht sich ein „Grad der Persistenz“ oder „Persistenzgrad“ auf eine oder mehrere Kenngrößen und/oder Eigenschaften einer E/A-Anforderung. Der Grad der Persistenz einer Operation kann Folgendes betreffen: Die Speichervorrichtung(en) und/oder Speichermedien zur Verwendung zur Versorgung der E/A-Anforderung (z.B. flüchtiger Speicher oder nichtflüchtige Speichermedien), die Konfiguration der ausgewählten Speichervorrichtung(en) und/oder Medien (z.B. RAID-Niveau (Redundant Array of Inexpensive Disks), JBOD-Konfiguration (Just a Bunch of Disks), Spiegelung oder dergleichen), den Speichermodus und/oder das Format für die E/A-Anforderung (z.B. Hindurchschreib-Cache-Modus, vergänglicher Cache-Modus, ECC-Codierung oder dergleichen) und so weiter. Verschiedene Grade der Persistenz können deshalb Speichern von Daten auf verschiedenen Arten von Speichervorrichtung(en) oder Speichermedien, wie etwa flüchtigem Speicher, nichtflüchtigen Speichermedien (z.B. magnetisch, optisch, Band, Halbleiter oder dergleichen); Speichern von Daten in verschiedenen Speicherkonfigurationen, wie etwa verschiedenen RAID-Ebenen, Spiegelung von Konfigurationen, Paritätskonfigurationen und so weiter; und/oder Speichern von Daten in einem oder mehreren verschiedenen Modi, wie etwa verschiedenen ECC-Codierungen, Verschlüsselungsgraden, Cache-Speicherungsmodi, Atomizität, Verifikation und so weiter umfassen.
  • Das Speichermodul kann ausgelegt sein zum Auswählen eines Grads der Persistenz für E/A-Anforderungen gemäß Eigenschaften der E/A-Anforderungen, darunter, aber ohne Beschränkung darauf, eine explizite Anforderung eines bestimmten Grads der Persistenz, die in der E/A-Anforderung enthalten und/oder dieser zugeordnet ist, eine Anforderung bestimmter Speicherkenngrößen, Kenngrößen und/oder Eigenschaften der E/A-Anforderung, Richtlinie, Profilierung, Tests und Erfahrung und dergleichen. Als Reaktion darauf, dass eine E/A-Anforderung Daten betrifft, die für einen langen Zeitraum verfügbar sein müssen, kann zum Beispiel das Speichermodul einen Grad der Persistenz auswählen, der Speichern der Daten auf einem nichtflüchten Speichermedium in einer RAID- und/oder gespiegelten Konfiguration umfasst. Der ausgewählte Grad der Persistenz kann ferner Cache-Speichern von Daten der E/A-Anforderung in einer Hindurchschreib-Cache-Konfiguration umfassen, so dass Aktualisierungen der Daten zur Primärspeicherung hindurch geschrieben werden. In einem anderen Beispiel kann als Reaktion darauf, dass eine E/A-Anforderung Daten betrifft, die nur für eine begrenzte Zeit behalten werden müssen, das Speichermodul einen Grad der Persistenz auswählen, der Cache-Speichern von Daten der E/A-Anforderung in einem „vergänglichen“ oder „Niemals-Schreiben“-Cache-Modus umfasst. Im vorliegenden Gebrauch bezieht sich ein vergänglicher Cache-Modus auf eine Cache-Konfiguration, bei der Cache-gespeicherte Daten nicht zu einer primären Speicherung hindurchgeschrieben und/oder zurückgeschrieben werden, vergängliche Daten können nur im Cache gespeichert werden. Dementsprechend umfasst Cache-Speichern von Daten in einer vergänglichen Cache-Konfiguration Speichern von Daten im Cache ohne auf primäre Speicherung zuzugreifen (und/oder ohne Schreiben und/oder Kopieren der Daten in den primären Speicher). In der vergänglichen Cache-Konfiguration Cache-gespeicherte Daten können verloren werden, falls oder wenn die Daten aus dem Cache hinausgeworfen werden (z.B. wird der Cache-Client aus- und wiedereingeschaltet, bootet neu oder dergleichen), wenn die Daten nicht zu einem anderen Grad der Persistenz überführt werden, der Cache-Speichern der Daten in einem anderen Cache-Modus umfassen kann, wie etwa einem Hindurchschreib- und/oder Rückschreib-Cache-Modus.
  • 1A ist ein Blockschaltbild einer Ausführungsform eines Systems für adaptive Persistenz. Ein Modul 130 kann in einer Datenverarbeitungsumgebung 110 implementiert sein, die eine Base-Metal-Datenverarbeitungsumgebung oder Datenverarbeitungsvorrichtung umfassen kann, die, aber ohne Beschränkung darauf, eine oder mehrere Datenverarbeitungsvorrichtungen, mehrere Datenverarbeitungsvorrichtungen (z.B. eine Gruppe von Datenverabeitungsvorrichtungen in einem Cluster, Netz oder einer anderen Konfiguration, einem Personal Computer, einem Server-Computer, Blade, Laptop, ein Notebook, ein Smartphone oder dergleichen umfassen kann. Die Datenverarbeitungsumgebung 110 kann eine virtualisierte Datenverarbeitungsumgebung sein, die eine oder mehrere virtuelle Maschinen, virtuelle Desktops (z.B. in einer VDI-Umgebung (Virtual Desktop Infrastructure)), einen virtuellen Computer oder dergleichen umfasst.
  • Die Datenverarbeitungsumgebung 110 kann Verarbeitungsbetriebsmittel 112, flüchtige Speicherbetriebsmittel 113, persistente Speicherbetriebsmittel 114 und/oder eine Kommunikationsschnittstelle 115 umfassen. Die Verarbeitungsbetriebsmittel 112 können ein oder mehrere allgemeine und/oder Spezialverarbeitungselemente und/oder -kerne umfassen. Die Verarbeitungsbetriebsmittel 112 können ausgelegt sein zum Ausführen von aus den persistenten Speicherbetriebsmitteln 114 geladenen Anweisungen. Teile der Module und/oder Verfahren, die hier beschrieben werden, können als auf den persistenten Speicherbetriebsmitteln 114 gespeicherte maschinenlesbare Anweisungen realisiert werden. Die Betriebsmittel 112, 113, 114 und/oder 115 können physische Datenverarbeitungskomponenten umfassen und/oder virtualisierte Datenverarbeitungsbetriebsmittel, die von und/oder durch eine Virtualisierungsumgebung (z.B. einen Hypervisor) bereitgestellt werden.
  • Das Speichermodul 130 kann ein E/A-Anforderungsempfängermodul 132, ein Persistenzgradmodul 134 und ein E/A-Anforderungsausführungsmodul 136 umfassen. Teile des Speichermoduls 130 können an der Datenverarbeitungsumgebung 110 oder in Verbindung mit dieser operieren. Als Alternative oder zusätzlich können Teile des Speichermoduls 130 getrennt von der Datenverarbeitungsumgebung 110 implementiert werden; zum Beispiel können Teile des Speichermoduls 130 unter Verwendung eines Systembusses verbunden werden, wie etwa eines PCI-e-Busses (Peripheral Component Interconnect Express), eines Serial-ATA-Busses (Serial Advanced Technology Attachment), einer USB-Verbindung (Universal Serial Bus), eines IEEE-1394-Busses (Institute of Electrical and Electronics Engineers) (FireWire), eines externen PCI-Busses, eines Infiniband, eines Kommunikationsnetzes 105 oder dergleichen.
  • Das Speichermodul 130 kann kommunikativ mit einem oder mehreren Speicherbetriebsmitteln 140A-N gekoppelt sein. Die Speicherbetriebsmittel 140A-N können lokale Speicherbetriebsmittel umfassen, die über jeweilige Schnittstellenmechanismen 141 zugänglich sind, wie etwa, aber ohne Beschränkung darauf, Busschnittstellen und/oder Protokolle (z.B. ein Systembus, ein lokaler Bus, ein E/A-Bus oder dergleichen). Die Speicherbetriebsmittel 140A-N können ferner ein oder mehrere entfernte netzwerkzugängliche Speicherbetriebsmittel 140C umfassen, wie etwa, aber ohne Beschränkung darauf, ein SAN-Betriebsmittel (Storage Area Network), NAS (Network Attached Storage) oder der gleichen, was über eine Fern-E/A-Schnittstelle und/oder ein Fernprotokoll 141 zugänglich sein kann.
  • Die Speicherbetriebsmittel 140A-N können verschiedene Arten von Speichervorrichtung(en) und/oder Speichermedien in verschiedenen Konfigurationen umfassen. Die Speicherbetriebsmittel 140A-N wären zum Beispiel, aber ohne Beschränkung darauf, flüchtige Speicherbetriebsmittel wie flüchtiger Speicher (DRAM), Prozessor-Cache und dergleichen; nichtflüchtige Speicherbetriebsmittel wie magnetische Festplatten, optische Speichermedien, Halbleiterspeichermedien und dergleichen; Cache-Betriebsmittel; und so weiter. Dementsprechend werden die Speicherbetriebsmittel 140A-N zum Beispiel, aber ohne Beschränkung darauf, Flash-Speicher, Nano-Direktzugriffsspeicher (nano-RAM oder NRAM), drahtgebundener Nanokristallspeicher, auf Siliziumoxid basierender Sub-10-Nanometerprozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), RRAM (resistiver Direktzugriffsspeicher), PMC (Programmable Metallization Cell), CBRAM (Conductive-Bridging RAM), MRAM (Magneto-Resistive RAM), DRAM (dynamischer RAM), PRAM (Phasenänderungs-RAM), magnetische Medien (z.B. eine oder mehrere Festplatten), optische Medien oder dergleichen.
  • Die Speicherbetriebsmittel 140A-N können in verschiedenen Speicherkonfigurationen und/oder -modi konfiguriert sein, wie etwa als eine oder mehrere verschiedene RAID-Ebenen; Spiegelungskonfigurationen; Cache-Speicherungskonfigurationen und/oder -modi; ECC-Codierungen; Paritätskonfigurationen; und dergleichen. Zum Beispiel können ein oder mehrere der Speicherbetriebsmittel 140A-N eine Menge von nichtflüchtigen Speicherelementen (z.B. Festplatten) in einer RAID- und/oder Spiegelungskonfiguration umfassen, während andere Speicherbetriebsmittel 140A-N nichtredundant sein können. Die Speicherbetriebsmittel 140A-N können ausgelegt sein zum Speichern von Daten gemäß verschiedenen Retentionsrichtlinien (z.B. Cache-Speicherungsmodi). Zum Beispiel kann das Speicherbetriebsmittel 140A ausgelegt sein zum Cache-Speichern von Daten für ein anderes primäres Speicherbetriebsmittel 140B. Das Speichermodul 130 kann die Cache-Betriebsmittel dafür konfigurieren, in bestimmten Cache-Speicherungsmodi und/oder -konfigurationen zu arbeiten. Zum Beispiel kann das Speichermodul 130 Daten einer ersten E/A-Anforderung in einer Hindurchschreib-Konfiguration Cache-Speichern (z.B. die Daten in das Cache-Speicherbetriebsmittel 140A und das primäre Speicherbetriebsmittel 140B schreiben) und kann Daten einer zweiten E/A-Anforderung in einem vergänglichen Cache-Modus Cache-Speichern, wobei die Daten nur in dem Cache-Speicherbetriebsmittel 140A gespeichert werden und beim Hinauswerfen (z.B. Neubooten) verloren gehen.
  • Das Speichermodul 130 kann ausgelegt sein zum Versorgen von E/A-Anforderungen 116 von einem oder mehreren Speicher-Clients. Die E/A-Anforderung(en) 116 können im E/A-Anforderungsempfängermodul 132 über eine oder mehrere Schnittstelle(n) 131 des Speichermoduls 130 empfangen werden, die zum Beispiel, aber ohne Beschränkung darauf, einen oder mehrere Treiber, Bibliotheken, Module, Blockvorrichtungsschnittstellen, Schnittstellenerweiterungen (z.B. IOCTL-Schnittstellen (Eingabe-/Ausgabesteuerung)), API (Anwendungsprogrammierschnittstellen), ABI (Anwendungs-Binärschnittstellen), Objektklassen, Fernschnittstellen (z.B. Remote Procedure Call, Simple Object Access Protocol oder dergleichen) und dergleichen umfassen.
  • Das Speichermodul 130 kann ferner ein Persistenzgradmodul 134 umfassen, dass dafür ausgelegt ist, einen Persistenzgrad für die E/A-Anforderung 116 auszuwählen. Wie oben besprochen, kann das Bestimmen des Persistenzgrads, ohne Beschränkung darauf, Folgendes umfassen: Auswählen eines oder mehrerer Speicherbetriebsmittel 140A-N zur Versorgung der E/A-Anforderung 116, Auswählen einer Speicherkonfiguration des einen oder der mehreren ausgewählten Speicherbetriebsmittel 140A-N (z.B. RAID-Ebene, Spiegelung oder dergleichen) und/oder Auswählen eines Speichermodus für die E/A-Anforderung 116 (z.B. Cache-Speicherungsmodus, ECC-Codierung oder dergleichen).
  • Das Persistenzgradmodul 134 kann den Persistenzgrad für E/A-Anforderungen 116 auf der Basis einer Persistenzgradrichtlinie 135 bestimmen. Die Persistenzgradrichtlinie 135 kann Persistenzgradkriterien umfassen, die dafür ausgelegt sind, jeweiligen E/A-Anforderungen 116 Persistenzgrade auf der Basis von Kenngrößen und/oder Eigenschaften der E/A-Anforderungen 116 zuzuweisen, wie zum Beispiel, aber ohne Beschränkung darauf, Dateieigenschaften und/oder -Kenngrößen (z.B. Dateiebenenwissen), wie etwa Dateiname, Pfad, Volumen und/oder eine andere Dateikennung, die der E/A-Anforderung 116 entspricht; Eigenschaften und/oder Kenngrößen der Anwendung und/oder der Speicher-Clients der E/A-Anforderung 116 (z.B. Anwendungsebenenwissen); aus den E/A-Anforderungen 116 Gefolgertes; ein oder mehrere Parameter der E/A-Anforderungen 116; der E/A-Anforderung 116 zugeordnete Parameter (z.B. IOCTL-Informationen); Profilierungsmetadaten bezüglich der E/A-Anforderungen 116; Präferenzen und/oder Konfiguration; Tests und Erfahrung; und so weiter. Zum Beispiel können bei bestimmten Ausführungsformen eine oder mehrere der Schnittstellen 131A und/oder 131B Mechanismen zum Spezifizieren von Persistenzgradkenngrößen für E/A-Anforderungen 116 umfassen. Zum Beispiel kann die E/A-Anforderung 116 Speicherung in einer redundanten Speicherkonfiguration (z.B. einer bestimmten RAID-Ebene und/oder Spiegelungskonfiguration) anfordern. Die E/A-Anforderung 116 kann ferner einen Cache-Speicherungsmodus für die E/A-Anforderung 116 spezifizieren (z.B. einen Hindurchschreib-Cache-Modus spezifizieren). E/A-Anforderungen 116 bezüglich temporärer Daten können einen anderen Persistenzgrad (oder andere Persistenzgradkenngrößen) spezifizieren. Zum Beispiel kann eine E/A-Anforderung 116 bezüglich temporärer Daten angeben, dass Redundanz und/oder Spiegelung nicht erforderlich ist, und kann Cache-Speicherung in einer vorrübergehenden Cache-Konfiguration (wie hier ausführlicher offenbart) erlauben. Als Alternative oder zusätzlich kann das Persistenzgradmodul 134 einen Persistenzgrad auf der Basis von Persistenzgradkriterien bestimmen, die andere nicht explizite Informationen bezüglich der E/A-Anforderung 116 betreffen. Zum Beispiel können Persistenzgradkriterien temporäre Dateien identifizieren, die zwischen Neubootungen nicht behalten werden müssen (z.B. durch Verwendung von Dateiauswahlkriterien wie hier beschrieben). Das Persistenzgradmodul 135 weist E/A-Anforderungen 116 bezüglich solcher temporärer Dateien einem geeigneten Persistenzgrad zu (z.B. Cache-Speicherung von Daten der E/A-Anforderungen 116 in einem vorübergehenden Cache).
  • Das Speichermodul 130 kann ferner ein E/A-Ausführungsmodul 136 umfassen, das dafür ausgelegt ist, E/A-Anforderungen 116 zu versorgen. Das E/A-Anforderungsausführungsmodul 136 kann ausgelegt sein zum Speichern von Daten von E/A-Anforderungen 116 auf einem oder mehreren Speicherbetriebsmitteln 140A-N in einer oder mehreren Speicherkonfigurationen und/oder -modi gemäß den jeweiligen Persistenzgraden der E/A-Anforderungen 116, die durch das Persistenzgradmodul 134 bestimmt werden. Dementsprechend kann das E/A-Anforderungsausführungsmodul 136 ausgelegt sein zum Speichern von Daten auf einem oder mehreren verschiedenen Speicherbetriebsmitteln 140A-N gemäß einer oder mehreren verschiedenen Speicherkonfigurationen und/oder in einem oder mehreren verschiedenen Speichermodi (z.B. Hindurchschreib-Cache, Rückschreib-Cache, vergänglicher Cache oder dergleichen).
  • 1B zeigt eine andere Ausführungsform eines Systems für adaptive Persistenz. Die Ausführungsform von 1B zeigt das Speichermodul 130, das in der Datenverarbeitungsumgebung 110 arbeitet. Wie oben offenbart, kann das Speichermodul 130 dafür ausgelegt sein, E/A-Anforderungen 116 über das E/A-Anforderungsempfängermodul 132 zu empfangen. Die E/A-Anforderungen 116 können durch Speicher-Clients 106A-N ausgegeben werden, wie zum Beispiel, aber ohne Beschränkung darauf, Betriebssystem 106A, Dateisysteme 106B, Datenbanken 106C, Benutzeranwendungen 106D und so weiter. Die Speicher-Clients 106A-N können in der Datenverarbeitungsumgebung 110 arbeiten und/oder können andere Fern-Datenverarbeitungsumgebungen 111 (z.B. Fern-Speicherclient(s) 106E) umfassen und/oder darin arbeiten.
  • Bei bestimmten Ausführungsformen sind ein oder mehrere der Speicher-Clients 106A-N dafür ausgelegt, E/A-Anforderungen 116 direkt über eine oder mehrere Schnittstellen 131A an das Speichermodul 130 auszugeben. Als Alternative oder zusätzlich kann das Speichermodul 130 ausgelegt sein zum Empfangen und/oder Überwachen von E/A-Anforderungen 116 in einem E/A-Stapel 117 der Datenverarbeitungsumgebung 110. Der E/A-Stapel 117 kann einen Speicherstapel oder ein anderes E/A-Subsystem eines Betriebssystems 106A (oder virtuellen Betriebssystems 106A) umfassen. Dementsprechend kann bei bestimmten Ausführungsformen das E/A-Anforderungsempfängermodul 132 einen oder mehrere Agent(en) 133 umfassen, die dafür ausgelegt sind, E/A-Anforderungen 116 im E/A-Stapel 117 zu überwachen. Der Agent bzw. die Agenten 133 wären zum Beispiel, aber ohne Beschränkung darauf, E/A-Treiber, E/A-Filtertreiber, Dateifiltertreiber, Volumenfiltertreiber, Datenträgerfiltertreiber, SCSI-Treiber und/oder -Filter, VLUN-Treiber (virtuelle logische Nummer) oder dergleichen.
  • Das Speichermodul 130 kann ferner eine oder mehrere E/A-Schnittstellen 118A-N umfassen, die dafür ausgelegt sind, mit einem oder mehreren jeweiligen Speicherbetriebsmitteln 140A-N eine Schnittstelle zu bilden und/oder Speicheroperationen darauf auszuführen. Jede der E/A-Schnittstellen 118A-N kann ausgelegt sein zur Bildung einer Schnittstelle mit einem oder mehreren Speicherbetriebsmitteln 140A-N durch Verwendung eines bestimmten Schnittstellenmechanismus 141A-N, wie zum Beispiel, aber ohne Beschränkung darauf, Speicherbetriebsmittelschnittstellen (z.B. Blockvorrichtungsschnittstellen, Speicherebenen, API, Protokolle oder dergleichen), Busprotokollen, Kommunikationsschnittstellenprotokollen, Netzwerkprotokollen und/oder -schnittstellen, Virtualisierungsprotokollen und/oder -schnittstellen oder dergleichen. Zum Beispiel kann eine E/A-Schnittstelle 118B dafür ausgelegt sein, über eine virtuelle E/A-Schnittstelle 141B eine Schnittstelle mit einem virtualisierten Speicherbetriebsmittel 140B zu bilden, und eine E/A-Schnittstelle 118C kann dafür ausgelegt sein, über ein Netzwerk 105 (und/oder eine Kommunikationsschnittstelle 115) auf ein Fern-Speicherbetriebsmittel 140C zuzugreifen.
  • Ein oder mehrere der Speicherbetriebsmittel 140A-N kann ein nichflüchtiges Speichermedium umfassen, wie etwa ein Halbleiter-Speichermedium. Zum Beispiel kann die E/A-Schnittstelle 118A kommunikativ mit dem Halbleiter-Speicherbetriebsmittel 140A gekoppelt sein. Bei bestimmten Ausführungsformen kann deshalb die E/A-Schnittstelle 118A einen oder mehrere Halbeiter-Speichercontroller umfassen und/oder kommunikativ mit ihnen gekoppelt sein, wie es in der US-Patentanmeldung, Lfd.Nr. 11/952,091 , eingereicht am 6.12.2007 mit dem Titel „Apparatus, System, and Method for Managing Data Using a Data Pipeline,“, veröffentlicht als US-Patentanmeldung, Publikation Nr. 2008/0141043 am 12.6.2008, worauf hiermit ausdrücklich verwiesen wird, beschrieben wird.
  • Das Speichermodul 130 kann ein Übersetzungsmodul 137 umfassen, das dafür ausgelegt ist, Abbildungen und/oder Zuordnungen zwischen logischen Kennungen und Speicherbetriebsmitteln zu unterhalten. Im vorliegenden Gebrauch bezieht sich eine logische Kennung auf eine beliebige Kennung zum Verweis auf ein E/A-Betriebsmittel (z.B. auf den nichtflüchtigen Speicherbetriebsmitteln 140 gespeicherte Daten), darunter, aber ohne Beschränkung darauf, eine LBA (logische Blockadresse), eine CHS-Adresse (Zylinder/Kopf-Sektor), ein Dateiname, eine Objektkennung, ein Inode, eine UUID (Universally Unique Identifier), eine GUID (Globally Unique Identifier), ein Hash-Code, eine Signatur, ein Indexeintrag, ein Bereich, ein Ausmaß oder dergleichen. Die Abbildungen können „beliebig auf beliebig“ sein, so dass jede logische Kennung einer beliebigen physischen Speicherstelle zugeordnet sein kann (und umgekehrt).
  • Das Übersetzungsmodul 137 kann ausgelegt sein zum Unterhalten von E/A-Metadaten 138 bezüglich Daten der E/A-Anforderungen 116 und/oder der Speicherbetriebsmittel 140A-N. Die E/A-Metadaten 138 wären zum Beispiel, aber ohne Beschränkung darauf, ein Weiterleitungsindex (z.B. ein Index von Abbildungen und/oder Zuordnungen zwischen logischen Kennungen und Speicherbetriebsmitteln 140A-N), Cache-Tags, Gültigkeitsmetadaten, Atomizitäts- und/oder Transaktionsmetadaten, Persistenzgrad-Metadaten und so weiter. Persistenzgrad-Metadaten können zum Beispiel den Persistenzgrad einer bestimmten logischen Kennung angeben, womit E/A-Anforderungen 116 bezüglich der logischen Kennung versorgt werden können. Die Persistenzgrad-Metadaten einer E/A-Anforderung 116 können das bzw. die Speicherbetriebsmittel 140A-N identifizieren, die Daten bezüglich der E/A-Anforderung 116, der Speicherkonfiguration der Speicherbetriebsmittel 140A-N, Informationen bezüglich des Speichermodus der Daten und so weiter umfassen. Die E/A-Metadaten 138 können eine oder mehrere Datenstrukturen umfassen, wie zum Beispiel, aber ohne Beschränkung darauf, einen Baum, einen B-Baum, einen bereichscodierten B-Baum, einen Radix-Baum, eine Abbildung, eine Liste, eine CAM (inhaltsadressierbare Abbildung), eine Tabelle, eine Hash-Tabelle, ein Speicherlayout (z.B. ein zusammenhängendes Speicherlayout oder ein anderes geeignetes Layout), eine Kombination von Datenstrukturen oder dergleichen. Die E/A-Metadaten 138 können in dem flüchtigen Speicherbetriebsmittel 113 unterhalten werden. Teile der E/A-Metadaten 138 können persistent auf ein oder mehrere nichtflüchtige und/oder nichtvergängliche Speicherbetriebsmittel gelegt werden, wie etwa das persistente Speicherbetriebsmittel 114 und/oder ein oder mehrere der Speicherbetriebsmittel 140A-N.
  • Bei bestimmen Ausführungsformen kann das Speichermodul 130 die willkürlichen Abbildungen von beliebig auf beliebig des Übersetzungsmoduls 137 erweitern, um Daten in einem Log-Format zu speichern, so dass Daten „deplatziert“ auf einem oder mehreren der Speicherbetriebsmittel 140A-N aktualisiert und/oder modifiziert werden. Im vorliegenden Gebrauch bezieht sich das „deplatzierte“ Schreiben von Daten auf Modifizieren und/oder Überschreiben von Daten in verschiedene Medienspeicherstelle(n), statt die Daten „vor Ort“ zu überschreiben (z.B. die ursprüngliche physische Speicherstelle der Daten zu überschreiben). Das Speichern von Daten in einem Log-Format kann dazu führen, dass veraltete und/oder ungültige Daten auf den nichtflüchtigen Speicherbetriebsmitteln 140 verbleiben. Zum Beispiel kann deplatziertes Überschreiben von Daten der logischen Kennung „A“ dazu führen, dass Daten in neue physische Speicherstelle(n) geschrieben und die E/A-Metadaten 138 aktualisiert werden, um A mit der neuen physischen Speicherstelle bzw. den neuen physischen Speicherstellen (z.B. in einem Vorwärtsindex) zu assoziieren. Die ursprüngliche physische Speicherstelle bzw. die ursprünglichen physischen Speicherstellen, die mit A assoziiert sind, werden nicht überschrieben und umfassen ungültige, veraltete Daten. Wenn Daten einer logischen Kennung „X“ gelöscht oder getrimmt werden, kann ähnlich die physische Speicherstelle bzw. können die physischen Speicherstellen, die X zugewiesen ist bzw. sind, nicht unmittelbar gelöscht werden, sondern können als ungültige Daten auf den nichtflüchtigen Speicherbetriebsmitteln 140 verbleiben.
  • Das Speichermodul 130 kann ferner ein Log-Speichermodul 139 umfassen, das dafür ausgelegt ist, Daten auf einem oder mehreren der Speicherbetriebsmittel 140A-N in einem Log-Format zu speichern (z.B. ein „Ereignis-Log“). Im vorliegenden Gebrauch bezieht sich ein Log-Format auf ein Datenspeicherformat, das eine geordnete Sequenz von an den Speicherbetriebsmitteln 140A-N ausgeführten Speicheroperationen bewahrt. Ein Log-Format kann dementsprechend ein „Ereignis-Log“ von an den Speicherbetriebsmitteln 140A-N ausgeführten Speicheroperationen definieren. Bei bestimmten Anwendungen ist das Log-Speichermodul 139 dafür ausgelegt, Daten von einem Anfügepunkt aus sequenziell zu speichern. Das Log-Speichermodul 139 kann ferner dafür ausgelegt sein, Daten (und/oder physische Speicherstellen) auf den nichtflüchtigen Speicherbetriebsmitteln 140) mit jeweiligen Sequenzindikatoren zu assoziieren. Diese Sequenzindikatoren können auf einzelne Datensegmente, Pakete und/oder physische Speicherstellen auf den Speicherbetriebsmitteln 140A-N angewandt werden und/oder können auf Gruppen von Daten und/oder physischen Speicherstellen (z.B. Löschblöcke) angewandt werden. Bei bestimmen Ausführungsformen können Sequenzindikatoren auf physische Speicherstellen angewandt werden, wenn die Speicherstellen bei einer Grooming-Operation wieder beansprucht (z.B. gelöscht) werden und/oder wenn die Speicherstellen zum ersten Mal zum Speichern von Daten verwendet werden.
  • Bei bestimmen Ausführungsformen kann das Log-Speichermodul 139 dafür ausgelegt sein, Daten gemäß einem „Nur-Anhängen“-Paradigma zu speichern. Das Speichermodul 130 kann einen aktuellen Anhängepunkt in einem physischen Adressraum eines oder mehrerer des Speicherbetriebsmittel 140A-N unterhalten. Im vorliegenden Gebrauch bezieht sich ein „Anhängepunkt“ auf einen Zeiger oder Verweis auf eine bestimmte physische Speicherstelle (z.B. einen Sektor, eine Seite, eine Speicherunterteilung, ein Offset oder dergleichen). Das Log-Speichermodul 139 kann dafür ausgelegt sein, Daten sequenziell von dem Anhängepunkt aus anzuhängen. Wenn Daten an dem Anhängepunkt gespeichert werden, bewegt sich der Anhängepunkt zu einer nächsten verfügbaren physischen Speicherstelle des Speicherbetriebsmittels 140A-N. Die Log-Reihenfolge von auf dem Speicherbetriebsmittel 140A-N gespeicherten Daten kann deshalb auf der Basis des den Daten zugeordneten Sequenzindikators und/oder der sequenziellen Reihenfolge der Daten auf dem Speicherbetriebsmittel 140A-N bestimmt werden. Das Log-Speichermodul 139 kann dafür ausgelegt sein, die „nächste“ verfügbare Speicherstelle zu identifizieren, indem der physische Adressraum des Speicherbetriebsmittels 140A-N (z.B. in einem Rückwärtsindex, wie nachfolgend beschrieben) durchquert wird, um eine nächste verfügbare physische Speicherstelle zu identifizieren.
  • Das Speichermodul 130 kann einen Groomer umfassen, der dafür ausgelegt ist, ein nichtflüchtiges Speicherbetriebsmittel (nichtflüchtiges Speichermedium) zu „groomen“, was umfassen kann, physische Speicherstelle(n) mit ungültigen, veralteten oder „getrimmten“ Daten wie oben beschrieben wieder zu beanspruchen. Im vorliegenden Gebrauch bezieht sich das „Groomen“ eines nichtflüchtigen Speicherbetriebsmittels (z.B. eines Halbleiter-Speichermediums) auf Operationen, die, aber ohne Beschränkung darauf, Folgendes umfassen können: Abnutzungsnivellierung, Entfernung ungültiger und/oder veralteter Daten, Entfernung gelöschter (z.B. getrimmter) Daten, Auffrischen und/oder Verlagern gültiger Daten, Neubeanspruchen von physischen Speicherbetriebsmitteln (z.B. Löschblöcke), Identifizieren von physischen Speicherbetriebsmitteln für Neubeanspruchung usw. Der Groomer kann bezüglich Versorgung anderer E/A-Anforderungen 116 autonom und im Hintergrund operieren. Dementsprechend können Grooming-Operationen zurückgestellt werden, während andere E/A-Anforderungen 116 verarbeitet werden. Als Alternative kann das Grooming im Vordergrund mit anderen E/A-Anforderungen 116 operieren. Das Neubeanspruchen einer physischen Speicherstelle kann Löschen ungültiger Daten aus der physischen Speicherstelle umfassen, so dass die physische Speicherstelle zum Speichern gültiger Daten wiederverwendet werden kann. Zum Beispiel kann das Neubeanspruchen einer Speicherunterteilung (z.B. eines Löschblocks oder eines logischen Löschblocks) Verlagern gültiger Daten aus der Speicherunterteilung, Löschen der Speicherunterteilung und Initialisieren der Speicherunterteilung für Speicheroperationen (z.B. Markieren der Speicherunterteilung mit einem Sequenzindikator) umfassen. Der Groomer kann das nichtflüchtige Speichermedium abnutzungsnivellieren, so dass Daten systematisch über alle verschiedenen physischen Speicherstellen verteilt werden, was die Leistungsfähigkeit und Datenzuverlässigkeit verbessern und zu starke Verwendung und/oder zu geringe Verwendung bestimmter physischer Speicherstellen vermeiden kann. Ausführungsformen von Systemen und Verfahren zum Groomen von nichtflüchtigen Speichermedien werden in dem US-Patent Nr. 8,074,011 , erteilt am 6.12.2011 mit dem Titel „Apparatus, System, and Method for Storage Space Recovery After Reaching a Read Count Limit,“ offenbart, worauf hiermit ausdrücklich verwiesen wird.
  • Bei bestimmten Ausführungsformen kann das Speichermodul 130 dafür ausgelegt sein, asymmetrische „einmal beschreibbare“ nichtflüchtige Speicherbetriebsmittel 140, wie etwa Halbleiter-Speichermedien, zu verwalten. Im vorliegenden Gebrauch bezieht sich „einmal beschreibbar“ auf ein Speichermedium, das jedes Mal, wenn neue Daten darauf geschrieben oder programmiert werden, neu initialisiert (z. B. gelöscht) wird. Im vorliegenden Gebrauch bezieht sich „asymmetrisch“ auf Speichermedien mit verschiedenen Latenzen und/oder Ausführungszeiten für verschiedene Arten von Speicheroperationen. Zum Beispiel können Leseoperationen an asymmetrischen nichtflüchtigen Halbleiter-Speicherbetriebsmitteln 140 viel schneller als Schreib-/Programmieroperationen sein, und Schreib-/Programmieroperationen können viel schneller als Löschoperationen sein. Die nichtflüchtigen Halbleiter-Speicherbetriebsmittel 140 können in Speicherunterteilungen aufgeteilt werden, die als Gruppe (z. B. Löschblöcke) gelöscht werden können, um u. a. diese asymmetrischen Eigenschaften zu berücksichtigen. Dementsprechend kann das Modifizieren eines einzelnen Datensegments „vor Ort“ Löschen eines gesamten Löschblocks und Neuschreiben der modifizierten Daten auf dem Löschblock zusammen mit den (etwaigen) ursprünglichen unveränderten Daten erfordern. Dies kann zu ineffizienter „Schreibverstärkung“ führen, die übermäßige Abnutzung verursachen kann. Das deplatzierte Schreiben von Daten wie oben beschrieben kann diese Probleme vermeiden, da das Speichermodul 130 Löschung der veralteten Daten zurückstellen kann (z. B. kann die physische Speicherstelle bzw. können die physischen Speicherstellen mit den veralteten Daten in Hintergrund-Grooming-Operationen neu beansprucht werden).
  • Weitere Ausführungsformen von Systemen, Verfahren und Schnittstellen zur Verwaltung von E/A-Metadaten 138, einschließlich Abbildungen und/oder Zuordnungen zwischen logischen Kennungen und Speicherbetriebsmitteln und/oder Log-Speicherung, werden in der US-Patentanmeldung Lfd. Nr. 12/986,117 , eingereicht am 6.1.2011 mit dem Titel „Apparatus, System, and Method for a Virtual Storage Layer,“, veröffentlicht als US-Patentanmeldung, Publikation Nr. 20120011340 am 12.1.2012 und in der US-Patentanmeldung, Lfd. Nr. 13/424,333 , eingereicht am 19.3.2012 mit dem Titel „Logical Interface for Contextual Storage,“ offenbart, auf die jeweils hiermit ausdrücklich verwiesen wird.
  • 1C ist ein Flussdiagramm einer Ausführungsform eines im Stand der Technik bekannten Verfahrens 101 zum Versorgen von E/A-Anforderungen gemäß verschiedenen Graden der Persistenz. Das Verfahren 101 und andere hier offenbarte Verfahren und/oder Prozesse können mindestens teilweise als eine oder mehrere maschinenlesbare Anweisungen realisiert werden, die auf einer nichtflüchtigen Speicherung, wie etwa dem persistenten Speicherbetriebsmittel 140, gespeichert werden. Die Anweisungen können dafür ausgelegt werden, zu bewirken, dass ein oder mehrere Module in einer Datenverarbeitungsumgebung 110 einen oder mehrere Schritte des Verfahrens und/oder Prozesses ausführen. Eine oder mehrere der Anweisungen können für Ausführung durch ein oder mehrere Verarbeitungsbetriebsmittel 112 ausgelegt sein. Außerdem können bestimmte Schritte der Verfahren und/oder Prozesse, die hierin offenbart werden, an bestimmte Maschinenkomponenten gebunden werden, wie etwa Kommunikationsschnittstellen 115, Speicherbetriebsmittel 140A-N, Verarbeitungsbetriebsmittel 112 oder dergleichen.
  • Schritt 102 kann Identifizieren einer E/A-Anforderung 116 und/oder Zugreifen auf diese umfassen. Schritt 102 kann Empfangen der E/A-Anforderung 116 aus einem Speicher-Client 106A-N (z.B. über eine Schnittstelle 131A), Überwachen und/oder Abfangen einer E/A-Anforderung 116 (z.B. in einem E/A-Stapel 117) und/oder dergleichen umfassen.
  • Schritt 103 kann Bestimmen eines Persistenzgrads für die E/A-Anforderung 116 umfassen. Schritt 103 kann umfassen, dass das Persistenzgradmodul 134 einen Persistenzgrad für die E/A-Anforderung 116 auf der Basis einer Persistenzgradrichtlinie 135 bestimmt, wie zum Beispiel, aber ohne Beschränkung darauf, Persistenzgradkriterien, Eigenschaften der E/A-Anforderung 116, aus der E/A-Anforderung 116 Gefolgertes, Profilierungsmetadaten und so weiter.
  • Schritt 104 kann Versorgen der E/A-Anforderung 116 gemäß dem Persistenzgrad umfassen, der im Schritt 103 ausgewählt und/oder der E/A-Anforderung 116 zugewiesen wurde. Versorgen der E/A-Anforderung 116 kann umfassen, dass ein E/A-Anforderungsausführungsmodul 136 (durch Verwendung der E/A-Schnittstelle(n) 118A-N) eine oder mehrere Speicheroperationen an den Speicherbetriebsmitteln 140A-N ausführt. Der Persistenzgrad der E/A-Anforderung 116 kann das bzw. die Speicherbetriebsmittel 140A-N bestimmen, die zur Versorgung der E/A-Anforderung 116 zu verwenden sind, die Konfiguration des einen oder der mehreren Speicherbetriebsmittel 140A-N (RAID-Ebene, Spiegelung und so weiter) und/oder den Modus der Speicheroperation(en) (z.B. Hindurchschreib-Cache, vergänglicher Cache, ECC-Codierung und so weiter).
  • Das hier offenbarte Speichermodul 130 kann erweitert und/oder angepasst werden, um Cache-Speicherungsdienste bereitzustellen. Dementsprechend kann das Speichermodul 130 bei bestimmten Ausführungsformen ein Cache-Verwaltungssystem (CMS) umfassen. Das CMS kann ein oder mehrere der Module des hier offenbarten Speichermoduls 130 umfassen. Der Klarheit halber können diese Module jedoch bei Beschreibung in Verbindung mit dem CMS unter Verwendung von Cache-spezifischen Begriffen bezeichnet werden.
  • 2A ist ein Blockschaltbild einer Ausführungsform eines CMS 220 in einer virtualisierten Datenverarbeitungsumgebung. Das CMS 220 kann dafür ausgelegt werden, in einer virtuellen Maschine 208A-N zu arbeiten, die in und/oder in Verbindung mit einem Virtualisierungskern 210 arbeiten kann. Der Virtualisierungskern 210 kann dafür ausgelegt werden, den Betrieb der virtuellen Maschinen 208A-N zu verwalten, die an dem Host 202 sowie anderen Komponenten und Diensten 202 bereitgestellt werden, operieren. Zum Beispiel kann der Virtualisierungskern 210 dafür ausgelegt werden, verschiedene E/A-Operationen abzuwickeln, die einem primären Speicherbetriebsmittel 240B und/oder anderen Speicherbetriebsmittel 240C-N zugeordnet sind. Das primäre Speicherbetriebsmittel 240B kann über mehrere Hosts hinweg von mehreren virtuellen Maschinen 208A-N geteilt werden. Das primäre Speicherbetriebsmittel 240B kann mehrere Plattenlaufwerke oder andere Speichervorrichtungen, wie etwa ein oder mehrere Speicherarrays (z.B. RAID, JBOD oder dergleichen) umfassen.
  • Das CMS 220 kann E/A-Anforderungen 116 eines oder mehrerer Speicher-Clients 106 versorgen. Die Speicher-Clients 106 können bezüglich der virtuellen Maschine 108A lokal sein, können in anderen virtuellen Maschinen 208B-N, die auf dem Host 202 eingesetzt werden, gehostet werden und/oder können auf anderen Datenverarbeitungsvorrichtungen operieren (z.B. auf anderen Hosts und/oder Fern-Datenverarbeitungsumgebungen wie dem Fern-Speicherclient 106E von 1B). Das CMS 220 kann ein E/A-Anforderungsempfängermodul 132 umfassen, das dafür ausgelegt ist, E/A-Anforderungen 116 zu empfangen, zu überwachen und/oder abzufangen. Das CMS 220 kann dafür ausgelegt sein, E/A-Anforderungen 116 gemäß einem bestimmten Grad der Persistenz zu versorgen. Dementsprechend kann das CMS 220 ein Persistenzgradmodul 134 umfassen, das dafür ausgelegt ist, einen Persistenzgrad für die E/A-Anforderungen 116 wie hier beschrieben zu bestimmen, was Auswählen eines Cache-Speicherungsmoduls für die E/A-Anforderungen 116 (z.B. Hindurchschreiben, vergänglich oder eine andere Konfiguration oder ein anderer Modus der Cache-Speicherung) umfassen kann.
  • Die E/A-Schnittstelle(n) 218 kann bzw. können dafür ausgelegt sein, auf ein oder mehrere virtualisierte Speicherbetriebsmittel zuzugreifen, die zwischen anderen virtuellen Maschinen 208A-N auf dem Host 202 geteilt sein können oder auch nicht. Im vorliegenden Gebrauch bezieht sich ein „virtualisiertes Speicherbetriebsmittel“ auf ein Speicherbetriebsmittel, das durch einen Virtualisierungskern 210, wie etwa einen Hypervisor, eine Speicherschicht, eine Virtualisierungsschicht oder dergleichen, zugänglich ist. Virtualisierte Speicherbetriebsmittel wären zum Beispiel, aber ohne Beschränkung darauf, VLUN-Speicherbetriebsmittel, virtuelle Datenträger (z.B. VMDK-Datenträger (Virtual Machine Disk Format)), Speichermodul(e) 130, virtualisierte Cache-Betriebsmittel und dergleichen.
  • Das CMS 220 kann dafür ausgelegt sein, E/A-Anforderungen 116 durch Verwendung eines oder mehrerer virtualisierter Speicherbetriebsmittel 240A-N, einschließlich eines Virtuellmaschinen-Cache 213, zu versorgen. Der Virtuellmaschinen-Cache 213 kann ein Cache-Bereitstellermodul 214 und Cache-Speicherung (Cache 216) umfassen. Der Cache 216 wäre zum Beispiel, aber ohne Beschränkung darauf, eine oder mehrere Speichervorrichtungen, wie etwa nichtflüchtige Speichervorrichtungen und/oder Medien, Halbleiterspeicher, Direktzugriffsspeicher (RAM) oder dergleichen. Im vorliegenden Gebrauch bezieht sich „Halbleiter-Speichervorrichtung“ auf einen nichtflüchtigen persistenten Speicher, der wiederholt gelöscht und umprogrammiert werden kann. Dementsprechend kann eine Halbleiter-Speichervorrichtung eine Halbleiter-Speichervorrichtung und/oder ein Halbleiter-Speicherlaufwerk (SSD) (z.B. eine Flash-Speichervorrichtung) umfassen. Das Cache-Bereitstellermodul 214 kann dafür ausgelegt sein, Betriebsmittel des Cache 216 im CMS 220 der virtuellen Maschinen 208A-N bereitzustellen, was dynamisches Bereitstellen und/oder Teilen von Cache-Speicherung und/oder E/A-Operationen (IOPS) umfassen kann. Das Cache-Bereitstellermodul 214 kann ferner dafür ausgelegt sein, in dem Cache 216 gespeicherte Daten zu schützen und/oder zu sichern, um zu verhindern, dass mehr als eine virtuelle Maschine 108A-N auf dieselben Cache-Daten zugreift (z.B. Verhindern von Gefahren des Lesens vor dem Schreiben). Zum Beispiel ist bei bestimmten Ausführungsformen das Cache-Bereitstellermodul 214 dafür ausgelegt, Cache-gespeicherte Daten mit einer Virtuellmaschinenkennung zu assoziieren, womit man Zugriff auf Daten im Cache kontrollieren kann.
  • 3 zeigt eine Ausführungsform von Cache-Speicherung 216 eines Virtuellmaschinen-Cache 213. Die Cache-Speicherung 216 kann die Cache-Speicherbetriebsmittel 216 des Virtuellmaschinen-Cache 213 repräsentieren. Die Cache-Speicherung 216 kann ein Halbleiter-Speichermedium umfassen, das mehrere Cache-Seiten 304 umfasst. Der Cache 216 kann in mehrere Stücke 302 zerlegt werden. Im vorliegenden Gebrauch bedeutet ein „Stück“ einen willkürlich bemessenen Teil von Cache-Speicherkapazität. Der Cache 216 kann in eine beliebige Anzahl von Stücken 302 mit einer beliebigen Größe aufgeteilt werden. Bei einer konkreten Ausführungsform kann jedes Stück 302 256 MB (Megabyte) Speicherkapazität umfassen. Bei dieser Ausführungsform kann die Anzahl der Stücke 302 durch die verfügbare Speicherkapazität des Cache 216 bestimmt werden. Zum Beispiel enthält 1 TB (Terabyte) Cache 216, aufgeteilt in 256-MB-Stücke 302, 4192 Stücke. Wie in 3 gezeigt, wird jedes Stück 302 in mehrere Cache-Seiten 304 aufgeteilt.
  • Der Cache 216 kann zwischen mehreren virtuellen Maschinen auf einem Host geteilt werden. Ein Cache-Stück 302 kann einer bestimmten der virtuellen Maschinen unter anderem auf der Basis der Cache-Bedürfnisse der virtuellen Maschine und/oder der Cache-Bedürfnisse anderer virtueller Maschinen zugewiesen oder zugeteilt werden. Die Anzahl der einer bestimmten virtuellen Maschine zugewiesenen Stücke 302 kann sich mit der Zeit ändern, wenn sich Cache-Bedürfnisse der virtuellen Maschine ändern. Die Anzahl der einer spezifischen virtuellen Maschine zugewiesenen Stücke 302 kann die Cache-Kapazität dieser virtuellen Maschine bestimmen. Wenn zum Beispiel zwei 256-MB-Stücke einer spezifischen virtuellen Maschine zugewiesen werden, ist die Cache-Kapazität dieser virtuellen Maschine 512 MB. Die Zuweisung von Stücken 302 zu bestimmten virtuellen Maschinen wird durch den Cache-Bereitsteller, wie etwa das oben beschriebene Cache-Bereitstellermodul 214, abgewickelt.
  • Das CMS 220 kann ein oder mehrere Cache-Tags 221 umfassen, um Kennungen (E/A-Adressen) einer virtuellen Maschine 208A-N auf Betriebsmittel im Cache 216 (z.B. bestimmte Cache-Seiten 304) abzubilden und/oder diesen zuzuordnen. Die Cache-Tags 221 können deshalb zum Durchführen von Übersetzungen zwischen Kennungen in den Cache-Tags 221 (z.B. Adresse von Blöcken auf einem primären Speicherbetriebsmittel 240B) und einer Cache-Adresse verwendet werden. Bei bestimmten Ausführungsformen können Cache-Tags 221 linear in RAM oder anderem Speicher organisiert werden. Dadurch kann man die Adresse des Cache-Tags 221 zum Finden einer physischen Cache-Seite 304 verwenden, wegen der algorithmischen Annahme, dass jedes Cache-Tag 221 eine lineare 1:1-Korrespondenz mit einer physischen Cache-Seite 304 aufweist. Als Alternative oder zusätzlich können Cache-Tags 221 zu einer anderen Datenstruktur, wie etwa einer Hash-Tabelle, einem Baum oder dergleichen, organisiert werden.
  • Wieder mit Bezug auf 2A können Cache-Tags 221, die einer bestimmten virtuellen Maschine 208A-N zugeordnet sind, in dieser virtuellen Maschine 208A-N gespeichert werden. Die Cache-Tags 221 enthalten Metadaten, die Speicherungs-E/A-Adressen spezifischen Cache-Seiten 304 im Cache zuordnen. Bei einer konkreten Ausführungsform ist jedes Cache-Tag 221 einer bestimmten Seite 304 im Cache zugeordnet. Der Virtuellmaschinen-Cache 213 kann Daten für ein oder mehrere Speicherbetriebsmittel 240B-N, wie etwa das primäre Speicherbetriebsmittel 240B (und/oder andere Speicherbetriebsmittel 240C-N) Cache-speichern. Dementsprechend können ein oder mehrere der Speicherbetriebsmittel 240B-N die primäre Speicherung oder der Backing-Store von in dem Virtuellmaschinen-Cache 213 Cache-gespeicherten Daten sein. Bei bestimmten Ausführungsformen kann die E/A-Adresse der Cache-Tags 221 Speicheradressen und/oder Verweise auf eines oder mehrere der Speicherbetriebsmittel 240B-N sein.
  • 4 zeigt eine Ausführungsform einer Datenstruktur 421 von Cache-Tags 221. Die Größe mehrerer Felder in dem Cache-Tag 221 kann dynamisch sein und dementsprechend kann die Größe der Cache-Tag-Datenstruktur 421 dynamisch sein. Jedes Cache-Tag 221 stellt eine Übersetzung zwischen einer Kennung (z.B. einer Speicherungs-E/A-Adresse) und einem Cache-Betriebsmittel (z.B. einer Cache-Seite 304) bereit. Die Cache-Tag-Datenstruktur 421 umfasst einen Nächstes-Cache-Tag-Index, dessen Größe fest ist und der zum Verknüpfen von Cache-Tags 221 in einer Hash-Tabellendatenstruktur verwendet wird. Im Betrieb wird der Nächstes-Cache-Tag-Index in eine Speicheradresse umgesetzt, um das nächste Cache-Tag zu finden, das mit dem aktuellen Cache-Tag verknüpft ist. Ein Zustandsfeld weist feste Größe auf und identifiziert einen aktuellen Zustand des Cache-Tags 221. Das Zugangsmetadatenfeld kann ein dynamisches Feld umfassen, das Zugangs- und/oder Benutzungskenngrößen des Cache-Tags 221 angibt. Das Prüfsummenfeld kann ein dynamisches Feld umfassen, dessen Größe auf der Basis der Größe der Cache-Seite 304 und des vom Benutzer gewünschten Integritätsniveaus variiert. Zum Beispiel kann ein Benutzer ein höheres Integritätsniveau für die Prüfsumme erhalten, indem er der Prüfsumme mehr Bit Speicher zuteilt.
  • Die Cache-Tag-Datenstruktur 421 kann ferner ein Gültige-Einheit-Abbildungsfeld umfassen, das ein dynamisches Feld ist, das identifiziert, welche Einheiten in einer Seite Cache-gespeichert werden. Ein Beispiel für eine Einheit in einer Cache-Seite 304 ist ein Sektor. Zum Beispiel kann eine bestimmte Cache-Seite 304 einen oder mehreren Sektoren aufweisen, die fehlen oder nicht mehr gültig sind. Die Gültige-Einheit-Abbildung identifiziert den Status aller einer bestimmten Cache-Seite 304 zugeordneten Einheiten, um Zugriff auf Daten in Einheiten, die nicht gültig sind, zu verhindern.
  • Die Cache-Tag-Datenstruktur 421 kann ferner ein Persistenz-Metadatenfeld umfassen. Das Persistenz-Metadatenfeld kann Metadaten umfassen, die den Persistenzgrad des Cache-Tags 221 betreffen, wie zum Beispiel, aber ohne Beschränkung darauf, den Cache-Modus für das Cache-Tag 221 (z.B. Hindurchschreiben, Rückschreiben, vergänglich oder eine andere Konfiguration oder ein anderer Modus des Cache), das primäre Speicherbetriebsmittel bzw. die primären Speicherbetriebsmittel 240B-N, die dem Cache-Tag 221 zugeordnet sind, und so weiter. Die Persistenz-Metadaten können durch das Persistenzgradmodul 134 (durch Verwendung der Persistenzgradrichtlinie 135) zum Zeitpunkt der Zulassung des Cache-Tags 221 in den Cache bestimmt werden. Das CMS 220 (und/oder das Persistenzgradmodul 134) kann die Persistenz-Metadaten als Reaktion auf Änderungen des Persistenzgrads des Cache-Tags 221 modifizieren. Zum Beispiel kann bei bestimmten Ausführungsformen ein Cache-Tag, das vergänglichen Cache-Daten zugeordnet ist, in ein primäres Speicherbetriebsmittel 240B-N ausgeräumt werden, was Modifizieren eines Cache-Modus des Cache-Tags 221 von vergänglich in einen anderen Cache-Modus umfassen kann. Das Cache-Tag 221 kann zu einem vergänglichen Cache-Modus (mit einer entsprechenden Aktualisierung an den Persistenz-Metadaten) zurückkehren. Weitere Ausführungsformen von Cache-Tag-Datenstrukturen, Uhrzeiger-Metadaten und/oder Cache-Tag-Zustandsübergängen werden in der US-Patentanmeldung, Lfd. Nr. 13/028,149 mit dem Titel „Systems and Methods for Managing I/O Operations,“, eingereicht am 15.2.2011 und veröffentlicht als US-Patentanmeldung, Publikation Nr. 2012/0210043 am 16.8.2012, offenbart, worauf hiermit ausdrücklich verwiesen wird.
  • Wie oben beschrieben, kann das CMS 220 dafür ausgelegt sein, E/A-Anforderungen 116 von einem oder mehreren Speicher-Clients 106 zu empfangen, was Empfangen der E/A-Anforderungen 116 über eine oder mehrere Schnittstellen 131A umfassen kann, die E/A-Anforderungen 116 in einem Speicher-Stapel 117 (z.B. durch Verwendung eines Agenten 133, wie etwa eines E/A-Filters, eines Treibers oder dergleichen) überwachen und/oder abfangen. Die E/A-Anforderungen 116 können zum CMS 220 geroutete werden, das die E/A-Anforderungen unter Verwendung des Virtuellmaschinen-Cache 213 versorgen kann.
  • Als Reaktion auf eine Anforderung, Daten zu lesen (z.B. eine Lese-E/A-Anforderung 116) kann das CMS 220 bestimmen, ob die E/A-Anforderung 116 betreffende Daten in dem Virtuellmaschinen-Cache 213 verfügbar sind, was umfassen kann, zu bestimmen, ob das CMS 220 ein Cache-Tag 221 umfasst, das der E/A-Anforderung 116 entspricht (z.B. ob das CMS 220 ein Cache-Tag 221 umfasst, das eine Kennung aufweist, die einer Kennung einer Leseanforderung entspricht). Wenn ein Cache-Tag 221 für die E/A-Anforderung 116 gefunden wird, kann das CMS 220 die Daten aus dem Virtuellmaschinen-Cache 213 unter Verwendung der dem Cache-Tag 221 zugeordneten Cache-Adresse anfordern. Wenn kein Cache-Tag 221 gefunden wird, kann das CMS 220 (auf der Basis verschiedener Cache-Zulassungsrichtlinien und/oder anderer Faktoren, wie etwa der Verfügbarkeit von Cache-Tags 221) bestimmen, ob die Daten in den Virtuellmaschinen-Cache 213 zuzulassen sind. Das CMS 220 kann die Daten in den Virtuellmaschinen-Cache 213 zulassen, indem es ein der Anforderung entsprechendes Cache-Tag 221 zuteilt, auf die Daten in dem primären Speicherbetriebsmittel 240B zugreift und den Virtuellmaschinen-Cache 213 anweist, die Daten in dem Cache 216 zu speichern. Das Zulassen der Daten kann ferner Bestimmen eines Persistenzgrads der E/A-Anforderung 116 unter Verwendung des Persistenzgradmoduls 134 und/oder der Persistenzgradrichtlinie 135 umfassen. Der Persistenzgrad kann einen Cache-Modus für Daten der E/A-Anforderung 116 spezifizieren. Zum Beispiel kann der Persistenzgrad der E/A-Anforderung 116 spezifizieren, dass die Daten in einem vergänglichen Cache-Modus zu speichern sind, so dass die Daten in den Virtuellmaschinen-Cache 213 geschrieben werden und nicht in das primäre Speicherbetriebsmittel 240B hindurchgeschrieben werden.
  • Als Reaktion auf eine Anforderung, Daten zu schreiben (z.B. eine Schreib-E/A-Anforderung 116) kann das CMS 220 bestimmen, ob die Anforderung betreffende Daten in dem Virtuellmaschinen-Cache 213 wie oben beschrieben zugelassen wurden (z.B. durch Bestimmen, ob es ein der E/A-Anforderung 116 entsprechendes Cache-Tag 221 gibt). Wenn kein Cache-Tag 221 für die E/A-Anforderung 116 existiert, kann das CMS 220 bestimmen, ob die Daten in den Virtuellmaschinen-Cache 213 zuzulassen sind, einen Persistenzgrad für die E/A-Anforderung 116 bestimmen und so weiter, wie oben beschrieben. Wenn ein Cache-Tag 221 existiert, kann das CMS 220 dafür ausgelegt sein, die E/A-Anforderung 116 gemäß einem bestimmten Grad der Persistenz zu versorgen, der durch das Persistenzgradmodul 134 angegeben wird, das unter anderem einen Cache-Modus für die Daten (z.B. Hindurchschreib-Cache-Speicherung, vergängliche Cache-Speicherung oder dergleichen) bestimmen kann. Das Versorgen einer Schreib-E/A-Anforderung 116 gemäß einem vergänglichen Persistenzgrad kann umfassen, Daten der E/A-Anforderung 116 in dem Virtuellmaschinen-Cache 213 zu speichern, ohne die Daten in einem primären Speicherbetriebsmittel 240B zu speichern. Das Versorgen einer Schreib-E/A-Anforderung gemäß einem Hindurchschreib-Persistenzgrad kann umfassen, Daten der E/A-Anforderung sowohl in dem Virtuellmaschinen-Cache 213 als auch einem oder mehreren primären Speicherbetriebsmittel 240B zu speichern. Die E/A-Anforderung 116 kann erst abgeschlossen sein, wenn Daten der Anforderung in einem oder mehreren primären Speicherbetriebsmitteln 240B gespeichert sind.
  • Bei bestimmten Ausführungsformen können die virtuellen Maschinen 208A-N dafür ausgelegt sein, von dem Host 202 auf andere Host-Datenverarbeitungsvorrichtungen transferiert und/oder verlagert zu werden. Der Virtualisierungskern 210 (oder eine andere Virtualisierungsschicht) kann dafür ausgelegt sein, einen Transfer virtueller Maschinen, die auf lokale Betriebsmittel de Hosts 220, wie etwa lokale Plattenspeicherung oder dergleichen, verweisen, zu verhindern. Dementsprechend können die virtuellen Maschinen 208A-N dafür ausgelegt sein, unter Verwendung eines Zugriffsmechanismus, der Virtuellmaschinen-Migration nicht verhindert, auf den Virtuellmaschinen-Cache 213 zuzugreifen. Bei bestimmten Ausführungsformen ist das CMS 220 dafür ausgelegt, durch emulierte geteilte Speicherung und/oder einen „virtuellen Datenträger“ oder VLUN, was der Virtualisierungskern 210 als eine geteilte Vorrichtung (und/oder eine Vorrichtung, die Virtuellmaschinen-Migration nicht verhindert) behandelt, auf den Virtuellmaschinen-Cache 213 zuzugreifen. Der virtuellen Datenträger kann als ein durch den Host 202 und/oder den Virtualisierungskern 210 unterstütztes VMDK bereitgestellt werden. Bei bestimmten Ausführungsformen kann die E/A-Schnittstelle 218 ein E/A-Filter 219 umfassen, das dafür ausgelegt ist, E/A-Operationen der virtuellen Maschinen 208A-N zu überwachen, E/A-Anforderungen 116 und/oder Operationen, die an den virtuellen Datenträger gerichtet sind, abzufangen und die E/A-Anforderungen 116 (und andere diesbezügliche Daten) über eine Schnittstelle 241 zu dem Virtuellmaschinen-Cache 213 weiterzuleiten. Das E/A-Filter 219 kann „über“ einer SCSI und/oder vSCSI des Stapels 117 der virtuellen Maschine 208A-N operieren. Das E/A-Filter 219 kann das Durchlassen von E/A-Anforderungen 116 (und Antworten) zwischen dem CMS 220 der virtuellen Maschinen 208A-N und dem Virtuellmaschinen-Cache 213 bereitstellen. Das E/A-Filter 219 kann ferner Übermittlung von anderen Daten, wie etwa Konfigurations-, Befehls- und/oder Steuerdaten, bereitstellen. Der zur Kommunikation zwischen dem CMS 220 und dem Virtuellmaschinen-Cache 213 verwendete virtuelle Datenträger kann sehr klein sein (z.B. einige wenige Megabyte), da der virtuelle Datenträger nicht zur tatsächlichen Speicherung verwendet wird, sondern als Kommunikationsschnittstelle zwischen dem CMS 220 und dem Virtuellmaschinen-Cache 213).
  • Die virtuellen Maschinen 208A-N können dafür ausgelegt sein, geteilte Speicherung auf andere Weisen zu emulieren. Zum Beispiel können bei bestimmten Ausführungsformen die virtuellen Maschinen 208A-N dafür ausgelegt sein, einen oder mehrere „geteilte“ VLUN-Datenträger über mehrere Hosts 202 zu replizieren, so dass die VLUN-Datenträger den Hosts als geteilte Vorrichtungen erscheinen. Zum Beispiel können sich die VLUN-Datenträger dieselbe Seriennummer oder andere Kennung teilen. Der Host 202 und/oder der Virtualisierungskern 210 können deshalb die VLUN-Datenträger als geteilte Vorrichtungen behandeln und Transfer der virtuellen Maschinen 208A-N zu und von dem Host 202 erlauben. Der oben beschriebene VDMK-Ansatz kann gegenüber diesem Ansatz jedoch Vorteile bereitstellen, da eine kleinere Anzahl „geteilter“ Datenträger erzeugt werden muss, was Erschöpfung begrenzter Speicherverweise verhindern kann (z.B. kann eine virtuelle Maschine auf einen Verweis auf 256 Speichervorrichtungen begrenzt sein).
  • Das Cache-Bereitstellermodul 214 kann dafür ausgelegt sein, Cache-Betriebsmittel zwischen den virtuellen Maschinen 208A-N bereitzustellen. Die einer bestimmten virtuellen Maschine (z.B. der virtuellen Maschine 208A) zugeordneten Zuteilungsinformationen können zu dem entsprechenden CMS 220 übermittelt werden, das Metadaten des Cache-Tags 221 gemäß den Cache-Betriebsmitteln, die dem CMS 220 zugeteilt werden, unterhalten kann. Das CMS 220 kann dafür ausgelegt sein, Cache-Betriebsmittel von dem Cache-Bereitstellermodul 214 anzufordern. Die Anforderung kann als Reaktion auf eine Initialisierungsoperation des CMS 220 (z.B. Cache-„Aufwärmen“) übertragen werden. Im vorliegenden Gebrauch bezieht sich Cache-Initialisierung auf eine oder mehrere Operationen zur Vorbereitung des CMS für Betrieb. Das CMS 220 kann dafür ausgelegt sein, eine oder mehrere Initialisierungsoperationen als Reaktion darauf auszuführen, dass die virtuelle Maschine 208A-N heraufgefahren, neu gestartet, zu einem neuen Host transferiert (z.B. in einer VMotion™-Operation) oder dergleichen wird.
  • Das CMS 220 kann dafür ausgelegt sein, Cache-Metadaten, darunter Cache-Tags 221 gemäß der Cache-Speicherung, die durch das Cache-Bereitstellermodul 214 der virtuellen Maschinen 208A-N zugeteilt wurde, zu unterhalten. Im vorliegenden Gebrauch bezieht sich ein „Cache-Tag“ auf eine Zuordnung zwischen einer Kennung und einem Cache-Betriebsmittel (z.B. einer Seite oder einer anderen Cache-Speicherstelle im Cache 216). Dementsprechend können die Cache-Tags 221 Cache-Betriebsmittel repräsentieren, die durch das Cache-Bereitstellermodul 214 einer bestimmten virtuellen Maschinen 208A-N zugeteilt wurden. Im vorliegenden Gebrauch bezieht sich eine „Kennung“ eines Cache-Tags 221 auf eine Kennung, die von der virtuellen Maschine 208A-N zum Verweis auf Daten verwendet wird, die im Cache 216 gespeichert wurden (oder werden). Eine Cache-Tag-Kennung wäre zum Beispiel, aber ohne Beschränkung darauf, eine logische Kennung, eine Adresse (z.B. eine Speicheradresse, eine physische Speicheradresse oder logische Blockadresse, wie etwa eine Adresse auf dem primären Speichersystem 212), ein Name (z.B. ein Dateiname, Verzeichnisname, Volumenname oder dergleichen), ein Verweis oder dergleichen.
  • Die Cache-Tags 221 können in den jeweiligen virtuellen Maschinen 208A-N gespeichert werden (z.B. in flüchtigem Speicher, der durch den Host 202 der virtuellen Maschinen 208A-N zugeteilt wird). bei bestimmten Ausführungsformen können die Cache-Tags 221 eine „Arbeitsmenge“ von Cache-Daten der virtuellen Maschinen 208A-N repräsentieren. Im vorliegenden Gebrauch bezieht sich eine „Arbeitsmenge“ von Cache-Tags 221 auf eine Menge von Cache-Tags, die durch das CMS 220 u.a. mittels Anwendung einer oder mehrerer Cache-Richtlinien, wie etwa Cache-Zulassungsrichtlinien, Cache-Retentions- und/oder Hinauswerfrichtlinien (z.B. Cache-Alterungsmetadaten, Cache-Stehl-Metadaten, LRU (Least Recently Used), „Hotness“ und/oder „Coldness“ und so weiter), Cache-Profilierungsinformationen, Datei- oder Anwendungsebenenwissen und dergleichen, in dem Cache 216 zugelassen und/oder darin behalten wurde. Dementsprechend kann die Arbeitsmenge von Cache-Tags 221 die Menge von Cache-Daten repräsentieren, die unter einer bestimmten Menge von Betriebsbedingungen optimale E/A-Leistungsfähigkeit für die virtuelle Maschine 208A-N gewährleistet.
  • Bei bestimmen Ausführungsformen kann das CMS 220 dafür ausgelegt sein, die Cache-Tags 221 zu bewahren und/oder zu unterhalten, wozu gehören kann, die Cache-Tags 221 persistent in einem nichtflüchtigen Speichermedium, wie etwa dem primären Speichersystem 212, der persistenten Cache-Speicherungsvorrichtung (z.B. dem Cache 216) oder dergleichen abzulegen. Im vorliegenden Gebrauch bezieht sich ein „Schnappschuss“ auf die Arbeitsmenge des Cache an einem bestimmten Zeitpunkt. Ein Schnappschuss kann alle oder eine Teilmenge der Cache-Tags 221 (und/oder diesbezügliche Cache-Metadaten) umfassen. Bei bestimmten Ausführungsformen kann ein Schnappschuss ferner „Pinnen“ von Daten in der Cache-Vorrichtung 216 umfassen, was bewirken kann, dass Daten, auf die das eine oder die mehreren Cache-Tags 221 verweisen, im Cache 216 behalten werden. Als Alternative kann der Schnappschuss nur auf die Datenkennungen verweisen und kann eine Entfernung (z.B. Hinauswerfen) der zugrundeliegenden Daten aus dem Cache 216 erlauben. Das CMS 220 kann dafür ausgelegt sein, einen Schnappschuss aus persistenter Speicherung zu laden und den Schnappschuss zum Auffüllen der Cache-Tags 221 zu verwenden. Ein Schnappschuss kann als Teil einer Initialisierungsoperation (z.B. Cache-Aufwärmen) und/oder als Reaktion auf Konfiguration und/oder Benutzerpräferenz geladen werden. Zum Beispiel kann das CMS 220 dafür ausgelegt sein, verschiedene Schnappschüsse zu laden, die für bestimmte Anwendung(en) und/oder Dienst(e) optimiert sind. Das Laden eines Schnappschusses kann ferner Anfordern von Cache-Speicherung von dem Cache-Bereitstellermodul 214 wie oben beschrieben umfassen. Bei bestimmten Ausführungsformen kann das CMS 220 eine Teilmenge eines Schnappschusses laden, wenn die virtuelle Maschine 208A-N nicht genug Cache-Platz für den vollen Schnappschuss zuteilen kann.
  • Bei bestimmten Ausführungsformen ist das Cache-Bereitstellermodul 214 dafür ausgelegt, Abbildungen zwischen den virtuellen Maschinen 208A-N und jeweiligen den virtuellen Maschinen 208A-N (wie z.B. in 5 abgebildet) zugeteilten Cache-Speicherstellen zu unterhalten. Die Abbildungen können zur Sicherung von Cache-Daten der virtuellen Maschine 208A-N (z.B. durch Begrenzen von Zugriff auf die Cache-gespeicherten Daten abgebildete virtuelle Maschine 208A-N) und/oder zur Gewährleistung des Behaltens und/oder Transferierens von Cache-Daten einer oder mehrerer virtuellen Maschinen 208AN, die von dem Host 202 auf andere entfernte Hosts wie hier beschrieben transferiert werden, verwendet werden.
  • Bei bestimmten Ausführungsformen ist der Virtuellmaschinen-Cache 213 dafür ausgelegt, einen Ansatz der „dünnen“ Bereitstellung zur Cache-Betriebsmittelzuteilung zu implementieren. Jeder virtuellen Maschine 208A-N kann eine bestimmte Anzahl von Stücken 302 des Cache 216 zugeteilt werden. Es kann jedoch die gesamte Cache-Kapazität des Cache 216 (mittels eines virtuellen Datenträgers wie eines VLUN oder dergleichen) an jede der virtuellen Maschinen 208A-N „publiziert“ werden. Wenn zum Beispiel die Gesamt-Cachegröße 1 TB ist, kann jede virtuelle Maschine 208A-N melden, dass sie Zugriff auf die gesamten 1 TB Cache-Kapazität hat. Die tatsächliche Zuteilung von Cache-Stücken 302 kann jedoch auf der Basis der aktuellen Bedürfnisse der virtuellen Maschine 208A-N wesentlich kleiner sein (z.B. 256 MB oder 512 MB). Die zugeteilten Cache-Stücke 302 repräsentieren einen spezifischen Bereich von Cache-Adressen, die in dem Cache 216 verfügbar sind. Das Cache-Bereitstellermodul 214 ändert diese Cache-Stückzuteilungen dynamisch, wenn sich die Arbeitsmengenanforderungen der virtuellen Maschinen 208A-N ändern (und/oder die virtuellen Maschinen 208A-N zu/von dem Host 202 transferiert werden). Ungeachtet der Anzahl der Cache-Stücke 302, die tatsächlich einer bestimmten virtuellen Maschine 208A-N zugeteilt sind, meldet diese virtuelle Maschine 208A-N, dass sie Zugriff auf die gesamten 1 TB Cache hat. Dementsprechend kann das Gastbetriebssystem der virtuellen Maschinen 208A-N mit einem virtuellen Datenträger der Größe 1 TB operieren. Dementsprechend kann der tatsächliche der virtuellen Maschine 208A-N zugeteilte Speicherplatz dynamisch geändert werden, ohne dass das Gastbetriebssystem einen Fehlerzustand angibt. Deshalb kann die Cache-Seite 304, auf die ein Cache-Tag 221 verweist, einer „indirekten“ Adresse in dem Cache 216 entsprechen.
  • 5 zeigt eine Ausführungsform von zwischen virtuellen Cache-Speicherbetriebsmitteln, die der virtuellen Maschine 208A (VM-1) ausgesetzt sind, und zugrundeliegenden physischen Cache-Adressen, die der virtuellen Maschine 208A tatsächlich zugeteilt sind. Die der virtuellen Maschine 208A zugeteilte virtuelle Cache-Speicherung ist als ein zusammenhängender Bereich von Cache-Stücken VM-10, VM-11, VM-22 ... VM-1N (529) abgebildet. Diese zusammenhängenden Cache-Stücke 529 können mittels eines virtuellen Datenträgers 229 fester Größe wie oben beschrieben exponiert sein. Die tatsächlich der virtuellen Maschine 208A zugeteilte physische Cache-Speicherung ist als eine nichtzusammenhängen Menge von Stücken VM-10, VM-11, VM-22, VM-1N in dem physischen Adressraum 306 des Cache 216 abgebildet. Wie in 5 gezeigt, können die Stücke 302 in dem physischen Adressraum 306 des Cache 216 nicht zusammenhängend und/oder mit Stücken 302, die anderen virtuellen Maschinen 202B-N zugeteilt sind, verschachtelt sein. Obwohl die Darstellung in 5 einige der verschiedenen Speicherstellen in einer physischen Reihenfolge zeigt, können sich die der virtuellen Maschine 208A zugeteilten Cache-Stücke 302 in einer zufälligen Reihenfolge befinden, gemäß der Verfügbarkeit von physischen Cache-Betriebsmitteln (z.B. verfügbaren Stücken 302).
  • Das Abbildungsmodul 514 kann dafür ausgelegt sein, Zuteilungen von virtueller Cache-Speicherung (z.B. indirekte Cache-Adressen der Cache-Tags 221 in der virtuellen Maschine 208A) auf physische Cache-Betriebsmittel (z.B. Cache-Stücke 302 und/oder Cache-Seiten 304) abzubilden. Bei bestimmten Ausführungsformen kann die Abbildung einen Index von „beliebigen auf beliebige“ von Zuordnungen zwischen indirekten Cache-Adressen der virtuellen Maschinen 208A-N und dem physischen Adressraum 306 des Cache 216 umfassen.
  • Bei bestimmten Ausführungsformen kann der Virtuellmaschinen-Cache 213 das Abbildungsmodul 514 erweitern, um im Cache 216 gespeicherte Daten zu sichern. Zum Beispiel können die Abbildungen des Abbildungsmoduls 514 als eine Form von Zugangskontrolle verwendet werden, wobei Zugang zu physischen Cache-Stücken 302 auf die virtuelle Maschine beschränkt wird, auf die das physische Cache-Stück 302 abgebildet und/oder dem sie zugeteilt ist. Zum Beispiel kann das mit VM-10 bezeichnete Cache-Stück nur der virtuellen Maschine zugänglich sein, auf die das Stück 302 abgebildet wird (z.B. der virtuellen Maschine 208A). Aufgrund des indirekten Zugriffs auf die Abbildungsschicht können die virtuellen Maschinen 208A-N außerdem nicht in der Lage sein, direkt auf physische Cache-Stücke 302 anderer virtuellen Maschinen 208A-N zu verweisen und/oder diese zu adressieren.
  • Das Abbildungsmodul 514 kann dafür ausgelegt sein, virtuelle Cache-Speicherung unter Verwendung der VMID der entsprechenden virtuellen Maschine abzubilden. Wenn eine virtuelle Maschine zwischen Hosts 202 transferiert und/oder migriert wird, können dementsprechend Abbildungen zwischen der VMID und der Cache-Daten der virtuellen Maschine gültig bleiben (z.B. können bei gegebenen VMID die behaltenen Cache-Daten der entsprechenden virtuellen Maschine 208A-N identifiziert und es kann auf die zugegriffen werden). Weitere Ausführungsformen von Systemen und Verfahren zum dynamischen Zuteilen von Cache-Speicherung in einer virtualisierten Umgebung werden in der US-Patentanmeldung Lfd. Nr. 13/192,365 mit dem Titel „Managing Data Input/Output Operations,“, eingereicht am 27.7.2011, offenbart, auf die hiermit ausdrücklich verwiesen wird.
  • Mit Bezug auf 2B kann das Cache-Bereitstellermodul 214 dafür ausgelegt sein, Cache-Betriebsmittel den virtuellen Maschinen 208A-N dynamisch zuzuteilen. Nach der Bereitstellung kann jede virtuelle Maschine 208A-N über Zugriff auf einen vorbestimmten und/oder zusammenhängenden Bereich von Cache-Speicherbetriebsmitteln (z.B. Cache-Stücken 302 und/oder Cache-Seiten 304) verfügen. Das Cache-Bereitstellermodul 214 kann dafür ausgelegt sein, den Cache 216 in Cache-Stücke 302 aufzuteilen, die dynamisch jeweiligen virtuellen Maschinen 208A-N bereitgestellt werden können.
  • Bei bestimmten Ausführungsformen können die virtuellen Maschinen 208A-N für Verwendung mit Datenträgern mit einer festen Größe ausgelegt sein und können nicht ordnungsgemäß arbeiten, wenn eine plötzliche atypische Änderung der Größe eines Datenträgers (z.B. virtuellen Datenträgers 229) auftritt. Dementsprechend kann das Cache-Bereitstellermodul 214 dafür ausgelegt sein, Cache-Speicherbetriebsmittel, die eine feste Größe aufzuweisen scheinen, zu exponieren, während dynamische Neuzuteilung der zugrundeliegenden Cache-Betriebsmittel gewährleistet wird. Gemäß bestimmten Ausführungsformen und wie in 2B abgebildet kann das Cache-Bereitstellermodul 214 Cache-Betriebsmittel fester Größe unter Verwendung eines Virtuelldatenträger-Treibers 215 emulieren, der dafür ausgelegt sein kann, jeweilige virtuelle Datenträger (VLUN-Datenträger) 229 in den virtuellen Maschinen 208A-N zu exponieren. Die Cache-Tags 221 können deshalb auf Cache-Betriebsmittel in dem virtuellen Datenträger 229 verweisen, die indirekt auf physische Cache-Betriebsmittel in dem Cache 216 verweisen können (z.B. können die Cache-Tags 221 mittels einer Virtuelldatenträger-Abbildung des Abbildungsmoduls 514 wie hier beschrieben indirekte Verweise auf Cache-Betriebsmittel umfassen). Die virtuellen Datenträger 229 können eine feste Größe aufzuweisen scheinen, die die volle Kapazität des Cache 216 (z.B. 2 TB) umfasst, wohingegen nur ein Teil des Cache 216 tatsächlich mittels des Cache-Bereitstellermoduls 214 der virtuellen Maschine 208A-N (z.B. 4 GB) zugeteilt ist. Dementsprechend kann das Cache-Bereitstellermodul 214 dafür ausgelegt sein, Cache-Speicherung dynamisch den virtuellen Maschinen 208A-N zuzuteilen, ohne den Betrieb der virtuellen Maschinen 208A-N zu beeinträchtigen. Der Virtuelldatenträger-Treiber 215 und/oder das Abbildungsmodul 214 können die Abbildungen zwischen indirekten Verweisen der virtuellen Maschinen 208A-N und physischen Cache-Betriebsmitteln verwalten.
  • Das Cache-Bereitstellermodul 214 kann dafür ausgelegt sein, gemäß verschiedenen Cache-Erfordernissen der virtuellen Maschinen 208A-N den virtuellen Maschinen 280A-N verschiedene Mengen Cache-Speicherung zuzuteilen. Das Cache-Bereitstellermodul 214 kann ein Kartenmodul 514 umfassen, dass dafür ausgelegt ist, den virtuellen Maschinen 208A-N (über einen virtuellen Datenträger 229) exponierte virtuelle Speicherbetriebsmittel auf physische Adressen im Cache 216 abzubilden.
  • Wie oben beschrieben, kann der Virtuelldatenträger-Treiber 215 dafür ausgelegt sein (mittels jeweiliger virtueller Datenträger 229) den virtuellen Maschinen 208A-N zusammenhängende Cache-Speicherzuteilungen fester Größe zu präsentieren. Das Abbildungsmodul 514 kann dafür ausgelegt sein, Verweise auf den virtuellen Datenträger 229 auf physische Cache-Adressen (z.B. Cache-Stücke 302 und/oder Cache-Seiten 304) abzubilden. Zum Beispiel ist die der virtuellen Maschine 208A bereitgestellte Cache-Speicherung in Diagrammform als Platz 524 im Cache 216 dargestellt. Der Cache-Platze 524 kann 4 GB umfassen. Der Virtuelldatenträger-Treiber 515 kann diese begrenzte Cache-Kapazität jedoch als einen virtuellen festen 2-TB-Datenträger 229 repräsentieren. Außerdem kann die den virtuellen Maschinen 208A-N zugeteilte Cache-Kapazität (Cache-Stücke 302) in dem physischen Adressraum des Cache 216 auf beliebige Weise ausgeteilt werden (die Stücke 302 können nicht zusammenhängend sein), während die durch den virtuellen Datenträger 229 repräsentierte Cache-Kapazität zusammenhängend sein kann. Das Cache-Bereitstellermodul 214 kann dafür ausgelegt sein, Cache-Speicherungszuteilungen als Reaktion auf sich ändernde Cache-Erfordernisse und/oder wenn virtuelle Maschinen 208A-N zu und von dem Host 202 transferiert werden, dynamisch zu verlagern.
  • Das CMS 220 kann dafür ausgelegt sein, mittels einer oder mehrerer E/A-Schnittstellen 218 eine Schnittstelle mit dem Virtuellmaschinen-Cache 213 zu bilden. Das CMS 220 kann ein SCSI-Filter 319 der E/A-Schnittstelle 218 umfassen, die dafür ausgelegt sein kann, Daten und/oder Steuerinformationen zwischen der virtuellen Maschine 208A (und dem darin operierenden CMS 220) und dem Virtuellmaschinen-Cache 213 (über den virtuellen Datenträger 229) zu übermitteln. Bei bestimmten Ausführungsformen kann das SCSI-Filter 319 in einen E/A-Stapel (oder eine andere E/A-Infrastruktur und/oder ein Nachrichtenübermittlungssystem) der virtuellen Maschine 208A integriert sein. Das SCSI-Filter 319 kann dafür ausgelegt sein, den virtuellen Datenträger 229 zu identifizieren, auf Änderungen in dem virtuellen Datenträger 229 (z.B. dynamische Zuteilung durch das Cache-Bereitstellermodul 214) zu reagieren und so weiter. Wie oben beschrieben, kann der virtuelle Datenträger 229 dafür ausgelegt sein, eine größere feste Speicherkapazität als die tatsächlich der virtuellen Maschine 208A zugeteilte physische Cache-Kapazität zu melden, so dass das Cache-Bereitstellermodul 214 dynamisch Cache-Speicherung bereitstellen kann, ohne die virtuelle Maschine 208A zu beeinträchtigen. Bei bestimmten Ausführungsformen kann das SCSI-Filter 319 dafür ausgelegt sein, die tatsächliche physische Kapazität des virtuellen Datenträgers 229, die vor anderen Anwendungen und/oder Betriebssystemen des Virtuellmaschinen-Hosts 202 verborgen sein kann, zu verwalten. Zum Beispiel kann der VLUN-Datenträger 229 als eine Nurlese-Speichervorrichtung präsentiert werden, wodurch verhindert werden kann, das andere Anwendungen in der virtuellen Maschine 208A und/oder dem Host 202 Daten in den virtuellen Datenträger 229 schreiben.
  • Das Cache-Bereitstellermodul 214 kann die der virtuellen Maschine 208A zugeteilte tatsächliche Cache-Speicherung mittels einer Kommunikationsverbindung 343 melden, die das SCSI-Filter 319 umfasst. Die Kommunikationsverbindung 343 kann getrennt von E/A-Verkehr zwischen dem Virtuelldatenträger-Treiber 215 und dem SCSI-Filter 319 arbeiten. Somit können asynchrone Außerbandnachrichten zwischen dem Virtuelldatenträger-Treiber 215 und dem SCSI-Filter 319 gesendet werden. Das SCSI-Filter 319 kann Zuteilungsinformationen (und andere Befehls- und/oder Steuerinformationen) dem CMS 220 melden, das mit den Zuteilungsinformationen die Anzahl der Cache-Tags 221, die der virtuellen Maschine 208A verfügbar sind, bestimmen kann. Dementsprechend kann der Cache mit Bezug auf die virtuellen Maschinen 208AN dünn bereitgestellt werden, und Cache-Zuteilungen können gemäß den Cache-Erfordernissen der virtuellen Maschinen 208A-N dynamisch variieren.
  • 6 ist ein Blockschaltbild einer Ausführungsform eines CMS 220. Das CMS 220 kann ein oder mehrere Module umfassen, darunter ein Cache-Richtlinienmodul 601, ein Adressraum-Übersetzungsmodul 602, ein Cache-Tag-Manager 604, ein Uhr-Sweep-Modul 606, ein Stehl-Kandidatenmodul 608, ein Cache-Seiten-Verwaltungsmodul 610, ein Gültige-Einheit-Abbildungsmodul 612, ein Seitengrößen-Verwaltungsmodul 614, ein Schnittstellenmodul 616, ein Cache-Tag-Retentionsmodul 618 und ein Cache-Tag-Schnappschussmodul 619.
  • Das Cache-Richtlinienmodul 601 kann dafür ausgelegt sein, auf der Basis verschiedener Cache-Zulassungskriterien und/oder -richtlinien Daten für Zulassung in den Cache auszuwählen. Das Cache-Richtlinienmodul 601 kann ferner dafür ausgelegt sein, einen Persistenzgrad für in den Cache zugelassene Daten zu bestimmen. Der Persistenzgrad kann u.a. einen Cache-Speicherungsmodus und/oder eine Konfiguration für die Daten bestimmen, wie etwa Hindurchschreiben, Rückschreiben, vergänglich oder dergleichen. Bei bestimmten Ausführungsformen umfasst das Cache-Richtlinienmodul 601 ein Persistenzgradmodul 134 und eine Persistenzgradrichtlinie 135, um Cache-Daten Persistenzgrade zuzuweisen. Als Alternative oder zusätzlich kann der Persistenzgrad von in den zuzulassenden Daten durch eine andere Entität oder einen anderen Prozess bestimmt werden, wie etwa ein Speichermodul 130 wie hier beschrieben. Das CMS 220 kann ferner ein Cache-Ausführungsmodul 636 umfassen, das dafür ausgelegt sein kann, Daten gemäß einem ausgewählten Persistenzgrad im Cache zu speichern. Das Cache-Ausführungsmodul 636 kann deshalb dafür ausgelegt sein, Daten in einem oder mehreren verschiedenen Cache-Modi und/oder einer oder mehreren verschiedenen Konfigurationen im Cache zu speichern. Zum Beispiel kann das Cache-Ausführungsmodul 636 dafür ausgelegt sein, Daten in einem Hindurchschreib-Cache-Modus im Cache zu speichern, der umfassen kann, Schreib-E/A-Anforderungen 116 durch Schreiben von Daten in ein oder mehrere primäre Speicherbetriebsmittel 240B-N und in den Virtuellmaschinen-Cache 213 zu versorgen. Das CMS 220 kann Abschluss der Schreib-E/A-Anforderung 116 erst bestätigen, wenn die Daten in das eine oder die mehreren primären Speicherbetriebsmittel 240B-N geschrieben sind. Das Cache-Ausführungsmodul 636 kann dafür ausgelegt sein, Daten in einem vergänglichen Cache-Modus im Cache zu speichern, der umfassen kann, Schreib-E/A-Anforderungen 116 durch Schreiben von Daten in den Virtuellmaschinen-Cache 213 zu versorgen, ohne die Daten in einem primären Speicherbetriebsmittel 240B-N oder einem anderen Backing-Store zu speichern. Dementsprechend kann das CMS 220 Abschluss einer Schreib-E/A-Anforderung 116, die einem vergänglichen Cache-Modus zugewiesen ist, als Reaktion auf das Schreiben der Daten in den Virtuellmaschinen-Cache 213 bestätigen.
  • Das Übersetzungsmodul 602 kann dafür ausgelegt sein, logische Kennungen (z.B. Adressen in einem primären Speichersystem) der Cache-Tags 221 mit Cache-Speicherstellen (z.B. Cache-Adressen, Cache-Stücken 302, Cache-Seiten 304 oder dergleichen) in dem Virtuellmaschinen-Cache 213 zu korrelieren. Wie oben beschrieben, können die Cache-Tags 221 „indirekten“ und/oder „virtuellen“ Cache-Speicherbetriebsmitteln in einem virtuellen Datenträger 229 entsprechen, die durch das Cache-Bereitstellermodul 214 und/oder das Abbildungsmodul 515 auf physische Cache-Speicherbetriebsmittel (z.B. Cache-Stücke 302) abgebildet werden können.
  • Der Cache-Tag-Manager 604 kann dafür ausgelegt sein, die Cache-Tags, die dem CMS 220 wie hier beschrieben zugeteilt werden, zu verwalten, was Unterhalten von Zuordnungen zwischen Virtuellmaschinen-Kennungen (z.B. logischen Kennungen, Adresse, primären Speicheradressen) und Daten im Cache 216 und Unterhalten von Cache-Metadaten wie etwa Zugriffskenngrößen, Persistenzgrad, Cache-Modus und dergleichen, umfassen kann.
  • Das Uhr-Sweep-Modul 606 kann dafür ausgelegt sein, u.a. unter Verwendung eines oder mehrerer Uhrzeiger-Sweep-Timer Cache-Alterungsmetadaten zu bestimmen und/oder zu unterhalten. Das Stehl-Kandidat-Modul 608 kann dafür ausgelegt sein, u.a. auf der Basis von Uhr-Sweep-Metadaten oder anderen Cache-Richtlinien Cache-Daten und/oder Cache-Tags zu identifizieren, die Kandidaten für Hinauswurf sind. Bei bestimmten Ausführungsformen kann das Stehl-Kandidatenmodul 608 dafür ausgelegt sein, Cache-Tag-Hinauswurfverweis auf Persistenzgrad-Metadaten der Cache-Tags 221 zu prädikatisieren. Zum Beispiel kann das Stehl-Kandidatmodul 608 Cache-Tags 221, die in einem vergänglichen Cache-Modus Cache-gespeichert sind, nicht für Hinauswurf auswählen. Als Alternative kann das Stehl-Kandidatenmodul 608 zuerst vergängliche Cache-Tags 221 vor dem Hinauswurf in ein primäres Speicherbetriebsmittel 240B-N ausräumen.
  • Das Cache-Seiten-Verwaltungsmodul 610 kann dafür ausgelegt sein, Cache-Betriebsmittel (z.B. Cache-Seitendaten) und diesbezügliche Operationen zu verwalten. Das Gültige-Einheit-Abbildungsmodul 612 kann dafür ausgelegt sein, gültige Daten zu identifizieren, die in dem Virtuellmaschinen-Cache 213 und/oder einem primären Speicherbetriebsmittel 240B gespeichert sind. Das Seitengrößen-Verwaltungsmodul 614 kann dafür ausgelegt sein, verschiedene Seitengrößenanalyse- und -justierungsoperationen auszuführen, um die Cache-Leistungsfähigkeit wie hier beschrieben zu verbessern. Das Schnittstellenmodul 616 kann dafür ausgelegt sein, eine oder mehrere Schnittstellen bereitzustellen, um es anderen Komponenten, Vorrichtungen und/oder Systemen zu erlauben, die dem CMS 220 in Interaktion zu treten.
  • Das Cache-Tag-Retentionsmodul 618 kann dafür ausgelegt sein, als Reaktion auf den Transfer des CMS 220 zu einem anderen Host die Cache-Tags 221 zu behalten. Wie oben beschrieben, können die Cache-Tags 221 eine Arbeitsmenge des Cache repräsentieren, die durch Verwendung einer oder mehrerer Cache-Zulassungs- und/oder Hinauswurfrichtlinien (z.B. das Uhr-Sweep-Modul 606 und/oder das Stehl-Kandidaten-Modul 608) und als Reaktion auf die E/A-Kenngrößen der virtuellen Maschine 208 (und /oder der auf der virtuellen Maschine 208A-N laufenden Anwendungen) entwickelt werden kann. Das Cache-Tag-Retentionsmodul 618 kann dafür ausgelegt sein, die Cache-Tags 221 zu behalten, nachdem die virtuellen Maschine 208 zu einem neuen Host 202 transferiert wird (u.a. in einer VMotion™-Operation von Host 202A zu Host 202B transferiert wird), trotz des Umstands, dass die zugrundeliegenden Cache-Daten, auf die sich die Cache-Tags beziehen, auf der Cache-Speichervorrichtung des neuen Hosts nicht verfügbar sein können. Der hier beschriebene Virtuellmaschinen-Cache 213 kann jedoch dafür ausgelegt sein, den Cache 216 im neuen Host aufzufüllen, so dass das CMS 220 die Arbeitsmenge von Cache-Tags 221 weiter benutzen kann.
  • Wie oben beschrieben, können Daten der behaltenen Cache-Tags 221 von dem vorherigen Host (und/oder von primären Speicherbetriebsmitteln 204B-N oder einer anderen Quelle) zu dem neuen Host transferiert werden. Die Daten können über ein Bedarfs-Paging-Modell transferiert werden, das umfassen kann, den Cache „bedarfsgesteuert“ aufzufüllen, während die Cache-Daten verschiedener behaltener Cache-Tags 221 durch die virtuelle Maschine 208 angefordert werden. Als Alternative oder zusätzlich können Cache-Daten in einer „Massentransfer“-Operation vorabgerufen und/oder transferiert werden, die Transferieren von Cache-Daten unabhängig von Anforderungen der Cache-Tag-Daten umfassen kann. Bei bestimmten Ausführungsformen können Daten selektiv auf der Basis einer Cache-Transferrichtlinie vorabgerufen werden, die mindestens teilweise auf den Cache-Alterungsmetadaten des Uhr-Sweep-Moduls 606 und/oder des Stehl-Kandidatenmoduls 608 und/oder anderen Cache-Richtlinienmetadaten (z.B. Hotness, Coldness, Least Recently Used oder dergleichen) basieren kann.
  • Das Cache-Tag-Schnappschussmodul 619 kann dafür ausgelegt sein, einen oder mehrere „Schnappschüsse“ der Arbeitsmenge des Cache (z.B. der Cache-Tags 221) zu unterhalten. Wie oben beschrieben, bezieht sich ein Schnappschuss auf eine Menge von Cache-Tags 221 zu einem bestimmten Zeitpunkt. Das Schnappschussmodul 619 kann dafür ausgelegt sein, einen Schnappschuss der Cache-Tags 221 auf einem persistenten Speichermedium zu speichern und/oder einen gespeicherten Schnappschuss wie oben beschrieben zu laden.
  • Wie oben beschrieben, kann das CMS 220 dafür ausgelegt sein, Daten gemäß einem oder mehreren verschiedenen Graden der Persistenz im Cache zu speichern, die der Cache-Speicherung von Daten in einem oder mehreren verschiedenen Cache-Modi und/oder einer oder mehreren verschiedenen primären Speichervorrichtung(en) 240B entsprechen kann. Das CMS 220 kann adaptive Persistenzgrade benutzen, um die E/A-Leistungsfähigkeit zu verbessern und/oder das Konsolidierungsverhältnis des Hosts 202 zu vergrößern. Im vorliegenden Gebrauch bezieht sich ein „Konsolidierungsverhältnis“ eines Hosts 202 auf die Anzahl der virtuellen Maschinen 208A-N, die auf dem Host 202 operieren können. Die Anzahl der virtuellen Maschinen 208A-N, die auf dem Host 202 operieren können, kann durch die Datenverarbeitungsbetriebsmittel des Hosts 202 und/oder das E/A-Overhead der Hosts 202 begrenzt werden.
  • In hochkonsolidierten VDI-Umgebungen können sich die virtuellen Maschinen 208A-N gemeinsame E/A-Kenngrößen teilen, wodurch die E/A-Infrastruktur des Hosts 202 angespannt werden kann. Die virtuellen Maschinen 208A-N können sich ähnliche Datenmengen (z.B. Betriebssysteme, Anwendungen, Benutzerprofilinformationen oder dergleichen) teilen, und die virtuellen Maschinen 208A-N können dafür ausgelegt sein, zu ähnlichen Zeitpunkten auf diese gemeinsame Daten zuzugreifen (z.B. während des Bootens, Herauffahrens, zur Anmeldezeit oder dergleichen). Die resultierenden „Boot-Stürme“ können die primären Speicherbetriebsmittel 240B-N und/oder die E/A-Infrastruktur des Hosts 202 überwältigen, was die Gesamt-Systemleistungsfähigkeit signifikant verschlechtern kann. Ähnliche Dateizugriffs-„Stürme“ können als Reaktion darauf auftreten, dass die virtuellen Maschinen 208A-N bestimmte Anwendungen laden, auf geteilte Daten zugreifen, auf Benutzerprofilinformationen zugreifen, einen Anmeldeprozess ausführen usw. Außerdem kann jede der virtuellen Maschinen 208A-N ein jeweiliges CMS 220 umfassen, die jeweils ähnliche Datenmengen in den geteilten Virtuellmaschinen-Cache 213 zulassen können, wodurch der Virtuellmaschinen-Cache 213 mit duplikativen Daten gefüllt werden kann. Ausführungsformen von Systemen und Verfahren zur Verbesserung der Leistungsfähigkeit von lesezentrischen E/A-Operationen werden in der US-Patentanmeldung Lfd. Nr. 13/750,904 mit dem Titel „Systems and Methods for a De-Duplication Cache,“, eingereicht am 25.1.2013, offenbart, auf die hiermit ausdrücklich verwiesen wird.
  • Die Leistungsfähigkeit von schreibzentrischen E/A-Operationen kann durch Verwendung der hier offenbarten adaptiven Persistenzgrade verbessert werden. Zum Beispiel kann eine virtuelle Maschine 208A-N eine große Anzahl von E/A-Anforderungen 116 ausgeben, um Daten zu schreiben, die nicht für einen größeren Zeitraum bewahrt werden müssen (z.B. nicht zwischen Neuboot-Zyklen behalten werden müssen). Solche Daten können als vergänglich angesehen werden (z.B. „temporäre“, „wegwerfbare“ und/oder „entbehrliche“ Daten). Im vorliegenden Gebrauch umfasst ein „Neuboot-Zyklus“ oder eine „Neustart-Operation“ ein beabsichtigtes oder unbeabsichtigtes Neustarten und/oder Neubooten der Datenverarbeitungsumgebung 110 und/oder des Speichermoduls 130, das u.a. durch einen Stromausfall, einen Hardwarefehler, einen Softwarefehler, ein beabsichtigtes Herunterfahren oder Neustarten oder dergleichen verursacht werden kann. Dementsprechend kann eine Neustartoperation ein System-Neubooten, ein Rücksetz- oder Runterfahrereignis; einen Stromversorgungsfehler, Stromverlust oder ein Stromausfallereignis; oder eine andere Unterbrechung der Stromversorgung umfassen. Vergängliche Daten können von kritischer Wichtigkeit sein, während die Datenverarbeitungsvorrichtung (z.B. die virtuelle Maschine 208A-N) arbeitet, können aber nach einem Neuboot-Zyklus und/oder Neustartereignis nicht benötigt werden. Beispiele für solche Daten wären, aber ohne Beschränkung darauf, Swap-Dateien, wie etwa virtuelle Speicherdateien (z.B. pagfile.sys oder dergleichen); temporäre Dateien wie etwa die Inhalts-Temporärverzeichnisse (z.B. /tmp oder dergleichen); temporäre Anwendungsdateien (z.B. lokaler Cache von Microsoft Word® oder dergleichen); und so weiter. Im Gegensatz dazu beziehen sich „permanente“ Daten auf Daten, die zwischen Boot-Zyklen und/oder Neustartereignissen behalten werden sollten.
  • Bei bestimmten Ausführungsformen ist das CMS 220 dafür ausgelegt, E/A-Anforderungen, die entbehrliche Daten betreffen, zu identifizieren, und kann Daten der E/A-Anforderungen in einer vergänglichen Cache-Konfiguration Cache-Speichern. Wie oben offenbart, bezieht sich eine vergängliche Cache-Konfiguration auf einen Cache-Modus, in dem Daten in Cache-Speicherung geschrieben (und/oder daraus gelesen) werden, aber nicht in ein primäres Speicherbetriebsmittel 240B-N hindurchgeschrieben, zurückgeschrieben und/oder kopiert werden. Die in einem vergänglichen Cache gespeicherten Daten können dementsprechend verloren gehen, wenn die Daten aus dem Cache hinausgeworfen werden und/oder wenn der Cache bei einem Neubooten, Absturz oder dergleichen verloren geht.
  • Das Speichern von Daten in einem vergänglichen Cache-Modus und/oder einer vergänglichen Konfiguration kann signifikante Leistungsfähigkeitsvorteile bereitstellen: E/A-Anforderungen 116, die vergängliche Cache-Daten betreffen, erfordern keine Zugriffe auf primäre Speicherbetriebsmittel 140B-N und die den primären Speicherbetriebsmittel 240B-N zugordnete Latenz kann aus dem „kritischen Pfad“ zur Versorgung von E/A-Anforderungen 116 entfernt werden. Im vorliegenden Gebrauch bezieht sich der „kritische Pfad“ auf den Timing- und/oder Latenzpfad einer E/A-Operation. Wie oben beschrieben, können bei Hindurchschreib-Cache-Konfigurationen Schreib-E/A-Anforderungen 116 erst abgeschlossen sein (z.B. Kontrolle an den Speicher-Client 106A-N zurückgeben), wenn Daten in die primären Speicherbetriebsmittel 140B-N hindurchgeschrieben sind. Deshalb umfasst der kritische Pfad der E/A-Operation einen oder mehrere Hochlatenz-Primärspeicherungszugriffe. Im Gegensatz dazu können Cache-Operationen, die vergängliche Daten betreffen, ausschließlich im Cache abgeschlossen werden, ohne auf die primären Speicherbetriebsmittel 240B-N zuzugreifen. Der kritische Pfad einer vergänglichen E/A-Operation umfasst deshalb nicht Hochlatenzzugriffe auf primäre Speicherbetriebsmittel 240B-N. Zusätzlich zu dem Verringern der Latenz für die Speicher-Clients 106A-N kann deshalb vergängliche Cache-Speicherung den zusätzlichen Vorteil bereitstellen, die E/A-Bandbreite und/oder die Last an den primären Speicherbetriebsmitteln 240B-N zu verringern.
  • Bei bestimmten Ausführungsformen kann das CMS 220 Daten für vergängliche Cache-Speicherung auf der Basis eines Persistenzgrads der E/A-Anforderung 116 identifizieren, der durch das Cache-Richtlinienmodul 601 und/oder das Persistenzgradmodul 134 bestimmt wird, die einen Persistenzgrad für eine E/A-Anforderung gemäß einer Persistenzgradrichtlinie 135 (z.B. Persistenzgradkriterien) bestimmen kann, die auf Eigenschaften der E/A-Anforderungen 116 und/oder aus den E/A-Anforderungen 116 gefolgertem und/oder die E/A-Anforderungen 116 betreffenden Profilierungsmetadaten, Dateiebenenwissen und/oder Anwendungsebenenwissen und/oder Präferenzen und/oder Konfiguration, Tests und Erfahrung und so weiter basieren kann.
  • 7A ist ein Blockschaltbild einer anderen Ausführungsform eines CMS 220. Das CMS 220 kann ein Cache-Speicherbetriebsmittel 240A über eine E/A-Schnittstelle 218 umfassen und/oder kommunikativ damit gekoppelt sein. Das CMS 220 kann in einer Betriebsumgebung 711 eingesetzt werden, die ein Betriebssystem umfassen kann, das in einer Bare-Metal-Datenverarbeitungsumgebung operiert. Dementsprechend kann das CMS 220 dafür ausgelegt sein, direkt über die E/A-Schnittstelle 218 auf das Cache-Speicherbetriebsmittel 240A zuzugreifen; die E/A-Schnittstelle 218 kann eine API, einen Bus, ein Protokoll oder dergleichen umfassen. Bei bestimmten Ausführungsformen kann die Betriebsumgebung 711 eine virtuelle Betriebsumgebung sein, wie etwa ein virtuelles Betriebssystem, ein Gast-Betriebssystem oder dergleichen. Das CMS 220 kann dafür ausgelegt sein, auf ein virtualisiertes Cache-Speicherbetriebsmittel 240A zuzugreifen, das als ein virtueller Datenträger 229 wie oben beschrieben repräsentiert werden kann. Das CMS 220 kann ferner dafür ausgelegt sein, Daten, Steuer- und/oder Konfigurationsdaten über ein SCSI-Filter 319 wie oben beschrieben zu und von dem Cache-Speicherbetriebsmittel 240A zu transferieren.
  • Das E/A-Anforderungsempfängermodul 132 des CMS 220 kann einen Agenten 133 umfassen, der dafür ausgelegt ist, E/A-Anforderungen in einem E/A-Stapel 117 der Betriebsumgebung 711 zu überwachen. Der E/A-Stapel 117 kann mehrere Schichten 717A-N umfassen, darunter eine Dateisystemschicht 717A. Der Agent 133 kann dafür ausgelegt sein, E/A-Anforderungen 116 in einer beliebigen der Schichten 717A-N zu überwachen. Die E/A-Anforderungen können Dateioperationen betreffen, wie etwa Datei öffnen, schließen, lesen, schreiben, modifizieren, und dergleichen. Der Agent 133 kann andere Arten von E/A-Anforderungen überwachen, wie etwa Volumeneinhängung und/oder -aushängung, Datenträger-Einhängung und/oder -Aushängung, Paging-E/A und so weiter. Der Agent 133 kann E/A-Anforderungen 116 unter Verwendung einer Schnittstelle überwachen, die durch die Datenverarbeitungsumgebung 111 den E/A-Stapel 117 und/oder dergleichen bereitgestellt wird. Dementsprechend kann der Agent 133 einen oder mehrere E/A-Überwacher, Dateifiltertreiber, Volumenfiltertreiber, SCSI-Filtertreiber und/oder andere geeignete Überwachungs- und/oder Filterungsmodule umfassen.
  • Das CMS 220 kann ein Cache-Richtlinienmodul 601 umfassen, das u.a. Cache-Zulassungskriterien, Cache-Hinauswurfkriterien und so weiter definieren kann. Dementsprechend kann das Cache-Richtlinienmodul 601 ein Uhr-Sweep-Modul, ein Stehl-Kandidatenmodul, ein Cache-Tag-Retentionsmodul und/oder ein Cache-Tag-Schnappschussmodul wie hier beschrieben umfassen. Das CMS 220 kann mit dem Cache-Richtlinienmodul 601 Cache-Zulassungs- und/oder - Hinauswurfentscheidungen auf der Basis von Cache-Zugriffsmetadaten, Zulassungskriterien (z.B. Dateiauswahlkriterien) und so weiter treffen.
  • Bei bestimmten Ausführungsformen kann das Cache-Richtlinienmodul 601 ferner dafür ausgelegt sein, einen Persistenzgrad für E/A-Anforderungen 116 zu bestimmen und/oder zuzuweisen. Der Persistenzgrad einer E/A-Anforderung kann u.a. einen Cache-Modus und/oder eine Konfiguration für in das Speicherbetriebsmittel 240A zugelassene Daten bestimmen. Dementsprechend kann das Cache-Richtlinienmodul 601 ein Persistenzgradmodul 731 umfassen, das dafür ausgelegt ist, einen Persistenzgrad von E/A-Anforderungsdaten wie hier beschrieben zu bestimmen. Bei bestimmten Ausführungsformen kann das Bestimmen und/oder Zuweisen eines Persistenzgrads für eine E/A-Anforderung 116 Anwendung von Persistenzgradkriterien auf eine oder mehrere Kenngrößen der E/A-Anforderung 116 umfassen, wozu Dateiebenenkriterien wie ein Dateiname, Pfad, Verzeichnis, Volumen oder dergleichen gehören können. 7B zeigt eine Ausführungsform einer Persistenzgradrichtlinie 735. Wie in 7B gezeigt, betreffen die Persistenzgradkriterien 737 dateibezogene Kenngrößen von E/A-Anforderungen 116. Die Persistenzgradrichtlinie 735 kann bestimmte Dateinamen (z.B. „pagefile.sys“), Dateipfade und/oder Volumen auf jeweilige Persistenzgrade 739 abbilden. Dateien, die temporäre, wegwerfbare Daten betreffen, wie etwa Daten des „pagefile.sys“ und/oder „lokalem Cache“, können einen Persistenzgrad 739 zugewiesen bekommen, der einen vergänglichen (Niemals-Schreiben-)Cache-Modus spezifiziert. Andere potentielle Eigenschaften des Persistenzgrads 739 werden weggelassen, um eine Verschleierung der Einzelheiten dieser Ausführungsformen zu vermeiden.
  • Die Persistenzgradrichtlinie 735 kann andere Arten von Persistenzgraden spezifizieren. Zum Beispiel können Daten von wichtigen Dateien in einem Persistenzgrad 739 gespeichert werden, der einen Hindurchschreib-Cache-Speicherungsmodus angibt. Der Persistenzgrad 739 kann ferner angeben, dass Daten in einem oder mehreren redundanten Speicherbetriebsmitteln 240B-N (z.B. in einer bestimmten RAID-Ebene, Spiegelungskonfiguration oder dergleichen) zu speichern sind. Als Reaktion kann das CMS 220 dafür ausgelegt sein, Daten von E/A-Anforderungen 116, die Dateien betreffen, die das Dateiauswahlkriterium „\\Anwendung\kritische Daten“ erfüllen, in ein redundantes primäres Speicherbetriebsmittel 240A-N und/oder in einem entsprechenden Speichermodus hindurchzuschreiben. Andere Speicherdienste, wie etwa das (in 7A nicht gezeigte) Speichermodul 130, können die Persistenzgradrichtlinie 735 erweitern, um Daten gemäß den darin festgelegten Persistenzgrad(en) zu speichern, gleichgültig, ob die bestimmte E/A-Anforderung 116 durch das CMS 220 versorgt wird.
  • Die Persistenzgradrichtlinie 735 kann zusätzlich zu und/oder anstelle von dateibezogenen Kenngrößen andere E/A-Anforderungskenngrößen beinhalten. Zum Beispiel kann die Persistenzgradrichtlinie 735 Anwendungen identifizieren und/oder designieren, von denen bekannt ist, dass sie temporäre, wegwerfbare Schreiboperationen verwenden, so dass E/A-Anforderungen 116 solche Anwendungen gemäß einem Persistenzgrad 739 Cache-gespeichert werden, der eine vergängliche Cache-Konfiguration umfasst. Zum Beispiel können die Persistenzgradkriterien 737 angeben, dass E/A-Anforderungen 116, die aus der Word®-Anwendung stammen und an Dateien in einem lokalen Cache gerichtet sind, in einem vergänglichen Persistenzgrad 739 versorgt werden sollten. Die Persistenzgradrichtlinie 735 kann ferner Vorgabe- und/oder Wildcard-Kriterien umfassen, wie etwa einen Vorgabe-Hindurchschreib-Cache-Modus-Persistenzgrad 739.
  • Das CMS 220 kann dafür ausgelegt sein, einen existierenden Cache-Manager 709 der Betriebsumgebung 711 transparent zu erweitern. Dementsprechend können das CMS 220 und/oder der Agent 133 dafür ausgelegt sein, verschiedene E/A-Anforderungstypen zu unterscheiden, wie etwa, aber ohne Beschränkung darauf, Nicht-Paging-E/A-Anforderungen, Paging-E/A-Anforderungen, direkte E/A-Anforderungen und dergleichen. Das CMS 220 und/oder der Agent 133 können dafür ausgelegt sein, bestimmte Arten von E/A-Anforderungen 116 zu ignorieren, wie etwa direkte E/A-Anforderungen, von denen erwartet wird, dass sie direkt auf primäre Speicherbetriebsmittel 240B-N zugreifen, und/oder Nicht-Paging-E/A-Anforderungen, die den existierenden Cache-Manager 709 betreffen.
  • Wie hier offenbart weist das Persistenzgradmodul 134 einer E/A-Anforderung 116 einen Persistenzgrad mindestens teilweise auf der Basis eines Ziels und/oder einer Quelle der E/A-Anforderung 116 (z.B. Dateiname) zu. Bei bestimmten Ausführungsformen kann das CMS 220 E/A-Anforderungsmetadaten 733 unterhalten, wie zum Beispiel, aber ohne Beschränkung darauf, die Quellenkennung von E/A-Anforderungen 116 (z.B. Dateiname, Pfad oder dergleichen), den Persistenzgrad der E/A-Anforderungen 116 und dergleichen. Der Agent 133 kann als Reaktion auf das Detektieren einer anfänglichen E/A-Anforderung 116, die eine Dateioperation, wie etwa ein Datei öffnen, lesen, kopieren, löschen, erzeugen, abschneiden, modifizieren, schreiben oder dergleichen, betrifft, Kontextmetadaten 733 erzeugen. Der Agent 133 kann mit den E/A-Anforderungsmetadaten (z.B. dem Kontext) 733 die E/A-Anforderung 116 (und nachfolgend diesbezügliche E/A-Anforderungen 116) einer entsprechenden Quellenkennung, wie etwa einer Dateikennung, einem Dateinamen, einer Volumenkennung, einer Datenträgerkennung oder dergleichen zuordnen. Bei bestimmten Ausführungsformen kann der Agent 133 eine Angabe umfassen, ob eine bestimmte Datei (und/oder eine entsprechende E/A-Anforderung) cachbar ist (Daten betrifft, die in den Cache zugelassen werden sollten) und/oder des Persistenzgrads der E/A-Anforderung 116. Das CMS 220 kann auf die E/A-Anforderungsdaten 733 zugreifen, um zu bestimmen, ob nachfolgende E/A-Anforderungen 116 Cache-gespeichert werden sollten und/oder den Persistenzgrad der E/A-Anforderung 116 zu bestimmen, ohne erneut Cache-Zulassungskriterien und/oder die Persistenzgradrichtlinie 735 anzuwenden. Die E/A-Anforderungsmetadaten 733 können Kontextdaten einer E/A-Anforderung 116 umfassen und/oder können in einer getrennten Datenstruktur unterhalten werden. Die E/A-Anforderungsmetadaten 733 können in einer beliebigen geeigneten Datenstruktur (z.B. Tabelle, Hash-Tabelle, Abbildung oder Baum) gespeichert werden und können nach Quellenkennung, Dateinamen oder dergleichen indexiert werden.
  • In einem Beispiel kann ein Speicher-Client 106A-N mehrere Dateien öffnen, was zu entsprechenden Dateiöffnungs-E/A-Anforderungen 116 führt. Der Agent 133 kann die E/A-Anforderung 116 mit entsprechenden E/A-Anforderungsmetadaten 733 assoziieren, die eine Quellenkennung der Datei, eine Angabe, ob die Datei in dem Cache zugelassen werden sollte, einen Persistenzgrad der E/A-Anforderungen 116 und so weiter umfassen können. Der Speicher-Client 106A-N kann E/A-Operationen an den Dateien ausführen, die unter Verwendung des existierenden Cache-Managers 709 versorgt werden können und die der Agent 133 ignorieren kann. Gemäß der Cache-Richtlinie der Datenverarbeitungsumgebung 111 kann der existierende Cache-Manager 709 ausgeräumt werden, dass zu einer oder mehreren Paging-E/A-Anforderungen 116 führt, die durch den Agenten 133 detektiert werden können. Als Reaktion kann der Agent 133 auf die E/A-Anforderungsmetadaten (z.B. den Kontext) 733 der Paging-E/A-Anforderungen 116 zugreifen, um die Quellenkennung(en) der Anforderungen zu bestimmen, zu bestimmen, ob die E/A-Anforderungen 116 in den Cache zuzulassende Daten betreffen, einen Persistenzgrad der E/A-Anforderung 116 zu bestimmen und so weiter. E/A-Anforderungen 116, die Daten betreffen, die in dem Cache zuzulassen sind, können unter Verwendung des CMS 220 gemäß einem zugewiesenen Persistenzgrad wie hier beschrieben versorgt werden.
  • Wie oben offenbart kann der Persistenzgrad der E/A-Anforderungen 116 auf der Persistenzgradrichtlinie 735, wie etwa Persistenzgradkriterien 737, prädikatisiert werden. Die Persistenzgradrichtlinie 735 kann durch einen Benutzer (oder eine andere Entität, wie etwa einen Profilierungsprozess oder dergleichen) konfigurierbar sein. Das CMS 220 kann eine Konfigurationsschnittstelle 740 umfassen, durch die die Persistenzgradrichtlinie 735 und/oder die Persistenzgradkriterien 737 spezifiziert werden können.
  • Bei bestimmten Ausführungsformen kann das CMS 220 dafür ausgelegt sein, einen Persistenzgrad eines Cache-Tags 221 während des Betriebs zu modifizieren. Zum Beispiel kann das CMS 220 dafür ausgelegt sein, in einer vergänglichen Cache-Konfiguration gespeicherte Daten auf das primäre Speicherbetriebsmittel 240B-N „auszuräumen“. Im vorliegenden Gebrauch umfasst das Ausräumen von vergänglichen Cache-Daten Speichern der vergänglichen Cache-Daten in einem primären Speicherbetriebsmittel 240B-N und/oder Hinauswerfen der Daten aus dem Cache. Vergängliche Cache-Daten können als Reaktion darauf hinausgeworfen werden, dass eine E/A-Anforderung 116 bestimmte Arten von E/A-Anforderungen 116 betrifft (z.B. unabgewickelte E/A-Anforderungen 116, wie etwa Abschneiden, translational oder dergleichen). Als Reaktion auf eine solche E/A-Anforderung 116 kann das CMS 220 dafür ausgelegt sein, die vergänglichen Cache-Daten in ein primäres Speicherbetriebsmittel bzw. primäre Speicherbetriebsmittel 240B-N auszuräumen, wodurch der Betriebsumgebung 711 erlaubt wird, die E/A-Anforderung 116 zu versorgen, und die Daten wieder (im vergänglichen Cache-Modus und/oder in der vergänglichen Konfiguration) in dem Cache zuzulassen.
  • Das CMS 220 kann ferner dafür ausgelegt sein, E/A-Konflikte zu verwalten, die vergängliche Cache-Daten betreffen. Bei bestimmten Ausführungsformen behandelt dass CMS 220 E/A-Konflikte (z.B. gleichzeitige Anforderungen des Zugriffs auf ein Cache-Tag 221) durch Invalidierung des Cache-Tags 221, das Hinauswerfen der Daten aus dem Cache umfassen kann. Das CMS 220 kann mit vergänglichen Cache-Daten anders umgehen. Da vergängliche Cache-Daten nur im Cache gespeichert sind (und das Ausräumen der vergänglichen Cache-Daten einen Hochlatenzzugriff auf primäre Speicherbetriebsmittel 240B-N erfordert), kann das CMS 220 dafür ausgelegt sein, in Konflikt stehende Anforderungen einzuteilen und/oder zurückzustellen, statt das vergängliche Cache-Tag 221 zu invalidieren.
  • Weitere Ausführungsformen von Systemen und Verfahren zum Cache-Speichern von Daten gemäß E/A-Anforderungen in einem E/A-Stapel 117 werden in der US-Patentanmeldung, Lfd. Nr. 13/287,998 mit dem Titel „Systems and Methods for a File-Level Cache“, eingereicht am 25.8.2012, und in der US-Patentanmeldung, Lfd. Nr. 12/288,005 mit dem Titel „Systems and Methods for a Multi-Level Cache“, eingereicht am 25.8.2012, offenbart, auf die beide hiermit ausdrücklich verwiesen wird.
  • 7C zeigt eine andere Ausführungsform eines CMS 220. Wie oben beschrieben, kann die Versorgung einer Schreib-E/A-Anforderung 116 in einem vergänglichen Cache-Modus umfassen, Daten in ein Cache-Speicherbetriebsmittel 240A zu schreiben, ohne die Daten in ein primäres Speicherbetriebsmittel 240B-N (z.B. einen Backing-Store) zu schreiben. Dementsprechend können vergängliche Cache-Operationen ausschließlich in einem „schnellen Pfad“ 782 implementiert werden, der sich außerhalb des E/A-Stapels 117 der Betriebsumgebung 711 befindet, und ohne Beteiligung von Operationen auf langsameren primären Speicherbetriebsmitteln 240B-N. Im vorliegenden Gebrauch bezieht sich eine „schneller Pfad“-Operation auf eine E/A-Operation, die außerhalb des E/A-Stapels 117 der Betriebsumgebung 711 und/oder ohne Beteiligung von langsamen primären Speicherbetriebsmitteln 240B-N stattfindet. Eine „langsamer Pfad“-Operation bezieht sich auf eine E/A-Operation, an der eine oder mehrere Schichten des E/A-Stapels 117 beteiligt sind und/oder die gegenüber einem oder mehreren primären Speicherbetriebsmitteln 240B-N ausgeführt wird.
  • Bei Daten, die in einem nichtvergänglichen Cache-Modus (z.B. Hindurchschreib- und/oder Rückschreib-Cache-Modus, bestimmt durch das Cache-Richtlinienmodul 601 und/oder das Persistenzgradmodul 734) gespeichert werden, können die Daten sowohl in dem Cache-Speicherbetriebsmittel 240 A als auch/oder auf einem oder mehreren primären Speicherbetriebsmitteln 240B-N gespeichert werden. Als Reaktion auf eine E/A-Anforderung 116 mit nichtvergänglichem Cache-Modus kann das Cache-Ausführungsmodul 636 dafür ausgelegt sein, die Anforderung auf eine schneller-Pfad-Operation 782 zur Speicherung der Daten in dem Cache-Speicherbetriebsmittel 240A und eine langsamer-Pfad-Operation 784 zum Speichern der Daten in einem oder mehreren primären Speicherbetriebsmitteln 240B-N „aufzugabeln“ 780. Im vorliegenden Gebraucht bezieht sich eine „Aufgabelung“ auf das Aufrufen von zwei oder mehr getrennten Verarbeitungsoperationen (z.B. zwei oder mehr Verarbeitungs-Threads). Das CMS 220 kann den Abschluss der E/A-Anforderung 116 erst bestätigen, wenn die langsamer-Pfad-Operation 784 abgeschlossen ist. Dementsprechend kann der langsame Pfad 784 den „kritischen Pfad“ für die Versorgung von nichtvergänglichen E/A-Anforderungen 116 bestimmen. Im vorliegenden Gebrauch bezieht sich ein „kritischer Pfad“ auf einen Verarbeitungspfad, der das Timing und/oder die Latenz für Verarbeitungsoperationen (z.B. die Verarbeitungsschritte und/oder den Pfad bestimmt. Der kritische Pfad für die Versorgung von nichtvergänglichen E/A-Anforderungen 116 kann den langsamen Pfad 784 umfassen, da der Abschluss solcher E/A-Anforderungen 116 erst bestätigt wird, wenn die entsprechenden Daten auf einem oder mehreren primären Speicherbetriebsmitteln 204B-N gespeichert sind.
  • Im Gegensatz dazu kann das Cache-Ausführungsmodul 636 dafür ausgelegt sein, Schreib-E/A-Anforderungen 116, die vergängliche Daten betreffen (bestimmt durch das Cache-Richtlinienmodul 601 und/oder das Persistenzgradmodul 734) ausschließlich in einem schnellen Pfad 782 zu versorgen, ohne Operationen des langsamen Pfads 784 in dem E/A-Stapel 117 und/oder primäre Speicherbetriebsmittel 240B-N zu beteiligen. Das Versorgen einer E/A-Anforderung 116 zum Schreiben von vergänglichen Cache-Daten kann außerdem die Aufgabelung 780 nicht erfordern, da keine separate Verarbeitung des langsamen Pfads 784 erforderlich ist. Das CMS 220 kann den Abschluss von vergänglichen E/A-Anforderungen 116 als Reaktion auf den Abschluss der schneller-Pfad-Operation 782 und ohne darauf zu warten, dass Operationen des langsamen Pfads 784 abgeschlossen werden, bestätigen. Deshalb können vergängliche E/A-Anforderungen 116 den kritischen Pfad für die Versorgung von E/A-Anforderungen 116 verringern und die Last auf dem E/A-Stapel 117 und/oder den primären Speicherbetriebsmitteln 240B-N verringern.
  • 8A ist ein Flussdiagramm einer Ausführungsform zum Cache-Speichern von Daten gemäß adaptiven Graden der Persistenz. Das Verfahren 800 kann wie hier offenbart starten und initialisiert werden. Schritt 810 kann Empfangen einer E/A-Anforderung 116 in einem Speichermodul 130 und/oder CMS 220 umfassen. Schritt 810 kann Empfangenen der E/A-Anforderung 116 direkt von einem Speicher-Client 106A-N (z.B. über eine E/A-Schnittstelle 131) und/oder Detektieren und/oder Überwachen von E/A-Anforderungen in einem E/A-Stapel 117 (oder eine anderen E/A-Infrastruktur) wie hier offenbart umfassen. Schritt 810 kann ferner Zugreifen auf einen Kontext und/oder eine Kennung (z.B. Dateikennung) umfassen, der bzw. die der E/A-Anforderung 116 wie hier beschrieben zugeordnet ist.
  • Schritt 820 kann umfassen zu bestimmen, ob Daten der E/A-Anforderung 116 in einem Cache, wie etwa den Virtuellmaschinen-Cache 213, zuzulassen sind. Die Offenbarung ist jedoch nicht auf virtuelle Datenverarbeitungsumgebungen beschränkt und könnte auf Bare-Metal-Umgebungen und/oder nichtvirtualisierte Cache-Betriebsmittel angewandt werden. Schritt 820 kann umfassend zu bestimmen, ob Daten der E/A-Anforderung 116 bereits zugelassen wurden; wenn dem so ist, kann die E/A-Anforderung 116 gemäß Persistenz-Metadaten versorgt werden, die der E/A-Anforderung 116 zugordnet sind (z.B. ein zuvor bestimmter Persistenzgrad und/oder Cache-Modus der E/A-Anforderung 116, wie in einem Cache-Tag 221 der E/A-Anforderung 116 angegeben). Wenn Daten der E/A-Anforderung 116 (per Cache-Richtlinie und/oder Verfügbarkeit) zuzulassen sind, geht der Fluss zu Schritt 830 weiter.
  • Schritt 830 kann umfassen, der E/A-Anforderung 116 einen adaptiven Persistenzgrad zuzuweisen, was Auswählen eines Cache-Modus für die E/A-Anforderung 116 (z.B. vergänglich, Hindurchschreiben, Rückschreiben oder dergleichen) umfassen kann. Das Zuweisen des Persistenzgrads kann umfassen zu bestimmen, ob die E/A-Anforderung 116 temporäre und/oder entbehrliche Daten betrifft, wie oben beschrieben. Dementsprechend kann Schritt 830 Vergleichen von Dateiebenenwissen bezüglich der E/A-Anforderung 116 mit einem Persistenzgradkriterium umfassen. Zum Beispiel kann der E/A-Anforderung 116 ein vergänglicher Cache-Modus zugewiesen werden, wenn die E/A-Anforderung 116 eine Swap-Datei, temporäre Datei, lokale Cache-Datei oder dergleichen betrifft. Als Alternative kann der E/A-Anforderung 116 ein Hindurchschreib-Cache-Modus (oder ein anderer Cache-Modus, wie etwa ein Rückschreiben) zugewiesen werden, wenn die E/A-Anforderung 116 permanente Daten betrifft. Schritt 830 kann ferner Aktualisieren eines der E/A-Anforderung 116 zugeordneten Cache-Tags 221 umfassen, um den im Schritt 830 bestimmen Persistenzgrad und/oder Cache-Modus anzugeben (z.B. Persistenz-Metadaten des Cache-Tags 221 zu aktualisieren). Wenn der in Schritt 830 bestimmte Persistenzgrad einen vergänglichen Cache-Modus angibt, geht der Fluss zu Schritt 840 weiter; andernfalls geht der Fluss zu Schritt 850 weiter.
  • Schritt 840 kann Zulassen von Daten der E/A-Anforderung 116 in dem Cache in einem vergänglichen Cache-Modus umfassen. Schritt 840 kann Speichern von Daten der E/A-Anforderung 116 in einem Cache (z.B. dem Virtuellmaschinen-Cache 213) umfassen, aber nicht Speichern der Daten in einem primären Speicherbetriebsmittel 240B-N. Dementsprechend kann Schritt 840 Speichern der Daten ausschließlich in dem Cache 216 umfassen. In virtualisierten Umgebungen kann Schritt 840 ferner umfassen, dem Virtuellmaschinen-Cache 213 eine Angabe bereitzustellen, dass die Daten in einem vergänglichen Cache-Modus Cache-gespeichert werden. Wie nachfolgend beschrieben, kann der Virtuellmaschinen-Cache 213 Cache-Modus-Metadaten verwenden, um zu bestimmen, ob die Cache-Daten behalten werden sollen, nachdem die virtuelle Maschine 208A-N zu einem anderen Host transferiert wird (und/oder wie lange die Cache-Daten behalten werden sollen). Da der Virtuellmaschinen-Cache 213 die einzige Quelle für vergängliche Cache-Daten sein kann, kann der Virtuellmaschinen-Cache 213 dafür ausgelegt sein, die vergänglichen Cache-Daten zu behalten, bis die Daten zu dem neuen Host der virtuellen Maschine 208A-N transferiert sind.
  • Schritt 850 kann Zulassen von Daten der E/A-Anforderung 116 gemäß dem im Schritt 830 bestimmten Persistenzgrad umfassen, was Speichern der Daten in einem geteilten Virtuellmaschinen-Cache 213 (oder anderen Cache), Hindurch- und/oder Rückschreiben der Daten in ein oder mehrere primäre Speicherbetriebsmittel 240B-N und so weiter umfassen kann.
  • 8B ist ein Flussdiagramm einer anderen Ausführungsform zum Cache-Speichern von Daten gemäß adaptiven Graden der Persistenz. Das Verfahren 801 kann wie hier offenbart starten und initialisiert werden. Schritt 811 kann Empfangen einer E/A-Anforderung 116 zum Schreiben von Daten in einem Speichermodul 130 und/oder dem CMS 220 umfassen. Schritt 811 kann Empfangen der E/A-Anforderung 116 direkt von einem Speicher-Client 106A-N (z.B. über eine E/A-Schnittstelle 131) und/oder Detektieren und/oder Überwachen von E/A-Anforderungen E/A-Anforderung 116 in einem E/A-Stapel 117 (oder einer anderen E/A-Infrastruktur) wie hier offenbart umfassen. Schritt 811 kann ferner umfassen zu bestimmen, dass die E/A-Anforderung 116 Daten betrifft, die in dem Cache (z.B. das Cache-Speicherbetriebsmittel 240A und/oder den Virtuellmaschinen-Cache 213) zugelassen wurden.
  • Schritt 831 kann umfassen, einen der E/A-Anforderung 116 zugeordneten Persistenzgrad zu bestimmen, wodurch wie hier beschrieben der Cache-Modus der E/A-Anforderung 116 bestimmt werden kann. Wenn der Cache-Modus einen vergänglichen Cache-Modus umfasst, geht der Fluss zu Schritt 841 weiter; andernfalls geht der Fluss zu Schritt 851 weiter.
  • Schritt 841 kann Versorgen der E/A-Anforderung 116 in einem vergänglichen Cache-Modus umfassen. Dementsprechend kann Schritt 841 Versorgen der E/A-Anforderung 116 in einer oder mehreren schneller-Pfad-Operationen 782 umfassen, bei denen kein Zugriff auf primäre Speicherbetriebsmittel 240B-N und/oder andere Schichten des E/A-Stapels 117 erfolgt. Schritt 843 kann Bestätigen des Abschlusses der E/A-Anforderung 116 als Reaktion auf den Abschluss der einen oder mehreren schneller-Pfad-Operation(en) 782 umfassen. Dementsprechend umfasst der kritische Pfad für die Versorgung der E/A-Anforderung 116 nur schneller-Pfad-Operation(en) 782 und schließt eine Aufgabelung 780 für langsamer-Pfad-Operation(en) 784 aus.
  • Schritt 851 kann Versorgen der E/A-Anforderung 116 gemäß einem anderen nichtvergänglichen Cache-Modus, wie etwa einem Hindurchschreib-Cache-Modus, umfassen. Schritt 851 kann Versorgen der E/A-Anforderung 116 in einer oder mehreren langsamer-Pfad-Operationen 784 und einer oder mehreren schneller-Pfad-Operationen 782 (z.B. Aufgabelung 780 der E/A-Operationen) umfassen. Die eine oder mehreren Operationen des langsamen Pfads 784 können Operationen auf einen oder mehreren primären Speicherbetriebsmitteln 240B-N umfassen und/oder können eine oder mehrere Schichten des E/A-Stapels 117 beteiligen. Schritt 853 kann Bestätigen des Abschlusses der E/A-Anforderung 116 als Reaktion auf Abschluss der einen oder mehreren langsamer-Pfad-Operationen 784 umfassen.
  • Wie oben offenbart, kann das CMS 220 dafür ausgelegt sein, die Cache-Tags 221 zu unterhalten, die eine optimale Arbeitsmenge des Cache bezüglich der Anwendung einer oder mehrerer Cache-Richtlinien repräsentieren können, wie etwa Cache-Zulassungsrichtlinien, Cache-Retentions- und/oder -Hinauswurfrichtlinien (z.B. Cache-Alterungsmetadaten, Cache-Stehl-Metadaten, LRU, „Hotness“ und/oder „Coldness“ und so weiter), Cache-Profilierungsinformationen, Datei- und/oder Anwendungsebenenwissen und dergleichen. Dementsprechend kann die Arbeitsmenge die Menge von Cache-Daten repräsentieren, die unter bestimmten Betriebsbedingungen optimale E/A-Leistungsfähigkeit für die virtuelle Maschine 208A-N bereitstellt. Das Entwickeln und/oder Verfeinern der Arbeitsmenge kann beträchtliche Zeit in Anspruch nehmen.
  • Das CMS 220 kann dafür ausgelegt sein, die Cache-Tags 221 als Reaktion auf Verlagerung, Transfer und/oder Migration der virtuellen Maschine 208A-N zu einem anderen Host 202 (z.B. in einer VMotion™-Operation) die Cache-Tags 221 zu behalten. Behalten der Cache-Tags 221 kann umfassen, die Cache-Tags 221 im Speicher der virtuellen Maschine 208A-N zu unterhalten und/oder die Cache-Tags 221 während der Verlagerung nicht zu invalidieren. Behalten der Cache-Tags 221 kann ferner Anfordern von Cache-Speicherung von dem Cache-Bereitstellermodul 214 des neuen Hosts 202 und/oder selektives Hinzufügen und/oder Entfernen von Cache-Tags 221 als Reaktion darauf, eine andere Menge von Cache-Speicherung auf dem neuen Host 202 zugeteilt zu bekommen, umfassen. Bei bestimmten Ausführungsformen kann das CMS 220 die Cache-Tags 221 trotz des Umstands behalten, dass die Cache-Daten, auf die die Cache-Tags 221 verweisen, in dem Cache 216 des neuen Hosts 202 nicht existieren. Wie nachfolgend beschrieben, kann der Virtuellmaschinen-Cache 213 dafür ausgelegt sein, den Cache 216 mit Cache-Daten aus einem vorherigen Host 202 der virtuellen Maschine 208A-N (z.B. über einen Netzwerktransfer) und/oder aus primärer Speicherung aufzufüllen. Bestimmte Cache-Daten, wie etwa vergängliche Cache-Daten, können nur aus dem vorherigen Host 202 verfügbar sein.
  • Migration einer virtuellen Maschine 208A-N kann Neuzuteilung von Cache-Betriebsmitteln auf dem neuen Host, Neuauffüllen des Cache und so weiter umfassen. Die Cache-Daten können aus dem vorherigen Host 202 der virtuellen Maschine 208A-N und/oder primärer Speicherung transferiert werden. Bestimmte Arten von Cache-Daten, wie etwa vergängliche Cache-Daten, können nur auf dem Virtuellmaschinen-Cache 213 des vorherigen Hosts 202A verfügbar sein; da die Cache-Daten nicht in primärer Speicherung hindurchgeschrieben und/oder rückgeschrieben werden, existieren die Daten nur in dem Cache 213. Wie hier beschrieben, kann der Virtuellmaschinen-Cache 213 dafür ausgelegt sein, Cache-Daten zwischen Hosts 202 zu transferieren, so dass die vergänglichen Cache-Daten nicht verloren gehen. Als Alternative oder zusätzlich kann das CMS 220 einer virtuellen Maschine 208A-N dafür ausgelegt sein, vergängliche Cache-Daten vor dem Transfer und/oder der Migration zu einem neuen Host 202 auszuräumen, was Datenverlust vermeiden kann, falls die Cache-Daten aus dem vorherigen Host 202 entfernt werden (und/oder der vorherige Host einen Ausfallzustand erfährt).
  • 9 ist ein Blockschaltbild einer anderen Ausführungsform einer virtuellen Datenverarbeitungsumgebung 900. Die virtuelle Datenverarbeitungsumgebung 900 umfasst mehrere Hosts 202A-N, die jeweils einen Virtualisierungskern 210 und eine oder mehrere virtuelle Maschinen umfassen können. Obwohl es in 2 nicht gezeigt ist, kann jede virtuelle Maschine ein jeweiliges CMS 220 wie hier beschrieben umfassen. Jeder Host 202A-N kann ferner einen jeweiligen Virtuellmaschinen-Cache 213A-N umfassen, der ein Cache-Bereitstellermodul 214 und einen Cache 216 umfasst. Obwohl 9 drei Hostsysteme 202A-N abbildet, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte eine beliebige Anzahl von Hosts 202A-N umfassen.
  • Die virtualisierte Umgebung 900 kann ein primäres Speichersystem 242 umfassen, das unter den Hosts 202A-N und/oder den virtuellen Maschinen 208 geteilt werden kann. Das primäre Speichersystem 242 kann eine beliebige geeignete persistente Speichervorrichtung und/oder ein beliebiges geeignetes persistentes Speichersystem umfassen, wie zum Beispiel, aber ohne Beschränkung darauf, einen oder mehrere magnetische Datenträger (z.B. Festplatten), ein RAID (Redundant Array of Inexpensive Disks), ein SAN (Speichernetzwerk) oder dergleichen. Die Hosts 202A-N können dafür ausgelegt sein, über das Netzwerk 105 auf das primäre Speichersystem zuzugreifen.
  • Bei bestimmten Ausführungsformen kann jeder virtuellen Maschine 208 eine jeweilige VMID zugewiesen werden. Die VMID kann zugewiesen werden, wenn die virtuelle Maschine 208 auf einem Host 202A-N instanziiert (z.B. geladen) wird (z.B. während eines oben beschriebenen Handshake-Protokolls). Die VMID kann eine Prozesskennung, eine Thread-Kennung oder eine beliebige andere geeignete Kennung umfassen. Bei bestimmten Ausführungsformen kann die VMID die virtuelle Maschine 208 auf einem bestimmten Host 202A-N und/oder in einer Gruppe von Hosts 202A-N eindeutig identifizieren. Zum Beispiel können die Hosts 202A-N in demselben Namenraum, wie etwa einem Cluster, operieren, und die VMID jeder virtuellen Maschine 208 kann in dem Namenraum des Clusters einzigartig sein (einzigartig über die virtuellen Maschinen 208A-N hinweg, die in dem Cluster auf dem Host 202A-N eingesetzt werden). Bei bestimmten Ausführungsformen kann die VMID eine Hostkennung umfassen, wie etwa eine MAC-Adresse (Media Access Control), eine Netzwerkadresse, einen besonderen Namen oder dergleichen. Dementsprechend kann eine VMID bei bestimmten Ausführungsformen eine virtuelle Maschine 208 in einem bestimmten Namenraum eindeutig identifizieren und kann den Host 202A-N identifizieren, auf dem die virtuelle Maschine 208 gerade eingesetzt wird (oder zuvor eingesetzt war). Als Alternative oder zusätzlich kann jede virtuelle Maschine 208 dafür ausgelegt sein, eine aktuelle Hostkennung und eine vorherige Hostkennung zu unterhalten.
  • Bei bestimmten Ausführungsformen können eine oder mehrere der virtuellen Maschinen 208A-N in der Lage sein, zwischen den Hosts 202A-N verlagert und/oder transferiert zu werden. Zum Beispiel kann eine virtuelle Maschine 208X (z.B. in einer VMotion™- oder ähnlichen Operation) von Host 202A zu Host 202B migriert werden. Bei bestimmten Ausführungsformen kann das CMS 220 der virtuellen Maschine 208X dafür ausgelegt sein, eine Transfer- und/oder Migrationsoperation zu detektieren, und kann als Reaktion versuchen, vergängliche Cache-Daten auf das primäre Speichersystem 242 auszuräumen. Wie oben beschrieben, kann das Ausräumen von vergänglichen Cache-Daten Datenverlust verhindern, falls die vergänglichen Cache-Daten von dem vorherigen Host 202A nicht verfügbar sind. Als Alternative kann das CMS 220 dafür ausgelegt sein, den Persistenzgrad vergänglicher Cache-Daten zu unterhalten, um „Migration-Stürme“ zu vermeiden (z.B. Überlastung des Systems der primären Speicherung 242 und/oder der E/A-Infrastruktur des Netzwerks 105 zu vermeiden).
  • Der Virtuellmaschinen-Cache 213B kann dafür ausgelegt sein, den Transfer als Reaktion auf den Empfang einer Anforderung von dem CMS 220 der transferierten virtuellen Maschine 208X zu identifizieren. Die Anforderung kann die VMID der transferierten virtuellen Maschine 208X umfassen, woraus der Virtuellmaschinen-Cache 213B bestimmen kann, dass die virtuelle Maschine 208X dem Host 208B „neu“ ist (z.B. die VMID umfassende Anforderungen wurden zuvor noch nicht empfangen). Als Reaktion kann der Virtuellmaschinen-Cache 213B ein Handshake-Protokoll mit der virtuellen Maschine 208X einleiten. Der Virtuellmaschinen-Cache 213B kann mindestens teilweise auf der Basis einer Hostkennung der VMID und/oder einer Hostkennung(en), die durch die virtuelle Maschine 208X unterhalten wird, bestimmen, dass die virtuelle Maschine 208X zu dem Host 208B transferiert wurde. Die Hostkennung der virtuellen Maschine 208X kann auf den Host 202A verweisen, während die Hostkennung einer neu heraufgefahrenen virtuellen Maschine 208 auf den Host 202B verweisen kann (oder leer sein kann). Als Alternative oder zusätzlich kann die virtuelle Maschine 208X eine getrennte Hostkennung umfassen, die auf den Host 202a verweisen kann, und es kann in dem Handshake-Protokoll mit dem Virtuellmaschinen-Cache 213B auf sie zugegriffen werden.
  • Das Cache-Bereitstellermodul 214 kann dafür ausgelegt sein, Speicherung für die virtuelle Maschine 208X im Cache 216B zuzuteilen. Das Cache-Bereitstellermodul 214 kann dafür ausgelegt sein, mindestens teilweise auf der Basis der Größe der auf dem vorherigen Host (Host 202A) der virtuellen Maschine 208X zugeteilten Cache-Speicherung zu bestimmen, wieviel Cache-Speicherung bereitzustellen ist. Wie oben offenbart, kann das CMS 220 der virtuellen Maschine 208X dafür ausgelegt sein, nach dem Transfer zu dem Host 202B die Arbeitsmenge des Cache zu behalten (z.B. die Cache-Tags 221 zu behalten). Das Cache-Bereitstellermodul 214B kann versuchen, ausreichend Cache-Speicherung im Cache 216B zur Unterstützung der behaltenen Cache-Tags 221 zuzuteilen. Wenn keine ausreichende Cache-Speicherung zugeteilt werden kann, kann das CMS 220 dafür ausgelegt sein, die behaltenen Cache-Tags gemäß der neuen Cache-Speicherungszuteilung auf dem Host 202B selektiv zu entfernen. Wenn überschüssige Cache-Speicherung verfügbar ist, kann das CMS 220 als Alternative dafür ausgelegt sein, neue Tags zu den behaltenen Cache-Tags 221 hinzuzufügen. Die Zuteilung kann durch einen virtuellen Datenträger 229 wie hier beschrieben widergespiegelt werden.
  • Der Virtuellmaschinen-Cache 213A kann ein Retentionsmodul 928A umfassen, das dafür ausgelegt sein kann, Cache-Daten der virtuellen Maschine 208X zu behalten, nachdem die virtuelle Maschine 208X von dem Host 202A transferiert wird. Die Cache-Daten können für eine Retentionsperiode behalten werden und/oder bis der Virtuellmaschinen-Cache 213A bestimmt, dass die behaltenen Cache-Daten nicht mehr benötigt werden. Das Retentionsmodul 928A kann auf der Basis verschiedener Retentionsrichtliniengesichtspunkte bestimmen, ob die Cache-Daten behalten werden sollen (und/oder die Cache-Datenretentionsperiode bestimmen), wie etwa, aber ohne Beschränkung darauf, Verfügbarkeit des Cache 216A, Verfügbarkeit des Cache 216B, relative Wichtigkeit der behaltenen Cache-Daten (vergleichen mit Cache-Erfordernissen anderer virtueller Maschinen 208), ob die Cache-Daten in dem primären Speichersystem 242 gesichert sind, eines Cache-Modus und/oder Persistenzgrads der Cache-Daten und so weiter. Zum Beispiel können in einem vergänglichen Cache-Modus gespeicherte Cache-Daten nur auf dem ursprünglichen Virtuellmaschinen-Cache 213A verfügbar sein. Das Cache-Retentionsmodul 928A kann deshalb dafür ausgelegt sein, Retention vergänglicher Cache-Daten zu priorisieren, bis die vergänglichen Cache-Daten zu dem neuen Host 202B transferiert sind. Im Gegensatz dazu können in anderen Cache-Modi (z.B. dem Hindurchschreib- und/oder Rückschreib-Cache-Modus) gespeicherte Cache-Daten eine niedrigere Retentionspriorität aufweisen, da diese Daten aus dem primären Speichersystem 242 verfügbar sein werden.
  • Das CMS 220 der virtuellen Maschine 208X kann dafür ausgelegt sein, den Arbeitszustand des Cache (die Cache-Tags 221) trotz des Umstands zu behalten, dass der Cache 216B die Cache-Daten, auf die die Cache-Tags 221 verweisen, nicht umfasst. Wie nachfolgend offenbart, kann der Virtuellmaschinen-Cache 213B dafür ausgelegt sein, den Cache 216B mit Cache-Daten aufzufüllen, die aus dem Cache 216A des Host 202A und/oder dem primären Speichersystem 242 transferiert werden, um die Arbeitsmenge der transferierten virtuellen Maschine 208X zu rekonstruieren.
  • Der Virtuellmaschinen-Cache 213B kann ein Cache-Transfermodul 929B umfassen, das dafür ausgelegt sein kann, auf in dem vorherigen Host 202A gespeicherte Cache-Daten der virtuellen Maschine 208X zuzugreifen. Das Cache-Transfermodul 929B kann dafür ausgelegt sein, den vorherigen Host 202A durch Verwendung der VMID und/oder durch Abfragen der virtuellen Maschine 208X (z.B. Zugreifen auf eine durch die virtuelle Maschine 208X unterhaltene vorherige Hostkennung) zu identifizieren. Das Cache-Transfermodul 929B kann die Hostkennung verwenden, um über das Netzwerk 105 eine oder mehrere Anforderungen der Cache-Daten an den Virtuellmaschinen-Cache 213 des Hosts 202A auszugeben. Bei bestimmten Ausführungsformen ist das Cache-Transfermodul 929B dafür ausgelegt, eine Netzwerkadresse oder Netzwerkkennung des Hosts 202A aus der Hostkennung zu bestimmen und/oder abzuleiten.
  • Der Virtuellmaschinen-Cache 213A kann ein Cache-Transfermodul 929A umfassen, das dafür ausgelegt ist, selektiv Zugang zu behaltenen Cache-Daten der transferierten virtuellen Maschine 208X bereitzustellen. Bei bestimmten Ausführungsformen ist das Cache-Transfermodul 929A dafür ausgelegt, die behaltenen Cache-Daten zu sichern. Zum Beispiel kann das Cache-Transfermodul 929A dafür ausgelegt sein, zu verifizieren, dass die anfordernde Entität (z.B. der Virtuellmaschinen-Cache 213B) dazu autorisiert ist, auf die Cache-Daten der transferierten virtuellen Maschine 208X zuzugreifen, was umfassen kann, zu verifizieren, dass die virtuelle Maschine 208X auf dem Host 202B eingesetzt wird. Zum Beispiel kann das Cache-Transfermodul 929A einen der transferierten virtuellen Maschine 208X zugeordneten Berechtigungsnachweis, wie etwa die VMID oder dergleichen, anzufordern. Als Alternative oder zusätzlich kann das Cache-Transfermodul 929A eine kryptographische Verifikation implementieren, die Verifizieren einer durch die transferierte virtuelle Maschine 208X erzeugten Signatur oder dergleichen umfassen kann.
  • Das Cache-Transfermodul 929B kann dafür ausgelegt sein, die Cache-Daten durch einen oder mehrere Bedarfs-Paging-Transfers, Vorabruf-Transfers und/oder Massentransfers zu transferieren. Ein Bedarfs-Paging-Transfer kann Transferieren von Cache-Daten als Reaktion auf E/A-Anforderungen E/A-Anforderung 116 der Cache-Daten aus der virtuellen Maschine 208X (z.B. auf Bedarf) umfassen. Die transferierten Daten können zur Versorgung der E/A-Anforderungen 116 verwendet werden. Zusätzlich können die transferierten Daten in den Cache 216B des neuen Hosts 202B zugelassen werden. Als Alternative können die transferierten Daten gemäß Cache-Richtlinie zu einem späteren Zeitpunkt (oder überhaupt nicht) zugelassen werden.
  • Ein Vorabruf-Transfer kann Transferieren von Daten gemäß einer Vorabruf-Cache-Richtlinie (z.B. nach Nähe oder dergleichen) und/oder einem Persistenzgrad der Cache-Daten umfassen. Die Menge und/oder das Ausmaß von vorabzurufenden Cache-Daten kann u.a. durch Cache-Metadaten des CMS 220 (z.B. Cache-Alterungs-Metadaten, „Hotness“ und so weiter) bestimmt werden. Dementsprechend kann bei bestimmten Ausführungsformen das Cache-Transfermodul 929B dafür ausgelegt sein, das CMS 220 abzufragen, um die (etwaigen) vorabzurufenden Cache-Daten zu identifizieren.
  • Ein Massentransfer kann Transferieren von Cache-Daten en masse umfassen, unabhängig von Speicheranforderungen von der virtuellen Maschine 208X. Ein Massentransfer kann Transferieren, Auffüllen der gesamten der virtuellen Maschine 208X zugeteilten Cache-Speicherung umfassen. Als Alternative kann ein Massentransfer Auffüllen einer Teilmenge des Cache umfassen, die wie oben offenbart auf der Basis von Cache-Metadaten des CMS 220 der virtuellen Maschine ausgewählt werden kann.
  • Das Cache-Transfermodul 929B kann ferner dafür ausgelegt sein, Cache-Transfers (z.B. Vorabruf- und/oder Massentransfers) gemäß dem Persistenzgrad der Cache-Daten zu priorisieren. Daten, die in einem vergänglichen Cache-Modus Cache-gespeichert werden, können zum Beispiel nur aus dem vorherigen Host 202A verfügbar sein, und dementsprechend können sie gegenüber anderen Cache-Daten priorisiert werden, die aus alternativen Quellen (z.B. dem primären Speichersystem 242) verfügbar sein können. Deshalb kann das Cache-Transfermodul 929B dafür ausgelegt sein, vergängliche Cache-Daten vorabzurufen und/oder en masse zu transferieren, statt auf bedarfsgesteuertes Paging und/oder Transferieren anderer Daten zu warten.
  • Das Cache-Speichermodul 931B kann dafür ausgelegt sein, aus dem Cache 216A des Hosts 202A transferierte (oder aus anderen Quellen, wie etwa dem primären Speichersystem 242 beschaffte) Cache-Daten in dem Cache 216B zu speichern. Das Cache-Speichermodul 931B kann dafür ausgelegt sein, die Cache-Daten an Cache-Speicherstellen zu speichern, die durch das Cache-Bereitstellermodul 214B der transferierten virtuellen Maschine 208X zugeteilt wurden. Die Cache-Daten können an derselben Cache-Speicherstelle (z.B. demselben Offset mit der Cache-Speicherung) wie in dem ursprünglichen Cache 216A gespeichert werden, so dass Verweise in dem behaltenen Cache-Tags 221 mittels der durch das Abbildungsmodul 514 des Cache-Bereitstellermoduls 214 implementierten Abbildungen gültig bleiben.
  • Als Reaktion auf Anforderungen von Cache-Daten kann das Cache-Transfermodul 929A dafür ausgelegt sein, die angeforderten Cache-Daten u.a. unter Verwendung der VMID der transferierten virtuellen Maschine 208X (durch Verwendung des Abbildungsmoduls 514) zu identifizieren. Das Cache-Transfermodul 929A kann dann die angeforderten Cache-Daten (wenn sie verfügbar sind) über das Netzwerk 905 zu dem Cache-Transfermodul 929B transferieren.
  • Das Cache-Transfermodul 929B kann dafür ausgelegt sein, auf Cache-Daten aus dem vorherigen Host 202A zuzugreifen. In einem vergänglichen Cache-Modus Cache-gespeicherte Daten können nur aus dem vorherigen Host 202A zugänglich sein. In anderen Cache-Modi Cache-gespeicherte Daten können von anderen Quellen verfügbar sein, wie etwa dem primären Speichersystem 242 und/oder anderen Quellen der Daten (z.B. anderen persistenten Speichersystemen, Hosts 202N oder dergleichen). Das Cache-Transfermodul 929B kann auf der Basis verschiedener Richtliniengesichtspunkte (z.B. einer Cache-Transferrichtlinie), wozu eine Netzwerkrichtlinie, Bandbreitenrichtlinie, Host-Betriebsmittelrichtlinie, Primärspeicherbetriebsmittelrichtlinie und dergleichen gehören kann, die Quelle der Cache-Daten auswählen. Zum Beispiel kann das Cache-Transfermodul 929B als Reaktion auf ein Bestimmen, dass das Netzwerk 105 stark überlastet ist, dafür ausgelegt sein, die Menge an zu transferierenden Daten zu verringern (einen Massentransfer zurückzustellen) und/oder die Cache-Daten aus eine anderen Quelle, die von dem Netzwerk 105 unabhängig ist, zu transferieren. Ähnlich kann das Cache-Transfermodul 929B Anforderungen als Reaktion auf ein Bestimmen, dass das primäre Speichersystem 242 stark belastet ist und/oder begrenzte verfügbare Bandbreite aufweist, an den Host 202 richten (im Gegensatz zu dem primären Speichersystem 242).
  • Die auf dem Host 202A behaltenen Cache-Daten können Cache-Betriebsmittel repräsentieren, die von den anderen auf dem Host 202A operierenden virtuellen Maschinen 208A-N nicht verwendet werden können. Dementsprechend kann das Cache-Retentionsmodul 928A dafür ausgelegt sein, die behaltenen Cache-Daten selektiv zu entfernen, wenn die Daten nicht mehr benötigt werden, und/oder gemäß einer Retentionsrichtlinie. Die Retentionsrichtlinie kann auf der Basis der oben beschriebenen Retentionsrichtlinienfrakturen bestimmt werden. Bei bestimmten Ausführungsformen ist das Cache-Transfermodul 929B dafür ausgelegt, den vorherigen Host 202A über Cache-Daten zu informieren, die aus anderen Quellen zu dem Host 202B transferiert werden, so dass das Cache-Retentionsmodul 928A die entsprechenden Daten aus dem Cache 216A entfernen kann. Das Cache-Transfermodul 929B kann ferner dafür ausgelegt sein, den Host 202A über andere Bedingungen zu informieren, in denen Cache-Daten nicht mehr behalten werden müssen, wie etwa wenn die Cache-Daten überschrieben, gelöscht (z.B. getrimmt), aus dem Cache 216B hinausgeworfen werden oder dergleichen. Wie oben offenbart, kann das Cache-Retentionsmodul 928A dafür ausgelegt sein, Cache-Retention auf der Basis des Persistenzgrads der Cache-Daten zu priorisieren, so dass die Retention vergänglicher Cache-Daten gegenüber aus anderen Quellen verfügbaren Cache-Daten priorisiert wird.
  • Bei bestimmten Ausführungsformen kann das Cache-Transfermodul 929A dafür ausgelegt sein, Cache-Daten der virtuellen Maschine 208X auf den neuen Host 202B zu „schieben“. Schieben von Cache-Daten kann Transferieren behaltener Cache-Daten der virtuellen Maschine 208X zu dem Cache-Transfermodul 929B umfassen, ohne eine Anforderung der Cache-Daten zu empfangen (unabhängig von Anforderungen der Cache-Daten). Das Cache-Transfermodul 929A kann die Hostkennung des neuen Hosts 202B mittels Benutzerkonfiguration; des oben beschriebenen Verifikationsprozesses; aktiver Abfragung durch das Cache-Transfermodul 929A; einen durch die transferierte virtuelle Maschine 208X implementierten Rückruf; oder dergleichen bestimmen. Bei bestimmten Ausführungsformen kann der Virtuellmaschinen-Cache 213 des neuen Hosts 202B als Reaktion auf den Empfang von aus dem Host 202A geschobenen Cache-Daten wie oben beschrieben identifizieren, dass die virtuelle Maschine 208X von dem Host 202A transferiert wurde. Das Cache-Transfermodul 929A kann dafür ausgelegt sein, selektiv Hochprioritäts-Cache-Daten zu schieben, wie etwa vergängliche Cache-Daten, um Datenverlust zu verhindern.
  • 10 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens 1000 zum Transferieren und/oder Migrieren von Cache-Daten einer virtuellen Maschine 208 zwischen Hosts 202. Das Verfahren 1000 kann wie oben beschrieben starten und initialisiert werden.
  • Schritt 1010 kann umfassen, dass ein Cache-Bereitstellermodul 214B Cache-Speicherung an eine virtuelle Maschine 208X auf einem Host 208B zuteilt, wenn die virtuelle Maschine 208X von einem vorherigen Host 202A aus zu dem neuen Host 202B migriert. Der neue Host 202B und der vorherige Host 202A können (z.B. über ein Netzwerk 105) kommunikativ gekoppelt sein. Wie oben beschrieben, kann das Cache-Bereitstellermodul 214B die transferierte virtuelle Maschine 208X als Reaktion auf den Empfang einer E/A-Anforderung 116 von dem CMS 220 der virtuellen Maschine 208X (oder einer anderen Abfrage), den Empfang von Cache-Daten der virtuellen Maschine 208X von dem Cache-Transfermodul 929A des vorherigen Hosts 202A oder dergleichen identifizieren. Schritt 1010 kann ferner Unterscheiden der transferierten virtuellen Maschine 208X von einem anfänglichen Herauffahr- und/oder Neustartzustand umfassen (z.B. auf der Basis der VMID der virtuellen Maschine 208X, einer Hostkennung oder dergleichen). Der Cache kann wie oben beschrieben dynamisch über einen Virtuelldatenträger-Treiber 215 in einem virtuellen Datenträger 229 der virtuellen Maschine 208X zugeteilt werden.
  • Schritt 1020 kann umfassen, dass das Cache-Transfermodul 929B des neuen Hosts 202B den vorherigen Host 202A der transferierten virtuellen Maschine 208X bestimmt. Schritt 1020 kann Zugreifen auf einer Hostkennung in der VMID der virtuellen Maschine 208X, Abfragen der transferierten virtuellen Maschine 208X, Empfangen geschobener Cache-Daten von dem vorherigen Host 202B oder dergleichen wie oben beschrieben umfassen.
  • Schritt 1030 kann Auffüllen mindestens eines Teils der der virtuellen Maschine 208X zugeteilten Cache-Speicherung mit in dem entfernten Host 202A behaltenen Cache-Daten wie oben beschrieben umfassen. Die Cache-Daten können Cache-Daten entsprechen, die in einer vergänglichen Cache-Konfiguration gespeichert werden, die nur in dem vorherigen Host 202 verfügbar ist. Schritt 1030 kann Anfordern der Cache-Daten, Verifizieren, dass der neue Host 202B dazu autorisiert ist, auf die Cache-Daten zuzugreifen, Empfangen der Cache-Daten in einer Schiebeoperation oder dergleichen umfassen. Cache-Daten können gemäß einer Cache-Transferrichtlinie der Cache-Transfermodule 929A und/oder 929B wie oben beschrieben angefordert, transferiert und/oder geschoben werden. Bei bestimmten Ausführungsformen umfasst Schritt 1030 ferner Auffüllen der zugeteilten Cache-Speicherung mit Daten, auf die aus der primären Speicherung 212 (oder einer anderen Quelle) zugegriffen wird. Schritt 1030 kann ferner umfassen, den entfernten Host 202A zu informieren, dass die behaltenen Cache-Daten der virtuellen Maschine 208X nicht mehr behalten werden müssen, wenn der Cache auf dem neuen Host 202B aufgeführt wird, wie oben beschrieben.
  • 11 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens 1100 zum Transferieren von Cache-Daten einer virtuellen Maschine 208A-N. Das Verfahren 1100 kann wie oben beschrieben starten und initialisiert werden.
  • Schritt 1110 kann Behalten von Cache-Daten einer virtuellen Maschine 208X in einem Cache 216 (Cache-Speichervorrichtung) als Reaktion auf Transfer und/oder Migration der virtuellen Maschine 208X von dem Host 202A weg umfassen. Die Cache-Daten können durch ein Cache-Retentionsmodul 928A gemäß einer Retentionsrichtlinie wie oben beschrieben behalten werden. Bei bestimmten Ausführungsformen kann Schritt 1110 umfassen, Retention von vergänglichen Cache-Daten, die auf dem primären Speichersystem 242 nicht verfügbar sein können (z.B. nur in dem Virtuellmaschinen-Cache 213A des vorherigen Hosts 202A verfügbar sein können) zu priorisieren.
  • Schritt 1120 kann Bestimmen einer Cache-Adresse der behaltenen Cache-Daten als Reaktion auf eine Anforderung der Cache-Daten umfassen. Die Cache-Adresse kann mindestens teilweise auf einer VMID der transferierten virtuellen Maschine basieren. Die Cache-Adresse der Daten kann durch ein Abbildungsmodul 514 bestimmt werden, das dafür ausgelegt ist, Cache-Betriebsmittel (z.B. Cache-Stücke 302) den virtuellen Maschinen 208A-N zuzuordnen, denen die Betriebsmittel zugeteilt werden.
  • Schritt 1130 kann Bereitstellen behaltener Cache-Daten wie oben beschrieben umfassen. Schritt 1130 kann Reagieren auf Anforderungen der Cache-Daten von einem Cache-Transfermodul 929B des neuen Hosts 202B der virtuellen Maschine 208X, Schieben der Cache-Daten zu dem Cache-Transfermodul 929B oder dergleichen umfassen.
  • 12 ist ein Flussdiagramm einer anderen Ausführungsform zum Transferieren von Cache-Daten einer virtuellen Maschine. Schritt 1210 kann Behalten von Cache-Tags 221 als Reaktion auf Transfer der virtuellen Maschine 208X zu einem neuen Host 202B umfassen. Bei bestimmten Ausführungsformen kann Schritt 1210 Ändern des Persistenzgrads von Teilen der Cache-Daten umfassen. Zum Beispiel kann das CMS 220 der virtuellen Maschine 208X dafür ausgelegt sein, vergängliche Cache-Daten in das primäre Speichersystem 242 auszuräumen, so dass die Cache-Daten selbst dann in dem neuen Host 208B Cache 213A des aktuellen Hosts 202A der virtuellen Maschine 208X entfernt werden.
  • Schritt 1220 kann Filtern von E/A-Operationen und Lenken ausgewählter E/A-Anforderungen 116 zu einem CMS 220 gemäß den behaltenen Cache-Tags 221 umfassen. Schritt 1220 kann Anfordern von Daten eines oder mehrerer Cache-Tags 221, die noch nicht zu dem neuen Host 202B der virtuellen Maschine 208X transferiert wurden und/oder nicht der virtuellen Maschine 208X zugeteilt wurden, umfassen. Wie oben beschrieben, kann der Virtuellmaschinen-Cache 213 des neuen Hosts 202B als Reaktion auf eine solche Anforderung die virtuelle Maschine 208X als eine transferierte virtuelle Maschine identifizieren (z.B. im Gegensatz zu einem anfänglichen Heraufbooten oder Herauffahren), Cache-Speicherung für die virtuelle Maschine 208X zuteilen, den vorherigen Host 202A der virtuellen Maschine 208X bestimmen und/oder Cache-Daten aus dem vorherigen Host 202A (über das Cache-Transfermodul 929B) transferieren.
  • Schritt 1230 kann Anfordern von Daten eines behaltenen Cache-Tag wie oben beschrieben umfassen. Das Anfordern von Zugriff kann Ausführen eines bedarfsgesteuerten Transfers von Cache-Daten aus dem vorherigen Host 202A zu dem Virtuellmaschinen-Cache 213B des neuen Hosts 202B umfassen.

Claims (17)

  1. Verfahren, umfassend Auswählen jeweiliger Grade der Persistenz für Eingabe/Ausgabe, (E/A)-Anforderungen (116), die unter Verwendung eines Speichersystems versorgt werden, das einen E/A-Stapel (117) und mehrere Speicherbetriebsmittel (240A, 240B-N) umfasst, wobei die Speicherbetriebsmittel persistente primäre Speicherbetriebsmittel (204B-N), auf die über den E/A-Stapel (117) zugegriffen wird, und ein Cache-Speicherbetriebsmittel (240A) umfassen, auf das außerhalb des E/A-Stapels (117) zugegriffen wird, wobei die Grade der Persistenz aus mehreren Persistenzgraden (739) ausgewählt werden, wobei ein erster der Persistenzgrade einem vergänglichen Cache-Speicherungsmodus entspricht, der in Reaktion darauf, dass eine E/A-Anforderung Daten betrifft, die nur für eine begrenzte Zeit behalten werden müssen, ausgewählt wird; und Versorgen der E/A-Anforderungen unter Verwendung der Speicherbetriebsmittel (240A, 240B-N) gemäß dem für die E/A-Anforderungen (116) ausgewählten Grad der Persistenz, wobei das Versorgen einer Schreib-E/A-Anforderung, die den ersten Persistenzgrad aufweist, umfasst: Schreiben von Daten in das Cache-Speicherbetriebsmittel (240A) ohne die Daten in eines der primären Speicherbetriebsmittel (240B N) zu schreiben, wobei das Schreiben der Daten in einer schneller-Pfad-E/A-Operation (782) implementiert ist, die die außerhalb des E/A-Stapels (117) und ohne Beteiligung von primären Speicherbetriebsmitteln (240B N) stattfindet.
  2. Verfahren nach Anspruch 1, wobei jeder Grad der Persistenz (739) einem oder mehreren Speicherbetriebsmitteln zur Verwendung beim Versorgen von E/A-Anforderungen (116), die den jeweiligen Grad der Persistenz aufweisen, entspricht.
  3. Verfahren nach Anspruch 1, wobei jeder Grad der Persistenz (739) einer Konfiguration eines oder mehrerer Speicherbetriebsmittel entspricht, die zum Versorgen von E/A-Anforderungen (116) verwendet werden, die den jeweiligen Grad der Persistenz aufweisen.
  4. Verfahren nach Anspruch 1, wobei ein oder mehrere der Grade der Persistenz (739) dafür ausgelegt sind, einen Speichermodus zum Versorgen von E/A-Anforderungen (116) des einen oder der mehreren Grade der Persistenz zu spezifizieren.
  5. Verfahren nach Anspruch 1, wobei ein zweiter der Persistenzgrade (739) einem nichtvergänglichen Cache-Speicherungsmodus entspricht; wobei das Versorgen einer E/A-Anforderung, die den zweiten Persistenzgrad aufweist, umfasst: Speichern von Daten der E/A-Anforderung mit dem zweiten Persistenzgrad auf einem oder mehreren der primären Speicherbetriebsmittel 240B-N) unter Verwendung einer langsamer-Pfad-E/A-Operation (784), an der eine oder mehrere Schichten des E/A-Stapels (117) beteiligt sind.
  6. Verfahren nach Anspruch 1, wobei einer der Persistenzgrade (739) eine redundante Speicherung auf zwei oder mehr der primären Speicherbetriebsmitteln (240B-N) spezifiziert, wobei das Verfahren ferner Versorgen von E/A-Anforderungen, die den einen Persistenzgrad aufweisen, unter Verwendung der zwei oder mehr der primären Speicherbetriebsmittel (240B-N) umfasst.
  7. Verfahren nach Anspruch 1, wobei das Identifizieren der E/A-Anforderung Überwachen von E/A-Anforderungen in einem Speicherstapel umfasst.
  8. Computerprogrammprodukt, das ein computerlesbares Speichermedium umfasst, das computerbenutzbaren Programmcode speichert, der ausführbar ist, um Operationen auszuführen, wobei, wenn in einem Speichersystem ausgeführt, das einen E/A-Stapel (117) und mehrere Speicherbetriebsmittel (240A, 240B-N) umfasst, wobei die Speicherbetriebsmittel persistente primäre Speicherbetriebsmittel (240B-N), auf die über den E/A-Stapel (117) zugegriffen wird, und ein Cache-Speicherbetriebsmittel (240A) umfassen, auf das außerhalb des E/A-Stapels zugegriffen wird, die Operationen Folgendes umfassen: Empfangen von Eingabe/Ausgabe (E/A)-Anforderungen (116), die von einem Speicher-Client stammen; Auswählen jeweiliger Grade der Persistenz für die E/A-Anforderungen (116), wobei ein erster der Persistenzgrade (739) einem vergänglichen Cache-Speicherungsmodus entspricht, der in Reaktion darauf, dass eine E/A-Anforderung Daten betrifft, die nur für eine begrenzte Zeit behalten werden müssen, ausgewählt wird; und Versorgen der E/A-Anforderungen gemäß dem für die E/A-Anforderungen ausgewählten Grad der Persistenz, wobei das Versorgen einer Schreib-E/A-Anforderung, die den ersten Persistenzgrad aufweist, umfasst: Schreiben von Daten in das Cache-Speicherbetriebsmittel (240A) ohne die Daten in eines der primären Speicherbetriebsmittel (240B N) zu schreiben, wobei das Schreiben der Daten in einer schneller-Pfad-E/A-Operation (782) implementiert ist, die die außerhalb des E/A-Stapels (117) und/ ohne Beteiligung von primären Speicherbetriebsmitteln (240B N) stattfindet.
  9. Computerprogrammprodukt nach Anspruch 8, wobei ein zweiter der Persistenzgrade einem nichtvergänglichen Cache-Speicherungsmodus entspricht; wobei das Versorgen einer E/A-Anforderung, die den zweiten Persistenzgrad aufweist, umfasst: Speichern von Daten der E/A-Anforderung mit dem zweiten Persistenzgrad auf einem oder mehreren der primären Speicherbetriebsmittel (240B-N) unter Verwendung einer langsamer-Pfad-E/A-Operation (784), an der eine oder mehrere Schichten des E/A-Stapels (117) beteiligt sind.
  10. Computerprogrammprodukt nach Anspruch 8, wobei sich zwei oder mehr der Persistenzgrade (739) mit Bezug auf zum Versorgen von E/A-Anforderungen (116) der jeweiligen zwei oder mehr Persistenzgrade verwendete Speicherbetriebsmittel unterscheiden.
  11. Computerprogrammprodukt nach Anspruch 8, wobei die Operationen ferner Bestätigen des Abschlusses von Schreib-E/A-Anforderungen des ersten Persistenzgrads als Reaktion auf Schreiben von Daten der Schreib-E/A-Anforderungen in das Cache-Speicherbetriebsmittel (240A) umfassen.
  12. Computerprogrammprodukt nach Anspruch 8, wobei ein dritter der Persistenzgrade eine erste Fehlerkorrekturcode-Codierung spezifiziert und ein vierter der Persistenzgrade eine zweite, andere Fehlerkorrekturcode-Codierung spezifiziert.
  13. Computerprogrammprodukt nach Anspruch 8, wobei die Operationen ferner Bestimmen eines Persistenzgrads (739) für eine E/A-Anforderung (116) auf der Basis einer Quellenkennung der E/A-Anforderung und/oder einer Dateikennung der E/A-Anforderung und/oder einer der E/A-Anforderung zugordneten Anwendung und/oder eines Parameters der E/A-Anforderung umfassen.
  14. Vorrichtung, umfassend: einen E/A-Stapel (117); ein Persistenzgradmodul, ausgelegt zum Auswählen jeweiliger Grade der Persistenz für Eingabe/Ausgabe (E/A)-Anforderungen (116), wobei ein erster der Persistenzgrade (739) einem vergänglichen Cache-Speicherungsmodus entspricht, der in Reaktion darauf, dass eine E/A-Anforderung Daten betrifft, die nur für eine begrenzte Zeit behalten werden müssen, ausgewählt wird; ein Schnittstellenmodul (218), ausgelegt zum Bilden einer Schnittstelle mit mehreren Speicherbetriebsmitteln (240A, 240B-N), wobei die Speicherbetriebsmittel persistente primäre Speicherbetriebsmittel (240B-N), auf die über den E/A-Stapel (117) zugegriffen wird, und ein Cache-Speicherbetriebsmittel (240A) umfassen, auf das außerhalb des E/A-Stapels zugegriffen wird; und ein Speicheranforderungs-Ausfiihrungsmodul, ausgelegt zum Versorgen der E/A-Anforderungen unter Verwendung der Speicherbetriebsmittel gemäß dem für die E/A-Anforderungen (116) ausgewählten Grad der Persistenz, wobei das Versorgen einer Schreib-E/A-Anforderung, die den ersten Persistenzgrad aufweist, umfasst: Schreiben von Daten in das Cache-Speicherbetriebsmittel (240A) ohne die Daten in eines der primären Speicherbetriebsmittel (240B N) zu schreiben, wobei das Schreiben der Daten in einer schneller-Pfad-E/A-Operation implementiert ist, die die außerhalb des E/A-Stapels (117) und/ ohne Beteiligung von primären Speicherbetriebsmitteln (240B N) stattfindet.
  15. Vorrichtung nach Anspruch 14, wobei das Persistenzgradmodul ausgelegt ist zum Wählen eines Persistenzgrads (739) für eine Speicheranforderung auf der Basis einer Dateikennung der Speicheranforderung und/oder einer der Speicheranforderung zugeordneten Anwendung und/oder eines Parameters der Speicheranforderung und/oder eines Steuerparameters für Eingabe/Ausgabe (E/A).
  16. Vorrichtung nach Anspruch 14, wobei ein zweiter der Persistenzgrade einem nichtvergänglichen Cache-Speicherungsmodus entspricht; wobei das Versorgen einer E/A-Anforderung, die den zweiten Persistenzgrad aufweist, durch das Speicheranforderungs-Ausführungsmodul umfasst: Speichern von Daten der E/A-Anforderung mit dem zweiten Persistenzgrad auf einem oder mehreren der primären Speicherbetriebsmittel unter Verwendung einer langsamer-Pfad-E/A-Operation, an der eine oder mehrere Schichten des E/A-Stapels 117 beteiligt sind.
  17. Vorrichtung nach Anspruch 14, wobei ein dritter der Persistenzgrade Speichern von Daten in einer ersten RAID-Konfiguration umfasst und ein vierter der Persistenzgrade Speichern von Daten in einer zweiten, anderen RAID-Konfiguration umfasst.
DE112013004250.9T 2012-08-31 2013-08-29 Vorrichtung, Verfahren und Computerprogrammprodukt für adaptive Persistenz Active DE112013004250B4 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261696126P 2012-08-31 2012-08-31
US61/696,126 2012-08-31
US13/829,358 US10346095B2 (en) 2012-08-31 2013-03-14 Systems, methods, and interfaces for adaptive cache persistence
US13/829,358 2013-03-14
US13/829,835 US10359972B2 (en) 2012-08-31 2013-03-14 Systems, methods, and interfaces for adaptive persistence
US13/829,835 2013-03-14
PCT/US2013/057366 WO2014036307A1 (en) 2012-08-31 2013-08-29 Systems, methods, and interfaces for adaptive persistence

Publications (2)

Publication Number Publication Date
DE112013004250T5 DE112013004250T5 (de) 2015-07-09
DE112013004250B4 true DE112013004250B4 (de) 2022-08-25

Family

ID=50189117

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013004250.9T Active DE112013004250B4 (de) 2012-08-31 2013-08-29 Vorrichtung, Verfahren und Computerprogrammprodukt für adaptive Persistenz

Country Status (6)

Country Link
US (3) US10359972B2 (de)
JP (2) JP2015535355A (de)
KR (1) KR101841997B1 (de)
CN (1) CN104903872B (de)
DE (1) DE112013004250B4 (de)
WO (1) WO2014036307A1 (de)

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9106690B1 (en) * 2012-06-14 2015-08-11 Bromium, Inc. Securing an endpoint by proxying document object models and windows
US9195585B2 (en) * 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US9448816B2 (en) * 2013-04-29 2016-09-20 Vmware, Inc. Virtual desktop infrastructure (VDI) caching using context
US9507607B2 (en) * 2013-05-10 2016-11-29 Vmware, Inc. Virtual persistence
TWI578836B (zh) 2013-05-10 2017-04-11 瑞雷2股份有限公司 多租戶虛擬存取點-網路資源虛擬化之技術
US9842128B2 (en) * 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9882984B2 (en) * 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
US9324438B2 (en) 2013-08-05 2016-04-26 Jonker Llc Method of operating incrementally programmable non-volatile memory
US9760448B1 (en) * 2013-08-23 2017-09-12 Acronis International Gmbh Hot recovery of virtual machines
US11018988B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Translating high level requirements policies to distributed configurations
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9519581B2 (en) * 2013-09-16 2016-12-13 Vmware, Inc. Storage integration for host-based write-back caching
US9460008B1 (en) * 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
WO2015065449A1 (en) * 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Cache controller for non-volatile memory
US9229855B2 (en) * 2013-11-12 2016-01-05 Skyera, Llc Apparatus and method for routing information in a non-volatile memory-based storage device
US9336134B2 (en) * 2013-11-12 2016-05-10 Skyera, Llc Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device
US10019354B2 (en) * 2013-12-09 2018-07-10 Intel Corporation Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory
US10241709B2 (en) * 2013-12-09 2019-03-26 Vmware, Inc. Elastic temporary filesystem
US9286238B1 (en) * 2013-12-31 2016-03-15 Emc Corporation System, apparatus, and method of cache management
US9933980B2 (en) * 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
US9509769B2 (en) * 2014-02-28 2016-11-29 Sap Se Reflecting data modification requests in an offline environment
US9646012B1 (en) * 2014-03-06 2017-05-09 Veritas Technologies Llc Caching temporary data in solid state storage devices
US10133488B2 (en) * 2014-03-17 2018-11-20 Primaryio, Inc. Apparatus and method for cache provisioning, configuration for optimal application performance
US10146437B2 (en) 2014-03-17 2018-12-04 Primaryio, Inc. Tier aware caching solution to increase application performance
JP6369069B2 (ja) * 2014-03-17 2018-08-08 日本電気株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
US10083051B1 (en) * 2014-04-11 2018-09-25 VCE IP Holding Company LLC System, method, and code for classifying resources of a virtual computing environment
US9697130B2 (en) * 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US9483300B2 (en) * 2014-07-15 2016-11-01 Red Hat Israel, Ltd. Importing a running VM
US9547592B2 (en) * 2014-07-29 2017-01-17 International Business Machines Corporation Cache mobility
JP6365085B2 (ja) * 2014-08-04 2018-08-01 富士通株式会社 データ移行方法及びデータ移行装置
US20160050112A1 (en) * 2014-08-13 2016-02-18 PernixData, Inc. Distributed caching systems and methods
WO2016032955A2 (en) * 2014-08-25 2016-03-03 Cacheio Llc Nvram enabled storage systems
US10552085B1 (en) * 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US11783898B2 (en) 2014-09-18 2023-10-10 Jonker Llc Ephemeral storage elements, circuits, and systems
US20160092353A1 (en) * 2014-09-25 2016-03-31 Robert C. Swanson Establishing cold storage pools from aging memory
US10061738B2 (en) 2014-09-30 2018-08-28 Jonker Llc Ephemeral peripheral device
US10115467B2 (en) 2014-09-30 2018-10-30 Jonker Llc One time accessible (OTA) non-volatile memory
US10839086B2 (en) 2014-09-30 2020-11-17 Jonker Llc Method of operating ephemeral peripheral device
US10169124B2 (en) * 2014-12-16 2019-01-01 Samsung Electronics Co., Ltd. Unified object interface for memory and storage system
US9851990B2 (en) 2015-01-30 2017-12-26 American Megatrends, Inc. Method and system for performing on-demand data write through based on UPS power status
US9886387B2 (en) * 2015-01-30 2018-02-06 American Megatrends, Inc. Method and system for performing on-demand data write through based on virtual machine types
US11327779B2 (en) * 2015-03-25 2022-05-10 Vmware, Inc. Parallelized virtual machine configuration
JP2016184188A (ja) * 2015-03-25 2016-10-20 日本電気株式会社 管理装置、管理方法とそのプログラム、および、情報処理システム
CN104881371B (zh) * 2015-05-29 2018-02-09 清华大学 持久性内存事务处理缓存管理方法与装置
US9813500B2 (en) 2015-06-12 2017-11-07 Cisco Technology, Inc. Allocating cloud storage based on storage attributes
US10474486B2 (en) * 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
US20170038933A1 (en) * 2015-08-06 2017-02-09 Facebook, Inc. Systems and methods for providing reminders for content in social networks
US10558480B2 (en) 2015-09-10 2020-02-11 Veritas Technologies Llc Optimizing access to production data
CN106547476B (zh) * 2015-09-22 2021-11-09 伊姆西Ip控股有限责任公司 用于数据存储系统的方法和装置
US10496545B2 (en) * 2015-11-24 2019-12-03 Hewlett Packard Enterprise Development Lp Data caching in a large-scale processing environment
EP3384393B1 (de) * 2015-12-02 2020-03-11 Telefonaktiebolaget LM Ericsson (publ) Verfahren und speicherverfügbarkeitsverwaltungsmodul zur verwaltung der verfügbarkeit von speicherseiten
US10049004B2 (en) * 2015-12-09 2018-08-14 Samsung Electronics Co., Ltd. Electronic system with memory data protection mechanism and method of operation thereof
CN107851062A (zh) * 2015-12-31 2018-03-27 华为技术有限公司 一种主机集群中缓存管理方法及主机
US9864661B2 (en) * 2016-02-12 2018-01-09 Hewlett Packard Enterprise Development Lp Cache-accelerated replication of snapshots between storage devices
CN107515724B (zh) * 2016-06-16 2021-04-02 伊姆西Ip控股有限责任公司 用于再现存储系统的输入输出的方法和设备
CN111831234B (zh) * 2016-06-21 2024-04-23 伊姆西Ip控股有限责任公司 用于虚拟机的方法和装置
US10678578B2 (en) 2016-06-30 2020-06-09 Microsoft Technology Licensing, Llc Systems and methods for live migration of a virtual machine based on heat map and access pattern
US10334334B2 (en) 2016-07-22 2019-06-25 Intel Corporation Storage sled and techniques for a data center
TWI619013B (zh) * 2016-08-24 2018-03-21 康齊科技股份有限公司 記憶體管理系統及其方法
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US10783102B2 (en) * 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10437691B1 (en) * 2017-03-29 2019-10-08 Veritas Technologies Llc Systems and methods for caching in an erasure-coded system
CN106959672B (zh) * 2017-04-28 2020-07-28 深圳市汇川控制技术有限公司 一种基于api的工业运动控制系统及方法
US10152422B1 (en) 2017-06-13 2018-12-11 Seagate Technology Llc Page-based method for optimizing cache metadata updates
US10810116B2 (en) * 2017-06-29 2020-10-20 Sap Se In-memory database with page size adaptation during loading
US20190004947A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Selective temporary data storage
KR102474582B1 (ko) 2017-08-28 2022-12-05 삼성전자주식회사 가상화 클러스터 환경의 비바람직한 호스트 서버 상에서 더티 가상 머신의 실행을 방지하는 방법 및 시스템
US10592293B2 (en) 2017-08-31 2020-03-17 Cisco Technology, Inc. Tenant-specific policy generation and enforcement within containers
US20190095107A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Data classification for placement within storage devices
US11106588B2 (en) * 2017-11-28 2021-08-31 International Business Machines Corporation Deferred method of allocating disk space for lightning segments
US10802932B2 (en) * 2017-12-04 2020-10-13 Nxp Usa, Inc. Data processing system having lockstep operation
CN108268217B (zh) * 2018-01-10 2021-04-30 北京航天云路有限公司 一种基于时序数据冷热分类的分层存储方法
US10678439B2 (en) * 2018-04-02 2020-06-09 Micron Technology, Inc. Optimization of memory systems based on performance goals
CN108519863B (zh) * 2018-04-12 2021-06-11 郑州云海信息技术有限公司 一种存储系统的io管理方法及装置
CN109002401A (zh) * 2018-05-04 2018-12-14 广东睿江云计算股份有限公司 基于动态缓冲的虚拟机磁盘复制过程读取方法及装置
KR102052312B1 (ko) * 2018-05-08 2019-12-05 주식회사 애포샤 캐싱 장치 및 방법
US10656869B1 (en) * 2018-06-28 2020-05-19 Amazon Technologies, Inc. Performance-based volume replica migration
CN109032838B (zh) * 2018-06-28 2022-07-15 上海爱数信息技术股份有限公司 虚拟机备份恢复数据一致性的自动校验方法
US11568179B2 (en) 2018-10-19 2023-01-31 Oracle International Corporation Selecting an algorithm for analyzing a data set based on the distribution of the data set
US11573962B2 (en) * 2018-10-19 2023-02-07 Oracle International Corporation Dynamic performance tuning based on implied data characteristics
US10860078B2 (en) * 2018-10-25 2020-12-08 Dell Products, L.P. Managing power request during cluster operations
US11126486B2 (en) 2018-10-25 2021-09-21 Dell Products, L.P. Prediction of power shutdown and outage incidents
US11048523B2 (en) 2018-10-25 2021-06-29 Dell Products, L.P. Enabling software sensor power operation requests via baseboard management controller (BMC)
US10866890B2 (en) * 2018-11-07 2020-12-15 Arm Limited Method and apparatus for implementing lock-free data structures
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
US10895997B2 (en) * 2019-02-20 2021-01-19 Nutanix, Inc. Durable client-side caching for distributed storage
TWI737189B (zh) * 2019-02-23 2021-08-21 國立清華大學 易於從固態儲存裝置之故障中還原的方法、電腦系統,及固態儲存裝置
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
WO2020190796A1 (en) * 2019-03-15 2020-09-24 Intel Corporation Systems and methods for cache optimization
CN113366454A (zh) 2019-03-15 2021-09-07 英特尔公司 用于图形操作的多片架构
CN110174997B (zh) * 2019-04-17 2022-12-13 贵州力创科技发展有限公司 一种基于持久层的数据存储方法及区块链服务器
US11921637B2 (en) 2019-05-24 2024-03-05 Texas Instruments Incorporated Write streaming with cache write acknowledgment in a processor
US20230143181A1 (en) * 2019-08-27 2023-05-11 Micron Technology, Inc. Write buffer control in managed memory system
CN110618834B (zh) * 2019-09-05 2021-10-15 苏州浪潮智能科技有限公司 I/o栈请求响应方法、系统和i/o栈请求响应控制方法及系统
US11481325B2 (en) * 2020-03-30 2022-10-25 Citrix Systems, Inc. Secure fast reboot of a virtual machine
US11972142B2 (en) * 2020-12-29 2024-04-30 Arm Limited Data processing circuitry and apparatus for packet-based data communications
KR20220105304A (ko) * 2021-01-20 2022-07-27 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법
US12019893B2 (en) 2022-06-28 2024-06-25 Western Digital Technologies, Inc. Storage device pool management based on fragmentation levels
US20240095186A1 (en) * 2022-09-15 2024-03-21 International Business Machines Corporation Virtual machine failover with disaggregated shared memory
US20240126458A1 (en) * 2022-10-14 2024-04-18 Arm Limited Controlling data allocation to storage circuitry

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080141043A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for managing data using a data pipeline
US20100274962A1 (en) 2009-04-26 2010-10-28 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US20110119228A1 (en) 2009-11-16 2011-05-19 Symantec Corporation Selective file system caching based upon a configurable cache map
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US20120011340A1 (en) 2010-01-06 2012-01-12 Fusion-Io, Inc. Apparatus, System, and Method for a Virtual Storage Layer
US20120210066A1 (en) 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a file-level cache

Family Cites Families (407)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
JPS55157053A (en) * 1979-05-25 1980-12-06 Nec Corp Disc cash write-in control system
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5043871A (en) 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5291496A (en) 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
KR930003088B1 (ko) 1990-10-23 1993-04-17 삼성전자 주식회사 초고주파와 히터열을 이용한 정화 소각장치
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5313475A (en) 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
JPH06187249A (ja) * 1992-12-16 1994-07-08 Nec Eng Ltd ディスクアレイ装置
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5459850A (en) 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5392244A (en) 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management
JP3172007B2 (ja) * 1993-09-17 2001-06-04 富士通株式会社 ディスク複写処理方式
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5434994A (en) 1994-05-23 1995-07-18 International Business Machines Corporation System and method for maintaining replicated data coherency in a data processing system
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
DE69615278T2 (de) 1995-06-06 2002-06-27 Hewlett Packard Co SDRAM-Datenzuweisungsanordnung und -verfahren
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
JP3394651B2 (ja) * 1996-07-09 2003-04-07 株式会社クボタ 球状野菜の包装設備
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6092159A (en) * 1998-05-05 2000-07-18 Lsi Logic Corporation Implementation of configurable on-chip fast memory using the data cache RAM
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6266785B1 (en) 1998-09-01 2001-07-24 Ncr Corporation File system filter driver apparatus and method
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6336174B1 (en) 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
AU2746001A (en) 1999-10-25 2001-05-08 Infolibria, Inc. Fast indexing of web objects
ATE247296T1 (de) 1999-10-25 2003-08-15 Sun Microsystems Inc Speichersystem mit unterstützung von dateistufenzugriffen und blockstufenzugriffen
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6785785B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Method for supporting multi-level stripping of non-homogeneous memory to maximize concurrency
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
WO2001080013A1 (en) 2000-04-18 2001-10-25 Storeage Networking Technologies Storage virtualization in a storage area network
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6779094B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
GB2379538B (en) 2000-06-23 2005-01-12 Intel Corp Non-volatile cache
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
JP3671138B2 (ja) 2000-08-17 2005-07-13 ジャパンコンポジット株式会社 通気性防水被覆構造体、およびその施工方法
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US20020159552A1 (en) 2000-11-22 2002-10-31 Yeshik Shin Method and system for plesiosynchronous communications with null insertion and removal
US20020069317A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US7260820B1 (en) 2001-04-26 2007-08-21 Vm Ware, Inc. Undefeatable transformation for virtual machine I/O operations
CN100553150C (zh) 2001-05-08 2009-10-21 国际商业机器公司 用于高速应用的8b/10b编码和解码
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US6986015B2 (en) * 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US7290109B2 (en) 2002-01-09 2007-10-30 Renesas Technology Corp. Memory system and memory card
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7076606B2 (en) * 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7082512B2 (en) 2002-11-21 2006-07-25 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
ATE504446T1 (de) 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
US7318141B2 (en) 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US20040169885A1 (en) 2003-02-28 2004-09-02 Mellor Douglas J. Memory management
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
US7987249B2 (en) 2003-04-09 2011-07-26 Intel Corporation Soft system failure recovery for management consoles supporting ASF RMCP
US7415591B1 (en) 2003-04-23 2008-08-19 Emc Corporation Method and apparatus for migrating data and automatically provisioning a target for the migration
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7149947B1 (en) 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
US7315923B2 (en) 2003-11-13 2008-01-01 Commvault Systems, Inc. System and method for combining data streams in pipelined storage operations in a storage network
WO2005050453A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. ファイル記録装置
US7350127B2 (en) 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
JP2005284816A (ja) * 2004-03-30 2005-10-13 Hitachi Ltd ディスクアレイシステム
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7711140B2 (en) 2004-04-21 2010-05-04 Canon Kabushiki Kaisha Secure recorded documents
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
DE602005015435D1 (de) 2004-04-26 2009-08-27 Storewiz Inc Verfahren und system zur komprimierung von dateien zur speicherung und operation an komprimierten dateien
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7213125B2 (en) 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
WO2006025322A1 (ja) 2004-08-30 2006-03-09 Matsushita Electric Industrial Co., Ltd. 記録装置
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
EP1839154A4 (de) 2004-12-06 2008-07-09 Teac Aerospace Technologies In System und verfahren zum löschen von nichtflüchtigen aufzeichnungsmedien
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
US20060136685A1 (en) 2004-12-17 2006-06-22 Sanrad Ltd. Method and system to maintain data consistency over an internet small computer system interface (iSCSI) network
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
GB2426082B (en) * 2005-05-09 2007-08-15 Sony Comp Entertainment Europe Memory caching in data processing
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7383392B2 (en) 2005-05-31 2008-06-03 Hewlett-Packard Development Company, L.P. Performing read-ahead operation for a direct input/output request
US7472225B2 (en) 2005-06-20 2008-12-30 Arm Limited Caching data
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7424577B2 (en) 2005-08-26 2008-09-09 Network Appliance, Inc. Dynamic optimization of cache memory
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
JP2007071805A (ja) 2005-09-09 2007-03-22 Denso Corp 力学量センサの製造方法
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7752173B1 (en) * 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US7440455B2 (en) 2005-12-22 2008-10-21 Level 3 Communications, Llc Registration of multiple VoIP devices
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
JP2007240904A (ja) 2006-03-09 2007-09-20 Hitachi Ltd プラズマディスプレイ装置
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
WO2008002419A2 (en) 2006-06-19 2008-01-03 Xensource, Inc. Open virtual appliance
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP2008090378A (ja) * 2006-09-29 2008-04-17 Seiko Epson Corp ハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
CN101536002B (zh) 2006-11-03 2015-02-04 气体产品与化学公司 用于工艺监控的系统和方法
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7689804B2 (en) 2006-12-20 2010-03-30 Intel Corporation Selectively protecting a register file
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
US7721040B2 (en) 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
JP5020673B2 (ja) 2007-03-27 2012-09-05 株式会社日立製作所 重複したファイルの記憶を防ぐコンピュータシステム
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US8046767B2 (en) 2007-04-30 2011-10-25 Hewlett-Packard Development Company, L.P. Systems and methods for providing capacity management of resource pools for servicing workloads
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US7793061B1 (en) * 2007-06-29 2010-09-07 Emc Corporation Techniques for using flash-based memory as a write cache and a vault
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
KR20090034629A (ko) * 2007-10-04 2009-04-08 삼성전자주식회사 쓰기 버퍼를 포함하는 저장장치 및 그 제어 방법
ES2493015T3 (es) 2007-11-05 2014-09-11 Cellular Communications Equipment Llc Método, aparato y soporte legible por ordenador para la transmisión de informes de estado de buffer
US7840839B2 (en) 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8549222B1 (en) 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
JP2009223787A (ja) * 2008-03-18 2009-10-01 Hitachi Software Eng Co Ltd 情報処理装置及び方法、並びにプログラム
JP5040773B2 (ja) 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US7975169B2 (en) 2008-06-03 2011-07-05 International Business Machines Corporation Memory preserved cache to prevent data loss
EP2304568B1 (de) 2008-06-06 2013-08-14 Pivot3 Verfahren und system für eine verteilte raid-implementierung
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US20100082922A1 (en) 2008-09-30 2010-04-01 Vmware, Inc. Virtual machine migration using local storage
JP5124430B2 (ja) * 2008-12-04 2013-01-23 株式会社エヌ・ティ・ティ・データ 仮想マシンの移行方法、サーバ、及び、プログラム
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8195878B2 (en) * 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
CN101819564B (zh) 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8060722B2 (en) 2009-03-27 2011-11-15 Vmware, Inc. Hardware assistance for shadow page table coherence with guest page mappings
US8171219B2 (en) 2009-03-31 2012-05-01 Intel Corporation Method and system to perform caching based on file-level heuristics
US8566508B2 (en) 2009-04-08 2013-10-22 Google Inc. RAID configuration in a flash memory data storage device
US8595572B2 (en) 2009-04-08 2013-11-26 Google Inc. Data storage device with metadata command
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8527466B2 (en) 2009-05-31 2013-09-03 Red Hat Israel, Ltd. Handling temporary files of a virtual machine
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8719767B2 (en) 2011-03-31 2014-05-06 Commvault Systems, Inc. Utilizing snapshots to provide builds to developer computing devices
US20130036093A1 (en) 2009-12-17 2013-02-07 National Ict Australia Limited Reliable Writing of Database Log Data
US9021046B2 (en) 2010-01-15 2015-04-28 Joyent, Inc Provisioning server resources in a cloud resource
WO2011112523A2 (en) 2010-03-08 2011-09-15 Hewlett-Packard Development Company, L.P. Data storage apparatus and methods
US9110806B2 (en) 2010-03-10 2015-08-18 Microsoft Technology Licensing, Llc Opportunistic page caching for virtualized servers
US20110238737A1 (en) * 2010-03-26 2011-09-29 Nec Laboratories America, Inc. Decentralized cloud storage
US9342801B2 (en) 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
US8413142B2 (en) 2010-03-30 2013-04-02 Citrix Systems, Inc. Storage optimization selection within a virtualization environment
US8539124B1 (en) * 2010-03-31 2013-09-17 Emc Corporation Storage integration plugin for virtual servers
US8312471B2 (en) * 2010-04-26 2012-11-13 Vmware, Inc. File system independent content aware cache
WO2011135637A1 (en) * 2010-04-30 2011-11-03 Hitachi,Ltd. Computer system and control method thereof
US20110320733A1 (en) * 2010-06-04 2011-12-29 Steven Ted Sanford Cache management and acceleration of storage media
US8244935B2 (en) 2010-06-25 2012-08-14 Oracle International Corporation Write aggregation using optional I/O requests
US8863117B2 (en) 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
US8595522B2 (en) 2010-09-30 2013-11-26 Intel Corporation Monitoring transaction requests using a policy engine within a storage drive driver to change power capability and latency settings for a storage drive
CN102467408B (zh) 2010-11-12 2014-03-19 阿里巴巴集团控股有限公司 一种虚拟机数据的访问方法和设备
US20120144110A1 (en) 2010-12-02 2012-06-07 Lsi Corporation Methods and structure for storage migration using storage array managed server agents
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
US8479294B1 (en) 2011-02-15 2013-07-02 Trend Micro Incorporated Anti-malware scan management in high-availability virtualization environments
KR20120097136A (ko) 2011-02-24 2012-09-03 삼성전자주식회사 가상화 환경에서의 메모리 풀 관리
US9563555B2 (en) * 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
WO2012130289A1 (en) 2011-03-29 2012-10-04 Brainlab Ag Processing of digital data, in particular medical data by a virtual machine
US9342254B2 (en) * 2011-06-04 2016-05-17 Microsoft Technology Licensing, Llc Sector-based write filtering with selective file and registry exclusions
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
CA2761553C (en) * 2011-12-09 2019-03-05 Ibm Canada Limited - Ibm Canada Limitee Logical buffer pool extension
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US9336035B2 (en) * 2012-10-23 2016-05-10 Vmware, Inc. Method and system for VM-granular I/O caching
US9055119B2 (en) * 2013-03-26 2015-06-09 Vmware, Inc. Method and system for VM-granular SSD/FLASH cache live migration
US9152330B2 (en) * 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080141043A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for managing data using a data pipeline
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US20100274962A1 (en) 2009-04-26 2010-10-28 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US20110119228A1 (en) 2009-11-16 2011-05-19 Symantec Corporation Selective file system caching based upon a configurable cache map
US20120011340A1 (en) 2010-01-06 2012-01-12 Fusion-Io, Inc. Apparatus, System, and Method for a Virtual Storage Layer
US20120210066A1 (en) 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a file-level cache

Also Published As

Publication number Publication date
JP6709245B2 (ja) 2020-06-10
US20140068183A1 (en) 2014-03-06
KR20150081424A (ko) 2015-07-14
DE112013004250T5 (de) 2015-07-09
US9058123B2 (en) 2015-06-16
JP2015535355A (ja) 2015-12-10
CN104903872B (zh) 2019-03-29
JP2018125025A (ja) 2018-08-09
US10346095B2 (en) 2019-07-09
KR101841997B1 (ko) 2018-03-27
WO2014036307A1 (en) 2014-03-06
US20140068197A1 (en) 2014-03-06
US20140237147A1 (en) 2014-08-21
US10359972B2 (en) 2019-07-23
CN104903872A (zh) 2015-09-09

Similar Documents

Publication Publication Date Title
DE112013004250B4 (de) Vorrichtung, Verfahren und Computerprogrammprodukt für adaptive Persistenz
US9842053B2 (en) Systems and methods for persistent cache logging
US7676514B2 (en) Distributed maintenance of snapshot copies by a primary processor managing metadata and a secondary processor providing read-write access to a production dataset
US9026737B1 (en) Enhancing memory buffering by using secondary storage
US7945726B2 (en) Pre-allocation and hierarchical mapping of data blocks distributed from a first processor to a second processor for use in a file system
US7653832B2 (en) Storage array virtualization using a storage block mapping protocol client and server
US10339056B2 (en) Systems, methods and apparatus for cache transfers
US9135123B1 (en) Managing global data caches for file system
US8943282B1 (en) Managing snapshots in cache-based storage systems
US9009437B1 (en) Techniques for shared data storage provisioning with thin devices
US9760574B1 (en) Managing I/O requests in file systems
US9811276B1 (en) Archiving memory in memory centric architecture
US9442955B1 (en) Managing delete operations in files of file systems
US20140012940A1 (en) Systems, Methods and Apparatus for a Virtual Machine Cache
US10261703B2 (en) Sharing read-only data among virtual machines using coherent accelerator processor interface (CAPI) enabled flash
Kadekodi et al. WineFS: a hugepage-aware file system for persistent memory that ages gracefully
WO2015200528A1 (en) Systems and methods for storage service automation
EP2847698A1 (de) Effiziente speicherung und abruf von datenobjekten
US11409454B1 (en) Container ownership protocol for independent node flushing
US11340829B1 (en) Techniques for log space management involving storing a plurality of page descriptor (PDESC) page block (PB) pairs in the log
US9519590B1 (en) Managing global caches in data storage systems
US10089125B2 (en) Virtual machines accessing file data, object data, and block data
US11947799B1 (en) Systems and methods for using the TRIM command with solid state devices
US11782842B1 (en) Techniques for reclaiming dirty cache pages
US11995329B1 (en) Techniques for improving write performance using zone sharing in log structured systems

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES LLC, PLANO, US

Free format text: FORMER OWNER: FUSION-IO, INC., SALT LAKE CITY, UTAH, US

Owner name: LONGITUDE ENTERPRISE FLASH S.A.R.L., LU

Free format text: FORMER OWNER: FUSION-IO, INC., SALT LAKE CITY, UTAH, US

Owner name: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 L, US

Free format text: FORMER OWNER: FUSION-IO, INC., SALT LAKE CITY, UTAH, US

R082 Change of representative

Representative=s name: DEHNS GERMANY, DE

Representative=s name: VOSSIUS & PARTNER PATENTANWAELTE RECHTSANWAELT, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES LLC, PLANO, US

Free format text: FORMER OWNER: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC (N.D.GES.D. STAATES DELAWARE), WILMINGTON, DEL., US

Owner name: LONGITUDE ENTERPRISE FLASH S.A.R.L., LU

Free format text: FORMER OWNER: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC (N.D.GES.D. STAATES DELAWARE), WILMINGTON, DEL., US

R082 Change of representative

Representative=s name: DEHNS GERMANY, DE

Representative=s name: VOSSIUS & PARTNER PATENTANWAELTE RECHTSANWAELT, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES LLC, PLANO, US

Free format text: FORMER OWNER: LONGITUDE ENTERPRISE FLASH S.A.R.L., LUXEMBOURG, LU

R082 Change of representative

Representative=s name: DEHNS GERMANY, DE

Representative=s name: VOSSIUS & PARTNER PATENTANWAELTE RECHTSANWAELT, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R020 Patent grant now final