DE202008018572U1 - Speichersystem - Google Patents
Speichersystem Download PDFInfo
- Publication number
- DE202008018572U1 DE202008018572U1 DE202008018572.6U DE202008018572U DE202008018572U1 DE 202008018572 U1 DE202008018572 U1 DE 202008018572U1 DE 202008018572 U DE202008018572 U DE 202008018572U DE 202008018572 U1 DE202008018572 U1 DE 202008018572U1
- Authority
- DE
- Germany
- Prior art keywords
- data
- memory
- modules
- memory modules
- module
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/0608—Saving storage space on storage systems
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0653—Monitoring storage devices or systems
-
- 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/0688—Non-volatile semiconductor memory arrays
-
- 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
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/26—Accessing multiple arrays
- G11C29/28—Dependent multiple arrays, e.g. multi-bit arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B2220/00—Record carriers by type
- G11B2220/60—Solid state media
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)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
Speichersystem, aufweisend:
eine Mehrzahl von Speichermodulen, wobei jedes Speichermodul zum Schreiben und Lesen von Daten geeignet ist, wobei jedes Speichermodul derart konfiguriert ist, dass Daten, die einen Datenblock und Fehlerkorrekturcodedaten für den Datenblock aufweisen, in einer Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen gespeichert werden; und
eine Speichersteuerung zum Lesen von Daten aus der Mehrzahl von Speichermodulen und zum Schreiben von Daten auf die Mehrzahl von Speichermodulen,
dadurch gekennzeichnet, dass die Speichersteuerung konfiguriert ist zum:
Anfordern des gespeicherten Datenblocks und der Fehlerkorrekturcodedaten für die gespeicherten Daten von der Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen; und
Ausgeben des Datenblocks unter Verwendung von entweder:
(a) der Fehlerkorrekturcodedaten und eines hinreichenden Teils des gespeicherten Datenblocks, um den verbleibenden Teil des gespeicherten Datenblocks unter Verwendung der Fehlerkorrekturcodedaten zu berechnen; oder
(b) der gespeicherten Daten des Datenblocks,
je nachdem, ob die Speichersteuerung (a) oder (b) zuerst erhält.
eine Mehrzahl von Speichermodulen, wobei jedes Speichermodul zum Schreiben und Lesen von Daten geeignet ist, wobei jedes Speichermodul derart konfiguriert ist, dass Daten, die einen Datenblock und Fehlerkorrekturcodedaten für den Datenblock aufweisen, in einer Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen gespeichert werden; und
eine Speichersteuerung zum Lesen von Daten aus der Mehrzahl von Speichermodulen und zum Schreiben von Daten auf die Mehrzahl von Speichermodulen,
dadurch gekennzeichnet, dass die Speichersteuerung konfiguriert ist zum:
Anfordern des gespeicherten Datenblocks und der Fehlerkorrekturcodedaten für die gespeicherten Daten von der Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen; und
Ausgeben des Datenblocks unter Verwendung von entweder:
(a) der Fehlerkorrekturcodedaten und eines hinreichenden Teils des gespeicherten Datenblocks, um den verbleibenden Teil des gespeicherten Datenblocks unter Verwendung der Fehlerkorrekturcodedaten zu berechnen; oder
(b) der gespeicherten Daten des Datenblocks,
je nachdem, ob die Speichersteuerung (a) oder (b) zuerst erhält.
Description
- Diese Anmeldung beansprucht Begünstigung durch die provisorische U.S.-Anmeldung mit der Anmeldungsnummer 60/920,737, die am 29. März 2007 eingereicht wurde und die durch Bezugnahme in diese Beschreibung aufgenommen wird.
- TECHNISCHER BEREICH
- Die vorliegende Anmeldung betrifft ein Computerspeichersystem.
- HINTERGRUND
- Computerspeichersysteme können entweder vom nicht-flüchtigen oder flüchtigen Typ sein. Beispiele nicht-flüchtiger Speichertypen sind Magnetkerne, Plattenlaufwerke, Bandlaufwerke und Halbleiter-Flash-Speicher. Flüchtige Speichertypen können Halbleiterspeicher wie beispielsweise dynamische RAM-Speicher (DRAM) oder dergleichen sein. Flüchtige Speichertypen haben in der Regel sowohl für das Lesen als auch für das Schreiben von Daten schnelle Zugriffszeiten und kommen als Haupt- oder Cachespeicher in Rechnern zum Einsatz. Die Daten werden in solchen Speichern mit Mitteln gehalten, die eine Energieversorgung erfordern, und die darin gespeicherte Information kann verlorengehen, wenn die Energieversorgung unterbrochen wird. Systeme, die flüchtige Speicher verwenden, verfügen üblicherweise über eine zusätzliche Energieversorgung, wobei es sich um eine kapazitatives Speichervorrichtung, die zur Überbrückung kurzzeitiger Unterbrechungen der Energieversorgung geeignet ist, handeln kann, oder um eine Notstromversorgung, bei der Batterien, Generatoren oder dergleichen zum Einsatz kommen, um Daten längerfristig zu halten.
- Nicht-flüchtige Speichervorrichtungen wie beispielsweise Platten-Band- oder Flash-Speicher halten die gespeicherten Daten selbst dann, wenn die Energiequelle von dem Gerät entfernt wird, und werden häufig zur Sicherung flüchtiger Datenspeichervorrichtungen verwendet und auch bei einer längerfristigen Datenspeicherung, wenn die Kosten oder die Zuverlässigkeit einer Bereitstellung einer kontinuierlichen Energiezufuhr nicht praktikabel sind. Hinzu kommt, dass angesichts dessen, dass größere Datenmengen in den nicht-flüchtigen Datenspeichergeräten gespeichert werden, die entwickelten Technologien sich an der Kostenreduzierung per gespeichertem Bit und weniger an der Verminderung der Zugriffsgeschwindigkeit orientiert haben. Daher verwenden viele Rechnersysteme eine Vielzahl von Speicherarten, um die unterschiedlichen Funktionen zu implementieren, wobei sofort benötigte Daten unter Umständen auf flüchtige Weise, unterstützt durch nicht-flüchtiges Sichern, gespeichert werden, während Daten, auf die weniger häufig zugegriffen wird, wie auch große Datengruppierungen in einem nicht-flüchtigen Speicher abgelegt werden.
- Rechnerdatenbanksysteme, die als Rechenzentren bezeichnet werden können, oder verteilte Rechnersysteme wie beispielsweise das Internet und die damit assoziierten Speichergeräte sind in der Lage, riesige Datenmengen zu speichern. Heutzutage können solche Datenmengen 1000 Terabyte (TB) übersteigen; es wird davon ausgegangen, dass diese Zahl weiter ansteigen wird. Viele dieser Datensätze sind erheblich umfangreicher als die Kapazität eines flüchtigen Speichers für einen Sofortzugriff, und die Reaktionszeit der Server in einem Rechenzentrum beim Bedienen einer Anfrage von einem Client-Computer kann zu einem ernsthaften Engpass hinsichtlich der Systemleistung werden. Diese Beschränkung ist großenteils auf die Latenz nicht-flüchtiger Speichermedien beim Datenzugriff zurückzuführen. Bei Bandsystemen muss das lineare Band gespult werden werden, so dass der auszulesende oder zu schreibende Datenbereich am Lese- oder Schreibkopf positioniert ist. Ähnlich muss der Kopf bei einem Plattenlaufwerk derart positioniert sein, dass er über der Datenspur ist, wo sich der gewünschte Datensektor befindet, und der Laufwerkcontroller wartet, bis der Abschnitt unter den positionierten Kopf gedreht ist. Jede dieser Operationen ist erheblich langsamer als das Lesen oder Beschreiben flüchtiger Speichervorrichtungen. Einschränkungen dieser Art sind besonders schwerwiegend, wenn einzelne Datenspeicherplätze an einer zufälligen Speicherstelle innerhalb der Datenbank zu lesen, zu schreiben oder zu modifizieren sind.
- Die Zeit, die zwischen einer Anfrage nach gespeicherten Daten im Speicher und dem Aufrufen solcher Daten aus dem Speicher liegt, kann man als Latenz bezeichnen. Flash-Speicher, die zu den derzeit verwendeten nicht-flüchtigen Speichertechnologien gehören, haben eine niedrigere Latenz als mechanische Geräte, wie beispielsweise Plattenlaufwerke, aber eine signifikant höhere Latenz als aktuell verwendete flüchtige Speicherarten. Der Preis von Flash-Speichern und ähnlichen Solid-State-Technologien regelt sich von je her durch das als das Mooresche Gesetz bekannte Prinzip, was den allgemeinen Gerätetrend einer Kapazitätsverdopplung bei einer Preishalbierung im Verlauf von 18 Monaten postuliert. Demnach wird der Kostenaufwand bei der Datenspeicherung in einem Flash-Speicher anstatt beispielsweise auf einem Plattenlaufwerk erwartungsgemäß bald Parität erreichen.
- Trotz bedeutend geringerer Latenz als dies bei einem Festplattengerät der Fall ist, unterliegt der Flash-Speicher aufgrund des betriebsspezifischen Designs und Verfahrens aktuell verfügbarer Speichermodule Beschränkungen hinsichtlich der Zugriffszeiten. Der Begriff Flash-Speicher ist ein generischer Ausdruck, was bedeutet, dass es möglich ist, eine Vielzahl von Festkörpergerätetypen als Flash-Speicher aufzufassen. Ursprünglich gab es einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), gefolgt von weiteren Entwicklungen, die unter den Bezeichnungen NOR-Flash, NAND-Flash und dergleichen bekannt sind. Jede dieser Technologien verfügt über ein anderes Design und einen anderen Aufbau sowie unterschiedliche Attribute im Hinblick auf das Lesen und Schreiben von Daten. Das bedeutet, es können Einschränkungen vorliegen bei der Mindestgröße eines Datenblocks, der entweder gelesen oder geschrieben werden kann (beispielsweise Datenwort und -seite oder Datensektor), oder Unterschiede im Hinblick auf die Zeit, die benötigt wird, um Daten zu lesen oder zu schreiben. In vielen Fällen ist die für das Lesen oder Schreiben von Daten aufgewendete Zeit nicht deterministisch und kann in einem breiten Rahmen variieren. Der Speichercontroller oder ein anderes solches Gerät muss noch unerledigte Anfragen verfolgen, bis sie abgearbeitet sind; es ist diese Anforderung, die die Datenlatenz zu einer variablen Größe macht, die den Systembetrieb insgesamt verlangsamen und die Komplexität von Hardware und Software, die zur Speicherverwaltung eingesetzt werden, erhöhen kann. Hinzu kommt, dass davon ausgegangen wird, dass die Betriebsdauer eines Flash-Speichergeräts einem Verschleißmechanismus unterworfen ist und in Lese-, Schreib- (auch als „Programm” bezeichnet, wenn ein Bezug zu FLASH-Speichern hergestellt wird) oder Löschzyklen gemessen wird. Vorliegend wird der Begriff „Schreiben” im Sinne von „Programm” verwendet, wenn ein FLASH-Speicher verwendet wird.
- Selbst wenn die Anzahl der Zyklen im Verlauf einer Betriebsdauer für jeden Ort oder Sektor groß sein kann, ist eine Kalkulation möglich, wonach aufgezeigt werden kann, dass sowohl in der Praxis als auch in möglichen, potenziell pathologischen Situationen die Betriebsdauer individueller Komponenten großer Speicher, die aus Flash-Geräten gebildet werden, ausreichend kurz ist, dass erhebliche Anstrengungen unter Umständen für einen Speicherausgleich sowie eine Fehlerkennung und -korrektur erforderlich sind sowie die Markierung schlechter Datenblöcke und dergleichen.
- Das RAID-Konzept (engl.: Redundant Arrays of Independent/Inexpensive Disks = redundante Anordnungen unabhängiger/kostengünstiger Plattenspeicher) ist mindestens so alt wie eine von David Patterson, Garth Gibson und Randy H. Katz im Jahr 1988 verfasste Arbeit. Das RAID-Konzept ermöglicht es, Plattenspeichersysteme derart anzuordnen, dass durch das Hinzufügen von Redundanzen ein Schutz gegen den Verlust von Daten, die auf denselben enthalten sind, geboten wird. Bei einer ordnungsgemäß konfigurierten RAID-Architektur kommt es aufgrund des Verlusts eines einzelnen Plattenspeichers zu keiner Beeinträchtigung der Kapazität, auf gespeicherte Daten zuzugreifen oder diese zu rekonstruieren. Die mittlere Betriebsdauer bis zum Ausfall (engl.: Mean Time Between Failure, MTBF) der Plattenspeicheranordnung ohne RAID ist gleich dem MTBF eines Einzellaufwerks geteilt durch die Anzahl der Laufwerke in der Anordnung, denn der Verlust jedes Laufwerks führt zu einem Datenverlust. Daher wäre die MTBF einer Anordnung von Plattenspeicherlaufwerken für viele Anwendungsanforderungen zu gering. Jedoch können Plattenspeicheranordnungen durch das verschiedenartige redundante Speichern von Informationen fehlertolerant gemacht werden.
- Beispielsweise sind RAID-3, RAID-4 und RAID-5 allesamt Variationen eines Motivs. Bei dem Motiv handelt es sich um paritätsgestützte RAIDs. Anstatt ein vollständiges Duplikat der Daten, wie dies bei RAID-1 der Fall ist, aufzubewahren, werden die Daten über verschiedene Plattenspeicher verteilt und ein zusätzlicher Plattenspeicher hinzugefügt. Die Daten auf dem zusätzlichen Laufwerk können jeweils basierend auf den in den anderen Plattenspeichern enthaltenen Daten (unter Verwendung von booleschen XORs) berechnet werden. Geht ein beliebiger einzelner Plattenspeicher eines Satzes von Plattenspeichern verloren, so ist es möglich, die auf jenem Plattenspeicher gespeicherten Daten mittels Berechnungen, die auf der Grundlage der auf den übrigen Plattenspeichern enthaltenen Daten durchgeführt werden, wiederherzustellen. Diese Realisierungen sind kostengünstiger als RAID-1, denn sie erfordern nicht den 100%igen plattentechnischen Aufwand, der bei RAID-1 erforderlich ist. Da es sich bei den Daten auf den Plattenspeichern um berechnete Daten handelt, kommt es jedoch zu einigen leistungsspezifischen Implikationen im Zusammenhang mit dem Schreiben und Wiederherstellen von Daten, nachdem ein Plattenspeicher verloren gegangen ist. Viele kommerzielle Realisierungen von Paritäts-RAID verwenden Cachespeicher für den entschärfenden Umgang mit den Leistungsproblematiken.
- Bei einer RAID-4 Plattenspeicheranordnung gibt es einen Satz von Datenplattenspeichern, der üblicherweise 4 oder 5 Platten umfasst, plus einen Extraplattenspeicher zum Speichern der Paritätsinformationen für die Daten auf den anderen Speicherplatten. Da alles Einspeichern jeweils zur Aktualisierung der Paritätsspeicherplatte führt, wird diese Platte zu einem Staupunkt, aufgrund dessen alle Schreibaktivitäten für die gesamte Anordnung sich verlangsamen.
- Ein fundamentaler Aspekt von RAID ist das „Striping” (d. h. das In-Streifen-Zerlegen), ein Verfahren zur Verkettung mehrerer Laufwerke (Speichereinheiten), um diese zu einer logischen Speichereinheit zusammenzufassen. Beim Striping ist vorgesehen, dass der Speicherplatz jedes Laufwerks in sogenannte „Streifen” (engl.: stripes) aufgeteilt wird, die so klein sein können, dass sie nur einen Sektor (beispielsweise 512 Byte) oder so groß, dass sie mehrere Megabyte enthalten. Diese Streifen werden dann verschachtelt oder überlappt (engl.: „interleaving”), so dass der zusammengelegte Plattenplatz der Streifen jedes Laufwerks in dem Streifen umfasst. Die Art der Anwendungsumgebung, I/O oder datenintensiv, ist eine entwicklungstechnische Überlegung, mittels der bestimmt wird, ob große oder kleine Streifen verwendet werden.
- RAID-5 kann unter Verwendung derselben Hardwarekonfiguration wie bei RAID-4 realisiert werden. Im Fall von RAID-4 wird der Paritätsblock für jeden der Streifen auf demselben Plattenspeicher gespeichert, so dass man einen sogenannten Paritätsplattenspeicher erhalten kann. Im Fall von RAID-5 wird der Paritätsblock für jeden Streifen auf einem Plattenspeicher gespeichert, der Teil des Streifens ist, jedoch sind die Paritätsblöcke derart verteilt, dass sie im Wesentlichen einheitlich über mehrere Plattenspeicher, aus denen sich das Speichersystem zusammensetzt, verteilt sind. RAID-6 ist eine weitere Verbesserung der Datenprojektion, wobei es um die Berechnung einer Parität über mehrere Streifen geht, beispielsweise unter Verwendung der Spalten der Streifen als Grundlage für die Berechnung der Parität.
- Die Leistung einer RAID 4 Anordnung für Leseaktionen (engl.: „Reads”) vorteilhaft sein (ebenso wie Level 0). Bei Schreibaktionen (engl.: „Writes”) ist es jedoch erforderlich, dass die Paritätsdaten jedes Mal aktualisiert werden. Damit werden insbesondere kleine, zufällige Writes entschleunigt, obwohl große oder sequentielle Writes recht schnell ablaufen. Da nur ein Laufwerk in einer Anordnung redundante Daten speichert, kann der Kostenaufwand je Megabyte einer RAID 4-Anorndnung recht niedrig sein. Die Verteilung der Daten über mehrere Plattenspeicher kann entweder mittels einer dedizierten Hardware oder Software verwaltet werden. Zusätzlich existieren Hybridformen von RAID-Architekturen, die teilweise auf eine Software gestützte und teilweise auf eine Hardware gestützte Lösungen sind.
- Eine konzeptionelle Darstellung der Organisation von Daten und Paritätsdaten zur Fehlerkorrektur ist in der
1 abgebildet, wo die Daten in einem Block A als Datensätze A1, A2 and A3 über drei Plattenspeicher gestreift sind; ein Paritätsdatensatz Ap befindet sich auf der vierten Platte, und wobei der Paritätsdatensatz Ap in der Regel als exklusiv-ODER (XOR) der Datensätze A1, A2 und A3 berechnet wird. Dem Fachmann ist wohl bekannt, dass jeder der Datensätze A1, A2, A3 oder Ap sodann aus den drei anderen Datensätzen rekonstruiert werden kann. Deshalb kann ein Fehler in einem der Datensätze, der sich beispielsweise als Ausfall einer der Plattenspeicher niederschlägt, mittels Verwendung der anderen Datensätze korrigiert werden. - Ein Fehlerkorrekturcode (engl.: error-correcting code, ECC) ist ein Algorithmus, bei dem jedes Datensignal mit spezifischen Berechnungsregeln konform ist, so dass jedes Abweichen von dieser Berechnung in dem empfangenen oder wiederhergestellten Signal, was einen solchen Fehler darstellt, im Allgemeinen automatisch erfasst und korrigiert werden kann. Ein ECC wird bei der Speicherung von Rechnerdaten verwendet, beispielsweise bei dynamischem RAM, Flash-Speichern und dergleichen sowie in der Datenübertragung. Exemplarische ECCs sind unter anderem der Hamming-Code, BCH-Code, Reed-Solomon-Code, Reed-Muller-Code, der binäre Golay-Code, der Faltungscode und Turbo-Code. Die einfachsten Fehlerkorrekturcodes sind in der Lage, Einzelbit-Fehler zu beheben und Doppelbit-Fehler zu erfassen. Andere Codes können Multibit-Fehler erfassen und korrigieren. Durch die Bereitstellung eines Fehlerschutzes im Rechnerspeicher bietet der ECC-Speicher eine höhere Datengenauigkeit und längere Systemlaufzeiten. Jeder Datensatz A1, A2, A3, Ap der Striped-Daten kann einen entsprechend assoziierten Datensatz für einen Fehlerkorrekturcode ECC haben, der hieran angehängt und auf demselben Plattenspeicher gespeichert ist. Wenn die Daten von einer Platte ausgelesen werden, wird die Integrität der Daten von dem ECC verifiziert und in Abhängigkeit davon, welcher ECC verwendet wird, können ein oder mehrere Fehler erfasst und korrigiert werden. Allgemein ist die Erfassung und Korrektur mehrerer Fehler eine Funktion des jeweils verwendeten ECCs, wobei die Auswahl des ECCs von der Höhe der erforderlichen Datenintegrität, der Verarbeitungszeit und den anderen Kosten abhängig ist.
- ZUSAMMENFASSUNG
- Beschrieben wird ein Speichersystem mit mehreren Speichermodulen, wobei jedes Modul die Kapazität zum Schreiben und Lesen von Daten aufweisen kann. M Byte von Daten können in einer Gruppe von N Speichermodulen der mehreren der Speichermodule gespeichert werden. Ein Fehlerkorrekturcode für die M Byte von Daten, die in der Gruppe der N Speichermodule gespeichert werden, kann in einem anderen der Speichermodule der mehreren Module gespeichert oder über die Module verteilt werden. Wenn die gespeicherten Daten von einem der N-1 Module der Gruppe der N Speichermodule aufgerufen werden und Fehlerkorrekturdaten beinhaltet sind, ist es möglich, die M Byte der in der Gruppe von N Speichermodulen gespeicherten Daten wiederherzustellen.
- In einem veranschaulichenden Beispiel weist ein Speichersystem mehrere Speichermodule auf, wobei jedes Modul eine Zeitsteuerungsschaltung haben kann und die Zeitsteuerungsschaltungen gleichzeitig initialisiert werden oder eine bekannte Beziehung im Hinblick auf eine Referenzzeit haben. Eine Gruppe K der Speichermodule kann dazu konfiguriert werden, Datenblöcke und einen Paritätsdatenblock der Datenblöcke zu speichern, und jedes der K Speichermodule kann einem nicht-überlappenden Zeitabstand zugewiesen werden, in dem Daten auf eines der Speichermodule des K Speichermodules geschrieben werden können oder ein Löschvorgang hieran durchgeführt werden kann.
- In einem weiteren Beispiel zur Veranschaulichung wird ein Betriebsverfahren für ein Speichersystem beschrieben, wobei das Verfahren Folgendes vorsieht: das Bereitstellen eines Speichersystems mit mehreren Speichermodulen; das Speichern eines Streifens von Speichermodulen von M Datenblöcken und einem Paritätsblock der mehreren Speichermodule; das Rückgewinnen von mindestens M der Datenblöcke oder M-1 der Datenblöcke und Paritätsdaten von den Speichermodulen; und das Verwenden einer ersten empfangenen Gruppe der M Datenblöcke oder der M-1 Datenblöcke und der Paritätsdaten, um die M Datenblöcke darzustellen.
- In einem weiteren Beispiel zur Veranschaulichung wird ein Computerprogrammprodukt beschrieben. Das Produkt wird gespeichert oder auf einem rechnerlesbaren Medium verteilt und enthält unter anderem Instruktionen zur Verwaltung der Daten eines Speichersystems. Das Speichersystem kann mehrere Speichermodule aufweisen, die dazu konfiguriert sind, dass Blöcke von Daten und Paritätsdaten, die aus den Blöcken der gespeicherten Daten berechnet wurden, in L unterschiedlichen Speichermodulen der mehreren Module gespeichert werden. L-1 Blöcke von Daten und der Paritätsdaten oder die gespeicherten Blöcke von Daten werden wiedergewonnen, wobei entweder die wiedergewonnenen L-1 Blöcke von Daten und die Paritätsdaten oder die gespeicherten Blöcke von Daten, je nachdem welche zuerst empfangen werden, für die Darstellung der gespeicherten Blöcke von Daten verwendet werden. Alternativ können die Paritätsdaten mit den gespeicherten Blöcken von Daten assoziiert und über L + 1 Speichermodule verteilt werden, oder die Paritätsdaten können in einem anderen Speichermodul gespeichert werden.
- In einem weiteren Beispiel zur Veranschaulichung schließt ein Verfahren zur Berechnung der Parität in einem Speichersystem das Anordnen von mehreren Speichermodulen in einer Baumstruktur ein, wobei die Baumstruktur Knoten aufweist. Von jedem von beiden Knoten kann ein Datenblock an einen dritten Knoten übertragen werden, der sich näher an einer Wurzel der Baumstruktur befindet. Ein erster Paritätsblock wird aus den empfangenen Datenblöcken berechnet. Ein zweiter Paritätsblock wird unter Verwendung des ersten Paritätsblocks und eines Datenblocks, der am dritten Knoten gespeichert ist, berechnet, um einen dritten Paritätsblock zu bilden. Der dritte Paritätsblock jedes der zwei dritten Knoten wird an einen Knoten übertragen, der sich näher an der Wurzel befindet als ein Datenblock. Ein vierter Paritätsblock wird berechnet und gespeichert, wobei der vierte Paritätsblock aus den zwei dritten Paritätsblöcken und den Daten, die in dem Knoten gespeichert sind, der sich näher zur Wurzel befindet, berechnet wird.
- Die folgenden numerierten Klauseln zeigen weitere veranschaulichende Beispiele:
- 1. Speichersystem, aufweisend: eine Mehrzahl von Speichermodulen, wobei jedes Modul eine Fähigkeit zum Schreiben und Lesen von Daten aufweist, wobei M-Datenblöcke und Fehlerkorrekturcodedaten in einer Gruppe von N-Speichermodulen aus der Mehrzahl von Speichermodulen gespeichert sind, wobei N größer gleich M ist, und M und N ganze Zahlen sind; und jedes Modul der Gruppe von N-Speichermodulen ist konfiguriert derart, dass Daten auf das Modul geschrieben oder von diesem gelöscht werden, während einer Zeitperiode s, wobei Zeitperioden sich nicht vollständig überlappen.
- 2. Speichersystem nach Klausel 1, wobei die Zeitperioden sich im Wesentlichen nicht überlappen.
- 3. Speichersystem nach Klausel 1, wobei die Zeitperioden von zwei beliebigen Modulen sich um nicht mehr als die Hälfte der Zeitperiode überlappen.
- 4. Speichersystem nach Klausel 1, wobei die Überlappung der Zeitperioden von der Schreib- oder Lösch-Last einer RAID-Gruppe der Mehrzahl von Modulen abhängt.
- 5. Speichersystem nach Klausel 1, wobei die M-Datenblöcke, die in der Gruppe von N-Speichermodulen gespeichert sind, abrufbar sind, wenn Daten von beliebigen N-1 Modulen aus der Gruppe von N-Speichermodulen entgegengenommen werden.
- 6. Speichersystem nach Klausel 1, wobei Daten der M-Datenblöcke durch Berechnen einer Exklusiv-ODER-Verknüpfung der Daten aus den N-1 Modulen abrufbar sind, wenn die von den N-1 Speichermodulen entgegengenommen Daten Fehlerkorrekturdaten beinhalten.
- 7. Speichersystem nach Klausel 1, wobei die Fehlerkorrekturcodedaten als Exklusiv-ODER-Verknüpfung der gespeicherten M-Datenblöcke berechnet werden.
- 8. Speichersystem nach Klausel 6, wobei die Daten durch eine Speichersteuerung entgegengenommen werden.
- 9. Speichersystem nach Klausel 1, wobei die Zeitperioden nicht überlappend sind.
- 10. Speichersystem nach Klausel 1, wobei die Speichermodule mindestens eines der folgenden ist: eine elektronische Schaltung ein physikalischer Adressbereich.
- 11. Speichersystem nach Klausel 10, wobei die elektronische Schaltung mindestens FLASH-Speicher beinhaltet.
- 12. Speichersystem nach Klausel 1, wobei das Speichermodul ein logischer Adressbereich ist.
- 13. Speichersystem nach Klausel 7, wobei die Fehlerkorrekturcodedaten über die N-Speichermodule verteilt sind.
- 14. Speichersystem nach Klausel 1, wobei nicht mehr als R der M Module während des gleichen Zeitintervalls beschrieben oder gelöscht werden, wobei R kleiner oder gleich M ist, und R ist gleich der Anzahl von Modulen der M Module, für welche die Daten unter Verwendung des Fehlerkorrekturcodes wieder hergestellt werden können.
- 15. Speichersystem, umfassend: eine Mehrzahl von Speichermodulen, wobei jedes Modul eine Zeitgeberschaltung aufweist, und eine Gruppe K der Speichermodule derart konfiguriert ist, um Datenblöcke zu speichern einschließlich Paritätsdaten der Datenblöcke, wobei jedes der K-Speichermodule ein nicht überlappendes Zeitintervall zugeordnet erhalten hat, in welchem Daten auf die Speichermodule der K-Speichermodule beschrieben werden können oder in dem eine Löschoperation auf den Speichermodulen der K-Speichermodule ausgeführt werden können.
- 16. Speichersystem nach Klausel 15, die an einer Speichersteuerung von beliebigen K-1 Speichermodulen entgegengenommenen Datenblöcken verwendet werden können, um die gespeicherten Daten darzustellen.
- 17. Speichersystem nach Klausel 15, wobei die Datenblöcke von beliebigen K-1 Speichermodulen verwendet werden können um die gespeicherten Daten einschließlich der Paritätsdaten darzustellen.
- 18. Speichersystem nach Klausel 15, wobei die Datenblöcke und die Paritätsdaten über die Gruppe von K-Speichermodulen verteilt sind.
- 19. Speichersystem nach Klausel 17, wobei die Paritätsdaten über eine XOR-Verknüpfung mit den Datenblöcken zum Rekonstruieren eines fehlenden Datenblockes verknüpft werden.
- 20. Speichersystem nach Klausel 15, wobei die Speichermodule mindestens eines von folgendem umfassen: nicht flüchtiger Speicher, flüchtiger Speicher und eine Bus-Schnittstelle.
- 21. Speichersystem nach Klausel 15, ferner umfassend eine mit den Speichermodulen unter Verwendung eines Busses kommunizierende Speichersteuerung.
- 22. Speichersystem nach Klausel 15, wobei das Zeitintervall mindestens das größere einer Lösch-Zeitdauer und einer Schreib-Zeitdauer ist.
- 23. Speichersystem nach Klausel 15, wobei dann, wenn mehr als eine vorbestimmte Anzahl von Schreib- oder Lösch-Operationen für ein Speichermodul anstehen, ein anderes Zeitintervall ebenfalls zum Durchführen einer Schreib- oder Lösch-Operation herangezogen wird.
- 24. Speichermodul nach Klausel 23, wobei das andere Zeitintervall um eine andere Anzahl von Zeitintervallen von dem Zeitintervall bei jedem Speichermodul aus der Gruppe von K-Speichermodulen erhöht wird.
- 25. Speichermodul nach Klausel 23, wobei das andere Zeitintervall jedes Speichermoduls aus den K-Speichermodulen seitlich koinsidieren.
- 26. Ein Verfahren zum Berechnen einer Parität in einem Speichersystem, wobei das Verfahren umfasst: Anordnen einer Mehrzahl von Speichermodulen in einem Baum, wobei der Baum Knoten aufweist; Übertragen von Daten von jedem der beiden ersten Knoten auf einen dritten Knoten, wobei der dritte Knoten näher an einer Wurzel des Baumes angeordnet ist; Berechnen der ersten Paritätsdaten unter Verwendung der Daten von den beiden ersten Knoten und von am dritten Knoten gespeicherten Daten, um die zweiten Paritätsdaten zu bilden; Übertragen der zweiten Paritätsdaten von jedem der zweiten Knoten zu einem Knoten näher an der Wurzel; Speichern dritter Paritätsdaten, wobei die dritten Paritätsdaten aus zweiten Paritätsdaten, die von jedem der zwei dritten Knoten entgegengenommen worden sind, und von auf dem näher an der Wurzel gelegenen Knoten gespeicherten Daten berechnet sind.
- 27. Verfahren nach Klausel 26, wobei die dritte Parität an dem Wurzelknoten berechnete Paritätsdaten sind.
- 28. Verfahren nach Klausel 26, wobei die dritten Paritätsdaten in einem Modul gespeichert werden, das ein anderes ist als die Module, von welchen die dritte Parität berechnet wurde.
- 29. Verfahren nach Klausel 26, wobei Paritätsdaten durch Ausführen einer Exklusiv-ODER(XOR)-Berechnung berechnet werden.
- 30. Computerprogrammprodukt, wobei das Produkt auf einem computerlesbarem Medium gespeichert oder vertrieben wird, umfassend: Instruktionen zum Leiten der Daten eines Speichersystems, wobei das Speichersystem eine Mehrzahl von Speichermodulen aufweist, die derart konfiguriert sind, so dass Datenblöcke und Fehlerkorrekturcodedaten auf L Speichermodulen aus der Mehrzahl von Modulen gespeichert sind, und darüber hinaus zum Abrufen von Daten von mindestens L-1 Speichermodulen; und Berechnen von Daten, die die gespeicherten Datenblöcke darstellen, unter Verwendung entweder der von den L-1 Speichermodulen abgerufenen Daten, welche Paritätsdaten beinhalten, oder unter Verwendung der von den L-1 Speichermodulen abgerufenen Daten, die keine Paritätsdaten beinhalten, je nach dem, welche zuerst entgegengenommen werden, wobei Schreib- oder Lösch-Operationen derart gesteuert werden, dass jedes der L Speichermodule in einem nicht überlappenden Zeitintervall beschrieben oder gelöscht wird.
- 31. Computerprogrammprodukt nach Klausel 30, wobei die Paritätsdaten mit den Daten von den L-1 Speichermodulen von Daten verwendet werden, um einen fehlenden Datenblock der gespeicherten Datenblöcke zu berechnen.
- 32. Computerprogrammprodukt nach Klausel 30, wobei die Paritätsdaten das Exklusiv-ODER (XOR) der Daten sind.
- 33. Computerprogrammprodukt nach Klausel 31, wobei die fehlenden Daten durch Exklusiv-ODER der abgerufenen Daten und der Fehlerkorrekturcodedaten berechnet werden.
- 34. Computerprogrammprodukt nach Klausel 30, wobei M Datenblöcke die gespeicherten Daten sind und wobei der Fehlerkorrekturcode ein zusätzlicher Datenblock ist, derart, dass die M+1 Datenblöcke auf L Speichermodulen gespeichert sind.
- 35. Computerprogrammprodukt nach Klausel 34, wobei L = M + 1 gilt.
- 36. Computerprogrammprodukt nach Klausel 30, wobei die berechnete Darstellung der gespeicherten Daten die Fehlerkorrekturcodedaten beinhaltet.
- 37. Ein Verfahren zum Betreiben eines Speichersystems, wobei das Verfahren umfasst: Vorsehen eines Speichersystems mit einer Mehrzahl von Speichermodulen; Speichern eines Streifens von M Datenblöcken und Fehlerkorrekturcodedatenblöcken auf Speichermodulen aus der Mehrzahl von Speichermodulen; Abrufen der Datenblöcke einschließlich der Fehlerkorrekturcodedaten aus den Speichermodulen; und Verwenden einer Gruppe von entweder M Datenblöcken, die keine Fehlerkorrekturcodedaten umfassen, oder von M-1 Datenblöcken einschließlich der Fehlerkorrekturcodedaten, jenachdem, welche Gruppe zuerst entgegengenommen wird, um eine Darstellung der M Datenblöcke zu berechnen.
- 38. Verfahren nach Klausel 37, wobei die abgerufenen Datenblöcke bei einer Speichersteuerung oder einem Computer entgegengenommen werden.
- 39. Verfahren nach Klausel 37, wobei ein fehlender Datenblock der M-1 Datenblöcke einschließlich der Fehlerkorrekturdaten aus den M-1 Datenblöcken und den Fehlerkorrekturdaten berechnet wird.
- 40. Verfahren nach Klausel 37, wobei das Speichermodul mindestens eines von folgendem ist: eine elektronische Schaltung oder ein physikalischer Adressbereich.
- KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht ein RAID-4 Datenspeichersystem auf mehreren Plattenspeicherlaufwerken (Stand der Technik); -
2 veranschaulicht mehrere in einer Reihen- und Spaltenanordnung arrangierten Speichermodulen; und -
3 ist eine exemplarische Darstellung einer Datenstruktur für eine Anordnung A, die auf mehreren Speichermodulen gespeichert ist; -
4A veranschaulicht eine Anordnung von Speichermodulen, die als Baumarchitektur angeordnet sind, wobei die Speichermodule in einem logischen Datenstreifen sich in den Blättern an den Zweigenden befinden; -
4B veranschaulicht eine Anordnung des Speichermoduls aus4A , wobei die Speichermodule in einem logischen Datenstreifen sich in einem Zweig befinden. -
5 ist eine schematische Anordnung der Daten in einem RAID-Speicher; -
6A zeigt die Zeitfolge der Schreibvorgänge für einen RAID-Streifen; -
6B zeigt die Beziehung der Schreib- und Lesevorgänge für die sequentiellen Zeitabstände der6A ; -
7 ist ein Blockschaltbild eines Speichermoduls; -
8 zeigt eine Gruppe von Speichermodulen, wobei jedes Modul mehr als einer RAID-Gruppe angehört und die RAID-Gruppen auf andere Weise modulübergreifend in Streifen aufgeteilt sind; und -
9 zeigt eine RAID-Anordnung, in der die Adressensequenz innerhalb einer Gruppe möglicherweise nicht zusammenhängend ist. - DETAILLIERTE BESCHREIBUNG
- Die exemplarischen Ausführungsformen sind unter Bezugnahme auf die Zeichnungen besser verständlich, was aber nicht bedeuten soll, dass die Ausführungsbeispiele in irgendeiner Weise einschränkend sein sollen. Elemente mit denselben Bezugszeichen innerhalb einer oder mehrerer Zeichnungen verrichten äquivalente Funktionen. Die Elemente sind entweder numeriert oder mit Abkürzungen oder mit beidem versehen, wobei die Wahl der jeweils verwendeten Darstellungsart allein mit dem Anliegen, optimale Klarheit bereitzustellen, getroffen wurde, so dass ein Element, das an einer Stelle numeriert und an einer anderen mittels Abkürzung oder einem alphanumerischen Zeichen identifiziert wird, nicht auf dieser Grundlage differenziert werden sollte.
- Vom Fachmann wird gewürdigt, dass die beschriebenen Verfahren und die in den Figuren dargestellte Vorrichtung mittels maschinenablauffähigen Instruktionen konfiguriert oder ausgeführt werden, wie beispielsweise Software oder als Hardware oder als Kombination von beiden. Die Instruktionen können verwendet werden, um einen zu Allgemeinzwecken zu verwendenden Rechner, einen zu Sonderzwecken zu verwendenden Prozessor, wie beispielsweise einen DSP oder einen Vektorprozessor oder dergleichen, der mit den Instruktionen zur Implementierung der beschriebenen Vorgänge programmiert ist. Alternativ können die Operationen mittels spezifischer Hardwarekomponenten, die festverdrahtete Logik- oder Firmware-Instruktionen zur Implementierung der beschriebenen Vorgänge enthalten, ausgeführt werden oder mittels einer beliebigen Kombination programmierter Rechnerkomponenten und benutzerspezifischer Hardwarekomponenten, die unter Umständen analoge Schaltungen enthalten können.
- Die Verfahren können zumindest teilweise als ein Computerprogramprodukt bereitgestellt werden, das ein maschinenlesbares Medium mit darauf gespeicherten Instruktionen enthalten kann, die zur Programmierung eines Computers (oder der Programmierung von anderen elektronischen Geräten) dienen, um die Verfahren zu implementieren. So wie er im Zusammenhang der vorliegenden Gebrauchsmusterschrift verwendet wird, ist der Begriff „maschinenlesbares Medium” derart aufzufassen, dass er sich auf alle Medien bezieht, die in der Lage sind, eine Folge von Instruktionen oder Daten zur Ausführung einer Aufgabe durch ein Rechnergerät oder Hardwareprodukt für Spezialzweckanwendungen zu speichern oder zu verschlüsseln und die darin resultieren, dass jenes Gerät oder Hardwareprodukt für Spezialzweckanwendungen dazu veranlasst wird, beliebige der erfindungsgemäßen Methoden oder Funktionen durchzuführen. Demzufolge ist der Begriff „maschinenlesbares Medium” einschließlich, ohne jedoch hierauf beschränkt zu sein, als Festkörperspeicher, optischer und Magnetspeicher und Trägerwellensignale beinhaltend aufzufassen. Die Beschreibung der Verfahrensimplementierung mittels Computer soll nicht ausschließen, dass dasselbe Verfahren von einem Menschen durchgeführt werden kann.
- Beispielsweise, ohne jedoch hierauf beschränkt zu sein, sind die folgenden maschinenlesbaren Medien denkbar: ein Nur-Lese-Speicher (engl.: Read-Only Memory, ROM), ein Direktzugriffspeicher mit wahlfreiem Zugriff (engl.: Random Access Memory, RAM) jeder Art (beispielsweise S-RAM, D-RAM. P-RAM), ein programmierbarer Nur-Lese-Speicher (engl.: Programmable Read-Only Memory, PROM), ein elektronisch veränderbarer (insbesondere löschbarer) programmierbarer Nur-Lese-Speicher (engl.: Erasable Programmable Read-Only Memory, EPROM), ein magnetischer Direktzugriffsspeicher, Plattenspeichermedien, Flash-Speicher oder elektrische, optische, akustische Datenspeichermedien oder dergleichen. Häufig werden die Daten in der Form einer Logikanordnung als Datenstruktur gespeichert. Jedoch kann dieselbe Logikanordnung mit einer physischen Speicheranordnung desselben Aufbaus assoziiert sein. Obwohl die Betriebsweise vieler der vorliegenden Beispiele beschrieben wird, als gebe es eine direkte Entsprechung zwischen der logischen Datenstruktur und der physischen Vorrichtung, ist dies unter Umständen nicht die Anordnung, die in der Praxis zur Anwendung kommt, wenn die Zuweisung der Daten zu Speicherplätzen von der Architektur des Speichersystems, der Möglichkeit schadhafter Speicherplätze und dergleichen bestimmt sein kann. Eine solche Zuweisung der Daten an physische Plätze kann mittels eines Dateiverwaltungssystems vorgenommen werden, wie beispielsweise dem PCMCIA Flash Translation Layer FTL, oder von Dateisystemen wie beispielsweisen dem Linux Journaling Flash File System Version 2 (JFFS2), dem Aleph One Yet Another Flash File System (YAFFS) oder Storage-Aware-Dateisystemen, wie beispielsweise ZFS (Sun Microsystems) usw., welche dem Durchschnittsfachmann bekannt sind.
- Bei der Auslegung der vorliegend beschriebenen Beispiele kann das Bestehen dieser Beziehung zwischen den logischen und physikalischen Adressen angenommen werden. Die Wahl des einen oder anderen zum Zwecke der Erörterung geschieht dies aus Gründen der Bequemlichkeit und nicht mit dem Zweck, eine Beschränkung aufzuerlegen, es sei denn, es wird ausdrücklich anderes erwähnt. Datenstreifen eines RAID-strukturierten Speichers können auf beliebige tatsächliche Speicherplätze im Speichersystem abgebildet werden. Die Zwänge bei der zeitlichen Steuerung hinsichtlich Lösch-, Schreib- und Lesevorgängen sollten daher mit Bezug auf die Daten in einem Streifen interpretiert werden, egal wo ein solcher Streifen sich im Speichersystem befindet. Dies bedeutet, dass die Begriffe Speichermodul, Speicherplatz, Datenblock und dergleichen im Allgemeinen effektiv als gegeneinander austauschbar verwendet werden können.
- Ferner ist es im Stand der Technik üblich, von Software in der einen oder anderen Form (beispielsweise als Programm, Verfahren, Prozess, Anwendung, Modul, Algorithmus oder Logik) in dem Sinne zu sprechen, als werde eine Aktion vorgenommen oder ein Ergebnis herbeigeführt. Solche Begriffe dienen nur der Bequemlichkeit, um zum Ausdruck zu bringen, dass die Ausführung der Software durch einen Computer oder durch ein äquivalentes Gerät den Prozessor des Computers oder des gleichwertigen Geräts dazu veranlasst, eine Aktion durchzuführen oder ein Resultat zu erzeugen; ein Stand der Dinge, der dem Fachmann wohlbekannt ist.
- Die Beschreibung eines besonderen Beispiels weist beispielsweise ein bestimmtes Merkmal, eine bestimmte Struktur oder ein besonderes Kennzeichen auf, jedoch braucht nicht jedes Beispiel notwendigerweise das besondere Merkmal, die besondere Struktur oder das besondere Kennzeichen aufzuweisen. Dies bedeutet nicht, dass vorgeschlagen oder nahegelegt werden soll, dass die Merkmale, Strukturen oder Kennzeichen von zwei oder mehr Beispielen nicht mit einander kombiniert werden sollten oder könnten, es sei denn, eine solche Kombination wird ausdrücklich ausgeschlossen. Wird ein besonderes Merkmal, eine besondere Struktur oder ein besonderes Kennzeichen im Zusammenhang mit einem Beispiel beschrieben, kann der Fachmann ein solches Merkmal, eine solche Struktur oder ein solches Kennzeichen im Zusammenhang gemeinsam mit anderen Beispielen zum Tragen bringen, unbeschadet dessen, ob dies explizit beschrieben ist oder nicht.
- Eine Speicheranordnung kann auch aus anderen Speicherelementen als Plattenspeicherlaufwerken bestehen. Beispielsweise kann die Speicheranordnung aus mehreren Flash-Speichermodulen oder anderen Halbleiterspeichergeräten gebildet werden.
- In einem ersten Beispiel wird eine RAID-4 Architektur verwendet, ohne dass hierdurch nahegelegt werden soll, dass die Verwendung anderer RAID-Architekturen oder dergleichen ausgeschlossen ist. Die Wahl einer RAID-Architektur wird aus ingenieurmäßigen und wirtschaftlichen Erwägungen getroffen, wie beispielsweise Kostenaufwand, Zuverlässigkeit, Latenz für das Lesen und Schreiben, Energieverbrauch, die Geschwindigkeit bei der Datenwiederherstellung und dergleichen. Ein Fachmann versteht, dass das in diesem Beispiel aufgezeigte System und Verfahren anpassungsfähig sind, um die Leistung des RAID-Systems entweder im Hinblick auf das Lesen von Daten, das Schreiben von Daten oder von beidem zu optimieren.
- Flash-Speicher haben eine begrenzte Lebensdauer. Ausfälle bei Flash-Speichern können im weitesten Sinne in konventionelles Betriebsversagen, das durch einen Konstruktionsfehler bedingt ist, der latent vorliegt oder sich über die Zeit hinweg ausbildet und als typisches Problem bei elektronischen Komponenten gilt, und auf einen Verschleißmechanismus unterteilt werden. In der Regel ist der Verschleißmechanismus von der Anzahl der Zugriffe auf das Flash-Speichermodul abhängig, typischerweise für einen Löschvorgang, obwohl je nach der spezifischen Technologie auch das Lesen und Schreiben die Stelle des Verschleißmechanismus einnehmen könnten. Obwohl es sich um einen elektronischen Fehlermechanismus handelt, kann jener eher als typisch für einen mechanischen Fehlermechanismus aufgefasst werden, derart, wie bekannte Ausfallmechanismen etwa aufgrund der gefahrenen Kilometerzahl bei einem Automobil. Beide Mechanismen sind unter Umständen beim Systemdesign zu berücksichtigen, und die übermäßige Belegung eines bestimmten Speicherplatzes im Rahmen der Hardware- oder Softwareverwaltung des Betriebs des Systems ist zu vermeiden.
- Wenn ein Flash-Speicher verwendet wird, kann der Fehlermechanismus beim Verschleiß ein einzelner Bitfehler innerhalb einer Anordnung von Daten sein. Ein solcher Einzelbitfehler kann normalerweise mittels eines Fehlerkorrekturcodes (engl.: error correcting mode, ECC), der mit dem Datensatz in einem bestimmten Speichermodul assoziiert ist, erfasst und korrigiert werden. Die korrigierten Daten werden dann an den Speichercontroller (die Speichersteuerung) übertragen und mit den von den anderen Streifen ausgelesenen Daten kombiniert, um den angeforderten Datensatz A zu bilden. Da die von den gespeicherten Datensätzen A1, A2, A3 aufgerufenen Daten fehlerfrei sind oder die Fehler mittels ECC korrigiert wurden, sind die Daten aus dem Datensatz Ap redundant. Erst wenn einer der Datensätze A1, A2, A3 einen zwar erfassten, jedoch nicht korrigierbaren Fehler aufweist, beispielsweise wegen eines Speichermodulausfalls, wird der Datensatz Ap gebraucht, um die Daten des Datensatzes A zu korrigieren. Ein solcher Mehr-bit-Fehler würde beispielsweise bei einem Versagen des Speichermoduls an sich auftreten, wonach die Daten unter Zuhilfenahme der verbleibenden drei Datensätze rekonstruiert (den jeweils anderen drei Datensätzen der Sätze A1, A2, A3, Ap) werden müssten. Das Auftreten einer solchen Fehlerart kann als die elektronische mittlere Zeit zwischen [zwei] Ausfällen (engl.: mean time between [two] failures MTBF) eines einzelnen Speichermoduls aufgefasst werden. Im Allgemeinen werden nur die in den Streifen A1, A2 und A3 enthaltenen Daten verwendet und der Paritätsstreifen Ap nur für die Datenrekonstruktion aufgerufen und verwendet, wenn ein Fehler auftritt.
- Wenn ein Einzelbit-Fehler in den im Speichermodul gespeicherten Daten gemeldet wurde, kann davon ausgegangen werden, dass ein Speichermodul nicht mehr zuverlässig funktionsfähig ist, und der Speichercontroller „markiert” oder zeichnet den Platz in dem Speichermodul als unbrauchbar auf, bis das Speichermodul ausgewechselt wird. Alternativ kann zugelassen werden, dass eine festgelegte Anzahl von Einzelbit-Fehlern sich ansammeln darf, bevor eine Reparaturaktion durchgeführt wird.
- Die Charakteristiken mancher Flash-Speichertechnologien machen das Schreiben und Lesen kleiner Datenblöcke unter Umständen etwas unpraktisch, und es kann zu einer Situation kommen, in der die Größe des zu schreibenden Blocks die Mindestbockgröße unterschreiten kann, die das Speichersystem in der Lage ist, schreiben zu können. Beispielsweise kann ein Softwaresystem Dateien in Mindestblockgrößen von jeweils 512 Byte segmentieren, jedoch beträgt die praktische Mindestlöschgröße für das System 128 KByte. Die vier 512-Byte-Blöcke (mit Bezug auf das Betriebssystem, aber „Sektoren” für FLASH) können zusammengenommen als eine Seite von 2 KByte bildend betrachtet werden. Bei einer generischen Begriffsverwendung kann sich der Begriff „Block” auf eine beliebige Datenart einschließlich Paritätsdaten beziehen und soll keine Konnotationen hinsichtlich einer spezifischen Byte-Größe oder irgendeiner anderen Maßeinheit beinhalten; der Begriff wird zur Bezugnahme auf Gruppen von Daten, die mit einer bestimmten Beschreibung assoziiert sind, verwendet.
- Wird ein RAID-4 System verwendet, können die jeweils 512 Byte umfassenden Segmente der Seite über vier Speichermodule in Streifen organisiert sein, und ein fünftes Speichermodul wird für die Paritätsdaten verwendet. In diesem Beispiel wird von einer Blockgröße von 512 Byte, der Verwendung von 5 Speichermodulen zur Speicherung der Blockaspekte und einer Mindestlöschgröße von 128 Kbyte ausgegangen, wobei es sich jedoch versteht, dass es sich bei diesen Parametern lediglich um exemplarische Werte handelt und dass damit nicht beabsichtigt wird, nahezulegen, dass das System oder das Verfahren bestimmten Beschränkungen unterliegt.
-
2 veranschaulicht ein Speichersystem, das mehrere Speichermodule umfasst, wobei die Speichermodule über einen Bus mit einem Speichercontroller verbunden sind. Jeder Bus verfügt über mehrere Speichermodule, die in einer seriellen Buskonfiguration miteinander verbunden sind, und ist in einer Art und Weise organisiert, die mit einem Plattenspeicher in der in1 dargestellten Plattenspeicheranordnung vergleichbar ist. Neben dem repräsentativen Charakter bei der Realisierung einer physischen Anordnung von Speichermodulen kann diese Anordnung als logischer Adressraum für Speichermodule mit einer anderen physischen Organisation aufgefasst werden. -
3 veranschaulicht eine Organisation von Speicherplätzen gemäß der Datenanordnung A, wobei angenommen wird, dass die Datenanordnung die Mindestblockgröße hat, die auf das Speichergerät geschrieben werden kann. Jedes der Speichermodule hat eine Größe von 128 KByte und setzt sich aus mehreren Speichersektoren zusammen, die jeweils eine Größe von 512 Byte haben und als Amn bezeichnet werden, wobei m der Speicherbus ist, auf dem sich das Speichermodul befindet, und wobei n für die individuellen Speicherplätze steht, die mit den 512-Byte-Sektoren in jedem Speichermodul-Schreibblock assoziiert sind. In dem vorliegenden Beispiel gibt es 256 Sektoren von jeweils 512 Byte innerhalb von jedem 128-Kbyte-Löschblock des Speichermoduls. - Ein Datenblock von 512 Byte kann damit auf die Sektoren A11, A21, A31, A41 geschrieben werden, und die Paritätsanordnung Ap kann mittels der Berechnung einer exklusiv-ODER-Operation auf den Datenanordnungen A1, A2, A3 und A4 aktualisiert werden. Wenn die Daten auf die Sektoren A11, A21, A31 und A41 geschrieben werden, werden die Daten, die beispielsweise in den Sektoren A12–A1n des Speichermoduls 0 enthalten sind, ebenfalls geschrieben. Dies kann auftreten, da die Daten in der Datenanordnung A1 unter Umständen gelöscht werden müssen, bevor veränderte oder neue Daten im Sektor A11 aufgezeichnet werden. Ein Beispiel dieses Vorgangs beinhaltet unter Umständen, dass die Datenanordnung A1 in eine flüchtiges Speichervorrichtung eingelesen wird, Löschen des mit der Datenanordnung A1 in dem Speichermodul 0 assoziierten Speichers, Ändern der Daten im Sektor 11 der Datenanordnung A1 im Speichermodul 0, und anschließend Schreiben der Daten der Anordnung A1 von dem flüchtigen Speicher zum Speichermodul 0. Dies stellt ein Beispiel für die Operationen dar, die bei dem Änderungsprozess der Daten, die in einem Flash-Speicher gespeichert werden, durchgeführt werden können. Die üblichen Routinevorgänge für den Umgang mit einem Flash-Speichersystem sollen an dieser Stelle nicht weiter beschrieben werden. Zu diesen Prüfungen im Hinblick auf das Vorliegen beschädigter Blöcke, Verschleißausgleich (engl.: Wear Leveling), das Konsolidieren von Daten zur Rückgewinnung von Speicherplätzen („Müllentsorgung”), das Erfassen und Korrigieren von Fehlern und dergleichen gehören. Solche Vorgänge können als Overhead aufgefasst werden und resultieren in einer Reduzierung der Systembandbreite für das Lesen und Schreiben sowie einer Verlängerung der Latenzzeit. Die Betriebsweise des Flashspeichers in diesen Beispielen wird vorliegend auf makroskopischer Ebene beschrieben, wobei angenommen wird, dass jeder interne Vorgang, der im Wesentlichen für den Benutzer transparent ist, ohne weitere Beschreibung abläuft. Wird jedoch eine Beschränkung im Hinblick auf einen Lese- oder Schreib-Vorgang geltend gemacht, laufen routinemäßig ausgeführte Vorgänge allgemein mit den Beschränkungen, die externem Lesen oder Schreiben auferlegt sind, konform ab, können jedoch, sofern dies notwendig ist, während den zeitlichen Abständen, in denen sie zulässig sind, in ihrer Ausführung priorisiert behandelt werden. Interne Vorgänge, die möglicherweise gebraucht werden, damit ein externer Befehl zum Tragen kommt, wie beispielsweise „Lesen” oder „Schreiben”, können in den dem Lesen und Schreiben zugeordneten Zeiträumen durchgeführt werden, selbst wenn es sich bei solchen Vorgängen um eine Kombination von internen Lese- und Schreibvorgängen handelt.
- In einem Beispiel, bei dem aktuell verfügbare FLASH-Speicher-Komponenten verwendet werden, kann der Datentransfer von 2 KByte in dem FLASH-Chip zwischen dem FLASH-Speicher und dem internen Datenregister beim Lesen etwa 25 μs dauern. Die Übertragung von 512 Byte Daten von dem internen Register zu der den FLASH kontrollierenden Vorrichtung kann bei einer Geschwindigkeit von 25 MB/s auf dem Bus, der verwendet wird, um mittels eines Controllers auf dem Speichermodul auf das FLASH-Chip zuzugreifen, etwa 20 μs dauern, was eine Gesamtzeit von etwa 45 μs ergibt. Jedoch kann die Zeit zur Durchführung eines Löschvorgangs eines 128-KB-Blocks des FLASH, um damit das Schreiben neuer Daten zu ermöglichen, etwa 1 ms bis etwa 2 ms in Anspruch nehmen, was etwa 20 bis 40 mal länger ist als die Zeit, die zur Implementierung des Lesevorgangs aufgewendet wird. Bei der Durchführung eines Programmier-(Schreib)-Vorgangs des FLASH werden bis zu 20 μs gebraucht, um 512 Byte Daten über den Bus in den inneren Register des FLASH-Chips zu transferieren und etwa 200 μs bis etwa 700 μs, um die Daten in dem FLASH-Speicher zu programmieren, was 5 bis 15 mal länger ist als die Durchführung eines Lesevorgangs. Das Löschen eines Blocks von 128 K und das Programmieren des 128 K Blocks erfordert unter Umständen etwa 13 ms bis etwa 42 ms oder etwa 200 bis 800 mal so lang wie die Implementierung eines Lesevorgangs. Während der Zeit, in der das Speichermodul in den Lösch- oder Programmier-(Schreib-)Vorgängen aktiviert ist, kann das Speichermodul unter Umständen keine anderen Funktionen verrichten, wie beispielsweise das Lesen von Daten von einem anderen der Sektoren A12 bis A1n, sofern die Daten, die gelesen werden sollen, auf demselben Gerät des Moduls gespeichert sind, das gerade gelöscht oder programmiert wird. Daher kann für eine Zeitdauer, während der Leseoperationen hinsichtlich unter Umständen nicht hierauf bezogener Daten stattfinden, welche auf demselben Speicheranordnungsblock A1 gespeichert sind, der Speicheranordnungsblock A1 blockiert sein, wenn eine Schreib-(Programmier-)Operation fortschreitet, während eine Leseanforderung empfangen wird Bei vielen Datenbanksystemen ist eine solche Verzögerung, die als Latenz bezeichnet werden kann, nicht wünschenswert und kann unter Umständen unannehmbar sein. Die Verzögerung kann mit den Verzögerungen, die man bei Plattenspeichermedien antrifft, vergleichbar werden.
- In einer Situation, in der beabsichtigt wird, die Asymmetrie zwischen der benötigten Zeit für den Lesevorgang und der Zeit für den Schreibvorgang auf einem Datensektor dazu einzusetzen, um im Ergebnis zu einem schnellen Lesen der Daten zu gelangen, kann die Aktion des Schreibens eines Blocks von 2 K Byte, der über 4 Speichermodule und ein Paritätsmodul in Streifen aufgeteilt ist, zu einer Stauung der Lesevorgänge führen, bei der das Lesen von bis zu 10–30 K Daten während des Latenzzeitraums möglich gewesen wäre. Ähnlich könnte ein Löschvorgang Lesevorgänge für etwa 80–160 K Daten sperren.
- Diese Situation lässt sich durch einen Betrieb des Speichercontrollers (der Speichersteuerung) und der Speichermodule abmildern, so dass die Daten in Sektoren von 512 Byte sequentiell anstatt parallel zu jedem der Speichermodule A1, A2, A3, A4 und Ap geschrieben werden. Das bedeutet, es wird zugelassen, dass der Schreibvorgang für die Anordnung A1 zu Ende geführt werden darf, bevor der Schreibvorgang für A2 gestartet wird, und auf ähnliche Weise wird zugelassen, dass der Schreibvorgang für A2 erst beendet wird, bevor mit dem Schreibevorgang für A3 begonnen wird. Dies wird fortgesetzt, bis das Schreiben für alle Speichermodule im Streifen A einschließlich Berechnung und Schreiben der Parität zum Modul Ap beendet ist. Während der Zeit, in der die Module, die die Datenanordnungen A1, A2, A3 und Ap enthalten, geschrieben werden, kann die spezifische mit dem Modul assoziierte Datenanordnung nicht gelesen werden. In diesem Beispiel darf jedoch nur eines der Module A1, A2, A3, A3 und Ap zu einer gegebenen Zeit einen Schreibvorgang durchführen.
- Wenn ein Lesebefehl für die 512 Byte der in den Modulen A11, A21, A31, A41 und Ap gespeicherten Daten ausgegeben wird, kann jedes der Speichermodule die Leseanfrage empfangen. Häufig sind alle Speichermodule in einem Zustand, in dem eine Leseanfrage sofort verarbeitet werden kann und die Daten zum Speichercontroller zurückgeführt werden. Wird jedoch ein Schreibbefehl von einem Speichermodul verarbeitet, kann es sein, dass die Daten nicht sofort von dem Speichermodul auslesbar sind, wodurch eine der Antworten von den Datenanordnungen A1, A2, A3, A4 oder Ap erheblich verzögert sein kann. In Situationen, in denen das Modul Ap nur zu Zwecken der Datenwiederherstellung verwendet wird, wird es nur dann gelesen, wenn es zu einem Speicherausfall gekommen ist. Da die Speicherverwaltungshardware oder -software erwartet, von allen passenden Modulen A1–A4 Antworten zu haben, kann sich die Beendung der Abfrage verzögern, wenn auf einem oder mehreren der Speichermodule ein Schreibvorgang stattfindet, sei es wegen einem externen Befehl oder Routinearbeiten.
- In Situationen, in denen jedoch 4 der Speichermodule Daten enthalten und ein Speichermodul Paritätsdaten enthält, kann es sein, dass nur 4 von den 5 Modulen Daten zurücksenden müssen, damit die gewünschten Daten gelesen werden. Das bedeutet, dass eines der Datenmodule möglicherweise ausfallen kann oder dass ein nicht zu behebender Fehler gemeldet werden kann oder dass das Modul durch einen Schreib- oder Löschvorgang gesperrt ist. Beispielsweise, wenn es sich bei dem Datenmodul, dass keine Daten zurückgibt, beispielsweise um A2 handelt, können die verbleibenden Datenmodule A1, A3, A4 und Ap sein, wobei in diesem Fall die gewünschten 512 Bytes wiederhergestellt worden sind. In Fällen, in denen die fehlenden Daten von einem der Module A1, A2, A3 und A4 kommen, kann das Modul Ap verwendet werden, wobei es sich um Paritätsdaten handelt, um die Daten des fehlenden oder verzögerten Abfragemoduls wiederherzustellen.
- Wenn beispielsweise die im Speichermodul A1 gespeicherten Daten gelesen werden, können die Daten mittels eines Fehlerkorrekturcodes verifiziert werden, wobei deren Daten-ECC1 in demselben Speichermodul gespeichert werden können wie die Daten selbst. Sind die Daten korrekt, braucht keine Aktion eingeleitet zu werden. Wird ein Fehler detektiert, kann der Fehler korrigiert werden, wobei es sich bei der Anzahl der detektions- oder korrigierfähigen Fehler um ein Kennzeichen des bestimmten jeweils verwendeten Fehlerkorrekturcodes handelt. In der Form, wie sie zum Speichercontroller zurückgeführt werden, sind die Daten entweder korrekt oder wurden von dem ECC korrigiert oder wurden als schadhaft markiert, insofern das ECC zwar in der Lage war, einen oder mehrere Fehler zu erfassen, aber nicht zu korrigieren.
- In der Regel tritt bei einem FLASH-Speichersystem ein Einzelfehler entweder aufgrund des Verschleißphänomens auf oder weil das Speichermodul einen weitreichenden Hardwareausfall erlitten hat, was zu mehreren Fehlern solchen Art geführt hat, die von dem Speichercontroller erfasst werden können. Das Speichermodul kann betriebsunfähig werden.
- Im Fall, dass ein Einzelfehler gemeldet wird, wobei der Fehler jedoch von dem ECC korrigiert wurde, kann das Auftreten eines Fehlers unter Umständen dem Speichercontroller oder einer anderen Hardware oder Software, die für die Verwaltung des FLASH-Speichersystems verwendet wird, gemeldet werden, einschließlich einer On-Chip-Speicherverwaltung, und das Speichermodul oder ein spezifischer Datenchip oder Datenblock wird möglicherweise als mangelhaft markiert beziehungsweise hinsichtlich weiterer korrigierfähiger Fehler überwacht. Der Speicherverwaltungsalgorithmus kann feststellen, dass ein Speichermodul oder Chip nicht länger für die Datenspeicherung verwendet werden kann. Die aktuell in dem Speichermodul oder auf dem Chip gespeicherten Daten werden zu einem anderen Speicherplatz verschoben, der nicht als mangelhaft markiert ist.
- Alternativ gilt, dass, sofern das gesamte Speichermodul mangelhaft ist, beispielsweise infolge eines weitreichenden Hardwareausfalls, die Daten von einer der Datenanordnungen A1, A2, A3, A4 fehlen oder als fehlerhaft befunden wurden. In einem solchen Fall können die Daten von dem Ap unter Umständen verwendet werden, um die Daten des ausgefallenen Moduls zu rekonstruieren und die rekonstruierten Daten in einem Modul zu speichern, das nicht als mangelhaft ausgewiesen ist. Dadurch wird selbst in Fällen eines umfangreichen Hardwareversagens die Datenintegrität beibehalten.
- In Fällen, wenn bekannt ist, dass die Daten korrekt sind oder einen Fehler enthalten hatten, der von dem ECC korrigiert wurde, können die gewünschten 512 Byte Daten dem Speichercontroller zur Verfügung stehen, nachdem die Daten von dem die Anordnungen enthaltenden Modul von vier der fünf Speichermodule A1, A2, A3 und A4 und Ap zurückgewonnen wurden. Beispielsweise können Daten von den Modulen A1, A2, A3 und A4 empfangen werden. Die Daten des Modules, das Ap enthält, sind dann redundant, denn sie werden weder zur Korrektheitsbestimmung von Daten in den erwünschten 512 Byte gebraucht, noch sind sie notwendig, um einen Fehler zu korrigieren. Sofern eines der Module, das die Datenanordnungen A1, A2, A3 oder A4 aufweist, keine Daten zurückgibt oder Daten zurückgibt, von denen bekannt ist, dass sie inkorrekt sind, oder die Datenrückgabe erfolgt mit einer Verzögerung, können die Daten auf dem Modul Ap verwendet werden, um die fehlenden Daten zu rekonstruieren, wobei die Paritätsdaten in Ap und die restlichen drei Datenanordnungen verwendet werden. Wenn der Begriff „es werden keine Daten zurückgegeben” verwendet wird, handelt es sich laut der einschlägigen Kriterien darum, dass die Daten nicht innerhalb eines bestimmten für einen Lesevorgang typischen Zeitraum zurückgegeben wurden. Die verlängerten Datenrückgabezeiten sind möglicherweise auf einen störenden Schreib- oder Lesevorgang zurückzuführen oder auf einen Hardwarefehler. Die Daten von dem Modul, das „keine Daten zurückgibt”, können zulässigerweise zu einer späteren Zeit zurückgegeben werden oder der Lesevorgang für jenes Modul wird annulliert. Auf jeden Fall darf die Aufrufzeit von Daten von einem Datenstreifen nicht durch ein Modul, das Daten nicht innerhalb eines angemessen Zeitrahmens zurückgibt, verlängert werden.
- Das bedeutet entsprechend, dass es bei einer Speichermodulanordnung, bei der eines der Speichermodule für redundante Daten verwendet wird (beispielsweise Paritätsdaten), nicht notwendig ist, dass alle Speichermodule gültige Daten zurückgeben, bevor die angeforderten Daten zur Verfügung stehen oder die Daten rekonstruiert werden können. Das heißt beispielsweise, dass die angeforderten Daten verfügbar sind, nachdem die Datenmodule A1, A2, A3 und Ap gelesen wurden. Daten von A4 werden unter Umständen nicht gebraucht.
- Ein Grund, weshalb die Daten von A4 unter Umständen gar nicht oder nicht pünktlich zur Verfügung stehen, liegt darin, dass Daten gerade auf einen Sektor von A4 geschrieben werden oder dass ein Sektor gerade gelöscht wird, wodurch sich das Auslesen von Daten aus dem Block, der gerade geschrieben wird, verzögert. Zum Zeitpunkt des Eingangs einer Leseanfrage, die charakteristisch für die Lesezeit ist, stehen die Daten aus 4 der 5 Speichermodule zur Verfügung. Die Daten des fünften Moduls stehen unter Umständen pünktlich zur Verfügung, vorausgesetzt, dass gerade kein Schreibvorgang stattfindet; jedoch können die Daten aus dem fünften Modul außer Acht gelassen werden, es sei denn, es liegt ein nicht korrigierter Fehler vor. Bei einer wesentlichen Verzögerung der Daten sind die verzögerten Daten redundant und können bei der routinemäßigen Datenverarbeitung in dem Speichercontroller außer Acht gelassen werden.
- Als solches können die Daten von beliebigen 4 der 5 Speichermodule eines Streifens verwendet werden, um Daten, die in dem Streifen gespeichert sind, bei vorliegender geringer Latenz zu lesen, denn das Lesen der Daten von 4 oder 5 Modulen wird nicht durch den Schreibvorgang zu 4 der 5 Module gestört.
- Der Prozess der Speicherverwaltung innerhalb eines Speichersystems, in welchem die Zeiten für das Lesen und Schreiben asymmetrisch sind und die Zeit für Schreibvorgänge erheblich länger ist als die Lesezeit, schließt unter Umständen ein: Das Schreiben von Daten auf mehreren Speichermodulen, wobei die Speichermodule logisch in einem Muster aus Streifen organisiert sind. Jedes der Speichermodule kann einen Fehlerkorrekturcode mit Bezug auf die Daten in dem Speichermodul haben, und ein zusätzliches Speichermodul kann einen Fehlerkorrekturcode (beispielsweise XOR-Parität) mit Bezug auf die Daten in mehreren Modulen haben. Die Vorgänge des Schreibens oder Löschens können durch ein sequentielles Schreiben oder Löschen von Daten auf jedem der Speichermodule durchgeführt werden, wobei die Vorgang des Schreibens oder Löschens jedes jeweils als nächstes folgenden Moduls verzögert wird, bis der Schreibvorgang beim vorherigen Speichermodul abgeschlossen ist. Nachdem der Schreib- oder Löschvorgang auf den Speichermodulen beendet ist, werden die redundanten Daten in dem zusätzlichen Modul aktualisiert, damit die Datenintegrität bewahrt bleibt. Demzufolge ist zu einer gegebenen Zeit immer nur ein Modul im Schreibzustand. Alternativ können die redundanten Daten in einem flüchtigen Speicher aktualisiert werden, bis das Schreiben oder Löschen der Daten zu und von den die Daten enthaltenden Modulen abgeschlossen ist, woraufhin die Daten zu dem zusätzlichen Modul geschrieben werden.
- Werden Schreib- oder Löschvorgänge an Speichermodulen in einem Streifen auf sequenzielle Art und Weise vorgenommen, ist nur eines der Speichermodule in dem Streifen gegen ein sofortiges Lesen von Daten als Reaktion auf eine Leseanfrage gesperrt; in dem vorliegenden Beispiel geben mindestens 4 der 5 Speichermodule sofort Daten an die Speichersteuerung zurück. Dies ist ausreichend, um den Lesevorgang zu beenden. Der Lesevorgang als solcher wird nicht durch einen Schreib- oder Löschvorgang verzögert, obwohl die Geschwindigkeit von Schreib- und Löschvorgängen insgesamt reduziert ist, weil sich nur ein Modul zu einer gegebenen Zeit im Schreib- oder Löschzustand befinden darf. Die im Wesentlichen nicht überlappenden Zeiten für das Schreiben der Daten zu dem Speichermodul reduzieren Konflikte zwischen den Lese- und Schreibvorgängen für einen Datenstreifen auf ein Minimum.
- Der Speichercontroller wartet unter Umständen eine gewisse Zeit ab, bis der Lesevorgang beendet ist und verwendet dann die mindestens 4 der 5 Antworten, um den angeforderten Datensektor zu assemblieren, wobei es sich um die Daten oder die rekonstruierten Daten handeln kann. Sofern alle 5 der Datenblöcke zurückgegeben werden, darf je nach dem per Design erwünschten Vertrauenswert einer der Datenblöcke außer Acht gelassen werden oder die redundanten Daten im Dienste eines zusätzlichen Fehlererfassungsschritts verwendet werden.
- Das Schreiben von Daten hat unter Umständen bei der Erstbestückung einer Datenanordnung Vorrang; und die Daten können parallel auf mehrere Speichermodule in einem Streifen geschrieben werden. Unter diesen Umständen kann sich das Auslesen von Daten, wie vorstehend beschrieben wurde, verzögern, was jedoch akzeptiert werden kann, wenn große Anordnungen initialisiert oder große Datenblöcke verschoben werden. Im vorliegenden Beispiel beträgt die Datenschreibgeschwindigkeit etwa 20 Prozent der maximalen Schreibgeschwindigkeit, denn jedes der 5 Speichermodule wird sequenziell geschrieben, während die Lesegeschwindigkeit nicht länger ist als ungefähr die für ein Einzelmodul erwartete Lesegeschwindigkeit, denn 4 der 5 Speichermodule, die durch das Schreiben gesperrt werden, müssen antworten, damit das Lesen erfolgreich ist. Diese Sperrung kann im Zuge des Anstiegs der Schreiblast verwaltet werden.
- In einem weiteren Beispiel kann die Speicheranordnung anders aufgebaut sein als eine aus Reihen und Spalten bestehende Matrix, wie in dem vorherigen Beispiel. Die Reihen- und Spaltenbezeichnung der vorstehend beschriebenen Daten kann als eine logische Adresse, die auf eine physische Adresse abgebildet ist, aufgefasst werden. In der Speicherarchitektur, die in
4 zu sehen ist, sind die Speichermodule in einer Baumstruktur angeordnet, entsprechend der Lehre des aktuellen Erfinders in der am 17. April 2006 eingereichten US-Patentanmeldung 11/405,083 mit dem Titel „Interconnection System” und die durch Bezugnahme in diese Anmeldung einbezogen ist. Bei der Anordnung im vorliegenden Beispiel sind baumartige Strukturen miteinander verbunden und verfügen über externe Verbindungen zu einem/r oder mehreren Speichercontrollern bzw. Speichersteuerungen. Ein Attribut des Baumstruktursystems ist in4A dargestellt, wonach mittels mindestens einem der Speichercontroller auf jedes der Speichermodule (die in den viereckigen Kästen abgebildet sind) zugegriffen werden kann, selbst wenn eines der Speichermodule ein Komplettversagen erlitten hat, eine der physischen Verknüpfungen unterbrochen wurde oder wenn einer der Speichercontroller ausgefallen ist. Die einzelnen Speichermodule M als solche können den Datenanordnungen A zugewiesen werden, ohne dass auf die physische Position des Speichermodules innerhalb des Systems Rücksicht genommen würde. (In diesem Beispiel werden die Speichermodulbezeichnungen M aus Gründen der Einfachheit mit den jeweils assoziierten Datenanordnungsbezeichnungen A ersetzt). Die Baumarchitektur kann entsprechend angepasst werden, so dass sie eine große Anzahl von Speichermodulen enthält, wobei jedes Modul im Hinblick auf die Entfernung, die von den Signalen unter Umständen zurückzulegen ist, im Vergleich zu linearen Architekturen, die eine ähnliche Anzahl von Speichermodulen und Speichercontrollern aufweisen, relativ nahe an der Wurzel liegt. - Zur Illustrierung werden die Datenanordnungen A in einem Zuweisungsbeispiel mit den physischen Modulen des Speichersystems der
4A gezeigt, wobei es sich versteht, dass es sich hierbei um eine Optionen aus einer Vielzahl möglicher Zuweisungen handelt. Die Zuweisung von Datenanordnungen zu Speichermodulen ist unter Umständen veränderlich, um den Ausfall von einem oder mehreren Speichermodulen zu berücksichtigen, ohne dass hierdurch signifikante Auswirkungen bei der Latenzzeit oder anderen Leistungsmaßstäben zu Buche schlagen. Ein Attribut eines baumartigen Speichersystems mit einer redundanten Verbundarchitektur liegt darin, dass die individuellen Speichermodule ausgetauscht werden können, während sich das Speichersystem im Betrieb befindet. Dieser Vorgang wird als „Hot Swapping” bezeichnet. -
4B zeigt eine weitere Veranschaulichung einer möglichen Zuweisung der Datenanordnungen A1, A2, A3, A4 und Ap zu verschiedenen physischen Speichermodulen innerhalb der Speicherarchitektur der4A . Die Module sind hier dazu ausgewählt, dass sie nahe aneinander liegen und dieselben oder teilweise dieselben Datenpfade zwischen den Speichermodulen und einem der Speichercontroller verwenden. Sollte entweder der Speichercontroller oder eines der Speichermodule ausfallen, würden die alternativen Pfade (von denen manche mittels der durchbrochenen Linien dargestellt sind) verwendet, um die Speichermodule mit dem ursprünglichen Controller oder einem alternativen Controller zu verbinden. Die Assoziierung einer logischen Darstellung der Datenanordnung A als solche mit dem physischen Speichermodul ist flexibel. Das Umwidmen eines beliebigen Teils der Datenanordnung A mit Bezug auf den Belegungsplatz im Speichersystem ist eine Änderung am logisch-auf-physisch-Abbilden (Mapping) und am Routing von Daten und wird üblicherweise nur durch die Verfügbarkeit eines physischen Speichermoduls und nicht durch den Platz des Speichermoduls innerhalb des Speichersystems beschränkt. - Versagt ein Speichermodul und muss es ausgewechselt werden, so besteht die Möglichkeit eines zweiten Ausfalls während desselben Zeitraums. Der Fehlermechanismus eines Moduls kann in einen Verschleißmechanismus und einen konventionellen elektronischen Schaltungsmechanismus unterteilt werden. Letzterer ist von der Gesamtbetriebszeit und Ersterer ist von der Belegung des Speichermoduls abhängig. Ein abnutzungs- bzw. verschleißspezifischer Ausfall geschieht allmählich mit einem korrigierbaren Einzelbit-Versagen als anfängliche Ausfallerscheinung. In einem solchen Fall lässt sich die Wahrscheinlichkeit, mit der ein zweites Modul ausfällt, während das erste Modul ausgetauscht wird, in der Größenordnung des Umkehrwertes von MTBF des Speichersystems geteilt durch die für die Auswechslung des ausgefallenen Speichers erforderliche Stundenzahl abschätzen. Ähnlich gilt, sofern die Ausfallursache elektrisch bedingt ist, dass ein verschleißbedingtes Versagen wahrscheinlich nicht in der Lage ist, einen Ausfall innerhalb der kurzen Zeit, die erforderlich ist, um ein betriebsunfähiges Speichermodul zu ersetzen, zu verursachen, was bedeutet, dass die Wahrscheinlichkeit eines zweiten Ausfalls ähnlich gering ist. Da es sich bei dem System um RAID-4 handelt, findet ein Datenverlust statt, wenn zwei der Speichermodule des Speichermoduls 5, das die Datenanordnung enthält, verloren gehen.
- Der Fehlermechanismus der FLASH-Speicher ist derart beschaffen, dass ein Verschleißphänomen eintritt, das zu einem Fehlerzustand führt. Der Verschleißmechanismus kann zwischen den verschiedenen Typen von FLASH-Speichern und den von individuellen Herstellern eingesetzten Produktionstechnologien variieren. Da Verschleiß jedoch zu Geräteversagen, Stillstandzeiten des Geräts und möglichen Verlusten bei der Datenintegrität führt, wurde eine Vielfalt von Strategien für den Umgang mit Verschleiß und Abnutzung bei Flash-Speichern entwickelt. Häufig werden die Anzahl der Schreib- oder Löschzyklen jedes Datenblocks aufgezeichnet und parallel dazu, nach Maßgabe der Zunahme der Anzahl der Schreibzyklen, können Daten zur Verlängerung der Betriebsdauer eines Speichermoduls von einem hohen Belegungsbereich zu einem Bereich mit einer geringeren Belegung verschoben werden. Der charakteristische Ausfallmodus eines FLASH-Speichermoduls bedingt durch Verschleiß oder Abnutzung manifestiert sich darin, dass ein Einzelbit fehlerhaft ist. Jenes Bit tendiert dazu, in wiederholten Lesevorgängen als fehlerhaft aufzutreten, bis ein zweites Bit auch einen Fehler anzeigt. Da die Fehlerkorrekturcodes (engl.: error correcting codes, ECC), die verwendet werden können, in der Lage sind, einen Einzelfehler zu erfassen und zu korrigieren, aber nicht in der Lage sind, einen Doppelfehler zu korrigieren, lässt sich das Speichermodul weiter verwenden, bis ein zweiter Bitfehler auftritt. Bei der Auffindung eines Zwei-Bit-Fehlers werden die redundanten Paritätsdaten gebraucht, um die gewünschten Daten zu rekonstruieren. Demnach ist es möglich, alternative Richtlinien bei der Systemverwaltung einzusetzen.
- In einer ersten Richtlinie wird das Speichermodul als unbrauchbar markiert, wenn ein einzelner Bitfehler gefunden wird. Da der Einzelbit-Fehler von dem EEC, der mit dem Speichermodul assoziiert ist, korrigiert wird, müssen die mit dem Streifen assoziierten redundanten Daten (beispielsweise die Paritätsdaten) nicht verwendet werden, denn nur 4 der 5 Module des vorherigen Beispiels würden ausreichen, um die gewünschten Daten darzustellen, und der Lesevorgang wird wegen des Wartens auf die Beendung eines Schreibvorgangs nicht verzögert. Alternativ kann das Speichermodul weiter verwendet werden, bis ein zweiter Bitfehler in der Datenanordnung eines Speichermoduls erfasst wird. Unter diesen Umständen können die redundanten Daten verwendet werden, um Daten zu rekonstruieren, wenn ein Datenfehler in einem anderen Speichermodul als derjenigen, das die redundanten Daten enthält, aufgetreten ist.
- Wenn eine Bitposition in einem Speichermodul abgenutzt ist (engl.: wear out), verändert sich nicht der Bitstatus in der ausgefallenen Bitposition. Das bedeutet, wenn das Bit erwartungsgemäß logisch 1 war und durch das Versagen logisch gesehen 0 wurde, behält das Bit den Ausfallstatus von logisch Null. Der Ausfall einer Bitposition, die ein logisches 0-Datenbit enthält, würde nicht sofort erfasst werden, denn das Bit, so wie es aufgrund seines Ausfallplatzes angezeigt wird, ist identisch mit seinem erwartungsgemäßen Wert, nämlich logisch Null. Werden die Daten, die an der Bitposition gespeichert sind, jedoch geändert, und die neuen Daten wären logisch 1, so zeigt die Bitposition hingegen an, dass die Daten logisch 0 sind, wodurch der Fehler endlich erfasst und korrigiert wird. In einer solchen Situation kann das mit dem Speichermodul assoziierte ECC die Daten, die von dem Speichermodul ausgelesen werden, unter Umständen korrigieren; da es sich bei der Bitposition jedoch um eine ausgefallene Position handelt, kann der Istwert der Daten an jenem Platz nicht geändert werden. Jedoch kann der korrekte Wert des Bit an dem ausgefallenen Bitplatz mittels einer Rekonstruktion der Daten unter Verwendung der Paritätsinformationen in einem anderen Speichermodul bestimmt werden. Dort, wo dies stattfindet, kann der Ist-Platz des fehlgeschlagenen Bitplatzes bestimmt werden und eine Korrektur für jenen Platz kann separat gespeichert und angewendet werden, wenn der ECC zwei Fehler erfasst hat, so dass die Betriebsdauer des Flash-Speichermoduls noch einmal verlängert wird. Die Informationen zu dem Platz der ausgefallenen Speicherplätze können durch Erweiterung der Größe des ECCs in dem ECC-Bereich gespeichert werden, und eine kleine Anzahl ausgefallener Bits kann vor der Zuweisung des ECCs korrigiert werden.
- Im Vergleich zu einem Plattenspeichersystem kann ein Solid-State-Speichersystem mit erheblich geringeren Störungen zwischen den Lese-, Schreib- und Löschvorgängen oder zwischen mehreren Vorgängen derselben Art auf Datenanordnungen zugreifen, die in mehreren Speichermodulen gespeichert sind.
- In einem weiteren, in
5 dargestellten Beispiel wird die Verwaltung einer zweidimensionalen Anordnung dargestellt. Wie vorstehend erwähnt, gilt, dass wenn das RAID-4-System derart betrieben wird, dass es nur einem von fünf Speichermodulen A1-Ap gestattet ist, zu einer gegebenen Zeit im Schreibmodus zu sein, die restlichen vier Speichermodule Daten sofort zurückgeben, so dass die Latenz für einen Lesevorgang bei einer Schreiblast von 20 Prozent oder darunter nicht beeinträchtigt ist. Diese Situation steht im Kontrast zu einem System ohne diese sequenzspezifischen Rahmenbedingungen bei den Schreibvorgängen, bei denen die Störung zwischen Lese- und Schreibvorgängen bereits bei einer sehr niedrigen Schreiblast beginnt. - Es kann jedoch zu Situationen kommen, in denen eine größere Schreiblast als 20 Prozent der Zeitschiene erwünscht ist, jedoch die Leselatenz wunschgemäß dennoch situationskonform so gering wie möglich sein soll. Dies kann erreicht werden, wenn der Schreibvorgang die Streifengruppen übergreifend verwaltet.
- Bei der Beschreibung der Betriebsweise dieses und anderer Beispiele variieren die Lade- und Antwortzeiten des Speichermoduls und -systems zur Erklärung des Betriebsprinzips. Aus Gründen der bequemeren Handhabung werden die zeitliche Verteilung der Lese- und Schreibanfragen als zeitlich einheitlich angenommen, ebenso wie die Durchschnittsrate einer Lese- oder Schreiblast entspricht. Für einen kurzen Zeitraum wird das Laden als stationärer Wert angenommen. Die Beschränkungen der Busbandweite und dergleichen werden außer Acht gelassen; allgemein sind die Latenz- und Antwortzeiten der Speichermodule recht lang im Vergleich zu der Latenz, die mit der Busübertragungszeit assoziiert ist. Hinzu kommt, dass die Last an verschiedenen Streifen in dem Speichersystem variieren kann, da verschiedene Datenbereiche innerhalb eines Speichersystems unterschiedlichen Lese- und Schreiblasten unterliegen beispielsweise wegen solchen Faktoren wie der Art der gespeicherten Daten, dem Anwendungsprogramms, das auf die Daten zugreift und dergleichen, und die beschriebene Situation kann als repräsentativ für einen lokalen anstatt einem globalen Lastwert betrachtet werden. Die Adaptierung des Speichers als solche kann eher auf lokaler anstatt globaler Basis stattfinden. Die operative Koordination kann, wo dies gebraucht wird, durch einen globalen oder lokalen Zeitgeber-Algorithmus, Token-Weitergabe, Polling-Abfragen, Signalausgabe oder dergleichen oder mittels anderer Verfahren zur Koordination temporaler Operationen in einem Rechner- oder Speichersystem erreicht werden.
- Die Daten in
5 sind abs in Streifen organisiert dargestellt; und ein nullter Streifen410 umfasst die Speichermodule310 (oder beispielsweise die Chips) A0, B0 C0, D0 and P0, die jeweils in Spalten A, B, C, D beziehungsweise P angeordnet sind. Die verbleibenden Streifen des Systems, 2–9, sind ähnlich, so dass ein Speichersystem von 50 Modulen entsteht. - Zu Erklärungszwecken wird angenommen, dass ein Zeitgeber-Schaltkreis auf jedem Speichermodul zu derselben Zeit wie bei anderen Speicherschaltungen initialisiert wird und die Zeit in Abständen von jeweils 1 ms markiert, was einem ausreichenden Zeitraum entspricht, um mindestens einen Schreib- oder Löschvorgang zu Ende zu bringen. Solche Schreib- oder Löschvorgänge werden spaltenweise, eine Spalte nach der anderen und in jeweils aufeinander folgenden Zeitabständen, durchgeführt.
6A zeigt die Spalten514 der Speichermodule als in aufeinander folgenden Zeitlabständen t1, t2, ..., t10 für den Schreibvorgang aktiviert, und welche sich überdies wiederholen, Modulo 10. Wie in6B dargestellt, wo eine zeitliche Historie des Streifens 0 zu erkennen ist, kann man sehen, dass jederzeit ein einzelnes Speichermodul für einen Schreibvorgang aktiviert ist. Damit ist das Kriterium, dass 4 der 5 Speichermodule in einem Streifen jederzeit für einen Lesevorgang verfügbar sind, erfüllt. Es ergibt sich also eine Latenz, die nur von der Leselatenz abhängig ist, ohne Beeinflussung durch die Schreiblast. - Wenn die Schreiblast 20 Prozent überschreitet, ist diese Strategie nicht in der Lage, mit den Datenmengen, die laut Wunsch geschrieben werden sollen, Schritt zu halten. Es müssen zusätzliche Schreibzeiträume zugeordnet werden. In dem Ausmaß, in dem diese nach Bedarf zugeordnet werden, kann es sein, das mehr als ein Speichermodul in einem Streifen sich zum Zeitpunkt einer Leseanfrage in einem Schreibzustand befindet. 4 der 5 Speichermodule als solche können nicht sofort auf die Leseanfrage reagieren; und die Leselatenz erhöht sich von einem sehr kleinen Wert (10fache von Mikrosekunden) auf mindestens etwa 1 ms entsprechend der Dauer des Schreibzustands.
- Bei einer Erörterung der Latenz und bei einer einheitlichen Ankunftsrate von Anfragen beträgt die Latenz die Hälfte der Dauer der durch den Schreibstatus geschafften Sperrung. Zur Vereinfachung der Erläuterungen wird die Dauer des Schreibzustands verwendet.
- Mit der Zunahme der Schreiblast erhöht sich die Anzahl der Speichermodule innerhalb eines Streifens, die zu einer gegebenen Zeit im Schreibzustand sind, und die Latenz kann auf die Summe der Verzögerungen, die mit den Schreibzuständen des Streifens assoziiert sind, ansteigen, vielleicht auf etwa 4 ms.
- Jedoch kann der Höchstwert des Schreibstatus auf 1 ms begrenzt sein, wenn alle Speichermodule innerhalb eines Streifens
410 dazu veranlasst werden, zur gleichen Zeit in einen Schreibstatus einzutreten. Wenn die Schreiblast beispielsweise 20% überschreitet, wie in diesem Beispiel, aber geringer ist als 28%, kann jeder Streifen auch alle jeweils 10 Zeitabstände für einen Schreibvorgang aktiviert werden. Zusätzlich zu einer Spalte als solcher kann (beispielsweise P in5 ) ein Streifen410 (Streifen 0) für die Dauer des ersten Zeitabstands aktiviert sein. Bei dieser Strategie werden alle Streifen gleichzeitig beschrieben, so dass die Gesamtsperrung der Schreibzeit auf 1 ms beschränkt ist. Mit dem Anstieg der Schreiblast können unter Umständen zusätzliche Zeitabstände für das Streifen-Schreiben zugeordnet werden. Insbesondere kann durch die Strategie vorgesehen sein, Streifen-Schreib-Aktionen unter Umständen soweit wie möglich zeitlich voneinander entfernt vorzusehen. Das bedeutet, bei dem nächsten Inkrement können der erste und der fünfte Zeitabstand einer Modulo 10 Wiederholung verwendet werden. - Es kann erwartet werden, dass die Schreiblast für die Speichermodule in einem Streifen während einer beliebigen Epoche in etwa dieselbe sein kann, da, wenn überhaupt Seiten geschrieben werden, das Schreiben auf einem Speichermodul zu dem Beschreiben aller Speichermodule innerhalb eines Streifens führen würde. Trotzdem wird es zu Unterschieden bei der Schreiblast kommen, die auf Schreiben von weniger als einer Seite oder auf Routineaktivitäten zurückzuführen sind, die von den bestimmen Speicher-Chips abhängig sind (aufgrund von beschädigten Blöcken und dergleichen).
- Ein Speichermodul
310 kann, wie in7 dargestellt, beispielsweise einen nicht-flüchtigen Speicher320 , bei dem es sich um einen FLASH-Speicher handeln kann, einen Pufferspeicher330 , der beispielsweise ein DRAM sein kann, und eine Controller/Bus-Schnittstelle340 aufweisen, wobei es sich um ein konfigurierbares Schaltelement (engl.: configurable switching element, CSE), wie in der US-Patentanmeldung mit der Seriennummer: 11/405,083 beschrieben, oder eine andere Busschnittstelle handeln kann. Das Speichermodul kann in der Lage sein, Eingangs- und Ausgangsdaten und Befehle zu Puffern, so dass ein Speichermodul eine Warteschlange anhängiger Vorgänge aufrechterhalten kann. - Vorgänge, die mit Lese-, -Schreib- und Löschvorgängen mit niedriger Latenz in Konflikt sind, können auf die Zeitabstände beschränkt werden, die für Schreibvorgänge designiert sind. Wenn ein Zeitsteuerungs-Slot des Speichermoduls einen Schreibvorgang zulässt, können so viele Schreib- und Lösch-Vorgänge, wie während der Zeitdauer des Slots potentiell durchführbar sind, aus der im Controller
340 gepflegten Warteschlange genommen und durchgeführt werden. Wenn hingegen keine anhängigen Schreib- oder Löschvorgänge anstehen, können anhängige Lesevorgänge aus der Warteschlange in dem Controller340 genommen und durchgeführt werden. - Alternativ können Schreib- oder Löschvorgänge zurückbleiben (für eine bequemere Handhabung werden beide vorliegend als Schreibvorgänge bezeichnet). Je nach den programmierten operativen Richtlinien werden zusätzliche, zurückbleibende Vorgange als Hinweis darauf gewertet, dass die Schreiblast 20% überschritten hat und dass zusätzliche Schreibzeiten zugeteilt werden müssen. Entweder wird der Haupt-Speichercontroller benachrichtigt, so dass die Schreibvorgänge zum Streifen gedrosselt werden, oder es werden zusätzliche Zeit-Slots dem Schreibvorgang zugeordnet, bis die Warteschlange auf einen Nominalstand, der Null oder eine kleine Anzahl anhängiger Vorgänge sein kann, reduziert wurde. Werden Zeit-Slots dem Schreibprozess zugeteilt, so werden die Zeit-Slots während der Modulo 10 Wiederholung des Musters auf Abstand angeordnet. Parallel dazu, wie die Schreiblast zunimmt und mehr Schreib-Slots gebraucht werden, werden diese in zunehmend engeren Abständen zueinander angeordnet; jedoch wird zwischen aufeinander folgenden Schreibaktionen solange wie möglich ein Slot freigelassen. Auf diese Art und Weise wird die Gesamtlänge jeder Schreibsperrung einer Leseanfrage minimiert, in dem Maße wie die Schreiblast ansteigt und bei einer Schreiblast von unter etwa 50% beträgt die maximale Sperrung nur einen Schreibzeitraum. Die für Leseaktionen verfügbare Zeitschiene ist entsprechend reduziert; jedoch sind hohe Leselasten und hohe Schreiblasten zu demselben Streifen wahrscheinlich nur vorübergehender Natur und haben nur geringe Auswirkungen auf die Reaktionszeit des Gesamtsystems.
- Die Richtlinie, die die Zuordnung zusätzlicher Schreib-Zeitblöcke, jeweils abhängig von der lokalen Warteschlange, vorsieht, ermöglicht ein Adaptieren der Operation jedes Streifens an den hieran angelegten Lese- und Schreibbedarf mittels des dynamischen Systembetriebs.
- Gemäß einem weiteren Aspekt der Erfindung ist vorgesehen, dass – wenn die Einzelmodule innerhalb eines Streifens miteinander kommunizieren, beispielsweise mittels eines Token-Weitergabe-Konstruktes – das Token eine Berechtigung zur Durchführung eines Schreibintervalles darstellen kann. Das Token kann sequentiell zwischen den Speichermodulen A-P eines Streifens transportiert werden (beispielsweise Streifen 1). Wenn das Token von A1 gehalten wird, wird ein Schreibintervall von einem Schreibabstand, welcher im vorliegenden Beispiel 1 ms ist, zugelassen. Enthält die Warteschlange Schreibvorgänge und können solche Schreibvorgänge innerhalb jenes Intervalles beendet werden, werden sie ausgeführt. Das Token wird dann an B1 weitergegeben, wo der Prozess sich wiederholt; das Token wird kontinuierlich weitergegeben, und sobald P1 das Token hat, wird das Token an A1 weitergegeben, so dass sich der Ringvorgang, sprich: Round Robin, schließt.
- Dort, wo es nach der Beendung des Schreibintervalles noch anhängige Vorgänge gibt, gilt dies als Hinweis darauf, dass die aktuelle Schreiblast den 20%-Wert, für den die Leselatenz für das Schreiben transparent ist, überschreitet. Wenn es keine anderen Mittel zu Beschränkung der Last gibt, kann es sein, dass die anhängigen Schreibvorgänge zeitnah ausgeführt werden müssen, um ein Überlaufen des Pufferspeichers
330 zu vermeiden. Unter diesen Umständen wird ein weiterer Schreibvorgang durchgeführt, nachdem das Token weitergereicht wurde, wodurch mindestens ein Zeitabstand zwischen Schreibabständen ermöglicht wird. Die Anzahl der Schreibintervalle, die während eines beliebigen Round Robin verwendet wird, kann somit je nach der Schreiblast variieren, jedoch kann die Anzahl der aufeinander folgenden Schreibintervalle eine Einheit betragen, bis die Schreiblast sehr hoch geworden ist. - Das Zuordnen von Zeiträumen, in denen Speichermodule ihre Lösch- oder Programmiervorgänge durchführen können, kann auf verschiedene Arten erfolgen: Beispielsweise durch Zuordnen von Zeiträumen mit Bezug auf eine globale Referenzzeit, so dass die Module mit der lokalen Festlegung des Zeitraumes arbeiten; durch die Übertragung von Steuermeldungen von einem globalen Controller; mittels Token-Passing von einem Modul zum anderen; durch Befehlsbusse oder Leitungen zwischen den Modulen oder dergleichen. Es kann eine Kombination von Ansätzen verwendet werden: Beispielsweise in einem System, in dem, wenn die gewünschte Programmierungsdatenrate höher ist als von einer einzelnen Spalte der RAID-Gruppe, die die Programmierung zu einer gegebenen Zeit durchführt, bedient werden kann; und wenn es mehrere RAID-Gruppen gibt, dann kann ein Modul einer oder aller RAID-Gruppen programmieren oder löschen, während gleichzeitig für eine Anzahl von RAID-Gruppen ein oder alle Module programmiert oder löscht, wie in
5 dargestellt. Bei einem solchen System kann beispielsweise die Spalte, die Löschen oder Programmieren vornimmt, mittels einer festen Zuordnung der Zeiträume festgelegt werden, während die Bestimmung des Zeitpunkts, wenn eine ganze Reihe oder RAID-Gruppe einen Lösch- oder Programmiervorgang vornimmt, durch eines der Module in der RAID-Gruppe bestimmt wird, indem ein Befehl an die nächste RAID-Gruppe gesendet wird, der anzeigt, dass die nächste RAID-Gruppe beginnen kann; eine Art von Token-Passing; und das Modul kann festlegen, dass alle Module in der eigenen RAID-Gruppe des Moduls ihre Programmier- oder Löschvorgänge beendet haben – signalisiert durch die Verwendung eines zweiten Token-Passing-Prozesses, oder durch eine 'Pull Down'-Leitung, die alle Modulen anhält, bis sie fertig sind; oder durch einen Befehlsbus, den die anderen Module verwenden, um anzuzeigen, dass sie fertig sind, oder ein ähnliches Verfahren oder eine ähnliche Konfiguration. - Dort, wo alle Zeiträume nicht überlappend sind, können die Latenzeffekte des Lösch- oder Programmiervorgangs vollständig versteckt sein; an Stellen, an denen die Zeiträume nur im Wesentlichen nicht überlappend sind, kann die Latenz des Lösch- oder Programmiervorgangs bis zur Zeitdauer der Überlappung beobachtbar sein. Solange die Menge der zeitlichen Überlappung geringer ist als 100%, können die Vorrichtung und das Verfahren im Vergleich mit einem vollständig überlappenden Lösch- und Programmiervorgang immer noch zu einer reduzierten Latenz der Zugriffszeit führen.
- Wie in
5 dargestellt, betragen die nicht-Überlappungszeiten diejenigen einer RAID-Gruppe mit Bezug auf die nächste RAID-Gruppe anstatt von einem Modul in einer RAID-Gruppe zum nächsten Modul, wenn einige RAID-Gruppen einen Programmier- oder Löschvorgang über mehr als ein Modul oder über alle Module der Gruppe hinweg vornehmen. Die Verbesserung bei der Latenz ist hier nicht diejenige eines einzelnen Lesezugriffs, sondern, falls beispielsweise Lesezugriffe auf alle RAID-Gruppen hergestellt werden, bei denen mehr als ein Modul programmiert oder gelöscht wird, erfahren diese Zugriffe eine erhöhte Latenz, während Zugriffe auf jene RAID-Gruppen, die nur ein Modul programmieren oder löschen, eine solche Zunahme nicht erfahren. Im Ergebnis kann sich die durchschnittliche Latenz über alle Lesezugriffe hinweg verbessert haben. - Der Ansatz kann auf FLASH-Speicher in anderen Konfigurationen, die entfernbar oder fest sein können, angewendet werden. Der vorliegend beschriebene Ansatz kann innerhalb eines Moduls selbst durchgeführt werden, vorausgesetzt, dass das Modul über eine ausreichende Anzahl von FLASH-Vorrichtungen verfügt. Der Ansatz kann daher unabhängig auf mehreren Ebenen in einer Speicherarchitektur verwendet werden; so beispielsweise Solid-State-Festplatten (SSD) im Formfaktor einer standardmäßigen Festplatte, die durch ein Plattenspeicherzugriffsprotokoll, wie beispielsweise SATA, SCSI, Fibre Channel oder andere Formfaktoren oder Zugriffsprotokolle, die bekannt sind oder möglicherweise noch entwickelt werden, gekoppelt sind. Die Entsprechung zwischen RAID-Gruppen und Modulen ist derart, dass unter Umständen keine Eins-zu-Eins-Entsprechung der Module und „Spalten” in einer RAID-Gruppe vorliegt. Beispielsweise an Stellen, wo eine „Spalte” einer RAID-Gruppe sich über mehr als ein Modul erstreckt, oder dort, wo die Daten auf einem Modul aufgrund der RAID-Rekonstruktion im Begriff sein können, zu einem Auswechslungsmodul verschoben zu werden, und es ist möglich, dass mehr als ein Modul eine „Spalte” einer RAID-Gruppe für einige Zeit enthalten kann.
- Nach einem weiteren Aspekt kann eine RAID-6-Organisation einer RAID-4/5 Organisation überlagert sein, wo eine weitere Paritätsberechnung an den Spalten der Datenanordnung vorgenommen wird. Alternativ kann die zusätzliche Paritätsberechnung an dem Speichermodul vorgenommen werden, was als physische Konfiguration aufgefasst wird. Das bedeutet, ohne hierbei die Zuordnung von Speichermodulen zu Streifen zu berücksichtigen, dass die Daten in einer Spalte einer linearen Anordnung von Modulen einer XOR-Operation (exklusiv-ODER) unterzogen werden können, um die Paritätsdaten zu berechnen. Dies kann auch im Fall eines binären Strukturbaums erfolgen, wie dies in
4A oder4B gezeigt. Beispielsweise können die Daten von den zwei Speichermodulen in dem Baum bei Empfang auf der nächsthöher gelegenen Ebene in dem Baum einer XOR-Operation unterworfen werden, um erste Paritätsdaten zu erzeugen. Auf ähnliche Weise kann dieser Paritätsblock mit den Daten am Empfangsmodul einer XOR-Operation unterworfen werden, um einen neuen Paritätsblock zu erzeugen. Da es sich hier um eine binäre Baumstruktur handelt, können die beiden neuen Paritätsblöcke von ihren jeweiligen Knoten zum nächsthöheren physischen Knoten in der Baumstruktur übertragen werden, an welcher Stelle der Prozess des Unterwerfens unter eine XOR-Operation wieder durchgeführt werden kann, was fortgesetzt wird, bis die Baumwurzel oder ein anderer Knoten einer höheren Ebene erreicht ist. Diese Paritätsdaten können ähnlich verwendet werden wie die Spaltenparität eines RAID-6-Systems, um so zusätzliche Paritätsdaten für den Fall des Ausfallens von mehr als einem Modul bereitzustellen. Die Ausbreitung der X-ODER-Paritätsdaten ist auf diejenige Datenmenge beschränkt, die für den Datenblock an sich auf jeder Ebene der Baumstruktur gebraucht wird und kann ohne erhebliche Buslast und mit den Berechnungen, die mit den Berechnungen der X-ODER-Parität, jeweils verteilt über die Speichermodule auf eine im Wesentlichen gleichmäßige Art, assoziiert sind, durchgeführt werden. - An Stellen, an denen der Begriff Speichermodul verwendet wird, kann es sich bei dem Modul beispielsweise um eine Schaltungskarte mit Steckkontakt handeln, die mehrere Speicherschaltungen aufweist, oder es handelt sich bei dem Speichermodul jeweils um eine einzelne oder um eine eine Gruppe von Speicherschaltungen auf der Schaltungskarte oder um eine sogenannte Solid-State-Festplatte (SSD), wobei es SSDs in vielen Formfaktoren von Einzelkarten bis hin zu Paketen gibt, die mit der Größe und Form eines mechanischen Plattenspeichers konform sein können. Der Maßstab des logischen Adressbereichs, der mit einem Speichermodul oder Speicherplatz assoziiert sein kann, soll nicht durch die vorliegende Beschreibung beschränkt werden, was bedeutet, dass in einem Speichermodul somit sowohl größere als auch kleinere Datenspeichergeräte oder Datenstrukturen untergebracht werden können.
-
8 zeigt exemplarisch eine Gruppe von Modulen, wobei jedes der Module mehr als einer RAID-Gruppe angehört; die RAID-Gruppen sind hier jedoch verschiedenartig über den Modulen in Streifen (Stripes) strukturiert. Beispielsweise sind die RAID-Gruppen A, B, C, D horizontal in Streifen strukturiert, wobei jeder Streifen X Adressen beinhaltet; der Streifen A hat die Adressen 0 bis X-1, B hat X bis 2X-1 usw., wohingegen die Gruppen E, F, G, H, I diagonal in Streifen strukturiert sind und jede Gruppe auch X Adressen beinhaltet.9 ist eine Darstellung dessen, dass die Anzahl der Adressen in einer Gruppe nicht kontinuierlich oder identisch zu anderen Gruppen sein muss. Bei diesem Beispiel erfolgt ein Umbruch nach der letzten Adresse in Gruppe I, um mit der Gruppe A, die die Adressen 0 bis X-1 und 9X bis 10X-1 hat, fortgesetzt zu werden. - Obwohl die Layouts in
8 und9 einheitlich und gleichmäßig sind, bedeutet dies nicht, dass es erforderlich ist, dass die RAID-Streifen regelmäßig oder einheitlich sind; als Beispiel kann das ZFS-Dateisystem dienen, wo jedes geschriebene Datenstück zu seinem eigenen RAID-Streifen gemacht wird, der auf einen beliebigen Satz von Modulen in einem Speichersystem wie dem vorliegend beschriebenen platziert werden kann. - Nach einem Aspekt der Erfindung werden die Daten eines RAID-Steifens in mehrere Datengruppen geteilt. Eine Parität wird als exklusive-ODER (engl.: XOR) der Mehrzahl der Gruppen von Daten berechnet. Die Datengruppen und die Parität werden auf einen RAID-Streifen geschrieben. Die Paritätsdaten können unter den Speichermodulen des RAID-Streifens verteilt werden oder auf ein Speichermodul des RAID-Streifens, der separat von den Daten ist, geschrieben werden. Wenn der RAID-Streifen gelesen wird, und der RAID-Streifen verfügt über M Speichermodule, so können die Daten von den ersten M-1 Speichermodulen zur Bestimmung der Daten, die in dem RAID-Streifen gespeichert wurden, verwendet werden. Wenn die Speichermodule eines RAID-Streifens derart verwaltet werden, dass ein Schreib- oder Löschvorgang zu einer gegebenen Zeit nur an einem der Module durchgeführt werden kann, ist es möglich, einen Lesevorgang durchzuführen, der ausreicht, um die gespeicherten Daten wiederherzustellen, ohne dass das Ende des Schreib- oder Löschvorgangs abgewartet werden müsste.
- In den vorangegangenen Beispielen wird der Begriff des Moduls allgemein verwendet, um auf eine physische Speicherschaltung oder auf einen logischen oder physischen Adressenbereich hinzuweisen, was ein einzelner Adressenplatz sein kann oder ein Bereich physischer oder logischer Adressen, die an einem einzelnen Adressplatz sein können oder über einen Bereich physischer oder logischer Plätze verteilt sein können. Speicherschaltungen auf einem physischen Modul können gruppiert werden, so dass sie Teil von verschiedenen RAID-Streifen sind und unterschiedliche Zeiträume haben, in denen das Lesen, Schreiben und Löschen erfolgen kann. Die Verwendung des Begriffes des Moduls ist per se eine Entscheidung im Dienste eines bequemeren Umgangs und soll keineswegs die Verwendung einer spezifischen Anordnung nahelegen oder erfordern. Ähnlich würde es sich verstehen, dass suboptimale Durchsatzkonfigurationen aus anderen Gründen gewählt werden können und mit den vorliegend beschriebenen Konfigurationen gemischt werden, wenn dies wünschenswert ist.
- Demzufolge soll die vorangegangene detaillierte Beschreibung als veranschaulichend und nicht als einschränkend aufgefasst werden, wobei es sich versteht, dass die nachstehenden Ansprüche einschließlich aller ihrer Äquivalente den Geltungsbereich dieser Erfindung definieren sollen.
Claims (8)
- Speichersystem, aufweisend: eine Mehrzahl von Speichermodulen, wobei jedes Speichermodul zum Schreiben und Lesen von Daten geeignet ist, wobei jedes Speichermodul derart konfiguriert ist, dass Daten, die einen Datenblock und Fehlerkorrekturcodedaten für den Datenblock aufweisen, in einer Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen gespeichert werden; und eine Speichersteuerung zum Lesen von Daten aus der Mehrzahl von Speichermodulen und zum Schreiben von Daten auf die Mehrzahl von Speichermodulen, dadurch gekennzeichnet, dass die Speichersteuerung konfiguriert ist zum: Anfordern des gespeicherten Datenblocks und der Fehlerkorrekturcodedaten für die gespeicherten Daten von der Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen; und Ausgeben des Datenblocks unter Verwendung von entweder: (a) der Fehlerkorrekturcodedaten und eines hinreichenden Teils des gespeicherten Datenblocks, um den verbleibenden Teil des gespeicherten Datenblocks unter Verwendung der Fehlerkorrekturcodedaten zu berechnen; oder (b) der gespeicherten Daten des Datenblocks, je nachdem, ob die Speichersteuerung (a) oder (b) zuerst erhält.
- Speichersystem nach Anspruch 1, wobei jedes Speichermodul ferner aufweist: eine Speicherschaltung; und eine Bus-Schnittstelle.
- Speichersystem nach Anspruch 1, wobei die Speichersteuerung ferner zur Kommunikation mit der Mehrzahl von Speichermodulen über einen Bus konfiguriert ist.
- Speichersystem nach Anspruch 1, wobei ein Speichermodul aus der Mehrzahl von Speichermodulen mindestens FLASH-Speicher umfasst.
- Speichersystem nach Anspruch 1, wobei die Fehlerkorrekturcodedaten Paritätsdaten sind.
- Speichersystem nach Anspruch 5, wobei der Datenblock und die Paritätsdaten für den Datenblock in der Gruppe von Speichermodulen derart gespeichert sind, dass das Fehlen von aus einem Speichermodul abgerufen Daten die Berechnung einer Ausgabe des in der Gruppe von Speichermodulen gespeicherten Datenblocks nicht verhindert.
- Speichersystem nach Anspruch 6, wobei die Ausgabe des Ausgabedatenblocks als exklusives ODER der Paritätsdaten für den gespeicherten Datenblock und dem unvollständigen gespeicherten Datenblock berechnet wird, wenn die Speichersteuerung zuerst den unvollständigen gespeicherten Datenblock sowie die Paritätsdaten für den gespeicherten Datenblock erhält.
- Speichersystem nach Anspruch 1, wobei das System derart konfiguriert ist, dass eine vollständige Überlappung eines Lösch- und/oder Schreibvorgangs bei zwei oder mehr Modulen der Gruppe von Speichermodulen aus der Mehrzahl von Speichermodulen nicht vorkommt.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US92073707P | 2007-03-29 | 2007-03-29 | |
US920737P | 2007-03-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE202008018572U1 true DE202008018572U1 (de) | 2015-11-27 |
Family
ID=39689485
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE202008018573.4U Expired - Lifetime DE202008018573U1 (de) | 2007-03-29 | 2008-03-27 | Speichersystem |
DE202008018572.6U Expired - Lifetime DE202008018572U1 (de) | 2007-03-29 | 2008-03-27 | Speichersystem |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE202008018573.4U Expired - Lifetime DE202008018573U1 (de) | 2007-03-29 | 2008-03-27 | Speichersystem |
Country Status (6)
Country | Link |
---|---|
US (6) | US8200887B2 (de) |
EP (2) | EP2132636B1 (de) |
KR (2) | KR101448192B1 (de) |
CN (2) | CN102346694B (de) |
DE (2) | DE202008018573U1 (de) |
WO (1) | WO2008121306A2 (de) |
Families Citing this family (491)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US9384818B2 (en) * | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
US11221917B1 (en) | 2005-09-30 | 2022-01-11 | Pure Storage, Inc. | Integrity processing in a dispersed storage network |
US11620185B2 (en) | 2005-09-30 | 2023-04-04 | Pure Storage, Inc. | Integrity processing in a dispersed storage network |
US10860424B1 (en) | 2005-09-30 | 2020-12-08 | Pure Storage, Inc. | Background verification processing in a storage network |
US8555109B2 (en) | 2009-07-30 | 2013-10-08 | Cleversafe, Inc. | Method and apparatus for distributed storage integrity processing |
US9632870B2 (en) | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US11010076B2 (en) | 2007-03-29 | 2021-05-18 | Violin Systems Llc | Memory system with multiple striping of raid groups and method for performing the same |
US8037272B2 (en) * | 2007-06-27 | 2011-10-11 | International Business Machines Corporation | Structure for memory chip for high capacity memory subsystem supporting multiple speed bus |
US7996641B2 (en) * | 2007-06-27 | 2011-08-09 | International Business Machines Corporation | Structure for hub for supporting high capacity memory subsystem |
US20090006774A1 (en) * | 2007-06-27 | 2009-01-01 | Gerald Keith Bartley | High Capacity Memory Subsystem Architecture Employing Multiple-Speed Bus |
US7822936B2 (en) * | 2007-06-27 | 2010-10-26 | International Business Machines Corporation | Memory chip for high capacity memory subsystem supporting replication of command data |
US7809913B2 (en) * | 2007-06-27 | 2010-10-05 | International Business Machines Corporation | Memory chip for high capacity memory subsystem supporting multiple speed bus |
US7921271B2 (en) * | 2007-06-27 | 2011-04-05 | International Business Machines Corporation | Hub for supporting high capacity memory subsystem |
US8037258B2 (en) * | 2007-06-27 | 2011-10-11 | International Business Machines Corporation | Structure for dual-mode memory chip for high capacity memory subsystem |
US8019949B2 (en) * | 2007-06-27 | 2011-09-13 | International Business Machines Corporation | High capacity memory subsystem architecture storing interleaved data for reduced bus speed |
US7818512B2 (en) * | 2007-06-27 | 2010-10-19 | International Business Machines Corporation | High capacity memory subsystem architecture employing hierarchical tree configuration of memory modules |
US7921264B2 (en) * | 2007-06-27 | 2011-04-05 | International Business Machines Corporation | Dual-mode memory chip for high capacity memory subsystem |
US8037270B2 (en) * | 2007-06-27 | 2011-10-11 | International Business Machines Corporation | Structure for memory chip for high capacity memory subsystem supporting replication of command data |
US8041990B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US8041989B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for providing a high fault tolerant memory system |
JP5335779B2 (ja) * | 2008-05-12 | 2013-11-06 | パナソニック株式会社 | 半導体記録装置 |
CN102124527A (zh) | 2008-05-16 | 2011-07-13 | 弗森-艾奥公司 | 用于检测和替代失效的数据存储器的装置、系统和方法 |
WO2010049928A1 (en) * | 2008-10-27 | 2010-05-06 | Kaminario Tehnologies Ltd. | System and methods for raid writing and asynchronous parity computation |
US8438455B2 (en) | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
US8327224B2 (en) * | 2009-04-16 | 2012-12-04 | Micron Technology, Inc. | Data recovery in a solid state storage system |
US7945822B1 (en) * | 2009-04-27 | 2011-05-17 | Netapp, Inc. | Storing data to multi-chip low-latency random read memory device using non-aligned striping |
US8281227B2 (en) | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US8307258B2 (en) | 2009-05-18 | 2012-11-06 | Fusion-10, Inc | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
JP2010282369A (ja) * | 2009-06-03 | 2010-12-16 | Toshiba Corp | メモリシステム |
KR101324688B1 (ko) | 2009-06-12 | 2013-11-04 | 바이올린 메모리 인코포레이티드 | 영구 가비지 컬렉션을 갖는 메모리 시스템 |
US8489915B2 (en) * | 2009-07-30 | 2013-07-16 | Cleversafe, Inc. | Method and apparatus for storage integrity processing based on error types in a dispersed storage network |
US8706980B2 (en) * | 2009-07-30 | 2014-04-22 | Cleversafe, Inc. | Method and apparatus for slice partial rebuilding in a dispersed storage network |
DE112010003345B4 (de) * | 2009-08-21 | 2017-07-27 | International Business Machines Corporation | Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems |
US8850103B2 (en) | 2009-08-28 | 2014-09-30 | Microsoft Corporation | Interruptible NAND flash memory |
US20110078343A1 (en) * | 2009-09-29 | 2011-03-31 | Cleversafe, Inc. | Distributed storage network including memory diversity |
US8266501B2 (en) * | 2009-09-29 | 2012-09-11 | Micron Technology, Inc. | Stripe based memory operation |
EP4361815A3 (de) * | 2009-10-09 | 2024-06-19 | Violin Systems LLC | Speichersystem mit multiple-striping von raid-gruppen und verfahren zur durchführung davon |
US8285946B2 (en) * | 2009-12-15 | 2012-10-09 | International Business Machines Corporation | Reducing access contention in flash-based memory systems |
KR101678868B1 (ko) | 2010-02-11 | 2016-11-23 | 삼성전자주식회사 | 플래시 주소 변환 장치 및 그 방법 |
US8671265B2 (en) | 2010-03-05 | 2014-03-11 | Solidfire, Inc. | Distributed data storage system providing de-duplication of data using block identifiers |
KR101541040B1 (ko) | 2010-03-12 | 2015-08-03 | 엘에스아이 코포레이션 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
US8365041B2 (en) * | 2010-03-17 | 2013-01-29 | Sandisk Enterprise Ip Llc | MLC self-raid flash data protection scheme |
US8478796B2 (en) * | 2010-03-23 | 2013-07-02 | Apple Inc. | Uncorrectable error handling schemes for non-volatile memories |
US8407517B2 (en) * | 2010-04-08 | 2013-03-26 | Hitachi, Ltd. | Methods and apparatus for managing error codes for storage systems coupled with external storage systems |
US8898511B2 (en) | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Homogeneous recovery in a redundant memory system |
US8549378B2 (en) | 2010-06-24 | 2013-10-01 | International Business Machines Corporation | RAIM system using decoding of virtual ECC |
US8631271B2 (en) | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US8484529B2 (en) | 2010-06-24 | 2013-07-09 | International Business Machines Corporation | Error correction and detection in a redundant memory system |
US20120054427A1 (en) * | 2010-08-27 | 2012-03-01 | Wei-Jen Huang | Increasing data access performance |
US8417877B2 (en) * | 2010-08-31 | 2013-04-09 | Micron Technology, Inc | Stripe-based non-volatile multilevel memory operation |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage environment |
US11275509B1 (en) | 2010-09-15 | 2022-03-15 | Pure Storage, Inc. | Intelligently sizing high latency I/O requests in a storage environment |
US9244769B2 (en) | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US8762644B2 (en) * | 2010-10-15 | 2014-06-24 | Qualcomm Incorporated | Low-power audio decoding and playback using cached images |
US9003153B2 (en) * | 2010-11-08 | 2015-04-07 | Greenliant Llc | Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system |
US8583987B2 (en) * | 2010-11-16 | 2013-11-12 | Micron Technology, Inc. | Method and apparatus to perform concurrent read and write memory operations |
EP2646922A4 (de) | 2010-12-01 | 2015-11-25 | Lsi Corp | Management eines dynamischen modus mit übergeordneter redundanz mit unabhängigen siliciumelementen |
WO2012099937A2 (en) | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
US9727414B2 (en) | 2010-12-01 | 2017-08-08 | Seagate Technology Llc | Fractional redundant array of silicon independent elements |
JP5720210B2 (ja) * | 2010-12-02 | 2015-05-20 | 富士通株式会社 | アクセス制御装置、誤り訂正制御方法およびストレージ装置 |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
US8522122B2 (en) | 2011-01-29 | 2013-08-27 | International Business Machines Corporation | Correcting memory device and memory channel failures in the presence of known memory device failures |
KR101778782B1 (ko) | 2011-04-08 | 2017-09-27 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20120129239A (ko) * | 2011-05-19 | 2012-11-28 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템 |
US9335939B2 (en) | 2011-07-12 | 2016-05-10 | Violin Memory Inc. | RAIDed memory system |
US9417823B2 (en) | 2011-07-12 | 2016-08-16 | Violin Memory Inc. | Memory system management |
US20130019057A1 (en) * | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US9195530B1 (en) | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
US8713357B1 (en) * | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8700834B2 (en) * | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8661320B2 (en) * | 2011-10-07 | 2014-02-25 | Aeroflex Colorado Springs Inc. | Independent orthogonal error correction and detection |
US8949553B2 (en) | 2011-10-28 | 2015-02-03 | Dell Products L.P. | System and method for retention of historical data in storage resources |
WO2013065085A1 (en) * | 2011-11-01 | 2013-05-10 | Hitachi, Ltd. | Nonvolatile storage system compensating prior probability for low-density parity check codes |
CN102419697B (zh) * | 2011-11-02 | 2013-12-18 | 华中科技大学 | 垂直raid-6编码中单盘重构的方法 |
US8762771B2 (en) * | 2011-11-04 | 2014-06-24 | Lsi Corporation | Method for completing write operations to a RAID drive pool with an abnormally slow drive in a timely fashion |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
JP5844473B2 (ja) * | 2012-02-08 | 2016-01-20 | 株式会社日立製作所 | 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法 |
KR101445025B1 (ko) | 2012-02-09 | 2014-09-26 | 서울시립대학교 산학협력단 | 신뢰성 있는 ssd를 위한 효율적인 raid 기법 |
WO2013119074A1 (ko) * | 2012-02-09 | 2013-08-15 | Noh Sam Hyuk | 신뢰성 있는 ssd를 위한 효율적인 raid 기법 |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US8341342B1 (en) | 2012-03-23 | 2012-12-25 | DSSD, Inc. | Storage system with incremental multi-dimensional RAID |
US8301832B1 (en) | 2012-03-23 | 2012-10-30 | DSSD, Inc. | Storage system with guaranteed read latency |
US8327185B1 (en) | 2012-03-23 | 2012-12-04 | DSSD, Inc. | Method and system for multi-dimensional raid |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
US9513845B2 (en) | 2012-03-30 | 2016-12-06 | Violin Memory Inc. | Memory module virtualization |
CN102662608B (zh) | 2012-03-30 | 2015-11-25 | 华为技术有限公司 | 一种降低读延时的方法及装置 |
WO2013158817A1 (en) | 2012-04-20 | 2013-10-24 | Violin Memory, Inc. | Lun management with distributed raid controllers |
KR102133316B1 (ko) | 2012-06-07 | 2020-07-21 | 바이올린 메모리 인코포레이티드 | 메모리 시스템 관리 |
US9170757B1 (en) | 2012-06-08 | 2015-10-27 | Violon Memory Inc. | Optimization of raid group storage |
WO2014008261A1 (en) | 2012-07-03 | 2014-01-09 | Violin Memory, Inc. | Synchronization of a dispersed raid group |
KR101925383B1 (ko) | 2012-07-23 | 2018-12-05 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 관리 방법 |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
US8909860B2 (en) | 2012-08-23 | 2014-12-09 | Cisco Technology, Inc. | Executing parallel operations to increase data access performance |
US8839074B2 (en) | 2012-09-13 | 2014-09-16 | Sandisk Technologies Inc. | On chip data recovery for non-volatile storage |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing data protection in a storage system |
US11032259B1 (en) | 2012-09-26 | 2021-06-08 | Pure Storage, Inc. | Data protection in a storage system |
EP2915049B1 (de) * | 2012-10-30 | 2020-03-04 | Hewlett-Packard Enterprise Development LP | Intelligente speicherpuffer |
US8464095B1 (en) | 2012-11-15 | 2013-06-11 | DSSD, Inc. | Method and system for multi-dimensional raid reconstruction and defect avoidance |
TWI506443B (zh) | 2012-12-27 | 2015-11-01 | Mediatek Inc | 處理器與週邊裝置之間的媒介週邊介面及其通信方法 |
US9436720B2 (en) | 2013-01-10 | 2016-09-06 | Pure Storage, Inc. | Safety for volume operations |
US8554997B1 (en) | 2013-01-18 | 2013-10-08 | DSSD, Inc. | Method and system for mirrored multi-dimensional raid |
US20140215148A1 (en) | 2013-01-31 | 2014-07-31 | International Business Machines Corporation | Limiting the execution of background management operations in a drive array |
US8713502B1 (en) | 2013-02-26 | 2014-04-29 | International Business Machines Corporation | Methods and systems to reduce a number of simulations in a timing analysis |
US9069695B2 (en) | 2013-03-14 | 2015-06-30 | Apple Inc. | Correction of block errors for a system having non-volatile memory |
GB2513377A (en) | 2013-04-25 | 2014-10-29 | Ibm | Controlling data storage in an array of storage devices |
KR102072829B1 (ko) | 2013-06-14 | 2020-02-03 | 삼성전자주식회사 | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 |
CN103336727B (zh) * | 2013-06-20 | 2016-06-22 | 酷丰实业(上海)有限公司 | 对nand闪存存储设备进行数据操作的方法 |
US20150071021A1 (en) * | 2013-09-11 | 2015-03-12 | Oracle International Corporation | Accessing independently addressable memory chips |
US9400745B2 (en) | 2013-11-06 | 2016-07-26 | International Business Machines Corporation | Physical address management in solid state memory |
US11630585B1 (en) | 2016-08-25 | 2023-04-18 | Pure Storage, Inc. | Processing evacuation events in a storage array that includes a plurality of storage devices |
US10365858B2 (en) | 2013-11-06 | 2019-07-30 | Pure Storage, Inc. | Thin provisioning in a storage device |
US11128448B1 (en) | 2013-11-06 | 2021-09-21 | Pure Storage, Inc. | Quorum-aware secret sharing |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
US8924776B1 (en) | 2013-12-04 | 2014-12-30 | DSSD, Inc. | Method and system for calculating parity values for multi-dimensional raid |
US10067829B2 (en) | 2013-12-13 | 2018-09-04 | Intel Corporation | Managing redundancy information in a non-volatile memory |
US9448924B2 (en) | 2014-01-08 | 2016-09-20 | Netapp, Inc. | Flash optimized, log-structured layer of a file system |
CN106170773A (zh) * | 2014-01-09 | 2016-11-30 | 桑迪士克科技有限责任公司 | 用于裸芯上缓冲式非易失性存储器的选择性回拷 |
US8949692B1 (en) | 2014-01-23 | 2015-02-03 | DSSD, Inc. | Method and system for service-aware parity placement in a storage system |
US9798620B2 (en) * | 2014-02-06 | 2017-10-24 | Sandisk Technologies Llc | Systems and methods for non-blocking solid-state memory |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US9778986B2 (en) * | 2014-03-28 | 2017-10-03 | Hitachi, Ltd. | Storage system |
US9779268B1 (en) | 2014-06-03 | 2017-10-03 | Pure Storage, Inc. | Utilizing a non-repeating identifier to encrypt data |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US10496556B1 (en) | 2014-06-25 | 2019-12-03 | Pure Storage, Inc. | Dynamic data protection within a flash storage system |
US9218407B1 (en) | 2014-06-25 | 2015-12-22 | Pure Storage, Inc. | Replication and intermediate read-write state for mediums |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
CN105450704A (zh) * | 2014-08-28 | 2016-03-30 | 北京兆易创新科技股份有限公司 | 一种用于闪存的网络存储设备及其处理方法 |
US10430079B2 (en) | 2014-09-08 | 2019-10-01 | Pure Storage, Inc. | Adjusting storage capacity in a computing system |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US10164841B2 (en) | 2014-10-02 | 2018-12-25 | Pure Storage, Inc. | Cloud assist for storage systems |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
CN104461379A (zh) * | 2014-10-31 | 2015-03-25 | 上海华为技术有限公司 | 提高nand闪存的稳定性的方法和nand闪存 |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US9727485B1 (en) | 2014-11-24 | 2017-08-08 | Pure Storage, Inc. | Metadata rewrite and flatten optimization |
US9766978B2 (en) | 2014-12-09 | 2017-09-19 | Marvell Israel (M.I.S.L) Ltd. | System and method for performing simultaneous read and write operations in a memory |
US9588842B1 (en) | 2014-12-11 | 2017-03-07 | Pure Storage, Inc. | Drive rebuild |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US10545987B2 (en) | 2014-12-19 | 2020-01-28 | Pure Storage, Inc. | Replication to the cloud |
CN105867833B (zh) * | 2015-01-21 | 2019-05-28 | 深圳市硅格半导体有限公司 | 数据存储装置及数据存储方法 |
US10296354B1 (en) | 2015-01-21 | 2019-05-21 | Pure Storage, Inc. | Optimized boot operations within a flash storage array |
US11947968B2 (en) | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
US10275310B2 (en) * | 2015-03-09 | 2019-04-30 | Western Digital Technologies, Inc. | Updating exclusive-or parity data |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US10466913B2 (en) | 2015-04-29 | 2019-11-05 | EMC IP Holding Company LLC | Method and system for replicating and using grid level metadata in a storage system |
US11403173B2 (en) | 2015-04-30 | 2022-08-02 | Marvell Israel (M.I.S.L) Ltd. | Multiple read and write port memory |
CN107787485B (zh) | 2015-04-30 | 2021-04-09 | 马维尔以色列(M.I.S.L.)有限公司 | 多读取和写入端口存储器 |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9740440B2 (en) * | 2015-05-21 | 2017-08-22 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Separating a hybrid asymmetric mix of a RAID 1 mirror and a parity-based RAID array |
US9716755B2 (en) | 2015-05-26 | 2017-07-25 | Pure Storage, Inc. | Providing cloud storage array services by a local storage array in a data center |
US11102298B1 (en) | 2015-05-26 | 2021-08-24 | Pure Storage, Inc. | Locally providing cloud storage services for fleet management |
US9594678B1 (en) | 2015-05-27 | 2017-03-14 | Pure Storage, Inc. | Preventing duplicate entries of identical data in a storage device |
US10021170B2 (en) | 2015-05-29 | 2018-07-10 | Pure Storage, Inc. | Managing a storage array using client-side services |
US11503031B1 (en) | 2015-05-29 | 2022-11-15 | Pure Storage, Inc. | Storage array access control from cloud-based user authorization and authentication |
US9588691B2 (en) | 2015-06-10 | 2017-03-07 | Pure Storage, Inc. | Dynamically managing control information in a storage device |
CN107615248B (zh) * | 2015-06-17 | 2019-12-13 | 华为技术有限公司 | 分布式数据存储方法、控制设备和系统 |
US9594512B1 (en) | 2015-06-19 | 2017-03-14 | Pure Storage, Inc. | Attributing consumed storage capacity among entities storing data in a storage array |
US9547441B1 (en) | 2015-06-23 | 2017-01-17 | Pure Storage, Inc. | Exposing a geometry of a storage device |
US10310740B2 (en) | 2015-06-23 | 2019-06-04 | Pure Storage, Inc. | Aligning memory access operations to a geometry of a storage device |
US10296236B2 (en) | 2015-07-01 | 2019-05-21 | Pure Storage, Inc. | Offloading device management responsibilities from a storage device in an array of storage devices |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
US9892071B2 (en) | 2015-08-03 | 2018-02-13 | Pure Storage, Inc. | Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array |
US11625181B1 (en) | 2015-08-24 | 2023-04-11 | Pure Storage, Inc. | Data tiering using snapshots |
US11294588B1 (en) | 2015-08-24 | 2022-04-05 | Pure Storage, Inc. | Placing data within a storage device |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
KR20170028825A (ko) | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색 |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US9530442B1 (en) * | 2015-09-23 | 2016-12-27 | Western Digital Technologies, Inc. | Enhanced low overhead data protection in data storage drives |
US11360844B1 (en) | 2015-10-23 | 2022-06-14 | Pure Storage, Inc. | Recovery of a container storage provider |
US10514978B1 (en) | 2015-10-23 | 2019-12-24 | Pure Storage, Inc. | Automatic deployment of corrective measures for storage arrays |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10284232B2 (en) | 2015-10-28 | 2019-05-07 | Pure Storage, Inc. | Dynamic error processing in a storage device |
US10374868B2 (en) | 2015-10-29 | 2019-08-06 | Pure Storage, Inc. | Distributed command processing in a flash storage system |
US9740414B2 (en) | 2015-10-29 | 2017-08-22 | Pure Storage, Inc. | Optimizing copy operations |
US10353777B2 (en) | 2015-10-30 | 2019-07-16 | Pure Storage, Inc. | Ensuring crash-safe forward progress of a system configuration update |
US9804787B2 (en) | 2015-11-03 | 2017-10-31 | Samsung Electronics Co., Ltd. | Mitigating GC effect in a raid configuration |
US10346246B2 (en) * | 2015-11-30 | 2019-07-09 | International Business Machines Corporation | Recovering data copies in a dispersed storage network |
US11762764B1 (en) | 2015-12-02 | 2023-09-19 | Pure Storage, Inc. | Writing data in a storage system that includes a first type of storage device and a second type of storage device |
US11616834B2 (en) | 2015-12-08 | 2023-03-28 | Pure Storage, Inc. | Efficient replication of a dataset to the cloud |
US10326836B2 (en) | 2015-12-08 | 2019-06-18 | Pure Storage, Inc. | Partially replicating a snapshot between storage systems |
US11347697B1 (en) | 2015-12-15 | 2022-05-31 | Pure Storage, Inc. | Proactively optimizing a storage system |
US10162835B2 (en) | 2015-12-15 | 2018-12-25 | Pure Storage, Inc. | Proactive management of a plurality of storage arrays in a multi-array system |
US10346043B2 (en) | 2015-12-28 | 2019-07-09 | Pure Storage, Inc. | Adaptive computing for data compression |
US10599518B2 (en) * | 2015-12-31 | 2020-03-24 | Texas Instruments Incorporated | Protecting data memory in a signal processing system |
WO2017127104A1 (en) * | 2016-01-22 | 2017-07-27 | Hewlett Packard Enterprise Development Lp | Inject delay to simulate latency |
US20170212705A1 (en) * | 2016-01-26 | 2017-07-27 | Netapp, Inc. | Dynamic Weighting for Distributed Parity Device Layouts |
US9886314B2 (en) | 2016-01-28 | 2018-02-06 | Pure Storage, Inc. | Placing workloads in a multi-array system |
US10572460B2 (en) | 2016-02-11 | 2020-02-25 | Pure Storage, Inc. | Compressing data in dependence upon characteristics of a storage system |
US9760297B2 (en) | 2016-02-12 | 2017-09-12 | Pure Storage, Inc. | Managing input/output (‘I/O’) queues in a data storage system |
US11995315B2 (en) | 2016-03-16 | 2024-05-28 | Pure Storage, Inc. | Converting data formats in a storage system |
US9959043B2 (en) | 2016-03-16 | 2018-05-01 | Pure Storage, Inc. | Performing a non-disruptive upgrade of data in a storage system |
WO2017164844A1 (en) * | 2016-03-22 | 2017-09-28 | Hewlett Packard Enterprise Development Lp | Memory |
US10127113B1 (en) | 2016-03-31 | 2018-11-13 | EMC IP Holding Company LLC | Method and system for checkerboard RAID |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US9841921B2 (en) | 2016-04-27 | 2017-12-12 | Pure Storage, Inc. | Migrating data in a storage array that includes a plurality of storage devices |
US11112990B1 (en) | 2016-04-27 | 2021-09-07 | Pure Storage, Inc. | Managing storage device evacuation |
US11809727B1 (en) | 2016-04-27 | 2023-11-07 | Pure Storage, Inc. | Predicting failures in a storage system that includes a plurality of storage devices |
US9811264B1 (en) | 2016-04-28 | 2017-11-07 | Pure Storage, Inc. | Deploying client-specific applications in a storage system utilizing redundant system resources |
US10545825B2 (en) * | 2016-04-29 | 2020-01-28 | Synamedia Limited | Fault-tolerant enterprise object storage system for small objects |
US10452297B1 (en) | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
US10303390B1 (en) | 2016-05-02 | 2019-05-28 | Pure Storage, Inc. | Resolving fingerprint collisions in flash storage system |
US10133503B1 (en) | 2016-05-02 | 2018-11-20 | Pure Storage, Inc. | Selecting a deduplication process based on a difference between performance metrics |
US9507532B1 (en) | 2016-05-20 | 2016-11-29 | Pure Storage, Inc. | Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices |
US11188270B2 (en) * | 2016-05-25 | 2021-11-30 | International Business Machines Corporation | Targeted secure data overwrite |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US10671439B1 (en) | 2016-09-07 | 2020-06-02 | Pure Storage, Inc. | Workload planning with quality-of-service (‘QOS’) integration |
US11481261B1 (en) | 2016-09-07 | 2022-10-25 | Pure Storage, Inc. | Preventing extended latency in a storage system |
US10235229B1 (en) | 2016-09-07 | 2019-03-19 | Pure Storage, Inc. | Rehabilitating storage devices in a storage array that includes a plurality of storage devices |
US10908966B1 (en) | 2016-09-07 | 2021-02-02 | Pure Storage, Inc. | Adapting target service times in a storage system |
US11531577B1 (en) | 2016-09-07 | 2022-12-20 | Pure Storage, Inc. | Temporarily limiting access to a storage device |
US10331588B2 (en) | 2016-09-07 | 2019-06-25 | Pure Storage, Inc. | Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling |
US10146585B2 (en) | 2016-09-07 | 2018-12-04 | Pure Storage, Inc. | Ensuring the fair utilization of system resources using workload based, time-independent scheduling |
US11960348B2 (en) | 2016-09-07 | 2024-04-16 | Pure Storage, Inc. | Cloud-based monitoring of hardware components in a fleet of storage systems |
US11886922B2 (en) | 2016-09-07 | 2024-01-30 | Pure Storage, Inc. | Scheduling input/output operations for a storage system |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US10162523B2 (en) | 2016-10-04 | 2018-12-25 | Pure Storage, Inc. | Migrating data between volumes using virtual copy operation |
US10545861B2 (en) | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US10191662B2 (en) | 2016-10-04 | 2019-01-29 | Pure Storage, Inc. | Dynamic allocation of segments in a flash storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10007459B2 (en) | 2016-10-20 | 2018-06-26 | Pure Storage, Inc. | Performance tuning in a storage system that includes one or more storage devices |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11379132B1 (en) | 2016-10-20 | 2022-07-05 | Pure Storage, Inc. | Correlating medical sensor data |
US10185505B1 (en) | 2016-10-28 | 2019-01-22 | Pure Storage, Inc. | Reading a portion of data to replicate a volume based on sequence numbers |
US10359942B2 (en) | 2016-10-31 | 2019-07-23 | Pure Storage, Inc. | Deduplication aware scalable content placement |
US9996285B2 (en) * | 2016-11-08 | 2018-06-12 | SK Hynix Inc. | Cyclically interleaved XOR array for error recovery |
US10162566B2 (en) | 2016-11-22 | 2018-12-25 | Pure Storage, Inc. | Accumulating application-level statistics in a storage system |
US11620075B2 (en) | 2016-11-22 | 2023-04-04 | Pure Storage, Inc. | Providing application aware storage |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
US10198205B1 (en) | 2016-12-19 | 2019-02-05 | Pure Storage, Inc. | Dynamically adjusting a number of storage devices utilized to simultaneously service write operations |
US11461273B1 (en) | 2016-12-20 | 2022-10-04 | Pure Storage, Inc. | Modifying storage distribution in a storage system that includes one or more storage devices |
US10489307B2 (en) | 2017-01-05 | 2019-11-26 | Pure Storage, Inc. | Periodically re-encrypting user data stored on a storage device |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US11093146B2 (en) | 2017-01-12 | 2021-08-17 | Pure Storage, Inc. | Automatic load rebalancing of a write group |
US10558519B2 (en) * | 2017-01-17 | 2020-02-11 | International Business Machines Corporation | Power-reduced redundant array of independent memory (RAIM) system |
US11340800B1 (en) | 2017-01-19 | 2022-05-24 | Pure Storage, Inc. | Content masking in a storage system |
US11163624B2 (en) | 2017-01-27 | 2021-11-02 | Pure Storage, Inc. | Dynamically adjusting an amount of log data generated for a storage system |
US11675520B2 (en) | 2017-03-10 | 2023-06-13 | Pure Storage, Inc. | Application replication among storage systems synchronously replicating a dataset |
US10521344B1 (en) | 2017-03-10 | 2019-12-31 | Pure Storage, Inc. | Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems |
US11941279B2 (en) | 2017-03-10 | 2024-03-26 | Pure Storage, Inc. | Data path virtualization |
US10503427B2 (en) | 2017-03-10 | 2019-12-10 | Pure Storage, Inc. | Synchronously replicating datasets and other managed objects to cloud-based storage systems |
US11442825B2 (en) | 2017-03-10 | 2022-09-13 | Pure Storage, Inc. | Establishing a synchronous replication relationship between two or more storage systems |
US11089105B1 (en) | 2017-12-14 | 2021-08-10 | Pure Storage, Inc. | Synchronously replicating datasets in cloud-based storage systems |
US12056383B2 (en) | 2017-03-10 | 2024-08-06 | Pure Storage, Inc. | Edge management service |
US11803453B1 (en) | 2017-03-10 | 2023-10-31 | Pure Storage, Inc. | Using host connectivity states to avoid queuing I/O requests |
US11169727B1 (en) | 2017-03-10 | 2021-11-09 | Pure Storage, Inc. | Synchronous replication between storage systems with virtualized storage |
JP6640776B2 (ja) * | 2017-03-17 | 2020-02-05 | キオクシア株式会社 | メモリシステム |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US10263643B2 (en) * | 2017-04-05 | 2019-04-16 | Alibaba Group Holding Limited | Method and system of multi-fold data protection for high-density storage appliance with improved availability and robustness |
US10459664B1 (en) | 2017-04-10 | 2019-10-29 | Pure Storage, Inc. | Virtualized copy-by-reference |
US9910618B1 (en) | 2017-04-10 | 2018-03-06 | Pure Storage, Inc. | Migrating applications executing on a storage system |
CN108572883B (zh) * | 2017-04-19 | 2021-06-18 | 北京金山云网络技术有限公司 | 一种数据正确性校验方法及装置 |
US11403019B2 (en) | 2017-04-21 | 2022-08-02 | Pure Storage, Inc. | Deduplication-aware per-tenant encryption |
US12045487B2 (en) | 2017-04-21 | 2024-07-23 | Pure Storage, Inc. | Preserving data deduplication in a multi-tenant storage system |
US10705911B2 (en) * | 2017-04-24 | 2020-07-07 | Hewlett Packard Enterprise Development Lp | Storing data in a distributed storage system |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10614019B2 (en) | 2017-04-28 | 2020-04-07 | EMC IP Holding Company LLC | Method and system for fast ordered writes with target collaboration |
US10289491B1 (en) | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance |
US10466930B2 (en) | 2017-04-28 | 2019-11-05 | EMC IP Holding Company LLC | Method and system for fast ordered writes with atomic multicast |
US10339062B2 (en) | 2017-04-28 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for writing data to and read data from persistent storage |
US11868629B1 (en) | 2017-05-05 | 2024-01-09 | Pure Storage, Inc. | Storage system sizing service |
CN113760786A (zh) * | 2017-05-10 | 2021-12-07 | 北京忆芯科技有限公司 | 页条带的数据组织以及向页条带写入数据的方法与装置 |
US10446174B2 (en) * | 2017-05-26 | 2019-10-15 | Microsoft Technology Licensing, Llc | File system for shingled magnetic recording (SMR) |
US10068663B1 (en) * | 2017-05-30 | 2018-09-04 | Seagate Technology Llc | Data storage device with rewriteable in-place memory |
WO2018226228A1 (en) * | 2017-06-08 | 2018-12-13 | Hitachi Data Systems Corporation | Deduplicating distributed erasure coded objects |
US12086651B2 (en) | 2017-06-12 | 2024-09-10 | Pure Storage, Inc. | Migrating workloads using active disaster recovery |
US10853148B1 (en) | 2017-06-12 | 2020-12-01 | Pure Storage, Inc. | Migrating workloads between a plurality of execution environments |
US10417092B2 (en) | 2017-09-07 | 2019-09-17 | Pure Storage, Inc. | Incremental RAID stripe update parity calculation |
US11609718B1 (en) | 2017-06-12 | 2023-03-21 | Pure Storage, Inc. | Identifying valid data after a storage system recovery |
US11340939B1 (en) | 2017-06-12 | 2022-05-24 | Pure Storage, Inc. | Application-aware analytics for storage systems |
US11593036B2 (en) | 2017-06-12 | 2023-02-28 | Pure Storage, Inc. | Staging data within a unified storage element |
US12086650B2 (en) | 2017-06-12 | 2024-09-10 | Pure Storage, Inc. | Workload placement based on carbon emissions |
US11989429B1 (en) | 2017-06-12 | 2024-05-21 | Pure Storage, Inc. | Recommending changes to a storage system |
US11016824B1 (en) | 2017-06-12 | 2021-05-25 | Pure Storage, Inc. | Event identification with out-of-order reporting in a cloud-based environment |
WO2018231350A1 (en) | 2017-06-12 | 2018-12-20 | Pure Storage, Inc. | Accessible fast durable storage integrated into a bulk storage device |
US11592991B2 (en) | 2017-09-07 | 2023-02-28 | Pure Storage, Inc. | Converting raid data between persistent storage types |
US10613791B2 (en) | 2017-06-12 | 2020-04-07 | Pure Storage, Inc. | Portable snapshot replication between storage systems |
US10976962B2 (en) | 2018-03-15 | 2021-04-13 | Pure Storage, Inc. | Servicing I/O operations in a cloud-based storage system |
US11442669B1 (en) | 2018-03-15 | 2022-09-13 | Pure Storage, Inc. | Orchestrating a virtual storage system |
US12061822B1 (en) | 2017-06-12 | 2024-08-13 | Pure Storage, Inc. | Utilizing volume-level policies in a storage system |
US11210133B1 (en) | 2017-06-12 | 2021-12-28 | Pure Storage, Inc. | Workload mobility between disparate execution environments |
US11422731B1 (en) | 2017-06-12 | 2022-08-23 | Pure Storage, Inc. | Metadata-based replication of a dataset |
US10884636B1 (en) | 2017-06-12 | 2021-01-05 | Pure Storage, Inc. | Presenting workload performance in a storage system |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10970204B2 (en) * | 2017-08-29 | 2021-04-06 | Samsung Electronics Co., Ltd. | Reducing read-write interference by adaptive scheduling in NAND flash SSDs |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10459798B2 (en) * | 2017-09-15 | 2019-10-29 | Seagate Technology Llc | Data storage system with multiple parity redundancy |
KR102369402B1 (ko) | 2017-09-20 | 2022-03-02 | 삼성전자주식회사 | 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템 |
US10776202B1 (en) | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
US10789211B1 (en) | 2017-10-04 | 2020-09-29 | Pure Storage, Inc. | Feature-based deduplication |
US10360214B2 (en) | 2017-10-19 | 2019-07-23 | Pure Storage, Inc. | Ensuring reproducibility in an artificial intelligence infrastructure |
US10452444B1 (en) | 2017-10-19 | 2019-10-22 | Pure Storage, Inc. | Storage system with compute resources and shared storage resources |
US11455168B1 (en) | 2017-10-19 | 2022-09-27 | Pure Storage, Inc. | Batch building for deep learning training workloads |
US11494692B1 (en) | 2018-03-26 | 2022-11-08 | Pure Storage, Inc. | Hyperscale artificial intelligence and machine learning infrastructure |
US11861423B1 (en) | 2017-10-19 | 2024-01-02 | Pure Storage, Inc. | Accelerating artificial intelligence (‘AI’) workflows |
US12067466B2 (en) | 2017-10-19 | 2024-08-20 | Pure Storage, Inc. | Artificial intelligence and machine learning hyperscale infrastructure |
US10671435B1 (en) | 2017-10-19 | 2020-06-02 | Pure Storage, Inc. | Data transformation caching in an artificial intelligence infrastructure |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10484174B1 (en) | 2017-11-01 | 2019-11-19 | Pure Storage, Inc. | Protecting an encryption key for data stored in a storage system that includes a plurality of storage devices |
US10817392B1 (en) | 2017-11-01 | 2020-10-27 | Pure Storage, Inc. | Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10929226B1 (en) | 2017-11-21 | 2021-02-23 | Pure Storage, Inc. | Providing for increased flexibility for large scale parity |
US10990282B1 (en) | 2017-11-28 | 2021-04-27 | Pure Storage, Inc. | Hybrid data tiering with cloud storage |
US10936238B2 (en) | 2017-11-28 | 2021-03-02 | Pure Storage, Inc. | Hybrid data tiering |
US10795598B1 (en) | 2017-12-07 | 2020-10-06 | Pure Storage, Inc. | Volume migration for storage systems synchronously replicating a dataset |
US11036677B1 (en) | 2017-12-14 | 2021-06-15 | Pure Storage, Inc. | Replicated data integrity |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
CN108280028B (zh) * | 2017-12-27 | 2024-04-05 | 浙江恒业电子股份有限公司 | 一种基于动态分配的智能电能表负荷记录实现的方法 |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US10970395B1 (en) | 2018-01-18 | 2021-04-06 | Pure Storage, Inc | Security threat monitoring for a storage system |
US11144638B1 (en) | 2018-01-18 | 2021-10-12 | Pure Storage, Inc. | Method for storage system detection and alerting on potential malicious action |
US10992533B1 (en) | 2018-01-30 | 2021-04-27 | Pure Storage, Inc. | Policy based path management |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
KR102378819B1 (ko) | 2018-02-20 | 2022-03-25 | 삼성전자주식회사 | 메모리 장치 |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US10942650B1 (en) | 2018-03-05 | 2021-03-09 | Pure Storage, Inc. | Reporting capacity utilization in a storage system |
US11861170B2 (en) | 2018-03-05 | 2024-01-02 | Pure Storage, Inc. | Sizing resources for a replication target |
US11150834B1 (en) | 2018-03-05 | 2021-10-19 | Pure Storage, Inc. | Determining storage consumption in a storage system |
US11972134B2 (en) | 2018-03-05 | 2024-04-30 | Pure Storage, Inc. | Resource utilization using normalized input/output (‘I/O’) operations |
US10521151B1 (en) | 2018-03-05 | 2019-12-31 | Pure Storage, Inc. | Determining effective space utilization in a storage system |
US10296258B1 (en) | 2018-03-09 | 2019-05-21 | Pure Storage, Inc. | Offloading data storage to a decentralized storage network |
US11288138B1 (en) | 2018-03-15 | 2022-03-29 | Pure Storage, Inc. | Recovery from a system fault in a cloud-based storage system |
US10917471B1 (en) | 2018-03-15 | 2021-02-09 | Pure Storage, Inc. | Active membership in a cloud-based storage system |
US12066900B2 (en) | 2018-03-15 | 2024-08-20 | Pure Storage, Inc. | Managing disaster recovery to cloud computing environment |
US11048590B1 (en) | 2018-03-15 | 2021-06-29 | Pure Storage, Inc. | Data consistency during recovery in a cloud-based storage system |
US10924548B1 (en) | 2018-03-15 | 2021-02-16 | Pure Storage, Inc. | Symmetric storage using a cloud-based storage system |
US11210009B1 (en) | 2018-03-15 | 2021-12-28 | Pure Storage, Inc. | Staging data in a cloud-based storage system |
US11095706B1 (en) | 2018-03-21 | 2021-08-17 | Pure Storage, Inc. | Secure cloud-based storage system management |
US11171950B1 (en) | 2018-03-21 | 2021-11-09 | Pure Storage, Inc. | Secure cloud-based storage system management |
US10838833B1 (en) | 2018-03-26 | 2020-11-17 | Pure Storage, Inc. | Providing for high availability in a data analytics pipeline without replicas |
US11934322B1 (en) | 2018-04-05 | 2024-03-19 | Pure Storage, Inc. | Multiple encryption keys on storage drives |
US11392553B1 (en) | 2018-04-24 | 2022-07-19 | Pure Storage, Inc. | Remote data management |
US11436344B1 (en) | 2018-04-24 | 2022-09-06 | Pure Storage, Inc. | Secure encryption in deduplication cluster |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US10678433B1 (en) | 2018-04-27 | 2020-06-09 | Pure Storage, Inc. | Resource-preserving system upgrade |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US11675503B1 (en) | 2018-05-21 | 2023-06-13 | Pure Storage, Inc. | Role-based data access |
US11954220B2 (en) | 2018-05-21 | 2024-04-09 | Pure Storage, Inc. | Data protection for container storage |
US12086431B1 (en) | 2018-05-21 | 2024-09-10 | Pure Storage, Inc. | Selective communication protocol layering for synchronous replication |
US11455409B2 (en) | 2018-05-21 | 2022-09-27 | Pure Storage, Inc. | Storage layer data obfuscation |
US20190354628A1 (en) | 2018-05-21 | 2019-11-21 | Pure Storage, Inc. | Asynchronous replication of synchronously replicated data |
US10871922B2 (en) | 2018-05-22 | 2020-12-22 | Pure Storage, Inc. | Integrated storage management between storage systems and container orchestrators |
US10678436B1 (en) | 2018-05-29 | 2020-06-09 | Pure Storage, Inc. | Using a PID controller to opportunistically compress more data during garbage collection |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
EP3803599A4 (de) * | 2018-06-01 | 2022-01-26 | Microsoft Technology Licensing, LLC | Löschcodierung mit überlappenden lokalen rekonstruktionscodes |
US10776046B1 (en) | 2018-06-08 | 2020-09-15 | Pure Storage, Inc. | Optimized non-uniform memory access |
US11281577B1 (en) | 2018-06-19 | 2022-03-22 | Pure Storage, Inc. | Garbage collection tuning for low drive wear |
US11869586B2 (en) | 2018-07-11 | 2024-01-09 | Pure Storage, Inc. | Increased data protection by recovering data from partially-failed solid-state devices |
CN110737615B (zh) * | 2018-07-19 | 2021-06-08 | 海鹰航空通用装备有限责任公司 | 一种数据存取方法及装置 |
US11403000B1 (en) | 2018-07-20 | 2022-08-02 | Pure Storage, Inc. | Resiliency in a cloud-based storage system |
US11416298B1 (en) | 2018-07-20 | 2022-08-16 | Pure Storage, Inc. | Providing application-specific storage by a storage system |
US11954238B1 (en) | 2018-07-24 | 2024-04-09 | Pure Storage, Inc. | Role-based access control for a storage system |
US11146564B1 (en) | 2018-07-24 | 2021-10-12 | Pure Storage, Inc. | Login authentication in a cloud storage platform |
US11632360B1 (en) | 2018-07-24 | 2023-04-18 | Pure Storage, Inc. | Remote access to a storage device |
US11194759B2 (en) | 2018-09-06 | 2021-12-07 | Pure Storage, Inc. | Optimizing local data relocation operations of a storage device of a storage system |
US11133076B2 (en) | 2018-09-06 | 2021-09-28 | Pure Storage, Inc. | Efficient relocation of data between storage devices of a storage system |
US11860820B1 (en) | 2018-09-11 | 2024-01-02 | Pure Storage, Inc. | Processing data through a storage system in a data pipeline |
US10846216B2 (en) | 2018-10-25 | 2020-11-24 | Pure Storage, Inc. | Scalable garbage collection |
CN111104046B (zh) | 2018-10-25 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | 管理冗余磁盘阵列的方法、设备和计算机可读存储介质 |
CN109491926B (zh) * | 2018-10-26 | 2023-03-28 | 浙江工商大学 | 基于延长写时间的优化非易失性存储器写寿命的内存管理方法 |
US12026381B2 (en) | 2018-10-26 | 2024-07-02 | Pure Storage, Inc. | Preserving identities and policies across replication |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
US10671302B1 (en) | 2018-10-26 | 2020-06-02 | Pure Storage, Inc. | Applying a rate limit across a plurality of storage systems |
KR102689927B1 (ko) * | 2018-11-16 | 2024-07-31 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US10963189B1 (en) | 2018-11-18 | 2021-03-30 | Pure Storage, Inc. | Coalescing write operations in a cloud-based storage system |
US11526405B1 (en) | 2018-11-18 | 2022-12-13 | Pure Storage, Inc. | Cloud-based disaster recovery |
US11023179B2 (en) | 2018-11-18 | 2021-06-01 | Pure Storage, Inc. | Cloud-based storage system storage management |
US12026060B1 (en) | 2018-11-18 | 2024-07-02 | Pure Storage, Inc. | Reverting between codified states in a cloud-based storage system |
US11340837B1 (en) | 2018-11-18 | 2022-05-24 | Pure Storage, Inc. | Storage system management via a remote console |
US12026061B1 (en) | 2018-11-18 | 2024-07-02 | Pure Storage, Inc. | Restoring a cloud-based storage system to a selected state |
US10997071B2 (en) * | 2018-11-27 | 2021-05-04 | Micron Technology, Inc. | Write width aligned storage device buffer flush |
US10949297B2 (en) * | 2018-12-05 | 2021-03-16 | Micron Technology, Inc. | NAND device mixed parity management |
US11650749B1 (en) | 2018-12-17 | 2023-05-16 | Pure Storage, Inc. | Controlling access to sensitive data in a shared dataset |
TWI720400B (zh) * | 2019-01-04 | 2021-03-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
CN111435287B (zh) * | 2019-01-14 | 2023-06-27 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
US11003369B1 (en) | 2019-01-14 | 2021-05-11 | Pure Storage, Inc. | Performing a tune-up procedure on a storage device during a boot process |
US11194473B1 (en) | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
US11588633B1 (en) | 2019-03-15 | 2023-02-21 | Pure Storage, Inc. | Decommissioning keys in a decryption storage system |
US11042452B1 (en) | 2019-03-20 | 2021-06-22 | Pure Storage, Inc. | Storage system data recovery using data recovery as a service |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11221778B1 (en) | 2019-04-02 | 2022-01-11 | Pure Storage, Inc. | Preparing data for deduplication |
US11397674B1 (en) | 2019-04-03 | 2022-07-26 | Pure Storage, Inc. | Optimizing garbage collection across heterogeneous flash devices |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US10990480B1 (en) | 2019-04-05 | 2021-04-27 | Pure Storage, Inc. | Performance of RAID rebuild operations by a storage group controller of a storage system |
US11068162B1 (en) | 2019-04-09 | 2021-07-20 | Pure Storage, Inc. | Storage management in a cloud data store |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11392555B2 (en) | 2019-05-15 | 2022-07-19 | Pure Storage, Inc. | Cloud-based file services |
US11853266B2 (en) | 2019-05-15 | 2023-12-26 | Pure Storage, Inc. | Providing a file system in a cloud environment |
US11126364B2 (en) | 2019-07-18 | 2021-09-21 | Pure Storage, Inc. | Virtual storage system architecture |
US11327676B1 (en) | 2019-07-18 | 2022-05-10 | Pure Storage, Inc. | Predictive data streaming in a virtual storage system |
CN110196687B (zh) * | 2019-05-20 | 2023-02-03 | 杭州宏杉科技股份有限公司 | 数据读写方法、装置、电子设备 |
US12001355B1 (en) | 2019-05-24 | 2024-06-04 | Pure Storage, Inc. | Chunked memory efficient storage data transfers |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11514027B2 (en) * | 2019-06-07 | 2022-11-29 | Sap Se | Paged hybrid LOBs |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10929046B2 (en) | 2019-07-09 | 2021-02-23 | Pure Storage, Inc. | Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device |
US11487715B1 (en) | 2019-07-18 | 2022-11-01 | Pure Storage, Inc. | Resiliency in a cloud-based storage system |
US11550514B2 (en) | 2019-07-18 | 2023-01-10 | Pure Storage, Inc. | Efficient transfers between tiers of a virtual storage system |
US11526408B2 (en) * | 2019-07-18 | 2022-12-13 | Pure Storage, Inc. | Data recovery in a virtual storage system |
US11861221B1 (en) | 2019-07-18 | 2024-01-02 | Pure Storage, Inc. | Providing scalable and reliable container-based storage services |
US11093139B1 (en) | 2019-07-18 | 2021-08-17 | Pure Storage, Inc. | Durably storing data within a virtual storage system |
US11422751B2 (en) | 2019-07-18 | 2022-08-23 | Pure Storage, Inc. | Creating a virtual storage system |
US11086713B1 (en) | 2019-07-23 | 2021-08-10 | Pure Storage, Inc. | Optimized end-to-end integrity storage system |
US11086553B1 (en) | 2019-08-28 | 2021-08-10 | Pure Storage, Inc. | Tiering duplicated objects in a cloud-based object store |
US11693713B1 (en) | 2019-09-04 | 2023-07-04 | Pure Storage, Inc. | Self-tuning clusters for resilient microservices |
US11963321B2 (en) | 2019-09-11 | 2024-04-16 | Pure Storage, Inc. | Low profile latching mechanism |
US12045252B2 (en) | 2019-09-13 | 2024-07-23 | Pure Storage, Inc. | Providing quality of service (QoS) for replicating datasets |
US11625416B1 (en) | 2019-09-13 | 2023-04-11 | Pure Storage, Inc. | Uniform model for distinct types of data replication |
US11797569B2 (en) | 2019-09-13 | 2023-10-24 | Pure Storage, Inc. | Configurable data replication |
US11573864B1 (en) | 2019-09-16 | 2023-02-07 | Pure Storage, Inc. | Automating database management in a storage system |
US11669386B1 (en) | 2019-10-08 | 2023-06-06 | Pure Storage, Inc. | Managing an application's resource stack |
US11403043B2 (en) | 2019-10-15 | 2022-08-02 | Pure Storage, Inc. | Efficient data compression by grouping similar data within a data segment |
US11625481B2 (en) | 2019-11-22 | 2023-04-11 | Pure Storage, Inc. | Selective throttling of operations potentially related to a security threat to a storage system |
US12050683B2 (en) * | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system |
US12079333B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Independent security threat detection and remediation by storage systems in a synchronous replication arrangement |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US12079356B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Measurement interval anomaly detection-based generation of snapshots |
US11720714B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Inter-I/O relationship based detection of a security threat to a storage system |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US12050689B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Host anomaly-based generation of snapshots |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US12067118B2 (en) | 2019-11-22 | 2024-08-20 | Pure Storage, Inc. | Detection of writing to a non-header portion of a file as an indicator of a possible ransomware attack against a storage system |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US11657155B2 (en) | 2019-11-22 | 2023-05-23 | Pure Storage, Inc | Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US12079502B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Storage element attribute-based determination of a data protection policy for use within a storage system |
US11755751B2 (en) | 2019-11-22 | 2023-09-12 | Pure Storage, Inc. | Modify access restrictions in response to a possible attack against data stored by a storage system |
US11531487B1 (en) | 2019-12-06 | 2022-12-20 | Pure Storage, Inc. | Creating a replica of a storage system |
US11720497B1 (en) | 2020-01-13 | 2023-08-08 | Pure Storage, Inc. | Inferred nonsequential prefetch based on data access patterns |
US11709636B1 (en) | 2020-01-13 | 2023-07-25 | Pure Storage, Inc. | Non-sequential readahead for deep learning training |
US11733901B1 (en) | 2020-01-13 | 2023-08-22 | Pure Storage, Inc. | Providing persistent storage to transient cloud computing services |
US11520659B2 (en) * | 2020-01-13 | 2022-12-06 | International Business Machines Corporation | Refresh-hiding memory system staggered refresh |
US11200119B2 (en) | 2020-01-13 | 2021-12-14 | International Business Machines Corporation | Low latency availability in degraded redundant array of independent memory |
US12014065B2 (en) | 2020-02-11 | 2024-06-18 | Pure Storage, Inc. | Multi-cloud orchestration as-a-service |
US11637896B1 (en) | 2020-02-25 | 2023-04-25 | Pure Storage, Inc. | Migrating applications to a cloud-computing environment |
US11868622B2 (en) | 2020-02-25 | 2024-01-09 | Pure Storage, Inc. | Application recovery across storage systems |
US12038881B2 (en) | 2020-03-25 | 2024-07-16 | Pure Storage, Inc. | Replica transitions for file storage |
US12124725B2 (en) | 2020-03-25 | 2024-10-22 | Pure Storage, Inc. | Managing host mappings for replication endpoints |
US11321006B1 (en) | 2020-03-25 | 2022-05-03 | Pure Storage, Inc. | Data loss prevention during transitions from a replication source |
US11630598B1 (en) | 2020-04-06 | 2023-04-18 | Pure Storage, Inc. | Scheduling data replication operations |
US11301152B1 (en) | 2020-04-06 | 2022-04-12 | Pure Storage, Inc. | Intelligently moving data between storage systems |
US11494267B2 (en) | 2020-04-14 | 2022-11-08 | Pure Storage, Inc. | Continuous value data redundancy |
US11921670B1 (en) | 2020-04-20 | 2024-03-05 | Pure Storage, Inc. | Multivariate data backup retention policies |
US12131056B2 (en) | 2020-05-08 | 2024-10-29 | Pure Storage, Inc. | Providing data management as-a-service |
US11431488B1 (en) | 2020-06-08 | 2022-08-30 | Pure Storage, Inc. | Protecting local key generation using a remote key management service |
US11349917B2 (en) | 2020-07-23 | 2022-05-31 | Pure Storage, Inc. | Replication handling among distinct networks |
US11442652B1 (en) | 2020-07-23 | 2022-09-13 | Pure Storage, Inc. | Replication handling during storage system transportation |
CN114063887A (zh) * | 2020-07-31 | 2022-02-18 | 深圳市中兴微电子技术有限公司 | 写入及读取方法、处理器芯片、存储介质和电子设备 |
US12079222B1 (en) | 2020-09-04 | 2024-09-03 | Pure Storage, Inc. | Enabling data portability between systems |
US12131044B2 (en) | 2020-09-04 | 2024-10-29 | Pure Storage, Inc. | Intelligent application placement in a hybrid infrastructure |
US11960754B2 (en) | 2020-12-30 | 2024-04-16 | Micron Technology, Inc. | Memory sub-system memory bank search component |
US11397545B1 (en) | 2021-01-20 | 2022-07-26 | Pure Storage, Inc. | Emulating persistent reservations in a cloud-based storage system |
US11853285B1 (en) | 2021-01-22 | 2023-12-26 | Pure Storage, Inc. | Blockchain logging of volume-level events in a storage system |
US12086649B2 (en) | 2021-05-12 | 2024-09-10 | Pure Storage, Inc. | Rebalancing in a fleet of storage systems using data science |
CN112988081B (zh) * | 2021-05-17 | 2021-08-17 | 浙江正泰仪器仪表有限责任公司 | 一种电量数据存储、抄读方法 |
US11816129B2 (en) | 2021-06-22 | 2023-11-14 | Pure Storage, Inc. | Generating datasets using approximate baselines |
US11893263B2 (en) | 2021-10-29 | 2024-02-06 | Pure Storage, Inc. | Coordinated checkpoints among storage systems implementing checkpoint-based replication |
CN113946469B (zh) * | 2021-10-29 | 2024-05-24 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的数据纠错处理方法及装置 |
US11714723B2 (en) | 2021-10-29 | 2023-08-01 | Pure Storage, Inc. | Coordinated snapshots for data stored across distinct storage environments |
US11914867B2 (en) | 2021-10-29 | 2024-02-27 | Pure Storage, Inc. | Coordinated snapshots among storage systems implementing a promotion/demotion model |
CN114153648B (zh) * | 2021-12-03 | 2022-09-16 | 海光信息技术股份有限公司 | 数据读取、写入方法及装置、软错误处理系统 |
TWI764856B (zh) | 2021-12-13 | 2022-05-11 | 慧榮科技股份有限公司 | 記憶體控制器與資料處理方法 |
US11922052B2 (en) | 2021-12-15 | 2024-03-05 | Pure Storage, Inc. | Managing links between storage objects |
US11847071B2 (en) | 2021-12-30 | 2023-12-19 | Pure Storage, Inc. | Enabling communication between a single-port device and multiple storage system controllers |
US12001300B2 (en) | 2022-01-04 | 2024-06-04 | Pure Storage, Inc. | Assessing protection for storage resources |
US11860780B2 (en) | 2022-01-28 | 2024-01-02 | Pure Storage, Inc. | Storage cache management |
US11886295B2 (en) | 2022-01-31 | 2024-01-30 | Pure Storage, Inc. | Intra-block error correction |
CN114968653B (zh) * | 2022-07-14 | 2022-11-11 | 麒麟软件有限公司 | 一种zfs文件系统的raidz校验值的确定方法 |
Family Cites Families (123)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4363094A (en) | 1977-12-29 | 1982-12-07 | M/A-COM DDC, Inc. | Communications processor |
US4791552A (en) * | 1986-01-29 | 1988-12-13 | Digital Equipment Corporation | Apparatus and method for addressing semiconductor arrays in a main memory unit on consecutive system clock cycles |
US4843288A (en) | 1988-03-28 | 1989-06-27 | Rigidyne Corporation | Phase locked motor control system for multiple disk drive units |
US5128810A (en) | 1988-08-02 | 1992-07-07 | Cray Research, Inc. | Single disk emulation interface for an array of synchronous spindle disk drives |
EP0544954B1 (de) | 1991-12-05 | 1996-04-24 | International Business Machines Corporation | Plattenlaufwerksynchronisierung |
EP0547769B1 (de) | 1991-12-18 | 1999-10-13 | Sun Microsystems, Inc. | Schreibüberlappung mit Verhinderung des Überschreibens |
JP3412839B2 (ja) | 1992-07-01 | 2003-06-03 | 株式会社東芝 | 不揮発性半導体メモリ装置 |
ATE222384T1 (de) | 1993-06-03 | 2002-08-15 | Network Appliance Inc | Verfahren und dateisystem zur zuordnung von datei-blöcken zu speicherplatz in einem raid- plattensystem |
US5522031A (en) | 1993-06-29 | 1996-05-28 | Digital Equipment Corporation | Method and apparatus for the on-line restoration of a disk in a RAID-4 or RAID-5 array with concurrent access by applications |
US5623595A (en) * | 1994-09-26 | 1997-04-22 | Oracle Corporation | Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system |
DE19540915A1 (de) * | 1994-11-10 | 1996-05-15 | Raymond Engineering | Redundante Anordnung von Festkörper-Speicherbausteinen |
US5799140A (en) | 1995-04-21 | 1998-08-25 | International Business Machines Corporation | Disk array system and method for storing data |
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 |
US6151289A (en) | 1996-01-22 | 2000-11-21 | T. Squared G, Inc. | Multibyte random access mass storage/memory system |
JPH09265357A (ja) | 1996-03-27 | 1997-10-07 | Ekushingu:Kk | ディスクアレイ装置 |
US6018778A (en) | 1996-05-03 | 2000-01-25 | Netcell Corporation | Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory |
JP3976839B2 (ja) | 1996-07-09 | 2007-09-19 | 株式会社ルネサステクノロジ | 不揮発性メモリシステムおよび不揮発性半導体メモリ |
US5771346A (en) | 1996-10-24 | 1998-06-23 | Micron Quantum Devices, Inc. | Apparatus and method for detecting over-programming condition in multistate memory device |
US5974503A (en) | 1997-04-25 | 1999-10-26 | Emc Corporation | Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names |
US6226708B1 (en) | 1997-08-18 | 2001-05-01 | Texas Instruments Incorporated | Method and system for efficiently programming non-volatile memory |
JP3618529B2 (ja) | 1997-11-04 | 2005-02-09 | 富士通株式会社 | ディスクアレイ装置 |
US6009547A (en) | 1997-12-03 | 1999-12-28 | International Business Machines Corporation | ECC in memory arrays having subsequent insertion of content |
US6353895B1 (en) | 1998-02-19 | 2002-03-05 | Adaptec, Inc. | RAID architecture with two-drive fault tolerance |
JP4085478B2 (ja) | 1998-07-28 | 2008-05-14 | ソニー株式会社 | 記憶媒体及び電子機器システム |
US6374337B1 (en) * | 1998-11-17 | 2002-04-16 | Lexar Media, Inc. | Data pipelining method and apparatus for memory control circuit |
JP2000173289A (ja) | 1998-12-10 | 2000-06-23 | Toshiba Corp | エラー訂正可能なフラッシュメモリシステム |
US6205571B1 (en) | 1998-12-29 | 2001-03-20 | International Business Machines Corporation | X-Y grid tree tuning method |
US6321345B1 (en) | 1999-03-01 | 2001-11-20 | Seachange Systems, Inc. | Slow response in redundant arrays of inexpensive disks |
US6484235B1 (en) | 1999-05-03 | 2002-11-19 | 3Ware, Inc. | Methods and systems for dynamically distributing disk array data accesses |
US6745363B2 (en) | 1999-07-30 | 2004-06-01 | Hewlett-Packard Development Company, Lp | Early error detection using ECC |
US6425052B1 (en) | 1999-10-28 | 2002-07-23 | Sun Microsystems, Inc. | Load balancing configuration for storage arrays employing mirroring and striping |
JP3573032B2 (ja) | 1999-11-09 | 2004-10-06 | 日本電気株式会社 | ディスクアレイ装置 |
US6581185B1 (en) * | 2000-01-24 | 2003-06-17 | Storage Technology Corporation | Apparatus and method for reconstructing data using cross-parity stripes on storage media |
US6834326B1 (en) | 2000-02-04 | 2004-12-21 | 3Com Corporation | RAID method and device with network protocol between controller and storage devices |
US6851026B1 (en) * | 2000-07-28 | 2005-02-01 | Micron Technology, Inc. | Synchronous flash memory with concurrent write and read operation |
US8281022B1 (en) | 2000-06-30 | 2012-10-02 | Emc Corporation | Method and apparatus for implementing high-performance, scaleable data processing and storage systems |
US6883044B1 (en) * | 2000-07-28 | 2005-04-19 | Micron Technology, Inc. | Synchronous flash memory with simultaneous access to one or more banks |
GB0022131D0 (en) * | 2000-09-09 | 2000-10-25 | Ibm | Data sorting in information storage systems |
GB0025226D0 (en) | 2000-10-14 | 2000-11-29 | Ibm | Data storage system and method of storing data |
EP1204027A2 (de) | 2000-11-02 | 2002-05-08 | Matsushita Electric Industrial Co., Ltd. | On-line Wiederherstellungsverfahren und -gerät |
US6813688B2 (en) | 2000-12-04 | 2004-11-02 | Sun Microsystems, Inc. | System and method for efficient data mirroring in a pair of storage devices |
US6973484B1 (en) * | 2000-12-29 | 2005-12-06 | 3Pardata, Inc. | Method of communicating data in an interconnect system |
US6763424B2 (en) | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US6862692B2 (en) * | 2001-01-29 | 2005-03-01 | Adaptec, Inc. | Dynamic redistribution of parity groups |
US6820152B2 (en) * | 2001-04-25 | 2004-11-16 | Matsushita Electric Industrial Co., Ltd. | Memory control device and LSI |
JP2003076498A (ja) | 2001-09-05 | 2003-03-14 | Hitachi Ltd | ディスク記憶装置 |
US6845465B2 (en) * | 2001-09-17 | 2005-01-18 | Sun Microsystems, Inc. | Method and system for leveraging spares in a data storage system including a plurality of disk drives |
US6938133B2 (en) | 2001-09-28 | 2005-08-30 | Hewlett-Packard Development Company, L.P. | Memory latency and bandwidth optimizations |
GB0123416D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
US20030084397A1 (en) * | 2001-10-31 | 2003-05-01 | Exanet Co. | Apparatus and method for a distributed raid |
US6760807B2 (en) | 2001-11-14 | 2004-07-06 | International Business Machines Corporation | System, apparatus and method providing adaptive write policy for disk array controllers |
US6785771B2 (en) | 2001-12-04 | 2004-08-31 | International Business Machines Corporation | Method, system, and program for destaging data in cache |
JP3967121B2 (ja) | 2001-12-11 | 2007-08-29 | 株式会社ルネサステクノロジ | ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム |
US7640484B2 (en) * | 2001-12-28 | 2009-12-29 | Netapp, Inc. | Triple parity technique for enabling efficient recovery from triple failures in a storage array |
US6871257B2 (en) | 2002-02-22 | 2005-03-22 | Sandisk Corporation | Pipelined parallel programming operation in a non-volatile memory system |
WO2003085677A1 (fr) * | 2002-04-05 | 2003-10-16 | Renesas Technology Corp. | Memoire non volatile |
US20030208511A1 (en) | 2002-05-02 | 2003-11-06 | Earl Leroy D. | Database replication system |
US6789165B2 (en) | 2002-05-10 | 2004-09-07 | International Business Machines Corporation | Data storage array method and system |
US7149857B2 (en) | 2002-05-14 | 2006-12-12 | Micron Technology, Inc. | Out of order DRAM sequencer |
US7734867B1 (en) * | 2002-05-17 | 2010-06-08 | Hewlett-Packard Development Company, L.P. | Data storage using disk drives in accordance with a schedule of operations |
EP1523711A1 (de) * | 2002-06-19 | 2005-04-20 | Tokyo Electron Device Limited | Speicherbaustein, speicherverwaltungsverfahren und programm |
US7191304B1 (en) * | 2002-09-06 | 2007-03-13 | 3Pardata, Inc. | Efficient and reliable virtual volume mapping |
US20040153902A1 (en) | 2003-01-21 | 2004-08-05 | Nexflash Technologies, Inc. | Serial flash integrated circuit having error detection and correction |
US7143305B2 (en) * | 2003-06-25 | 2006-11-28 | International Business Machines Corporation | Using redundant spares to reduce storage device array rebuild time |
US7007115B2 (en) * | 2003-07-18 | 2006-02-28 | Intel Corporation | Removing lane-to-lane skew |
US7191283B2 (en) * | 2003-08-21 | 2007-03-13 | International Business Machines Corporation | Grouping of storage media based on parameters associated with the storage media |
JP4437650B2 (ja) * | 2003-08-25 | 2010-03-24 | 株式会社日立製作所 | ストレージシステム |
US7149950B2 (en) | 2003-09-12 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | Assisted memory device for reading and writing single and multiple units of data |
US7310703B2 (en) | 2003-10-23 | 2007-12-18 | Hewlett-Packard Development Company, L.P. | Methods of reading and writing data |
JP4493321B2 (ja) * | 2003-11-19 | 2010-06-30 | 株式会社日立製作所 | ディスクアレイ装置及びデータ退避方法 |
JP4486348B2 (ja) * | 2003-11-26 | 2010-06-23 | 株式会社日立製作所 | ドライブの稼働時間を抑止するディスクアレイ |
US20090204872A1 (en) * | 2003-12-02 | 2009-08-13 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
US7913148B2 (en) | 2004-03-12 | 2011-03-22 | Nvidia Corporation | Disk controller methods and apparatus with improved striping, redundancy operations and interfaces |
US7203889B2 (en) | 2004-04-01 | 2007-04-10 | Intel Corporation | Error correction for memory |
US7213103B2 (en) | 2004-04-22 | 2007-05-01 | Apple Inc. | Accessing data storage systems without waiting for read errors |
US20050246362A1 (en) | 2004-05-03 | 2005-11-03 | Borland Devin P | System and method for dynamci log compression in a file system |
US7093157B2 (en) * | 2004-06-17 | 2006-08-15 | International Business Machines Corporation | Method and system for autonomic protection against data strip loss |
US7366852B2 (en) | 2004-07-29 | 2008-04-29 | Infortrend Technology, Inc. | Method for improving data reading performance and storage system for performing the same |
US7418560B2 (en) * | 2004-09-23 | 2008-08-26 | Sap Ag | Centralized cache storage for runtime systems |
US7392458B2 (en) * | 2004-11-19 | 2008-06-24 | International Business Machines Corporation | Method and system for enhanced error identification with disk array parity checking |
JP2006171957A (ja) * | 2004-12-14 | 2006-06-29 | Fujitsu Ltd | ストレージ制御装置および方法 |
US7433998B2 (en) | 2005-01-14 | 2008-10-07 | Dell Products L.P. | System and method for implementing self-describing RAID configurations |
CN101507145B (zh) | 2005-01-21 | 2013-05-29 | Rmi公司 | 执行不同路由信道级联的系统和方法 |
US20060195657A1 (en) | 2005-02-28 | 2006-08-31 | Infrant Technologies, Inc. | Expandable RAID method and device |
JP2006285889A (ja) | 2005-04-05 | 2006-10-19 | Sony Corp | データ記憶装置、再構築制御装置、再構築制御方法、プログラム及び記憶媒体 |
US7512862B1 (en) | 2005-04-13 | 2009-03-31 | Network Appliance, Inc. | Compression of data for protection |
US8200887B2 (en) * | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
JP2008537265A (ja) | 2005-04-21 | 2008-09-11 | ヴァイオリン メモリー インコーポレイテッド | 相互接続システム |
US8452929B2 (en) * | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US7752381B2 (en) | 2005-05-24 | 2010-07-06 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
US7984084B2 (en) | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
JP2007072988A (ja) * | 2005-09-09 | 2007-03-22 | Hitachi Ltd | ディスクアレイ装置及びデータ移動方法並びにプログラム |
JP4745169B2 (ja) | 2005-09-16 | 2011-08-10 | 株式会社東芝 | 半導体記憶装置 |
JP4817783B2 (ja) | 2005-09-30 | 2011-11-16 | 富士通株式会社 | Raidシステム及びそのリビルド/コピーバック処理方法 |
US9047344B2 (en) | 2005-10-17 | 2015-06-02 | International Business Machines Corporation | Guaranteeing data and metadata referential integrity in content management archival solutions |
US7783845B2 (en) | 2005-11-14 | 2010-08-24 | Sandisk Corporation | Structures for the management of erase operations in non-volatile memories |
US20070162516A1 (en) | 2005-12-30 | 2007-07-12 | Microsoft Corporation | Computing asynchronous transaction log replication progress based on file change notifications |
US7440331B2 (en) | 2006-06-01 | 2008-10-21 | Sandisk Corporation | Verify operation for non-volatile storage using different voltages |
JP2008015769A (ja) | 2006-07-05 | 2008-01-24 | Hitachi Ltd | ストレージシステム及び書き込み分散方法 |
US7555575B2 (en) * | 2006-07-27 | 2009-06-30 | Hitachi, Ltd. | Method and apparatus for migrating data between storage volumes of different data pattern |
US7451265B2 (en) * | 2006-08-04 | 2008-11-11 | Sandisk Corporation | Non-volatile memory storage systems for phased garbage collection |
US20080052446A1 (en) | 2006-08-28 | 2008-02-28 | Sandisk Il Ltd. | Logical super block mapping for NAND flash memory |
US20080059869A1 (en) | 2006-09-01 | 2008-03-06 | The Regents Of The University Of California | Low cost, high performance error detection and correction |
US7499317B2 (en) | 2006-10-13 | 2009-03-03 | Sandisk Corporation | System for partitioned erase and erase verification in a non-volatile memory to compensate for capacitive coupling |
US7840612B2 (en) * | 2006-10-23 | 2010-11-23 | Research In Motion Limited | Methods and apparatus for concurrently executing a garbage collection process during execution of a primary application program |
US7822921B2 (en) | 2006-10-31 | 2010-10-26 | Netapp, Inc. | System and method for optimizing write operations in storage systems |
CN101681282A (zh) | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US7660911B2 (en) * | 2006-12-20 | 2010-02-09 | Smart Modular Technologies, Inc. | Block-based data striping to flash memory |
US7882301B2 (en) | 2007-05-09 | 2011-02-01 | Stmicroelectronics S.R.L. | Wear leveling in storage devices based on flash memories and related circuit, system, and method |
KR100882841B1 (ko) * | 2007-06-19 | 2009-02-10 | 삼성전자주식회사 | 읽기 디스터번스로 인한 비트 에러를 검출할 수 있는메모리 시스템 및 그것의 읽기 방법 |
US20080320366A1 (en) | 2007-06-25 | 2008-12-25 | Lin Jason T | Methods of reading nonvolatile memory |
US8041990B2 (en) | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US7508715B2 (en) | 2007-07-03 | 2009-03-24 | Sandisk Corporation | Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing |
US8024177B2 (en) | 2007-09-28 | 2011-09-20 | Cycorp, Inc. | Method of transforming natural language expression into formal language representation |
US8095763B2 (en) | 2007-10-18 | 2012-01-10 | Datadirect Networks, Inc. | Method for reducing latency in a raid memory system while maintaining data integrity |
US8296498B2 (en) | 2007-11-13 | 2012-10-23 | Sandisk Technologies Inc. | Method and system for virtual fast access non-volatile RAM |
US7688638B2 (en) | 2007-12-07 | 2010-03-30 | Sandisk Corporation | Faster programming of multi-level non-volatile storage through reduced verify operations |
US8621137B2 (en) * | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
US20090172335A1 (en) * | 2007-12-31 | 2009-07-02 | Anand Krishnamurthi Kulkarni | Flash devices with raid |
US20090198952A1 (en) | 2008-02-04 | 2009-08-06 | Apple Inc | Memory Mapping Architecture |
US8219781B2 (en) | 2008-11-06 | 2012-07-10 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
US7818525B1 (en) * | 2009-08-12 | 2010-10-19 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
US8214580B2 (en) * | 2009-10-23 | 2012-07-03 | International Business Machines Corporation | Solid state drive with adjustable drive life and capacity |
-
2008
- 2008-03-26 US US12/079,364 patent/US8200887B2/en active Active
- 2008-03-27 KR KR1020097018594A patent/KR101448192B1/ko active IP Right Grant
- 2008-03-27 CN CN201110217894.6A patent/CN102346694B/zh active Active
- 2008-03-27 KR KR1020147021228A patent/KR101502519B1/ko active IP Right Grant
- 2008-03-27 EP EP08742320.8A patent/EP2132636B1/de active Active
- 2008-03-27 EP EP14190168.6A patent/EP2860635B1/de active Active
- 2008-03-27 WO PCT/US2008/004015 patent/WO2008121306A2/en active Application Filing
- 2008-03-27 DE DE202008018573.4U patent/DE202008018573U1/de not_active Expired - Lifetime
- 2008-03-27 CN CN2008800079374A patent/CN101681305B/zh active Active
- 2008-03-27 DE DE202008018572.6U patent/DE202008018572U1/de not_active Expired - Lifetime
-
2012
- 2012-04-09 US US13/442,284 patent/US9311182B2/en active Active
-
2015
- 2015-03-10 US US14/642,910 patent/US9081713B1/en active Active
- 2015-05-08 US US14/707,782 patent/US9189334B2/en active Active
-
2016
- 2016-03-01 US US15/057,709 patent/US10157016B2/en active Active
-
2018
- 2018-07-17 US US16/038,030 patent/US10761766B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20080250270A1 (en) | 2008-10-09 |
KR20090129416A (ko) | 2009-12-16 |
CN101681305A (zh) | 2010-03-24 |
EP2860635A1 (de) | 2015-04-15 |
DE202008018573U1 (de) | 2015-12-03 |
US20150242271A1 (en) | 2015-08-27 |
US9311182B2 (en) | 2016-04-12 |
EP2860635B1 (de) | 2016-11-02 |
US20150178157A1 (en) | 2015-06-25 |
WO2008121306A9 (en) | 2009-04-09 |
WO2008121306A2 (en) | 2008-10-09 |
US9081713B1 (en) | 2015-07-14 |
US20180341408A1 (en) | 2018-11-29 |
US20120221922A1 (en) | 2012-08-30 |
EP2132636A2 (de) | 2009-12-16 |
KR101502519B1 (ko) | 2015-03-13 |
CN102346694B (zh) | 2015-02-11 |
KR101448192B1 (ko) | 2014-10-07 |
KR20140106752A (ko) | 2014-09-03 |
CN101681305B (zh) | 2013-10-30 |
US10761766B2 (en) | 2020-09-01 |
US8200887B2 (en) | 2012-06-12 |
EP2132636B1 (de) | 2014-10-29 |
US10157016B2 (en) | 2018-12-18 |
US20160246509A1 (en) | 2016-08-25 |
US9189334B2 (en) | 2015-11-17 |
CN102346694A (zh) | 2012-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE202008018572U1 (de) | Speichersystem | |
US10372366B2 (en) | Memory system with multiple striping of RAID groups and method for performing the same | |
DE112010003345B4 (de) | Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems | |
KR101411566B1 (ko) | Raid 그룹의 여러 스트라이핑을 갖는 메모리 및 그 수행방법 | |
DE112019000213T5 (de) | Speichersysteme mit Peer-Datenwiederherstellung | |
DE112016005869T5 (de) | Vorausschauende Arbeitsspeicherinstandhaltung | |
US11960743B2 (en) | Memory system with multiple striping of RAID groups and method for performing the same | |
DE112019000201T5 (de) | Speichersysteme mit peer-datenbereinigung | |
US20040123032A1 (en) | Method for storing integrity metadata in redundant data layouts | |
DE112014005570T5 (de) | Deaktivieren von Seiten in einem Nand-Flash-Speicher-System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R081 | Change of applicant/patentee |
Owner name: VIOLIN MEMORY, INC., SANTA CLARA, US Free format text: FORMER OWNER: VIOLIN MEMORY, INC., ISELIN, N.J., US |
|
R082 | Change of representative |
Representative=s name: SCHMITT-NILSON SCHRAUD WAIBEL WOHLFROM PATENTA, DE Representative=s name: KSNH PATENTANWAELTE KLUNKER/SCHMITT-NILSON/HIR, DE |
|
R151 | Utility model maintained after payment of second maintenance fee after six years | ||
R207 | Utility model specification | ||
R152 | Utility model maintained after payment of third maintenance fee after eight years | ||
R082 | Change of representative |
Representative=s name: SCHMITT-NILSON SCHRAUD WAIBEL WOHLFROM PATENTA, DE |
|
R071 | Expiry of right |