DE112013004250T5 - Systeme, Verfahren und Schnittstellen für adaptive Persistenz - Google Patents
Systeme, Verfahren und Schnittstellen für adaptive Persistenz Download PDFInfo
- Publication number
- DE112013004250T5 DE112013004250T5 DE112013004250.9T DE112013004250T DE112013004250T5 DE 112013004250 T5 DE112013004250 T5 DE 112013004250T5 DE 112013004250 T DE112013004250 T DE 112013004250T DE 112013004250 T5 DE112013004250 T5 DE 112013004250T5
- Authority
- DE
- Germany
- Prior art keywords
- cache
- data
- request
- virtual machine
- persistence
- 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.)
- Granted
Links
- 230000002688 persistence Effects 0.000 title claims abstract description 226
- 238000000034 method Methods 0.000 title claims description 92
- 230000003044 adaptive effect Effects 0.000 title claims description 29
- 230000001052 transient effect Effects 0.000 claims abstract description 111
- 230000004044 response Effects 0.000 claims abstract description 64
- 238000013508 migration Methods 0.000 claims abstract description 14
- 230000005012 migration Effects 0.000 claims abstract description 14
- 238000012546 transfer Methods 0.000 claims description 78
- 230000014759 maintenance of location Effects 0.000 claims description 29
- 230000000717 retained effect Effects 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 18
- 238000012544 monitoring process Methods 0.000 claims description 8
- 238000011010 flushing procedure Methods 0.000 claims description 7
- 238000012937 correction Methods 0.000 claims description 4
- 239000003795 chemical substances by application Substances 0.000 description 19
- 238000012545 processing Methods 0.000 description 18
- 239000004065 semiconductor Substances 0.000 description 16
- 230000002085 persistent effect Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000007726 management method Methods 0.000 description 13
- 230000008901 benefit Effects 0.000 description 12
- 238000013507 mapping Methods 0.000 description 12
- 238000003384 imaging method Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 7
- 230000014616 translation Effects 0.000 description 7
- 230000003370 grooming effect Effects 0.000 description 6
- 230000032683 aging Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 235000019633 pungent taste Nutrition 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 239000002184 metal Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000007596 consolidation process Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 229910052814 silicon oxide Inorganic materials 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000010953 base metal Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 239000002159 nanocrystal Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003334 potential effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- -1 silicon oxide nitride Chemical class 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation 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
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.
- KURZFASSUNG
- 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.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- 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 einer Ausführungsform eines 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 Modul130 kann in einer Datenverarbeitungsumgebung110 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 Datenverarbeitungsumgebung110 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 Verarbeitungsbetriebsmittel112 , flüchtige Speicherbetriebsmittel113 , persistente Speicherbetriebsmittel114 und/oder eine Kommunikationsschnittstelle115 umfassen. Die Verarbeitungsbetriebsmittel112 können ein oder mehrere allgemeine und/oder Spezialverarbeitungselemente und/oder -kerne umfassen. Die Verarbeitungsbetriebsmittel112 können ausgelegt sein zum Ausführen von aus den persistenten Speicherbetriebsmitteln114 geladenen Anweisungen. Teile der Module und/oder Verfahren, die hier beschrieben werden, können als auf den persistenten Speicherbetriebsmitteln114 gespeicherte maschinenlesbare Anweisungen realisiert werden. Die Betriebsmittel112 ,113 ,114 und/oder115 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ängermodul132 , ein Persistenzgradmodul134 und ein E/A-Anforderungsausführungsmodul136 umfassen. Teile des Speichermoduls130 können an der Datenverarbeitungsumgebung110 oder in Verbindung mit dieser operieren. Als Alternative oder zusätzlich können Teile des Speichermoduls130 getrennt von der Datenverarbeitungsumgebung110 implementiert werden; zum Beispiel können Teile des Speichermoduls130 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 Kommunikationsnetzes105 oder dergleichen. - Das Speichermodul
130 kann kommunikativ mit einem oder mehreren Speicherbetriebsmitteln140A –N gekoppelt sein. Die Speicherbetriebsmittel140A –N können lokale Speicherbetriebsmittel umfassen, die über jeweilige Schnittstellenmechanismen141 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 Speicherbetriebsmittel140A –N können ferner ein oder mehrere entfernte netzwerkzugängliche Speicherbetriebsmittel140C 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 Fernprotokoll141 zugänglich sein kann. - Die Speicherbetriebsmittel
140A –N können verschiedene Arten von Speichervorrichtung(en) und/oder Speichermedien in verschiedenen Konfigurationen umfassen. Die Speicherbetriebsmittel140A –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 Speicherbetriebsmittel140A –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 Speicherbetriebsmittel140A –N eine Menge von nichtflüchtigen Speicherelementen (z. B. Festplatten) in einer RAID- und/oder Spiegelungskonfiguration umfassen, während andere Speicherbetriebsmittel140A –N nichtredundant sein können. Die Speicherbetriebsmittel140A –N können ausgelegt sein zum Speichern von Daten gemäß verschiedenen Retentionsrichtlinien (z. B. Cache-Speicherungsmodi). Zum Beispiel kann das Speicherbetriebsmittel140A ausgelegt sein zum Cache-Speichern von Daten für ein anderes primäres Speicherbetriebsmittel140B . Das Speichermodul130 kann die Cache-Betriebsmittel dafür konfigurieren, in bestimmten Cache-Speicherungsmodi und/oder -konfigurationen zu arbeiten. Zum Beispiel kann das Speichermodul130 Daten einer ersten E/A-Anforderung in einer Hindurchschreib-Konfiguration Cache-speichern (z. B. die Daten in das Cache-Speicherbetriebsmittel140A und das primäre Speicherbetriebsmittel140B schreiben) und kann Daten einer zweiten E/A-Anforderung in einem vergänglichen Cache-Modus Cache-Speichern, wobei die Daten nur in dem Cache-Speicherbetriebsmittel140A gespeichert werden und beim Hinauswerfen (z. B. Neubooten) verloren gehen. - Das Speichermodul
130 kann ausgelegt sein zum Versorgen von E/A-Anforderungen116 von einem oder mehreren Speicher-Clients. Die E/A-Anforderung(en)116 können im E/A-Anforderungsempfängermodul132 über eine oder mehrere Schnittstelle(n)131 des Speichermoduls130 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 Persistenzgradmodul134 umfassen, dass dafür ausgelegt ist, einen Persistenzgrad für die E/A-Anforderung116 auszuwählen. Wie oben besprochen, kann das Bestimmen des Persistenzgrads, ohne Beschränkung darauf, Folgendes umfassen: Auswählen eines oder mehrerer Speicherbetriebsmittel140A –N zur Versorgung der E/A-Anforderung116 , Auswählen einer Speicherkonfiguration des einen oder der mehreren ausgewählten Speicherbetriebsmittel140A –N (z. B. RAID-Ebene, Spiegelung oder dergleichen) und/oder Auswählen eines Speichermodus für die E/A-Anforderung116 (z. B. Cache-Speicherungsmodus, ECC-Codierung oder dergleichen). - Das Persistenzgradmodul
134 kann den Persistenzgrad für E/A-Anforderungen116 auf der Basis einer Persistenzgradrichtlinie135 bestimmen. Die Persistenzgradrichtlinie135 kann Persistenzgradkriterien umfassen, die dafür ausgelegt sind, jeweiligen E/A-Anforderungen116 Persistenzgrade auf der Basis von Kenngrößen und/oder Eigenschaften der E/A-Anforderungen116 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-Anforderung116 entspricht; Eigenschaften und/oder Kenngrößen der Anwendung und/oder der Speicher-Clients der E/A-Anforderung116 (z. B. Anwendungsebenenwissen); aus den E/A-Anforderungen116 Gefolgertes; ein oder mehrere Parameter der E/A-Anforderungen116 ; der E/A-Anforderung116 zugeordnete Parameter (z. B. IOCTL-Informationen); Profilierungsmetadaten bezüglich der E/A-Anforderungen116 ; Präferenzen und/oder Konfiguration; Tests und Erfahrung; und so weiter. Zum Beispiel können bei bestimmten Ausführungsformen eine oder mehrere der Schnittstellen131A und/oder131B Mechanismen zum Spezifizieren von Persistenzgradkenngrößen für E/A-Anforderungen116 umfassen. Zum Beispiel kann die E/A-Anforderung116 Speicherung in einer redundanten Speicherkonfiguration (z. B. einer bestimmten RAID-Ebene und/oder Spiegelungskonfiguration) anfordern. Die E/A-Anforderung116 kann ferner einen Cache-Speicherungsmodus für die E/A-Anforderung116 spezifizieren (z. B. einen Hindurchschreib-Cache-Modus spezifizieren). E/A-Anforderungen116 bezüglich temporärer Daten können einen anderen Persistenzgrad (oder andere Persistenzgradkenngrößen) spezifizieren. Zum Beispiel kann eine E/A-Anforderung116 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 Persistenzgradmodul134 einen Persistenzgrad auf der Basis von Persistenzgradkriterien bestimmen, die andere nicht explizite Informationen bezüglich der E/A-Anforderung116 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 Persistenzgradmodul135 weist E/A-Anforderungen116 bezüglich solcher temporärer Dateien einem geeigneten Persistenzgrad zu (z. B. Cache-Speicherung von Daten der E/A-Anforderungen116 in einem vorübergehenden Cache). - Das Speichermodul
130 kann ferner ein E/A-Ausführungsmodul136 umfassen, das dafür ausgelegt ist, E/A-Anforderungen116 zu versorgen. Das E/A-Anforderungsausführungsmodul136 kann ausgelegt sein zum Speichern von Daten von E/A-Anforderungen116 auf einem oder mehreren Speicherbetriebsmitteln140A –N in einer oder mehreren Speicherkonfigurationen und/oder -modi gemäß den jeweiligen Persistenzgraden der E/A-Anforderungen116 , die durch das Persistenzgradmodul134 bestimmt werden. Dementsprechend kann das E/A-Anforderungsausführungsmodul136 ausgelegt sein zum Speichern von Daten auf einem oder mehreren verschiedenen Speicherbetriebsmitteln140A –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 von1B zeigt das Speichermodul130 , das in der Datenverarbeitungsumgebung110 arbeitet. Wie oben offenbart, kann das Speichermodul130 dafür ausgelegt sein, E/A-Anforderungen116 über das E/A-Anforderungsempfängermodul132 zu empfangen. Die E/A-Anforderungen116 können durch Speicher-Clients106A –N ausgegeben werden, wie zum Beispiel, aber ohne Beschränkung darauf, Betriebssystem106A , Dateisysteme106B , Datenbanken106C , Benutzeranwendungen106D und so weiter. Die Speicher-Clients106A –N können in der Datenverarbeitungsumgebung110 arbeiten und/oder können andere Fern-Datenverarbeitungsumgebungen111 (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-Anforderungen116 direkt über eine oder mehrere Schnittstellen131A an das Speichermodul130 auszugeben. Als Alternative oder zusätzlich kann das Speichermodul130 ausgelegt sein zum Empfangen und/oder Überwachen von E/A-Anforderungen116 in einem E/A-Stapel117 der Datenverarbeitungsumgebung110 . Der E/A-Stapel117 kann einen Speicherstapel oder ein anderes E/A-Subsystem eines Betriebssystems106A (oder virtuellen Betriebssystems106A ) umfassen. Dementsprechend kann bei bestimmten Ausführungsformen das E/A-Anforderungsempfängermodul132 einen oder mehrere Agent(en)133 umfassen, die dafür ausgelegt sind, E/A-Anforderungen116 im E/A-Stapel117 zu überwachen. Der Agent bzw. die Agenten133 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-Schnittstellen118A –N umfassen, die dafür ausgelegt sind, mit einem oder mehreren jeweiligen Speicherbetriebsmitteln140A –N eine Schnittstelle zu bilden und/oder Speicheroperationen darauf auszuführen. Jede der E/A-Schnittstellen118A –N kann ausgelegt sein zur Bildung einer Schnittstelle mit einem oder mehreren Speicherbetriebsmitteln140A –N durch Verwendung eines bestimmten Schnittstellenmechanismus141A –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-Schnittstelle118B dafür ausgelegt sein, über eine virtuelle E/A-Schnittstelle141B eine Schnittstelle mit einem virtualisierten Speicherbetriebsmittel140B zu bilden, und eine E/A-Schnittstelle118C kann dafür ausgelegt sein, über ein Netzwerk105 (und/oder eine Kommunikationsschnittstelle115 ) auf ein Fern-Speicherbetriebsmittel140C 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-Schnittstelle118A kommunikativ mit dem Halbleiter-Speicherbetriebsmittel140A gekoppelt sein. Bei bestimmten Ausführungsformen kann deshalb die E/A-Schnittstelle118A 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 Übersetzungsmodul137 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 Speicherbetriebsmitteln140 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-Metadaten138 bezüglich Daten der E/A-Anforderungen116 und/oder der Speicherbetriebsmittel140A –N. Die E/A-Metadaten138 wären zum Beispiel, aber ohne Beschränkung darauf, ein Weiterleitungsindex (z. B. ein Index von Abbildungen und/oder Zuordnungen zwischen logischen Kennungen und Speicherbetriebsmitteln140A –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-Anforderungen116 bezüglich der logischen Kennung versorgt werden können. Die Persistenzgrad-Metadaten einer E/A-Anforderung116 können das bzw. die Speicherbetriebsmittel140A –N identifizieren, die Daten bezüglich der E/A-Anforderung116 , der Speicherkonfiguration der Speicherbetriebsmittel140A –N, Informationen bezüglich des Speichermodus der Daten und so weiter umfassen. Die E/A-Metadaten138 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-Metadaten138 können in dem flüchtigen Speicherbetriebsmittel113 unterhalten werden. Teile der E/A-Metadaten138 können persistent auf ein oder mehrere nichtflüchtige und/oder nichtvergängliche Speicherbetriebsmittel gelegt werden, wie etwa das persistente Speicherbetriebsmittel114 und/oder ein oder mehrere der Speicherbetriebsmittel140A –N. - Bei bestimmen Ausführungsformen kann das Speichermodul
130 die willkürlichen Abbildungen von beliebig auf beliebig des Übersetzungsmoduls137 erweitern, um Daten in einem Log-Format zu speichern, so dass Daten ”deplatziert” auf einem oder mehreren der Speicherbetriebsmittel140A –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 Speicherbetriebsmitteln140 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-Metadaten138 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 Speicherbetriebsmitteln140 verbleiben. - Das Speichermodul
130 kann ferner ein Log-Speichermodul139 umfassen, das dafür ausgelegt ist, Daten auf einem oder mehreren der Speicherbetriebsmittel140A –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 Speicherbetriebsmitteln140A –N ausgeführten Speicheroperationen bewahrt. Ein Log-Format kann dementsprechend ein ”Ereignis-Log” von an den Speicherbetriebsmitteln140A –N ausgeführten Speicheroperationen definieren. Bei bestimmten Anwendungen ist das Log-Speichermodul139 dafür ausgelegt, Daten von einem Anfügepunkt aus sequenziell zu speichern. Das Log-Speichermodul139 kann ferner dafür ausgelegt sein, Daten (und/oder physische Speicherstellen) auf den nichtflüchtigen Speicherbetriebsmitteln140 ) mit jeweiligen Sequenzindikatoren zu assoziieren. Diese Sequenzindikatoren können auf einzelne Datensegmente, Pakete und/oder physische Speicherstellen auf den Speicherbetriebsmitteln140A –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 Speichermodul130 kann einen aktuellen Anhängepunkt in einem physischen Adressraum eines oder mehrerer des Speicherbetriebsmittel140A –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-Speichermodul139 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 Speicherbetriebsmittels140A –N. Die Log-Reihenfolge von auf dem Speicherbetriebsmittel140A –N gespeicherten Daten kann deshalb auf der Basis des den Daten zugeordneten Sequenzindikators und/oder der sequenziellen Reihenfolge der Daten auf dem Speicherbetriebsmittel140A –N bestimmt werden. Das Log-Speichermodul139 kann dafür ausgelegt sein, die ”nächste” verfügbare Speicherstelle zu identifizieren, indem der physische Adressraum des Speicherbetriebsmittels140A –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-Anforderungen116 autonom und im Hintergrund operieren. Dementsprechend können Grooming-Operationen zurückgestellt werden, während andere E/A-Anforderungen116 verarbeitet werden. Als Alternative kann das Grooming im Vordergrund mit anderen E/A-Anforderungen116 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 demUS-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 Speicherbetriebsmittel140 , 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-Speicherbetriebsmitteln140 viel schneller als Schreib-/Programmieroperationen sein, und Schreib-/Programmieroperationen können viel schneller als Löschoperationen sein. Die nichtflüchtigen Halbleiter-Speicherbetriebsmittel140 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 Speichermodul130 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 Verfahrens101 zum Versorgen von E/A-Anforderungen gemäß verschiedenen Graden der Persistenz. Das Verfahren101 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 Speicherbetriebsmittel140 , gespeichert werden. Die Anweisungen können dafür ausgelegt werden, zu bewirken, dass ein oder mehrere Module in einer Datenverarbeitungsumgebung110 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 Verarbeitungsbetriebsmittel112 ausgelegt sein. Außerdem können bestimmte Schritte der Verfahren und/oder Prozesse, die hierin offenbart werden, an bestimmte Maschinenkomponenten gebunden werden, wie etwa Kommunikationsschnittstellen115 , Speicherbetriebsmittel140A –N, Verarbeitungsbetriebsmittel112 oder dergleichen. - Schritt
102 kann Identifizieren einer E/A-Anforderung116 und/oder Zugreifen auf diese umfassen. Schritt102 kann Empfangen der E/A-Anforderung116 aus einem Speicher-Client106A –N (z. B. über eine Schnittstelle131A ), Überwachen und/oder Abfangen einer E/A-Anforderung116 (z. B. in einem E/A-Stapel117 ) und/oder dergleichen umfassen. - Schritt
103 kann Bestimmen eines Persistenzgrads für die E/A-Anforderung116 umfassen. Schritt103 kann umfassen, dass das Persistenzgradmodul134 einen Persistenzgrad für die E/A-Anforderung116 auf der Basis einer Persistenzgradrichtlinie135 bestimmt, wie zum Beispiel, aber ohne Beschränkung darauf, Persistenzgradkriterien, Eigenschaften der E/A-Anforderung116 , aus der E/A-Anforderung116 Gefolgertes, Profilierungsmetadaten und so weiter. - Schritt
104 kann Versorgen der E/A-Anforderung116 gemäß dem Persistenzgrad umfassen, der im Schritt103 ausgewählt und/oder der E/A-Anforderung116 zugewiesen wurde. Versorgen der E/A-Anforderung116 kann umfassen, dass ein E/A-Anforderungsausführungsmodul136 (durch Verwendung der E/A-Schnittstelle(n)118A –N) eine oder mehrere Speicheroperationen an den Speicherbetriebsmitteln140A –N ausführt. Der Persistenzgrad der E/A-Anforderung116 kann das bzw. die Speicherbetriebsmittel140A –N bestimmen, die zur Versorgung der E/A-Anforderung116 zu verwenden sind, die Konfiguration des einen oder der mehreren Speicherbetriebsmittel140A –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 Speichermodul130 bei bestimmten Ausführungsformen ein Cache-Verwaltungssystem (CMS) umfassen. Das CMS kann ein oder mehrere der Module des hier offenbarten Speichermoduls130 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 CMS220 in einer virtualisierten Datenverarbeitungsumgebung. Das CMS220 kann dafür ausgelegt werden, in einer virtuellen Maschine208A –N zu arbeiten, die in und/oder in Verbindung mit einem Virtualisierungskern210 arbeiten kann. Der Virtualisierungskern210 kann dafür ausgelegt werden, den Betrieb der virtuellen Maschinen208A –N zu verwalten, die an dem Host202 sowie anderen Komponenten und Diensten202 bereitgestellt werden, operieren. Zum Beispiel kann der Virtualisierungskern210 dafür ausgelegt werden, verschiedene E/A-Operationen abzuwickeln, die einem primären Speicherbetriebsmittel240B und/oder anderen Speicherbetriebsmittel240C –N zugeordnet sind. Das primäre Speicherbetriebsmittel240B kann über mehrere Hosts hinweg von mehreren virtuellen Maschinen208A –N geteilt werden. Das primäre Speicherbetriebsmittel240B 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-Anforderungen116 eines oder mehrerer Speicher-Clients106 versorgen. Die Speicher-Clients106 können bezüglich der virtuellen Maschine108A lokal sein, können in anderen virtuellen Maschinen208B –N, die auf dem Host202 eingesetzt werden, gehostet werden und/oder können auf anderen Datenverarbeitungsvorrichtungen operieren (z. B. auf anderen Hosts und/oder Fern-Datenverarbeitungsumgebungen wie dem Fern-Speicherclient106E von1B ). Das CMS220 kann ein E/A-Anforderungsempfängermodul132 umfassen, das dafür ausgelegt ist, E/A-Anforderungen116 zu empfangen, zu überwachen und/oder abzufangen. Das CMS220 kann dafür ausgelegt sein, E/A-Anforderungen116 gemäß einem bestimmten Grad der Persistenz zu versorgen. Dementsprechend kann das CMS220 ein Persistenzgradmodul134 umfassen, das dafür ausgelegt ist, einen Persistenzgrad für die E/A-Anforderungen116 wie hier beschrieben zu bestimmen, was Auswählen eines Cache-Speicherungsmoduls für die E/A-Anforderungen116 (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 Maschinen208A –N auf dem Host202 geteilt sein können oder auch nicht. Im vorliegenden Gebrauch bezieht sich ein ”virtualisiertes Speicherbetriebsmittel” auf ein Speicherbetriebsmittel, das durch einen Virtualisierungskern210 , 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-Anforderungen116 durch Verwendung eines oder mehrerer virtualisierter Speicherbetriebsmittel240A –N, einschließlich eines Virtuellmaschinen-Cache213 , zu versorgen. Der Virtuellmaschinen-Cache213 kann ein Cache-Bereitstellermodul214 und Cache-Speicherung (Cache216 ) umfassen. Der Cache216 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-Bereitstellermodul214 kann dafür ausgelegt sein, Betriebsmittel des Cache216 im CMS220 der virtuellen Maschinen208A –N bereitzustellen, was dynamisches Bereitstellen und/oder Teilen von Cache-Speicherung und/oder E/A-Operationen (IOPS) umfassen kann. Das Cache-Bereitstellermodul214 kann ferner dafür ausgelegt sein, in dem Cache216 gespeicherte Daten zu schützen und/oder zu sichern, um zu verhindern, dass mehr als eine virtuelle Maschine108A –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-Bereitstellermodul214 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-Speicherung216 eines Virtuellmaschinen-Cache213 . Die Cache-Speicherung216 kann die Cache-Speicherbetriebsmittel216 des Virtuellmaschinen-Cache213 repräsentieren. Die Cache-Speicherung216 kann ein Halbleiter-Speichermedium umfassen, das mehrere Cache-Seiten304 umfasst. Der Cache216 kann in mehrere Stücke302 zerlegt werden. Im vorliegenden Gebrauch bedeutet ein ”Stück” einen willkürlich bemessenen Teil von Cache-Speicherkapazität. Der Cache216 kann in eine beliebige Anzahl von Stücken302 mit einer beliebigen Größe aufgeteilt werden. Bei einer konkreten Ausführungsform kann jedes Stück302 256 MB (Megabyte) Speicherkapazität umfassen. Bei dieser Ausführungsform kann die Anzahl der Stücke302 durch die verfügbare Speicherkapazität des Cache216 bestimmt werden. Zum Beispiel enthält 1 TB (Terabyte) Cache216 , aufgeteilt in 256-MB-Stücke302 , 4192 Stücke. Wie in3 gezeigt, wird jedes Stück302 in mehrere Cache-Seiten304 aufgeteilt. - Der Cache
216 kann zwischen mehreren virtuellen Maschinen auf einem Host geteilt werden. Ein Cache-Stück302 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ücke302 kann sich mit der Zeit ändern, wenn sich Cache-Bedürfnisse der virtuellen Maschine ändern. Die Anzahl der einer spezifischen virtuellen Maschine zugewiesenen Stücke302 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ücken302 zu bestimmten virtuellen Maschinen wird durch den Cache-Bereitsteller, wie etwa das oben beschriebene Cache-Bereitstellermodul214 , abgewickelt. - Das CMS
220 kann ein oder mehrere Cache-Tags221 umfassen, um Kennungen (E/A-Adressen) einer virtuellen Maschine208A –N auf Betriebsmittel im Cache216 (z. B. bestimmte Cache-Seiten304 ) abzubilden und/oder diesen zuzuordnen. Die Cache-Tags221 können deshalb zum Durchführen von Übersetzungen zwischen Kennungen in den Cache-Tags221 (z. B. Adresse von Blöcken auf einem primären Speicherbetriebsmittel240B ) und einer Cache-Adresse verwendet werden. Bei bestimmten Ausführungsformen können Cache-Tags221 linear in RAM oder anderem Speicher organisiert werden. Dadurch kann man die Adresse des Cache-Tags221 zum Finden einer physischen Cache-Seite304 verwenden, wegen der algorithmischen Annahme, dass jedes Cache-Tag221 eine lineare 1:1-Korrespondenz mit einer physischen Cache-Seite304 aufweist. Als Alternative oder zusätzlich können Cache-Tags221 zu einer anderen Datenstruktur, wie etwa einer Hash-Tabelle, einem Baum oder dergleichen, organisiert werden. - Wieder mit Bezug auf
2A können Cache-Tags221 , die einer bestimmten virtuellen Maschine208A –N zugeordnet sind, in dieser virtuellen Maschine208A –N gespeichert werden. Die Cache-Tags221 enthalten Metadaten, die Speicherungs-E/A-Adressen spezifischen Cache-Seiten304 im Cache zuordnen. Bei einer konkreten Ausführungsform ist jedes Cache-Tag221 einer bestimmten Seite304 im Cache zugeordnet. Der Virtuellmaschinen-Cache213 kann Daten für ein oder mehrere Speicherbetriebsmittel240B –N, wie etwa das primäre Speicherbetriebsmittel240B (und/oder andere Speicherbetriebsmittel240C –N) Cache-speichern. Dementsprechend können ein oder mehrere der Speicherbetriebsmittel240B –N die primäre Speicherung oder der Backing-Store von in dem Virtuellmaschinen-Cache213 Cache-gespeicherten Daten sein. Bei bestimmten Ausführungsformen kann die E/A-Adresse der Cache-Tags221 Speicheradressen und/oder Verweise auf eines oder mehrere der Speicherbetriebsmittel240B –N sein. -
4 zeigt eine Ausführungsform einer Datenstruktur421 von Cache-Tags221 . Die Größe mehrerer Felder in dem Cache-Tag221 kann dynamisch sein und dementsprechend kann die Größe der Cache-Tag-Datenstruktur421 dynamisch sein. Jedes Cache-Tag221 stellt eine Übersetzung zwischen einer Kennung (z. B. einer Speicherungs-E/A-Adresse) und einem Cache-Betriebsmittel (z. B. einer Cache-Seite304 ) bereit. Die Cache-Tag-Datenstruktur421 umfasst einen Nächstes-Cache-Tag-Index, dessen Größe fest ist und der zum Verknüpfen von Cache-Tags221 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-Tags221 . Das Zugangsmetadatenfeld kann ein dynamisches Feld umfassen, das Zugangs- und/oder Benutzungskenngrößen des Cache-Tags221 angibt. Das Prüfsummenfeld kann ein dynamisches Feld umfassen, dessen Größe auf der Basis der Größe der Cache-Seite304 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-Seite304 ist ein Sektor. Zum Beispiel kann eine bestimmte Cache-Seite304 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-Seite304 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-Tags221 betreffen, wie zum Beispiel, aber ohne Beschränkung darauf, den Cache-Modus für das Cache-Tag221 (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 Speicherbetriebsmittel240B –N, die dem Cache-Tag221 zugeordnet sind, und so weiter. Die Persistenz-Metadaten können durch das Persistenzgradmodul134 (durch Verwendung der Persistenzgradrichtlinie135 ) zum Zeitpunkt der Zulassung des Cache-Tags221 in den Cache bestimmt werden. Das CMS220 (und/oder das Persistenzgradmodul134 ) kann die Persistenz-Metadaten als Reaktion auf Änderungen des Persistenzgrads des Cache-Tags221 modifizieren. Zum Beispiel kann bei bestimmten Ausführungsformen ein Cache-Tag, das vergänglichen Cache-Daten zugeordnet ist, in ein primäres Speicherbetriebsmittel240B –N ausgeräumt werden, was Modifizieren eines Cache-Modus des Cache-Tags221 von vergänglich in einen anderen Cache-Modus umfassen kann. Das Cache-Tag221 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-Anforderungen116 von einem oder mehreren Speicher-Clients106 zu empfangen, was Empfangen der E/A-Anforderungen116 über eine oder mehrere Schnittstellen131A umfassen kann, die E/A-Anforderungen116 in einem Speicher-Stapel117 (z. B. durch Verwendung eines Agenten133 , wie etwa eines E/A-Filters, eines Treibers oder dergleichen) überwachen und/oder abfangen. Die E/A-Anforderungen116 können zum CMS220 geroutete werden, das die E/A-Anforderungen unter Verwendung des Virtuellmaschinen-Cache213 versorgen kann. - Als Reaktion auf eine Anforderung, Daten zu lesen (z. B. eine Lese-E/A-Anforderung
116 ) kann das CMS220 bestimmen, ob die E/A-Anforderung116 betreffende Daten in dem Virtuellmaschinen-Cache213 verfügbar sind, was umfassen kann, zu bestimmen, ob das CMS220 ein Cache-Tag221 umfasst, das der E/A-Anforderung116 entspricht (z. B. ob das CMS220 ein Cache-Tag221 umfasst, das eine Kennung aufweist, die einer Kennung einer Leseanforderung entspricht). Wenn ein Cache-Tag221 für die E/A-Anforderung116 gefunden wird, kann das CMS220 die Daten aus dem Virtuellmaschinen-Cache213 unter Verwendung der dem Cache-Tag221 zugeordneten Cache-Adresse anfordern. Wenn kein Cache-Tag221 gefunden wird, kann das CMS220 (auf der Basis verschiedener Cache-Zulassungsrichtlinien und/oder anderer Faktoren, wie etwa der Verfügbarkeit von Cache-Tags221 ) bestimmen, ob die Daten in den Virtuellmaschinen-Cache213 zuzulassen sind. Das CMS220 kann die Daten in den Virtuellmaschinen-Cache213 zulassen, indem es ein der Anforderung entsprechendes Cache-Tag221 zuteilt, auf die Daten in dem primären Speicherbetriebsmittel240B zugreift und den Virtuellmaschinen-Cache213 anweist, die Daten in dem Cache216 zu speichern. Das Zulassen der Daten kann ferner Bestimmen eines Persistenzgrads der E/A-Anforderung116 unter Verwendung des Persistenzgradmoduls134 und/oder der Persistenzgradrichtlinie135 umfassen. Der Persistenzgrad kann einen Cache-Modus für Daten der E/A-Anforderung116 spezifizieren. Zum Beispiel kann der Persistenzgrad der E/A-Anforderung116 spezifizieren, dass die Daten in einem vergänglichen Cache-Modus zu speichern sind, so dass die Daten in den Virtuellmaschinen-Cache213 geschrieben werden und nicht in das primäre Speicherbetriebsmittel240B hindurchgeschrieben werden. - Als Reaktion auf eine Anforderung, Daten zu schreiben (z. B. eine Schreib-E/A-Anforderung
116 ) kann das CMS220 bestimmen, ob die Anforderung betreffende Daten in dem Virtuellmaschinen-Cache213 wie oben beschrieben zugelassen wurden (z. B. durch Bestimmen, ob es ein der E/A-Anforderung116 entsprechendes Cache-Tag221 gibt). Wenn kein Cache-Tag221 für die E/A-Anforderung116 existiert, kann das CMS220 bestimmen, ob die Daten in den Virtuellmaschinen-Cache213 zuzulassen sind, einen Persistenzgrad für die E/A-Anforderung116 bestimmen und so weiter, wie oben beschrieben. Wenn ein Cache-Tag221 existiert, kann das CMS220 dafür ausgelegt sein, die E/A-Anforderung116 gemäß einem bestimmten Grad der Persistenz zu versorgen, der durch das Persistenzgradmodul134 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-Anforderung116 gemäß einem vergänglichen Persistenzgrad kann umfassen, Daten der E/A-Anforderung116 in dem Virtuellmaschinen-Cache213 zu speichern, ohne die Daten in einem primären Speicherbetriebsmittel240B zu speichern. Das Versorgen einer Schreib-E/A-Anforderung gemäß einem Hindurchschreib-Persistenzgrad kann umfassen, Daten der E/A-Anforderung sowohl in dem Virtuellmaschinen-Cache213 als auch einem oder mehreren primären Speicherbetriebsmittel240B zu speichern. Die E/A-Anforderung116 kann erst abgeschlossen sein, wenn Daten der Anforderung in einem oder mehreren primären Speicherbetriebsmitteln240B gespeichert sind. - Bei bestimmten Ausführungsformen können die virtuellen Maschinen
208A –N dafür ausgelegt sein, von dem Host202 auf andere Host-Datenverarbeitungsvorrichtungen transferiert und/oder verlagert zu werden. Der Virtualisierungskern210 (oder eine andere Virtualisierungsschicht) kann dafür ausgelegt sein, einen Transfer virtueller Maschinen, die auf lokale Betriebsmittel de Hosts220 , wie etwa lokale Plattenspeicherung oder dergleichen, verweisen, zu verhindern. Dementsprechend können die virtuellen Maschinen208A –N dafür ausgelegt sein, unter Verwendung eines Zugriffsmechanismus, der Virtuellmaschinen-Migration nicht verhindert, auf den Virtuellmaschinen-Cache213 zuzugreifen. Bei bestimmten Ausführungsformen ist das CMS220 dafür ausgelegt, durch emulierte geteilte Speicherung und/oder einen ”virtuellen Datenträger” oder VLUN, was der Virtualisierungskern210 als eine geteilte Vorrichtung (und/oder eine Vorrichtung, die Virtuellmaschinen-Migration nicht verhindert) behandelt, auf den Virtuellmaschinen-Cache213 zuzugreifen. Der virtuellen Datenträger kann als ein durch den Host202 und/oder den Virtualisierungskern210 unterstütztes VMDK bereitgestellt werden. Bei bestimmten Ausführungsformen kann die E/A-Schnittstelle218 ein E/A-Filter219 umfassen, das dafür ausgelegt ist, E/A-Operationen der virtuellen Maschinen208A –N zu überwachen, E/A-Anforderungen116 und/oder Operationen, die an den virtuellen Datenträger gerichtet sind, abzufangen und die E/A-Anforderungen116 (und andere diesbezügliche Daten) über eine Schnittstelle241 zu dem Virtuellmaschinen-Cache213 weiterzuleiten. Das E/A-Filter219 kann ”über” einer SCSI und/oder vSCSI des Stapels117 der virtuellen Maschine208A –N operieren. Das E/A-Filter219 kann das Durchlassen von E/A-Anforderungen116 (und Antworten) zwischen dem CMS220 der virtuellen Maschinen208A –N und dem Virtuellmaschinen-Cache213 bereitstellen. Das E/A-Filter219 kann ferner Übermittlung von anderen Daten, wie etwa Konfigurations-, Befehls- und/oder Steuerdaten, bereitstellen. Der zur Kommunikation zwischen dem CMS220 und dem Virtuellmaschinen-Cache213 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 CMS220 und dem Virtuellmaschinen-Cache213 ). - 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 Maschinen208A –N dafür ausgelegt sein, einen oder mehrere ”geteilte” VLUN-Datenträger über mehrere Hosts202 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 Host202 und/oder der Virtualisierungskern210 können deshalb die VLUN-Datenträger als geteilte Vorrichtungen behandeln und Transfer der virtuellen Maschinen208A –N zu und von dem Host202 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 auf256 Speichervorrichtungen begrenzt sein). - Das Cache-Bereitstellermodul
214 kann dafür ausgelegt sein, Cache-Betriebsmittel zwischen den virtuellen Maschinen208A –N bereitzustellen. Die einer bestimmten virtuellen Maschine (z. B. der virtuellen Maschine208A ) zugeordneten Zuteilungsinformationen können zu dem entsprechenden CMS220 übermittelt werden, das Metadaten des Cache-Tags221 gemäß den Cache-Betriebsmitteln, die dem CMS220 zugeteilt werden, unterhalten kann. Das CMS220 kann dafür ausgelegt sein, Cache-Betriebsmittel von dem Cache-Bereitstellermodul214 anzufordern. Die Anforderung kann als Reaktion auf eine Initialisierungsoperation des CMS220 (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 CMS220 kann dafür ausgelegt sein, eine oder mehrere Initialisierungsoperationen als Reaktion darauf auszuführen, dass die virtuelle Maschine208A –N heraufgefahren, neu gestartet, zu einem neuen Host transferiert (z. B. in einer VMotionTM-Operation) oder dergleichen wird. - Das CMS
220 kann dafür ausgelegt sein, Cache-Metadaten, darunter Cache-Tags221 gemäß der Cache-Speicherung, die durch das Cache-Bereitstellermodul214 der virtuellen Maschinen208A –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 Cache216 ). Dementsprechend können die Cache-Tags221 Cache-Betriebsmittel repräsentieren, die durch das Cache-Bereitstellermodul214 einer bestimmten virtuellen Maschinen208A –N zugeteilt wurden. Im vorliegenden Gebrauch bezieht sich eine ”Kennung” eines Cache-Tags221 auf eine Kennung, die von der virtuellen Maschine208A –N zum Verweis auf Daten verwendet wird, die im Cache216 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 Speichersystem212 ), ein Name (z. B. ein Dateiname, Verzeichnisname, Volumenname oder dergleichen), ein Verweis oder dergleichen. - Die Cache-Tags
221 können in den jeweiligen virtuellen Maschinen208A –N gespeichert werden (z. B. in flüchtigem Speicher, der durch den Host202 der virtuellen Maschinen208A –N zugeteilt wird). bei bestimmten Ausführungsformen können die Cache-Tags221 eine ”Arbeitsmenge” von Cache-Daten der virtuellen Maschinen208A –N repräsentieren. Im vorliegenden Gebrauch bezieht sich eine ”Arbeitsmenge” von Cache-Tags221 auf eine Menge von Cache-Tags, die durch das CMS220 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 Cache216 zugelassen und/oder darin behalten wurde. Dementsprechend kann die Arbeitsmenge von Cache-Tags221 die Menge von Cache-Daten repräsentieren, die unter einer bestimmten Menge von Betriebsbedingungen optimale E/A-Leistungsfähigkeit für die virtuelle Maschine208A –N gewährleistet. - Bei bestimmen Ausführungsformen kann das CMS
220 dafür ausgelegt sein, die Cache-Tags221 zu bewahren und/oder zu unterhalten, wozu gehören kann, die Cache-Tags221 persistent in einem nichtflüchtigen Speichermedium, wie etwa dem primären Speichersystem212 , der persistenten Cache-Speicherungsvorrichtung (z. B. dem Cache216 ) 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-Tags221 (und/oder diesbezügliche Cache-Metadaten) umfassen. Bei bestimmten Ausführungsformen kann ein Schnappschuss ferner ”Pinnen” von Daten in der Cache-Vorrichtung216 umfassen, was bewirken kann, dass Daten, auf die das eine oder die mehreren Cache-Tags221 verweisen, im Cache216 behalten werden. Als Alternative kann der Schnappschuss nur auf die Datenkennungen verweisen und kann eine Entfernung (z. B. Hinauswerfen) der zugrundeliegenden Daten aus dem Cache216 erlauben. Das CMS220 kann dafür ausgelegt sein, einen Schnappschuss aus persistenter Speicherung zu laden und den Schnappschuss zum Auffüllen der Cache-Tags221 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 CMS220 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-Bereitstellermodul214 wie oben beschrieben umfassen. Bei bestimmten Ausführungsformen kann das CMS220 eine Teilmenge eines Schnappschusses laden, wenn die virtuelle Maschine208A –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 Maschinen208A –N und jeweiligen den virtuellen Maschinen208A –N (wie z. B. in5 abgebildet) zugeteilten Cache-Speicherstellen zu unterhalten. Die Abbildungen können zur Sicherung von Cache-Daten der virtuellen Maschine208A –N (z. B. durch Begrenzen von Zugriff auf die Cache-gespeicherten Daten abgebildete virtuelle Maschine208A –N) und/oder zur Gewährleistung des Behaltens und/oder Transferierens von Cache-Daten einer oder mehrerer virtuellen Maschinen208A –N, die von dem Host202 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 Maschine208A –N kann eine bestimmte Anzahl von Stücken302 des Cache216 zugeteilt werden. Es kann jedoch die gesamte Cache-Kapazität des Cache216 (mittels eines virtuellen Datenträgers wie eines VLUN oder dergleichen) an jede der virtuellen Maschinen208A –N ”publiziert” werden. Wenn zum Beispiel die Gesamt-Cachegröße 1 TB ist, kann jede virtuelle Maschine208A –N melden, dass sie Zugriff auf die gesamten 1 TB Cache-Kapazität hat. Die tatsächliche Zuteilung von Cache-Stücken302 kann jedoch auf der Basis der aktuellen Bedürfnisse der virtuellen Maschine208A –N wesentlich kleiner sein (z. B. 256 MB oder 512 MB). Die zugeteilten Cache-Stücke302 repräsentieren einen spezifischen Bereich von Cache-Adressen, die in dem Cache216 verfügbar sind. Das Cache-Bereitstellermodul214 ändert diese Cache-Stückzuteilungen dynamisch, wenn sich die Arbeitsmengenanforderungen der virtuellen Maschinen208A –N ändern (und/oder die virtuellen Maschinen208A –N zu/von dem Host202 transferiert werden). Ungeachtet der Anzahl der Cache-Stücke302 , die tatsächlich einer bestimmten virtuellen Maschine208A –N zugeteilt sind, meldet diese virtuelle Maschine208A –N, dass sie Zugriff auf die gesamten 1 TB Cache hat. Dementsprechend kann das Gastbetriebssystem der virtuellen Maschinen208A –N mit einem virtuellen Datenträger der Größe 1 TB operieren. Dementsprechend kann der tatsächliche der virtuellen Maschine208A –N zugeteilte Speicherplatz dynamisch geändert werden, ohne dass das Gastbetriebssystem einen Fehlerzustand angibt. Deshalb kann die Cache-Seite304 , auf die ein Cache-Tag221 verweist, einer ”indirekten” Adresse in dem Cache216 entsprechen. -
5 zeigt eine Ausführungsform von Abbildungen500 zwischen virtuellen Cache-Speicherbetriebsmitteln, die der virtuellen Maschine208A (VM-1) ausgesetzt sind, und zugrundeliegenden physischen Cache-Adressen, die der virtuellen Maschine208A tatsächlich zugeteilt sind. Die der virtuellen Maschine208A 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ücke529 können mittels eines virtuellen Datenträgers229 fester Größe wie oben beschrieben exponiert sein. Die tatsächlich der virtuellen Maschine208A zugeteilte physische Cache-Speicherung ist als eine nichtzusammenhängen Menge von Stücken VM-10, VM-11, VM-22, VM-1N in dem physischen Adressraum306 des Cache216 abgebildet. Wie in5 gezeigt, können die Stücke302 in dem physischen Adressraum306 des Cache216 nicht zusammenhängend und/oder mit Stücken302 , die anderen virtuellen Maschinen202B –N zugeteilt sind, verschachtelt sein. Obwohl die Darstellung in5 einige der verschiedenen Speicherstellen in einer physischen Reihenfolge zeigt, können sich die der virtuellen Maschine208A zugeteilten Cache-Stücke302 in einer zufälligen Reihenfolge befinden, gemäß der Verfügbarkeit von physischen Cache-Betriebsmitteln (z. B. verfügbaren Stücken302 ). - Das Abbildungsmodul
514 kann dafür ausgelegt sein, Zuteilungen von virtueller Cache-Speicherung (z. B. indirekte Cache-Adressen der Cache-Tags221 in der virtuellen Maschine208A ) auf physische Cache-Betriebsmittel (z. B. Cache-Stücke302 und/oder Cache-Seiten304 ) abzubilden. Bei bestimmten Ausführungsformen kann die Abbildung einen Index von ”beliebigen auf beliebige” von Zuordnungen zwischen indirekten Cache-Adressen der virtuellen Maschinen208A –N und dem physischen Adressraum306 des Cache216 umfassen. - Bei bestimmten Ausführungsformen kann der Virtuellmaschinen-Cache
213 das Abbildungsmodul514 erweitern, um im Cache216 gespeicherte Daten zu sichern. Zum Beispiel können die Abbildungen des Abbildungsmoduls514 als eine Form von Zugangskontrolle verwendet werden, wobei Zugang zu physischen Cache-Stücken302 auf die virtuelle Maschine beschränkt wird, auf die das physische Cache-Stück302 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ück302 abgebildet wird (z. B. der virtuellen Maschine208A ). Aufgrund des indirekten Zugriffs auf die Abbildungsschicht können die virtuellen Maschinen208A –N außerdem nicht in der Lage sein, direkt auf physische Cache-Stücke302 anderer virtuellen Maschinen208A –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 Hosts202 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 Maschine208A –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-Bereitstellermodul214 dafür ausgelegt sein, Cache-Betriebsmittel den virtuellen Maschinen208A –N dynamisch zuzuteilen. Nach der Bereitstellung kann jede virtuelle Maschine208A –N über Zugriff auf einen vorbestimmten und/oder zusammenhängenden Bereich von Cache-Speicherbetriebsmitteln (z. B. Cache-Stücken302 und/oder Cache-Seiten304 ) verfügen. Das Cache-Bereitstellermodul214 kann dafür ausgelegt sein, den Cache216 in Cache-Stücke302 aufzuteilen, die dynamisch jeweiligen virtuellen Maschinen208A –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ägers229 ) auftritt. Dementsprechend kann das Cache-Bereitstellermodul214 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 in2B abgebildet kann das Cache-Bereitstellermodul214 Cache-Betriebsmittel fester Größe unter Verwendung eines Virtuelldatenträger-Treibers215 emulieren, der dafür ausgelegt sein kann, jeweilige virtuelle Datenträger (VLUN-Datenträger)229 in den virtuellen Maschinen208A –N zu exponieren. Die Cache-Tags221 können deshalb auf Cache-Betriebsmittel in dem virtuellen Datenträger229 verweisen, die indirekt auf physische Cache-Betriebsmittel in dem Cache216 verweisen können (z. B. können die Cache-Tags221 mittels einer Virtuelldatenträger-Abbildung des Abbildungsmoduls514 wie hier beschrieben indirekte Verweise auf Cache-Betriebsmittel umfassen). Die virtuellen Datenträger229 können eine feste Größe aufzuweisen scheinen, die die volle Kapazität des Cache216 (z. B. 2 TB) umfasst, wohingegen nur ein Teil des Cache216 tatsächlich mittels des Cache-Bereitstellermoduls214 der virtuellen Maschine208A –N (z. B. 4 GB) zugeteilt ist. Dementsprechend kann das Cache-Bereitstellermodul214 dafür ausgelegt sein, Cache-Speicherung dynamisch den virtuellen Maschinen208A –N zuzuteilen, ohne den Betrieb der virtuellen Maschinen208A –N zu beeinträchtigen. Der Virtuelldatenträger-Treiber215 und/oder das Abbildungsmodul214 können die Abbildungen zwischen indirekten Verweisen der virtuellen Maschinen208A –N und physischen Cache-Betriebsmitteln verwalten. - Das Cache-Bereitstellermodul
214 kann dafür ausgelegt sein, gemäß verschiedenen Cache-Erfordernissen der virtuellen Maschinen208A –N den virtuellen Maschinen280A –N verschiedene Mengen Cache-Speicherung zuzuteilen. Das Cache-Bereitstellermodul214 kann ein Kartenmodul514 umfassen, dass dafür ausgelegt ist, den virtuellen Maschinen208A –N (über einen virtuellen Datenträger229 ) exponierte virtuelle Speicherbetriebsmittel auf physische Adressen im Cache216 abzubilden. - Wie oben beschrieben, kann der Virtuelldatenträger-Treiber
215 dafür ausgelegt sein (mittels jeweiliger virtueller Datenträger229 ) den virtuellen Maschinen208A –N zusammenhängende Cache-Speicherzuteilungen fester Größe zu präsentieren. Das Abbildungsmodul514 kann dafür ausgelegt sein, Verweise auf den virtuellen Datenträger229 auf physische Cache-Adressen (z. B. Cache-Stücke302 und/oder Cache-Seiten304 ) abzubilden. Zum Beispiel ist die der virtuellen Maschine208A bereitgestellte Cache-Speicherung in Diagrammform als Platz524 im Cache216 dargestellt. Der Cache-Platze524 kann 4 GB umfassen. Der Virtuelldatenträger-Treiber515 kann diese begrenzte Cache-Kapazität jedoch als einen virtuellen festen 2-TB-Datenträger229 repräsentieren. Außerdem kann die den virtuellen Maschinen208A –N zugeteilte Cache-Kapazität (Cache-Stücke302 ) in dem physischen Adressraum des Cache216 auf beliebige Weise ausgeteilt werden (die Stücke302 können nicht zusammenhängend sein), während die durch den virtuellen Datenträger229 repräsentierte Cache-Kapazität zusammenhängend sein kann. Das Cache-Bereitstellermodul214 kann dafür ausgelegt sein, Cache-Speicherungszuteilungen als Reaktion auf sich ändernde Cache-Erfordernisse und/oder wenn virtuelle Maschinen208A –N zu und von dem Host202 transferiert werden, dynamisch zu verlagern. - Das CMS
220 kann dafür ausgelegt sein, mittels einer oder mehrerer E/A-Schnittstellen218 eine Schnittstelle mit dem Virtuellmaschinen-Cache213 zu bilden. Das CMS220 kann ein SCSI-Filter319 der E/A-Schnittstelle218 umfassen, die dafür ausgelegt sein kann, Daten und/oder Steuerinformationen zwischen der virtuellen Maschine208A (und dem darin operierenden CMS220 ) und dem Virtuellmaschinen-Cache213 (über den virtuellen Datenträger229 ) zu übermitteln. Bei bestimmten Ausführungsformen kann das SCSI-Filter319 in einen E/A-Stapel (oder eine andere E/A-Infrastruktur und/oder ein Nachrichtenübermittlungssystem) der virtuellen Maschine208A integriert sein. Das SCSI-Filter319 kann dafür ausgelegt sein, den virtuellen Datenträger229 zu identifizieren, auf Änderungen in dem virtuellen Datenträger229 (z. B. dynamische Zuteilung durch das Cache-Bereitstellermodul214 ) zu reagieren und so weiter. Wie oben beschrieben, kann der virtuelle Datenträger229 dafür ausgelegt sein, eine größere feste Speicherkapazität als die tatsächlich der virtuellen Maschine208A zugeteilte physische Cache-Kapazität zu melden, so dass das Cache-Bereitstellermodul214 dynamisch Cache-Speicherung bereitstellen kann, ohne die virtuelle Maschine208A zu beeinträchtigen. Bei bestimmten Ausführungsformen kann das SCSI-Filter319 dafür ausgelegt sein, die tatsächliche physische Kapazität des virtuellen Datenträgers229 , die vor anderen Anwendungen und/oder Betriebssystemen des Virtuellmaschinen-Hosts202 verborgen sein kann, zu verwalten. Zum Beispiel kann der VLUN-Datenträger229 als eine Nurlese-Speichervorrichtung präsentiert werden, wodurch verhindert werden kann, das andere Anwendungen in der virtuellen Maschine208A und/oder dem Host202 Daten in den virtuellen Datenträger229 schreiben. - Das Cache-Bereitstellermodul
214 kann die der virtuellen Maschine208A zugeteilte tatsächliche Cache-Speicherung mittels einer Kommunikationsverbindung343 melden, die das SCSI-Filter319 umfasst. Die Kommunikationsverbindung343 kann getrennt von E/A-Verkehr zwischen dem Virtuelldatenträger-Treiber215 und dem SCSI-Filter319 arbeiten. Somit können asynchrone Außerbandnachrichten zwischen dem Virtuelldatenträger-Treiber215 und dem SCSI-Filter319 gesendet werden. Das SCSI-Filter319 kann Zuteilungsinformationen (und andere Befehls- und/oder Steuerinformationen) dem CMS220 melden, das mit den Zuteilungsinformationen die Anzahl der Cache-Tags221 , die der virtuellen Maschine208A verfügbar sind, bestimmen kann. Dementsprechend kann der Cache mit Bezug auf die virtuellen Maschinen208A –N dünn bereitgestellt werden, und Cache-Zuteilungen können gemäß den Cache-Erfordernissen der virtuellen Maschinen208A –N dynamisch variieren. -
6 ist ein Blockschaltbild einer Ausführungsform eines CMS220 . Das CMS220 kann ein oder mehrere Module umfassen, darunter ein Cache-Richtlinienmodul601 , ein Adressraum-Übersetzungsmodul602 , ein Cache-Tag-Manager604 , ein Uhr-Sweep-Modul606 , ein Stehl-Kandidatenmodul608 , ein Cache-Seiten-Verwaltungsmodul610 , ein Gültige-Einheit-Abbildungsmodul612 , ein Seitengrößen-Verwaltungsmodul614 , ein Schnittstellenmodul616 , ein Cache-Tag-Retentionsmodul618 und ein Cache-Tag-Schnappschussmodul619 . - 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-Richtlinienmodul601 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-Richtlinienmodul601 ein Persistenzgradmodul134 und eine Persistenzgradrichtlinie135 , 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 Speichermodul130 wie hier beschrieben. Das CMS220 kann ferner ein Cache-Ausführungsmodul636 umfassen, das dafür ausgelegt sein kann, Daten gemäß einem ausgewählten Persistenzgrad im Cache zu speichern. Das Cache-Ausführungsmodul636 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ührungsmodul636 dafür ausgelegt sein, Daten in einem Hindurchschreib-Cache-Modus im Cache zu speichern, der umfassen kann, Schreib-E/A-Anforderungen116 durch Schreiben von Daten in ein oder mehrere primäre Speicherbetriebsmittel240B –N und in den Virtuellmaschinen-Cache213 zu versorgen. Das CMS220 kann Abschluss der Schreib-E/A-Anforderung116 erst bestätigen, wenn die Daten in das eine oder die mehreren primären Speicherbetriebsmittel240B –N geschrieben sind. Das Cache-Ausführungsmodul636 kann dafür ausgelegt sein, Daten in einem vergänglichen Cache-Modus im Cache zu speichern, der umfassen kann, Schreib-E/A-Anforderungen116 durch Schreiben von Daten in den Virtuellmaschinen-Cache213 zu versorgen, ohne die Daten in einem primären Speicherbetriebsmittel240B –N oder einem anderen Backing-Store zu speichern. Dementsprechend kann das CMS220 Abschluss einer Schreib-E/A-Anforderung116 , die einem vergänglichen Cache-Modus zugewiesen ist, als Reaktion auf das Schreiben der Daten in den Virtuellmaschinen-Cache213 bestätigen. - Das Übersetzungsmodul
602 kann dafür ausgelegt sein, logische Kennungen (z. B. Adressen in einem primären Speichersystem) der Cache-Tags221 mit Cache-Speicherstellen (z. B. Cache-Adressen, Cache-Stücken302 , Cache-Seiten304 oder dergleichen) in dem Virtuellmaschinen-Cache213 zu korrelieren. Wie oben beschrieben, können die Cache-Tags221 ”indirekten” und/oder ”virtuellen” Cache-Speicherbetriebsmitteln in einem virtuellen Datenträger229 entsprechen, die durch das Cache-Bereitstellermodul214 und/oder das Abbildungsmodul515 auf physische Cache-Speicherbetriebsmittel (z. B. Cache-Stücke302 ) abgebildet werden können. - Der Cache-Tag-Manager
604 kann dafür ausgelegt sein, die Cache-Tags, die dem CMS220 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 Cache216 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-Modul608 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-Kandidatenmodul608 dafür ausgelegt sein, Cache-Tag-Hinauswurfverweis auf Persistenzgrad-Metadaten der Cache-Tags221 zu prädikatisieren. Zum Beispiel kann das Stehl-Kandidatmodul608 Cache-Tags221 , die in einem vergänglichen Cache-Modus Cache-gespeichert sind, nicht für Hinauswurf auswählen. Als Alternative kann das Stehl-Kandidatenmodul608 zuerst vergängliche Cache-Tags221 vor dem Hinauswurf in ein primäres Speicherbetriebsmittel240B –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-Abbildungsmodul612 kann dafür ausgelegt sein, gültige Daten zu identifizieren, die in dem Virtuellmaschinen-Cache213 und/oder einem primären Speicherbetriebsmittel240B gespeichert sind. Das Seitengrößen-Verwaltungsmodul614 kann dafür ausgelegt sein, verschiedene Seitengrößenanalyse- und -justierungsoperationen auszuführen, um die Cache-Leistungsfähigkeit wie hier beschrieben zu verbessern. Das Schnittstellenmodul616 kann dafür ausgelegt sein, eine oder mehrere Schnittstellen bereitzustellen, um es anderen Komponenten, Vorrichtungen und/oder Systemen zu erlauben, die dem CMS220 in Interaktion zu treten. - Das Cache-Tag-Retentionsmodul
618 kann dafür ausgelegt sein, als Reaktion auf den Transfer des CMS220 zu einem anderen Host die Cache-Tags221 zu behalten. Wie oben beschrieben, können die Cache-Tags221 eine Arbeitsmenge des Cache repräsentieren, die durch Verwendung einer oder mehrerer Cache-Zulassungs- und/oder Hinauswurfrichtlinien (z. B. das Uhr-Sweep-Modul606 und/oder das Stehl-Kandidaten-Modul608 ) und als Reaktion auf die E/A-Kenngrößen der virtuellen Maschine208 (und/oder der auf der virtuellen Maschine208A –N laufenden Anwendungen) entwickelt werden kann. Das Cache-Tag-Retentionsmodul618 kann dafür ausgelegt sein, die Cache-Tags221 zu behalten, nachdem die virtuellen Maschine208 zu einem neuen Host202 transferiert wird (u. a. in einer VMotionTM-Operation von Host202A zu Host202B 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-Cache213 kann jedoch dafür ausgelegt sein, den Cache216 im neuen Host aufzufüllen, so dass das CMS220 die Arbeitsmenge von Cache-Tags221 weiter benutzen kann. - Wie oben beschrieben, können Daten der behaltenen Cache-Tags
221 von dem vorherigen Host (und/oder von primären Speicherbetriebsmitteln204B –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-Tags221 durch die virtuelle Maschine208 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-Moduls606 und/oder des Stehl-Kandidatenmoduls608 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-Tags221 ) zu unterhalten. Wie oben beschrieben, bezieht sich ein Schnappschuss auf eine Menge von Cache-Tags221 zu einem bestimmten Zeitpunkt. Das Schnappschussmodul619 kann dafür ausgelegt sein, einen Schnappschuss der Cache-Tags221 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 CMS220 kann adaptive Persistenzgrade benutzen, um die E/A-Leistungsfähigkeit zu verbessern und/oder das Konsolidierungsverhältnis des Hosts202 zu vergrößern. Im vorliegenden Gebrauch bezieht sich ein ”Konsolidierungsverhältnis” eines Hosts202 auf die Anzahl der virtuellen Maschinen208A –N, die auf dem Host202 operieren können. Die Anzahl der virtuellen Maschinen208A –N, die auf dem Host202 operieren können, kann durch die Datenverarbeitungsbetriebsmittel des Hosts202 und/oder das E/A-Overhead der Hosts202 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 Hosts202 angespannt werden kann. Die virtuellen Maschinen208A –N können sich ähnliche Datenmengen (z. B. Betriebssysteme, Anwendungen, Benutzerprofilinformationen oder dergleichen) teilen, und die virtuellen Maschinen208A –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 Speicherbetriebsmittel240B –N und/oder die E/A-Infrastruktur des Hosts202 überwältigen, was die Gesamt-Systemleistungsfähigkeit signifikant verschlechtern kann. Ähnliche Dateizugriffs-”Stürme” können als Reaktion darauf auftreten, dass die virtuellen Maschinen208A –N bestimmte Anwendungen laden, auf geteilte Daten zugreifen, auf Benutzerprofilinformationen zugreifen, einen Anmeldeprozess ausführen usw. Außerdem kann jede der virtuellen Maschinen208A –N ein jeweiliges CMS220 umfassen, die jeweils ähnliche Datenmengen in den geteilten Virtuellmaschinen-Cache213 zulassen können, wodurch der Virtuellmaschinen-Cache213 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-Anforderungen116 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 Datenverarbeitungsumgebung110 und/oder des Speichermoduls130 , 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 Maschine208A –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 Speicherbetriebsmittel240B –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 Speicherbetriebsmittel140B –N und die den primären Speicherbetriebsmittel240B –N zugordnete Latenz kann aus dem ”kritischen Pfad” zur Versorgung von E/A-Anforderungen116 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-Anforderungen116 erst abgeschlossen sein (z. B. Kontrolle an den Speicher-Client106A –N zurückgeben), wenn Daten in die primären Speicherbetriebsmittel140B –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 Speicherbetriebsmittel240B –N zuzugreifen. Der kritische Pfad einer vergänglichen E/A-Operation umfasst deshalb nicht Hochlatenzzugriffe auf primäre Speicherbetriebsmittel240B –N. Zusätzlich zu dem Verringern der Latenz für die Speicher-Clients106A –N kann deshalb vergängliche Cache-Speicherung den zusätzlichen Vorteil bereitstellen, die E/A-Bandbreite und/oder die Last an den primären Speicherbetriebsmitteln240B –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-Anforderung116 identifizieren, der durch das Cache-Richtlinienmodul601 und/oder das Persistenzgradmodul134 bestimmt wird, die einen Persistenzgrad für eine E/A-Anforderung gemäß einer Persistenzgradrichtlinie135 (z. B. Persistenzgradkriterien) bestimmen kann, die auf Eigenschaften der E/A-Anforderungen116 und/oder aus den E/A-Anforderungen116 gefolgertem und/oder die E/A-Anforderungen116 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 CMS220 . Das CMS220 kann ein Cache-Speicherbetriebsmittel240A über eine E/A-Schnittstelle218 umfassen und/oder kommunikativ damit gekoppelt sein. Das CMS220 kann in einer Betriebsumgebung711 eingesetzt werden, die ein Betriebssystem umfassen kann, das in einer Bare-Metal-Datenverarbeitungsumgebung operiert. Dementsprechend kann das CMS220 dafür ausgelegt sein, direkt über die E/A-Schnittstelle218 auf das Cache-Speicherbetriebsmittel240A zuzugreifen; die E/A-Schnittstelle218 kann eine API, einen Bus, ein Protokoll oder dergleichen umfassen. Bei bestimmten Ausführungsformen kann die Betriebsumgebung711 eine virtuelle Betriebsumgebung sein, wie etwa ein virtuelles Betriebssystem, ein Gast-Betriebssystem oder dergleichen. Das CMS220 kann dafür ausgelegt sein, auf ein virtualisiertes Cache-Speicherbetriebsmittel240A zuzugreifen, das als ein virtueller Datenträger229 wie oben beschrieben repräsentiert werden kann. Das CMS220 kann ferner dafür ausgelegt sein, Daten, Steuer- und/oder Konfigurationsdaten über ein SCSI-Filter319 wie oben beschrieben zu und von dem Cache-Speicherbetriebsmittel240A zu transferieren. - Das E/A-Anforderungsempfängermodul
132 des CMS220 kann einen Agenten133 umfassen, der dafür ausgelegt ist, E/A-Anforderungen in einem E/A-Stapel117 der Betriebsumgebung711 zu überwachen. Der E/A-Stapel117 kann mehrere Schichten717A –N umfassen, darunter eine Dateisystemschicht717A . Der Agent133 kann dafür ausgelegt sein, E/A-Anforderungen116 in einer beliebigen der Schichten717A –N zu überwachen. Die E/A-Anforderungen können Dateioperationen betreffen, wie etwa Datei öffnen, schließen, lesen, schreiben, modifizieren, und dergleichen. Der Agent133 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 Agent133 kann E/A-Anforderungen116 unter Verwendung einer Schnittstelle überwachen, die durch die Datenverarbeitungsumgebung111 den E/A-Stapel117 und/oder dergleichen bereitgestellt wird. Dementsprechend kann der Agent133 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-Richtlinienmodul601 umfassen, das u. a. Cache-Zulassungskriterien, Cache-Hinauswurfkriterien und so weiter definieren kann. Dementsprechend kann das Cache-Richtlinienmodul601 ein Uhr-Sweep-Modul, ein Stehl-Kandidatenmodul, ein Cache-Tag-Retentionsmodul und/oder ein Cache-Tag-Schnappschussmodul wie hier beschrieben umfassen. Das CMS220 kann mit dem Cache-Richtlinienmodul601 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-Anforderungen116 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 Speicherbetriebsmittel240A zugelassene Daten bestimmen. Dementsprechend kann das Cache-Richtlinienmodul601 ein Persistenzgradmodul731 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-Anforderung116 Anwendung von Persistenzgradkriterien auf eine oder mehrere Kenngrößen der E/A-Anforderung116 umfassen, wozu Dateiebenenkriterien wie ein Dateiname, Pfad, Verzeichnis, Volumen oder dergleichen gehören können.7B zeigt eine Ausführungsform einer Persistenzgradrichtlinie735 . Wie in7B gezeigt, betreffen die Persistenzgradkriterien737 dateibezogene Kenngrößen von E/A-Anforderungen116 . Die Persistenzgradrichtlinie735 kann bestimmte Dateinamen (z. B. ”pagefile.sys”), Dateipfade und/oder Volumen auf jeweilige Persistenzgrade739 abbilden. Dateien, die temporäre, wegwerfbare Daten betreffen, wie etwa Daten des ”pagefile.sys” und/oder ”lokalem Cache”, können einen Persistenzgrad739 zugewiesen bekommen, der einen vergänglichen (Niemals-Schreiben-)Cache-Modus spezifiziert. Andere potentielle Eigenschaften des Persistenzgrads739 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 Persistenzgrad739 gespeichert werden, der einen Hindurchschreib-Cache-Speicherungsmodus angibt. Der Persistenzgrad739 kann ferner angeben, dass Daten in einem oder mehreren redundanten Speicherbetriebsmitteln240B –N (z. B. in einer bestimmten RAID-Ebene, Spiegelungskonfiguration oder dergleichen) zu speichern sind. Als Reaktion kann das CMS220 dafür ausgelegt sein, Daten von E/A-Anforderungen116 , die Dateien betreffen, die das Dateiauswahlkriterium „\\Anwendung\kritische Daten” erfüllen, in ein redundantes primäres Speicherbetriebsmittel240A –N und/oder in einem entsprechenden Speichermodus hindurchzuschreiben. Andere Speicherdienste, wie etwa das (in7A nicht gezeigte) Speichermodul130 , können die Persistenzgradrichtlinie735 erweitern, um Daten gemäß den darin festgelegten Persistenzgrad(en) zu speichern, gleichgültig, ob die bestimmte E/A-Anforderung116 durch das CMS220 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 Persistenzgradrichtlinie735 Anwendungen identifizieren und/oder designieren, von denen bekannt ist, dass sie temporäre, wegwerfbare Schreiboperationen verwenden, so dass E/A-Anforderungen116 solche Anwendungen gemäß einem Persistenzgrad739 Cache-gespeichert werden, der eine vergängliche Cache-Konfiguration umfasst. Zum Beispiel können die Persistenzgradkriterien737 angeben, dass E/A-Anforderungen116 , die aus der Word®-Anwendung stammen und an Dateien in einem lokalen Cache gerichtet sind, in einem vergänglichen Persistenzgrad739 versorgt werden sollten. Die Persistenzgradrichtlinie735 kann ferner Vorgabe- und/oder Wildcard-Kriterien umfassen, wie etwa einen Vorgabe-Hindurchschreib-Cache-Modus-Persistenzgrad739 . - Das CMS
220 kann dafür ausgelegt sein, einen existierenden Cache-Manager709 der Betriebsumgebung711 transparent zu erweitern. Dementsprechend können das CMS220 und/oder der Agent133 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 CMS220 und/oder der Agent133 können dafür ausgelegt sein, bestimmte Arten von E/A-Anforderungen116 zu ignorieren, wie etwa direkte E/A-Anforderungen, von denen erwartet wird, dass sie direkt auf primäre Speicherbetriebsmittel240B –N zugreifen, und/oder Nicht-Paging-E/A-Anforderungen, die den existierenden Cache-Manager709 betreffen. - Wie hier offenbart weist das Persistenzgradmodul
134 einer E/A-Anforderung116 einen Persistenzgrad mindestens teilweise auf der Basis eines Ziels und/oder einer Quelle der E/A-Anforderung116 (z. B. Dateiname) zu. Bei bestimmten Ausführungsformen kann das CMS220 E/A-Anforderungsmetadaten733 unterhalten, wie zum Beispiel, aber ohne Beschränkung darauf, die Quellenkennung von E/A-Anforderungen116 (z. B. Dateiname, Pfad oder dergleichen), den Persistenzgrad der E/A-Anforderungen116 und dergleichen. Der Agent133 kann als Reaktion auf das Detektieren einer anfänglichen E/A-Anforderung116 , die eine Dateioperation, wie etwa ein Datei öffnen, lesen, kopieren, löschen, erzeugen, abschneiden, modifizieren, schreiben oder dergleichen, betrifft, Kontextmetadaten733 erzeugen. Der Agent133 kann mit den E/A-Anforderungsmetadaten (z. B. dem Kontext)733 die E/A-Anforderung116 (und nachfolgend diesbezügliche E/A-Anforderungen116 ) einer entsprechenden Quellenkennung, wie etwa einer Dateikennung, einem Dateinamen, einer Volumenkennung, einer Datenträgerkennung oder dergleichen zuordnen. Bei bestimmten Ausführungsformen kann der Agent133 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-Anforderung116 . Das CMS220 kann auf die E/A-Anforderungsdaten733 zugreifen, um zu bestimmen, ob nachfolgende E/A-Anforderungen116 Cache-gespeichert werden sollten und/oder den Persistenzgrad der E/A-Anforderung116 zu bestimmen, ohne erneut Cache-Zulassungskriterien und/oder die Persistenzgradrichtlinie735 anzuwenden. Die E/A-Anforderungsmetadaten733 können Kontextdaten einer E/A-Anforderung116 umfassen und/oder können in einer getrennten Datenstruktur unterhalten werden. Die E/A-Anforderungsmetadaten733 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-Anforderungen116 führt. Der Agent133 kann die E/A-Anforderung116 mit entsprechenden E/A-Anforderungsmetadaten733 assoziieren, die eine Quellenkennung der Datei, eine Angabe, ob die Datei in dem Cache zugelassen werden sollte, einen Persistenzgrad der E/A-Anforderungen116 und so weiter umfassen können. Der Speicher-Client106A –N kann E/A-Operationen an den Dateien ausführen, die unter Verwendung des existierenden Cache-Managers709 versorgt werden können und die der Agent133 ignorieren kann. Gemäß der Cache-Richtlinie der Datenverarbeitungsumgebung111 kann der existierende Cache-Manager709 ausgeräumt werden, dass zu einer oder mehreren Paging-E/A-Anforderungen116 führt, die durch den Agenten133 detektiert werden können. Als Reaktion kann der Agent133 auf die E/A-Anforderungsmetadaten (z. B. den Kontext)733 der Paging-E/A-Anforderungen116 zugreifen, um die Quellenkennung(en) der Anforderungen zu bestimmen, zu bestimmen, ob die E/A-Anforderungen116 in den Cache zuzulassende Daten betreffen, einen Persistenzgrad der E/A-Anforderung116 zu bestimmen und so weiter. E/A-Anforderungen116 , die Daten betreffen, die in dem Cache zuzulassen sind, können unter Verwendung des CMS220 gemäß einem zugewiesenen Persistenzgrad wie hier beschrieben versorgt werden. - Wie oben offenbart kann der Persistenzgrad der E/A-Anforderungen
116 auf der Persistenzgradrichtlinie735 , wie etwa Persistenzgradkriterien737 , prädikatisiert werden. Die Persistenzgradrichtlinie735 kann durch einen Benutzer (oder eine andere Entität, wie etwa einen Profilierungsprozess oder dergleichen) konfigurierbar sein. Das CMS220 kann eine Konfigurationsschnittstelle740 umfassen, durch die die Persistenzgradrichtlinie735 und/oder die Persistenzgradkriterien737 spezifiziert werden können. - Bei bestimmten Ausführungsformen kann das CMS
220 dafür ausgelegt sein, einen Persistenzgrad eines Cache-Tags221 während des Betriebs zu modifizieren. Zum Beispiel kann das CMS220 dafür ausgelegt sein, in einer vergänglichen Cache-Konfiguration gespeicherte Daten auf das primäre Speicherbetriebsmittel240B –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 Speicherbetriebsmittel240B –N und/oder Hinauswerfen der Daten aus dem Cache. Vergängliche Cache-Daten können als Reaktion darauf hinausgeworfen werden, dass eine E/A-Anforderung116 bestimmte Arten von E/A-Anforderungen116 betrifft (z. B. unabgewickelte E/A-Anforderungen116 , wie etwa Abschneiden, translational oder dergleichen). Als Reaktion auf eine solche E/A-Anforderung116 kann das CMS220 dafür ausgelegt sein, die vergänglichen Cache-Daten in ein primäres Speicherbetriebsmittel bzw. primäre Speicherbetriebsmittel240B –N auszuräumen, wodurch der Betriebsumgebung711 erlaubt wird, die E/A-Anforderung116 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 CMS220 E/A-Konflikte (z. B. gleichzeitige Anforderungen des Zugriffs auf ein Cache-Tag221 ) durch Invalidierung des Cache-Tags221 , das Hinauswerfen der Daten aus dem Cache umfassen kann. Das CMS220 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 Speicherbetriebsmittel240B –N erfordert), kann das CMS220 dafür ausgelegt sein, in Konflikt stehende Anforderungen einzuteilen und/oder zurückzustellen, statt das vergängliche Cache-Tag221 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 CMS220 . Wie oben beschrieben, kann die Versorgung einer Schreib-E/A-Anforderung116 in einem vergänglichen Cache-Modus umfassen, Daten in ein Cache-Speicherbetriebsmittel240A zu schreiben, ohne die Daten in ein primäres Speicherbetriebsmittel240B –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-Stapels117 der Betriebsumgebung711 befindet, und ohne Beteiligung von Operationen auf langsameren primären Speicherbetriebsmitteln240B –N. Im vorliegenden Gebrauch bezieht sich eine „schneller Pfad”-Operation auf eine E/A-Operation, die außerhalb des E/A-Stapels117 der Betriebsumgebung711 und/oder ohne Beteiligung von langsamen primären Speicherbetriebsmitteln240B –N stattfindet. Eine „langsamer Pfad”-Operation bezieht sich auf eine E/A-Operation, an der eine oder mehrere Schichten des E/A-Stapels117 beteiligt sind und/oder die gegenüber einem oder mehreren primären Speicherbetriebsmitteln240B –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 Persistenzgradmodul734 ) gespeichert werden, können die Daten sowohl in dem Cache-Speicherbetriebsmittel240A als auch/oder auf einem oder mehreren primären Speicherbetriebsmitteln240B –N gespeichert werden. Als Reaktion auf eine E/A-Anforderung116 mit nichtvergänglichem Cache-Modus kann das Cache-Ausführungsmodul636 dafür ausgelegt sein, die Anforderung auf eine schneller-Pfad-Operation782 zur Speicherung der Daten in dem Cache-Speicherbetriebsmittel240A und eine langsamer-Pfad-Operation784 zum Speichern der Daten in einem oder mehreren primären Speicherbetriebsmitteln240B –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 CMS220 kann den Abschluss der E/A-Anforderung116 erst bestätigen, wenn die langsamer-Pfad-Operation784 abgeschlossen ist. Dementsprechend kann der langsame Pfad784 den „kritischen Pfad” für die Versorgung von nichtvergänglichen E/A-Anforderungen116 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-Anforderungen116 kann den langsamen Pfad784 umfassen, da der Abschluss solcher E/A-Anforderungen116 erst bestätigt wird, wenn die entsprechenden Daten auf einem oder mehreren primären Speicherbetriebsmitteln204B –N gespeichert sind. - Im Gegensatz dazu kann das Cache-Ausführungsmodul
636 dafür ausgelegt sein, Schreib-E/A-Anforderungen116 , die vergängliche Daten betreffen (bestimmt durch das Cache-Richtlinienmodul601 und/oder das Persistenzgradmodul734 ) ausschließlich in einem schnellen Pfad782 zu versorgen, ohne Operationen des langsamen Pfads784 in dem E/A-Stapel117 und/oder primäre Speicherbetriebsmittel240B –N zu beteiligen. Das Versorgen einer E/A-Anforderung116 zum Schreiben von vergänglichen Cache-Daten kann außerdem die Aufgabelung780 nicht erfordern, da keine separate Verarbeitung des langsamen Pfads784 erforderlich ist. Das CMS220 kann den Abschluss von vergänglichen E/A-Anforderungen116 als Reaktion auf den Abschluss der schneller-Pfad-Operation782 und ohne darauf zu warten, dass Operationen des langsamen Pfads784 abgeschlossen werden, bestätigen. Deshalb können vergängliche E/A-Anforderungen116 den kritischen Pfad für die Versorgung von E/A-Anforderungen116 verringern und die Last auf dem E/A-Stapel117 und/oder den primären Speicherbetriebsmitteln240B –N verringern. -
8A ist ein Flussdiagramm einer Ausführungsform zum Cache-Speichern von Daten gemäß adaptiven Graden der Persistenz. Das Verfahren800 kann wie hier offenbart starten und initialisiert werden. Schritt810 kann Empfangen einer E/A-Anforderung116 in einem Speichermodul130 und/oder CMS220 umfassen. Schritt810 kann Empfangenen der E/A-Anforderung116 direkt von einem Speicher-Client106A –N (z. B. über eine E/A-Schnittstelle131 ) und/oder Detektieren und/oder Überwachen von E/A-Anforderungen in einem E/A-Stapel117 (oder eine anderen E/A-Infrastruktur) wie hier offenbart umfassen. Schritt810 kann ferner Zugreifen auf einen Kontext und/oder eine Kennung (z. B. Dateikennung) umfassen, der bzw. die der E/A-Anforderung116 wie hier beschrieben zugeordnet ist. - Schritt
820 kann umfassen zu bestimmen, ob Daten der E/A-Anforderung116 in einem Cache, wie etwa den Virtuellmaschinen-Cache213 , 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. Schritt820 kann umfassend zu bestimmen, ob Daten der E/A-Anforderung116 bereits zugelassen wurden; wenn dem so ist, kann die E/A-Anforderung116 gemäß Persistenz-Metadaten versorgt werden, die der E/A-Anforderung116 zugordnet sind (z. B. ein zuvor bestimmter Persistenzgrad und/oder Cache-Modus der E/A-Anforderung116 , wie in einem Cache-Tag221 der E/A-Anforderung116 angegeben). Wenn Daten der E/A-Anforderung116 (per Cache-Richtlinie und/oder Verfügbarkeit) zuzulassen sind, geht der Fluss zu Schritt830 weiter. - Schritt
830 kann umfassen, der E/A-Anforderung116 einen adaptiven Persistenzgrad zuzuweisen, was Auswählen eines Cache-Modus für die E/A-Anforderung116 (z. B. vergänglich, Hindurchschreiben, Rückschreiben oder dergleichen) umfassen kann. Das Zuweisen des Persistenzgrads kann umfassen zu bestimmen, ob die E/A-Anforderung116 temporäre und/oder entbehrliche Daten betrifft, wie oben beschrieben. Dementsprechend kann Schritt830 Vergleichen von Dateiebenenwissen bezüglich der E/A-Anforderung116 mit einem Persistenzgradkriterium umfassen. Zum Beispiel kann der E/A-Anforderung116 ein vergänglicher Cache-Modus zugewiesen werden, wenn die E/A-Anforderung116 eine Swap-Datei, temporäre Datei, lokale Cache-Datei oder dergleichen betrifft. Als Alternative kann der E/A-Anforderung116 ein Hindurchschreib-Cache-Modus (oder ein anderer Cache-Modus, wie etwa ein Rückschreiben) zugewiesen werden, wenn die E/A-Anforderung116 permanente Daten betrifft. Schritt830 kann ferner Aktualisieren eines der E/A-Anforderung116 zugeordneten Cache-Tags221 umfassen, um den im Schritt830 bestimmen Persistenzgrad und/oder Cache-Modus anzugeben (z. B. Persistenz-Metadaten des Cache-Tags221 zu aktualisieren). Wenn der in Schritt830 bestimmte Persistenzgrad einen vergänglichen Cache-Modus angibt, geht der Fluss zu Schritt840 weiter; andernfalls geht der Fluss zu Schritt850 weiter. - Schritt
840 kann Zulassen von Daten der E/A-Anforderung116 in dem Cache in einem vergänglichen Cache-Modus umfassen. Schritt840 kann Speichern von Daten der E/A-Anforderung116 in einem Cache (z. B. dem Virtuellmaschinen-Cache213 ) umfassen, aber nicht Speichern der Daten in einem primären Speicherbetriebsmittel240B –N. Dementsprechend kann Schritt840 Speichern der Daten ausschließlich in dem Cache216 umfassen. In virtualisierten Umgebungen kann Schritt840 ferner umfassen, dem Virtuellmaschinen-Cache213 eine Angabe bereitzustellen, dass die Daten in einem vergänglichen Cache-Modus Cache-gespeichert werden. Wie nachfolgend beschrieben, kann der Virtuellmaschinen-Cache213 Cache-Modus-Metadaten verwenden, um zu bestimmen, ob die Cache-Daten behalten werden sollen, nachdem die virtuelle Maschine208A –N zu einem anderen Host transferiert wird (und/oder wie lange die Cache-Daten behalten werden sollen). Da der Virtuellmaschinen-Cache213 die einzige Quelle für vergängliche Cache-Daten sein kann, kann der Virtuellmaschinen-Cache213 dafür ausgelegt sein, die vergänglichen Cache-Daten zu behalten, bis die Daten zu dem neuen Host der virtuellen Maschine208A –N transferiert sind. - Schritt
850 kann Zulassen von Daten der E/A-Anforderung116 gemäß dem im Schritt830 bestimmten Persistenzgrad umfassen, was Speichern der Daten in einem geteilten Virtuellmaschinen-Cache213 (oder anderen Cache), Hindurch- und/oder Rückschreiben der Daten in ein oder mehrere primäre Speicherbetriebsmittel240B –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 Verfahren801 kann wie hier offenbart starten und initialisiert werden. Schritt811 kann Empfangen einer E/A-Anforderung116 zum Schreiben von Daten in einem Speichermodul130 und/oder dem CMS220 umfassen. Schritt811 kann Empfangen der E/A-Anforderung116 direkt von einem Speicher-Client106A –N (z. B. über eine E/A-Schnittstelle131 ) und/oder Detektieren und/oder Überwachen von E/A-Anforderungen E/A-Anforderung116 in einem E/A-Stapel117 (oder einer anderen E/A-Infrastruktur) wie hier offenbart umfassen. Schritt811 kann ferner umfassen zu bestimmen, dass die E/A-Anforderung116 Daten betrifft, die in dem Cache (z. B. das Cache-Speicherbetriebsmittel240A und/oder den Virtuellmaschinen-Cache213 ) zugelassen wurden. - Schritt
831 kann umfassen, einen der E/A-Anforderung116 zugeordneten Persistenzgrad zu bestimmen, wodurch wie hier beschrieben der Cache-Modus der E/A-Anforderung116 bestimmt werden kann. Wenn der Cache-Modus einen vergänglichen Cache-Modus umfasst, geht der Fluss zu Schritt841 weiter; andernfalls geht der Fluss zu Schritt851 weiter. - Schritt
841 kann Versorgen der E/A-Anforderung116 in einem vergänglichen Cache-Modus umfassen. Dementsprechend kann Schritt841 Versorgen der E/A-Anforderung116 in einer oder mehreren schneller-Pfad-Operationen782 umfassen, bei denen kein Zugriff auf primäre Speicherbetriebsmittel240B –N und/oder andere Schichten des E/A-Stapels117 erfolgt. Schritt843 kann Bestätigen des Abschlusses der E/A-Anforderung116 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-Anforderung116 nur schneller-Pfad-Operation(en)782 und schließt eine Aufgabelung780 für langsamer-Pfad-Operation(en)784 aus. - Schritt
851 kann Versorgen der E/A-Anforderung116 gemäß einem anderen nichtvergänglichen Cache-Modus, wie etwa einem Hindurchschreib-Cache-Modus, umfassen. Schritt851 kann Versorgen der E/A-Anforderung116 in einer oder mehreren langsamer-Pfad-Operationen784 und einer oder mehreren schneller-Pfad-Operationen782 (z. B. Aufgabelung780 der E/A-Operationen) umfassen. Die eine oder mehreren Operationen des langsamen Pfads784 können Operationen auf einen oder mehreren primären Speicherbetriebsmitteln240B –N umfassen und/oder können eine oder mehrere Schichten des E/A-Stapels117 beteiligen. Schritt853 kann Bestätigen des Abschlusses der E/A-Anforderung116 als Reaktion auf Abschluss der einen oder mehreren langsamer-Pfad-Operationen784 umfassen. - Wie oben offenbart, kann das CMS
220 dafür ausgelegt sein, die Cache-Tags221 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 Maschine208A –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-Tags221 als Reaktion auf Verlagerung, Transfer und/oder Migration der virtuellen Maschine208A –N zu einem anderen Host202 (z. B. in einer VMotionTM-Operation) die Cache-Tags221 zu behalten. Behalten der Cache-Tags221 kann umfassen, die Cache-Tags221 im Speicher der virtuellen Maschine208A –N zu unterhalten und/oder die Cache-Tags221 während der Verlagerung nicht zu invalidieren. Behalten der Cache-Tags221 kann ferner Anfordern von Cache-Speicherung von dem Cache-Bereitstellermodul214 des neuen Hosts202 und/oder selektives Hinzufügen und/oder Entfernen von Cache-Tags221 als Reaktion darauf, eine andere Menge von Cache-Speicherung auf dem neuen Host202 zugeteilt zu bekommen, umfassen. Bei bestimmten Ausführungsformen kann das CMS220 die Cache-Tags221 trotz des Umstands behalten, dass die Cache-Daten, auf die die Cache-Tags221 verweisen, in dem Cache216 des neuen Hosts202 nicht existieren. Wie nachfolgend beschrieben, kann der Virtuellmaschinen-Cache213 dafür ausgelegt sein, den Cache216 mit Cache-Daten aus einem vorherigen Host202 der virtuellen Maschine208A –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 Host202 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 Host202 der virtuellen Maschine208A –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-Cache213 des vorherigen Hosts202A verfügbar sein; da die Cache-Daten nicht in primärer Speicherung hindurchgeschrieben und/oder rückgeschrieben werden, existieren die Daten nur in dem Cache213 . Wie hier beschrieben, kann der Virtuellmaschinen-Cache213 dafür ausgelegt sein, Cache-Daten zwischen Hosts202 zu transferieren, so dass die vergänglichen Cache-Daten nicht verloren gehen. Als Alternative oder zusätzlich kann das CMS220 einer virtuellen Maschine208A –N dafür ausgelegt sein, vergängliche Cache-Daten vor dem Transfer und/oder der Migration zu einem neuen Host202 auszuräumen, was Datenverlust vermeiden kann, falls die Cache-Daten aus dem vorherigen Host202 entfernt werden (und/oder der vorherige Host einen Ausfallzustand erfährt). -
9 ist ein Blockschaltbild einer anderen Ausführungsform einer virtuellen Datenverarbeitungsumgebung900 . Die virtuelle Datenverarbeitungsumgebung900 umfasst mehrere Hosts202A –N, die jeweils einen Virtualisierungskern210 und eine oder mehrere virtuelle Maschinen umfassen können. Obwohl es in2 nicht gezeigt ist, kann jede virtuelle Maschine ein jeweiliges CMS220 wie hier beschrieben umfassen. Jeder Host202A –N kann ferner einen jeweiligen Virtuellmaschinen-Cache213A –N umfassen, der ein Cache-Bereitstellermodul214 und einen Cache216 umfasst. Obwohl9 drei Hostsysteme202A –N abbildet, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte eine beliebige Anzahl von Hosts202A –N umfassen. - Die virtualisierte Umgebung
900 kann ein primäres Speichersystem242 umfassen, das unter den Hosts202A –N und/oder den virtuellen Maschinen208 geteilt werden kann. Das primäre Speichersystem242 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 Hosts202A –N können dafür ausgelegt sein, über das Netzwerk105 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 Maschine208 auf einem Host202A –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 Maschine208 auf einem bestimmten Host202A –N und/oder in einer Gruppe von Hosts202A –N eindeutig identifizieren. Zum Beispiel können die Hosts202A –N in demselben Namenraum, wie etwa einem Cluster, operieren, und die VMID jeder virtuellen Maschine208 kann in dem Namenraum des Clusters einzigartig sein (einzigartig über die virtuellen Maschinen208A –N hinweg, die in dem Cluster auf dem Host202A –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 Maschine208 in einem bestimmten Namenraum eindeutig identifizieren und kann den Host202A –N identifizieren, auf dem die virtuelle Maschine208 gerade eingesetzt wird (oder zuvor eingesetzt war). Als Alternative oder zusätzlich kann jede virtuelle Maschine208 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 Hosts202A –N verlagert und/oder transferiert zu werden. Zum Beispiel kann eine virtuelle Maschine208X (z. B. in einer VMotionTM- oder ähnlichen Operation) von Host202A zu Host202B migriert werden. Bei bestimmten Ausführungsformen kann das CMS220 der virtuellen Maschine208X dafür ausgelegt sein, eine Transfer- und/oder Migrationsoperation zu detektieren, und kann als Reaktion versuchen, vergängliche Cache-Daten auf das primäre Speichersystem242 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 Host202A nicht verfügbar sind. Als Alternative kann das CMS220 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 Speicherung242 und/oder der E/A-Infrastruktur des Netzwerks105 zu vermeiden). - Der Virtuellmaschinen-Cache
213B kann dafür ausgelegt sein, den Transfer als Reaktion auf den Empfang einer Anforderung von dem CMS220 der transferierten virtuellen Maschine208X zu identifizieren. Die Anforderung kann die VMID der transferierten virtuellen Maschine208X umfassen, woraus der Virtuellmaschinen-Cache213B bestimmen kann, dass die virtuelle Maschine208X dem Host208B „neu” ist (z. B. die VMID umfassende Anforderungen wurden zuvor noch nicht empfangen). Als Reaktion kann der Virtuellmaschinen-Cache213B ein Handshake-Protokoll mit der virtuellen Maschine208X einleiten. Der Virtuellmaschinen-Cache213B kann mindestens teilweise auf der Basis einer Hostkennung der VMID und/oder einer Hostkennung(en), die durch die virtuelle Maschine208X unterhalten wird, bestimmen, dass die virtuelle Maschine208X zu dem Host208B transferiert wurde. Die Hostkennung der virtuellen Maschine208X kann auf den Host202A verweisen, während die Hostkennung einer neu heraufgefahrenen virtuellen Maschine208 auf den Host202B verweisen kann (oder leer sein kann). Als Alternative oder zusätzlich kann die virtuelle Maschine208X eine getrennte Hostkennung umfassen, die auf den Host202a verweisen kann, und es kann in dem Handshake-Protokoll mit dem Virtuellmaschinen-Cache213B auf sie zugegriffen werden. - Das Cache-Bereitstellermodul
214 kann dafür ausgelegt sein, Speicherung für die virtuelle Maschine208X im Cache216B zuzuteilen. Das Cache-Bereitstellermodul214 kann dafür ausgelegt sein, mindestens teilweise auf der Basis der Größe der auf dem vorherigen Host (Host202A ) der virtuellen Maschine208X zugeteilten Cache-Speicherung zu bestimmen, wieviel Cache-Speicherung bereitzustellen ist. Wie oben offenbart, kann das CMS220 der virtuellen Maschine208X dafür ausgelegt sein, nach dem Transfer zu dem Host202B die Arbeitsmenge des Cache zu behalten (z. B. die Cache-Tags221 zu behalten). Das Cache-Bereitstellermodul214B kann versuchen, ausreichend Cache-Speicherung im Cache216B zur Unterstützung der behaltenen Cache-Tags221 zuzuteilen. Wenn keine ausreichende Cache-Speicherung zugeteilt werden kann, kann das CMS220 dafür ausgelegt sein, die behaltenen Cache-Tags gemäß der neuen Cache-Speicherungszuteilung auf dem Host202B selektiv zu entfernen. Wenn überschüssige Cache-Speicherung verfügbar ist, kann das CMS220 als Alternative dafür ausgelegt sein, neue Tags zu den behaltenen Cache-Tags221 hinzuzufügen. Die Zuteilung kann durch einen virtuellen Datenträger229 wie hier beschrieben widergespiegelt werden. - Der Virtuellmaschinen-Cache
213A kann ein Retentionsmodul928A umfassen, das dafür ausgelegt sein kann, Cache-Daten der virtuellen Maschine208X zu behalten, nachdem die virtuelle Maschine208X von dem Host202A transferiert wird. Die Cache-Daten können für eine Retentionsperiode behalten werden und/oder bis der Virtuellmaschinen-Cache213A bestimmt, dass die behaltenen Cache-Daten nicht mehr benötigt werden. Das Retentionsmodul928A 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 Cache216A , Verfügbarkeit des Cache216B , relative Wichtigkeit der behaltenen Cache-Daten (vergleichen mit Cache-Erfordernissen anderer virtueller Maschinen208 ), ob die Cache-Daten in dem primären Speichersystem242 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-Cache213A verfügbar sein. Das Cache-Retentionsmodul928A kann deshalb dafür ausgelegt sein, Retention vergänglicher Cache-Daten zu priorisieren, bis die vergänglichen Cache-Daten zu dem neuen Host202B 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 Speichersystem242 verfügbar sein werden. - Das CMS
220 der virtuellen Maschine208X kann dafür ausgelegt sein, den Arbeitszustand des Cache (die Cache-Tags221 ) trotz des Umstands zu behalten, dass der Cache216B die Cache-Daten, auf die die Cache-Tags221 verweisen, nicht umfasst. Wie nachfolgend offenbart, kann der Virtuellmaschinen-Cache213B dafür ausgelegt sein, den Cache216B mit Cache-Daten aufzufüllen, die aus dem Cache216A des Host202A und/oder dem primären Speichersystem242 transferiert werden, um die Arbeitsmenge der transferierten virtuellen Maschine208X zu rekonstruieren. - Der Virtuellmaschinen-Cache
213B kann ein Cache-Transfermodul929B umfassen, das dafür ausgelegt sein kann, auf in dem vorherigen Host202A gespeicherte Cache-Daten der virtuellen Maschine208X zuzugreifen. Das Cache-Transfermodul929B kann dafür ausgelegt sein, den vorherigen Host202A durch Verwendung der VMID und/oder durch Abfragen der virtuellen Maschine208X (z. B. Zugreifen auf eine durch die virtuelle Maschine208X unterhaltene vorherige Hostkennung) zu identifizieren. Das Cache-Transfermodul929B kann die Hostkennung verwenden, um über das Netzwerk105 eine oder mehrere Anforderungen der Cache-Daten an den Virtuellmaschinen-Cache213 des Hosts202A auszugeben. Bei bestimmten Ausführungsformen ist das Cache-Transfermodul929B dafür ausgelegt, eine Netzwerkadresse oder Netzwerkkennung des Hosts202A aus der Hostkennung zu bestimmen und/oder abzuleiten. - Der Virtuellmaschinen-Cache
213A kann ein Cache-Transfermodul929A umfassen, das dafür ausgelegt ist, selektiv Zugang zu behaltenen Cache-Daten der transferierten virtuellen Maschine208X bereitzustellen. Bei bestimmten Ausführungsformen ist das Cache-Transfermodul929A dafür ausgelegt, die behaltenen Cache-Daten zu sichern. Zum Beispiel kann das Cache-Transfermodul929A dafür ausgelegt sein, zu verifizieren, dass die anfordernde Entität (z. B. der Virtuellmaschinen-Cache213B ) dazu autorisiert ist, auf die Cache-Daten der transferierten virtuellen Maschine208X zuzugreifen, was umfassen kann, zu verifizieren, dass die virtuelle Maschine208X auf dem Host202B eingesetzt wird. Zum Beispiel kann das Cache-Transfermodul929A einen der transferierten virtuellen Maschine208X zugeordneten Berechtigungsnachweis, wie etwa die VMID oder dergleichen, anzufordern. Als Alternative oder zusätzlich kann das Cache-Transfermodul929A eine kryptographische Verifikation implementieren, die Verifizieren einer durch die transferierte virtuelle Maschine208X 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-Anforderung116 der Cache-Daten aus der virtuellen Maschine208X (z. B. auf Bedarf) umfassen. Die transferierten Daten können zur Versorgung der E/A-Anforderungen116 verwendet werden. Zusätzlich können die transferierten Daten in den Cache216B des neuen Hosts202B 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-Transfermodul929B dafür ausgelegt sein, das CMS220 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 Maschine208X 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 CMS220 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 Host202A verfügbar sein, und dementsprechend können sie gegenüber anderen Cache-Daten priorisiert werden, die aus alternativen Quellen (z. B. dem primären Speichersystem242 ) verfügbar sein können. Deshalb kann das Cache-Transfermodul929B 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 Cache216A des Hosts202A transferierte (oder aus anderen Quellen, wie etwa dem primären Speichersystem242 beschaffte) Cache-Daten in dem Cache216B zu speichern. Das Cache-Speichermodul931B kann dafür ausgelegt sein, die Cache-Daten an Cache-Speicherstellen zu speichern, die durch das Cache-Bereitstellermodul214B der transferierten virtuellen Maschine208X zugeteilt wurden. Die Cache-Daten können an derselben Cache-Speicherstelle (z. B. demselben Offset mit der Cache-Speicherung) wie in dem ursprünglichen Cache216A gespeichert werden, so dass Verweise in dem behaltenen Cache-Tags221 mittels der durch das Abbildungsmodul514 des Cache-Bereitstellermoduls214 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 Maschine208X (durch Verwendung des Abbildungsmoduls514 ) zu identifizieren. Das Cache-Transfermodul929A kann dann die angeforderten Cache-Daten (wenn sie verfügbar sind) über das Netzwerk905 zu dem Cache-Transfermodul929B transferieren. - Das Cache-Transfermodul
929B kann dafür ausgelegt sein, auf Cache-Daten aus dem vorherigen Host202A zuzugreifen. In einem vergänglichen Cache-Modus Cache-gespeicherte Daten können nur aus dem vorherigen Host202A zugänglich sein. In anderen Cache-Modi Cache-gespeicherte Daten können von anderen Quellen verfügbar sein, wie etwa dem primären Speichersystem242 und/oder anderen Quellen der Daten (z. B. anderen persistenten Speichersystemen, Hosts202N oder dergleichen). Das Cache-Transfermodul929B 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-Transfermodul929B als Reaktion auf ein Bestimmen, dass das Netzwerk105 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 Netzwerk105 unabhängig ist, zu transferieren. Ähnlich kann das Cache-Transfermodul929B Anforderungen als Reaktion auf ein Bestimmen, dass das primäre Speichersystem242 stark belastet ist und/oder begrenzte verfügbare Bandbreite aufweist, an den Host202 richten (im Gegensatz zu dem primären Speichersystem242 ). - Die auf dem Host
202A behaltenen Cache-Daten können Cache-Betriebsmittel repräsentieren, die von den anderen auf dem Host202A operierenden virtuellen Maschinen208A –N nicht verwendet werden können. Dementsprechend kann das Cache-Retentionsmodul928A 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-Transfermodul929B dafür ausgelegt, den vorherigen Host202A über Cache-Daten zu informieren, die aus anderen Quellen zu dem Host202B transferiert werden, so dass das Cache-Retentionsmodul928A die entsprechenden Daten aus dem Cache216A entfernen kann. Das Cache-Transfermodul929B kann ferner dafür ausgelegt sein, den Host202A ü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 Cache216B hinausgeworfen werden oder dergleichen. Wie oben offenbart, kann das Cache-Retentionsmodul928A 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 Maschine208X auf den neuen Host202B zu „schieben”. Schieben von Cache-Daten kann Transferieren behaltener Cache-Daten der virtuellen Maschine208X zu dem Cache-Transfermodul929B umfassen, ohne eine Anforderung der Cache-Daten zu empfangen (unabhängig von Anforderungen der Cache-Daten). Das Cache-Transfermodul929A kann die Hostkennung des neuen Hosts202B mittels Benutzerkonfiguration; des oben beschriebenen Verifikationsprozesses; aktiver Abfragung durch das Cache-Transfermodul929A ; einen durch die transferierte virtuelle Maschine208X implementierten Rückruf; oder dergleichen bestimmen. Bei bestimmten Ausführungsformen kann der Virtuellmaschinen-Cache213 des neuen Hosts202B als Reaktion auf den Empfang von aus dem Host202A geschobenen Cache-Daten wie oben beschrieben identifizieren, dass die virtuelle Maschine208X von dem Host202A transferiert wurde. Das Cache-Transfermodul929A 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 Verfahrens1000 zum Transferieren und/oder Migrieren von Cache-Daten einer virtuellen Maschine208 zwischen Hosts202 . Das Verfahren1000 kann wie oben beschrieben starten und initialisiert werden. - Schritt
1010 kann umfassen, dass ein Cache-Bereitstellermodul214B Cache-Speicherung an eine virtuelle Maschine208X auf einem Host208B zuteilt, wenn die virtuelle Maschine208X von einem vorherigen Host202A aus zu dem neuen Host202B migriert. Der neue Host202B und der vorherige Host202A können (z. B. über ein Netzwerk105 ) kommunikativ gekoppelt sein. Wie oben beschrieben, kann das Cache-Bereitstellermodul214B die transferierte virtuelle Maschine208X als Reaktion auf den Empfang einer E/A-Anforderung116 von dem CMS220 der virtuellen Maschine208X (oder einer anderen Abfrage), den Empfang von Cache-Daten der virtuellen Maschine208X von dem Cache-Transfermodul929A des vorherigen Hosts202A oder dergleichen identifizieren. Schritt1010 kann ferner Unterscheiden der transferierten virtuellen Maschine208X von einem anfänglichen Herauffahr- und/oder Neustartzustand umfassen (z. B. auf der Basis der VMID der virtuellen Maschine208X , einer Hostkennung oder dergleichen). Der Cache kann wie oben beschrieben dynamisch über einen Virtuelldatenträger-Treiber215 in einem virtuellen Datenträger229 der virtuellen Maschine208X zugeteilt werden. - Schritt
1020 kann umfassen, dass das Cache-Transfermodul929B des neuen Hosts202B den vorherigen Host202A der transferierten virtuellen Maschine208X bestimmt. Schritt1020 kann Zugreifen auf einer Hostkennung in der VMID der virtuellen Maschine208X , Abfragen der transferierten virtuellen Maschine208X , Empfangen geschobener Cache-Daten von dem vorherigen Host202B oder dergleichen wie oben beschrieben umfassen. - Schritt
1030 kann Auffüllen mindestens eines Teils der der virtuellen Maschine208X zugeteilten Cache-Speicherung mit in dem entfernten Host202A 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 Host202 verfügbar ist. Schritt1030 kann Anfordern der Cache-Daten, Verifizieren, dass der neue Host202B 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-Transfermodule929A und/oder929B wie oben beschrieben angefordert, transferiert und/oder geschoben werden. Bei bestimmten Ausführungsformen umfasst Schritt1030 ferner Auffüllen der zugeteilten Cache-Speicherung mit Daten, auf die aus der primären Speicherung212 (oder einer anderen Quelle) zugegriffen wird. Schritt1030 kann ferner umfassen, den entfernten Host202A zu informieren, dass die behaltenen Cache-Daten der virtuellen Maschine208X nicht mehr behalten werden müssen, wenn der Cache auf dem neuen Host202B aufgeführt wird, wie oben beschrieben. -
11 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens1100 zum Transferieren von Cache-Daten einer virtuellen Maschine208A –N. Das Verfahren1100 kann wie oben beschrieben starten und initialisiert werden. - Schritt
1110 kann Behalten von Cache-Daten einer virtuellen Maschine208X in einem Cache216 (Cache-Speichervorrichtung) als Reaktion auf Transfer und/oder Migration der virtuellen Maschine208X von dem Host202A weg umfassen. Die Cache-Daten können durch ein Cache-Retentionsmodul928A gemäß einer Retentionsrichtlinie wie oben beschrieben behalten werden. Bei bestimmten Ausführungsformen kann Schritt1110 umfassen, Retention von vergänglichen Cache-Daten, die auf dem primären Speichersystem242 nicht verfügbar sein können (z. B. nur in dem Virtuellmaschinen-Cache213A des vorherigen Hosts202A 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 Abbildungsmodul514 bestimmt werden, das dafür ausgelegt ist, Cache-Betriebsmittel (z. B. Cache-Stücke302 ) den virtuellen Maschinen208A –N zuzuordnen, denen die Betriebsmittel zugeteilt werden. - Schritt
1130 kann Bereitstellen behaltener Cache-Daten wie oben beschrieben umfassen. Schritt1130 kann Reagieren auf Anforderungen der Cache-Daten von einem Cache-Transfermodul929B des neuen Hosts202B der virtuellen Maschine208X , Schieben der Cache-Daten zu dem Cache-Transfermodul929B oder dergleichen umfassen. -
12 ist ein Flussdiagramm einer anderen Ausführungsform zum Transferieren von Cache-Daten einer virtuellen Maschine. Schritt1210 kann Behalten von Cache-Tags221 als Reaktion auf Transfer der virtuellen Maschine208X zu einem neuen Host202B umfassen. Bei bestimmten Ausführungsformen kann Schritt1210 Ändern des Persistenzgrads von Teilen der Cache-Daten umfassen. Zum Beispiel kann das CMS220 der virtuellen Maschine208X dafür ausgelegt sein, vergängliche Cache-Daten in das primäre Speichersystem242 auszuräumen, so dass die Cache-Daten selbst dann in dem neuen Host208B zugänglich sein werden, wenn die Cache-Daten aus dem Virtuellmaschinen-Cache213A des aktuellen Hosts202A der virtuellen Maschine208X entfernt werden. - Schritt
1220 kann Filtern von E/A-Operationen und Lenken ausgewählter E/A-Anforderungen116 zu einem CMS220 gemäß den behaltenen Cache-Tags221 umfassen. Schritt1220 kann Anfordern von Daten eines oder mehrerer Cache-Tags221 , die noch nicht zu dem neuen Host202B der virtuellen Maschine208X transferiert wurden und/oder nicht der virtuellen Maschine208X zugeteilt wurden, umfassen. Wie oben beschrieben, kann der Virtuellmaschinen-Cache213 des neuen Hosts202B als Reaktion auf eine solche Anforderung die virtuelle Maschine208X als eine transferierte virtuelle Maschine identifizieren (z. B. im Gegensatz zu einem anfänglichen Heraufbooten oder Herauffahren), Cache-Speicherung für die virtuelle Maschine208X zuteilen, den vorherigen Host202A der virtuellen Maschine208X bestimmen und/oder Cache-Daten aus dem vorherigen Host202A (über das Cache-Transfermodul929B ) 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 Host202A zu dem Virtuellmaschinen-Cache213B des neuen Hosts202B umfassen. - Aus Erwähnungen in der gesamten vorliegenden Beschreibung von Merkmalen, Vorteilen oder ähnlicher Sprache ist nicht zu schließen, dass alle Merkmale und Vorteile, die realisiert werden können, in irgendeiner einzigen Ausführungsform enthalten sind. Sprache, die sich auf die Merkmale und Vorteile bezieht, ist stattdessen mit der Bedeutung aufzufassen, dass ein spezifisches Merkmal, ein spezifischer Vorteil oder ein spezifisches Charakteristikum, das bzw. der in Verbindung mit einer Ausführungsform beschrieben wird, in mindestens einer Ausführungsform enthalten ist. Die Besprechung der Merkmale und Vorteile und ähnliche Sprache in der gesamten vorliegenden Beschreibung kann sich somit möglicherweise, aber nicht unbedingt auf dieselbe Ausführungsform beziehen.
- Ferner können die hier beschriebenen Merkmale, Vorteile und Eigenschaften auf eine beliebige geeignete Weise in einer oder mehreren Ausführungsformen kombiniert werden. Für Fachleute ist erkennbar, dass die offenbarten Ausführungsformen ohne einzelne oder mehrere der spezifischen Merkmale oder Vorteile einer bestimmten Ausführungsform ausgeübt werden können. In anderen Fällen können in bestimmten Ausführungsformen zusätzliche Merkmale und Vorteile erkannt werden, die nicht in allen Ausführungsformen vorliegen können. Diese Merkmale und Vorteile der offenbarten Ausführungsformen werden aus der folgenden Beschreibung und den angefügten Ansprüchen besser ersichtlich oder können durch Ausübung der im Folgenden dargelegten Ausführungsformen erfahren werden.
- Viele der in der vorliegenden Beschreibung beschriebenen Funktionseinheiten wurden als Module bezeichnet, um ihre Implementierungsunabhängigkeit konkreter hervorzuheben. Zum Beispiel kann ein Modul als eine Hardwareschaltung implementiert werden, die kundenspezifische VLSI-Schaltungen oder Gatearrays, handelsübliche Halbleiter wie Logikchips, Transistoren oder andere diskrete Komponenten umfasst. Ein Modul kann auch in programmierbaren Hardwarevorrichtungen wie am Einsatzort programmierbaren Gatearrays, programmierbaren Array-Logikvorrichtungen, programmierbaren Logikvorrichtungen oder dergleichen implementiert werden.
- Module können auch zur Ausführung durch verschiedene Arten von Prozessoren in Software implementiert werden. Ein identifiziertes Modul von ausführbarem Code kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computeranweisungen umfassen, die zum Beispiel als Objekt, Prozedur oder Funktion organisiert sein können. Dessen ungeachtet müssen sich die ausführbaren Dateien eines identifizierten Moduls nicht physisch beieinander befinden, sondern können getrennte Anweisungen umfassen, die an verschiedenen Orten gespeichert werden, die, wenn sie logisch verknüpft werden, das Modul bilden und den angegebenen Zweck für das Modul erreichen.
- Tatsächlich kann ein Modul von ausführbarem Code eine einzige Anweisung sein oder viele Anweisungen und kann sogar über mehrere verschiedene Codesegmente, über verschiedene Programme und über mehrere Speichervorrichtungen verteilt sein. Ähnlich können Operationsdaten hier in Modulen identifiziert und dargestellt sein und können in einer beliebigen geeigneten Form realisiert und in einer beliebigen geeigneten Art von Datenstruktur organisiert werden. Die Operationsdaten können als eine einzige Datenmenge gesammelt oder über verschiedene Orte verteilt werden, darunter über verschiedene Speichervorrichtungen, und können mindestens teilweise lediglich als elektronische Signale auf einem System oder Netzwerk existieren. Wenn ein Modul oder Teil eines Moduls in Software implementiert wird, werden die Softwareteile auf einem oder mehreren computerlesbaren Medien gespeichert.
- Eine Erwähnung in der gesamten vorliegenden Beschreibung von „einer Ausführungsform”, „eine Ausführungsform” oder ähnlicher Sprache bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform enthalten ist. Das Erscheinen der Ausdrücke „in einer Ausführungsform”, „bei einer Ausführungsform” und ähnlicher Sprache in der gesamten vorliegenden Beschreibung kann sich somit immer auf dieselbe Ausführungsform beziehen, aber nicht unbedingt.
- Erwähnungen eines computerlesbaren Mediums können eine beliebige Form annehmen, die in der Lage ist, maschinenlesbare Anweisungen auf einer digitalen Verarbeitungsvorrichtung zu speichern. Ein computerlesbares Medium kann durch eine CD, eine DVD, ein Magnetband, ein Bernoulli-Laufwerk, einen magnetischen Datenträger, einer Lochkarte, Flash-Speicher, integrierte Schaltungen oder eine andere Digitalverarbeitungsvorrichtungs-Speichervorrichtung realisiert werden.
- Ferner können die hier offenbarten Merkmale, Strukturen oder Charakteristika auf eine beliebige geeignete Weise in einer oder mehreren Ausführungsform kombiniert werden. In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten angegeben, wie etwa Beispiele für Programmierung, Softwaremodule, Benutzerauswahlen, Netzwerktransaktionen, Datenbankanfragen, Datenbankstrukturen, Hardwaremodule, Hardwareschaltungen und Hardwarechips, um ein umfassendes Verständnis der offenbarten Ausführungsformen zu gewährleisten. Für Fachleute auf dem relevanten Gebiet ist jedoch erkennbar, dass die Lehren der Offenbarung ohne eine oder mehrere der spezifischen Einzelheiten oder mit anderen Verfahren, Komponenten, Materialien und so weiter ausgeübt werden können. In anderen Fällen werden wohlbekannte Strukturen, Materialien oder Operationen nicht im Detail gezeigt oder beschrieben, um eine Verschleierung von Aspekten der offenbarten Ausführungsformen zu vermeiden. Die hier gezeigten schematischen Flussdiagramme sind im Allgemeinen als logische Flussdiagramme dargelegt. Dementsprechend geben die abgebildete Reihenfolge und bezeichnete Schritte eine Ausführungsform des vorgestellten Verfahrens an. Es können andere Schritte und Verfahren erdacht werden, deren Funktion, Logik oder Wirkung bezüglich eines oder mehrerer Schritt oder Teile davon des dargestellten Verfahrens äquivalent sind. Zusätzlich werden das Format und Symbole, die verwendet werden, vorgesehen, um die logischen Schritte des Verfahrens zu erläutern, und sind nicht als Beschränkung des Schutzumfangs der Erfindung aufzufassen. Obwohl in den Flussdiagrammen verschiedene Pfeiltypen und Linientypen verwendet werden können, versteht sich, dass sie den Schutzumfang des entsprechenden Verfahrens nicht beschränken. Tatsächlich können bestimmte Pfeile oder andere Verbinder verwendet werden, um nur den logischen Fluss des Verfahrens anzugeben. Zum Beispiel kann ein Pfeil einen Warte- oder Überwachungszeitraum unspezifizierter Dauer zwischen aufgezählten Schritten des abgebildeten Verfahrens angeben. Zusätzlich kann die Reihenfolge, in der ein bestimmtes Verfahren auftritt, streng der Reihenfolge der entsprechenden gezeigten Schritte entsprechen oder auch nicht.
Claims (41)
- Verfahren, umfassend 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.
- Verfahren nach Anspruch 1, wobei jeder Grad der Persistenz einem oder mehreren Speicherbetriebsmitteln zur Verwendung beim Versorgen von E/A-Anforderungen, die den jeweiligen Grad der Persistenz aufweisen, entspricht.
- Verfahren nach Anspruch 1, wobei jeder Grad der Persistenz einer Konfiguration eines oder mehrerer Speicherbetriebsmittel entspricht, die zum Versorgen von E/A-Anforderungen verwendet werden, die den jeweiligen Grad der Persistenz aufweisen.
- Verfahren nach Anspruch 1, wobei ein oder mehrere der Grade der Persistenz dafür ausgelegt sind, einen Speichermodus zum Versorgen von E/A-Anforderungen des einen oder der mehreren Grade der Persistenz zu spezifizieren.
- Verfahren nach Anspruch 1, ferner umfassend 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.
- Verfahren nach Anspruch 1, wobei einer der Persistenzgrade eine redundante Speicherung auf zwei oder mehr Speicherbetriebsmitteln spezifiziert, wobei das Verfahren ferner Versorgen von E/A-Anforderungen, die den einen Persistenzgrad aufweisen, unter Verwendung der zwei oder mehr Speicherbetriebsmittel umfasst.
- Verfahren nach Anspruch 1, wobei einer der Persistenzgrade einem vergänglichen Cache-Speicherungsmodus entspricht, wobei das Verfahren ferner Speichern von Daten von E/A-Anforderungen, die den einen Persistenzgrad aufweisen, in einem Cache umfasst, ohne die Daten auf einem primären Speicherbetriebsmittel zu speichern.
- Verfahren nach Anspruch 1, wobei das Identifizieren der E/A-Anforderung Überwachen von E/A-Anforderungen in einem Speicherstapel umfasst.
- Computerprogrammprodukt, das ein computerlesbares Speichermedium umfasst, das computerbenutzbaren Programmcode speichert, der ausführbar ist, um Operationen auszuführen, wobei die Operationen Folgendes umfassen: 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 Charakteristika der E/A-Anforderung, wobei jeder der Persistenzgrade ein Speicherbetriebsmittel zur Verwendung zur Versorgung der E/A-Anforderung und/oder eine Konfiguration des Speicherbetriebsmittels und/oder einen Speichermodus spezifiziert; und Versorgen der E/A-Anforderung gemäß dem ausgewählten Persistenzgrad.
- Computerprogrammprodukt nach Anspruch 9, wobei ein erster der Persistenzgrade einen vergänglichen Cache-Speicherungsmodus spezifiziert und ein zweiter der Persistenzgrade einen Hindurchschreib-Cache-Speicherungsmodus spezifiziert.
- Computerprogrammprodukt nach Anspruch 9, wobei sich zwei oder mehr der Persistenzgrade mit Bezug auf zum Versorgen von E/A-Anforderungen der jeweiligen zwei oder mehr Persistenzgrade verwendete Speicherbetriebsmittel unterscheiden.
- Computerprogrammprodukt nach Anspruch 9, wobei sich zwei oder mehr der Persistenzgrade mit Bezug auf eine Speicherkonfiguration unterscheiden.
- Computerprogrammprodukt nach Anspruch 9, wobei sich zwei oder mehr der Persistenzgrade mit Bezug auf einen Cache-Speicherungsmodus unterscheiden.
- Computerprogrammprodukt nach Anspruch 9, wobei ein erster der Persistenzgrade einen vergänglichen Cache-Modus spezifiziert, 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 ein Cache-Betriebsmittel, und ohne Daten der Schreib-E/A-Anforderungen in primärer Speicherung zu schreiben, umfassen.
- Computerprogrammprodukt nach Anspruch 9, wobei ein erster der Persistenzgrade eine erste Fehlerkorrekturcode-Codierung spezifiziert und ein zweiter der Persistenzgrade eine zweite, andere Fehlerkorrekturcode-Codierung spezifiziert.
- Computerprogrammprodukt nach Anspruch 9, wobei die Operationen 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 zugordneten Anwendung und/oder eines Parameters der E/A-Anforderung umfassen.
- Vorrichtung, umfassend: ein Persistenzgradmodul, ausgelegt zum Wählen eines von mehreren adaptiven Persistenzgraden für jede von mehreren Speicheranforderungen auf der Basis von Charakteristika 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 Speicheranforderungs-Ausführungsmodul, ausgelegt zum Versorgen der Speicheranforderungen gemäß den adaptiven Persistenzgraden, die den Speicheranforderungen zugewiesen werden, durch Verwendung des Schnittstellenmoduls.
- Vorrichtung nach Anspruch 17, wobei das Persistenzgradmodul ausgelegt ist 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 (E/A).
- Vorrichtung nach Anspruch 17, wobei das Speicheranforderungs-Ausführungsmodul ausgelegt ist zum Cache-Speichern von Daten einer Speicheranforderung, die einen vergänglichen adaptiven Persistenzgrad aufweist, in einem Niemals-Schreiben-Cache-Modus.
- Vorrichtung nach Anspruch 17, wobei ein erster der adaptiven Persistenzgrade Speichern von Daten in einer ersten RAID-Konfiguration umfasst und ein zweiter der adaptiven Persistenzgrade Speichern von Daten in einer zweiten, anderen RAID-Konfiguration umfasst.
- Verfahren, umfassend: Identifizieren einer E/A-Anforderung, die an einen Backing-Store gerichtet ist; 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 die Daten in dem Backing-Store zu speichern, umfasst; und Cache-Speichern der Daten der identifizierten E/A-Anforderung in dem vergänglichen Cache-Modus.
- Verfahren nach Anspruch 21, ferner umfassend Bestätigen des Abschlusses der identifizierten E/A-Anforderung als Reaktion auf Speichern der Daten der identifizierten E/A-Anforderung im Cache und ohne die Daten in dem Backing-Store zu speichern.
- Verfahren nach Anspruch 21, ferner umfassend Auswählen des vergänglichen Cache-Modus als Reaktion auf Bestimmung, dass die Daten der identifizierten E/A-Anforderung zwischen Neustartoperationen nicht bewahrt werden müssen.
- Verfahren nach Anspruch 21, ferner umfassend 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.
- Verfahren nach Anspruch 21, ferner umfassend Ausräumen von vergänglichen Cache-Daten als Reaktion auf Migration zu einem neuen Virtuellmaschinen-Host, wobei Ausräumen der vergänglichen Cache-Daten Speichern von in dem vergänglichen Cache-Modus Cache-gespeicherten Daten auf dem Backing-Store umfasst.
- Verfahren nach Anspruch 21, ferner umfassend Behalten von Cache-Metadaten, die in dem vergänglichen Cache-Modus Cache-gespeicherte Daten betreffen, in einer virtuellen Maschine als Reaktion auf Migration der virtuellen Maschine von einem ersten Virtuellmaschinen-Host zu einem zweiten Virtuellmaschinen-Host.
- Verfahren nach Anspruch 26, ferner umfassend Auffüllen eines Virtuellmaschinen-Cache in dem zweiten Virtuellmaschinen-Host mit in dem vergänglichen Cache-Modus Cache-gespeicherten Daten, die in dem ersten Virtuellmaschinen-Host behalten werden.
- Computerprogrammprodukt, das ein computerlesbares Speichermedium umfasst, das computerbenutzbaren Programmcode speichern, der ausführbar ist, um Operationen auszuführen, wobei die Operationen 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 Bestätigen des Abschlusses der E/A-Anforderung als Reaktion auf Cache-Speichern der Daten der E/A-Anforderung in der Cache-Speicherung.
- Computerprogrammprodukt nach Anspruch 28, wobei das Cache-Speichern der Daten der E/A-Anforderung Ausführen einer oder mehrerer schneller-Pfad-E/A-Operationen umfasst, die die primäre Speicherung nicht beteiligen.
- Computerprogrammprodukt nach Anspruch 28, wobei die Operationen ferner Überwachen von E/A-Anforderungen in einem Speicherstapel umfassen, wobei das Cache-Speichern von Daten der E/A-Anforderung in der Cache-Speicherung Ausführen einer oder mehrerer schneller-Pfad-E/A-Operationen außerhalb des Speicherstapels umfasst.
- Computerprogrammprodukt nach Anspruch 28, wobei das Bestimmen, dass die E/A-Anforderung entbehrliche Daten betrifft, Anwenden eines Persistenzgradkriteriums auf eine Quellenkennung der E/A-Anforderung umfasst, wobei das Persistenzgradkriterium auf Dateiebenenwissen oder Anwendungsebenenwissen basiert.
- Computerprogrammprodukt nach Anspruch 28, wobei die E/A-Anforderung durch eine virtuelle Maschine erzeugt wird, wobei die Operationen ferner Schieben von Daten der virtuellen Maschine, die ausschließlich in der Cache-Speicherung gespeichert sind auf einen Fern-Virtuellmaschinen-Host als Reaktion auf den Transfer der virtuellen Maschine zu dem Fern-Virtuellmaschinen-Host umfassen.
- Computerprogrammprodukt nach Anspruch 28, wobei die Operationen ferner Transferieren von ausschließlich in der Cache-Speicherung gespeicherten Daten zu einem Fern-Virtuellmaschinen-Host als Reaktion auf eine Anforderung von einem Fern-Virtuellmaschinen-Host umfassen.
- Computerprogrammprodukt nach Anspruch 28, wobei die Operationen ferner Behalten eines ausschließlich in der Cache-Speicherung gespeicherten Daten zugordneten Cache-Tags als Reaktion auf Migration der virtuellen Maschine zu einem anderen Virtuellmaschinen-Host umfassen.
- Computerprogrammprodukt nach Anspruch 34, wobei die Operationen ferner Transferieren von ausschließlich in der Cache-Speicherung gespeicherten Daten zu einem Virtuellmaschinen-Cache des Fern-Virtuellmaschinen-Hosts umfassen, wobei das Transferieren Identifizieren von Daten der virtuellen Maschine, die ausschließlich in der Cache-Speicherung gespeichert werden, auf der Basis einer Virtuellmaschinen-Kennung eines Cache-Verwaltungssystems der virtuellen Maschine umfasst.
- Vorrichtung, 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 eines oder mehrerer Charakteristika der abgefangenen E/A-Anforderung; und 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 im vergänglichen Cache-Modus Schreiben der Daten nur in den Cache und ohne Schreiben der Daten in den Backing-Store umfasst.
- Vorrichtung nach Anspruch 36, wobei das Persistenzgradmodul ausgelegt ist zum Identifizieren des Cache-Modus der abgefangenen 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.
- Vorrichtung nach Anspruch 36, wobei das Cache-Verwaltungssystem ausgelegt ist zum Bestätigen des Abschlusses von in dem vergänglichen Cache-Modus Cache-gespeicherten E/A-Anforderungen 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.
- Vorrichtung nach Anspruch 36, ferner umfassend: ein Cache-Retentionsmodul, ausgelegt zum Behalten von im vergänglichen Cache-Modus in den Cache zugelassenen Daten einer virtuellen Maschine in einem ersten Virtuellmaschinen-Host als Reaktion auf Bestimmung, dass die virtuelle Maschine zu einem Fern-Virtuellmaschinen-Host transferiert wird; und ein Cache-Transfermodul, ausgelegt zum Transferieren der im vergänglichen Cache-Modus in den Cache zugelassenen Daten der virtuellen Maschine zu dem Fern-Virtuellmaschinen-Host.
- Vorrichtung nach Anspruch 39, die ferner ein Cache-Speichermodul umfasst, das dafür ausgelegt ist, einen Virtuellmaschinen-Cache in einem Fern-Virtuellmaschinen-Host mit aus dem ersten Virtuellmaschinen-Host transferierten Daten aufzufüllen.
- Vorrichtung nach Anspruch 36, wobei das Cache-Verwaltungsmodul dafür ausgelegt ist, Daten einer virtuellen Maschine, die im vergänglichen Cache-Modus Cache-gespeichert sind, als Reaktion auf den Transfer der virtuellen Maschine zu einem Fern-Virtuellmaschinen-Host auf ein oder mehrere primäre Speicherbetriebsmittel auszuräumen.
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,835 | 2013-03-14 | ||
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,358 US10346095B2 (en) | 2012-08-31 | 2013-03-14 | Systems, methods, and interfaces for adaptive cache persistence |
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 true DE112013004250T5 (de) | 2015-07-09 |
DE112013004250B4 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)
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 |
TWI578836B (zh) * | 2013-05-10 | 2017-04-11 | 瑞雷2股份有限公司 | 多租戶虛擬存取點-網路資源虛擬化之技術 |
US9507607B2 (en) * | 2013-05-10 | 2016-11-29 | Vmware, Inc. | Virtual persistence |
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 |
US9570175B2 (en) | 2013-08-05 | 2017-02-14 | Jonker Llc | Incrementally programmable non-volatile memory |
US10789136B1 (en) * | 2013-08-23 | 2020-09-29 | Acronis International Gmbh | Granular recovery using hot-plug virtual disks |
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 |
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 |
US9229855B2 (en) * | 2013-11-12 | 2016-01-05 | Skyera, Llc | Apparatus and method for routing information 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 |
JP6369069B2 (ja) * | 2014-03-17 | 2018-08-08 | 日本電気株式会社 | 情報処理装置、情報処理方法、及び情報処理プログラム |
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 |
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 | 富士通株式会社 | データ移行方法及びデータ移行装置 |
US9792050B2 (en) * | 2014-08-13 | 2017-10-17 | 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 |
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 |
US10061738B2 (en) | 2014-09-30 | 2018-08-28 | Jonker Llc | 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 |
US10713175B2 (en) * | 2015-12-02 | 2020-07-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and memory availability managing module for managing availability of memory pages |
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 | 주식회사 애포샤 | 캐싱 장치 및 방법 |
CN109032838B (zh) * | 2018-06-28 | 2022-07-15 | 上海爱数信息技术股份有限公司 | 虚拟机备份恢复数据一致性的自动校验方法 |
US10656869B1 (en) * | 2018-06-28 | 2020-05-19 | Amazon Technologies, Inc. | Performance-based volume replica migration |
US11573962B2 (en) * | 2018-10-19 | 2023-02-07 | Oracle International Corporation | Dynamic performance tuning based on implied data characteristics |
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 |
US10860078B2 (en) * | 2018-10-25 | 2020-12-08 | Dell Products, L.P. | Managing power request during cluster operations |
US11048523B2 (en) | 2018-10-25 | 2021-06-29 | Dell Products, L.P. | Enabling software sensor power operation requests via baseboard management controller (BMC) |
US11126486B2 (en) | 2018-10-25 | 2021-09-21 | Dell Products, L.P. | Prediction of power shutdown and outage incidents |
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 |
US11263180B2 (en) * | 2019-02-23 | 2022-03-01 | National Tsing Hua University | Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device |
EP3938894B1 (de) | 2019-03-15 | 2023-08-30 | INTEL Corporation | Multitile-speicherverwaltung zur erkennung von tile-übergreifendem zugriff, mit bereitstellung einer multi-tile-inferenzskalierung und bereitstellung einer optimalen seitenmigration |
WO2020190796A1 (en) * | 2019-03-15 | 2020-09-24 | Intel Corporation | Systems and methods for cache optimization |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
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 |
CN114365097A (zh) * | 2019-08-27 | 2022-04-15 | 美光科技公司 | 受管理存储器系统中的写入缓冲器控制 |
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 |
Family Cites Families (413)
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 |
EP0747825B1 (de) | 1995-06-06 | 2001-09-19 | Hewlett-Packard Company, A Delaware Corporation | SDRAM-Datenzuweisungsanordnung und -verfahren |
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) |
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
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 |
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 |
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 |
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 |
US6801979B1 (en) | 1995-07-31 | 2004-10-05 | Lexar Media, Inc. | Method and apparatus for memory control circuit |
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 |
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 |
US8171203B2 (en) | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
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 | 삼성전자주식회사 | 플래시 메모리와 그 제어 방법 |
WO2001031512A2 (en) | 1999-10-25 | 2001-05-03 | Infolibria, Inc. | Fast indexing of web objects |
DE60004463D1 (de) | 1999-10-25 | 2003-09-18 | Sun Microsystems Inc | Speichersystem mit Unterstützung von Dateistufenzugriffen und Blockstufenzugriffen |
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 |
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 |
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 |
US6671757B1 (en) | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
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 |
AU2001246799A1 (en) | 2000-04-18 | 2001-10-30 | 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 |
JP3951918B2 (ja) | 2000-06-23 | 2007-08-01 | インテル・コーポレーション | 不揮発性キャッシュ |
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 |
US20020167945A1 (en) | 2000-11-22 | 2002-11-14 | Yeshik Shin | Method and system for packet ordering based on packet type |
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 |
AU2002305315A1 (en) | 2001-05-08 | 2002-11-18 | International Business Machines Corporation | 8b/10b encoding and decoding for high speed applications |
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 |
US6986015B2 (en) * | 2001-12-10 | 2006-01-10 | Incipient, Inc. | Fast path caching |
US7013379B1 (en) | 2001-12-10 | 2006-03-14 | Incipient, Inc. | I/O primitives |
US7173929B1 (en) | 2001-12-10 | 2007-02-06 | Incipient, Inc. | Fast path for performing data operations |
JP4061272B2 (ja) | 2002-01-09 | 2008-03-12 | 株式会社ルネサステクノロジ | メモリシステム及びメモリカード |
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 |
US7085879B2 (en) | 2002-02-27 | 2006-08-01 | Microsoft Corporation | Dynamic data structures for tracking data stored in a flash memory device |
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 |
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 |
US7093101B2 (en) | 2002-11-21 | 2006-08-15 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
US7121639B2 (en) | 2002-12-02 | 2006-10-17 | Silverbrook Research Pty Ltd | Data rate equalisation to account for relatively different printhead widths |
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 |
WO2005065084A2 (en) | 2003-11-13 | 2005-07-21 | Commvault Systems, Inc. | System and method for providing encryption 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 |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7631138B2 (en) | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
US7356651B2 (en) | 2004-01-30 | 2008-04-08 | Piurata Technologies, Llc | Data-aware cache state machine |
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 |
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 |
EP1745394B1 (de) | 2004-04-26 | 2009-07-15 | 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 |
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 |
US7203815B2 (en) | 2004-07-30 | 2007-04-10 | International Business Machines Corporation | Multi-level page cache for enhanced file system performance via read ahead |
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 |
US20060075057A1 (en) | 2004-08-30 | 2006-04-06 | International Business Machines Corporation | Remote direct memory access system and method |
EP1786205A1 (de) | 2004-08-30 | 2007-05-16 | Matsushita Electric Industrial Co., Ltd. | Recorder |
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 |
JP2008523468A (ja) | 2004-12-06 | 2008-07-03 | テイアック エアロスペース テクノロジーズ インコーポレイテッド | 不揮発記録媒体消去システム及び方法 |
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 |
US7694065B2 (en) | 2004-12-28 | 2010-04-06 | Sap Ag | Distributed cache architecture |
US20060143256A1 (en) | 2004-12-28 | 2006-06-29 | Galin Galchev | Cache region concept |
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 | 삼성전자주식회사 | 반도체 디스크 제어 장치 |
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 |
US20060184718A1 (en) | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct file data programming and deletion 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 |
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 |
US7747837B2 (en) | 2005-12-21 | 2010-06-29 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
US20070143566A1 (en) | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with data alignment in a directly mapped file storage system |
US7440455B2 (en) | 2005-12-22 | 2008-10-21 | Level 3 Communications, Llc | Registration of multiple VoIP devices |
US7831783B2 (en) | 2005-12-22 | 2010-11-09 | Honeywell International Inc. | Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems |
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 |
US20070233937A1 (en) | 2006-03-31 | 2007-10-04 | Coulson Richard L | Reliability of write operations to a non-volatile memory |
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 |
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 | 株式会社日立製作所 | 計算機システム、管理計算機及びプログラム配布方法 |
US20070294676A1 (en) | 2006-06-19 | 2007-12-20 | Ewan Ellis Mellor | 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 | 엘지전자 주식회사 | 메모리 접근 제어 장치 및 방법 |
JP4932390B2 (ja) | 2006-08-31 | 2012-05-16 | 株式会社日立製作所 | 仮想化システム及び領域割当て制御方法 |
US7870306B2 (en) | 2006-08-31 | 2011-01-11 | Cisco Technology, Inc. | Shared memory message switch and cache |
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 |
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 |
KR20090102789A (ko) | 2006-12-06 | 2009-09-30 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법 |
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 |
US8429677B2 (en) | 2007-04-19 | 2013-04-23 | Microsoft Corporation | Composite solid state drive identification and optimization technologies |
US9207876B2 (en) | 2007-04-19 | 2015-12-08 | Microsoft Technology Licensing, Llc | Remove-on-delete technologies for solid state drive optimization |
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 | 삼성전자주식회사 | 쓰기 버퍼를 포함하는 저장장치 및 그 제어 방법 |
CA2704537C (en) | 2007-11-05 | 2015-10-13 | Nokia Siemens Networks Oy | Buffer status reporting apparatus, system, and method |
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 |
US8127076B2 (en) | 2008-06-06 | 2012-02-28 | Pivot3 | Method and system for placement of data on a storage device |
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 | 株式会社東芝 | データ制御装置、ストレージシステムおよびプログラム |
US20100125695A1 (en) | 2008-11-15 | 2010-05-20 | Nanostar Corporation | Non-volatile memory storage system |
US20100017556A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporationm U.S.A. | Non-volatile memory storage system with two-stage controller architecture |
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 |
US20100262979A1 (en) | 2009-04-08 | 2010-10-14 | Google Inc. | Circular command queues for communication between a host and a data storage device |
US8447918B2 (en) | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
US20100262773A1 (en) | 2009-04-08 | 2010-10-14 | Google Inc. | Data striping in a flash memory data storage device |
US8103822B2 (en) * | 2009-04-26 | 2012-01-24 | Sandisk Il Ltd. | Method and apparatus for implementing a caching policy for non-volatile memory |
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 |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US8825685B2 (en) * | 2009-11-16 | 2014-09-02 | Symantec Corporation | Selective file system caching based upon a configurable cache map |
EP2513821A4 (de) | 2009-12-17 | 2015-05-27 | Nat Ict Australia Ltd | Zuverlässiges schreiben von datenbankprotokolldaten |
US9021046B2 (en) | 2010-01-15 | 2015-04-28 | Joyent, Inc | Provisioning server resources in a cloud resource |
CN102792289B (zh) | 2010-03-08 | 2015-11-25 | 惠普发展公司,有限责任合伙企业 | 数据存储装置 |
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 |
JP5684815B2 (ja) * | 2010-04-30 | 2015-03-18 | 株式会社日立製作所 | 計算機システム及びその制御方法 |
WO2011153478A2 (en) * | 2010-06-04 | 2011-12-08 | Flashsoft Corporation | 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 |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
KR20120097136A (ko) | 2011-02-24 | 2012-09-03 | 삼성전자주식회사 | 가상화 환경에서의 메모리 풀 관리 |
WO2012129191A2 (en) * | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US9563555B2 (en) * | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
EP2692110B1 (de) | 2011-03-29 | 2016-05-11 | Brainlab AG | Verarbeitung von digitalen daten, insbesondere medizinischen daten durch eine virtuelle maschine |
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 |
US10073656B2 (en) | 2012-01-27 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for storage virtualization |
US10359972B2 (en) | 2012-08-31 | 2019-07-23 | Sandisk Technologies Llc | Systems, methods, and interfaces for adaptive persistence |
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 |
-
2013
- 2013-03-14 US US13/829,835 patent/US10359972B2/en active Active
- 2013-03-14 US US13/829,358 patent/US10346095B2/en active Active
- 2013-08-29 WO PCT/US2013/057366 patent/WO2014036307A1/en active Application Filing
- 2013-08-29 JP JP2015530057A patent/JP2015535355A/ja active Pending
- 2013-08-29 DE DE112013004250.9T patent/DE112013004250B4/de active Active
- 2013-08-29 CN CN201380053149.XA patent/CN104903872B/zh active Active
- 2013-08-29 KR KR1020157007756A patent/KR101841997B1/ko active IP Right Grant
-
2014
- 2014-04-25 US US14/262,581 patent/US9058123B2/en active Active
-
2018
- 2018-04-05 JP JP2018073113A patent/JP6709245B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20140237147A1 (en) | 2014-08-21 |
US20140068197A1 (en) | 2014-03-06 |
US20140068183A1 (en) | 2014-03-06 |
CN104903872A (zh) | 2015-09-09 |
KR101841997B1 (ko) | 2018-03-27 |
JP2015535355A (ja) | 2015-12-10 |
DE112013004250B4 (de) | 2022-08-25 |
JP6709245B2 (ja) | 2020-06-10 |
WO2014036307A1 (en) | 2014-03-06 |
CN104903872B (zh) | 2019-03-29 |
JP2018125025A (ja) | 2018-08-09 |
US9058123B2 (en) | 2015-06-16 |
US10359972B2 (en) | 2019-07-23 |
KR20150081424A (ko) | 2015-07-14 |
US10346095B2 (en) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112013004250B4 (de) | Vorrichtung, Verfahren und Computerprogrammprodukt für adaptive Persistenz | |
US9811276B1 (en) | Archiving memory in memory centric architecture | |
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 | |
US11775432B2 (en) | Method and system for storage virtualization | |
US9026737B1 (en) | Enhancing memory buffering by using secondary storage | |
Rho et al. | {FStream}: Managing flash streams in the file system | |
US7653832B2 (en) | Storage array virtualization using a storage block mapping protocol client and server | |
US9697219B1 (en) | Managing log transactions in storage systems | |
US9697130B2 (en) | Systems and methods for storage service automation | |
US9135123B1 (en) | Managing global data caches for file system | |
US8307154B2 (en) | System and method for performing rapid data snapshots | |
US9760574B1 (en) | Managing I/O requests in file systems | |
US9959074B1 (en) | Asynchronous in-memory data backup system | |
US20070260842A1 (en) | Pre-allocation and hierarchical mapping of data blocks distributed from a first processor to a second processor for use in a file system | |
US20140012940A1 (en) | Systems, Methods and Apparatus for a Virtual Machine Cache | |
US20140074776A1 (en) | Re-trim of free space within vhdx | |
KR20200121372A (ko) | 하이브리드 메모리 시스템 | |
US9519590B1 (en) | Managing global caches in data storage systems | |
KR20200117032A (ko) | 하이브리드 메모리 시스템 | |
US20170017507A1 (en) | Storage, computer, and control method therefor | |
US20180316758A1 (en) | Method and apparatus for logical mirroring to a multi-tier target node | |
US11947799B1 (en) | Systems and methods for using the TRIM command with solid state devices | |
US11221985B2 (en) | Metadata space efficient snapshot operation in page storage | |
US11782842B1 (en) | Techniques for reclaiming dirty cache pages |
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 |