DE69131551T2 - Logische Aufteilung eines Speichersystems mit redundanter Matrix - Google Patents
Logische Aufteilung eines Speichersystems mit redundanter MatrixInfo
- Publication number
- DE69131551T2 DE69131551T2 DE69131551T DE69131551T DE69131551T2 DE 69131551 T2 DE69131551 T2 DE 69131551T2 DE 69131551 T DE69131551 T DE 69131551T DE 69131551 T DE69131551 T DE 69131551T DE 69131551 T2 DE69131551 T2 DE 69131551T2
- Authority
- DE
- Germany
- Prior art keywords
- logical
- redundancy
- blocks
- storage units
- storage unit
- 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 - Fee Related
Links
- 239000011159 matrix material Substances 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000013500 data storage Methods 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 6
- 239000000969 carrier Substances 0.000 claims description 3
- 238000013519 translation Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 7
- 238000000638 solvent extraction Methods 0.000 abstract description 6
- 238000012546 transfer Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000012937 correction Methods 0.000 description 10
- 238000006073 displacement reaction Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 208000011580 syndromic disease Diseases 0.000 description 1
Classifications
-
- 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
- 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
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2087—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/103—Hybrid, i.e. RAID systems with parity comprising a mix of RAID types
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Diese Erfindung betrifft eine Computersystem-Datenspeicherung und insbesondere ein redundantes Array-Speichersystem, das als RAID-System Stufe 1, 3, 4 oder 5 oder als irgendeine Kombination dieser Konfigurationen konfiguriert sein kann.
- Ein typisches Datenverarbeitungssystem umfaßt im allgemeinen eine oder mehrere Speichereinheiten, die mit einer Zentralprozessoreinheit (CPU = Central Processor Unit) entweder direkt oder durch eine Steuereinheit und einen Kanal verbunden sind. Die Funktion der Steuereinheiten besteht darin, Daten und Programme zu speichern, welche die CPU bei der Durchführung bestimmter Datenverarbeitungsaufgaben benutzt.
- In herkömmlichen Datenverarbeitungssystemen werden unterschiedliche Typen von Speichereinheiten verwendet. Ein typisches System kann eine oder mehrere Bandeinheiten und/oder Disk- bzw. Platten- bzw. Diskettenlaufwerke (magnetische, optische oder Halbleiter) mit großer Kapazität umfassen, die zur Datenspeicherung mit dem System über jeweilige Steuereinheiten verbunden sind.
- Ein Problem tritt jedoch auf, falls eine der Speichereinheiten mit großer Kapazität ausfällt, so daß die darin enthaltene Information nicht länger für das System verfügbar ist. Im allgemeinen wird ein derartiger Ausfall das gesamte Computersystem außer Betrieb setzen.
- Im Stand der Technik wurden mehrere Wege zur Lösung des Problems, eine zuverlässige Datenspeicherung vorzusehen, vorge schlagen. In Systemen, in denen die Datensätze relativ klein sind, können Fehlerkorrekturcodes verwendet werden, die ECC- Syndrom-Bits erzeugen, die an jeden Datensatz innerhalb einer Speichereinheit angefügt werden. Mit Hilfe solcher Codes kann eine kleine Datenmenge korrigiert werden, die möglicherweise fehlerhaft gelesen wird. Derartige Codes sind jedoch im allgemeinen nicht für die Korrektur oder Wiederherstellung langer Datensätze, welche fehlerhaft sind, geeignet und schaffen überhaupt keine Abhilfe, wenn eine gesamte Speichereinheit ausfällt. Es besteht daher ein Bedarf, Datenzuverlässigkeit von außen für einzelne Speichereinheiten vorzusehen.
- Es wird sich auf die WO89/10594 bezogen, die ein Dateisystem beschreibt, das für die Optimierung der Anwendung einer Vielzahl an Zugriffspfaden und verfügbarer Speicher-Hardware anpaßbar ist, um Betriebsanforderungen des Systems zu genügen. Ein zweistufiges Datenverwaltungssystem wird eingesetzt, das eine erste Stufe aufweist, die mit der Dateibenutzerschnittstelle für die temporäre Speicherung von Daten gekoppelt ist, auf die von mehreren Anwendern zugegriffen werden kann, und die Anfragen für Transaktionen mit dem externen Speicher erzeugt. Eine zweite Stufe ist mit der ersten Stufe und dem externen Speicher in Antwort auf die Anfrage auf Dateiübertragungen mit dar externen Speicherung gekoppelt, um die Dateiübertragungen für die Speicherung von Daten in dem externen Speicher und die Wiedergewinnung von Daten von dem externen Speicher zu verwalten.
- Andere Ansätze für eine derartige "externe" Zuverlässigkeit sind im Stand der Technik beschrieben worden. Eine Forschungsgruppe an der Universität von Kalifornien, Berkeley, hat in einer Veröffentlichung mit dem Titel "A Case for Redundant Arrays of inexpensive Disks (RAID)", Patterson, et al., Proc. ACM; SIGMOD, Juni 1988 eine Anzahl unterschiedlicher Ansätze zum Vorsehen einer derartigen Zuverlässigkeit bei Verwendung von Platten- oder Diskettenlaufwerken als Speichereinheiten katalogisiert. Arrays von Diskettenlauf werken sind in einer von fünf Architekturen unter dem Akronym "RATD" (für Redundant Arrays of Inexpensive Disks = redundante Arrays kostengünstiger Disks) charakterisiert.
- Eine RAID-Architektur Stufe 1 umfaßt die Bereitstellung eines Duplikatsatzes an "Spiegel"-Speichereinheiten und das Behalten einer Duplikatkopie von allen Daten auf jedem Speichereinheitenpaar. Während eine solche Lösung das Problem der Zuverlässigkeit löst, verdoppelt sie die Kosten für die Speicherung. Es gibt eine Anzahl von Implementierungen der RAID-Architektur Stufe 1, insbesondere von der Tandem Corporation.
- Eine RAID-Architektur Stufe 2 speichert jedes Bit jedes Datenworts, zuzüglich Fehler-Erkennungs- und Fehler-Korrektur- (EDC = Error Detection and Correction)-Bits für jedes Wort auf gesonderten Disklaufwerken (dies ist auch als "bit stripping" bekannt). Beispielsweise offenbart das US-Patent Nr. 4,722,085 von Flora et al. einen Disklaufwerkspeicher, welcher eine Vielzahl vergleichweise kleiner, unabhängig arbeitender Disk-Subsysteme verwendet, um als großes "Disklaufwerk" mit hoher Kapazität mit einer ungewöhnlich hohen Fehlertoleranz und einer sehr hohen Datenübertragungbandbreite zu funktionieren. Eine Datenorganisationsvorrichtung fügt sieben EDC-Bits (die unter Verwendung des bekannten Hamming-Codes bestimmt werden) zu jedem 32-Bit-Datenwort, um eine Fehlerdetektions- und Fehlerkorrekturfähigkeit zu schaffen. Das resultierende 39-Bit-Wort wird auf 39 Disklaufwerke geschrieben, ein Bit pro Disklaufwerk. Wenn eines der 39 Disklaufwerke ausfällt, können die verbleibenden 38 Bits jedes gespeicherten 39-Bit-Worts dazu verwendet werden, jedes 32-Bit-Wort auf einer Wort-zu-Wort-Basis zu rekonstruieren, während die Datenworte jeweils von den Disklaufwerken gelesen werden, wodurch eine Ausfalltoleranz erhalten wird.
- Ein offensichtlicher Nachteil eines derartigen Systems ist die große Anzahl Disklaufwerke, welche für ein Minimalsystem erforderlich sind (da die meisten großen Computer ein 32- Bit-Wort verwenden). Hinzu kommt der vergleichsweise große Anteil von Laufwerken, die für die Speicherung der EDC-Bits erforderlich sind (7 von 39 Laufwerken). Eine weitere Beschränkung eines RAID-Disklaufwerk-Speichersystems der Stufe 2 liegt darin, daß die einzelnen Diskaktuatoren zum Schreiben jedes Datenblocks, dessen Bits über sämtliche der Disklaufwerke verteilt werden, unisono betrieben werden. Diese Anordnung hat eine hohe Datenübertragungsbandbreite, da jede einzelne Disk einen Teil eines Datenblocks überträgt. Der Gesamteffekt besteht darin, daß der gesamte Block dem Computersystem viel schneller zur Verfügung steht, als wenn ein einzelnes Laufwerk auf den Block zugreifen würde. Dies ist vorteilhaft für große Datenblöcke. Diese Anordnung stellt jedoch auch effektiv einen einzigen Lese/Schreibkopfaktuator für die gesamte Speichereinheit bereit. Dies wirkt sich ungünstig auf die Fähigkeit des wahlfreien Zugriffs auf den Disk-Array aus, wenn die Datendateien klein sind, da zu einem Zeitpunkt jeweils nur auf eine Datendatei von einem "einzigen" Aktuator zugegriffen werden kann. Infolgedessen werden RAID-Systeme der Stufe 2 im allgemeinen als ungeeignet für Computersysteme angesehen, die für On-Line- Dialogverarbeitung (OLTP = On-Line Transaction Processing) ausgebildet sind, wie bei Bank-, Finanz- und Reservierungssystemen, bei denen eine große Anzahl wahlfreier Zugriffe auf viele kleine Datendateien die Masse der Datenspeicher- und -übertragungsoperationen ausmacht.
- Eine RAID-Architektur der Stufe 3 beruht auf dem Konzept, daß jede Disklaufwerkspeichereinheit über interne Mittel zur Erkennung eines Ausfalls oder eines Datenfehlers verfügt. Daher ist es nicht notwendig, zusätzliche Information zur Erkennung des Ortes eines Fehlers zu speichern; es kann daher eine einfachere Form einer paritätsbasierenden Fehlerkorrektur verwendet werden. Bei diesem Ansatz werden die Inhalte aller Speichereinheiten, die ausfallen können, einer "Exklusiv-Oder-Verknüpfung" (XOR) unterzogen, um Paritätsinformation zu erzeugen. Die resultierende Paritätsinformation wird in einer einzelnen, redundanten Speichereinheit gespei chert. Wenn eine Speichereinheit ausfällt, können die Daten auf dieser Einheit auf eine Ersatzspeichereinheit rekonstruiert werden, indem die Daten von den verbleibenden Speichereinheiten mit der Paritätsinformation exklusiv-oder verknüpft werden. Eine solche Anordnung besitzt gegenüber der RAID-Architektur der Stufe 1 mit gespiegelter Disk den Vorteil, daß lediglich eine zusätzliche Speichereinheit für "N" Speichereinheiten erforderlich ist. Ein weiterer Aspekt der RAID-Architektur der Stufe 3 besteht darin, daß die Disklaufwerke in einer gekoppelten Weise betrieben werden, ähnlich einem RAID-System der Stufe 2, und ein einziges Disklaufwerk als die Paritätseinheit bestimmt ist.
- Eine Implementierung einer RAID-Architektur der Stufe 3 ist das Array an Parallellaufwerken der Micropolis Corporation, Modell 1804 SCSI, welches vier parallele, synchronisierte Disklaufwerke und ein redundantes Paritätslaufwerk verwendet. Der Ausfall eines der vier Daten-Disklaufwerke kann durch Verwendung der auf dem Paritäts-Disklaufwerk gespeicherten Paritätsbits behoben werden. Ein anderes Beispiel eines RAID-Systems der Stufe 3 ist in dem US-Patent Nr. 4,092,732 von Ouchi beschrieben.
- Ein RAID-Disklaufwerkspeichersystem der Stufe 3 besitzt ein weitaus geringeres Verhältnis von Redundanzeinheiten zu Dateneinheiten als ein RAID-System der Stufe 2. Ein RAID- System der Stufe 3 besitzt jedoch die selbe Leistungsbeschränkung wie ein RAID-System der Stufe 2, und zwar daß die einzelnen Disk-Aktuatoren gekoppelt sind und unisono betrieben werden. Dies wirkt sich ungünstig auf die Leistungsfähigkeit des wahlfreien Zugriffs des Disk-Arrays aus, wenn die Datendateien klein sind, da zu einem Zeitpunkt von dem "einzigen" Aktuator nur auf eine Datendatei zugegriffen werden kann. Somit werden RAID-Systeme der Stufe 3 im allgemeinen als ungeeignet für Computersysteme angesehen, welche für OLTP-Zwecke konzipiert sind.
- Eine RAID-Architektur der Stufe 4 verwendet das gleiche Paritätsfehlerkorrekturkonzept der RAID-Architektur der Stufe 3, verbessert aber die Leistungsfähigkeit des RAID-Systems der Stufe 3 hinsichtlich des wahlfreien Lesens kleiner Dateien, indem der Betrieb der einzelnen Disklaufwerk- Aktuatoren "entkoppelt" wird und eine größere Mindestmenge an Daten (typischerweise ein Disksektor) auf jede Disk geschrieben und von ihr gelesen wird (dies ist ebenfalls als "block stripping" bekannt). Ein weiterer Aspekt der RAID- Architektur der Stufe 4 besteht darin, daß eine einzige Speichereinheit als die Paritätseinheit bestimmt ist.
- Eine Beschränkung eines RAID-Systems der Stufe 4 besteht darin, daß das Schreiben eins Datenblocks auf eine beliebige der unabhängig arbeitenden Speichereinheiten auch das Schreiben eines neuen Paritätsblocks auf die Paritätseinheit erfordert. Die auf der Paritätseinheit gespeicherte Paritätsinformation muß gelesen und mit den alten Daten exklusiv- oder verknüpft werden (um den Informationsinhalt der alten Daten zu "entfernen"). Dann muß die resultierende Summe mit den neuen Daten exklusiv-oder verknüpft werden (um eine neue Paritätsinformation zu schaffen). Sowohl die Daten- als auch die Paritätseinträge müssen dann wieder auf die Disklaufwerke geschrieben werden. Dieser Vorgang wird üblicherweise als "Lese-Modifiziere-Schreibe"-Sequenz ("Read-Modify-Write") bezeichnet.
- Aus diesem Grund kommt es jedesmal zu einer Lese- und einer Schreiboperation auf die einzige Paritätseinheit, wenn ein Datensatz auf irgendeiner der von dem Paritätsdatensatz auf der Paritätseinheit erfaßten Datenspeichereinheiten geändert wird. Die Paritätseinheit wird zu einem Flaschenhals für Datenschreiboperationen, da die Anzahl der pro Zeiteinheit ausführbaren Datensatzänderungen eine Funktion der Zugriffsrate der Paritätseinheit ist, im Gegensatz zu der schnelleren Zugriffsrate, die durch die parallele Arbeitsweise der mehreren Datenspeichereinheiten erzielt wird. Wegen dieser Beschränkung wird ein RAID-System der Stufe 4 im allgemeinen als ungeeignet für Computersysteme angesehen, welche für OLTP-Zwecke ausgebildet sind. In der Tat scheint es, daß ein RAID-System der Stufe 4 noch nicht für irgendeinen wirtschaftlichen Zweck implementiert worden ist.
- Eine RAID-Architektur der Stufe 5 verwendet das selbe Paritätsfehlerkorrekturkonzept wie die RAID-Architektur der Stufe 4 und unabhängige Aktuatoren, verbessert aber die Schreibleistung eines RAID-Systems der Stufe 4, indem die Daten- und Paritätsinformation über sämtliche der zur Verfügung stehenden Disklaufwerke verteilt wird. Typischerweise werden "N + 1" Speichereinheiten in einem Satz (auch bekannt als "Redundanzgruppe") in eine Vielzahl gleich großer Adressbereiche unterteilt, die als Blöcke bezeichnet werden. Jede Speichereinheit enthält im allgemeinen die gleiche Anzahl an Blöcken. Blöcke aus jeder Speichereinheit in einer Redundanzgruppe, welche die gleichen Einheitsadressbereiche haben, werden als "Streifen" bezeichnet. Jeder Streifen hat N Datenblöcke zuzüglich eines Paritätsblockes auf einer Speichereinheit, der eine Parität für den Rest des Streifens enthält. Weitere Streifen besitzen jeweils einen Paritätsblock, wobei die Paritätsblöcke auf unterschiedliche Speichereinheiten verteilt sind. Die mit jeder Veränderung von Daten in einer Redundanzgruppe verbundene Aktivität der Paritätsaktualisierung ist daher über die verschiedenen Speichereinheiten verteilt. Es ist also keine einzige Einheit mit der gesamten Aktivität der Paritätsaktualisierung belastet.
- Beispielsweise kann in einem RAID-System der Stufe 5, das fünf Disklaufwerke umfaßt, die Paritätsinformation für den ersten Blockstreifen auf das fünfte Laufwerk geschrieben werden; die Paritätsinformation für den zweiten Blockstreifen kann auf das vierte Laufwerk geschrieben werden; die Paritätsinformation für den dritten Blockstreifen kann auf das dritte Laufwerk geschrieben werden; etc. Der Paritätsblock für aufeinanderfolgende Streifen "präzediert" typischerweise um die Disklaufwerke in einem spiralförmigen Muster (obwohl andere Muster verwendet werden können).
- Somit wird nicht ein einzelnes Disklaufwerk zum Speichern der Paritätsinformation verwendet und der Flaschenhals der RAID-Architektur der Stufe 4 ist ausgeräumt. Ein Beispiel für ein RAID-System der Stufe 5 ist in dem US-Patent Nr. 4,761,785 von Clark et al. beschrieben.
- Wie in einem RAID-System der Stufe 4, besteht eine Beschränkung eines RAID-Systems der Stufe 5 darin, daß eine Änderung in einem Datenblock eine Lese-Modifiziere-Schreib-Sequenz erfordert, welche zwei Lese- und zwei Schreiboperationen umfaßt: der alte Paritätsblock und der alte Datenblock müssen gelesen und exklusiv-oder verknüpft werden, und dann muß die resultierende Summe mit den neuen Daten exklusiv-oder verknüpft werden. Sowohl der Daten- als auch der Paritätsblock müssen dann wieder auf die Disklaufwerke geschrieben werden. Während die beiden Leseoperationen sowie die beiden Schreiboperationen parallel ausgeführt werden können, dauert die Modifikation eines Datenblockes in einem RAID-System der Stufe 4 oder in einem RAID-System der Stufe 5 immer noch erheblich länger als die gleiche Operation auf einer herkömmlichen Disk. Eine herkömmliche Disk erfordert keine vorbereitende Leseoperation und muß infolgedessen nicht darauf warten, daß sich die Disklaufwerke zurück zu der vorhergehenden Position drehen, um die Schreiboperation auszuführen. Allein die Drehwartezeit kann bis zu ungefähr 50% der für eine typische Datenmodifikationsoperation erforderlichen Zeit ausmachen. Ferner sind zwei Diskspeichereinheiten für die Dauer jeder Datenmodifikationsoperation beteiligt, was den Durchsatz des Systems als ganzes begrenzt. Trotz der reduzierten Schreibleistung haben sich RAID-Systeme der Stufe 5 zunehmend durchgesetzt, da sie eine hohe Datenzuverlässigkeit bei geringen Redundanz-Zusatzkosten, eine gute Leseleistung und eine brauchbare Schreibleistung zur Verfügung stellen.
- Obwohl bis dato verschiedene RAID-Systeme entwickelt worden sind, sind solche Systeme äußerst unflexibel darin, daß lediglich ein Typ redundanter Konfiguration in jedem Entwurf implementiert ist. Einer der Gründe für diese Inflexibilität ist, daß bei dem Systemtyp, dem die Verfahren und Vorrichtungen angehören, eine Datenspeicher-Systemsteuerung die Redundanzkonfiguration des Speichersystems steuert, im Gegensatz zu z. B. früheren Speichersystemen, die von der CPU oder dem Rechner-Computer konfiguriert und betrieben werden, was eine größere Flexibilität ermöglicht. Daher sind z. B. redundante Array-Speichersysteme des Typs, dem die Erfindung angehört, im allgemeinen lediglich als RAID-System der Stufe 3 oder nur als RAID-System der Stufe 5 entwickelt worden. Wenn die Hauptanwendung des redundanten Array-Speichersystems im Voraus bekannt ist, führt diese Starrheit im Entwurf zu keinem Problem. Die Anwendungen eines Speichersystems können sich jedoch während der Zeit ändern. In der Tat kann ein Anwender verschiedene Typen von RAID-Systemen gleichzeitig benötigen, jedoch keine Resourcen für den Erwerb mehrerer Speichersysteme haben, um diesen Anforderungen zu genügen. Ebenso wichtig ist, daß verschiedene Anwender unterschiedliche Bedürfnisse haben; das Entwickeln redundanter Array-Speichersysteme mit unterschiedlichen RAID- Konfigurationen zum Befriedigen solcher auseinanderlaufender Bedürfnisse ist teuer.
- Es wäre daher höchst wünschenswert, ein Speichersystem mit einer flexiblen RAID-Architektur zu haben, in dem die grundsätzliche Redundanzkonfiguration geändert werden könnte, und zwar für jeden Anwender oder wenn sich die Anforderungen eines Anwenders ändern. Es wäre ebenfalls wünschenswert, ein Speichersystem mit einer flexiblen RAID-Architektur zu haben, in dem verschiedene Redundanzkonfigurationstypen simultan implementiert werden können.
- Die vorliegende Erfindung stellt solch ein System zur Verfügung.
- Gemäß einem Aspekt der vorliegenden Erfindung ist ein Verfahren zum Adressieren eines redundanten Array-Speichersystems geschaffen, das einen Array-Controller in operativer Verbindung mit einer CPU und eine Vielzahl physikalischer Datenspeichereinheiten umfaßt, die mit dem Array-Controller über entsprechende Eingabe/Ausgabekanäle gekoppelt sind, wobei jede physikalische Datenspeichereinheit eine Vielzahl adressierbarer Blöcke umfaßt, und das Verfahren folgendes umfaßt: Übertragen von Speicherzugriffsanfragen von der CPU an den Array-Controller; und Übersetzen jeder Speicherzugriffsanfrage in eine Adresse für die physikalischen Datenspeichereinheiten entsprechend einer ersten logischen Adressierungsebene, um einen Satz adressierbarer Blöcke in Antwort auf jede Speicherzugriffsanfrage zu adressieren; wobei die adressierbaren Blöcke in Redundanzsätze organisiert sind, mit wenigstens einem adressierbaren Block in einem Redundanzsatz, der Redundanzinformation für übrige Blöcke in dem Redundanzsatz enthält; dadurch gekennzeichnet, daß:
- i) die Speicherzugriffsanfragen von der CPU entsprechend einer zweiten logischen Adressierungsebene ausgegeben werden, wobei jede Speicherzugriffsanfrage eine Nummer eines logischen Datenträgers, eine Nummer eines Anfangsblocks und die Anzahl zu übertragender Blöcke angibt;
- ii) der Array-Controller die Übersetzung unter Verwendung einer Datenstruktur durchführt, die jeden logischen Datenträger als eine oder mehrere logische Speichereinheiten definiert, wobei jede logische Speichereinheit eine Anzahl adressierbarer Blöcke umfaßt und alle logischen Speichereinheiten in einem logischen Datenträger die selbe Anzahl adressierbarer Blöcke umfassen, jeder logische Datenträger eine unabhängig definierbare Tiefencharakteristik hat, die in der Anzahl adressierbarer Blöcke ausgedrückt ist, auf die nacheinander in einer einzelnen logischen Speichereinheit zugegriffen wird, bevor auf die nächste logische Speichereinheit in dem logischen Datenträger zugegriffen wird, wobei jede Speicherzugriffsanfrage auf eine oder mehrere logische Speichereinheiten abgebildet wird;
- iii) jeder adressierbare Block innerhalb einer logischen Speichereinheit durch eine Kanalnummer, Speichereinheitsnummer, Startblocknummer und Offsetnummer adressiert wird;
- iv) Redundanzgruppen definiert werden, von denen wenigstens eine mehr als einen logischen Datenträger mit einer unabhängig definierbaren Tiefencharakteristik umfaßt, wobei jede Redundanzgruppe einen konfigurierbaren Redundanzgrad hat; und
- v) die Blöcke der Redundanzsätze über eine Redundanzgruppe über die Grenzen des logischen Datenträgers hinweg verteilt sind.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung ist ein redundantes Array-Speichersystem geschaffen, welches folgendes umfaßt: einen Array-Controller; eine Vielzahl physikalischer Datenspeichereinheiten, die mit dem Array- Controller über jeweilige Eingabe/Ausgabekanäle gekoppelt sind, wobei jede physikalische Datenspeichereinheit eine Vielzahl adressierbarer Blöcke umfaßt; wobei der Array- Controller folgendes umfaßt: eine Verbindung zu einem CPU- Bus zum Empfangen von Speicherzugriffsanfragen von der CPU, wobei der Array-Controller unabhängig von der CPU arbeitet, um die physikalische Datenspeichereinheiten zu steuern; und Mittel zum Adressieren der physikalischen Datenspeichereinheiten entsprechend einer ersten logischen Adressierungsebene, um einen Satz der adressierbaren Blöcke in Antwort auf jede Speicherzugriffsanfrage zu adressieren; wobei die adressierbaren Blöcke in Redundanzsätze organisiert sind, mit wenigstens einem adressierbaren Block in einem Redundanzsatz, der Redundanzinformation für übrige Blöcke in dem Satz enthält; dadurch gekennzeichnet, daß:
- i) die erste logische Adressierungsebene die Bestimmung einer Kanalnummer, Speichereinheitsnummer, Startblocknummer und Offsetnummer für die adressierbaren Blöcke einschließt;
- ii) die Speicherzugriffsanfragen von der CPU entsprechend einer zweiten logischen Adressierungsebene ausgegeben werden, wobei jede Speicherzugriffsanfrage wenigstens eine Nummer eines logischen Datenträgers, eine Nummer eines Anfangsblocks und eine Anzahl an Blöcken angibt, auf die zugegriffen werden soll;
- iii) der Array-Controller eine Datenstruktur hält, welche jeden logischen Datenträger als eine oder mehrere logische Speichereinheiten definiert, wobei jede logische Speichereinheit eine Anzahl adressierbarer Blöcke umfaßt und alle logischen Speichereinheiten in einem logischen Datenträger die gleiche Anzahl adressierbarer Blöcke umfassen, und jeder logische Datenträger eine unabhängig definierbare Tiefencharakteristik hat, die in der Anzahl adressierbarer Blöcke ausgedrückt ist, auf die nacheinander in einer einzelnen logischen Speichereinheit zugegriffen wird, bevor auf die nächste logische Speichereinheit in dem logischen Datenträger zugegriffen wird, wobei jede Speicherzugriffsanfrage auf eine oder mehrere logische Speichereinheiten abgebildet wird; und
- iv) die Datenstruktur konfigurierbar ist, um Redundanzgruppen zu definieren, von denen wenigstens eine mehr als einen logischen Datenträger mit unabhängig definierbarer Tiefencharakteristik umfaßt, wobei jede Redundanzgruppe einen konfigurierbaren Redundanzgrad hat, und wobei die Blöcke der Redundanzsätze über eine Redundanzgruppe über die Grenzen des logischen Datenträgers hinweg verteilt sind.
- Die RAID-Architektur der vorliegenden Erfindung ist extrem flexibel. Mit ihr kann ein redundantes Array-Speichersystem, als RAID-System der Stufe 1, 3, 4 oder 5 oder als irgendeine Kombination dieser Konfigurationen konfiguriert werden. Die Erfindung umfaßt eine Konfigurationsdatenstruktur zum Adressieren eines redundanten Array-Speichersystems und ein Verfahren zum Konfigurieren eines redundanten Array- Speichersystems während eines Initialisierungsprozesses. Das redundante Array-Speichersystem umfaßt einen Satz physikalischer Speichereinheiten, auf die, in Blocknummern ausgedrückt, zugegriffen werden kann (ein Block umfaßt einen oder mehrere Sektoren). Als Teil des Initialisierungsprozesses sind die physikalischen Speichereinheiten jeweils als eine oder mehrere logische Speichereinheiten konfiguriert. Jede logische Speichereinheit wird, in einer Kanalnummer, einer Speichereinheitsnummer, einer Startblocknummer und einer Offsetnummer ausgedrückt, adressiert (bei Übertragungen wird ebenfalls die Anzahl zu übertragender Blöcke angegeben).
- Nachdem die logischen Speichereinheiten definiert worden sind, werden die logischen Datenträger als eine oder mehrere logische Speichereinheiten definiert, wobei jeder logische Datenträger eine Tiefencharakteristik hat.
- Nachdem die logischen Datenträger definiert worden sind, werden Redundanzgruppen als ein oder mehrere logische Datenträger definiert. In der vorliegenden Erfindung wird ein Redundanzgrad für jede Redundanzgruppe angegeben. Der Redundanzgrad kann keine, eine (z. B. XOR-Parität oder ein Fehlerkorrekturcode, wie ein Reed-Solomon-Code), oder zwei (z. B. XOR-Parität plus einem Reed-Solomon-Fehlerkorrekturcode) sein.
- Alternativ werden Redundanzgruppen als eine oder mehrere logische Speichereinheiten definiert, und logische Datenträger werden als ein Glied einer Redundanzgruppe definiert.
- Logische Datenträger werden von einer Rechner-CPU durch eine Datenträgernummer, eine Anfangsblocknummer und eine Anzahl zu übertragender Blöcke adressiert. Die Rechner-CPU gibt auch eine LESE- oder SCHREIB-Operation an. Die angegebene Datenträgernummer, Anfangsblocknummer und Anzahl zu übertragender Blöcke werden dann in eine entsprechende Kanalnummer, Speichereinheitsnummer, Startblocknummer, Offsetnummer und Anzahl zu übertragender Blöcke übersetzt.
- Mit der vorliegenden Erfindung kann sich ein logischer Datenträger über physikalische Speichereinheiten erstrecken ("vertikale Aufteilung"), lediglich einen Teil jeder dieser physikalischen Speichereinheiten umfassen ("horizontale Aufteilung") und eine definierbare Tiefen- und Redundanzcharakteristik haben.
- Die Details der bevorzugten Ausführungsbeispiele der vorliegenden Erfindung sind in der beigefügten Zeichnung und der nachstehenden Beschreibung dargelegt. Nachdem die Details der Erfindung bekannt sind, sind dem Durchschnittsfachmann zahlreiche zusätzliche Innovationen und Änderungen offensichtlich.
- Fig. 1 ist ein Blockdiagramm eines verallgemeinerten RAID- Systems gemäß der vorliegenden Erfindung.
- Fig. 2A ist ein Diagramm eines beispielhaften RAID-Systems, das eine typische physikalische Organisation aufzeigt.
- Fig. 2B ist ein Diagramm eines beispielhaften RAID-Systems, das eine logische Organisation des physikalischen Arrays aus Fig. 2A zeigt, in der jede physikalische Speichereinheit als zwei logische Speichereinheiten konfiguriert ist.
- Fig. 2C ist ein Diagramm eines beispielhaften RAID-Systems, das einen logischen Datenträger mit einer Tiefe von einem Block zeigt.
- Fig. 2D ist ein Diagramm eines beispielhaften RAID-Systems, das einen ersten logischen Datenträger mit einer Tiefe von vier Blöcken und einen zweiten logischen Datenträger mit einer Tiefe von einem Block zeigt.
- Fig. 2E ist ein Diagramm eines beispielhaften RAID-Systems, das einen logischen Datenträger mit einer Tiefe von einem Block und mit einem Redundanzgrad zeigt.
- Fig. 2F ist ein Diagramm eines beispielhaften RAID-Systems, das einen logischen Datenträger mit einer Tiefe von einem Block und mit zwei Redundanzgraden zeigt.
- Fig. 3A ist ein Diagramm einer ersten Datenstruktur, die eine Redundanzgruppe gemäß der vorliegenden Erfindung definiert.
- Fig. 3B ist ein Diagramm einer zweiten Datenstruktur, die ein Paar Redundanzgruppen gemäß der vorliegenden Erfindung definiert.
- Gleiche Bezugszahlen und -bezeichnungen in der Zeichnung beziehen sich auf gleiche Elemente.
- Die gezeigten bevorzugten Ausführungsformen und Beispiele sollten durchgängig in dieser Beschreibung als Beispiele für das erfindungsgemäße Verfahren, aber nicht als Beschränkungen für dieses angesehen werden.
- Die Erfindung umfaßt eine Gruppe von einer oder mehreren physikalischen Speichereinheiten und einen Satz logischer Strukturen, die auf die physikalischen Speichereinheiten "abgebildet" werden, um zu bestimmen, wie eine Rechner-CPU auf die physikalischen Speichereinheiten zugreift.
- Eine typische physikalische Speichereinheit, wie ein magnetisches oder optisches Disklaufwerk, umfaßt einen Satz aus einer oder mehreren rotierenden Disks, die jeweils wenigstens einen Lese/Schreib-Wandlerkopf pro Oberfläche haben. Datenspeicherbereiche, die als Spuren bekannt sind, sind konzentrisch auf den Diskoberflächen angeordnet. Eine Diskspeichereinheit kann beispielsweise 500 bis 2000 Spuren pro Diskoberfläche haben. Jede Spur ist in numerierte Sektoren aufgeteilt, die gewöhnlich eine Größe von 512 Bytes haben. Sektoren sind die kleinste Einheit eines Speicherbereichs, auf den die Speichereinheit zugreifen kann (Datenbits innerhalb eines Sektors können individuell geändert werden, jedoch nur, indem ein ganzer Sektor gelesen wird, ausgewählte Bits modifiziert werden und der ganze Sektor zurück an seine Stelle geschrieben wird). Eine Diskspeichereinheit kann 8 bis 50 Sektoren pro Spur haben, und Gruppen von Spuren können auf der selben Diskspeichereinheit eine unterschiedliche Anzahl an Sektoren pro Spur haben (z. B. können kleinere Kreise innerer Spuren weniger Sektoren pro Spur haben, während größere Kreise äußerer Spuren mehr Sektoren pro Spur haben können).
- Der Zugriff auf einen Sektor erfordert letztendlich die Identifizierung eines Sektors durch dessen axiale Verschiebung entlang des Satzes rotierender Disks, durch dessen radiale Verschiebung auf einer Disk und durch eine Verschiebung in Umfangsrichtung um eine Disk herum. Es werden zwei geläufige Verfahren für eine solche Identifizierung angewandt. Ein Verfahren identifiziert einen Sektor, in einer Oberfläche oder Kopfnummer (axiale Verschiebung), einer Spurnummer (radiale Verschiebung) und einer Sektornummer (Verschiebung in Umfangsrichtung) ausgedrückt. Das zweite Verfahren behandelt alle Spuren mit dem gleichen Radius auf allen Disks als einen "Zylinder", wobei Spuren Untermengen eines Zylinders anstelle einer Oberfläche sind. In diesem Verfahren wird ein Sektor, in einer Zylindernummer (radiale Verschiebung), einer Spurnummer (axiale Verschiebung) und einer Sektornummer (Verschiebung in Umfangsrichtung) ausgedrückt, identifiziert. Die vorliegende Erfindung kann unter Anwendung beider Formen der physikalischen Identifizierung implementiert werden.
- Für eine höhere Speichersteuerung (oder sogar die CPU) ist es möglich, die Datenposition auf einer Speichereinheit durch Spurführung aller einbezogenen Sektoren in Spur zu halten. Dies wird gewöhnlich bei magnetischen Disklaufwerken gemacht, welche dem wohlbekannten in Personalcomputern verwendeten ST-506-Schnittstellenstandard folgen. Auf diese Weise adressierte Speichereinheiten sind als sektoradressierbare Speichereinheiten bekannt.
- In modernen Computersystemen ist es für eine höhere Speichersteuerung nachteilig, mit einem der beiden oben beschriebenen Adressierverfahren Sektoradressen in Spur zu halten. Daher wird in dem bevorzugten Ausführungsbeispiel der Erfindung eine alternative Form einer Speichereinheitsadressierung angewandt, welche die Sektoren einer Speichereinheit auf eine handhabbarere Form abbildet.
- Diese Abbildung wird durchgeführt, indem ein oder mehrere Sektoren als ein Block behandelt werden, wie es im Stand der Technik bekannt ist, und indem jede Speichereinheit über Blocknummern adressiert wird. Ein Block auf den in dem bevorzugten Ausführungsbeispiel des erfindungsgemäßen Systems verwendeten Speichereinheiten kann von 512 bis zu 4096 Bytes variieren, kann aber auch irgendeine beliebige Größe haben (obwohl herkömmliche Blockgrößen zwecks leichterer Implementierung auf Vielfache von zwei Bytes limitiert sind). Die verwendeten Speichereinheiten müssen die angegebene Blockgröße unterstützen. Zusätzlich markieren diese Speichereinheiten defekte Sektoren derart, daß diese nicht zum Bilden von Blöcken verwendet werden. (Einige Speichereinheiten können ebenfalls defekte Blöcke während des Betriebs dynamisch "nach außen abbilden", um externen Geräten immer einen Satz durchnumerierter Blöcke anzubieten). Jede Speichereinheit wird dann von einer höheren Steuerung als ein "intaktes" physikalisches Gerät angesehen, das einen Satz durchnumerierter logischer Blöcke umfaßt. Solche Einheiten sind als blockadressierbare Einheiten bekannt.
- Beispielsweise wird bei Speichereinheiten, die eine Kleincomputersystem-Schnittstelle ("SCSI") haben, jede Speichereinheit als ein Satz aufeinanderfolgender Blöcke angesehen. Eine Zugriffsanfrage auf eine solche Einheit gibt einfach die Nummern der Blöcke an, auf die zugegriffen werden soll. Alternativ gibt die Zugriffsanfrage die Nummer eines Startblockes und die Anzahl nachfolgender, logisch aufeinanderfolgender Blöcke an, auf die zugegriffen werden soll. Danach übersetzt die SCSI-Steuerung für die Einheit jede Blocknummer entweder in ein Zylinder-, Spur- und Sektornummernformat oder in ein Kopf-, Spur- und Sektornummernformat. Diese Übersetzung ist jedoch für das anfragende Gerät transparent.
- Es ist selbstverständlich, daß das erfindungsgemäße Konzept auf sektoradressierbare Speichereinheiten angewandt werden kann. Das bevorzugte Ausführungsbeispiel der Erfindung verwendet jedoch blockadressierbare Speichereinheiten. Die vorliegende Erfindung erzeugt dann eine erste logische Struktur, um eine Vielzahl solcher Einheiten zum Definieren einer Grundarchitektur von Disk-Arrays abzubilden.
- Fig. 1 ist ein Diagramm eines verallgemeinerten RAID- Systems gemäß der vorliegenden Erfindung. Gezeigt ist eine CPU 1, die über einen Bus an wenigstens einen Array- Controller 3 gekoppelt ist. Der Array-Controller 3 ist über Eingabe/Ausgabekanäle 4 (z. B. SCSI-Busse) an jede einer Vielzahl von Speichereinheiten S0-S5 gekoppelt (es sind lediglich sechs als Beispiel gezeigt). Jeder Eingabe/Ausgabekanal 4 kann eine Vielzahl an Speichereinheiten unterstützen, wie es durch die gestrichelten Linien in Fig. 1 angezeigt ist. In einigen physikalischen Konfigurationen kann für eine zusätzliche Redundanz ein zweiter Array- Controller 3' (nicht dargestellt) parallel zu dem Array- Controller 3 an die Eingabe/Ausgabekanäle 4 gekoppelt sein. Der Array-Controller 3 weist vorzugsweise einen getrennt programmierbaren multi-taskfähigen Prozessor (beispielsweise den MIPS R3000 RISC Prozessor, von der MIPS Corporation, Sunnyvale, Kalifornien hergestellt) auf, der unabhängig von der CPU 1 für die Steuerung der Speichereinheiten arbeiten kann.
- Fig. 2A zeigt eine Vielzahl an Speichereinheiten S0-S11 (von denen lediglich 12 als Beispiel gezeigt sind), die jeweils (beispielsweise) acht logische Blöcke L0-L7 aufweisen. Um auf individuelle Blöcke in dieser Array-Struktur zugreifen zu können, legt die vorliegende Erfindung dem Array eine erste logische Konfigurationsebene auf, indem eine Datenstruktur aufgestellt wird, die angibt, wo Daten auf den physikalischen Speichereinheiten vorliegen. Als Teil eines von der Steuerung 3 oder der CPU 1 durchgeführten Initialisierungsprozesses sind die physikalischen Speichereinheiten des oben beschriebenen Arrays jeweils als eine oder mehrere logische-Speichereinheiten konfiguriert. Die Datenstruktur definiert jede logische Speichereinheit anhand folgender Ausdrücke:
- (1) Kanalnummer. In dem Beispiel der Fig. 2A sind die Kanäle Busse (z. B. SCSI-Busse), welche die physikalischen Speichereinheiten an die Steuerung 3 koppeln. Die Kanäle entsprechen den zwölf Speichereinheiten S0- S11 und sind mit 0-11 numeriert.
- (2) Speichereinheitsnummer. Jede physikalische Speichereinheit entlang eines Kanals ist mit einer Position numeriert, die in der dargestellten Ausführungsform bei 2 startet und bei 7 endet. Somit kann jeder Kanal bis zu sechs Speichereinheiten handhaben (da die beiden Controller 3, 3' zwei der acht auf einem SCSI-Bus verfügbaren Adressen verwenden). Diese Maximalzahl beruht jedoch auf der Verwendung des SCSI-Standards für die Eingabe/Ausgabekanäle 4 und dem Vorliegen der beiden Array-Controller 3, 3'. Andere Konfigurationsbe schränkungen sind anwendbar, wenn andere Eingabe/Ausgabekanal-Architekturen verwendet werden.
- (3) Startblocknummer. Dies ist die Startblocknummer auf der Speichereinheit für jede logische Speichereinheit. Normalerweise beginnt eine physikalische Speichereinheit die Numerierung der Blöcke bei 0. Da jedoch jede physikalische Speichereinheit mehrere logische Speichereinheiten haben kann, wird durch das Setzen der Startblocknummer für jede logische Speichereinheit sichergestellt, daß sich die Adressräume für die logischen Speichereinheiten nicht überlappen.
- (4) Anzahl der Blöcke. Dies ist die Gesamtzahl der Blöcke in einer jeweiligen logischen Speichereinheit. Die Blöcke werden sequentiell numeriert, beginnend mit der Startblocknummer und weiter entsprechend der Gesamtzahl an Blöcken.
- Zusätzlich kann die CPU 1 einen von beiden Controllern 3, 3' auswählen, auf eine Speichereinheit zuzugreifen, so daß eine Steuerungsnummer ebenfalls während der Verarbeitung angegeben wird. In dem Beispiel der Fig. 2A hat der primäre Array-Controller 3 die Nummer 0 und der optionale redundante Array-Controller 3', sofern installiert, die Nummer 1. Falls ein Speichersystem so entwickelt wurde, daß es lediglich einen einzigen Array-Controller hat, ist diese Nummer nicht erforderlich. In dem bevorzugten Ausführungsbeispiel wird die Steuerungsnummer dynamisch von der CPU 1 ausgewählt.
- Mit dieser Adressierungshierarchie kann sich eine logische Speichereinheit nicht über physikalische Speichereinheiten erstrecken. Eine physikalische Speichereinheit umfaßt jedoch wenigstens eine logische Speichereinheit und kann mehrere logische Speichereinheiten umfassen. Unter Verwendung dieser Datenstruktur kann ein Block innerhalb einer logischen Speichereinheit lokalisiert werden, indem lediglich sein Offset von der Startblocknummer bekannt ist.
- Fig. 2B zeigt als ein Beispiel die zwölf physikalischen Speichereinheiten der Fig. 2A, die als 24 logische Speichereinheiten definiert sind. Jede der physikalischen Speichereinheiten S0-S11 ist als zwei logische Speichereinheiten definiert. Die erste logische Speichereinheit jeder physikalischen Speichereinheit umfaßt Blöcke L0-L3, während die zweite logische Speichereinheit Blöcke L4-L7 umfaßt.
- Als ein anderes Beispiel kann eine 20.000 Blöcke umfassende physikalische Speichereinheit als zwei logische Speichereinheiten mit jeweils 10.000 Blöcken konfiguriert sein oder als vier logische Speichereinheiten mit jeweils 5.000 Blöcken oder als eine logische Speichereinheit mit 10.000 Blöcken und zwei logische Speichereinheiten mit 5.000 Blöcken. Zwei physikalische Speichereinheiten mit 20.000 Blöcken können jedoch nicht als eine logische Speichereinheit mit 40.000 Blöcken konfiguriert sein.
- Indem lediglich die erste Ebene der logischen Adressierung angewandt wird, kann die Steuerung 3 auf irgendeinen Block auf irgendeiner Speichereinheit in dem in Fig. 1 gezeigten Array zugreifen. Mit diesem Adressierformat alleine können die Speichereinheiten jedoch nicht in die RAID-Architektur mit der flexiblen Konfiguration der vorliegenden Erfindung organisiert werden. Eine zweite logische Adressierungsebene wird benötigt. Die zweite logische Ebene führt dazu, daß die CPU 1 den Array als logische Datenträger adressiert, die einen zusammenhängenden Bereich logischer Blöcke in logischen Speichereinheiten umfassen. Das Adressieren des Arrays in der ersten logischen Ebene wird komplett von der Steuerung 3 gehandhabt und ist für die CPU 1 vollkommen transparent.
- In der zweiten Ebene der logischen Adressierung wird ein logischer Datenträger als eine oder mehrere logische Speichereinheiten definiert. Die Anzahl logischer Speicherein heiten in einem logischen Datenträger definiert die von dem logischen Datenträger anzuwendende Abstreifbreite. Datenblöcke werden immer über einen logischen Datenträger abgestriffen, indem bei der ersten logischen Speichereinheit in dem logischen Datenträger gestartet wird. All die logischen Speichereinheiten in einem logischen Datenträger sind so definiert, daß sie die gleiche Blockgröße und -kapazität haben.
- In Fig. 2C sind die zwölf physikalischen Speichereinheiten der Fig. 2A als zwölf logische Speichereinheiten definiert worden, die in zwei logische Datenträger mit jeweils sechs logischen Speichereinheiten gruppiert sind. (es kann ebenfalls irgendeine andere Konfiguration ausgewählt werden, welche innerhalb der oben beschriebenen Beschränkungen liegt). Die Abstreifbreite beider logischer Datenträger ist in diesem Beispiel gleich sechs.
- Die Abstreifreihenfolge für einen logischen Datenträger hat eine zugehörige "Tiefe". Die Tiefe definiert, wie viele Datenblöcke nacheinander auf eine einzelne logische Speichereinheit geschrieben werden, bevor auf die nächste logische Speichereinheit in dem logischen Datenträger geschrieben wird. Beispielsweise gibt es in Fig. 2C sechs logische Speichereinheiten S0-S5 in dem logischen Datenträger Nr. 0, und der logische Datenträger hat eine Tiefe von einem Block. In Adressieranfragen von der CPU 1 ausgedrückt, beginnt die logische Blocknumerierung des logischen Datenträgers Nr. 0 mit dem ersten logischen Block 0, der ein Block L0 der logischen Speichereinheit S0 ist. Der zweite logische Block 1 ist ein Block L0 der logischen Speichereinheit S1 usw. Der logische Datenträger Nr. 1 ist so gezeigt, daß er mit der selben logischen Struktur definiert ist. Dies ist jedoch nicht erforderlich, wie nachfolgend detaillierter erläutert wird.
- Fig. 2D zeigt ein weiteres Konfigurationsbeispiel für den logischen Datenträger Nr. 0, jedoch mit einer Tiefe von vier Blöcken. Die ersten vier numerierten logischen Blöcke sind aufeinanderfolgende Blöcke auf der logischen Speichereinheit S0; die nächsten vier numerierten logischen Blöcke sind aufeinanderfolgende Blöcke auf der logischen Speichereinheit S1, usw. Beim Betrieb in einem RAID-Modus der Stufe 4 oder 5 der On-Line-Dialogverarbeitung (OLTP) liegt ein erheblicher Vorteil darin, eine Tiefe zu verwenden, welche an die Seitengröße (falls geeignet) des CPU-Betriebssystems angepaßt ist. Falls beispielsweise Anfragen von der CPU 1 immer in einem Umfang von vier Blöcken vorliegen und in Vielfachen von vier Blöcken aufgestellt sind, ist es möglich, daß alle sechs logischen Speichereinheiten des logischen Datenträgers Nr. 0 eine separate Anfrage verarbeiten (unter der Annahme, daß es genügend Anfragen gibt, damit für jede logische Speichereinheit eine Anfrage verfügbar ist).
- Im Gegensatz hierzu würden in der Konfiguration des in Fig. 2C gezeigten logischen Datenträgers Nr. 0 vier logische Speichereinheiten einbezogen sein, wenn eine vier-Block- Anfrage durchgeführt wird. Während die Konfiguration der Fig. 2C eine Parallelität vom RAID-Typ der Stufe 3 ermöglichen würde, würde die Kopfsuchzeit und -latenzzeit für den wahlfreien Zugriff auf vier Blöcke die für die Übertragung von vier Datenblöcken in der Konfiguration der Fig. 2D erforderliche Zeit weit übersteigen (die Zeit zum Übertragen von vier Blöcken ist lediglich geringfügig größer als die Zeit zum Übertragen eines Blockes).
- Die zweite Ebene der logischen Adressierung bildet das Rahmenwerk, das die CPU 1 für die Kommunikation mit dem Speicher-Array verwendet. Eingabe/Ausgabe-Anfragen von der CPU 1 werden durch Angeben eines logischen Datenträgers, einer Logikblock-Anfangsnummer und der Anzahl an Blöcken durchgeführt. Mit dieser Information greift die Steuerung 3 auf die Datenstruktur für den angegebenen logischen Datenträger zu und bestimmt, welche logische(n) Speichereinheit(en) die angefragten Datenblöcke enthält (enthalten). Dies wird durch Vergleich der Logikblock-Anfangsnummer mit den Größen (aus dem Blockzahlparameter) der den logischen Datenträger umfassenden logischen Speichereinheiten durchgeführt.
- Falls ein logischer Datenträger 6 logische Speichereinheiten umfaßt, die jeweils 20.000 Blöcke groß sind, und die angefragte Logikblock-Anfangsnummer für den Block 63.000 ist, wird sich dieser Block auf der vierten logischen Speichereinheit bei einer Offsetnummer von 3.000 Blöcken befinden. Nach Bestimmung der richtigen logischen Speichereinheit und der Offsetnummer wird die Anfrage auf eine entsprechende Kanalnummer, Speichereinheitsnummer und Startblocknummer abgebildet. Die Anfrage weist ferner den Offset von der Startblocknummer und die Anzahl zu übertragender Blöcke auf. In diesem Beispiel ist die gewünschte Logikblock-Anfangsnummer bei einer Offsetnummer von 3.000 Blöcken von der abgebildeten Startblocknummer der vierten logischen Speichereinheit. Diese Abbildung wird auf bekannte Weise durchgeführt.
- Mit der vorliegenden Erfindung kann die Größe eines logischen Datenträgers geändert werden, ohne irgendeine Anwendung zu ändern. Da jedoch die Daten über die den logischen Datenträger umfassenden logischen Speichereinheiten abgestriffen werden, ist es erforderlich, einen logischen Datenträger nach dessen Änderung zu "reformatieren" (z. B. durch Hinzufügen oder Löschen physikalischer Speichereinheiten). Das Hinzufügen einer physikalischen Speichereinheit ist ähnlich dem Ersetzen einer kleineren physikalischen Speichereinheit durch eine größere Speichereinheit, außer daß die Kosten erhöht sind, da die ursprünglichen physikalischen Speichereinheiten weiter als ein Teil der "größeren" Speichereinheit verwendet werden.
- Die vorliegende Erfindung gestattet es, daß verschiedene logische Datenträger verschiedene Tiefen haben. Beispielsweise sind in Fig. 2D die zwölf physikalischen Speichereinheiten der Fig. 2A als zwölf logische Speichereinheiten definiert worden, die in zwei logische Datenträger aus jeweils sechs logischen Speichereinheiten gruppiert sind. Die logischen Speichereinheiten S0-S5 umfassen den logischen Datenträger Nr. 0, wobei der Datenträger eine Tiefe von vier Blöcken hat, und die logischen Speichereinheiten S6-S11 umfassen den logischen Datenträger Nr. 1, wobei der Datenträger eine Tiefe von einem Block hat.
- Die Leistungsfähigkeit eines Arrays wird durch die Art bestimmt, wie die logischen Datenträger konfiguriert sind. Für die Benutzung einer hohen Eingabe/Ausgabe-Bandbreite ist es besser, die logischen Speichereinheiten über mehrere Controller auszuweiten, um Parallelübertragungen zu optimieren. Für den OLTP-Modus (d. h. RAID Stufe 4 oder 5) ist die Anzahl gleichzeitig handhabbarer Dialoge um so größer (bis zu dem Punkt, zu dem die CPU 1 ihre Verarbeitungskapazität erreicht), je größer die Anzahl logischer Speichereinheiten in einem logischen Datenträger ist. Vom Standpunkt der Leistungsfähigkeit ist in dem OLTP-Modus das Abstreifen über mehrere Kanäle auf verschiedene physikalische Speichereinheiten (auf die jeweils auf unabhängigen E/A-Bussen 4 zugegriffen werden kann) im allgemeinen besser als das Abstreifen eines Kanals auf zusätzliche physikalische Speichereinheiten (wo Eingabe/Ausgabe-Anfragen nach verschiedenen physikalischen Speichereinheiten den gleichen Eingabe/Ausgabe- Bus 4 teilen müssen).
- Nachdem die logischen Datenträger definiert sind, werden Redundanzgruppen definiert, die einen oder mehrere logische Datenträger umfassen. (Alternativ werden Redundanzgruppen als eine oder mehrere logische Speichereinheiten definiert, und logische Datenträger werden als ein Glied einer Redundanzgruppe definiert. Beide Charakterisierungen resultieren in der selben grundsätzlichen Datenstruktur). Ein logischer Datenträger muß vollständig in einer Redundanzgruppe enthalten sein (falls er in irgendeiner Redundanzgruppe enthalten ist). In dem bevorzugten Ausführungsbeispiel der Erfindung werden bis zu zwei Redundanzgrade unterstützt. Jeder Redundanzgrad erlaubt einer logischen Speichereinheit in einer Redundanzgruppe, daß sie ohne irgendeinen Verlust an Benut zerdaten ausfällt. Somit erlaubt ein Redundanzgrad (P- Redundanz genannt), daß eine logische Speichereinheit pro Redundanzgruppe ohne Datenverlust ausfallen kann, während zwei Redundanzgrade (der zweite Grad wird Q-Redundanz genannt) es erlauben, daß zwei logische Speichereinheiten pro Redundanzgruppe ohne Datenverlust ausfallen.
- Jede Blockreihe in einer Redundanzgruppe wird eine Redundanzreihe genannt. Es werden Redundanzblöcke für die Blöcke in jeder Redundanzreihe erzeugt und in der entsprechenden Redundanzreihe gespeichert. Somit verliert jede Reihe aufgrund der Redundanzblöcke ein oder zwei Blöcke an Datenspeicherkapazität (eine für die P- und eine für die Q- Redundanz). Da jedoch die CPU 1 lediglich logische Datenträger "sieht", die einen scheinbar zusammenhängenden Bereich logischer Blöcke umfassen, ist dieser Verlust für die CPU 1 transparent (außer der Verlust in der Gesamtkapazität der logischen Speichereinheiten in der Redundanzgruppe und ein Bandbreitenverlust).
- In dem bevorzugten Ausführungsbeispiel werden P-Redundanzblöcke durch eine Exklusiv-Oder-Veknüpfung aller Datenblöcke in einer Redundanzreihe auf bekannte Weise berechnet. In dem bevorzugten Ausführungsbeispiel werden Q-Redundanzblöcke durch Anwendung einer Reed-Solomon-Kodiermethode an alle Datenblöcke in einer Redundanzreihe auf bekannte Weise berechnet. Es können jedoch andere Redundanzerzeugungstechniken anstelle der bevorzugten XOR-Verknüpfungstechnik und der bevorzugten Reed-Solomon-Technik angewandt werden. Die Erzeugung der P- und der Q-Redundanz und die Wiedergewinnung von Benutzerdaten nach einem Ausfall ist detailliert in der US- Patentanmeldung Nr. 270,713, eingereicht am 14.11.88 mit dem Titel "Arrayed Disk Drive System and Method" von dem gleichen Anmelder beschrieben.
- Redundanzgruppen werden auf einer Block-für-Block-Basis berechnet. Es ist daher möglich, mehrere logische Datenträger mit verschiedenen Tiefen zu haben, die jedoch in der glei chen Redundanzgruppe enthalten sind. Somit können beispielsweise sechs logische Speichereinheiten aus einem Array mit zwölf physikalischen Speichereinheiten als ein logischer Datenträger mit einer RAID-3-ähnlichen Architektur hoher Bandbreite (jedoch mit geteilter Parität über die Redundanzgruppe) definiert sein, der eine Tiefe von vier Blöcken hat, während die verbleibenden sechs logischen Speichereinheiten als ein logischer Datenträger mit einer RAID-5-ähnlichen OLTP-Architektur, der eine Tiefe von einem Block hat, aufgestellt sein können (siehe z. B. Fig. 2D) Eine Schreiboperation auf den logischen Datenträger Nr. 0 erfordert die Aktualisierung des zugehörigen Paritätsblocks, wo auch immer sich der Paritätsblock in der Redundanzgruppe befindet (d. h. in dem logischen Datenträger Nr. 0 oder dem logischen Datenträger Nr. 1). Auf ähnliche Weise erfordert eine Schreiboperation auf den logischen Datenträger Nr. 1 eine Aktualisierung des entsprechenden Paritätsblocks, wo auch immer sich dieser in der Redundanzgruppe befindet. Die Differenz in den Datenträgertiefen zwischen den beiden logischen Datenträgern führt zu keinem Problem, da die Paritätsblöcke auf einer Block-für-Block-Basis aktualisiert werden und alle Datenträgertiefen Vielfache der Blockgröße sind.
- Redundanzblöcke sind gleichmäßig über eine ganze Redundanzgruppe verteilt, so daß ihre Positionen relativ zu der Position der von der CPU 1 angefragten Datenblöcke berechnet werden können. Das Verteilen der Redundanzblöcke hindert den Array auch daran, in dem OLTP-Modus auf der die Redundanzblöcke enthaltenden logischen Speichereinheit "durchzunumerieren" (d. h. eine verteilte Redundanz führt zu einer RAID- Architektur der Stufe 5, während eine nicht-verteilte Redundanz zu einer RAID-Architektur der Stufe 3 oder 4 führt).
- Fig. 2E ist ein Diagramm eines beispielhaften RAID-Systems, das eine typische logische Organisation mit einer Tiefe von einem Block und einem Redundanzgrad zeigt. Redundanzblöcke sind mit "P" bezeichnet. Fig. 2F ist ein Diagramm eines beispielhaften RAID-Systems, das eine typische logische Or ganisation mit einer Tiefe von einem Block und zwei Redundanzgraden zeigt. Redundanzblöcke sind mit "P" und "Q" bezeichnet. Jede in einen einzelnen Array konfigurierte Redundanzgruppe kann einen unterschiedlichen Redundanzgrad haben, so daß die CPU 1 die Redundanzgrade für jede Redundanzgruppe an Zuverlässigkeitsbedürfnisse anpassen kann. Das Ändern einer Redundanzgruppe (Hinzufügen oder Löschen logischer Datenträger oder Ändern des Redundanzgrads) erfordert eine "Reformatierungs"-Operation (die dynamisch durchgeführt werden kann, d. h. ohne Anhalten der normalen Zugriffsoperationen).
- Es sei bemerkt, daß das spezielle Muster der in den Fig. 2E und 2F gezeigten Verteilung von Redundanzblöcken lediglich beispielhaft ist, und daß andere Verteilungsmuster innerhalb des Bereichs dieser Erfindung liegen.
- Selbst wenn die Tiefe eines logischen Datenträgers größer als eins ist, beruht die Erzeugung von P- und Q- Redundanzblöcken auf den Blöcken in der selben Reihe. Wenn der Redundanzgrad (0,1 oder 2) ausgewählt ist, ist es erforderlich, den notwendigen Zuverlässigkeitsgrad zu gewichten. Es ist ebenfalls notwendig, zu bestimmen, wie viel Speicherraum geopfert werden soll. Je größer die Anzahl an logischen Speichereinheiten in einer Redundanzgruppe ist, um so kleiner ist die Menge des Verlusts der Gesamtkapazität an Redundanzblöcke. Je größer jedoch die Größe einer Redundanzgruppe ist, um so höher ist die Wahrscheinlichkeit für den Ausfall einer Speichereinheit, und daher um so niedriger die Zuverlässigkeit der Redundanzgruppe. Beim Korrigieren von Daten aufgrund von Speichereinheitsausfällen ist es erforderlich, die gesamten Redundanzreihen wiederzulesen, so daß die Antwort auf die Eingabe/Ausgabe-Anfragen an eine Redundanzgruppe, die einen Speichereinheitsausfall hat, um so langsamer ist, je größer die Redundanzgruppe ist. Je größer die Redundanzgruppe ist, desto besser kann die Gesamtleistungsfähigkeit in einem OLTP-Modus sein, da einfach mehr Wandlerköpfe und ein niedrigeres Verhältnis an Redundanzblöcken zu Datenblöcken einbezogen sind.
- Fig. 3A ist eine Darstellung einer Datenstruktur für den in Fig. 2C gezeigten Array, mit einer einzelnen Redundanzgruppe (Nr. 0), die so definiert ist, daß sie zwei logische Datenträger (Nr. 0 und Nr. 1) umfaßt. Fig. 3B ist eine Darstellung einer Datenstruktur für den gleichen Array, jedoch mit zwei Redundanzgruppen (Nr. 0 und Nr. 1), die so definiert sind, daß sie jeweils einen logischen Datenträger Nr. 0 und einen logischen Datenträger Nr. 1 umfassen. Mit dieser Datenstruktur wird eine Eingabe/Ausgabe-Anfrage von der CPU 1, in einem logischen Datenträger, einer Logikblock-Anfangsnummer und der Anzahl an Blöcken ausgedrückt, spezifiziert. Mit dieser Information greift die Steuerung 3 auf die Datenstruktur für den angegebenen logischen Datenträger zu und bestimmt, welche logische(n) Speichereinheit(en) die angefragten Datenblöcke enthält (enthalten). Wie oben bemerkt, wird dies durch Vergleich der Logikblock-Anfangsnummer mit den Größen (aus dem Blockzahlparameter) der den logischen Datenträger umfassenden logischen Speichereinheiten durchgeführt. Nach Bestimmung der richtigen logischen Speichereinheit und der Offsetnummer wird die Anfrage auf eine entsprechende Kanalnummer, Speichereinheitsnummer und Startblocknummer abgebildet. Die Anfrage weist ferner den Offset von der Startblocknummer und die Anzahl zu übertragender Blöcke auf. Diese Parameter ermöglichen die Adressierung einer physikalischen Speichereinheit, um auf die angefragten Datenblöcke zuzugreifen.
- Zusammenfassend wird ein redundantes Array-Speichersystem, das einen Satz blockadressierbarer physikalischer Speichereinheiten umfaßt, während eines Initialisierungsprozesses konfiguriert. Jede physikalische Speichereinheit wird unabhängig definiert, daß sie eine oder mehrere logische Speichereinheiten umfaßt, die in einer Kanalnummer, einer Speichereinheitsnummer, einer Startblocknummer, einer Offsetnummer und einer Anzahl zu übertragender Blöcke ausgedrückt sind, adressierbar ist. Logische Datenträger werden dann unabhängig als eine oder mehrere logische Speichereinheiten definiert, wobei jeder logische Datenträger eine unabhängig definierbare Tiefencharakteristik hat. Redundanzgruppen werden dann unabhängig als ein oder mehrere logische Datenträger definiert, wobei jede Redundanzgruppe einen unabhängig definierbaren Redundanzgrad hat. Der Redundanzgrad kann keine, eine (z. B. XOR-Parität oder einen Fehlerkorrektur-Code, wie einen Reed-Solomon-Code) oder zwei (z. B. XOR- Parität plus beispielsweise einen Reed-Solomon- Fehlerkorrektur-Code) sein. (Alternativ werden Redundanzgruppen als eine oder mehrere logische Speichereinheiten definiert, und logische Datenträger werden als ein Glied einer Redundanzgruppe definiert).
- Logische Datenträger werden von einer Rechner-CPU 1 durch eine Datenträgernummer, eine Anfangsblocknummer und eine Anzahl zu übertragender Blöcke adressiert. Die CPU 1 gibt ebenfalls eine LESE- oder SCHREIB-Operation an. Die CPU 1 sendet die Zugriffsanfrage an eine ausgewählte Steuerung 3, 3', welche die angegebene Datenträgernummer, Anfangsblocknummer und Anzahl zu übertragender Blöcke in eine entsprechende Kanalnummer, Speichereinheitsnummer, Startblocknummer, Offsetnummer und Anzahl zu übertragenden Blöcke übersetzt.
- Unter Verwendung der logischen Organisation und des Verfahrens für den Speichereinheitszugriff der vorliegenden Erfindung können RAID-Architekturen gleichzeitig unterstützt werden, welche die gleichen physikalischen Speichereinheiten verwenden. Beispielsweise können somit die zwölf in Fig. 2D gezeigten logischen Disks in (1) einen logischen Datenträger Nr. 0 mit einer Breite von 6 logischen Disks und einer Tiefe von vier Blöcken konfiguriert und in einem RAID-Modus der Stufe 3 (hohe Eingabe/Ausgabe-Bandbreite) betrieben werden, und in (2) einen logischen Datenträger Nr. 1 mit einer Brei te von sechs logischen Disks und einer Tiefe von einem Block konfiguriert und in einem RAID-Modus der Stufe 5 (On-Line- Dialogverarbeitung) betrieben werden.
- Die vorliegende Erfindung ist daher extrem flexibel und ermöglicht einem redundanten Array-Speichersystem, als ein RAID-System der Stufe 1, 3, 4 oder 5 oder als irgendeine Kombination dieser Konfigurationen konfiguriert zu werden. In der vorliegenden Erfindung ist es daher für einen logischen Datenträger möglich, sich über physikalische Speichereinheiten zu erstrecken ("vertikale Aufteilung"), lediglich einen Teil jeder dieser physikalischen Speichereinheiten zu umfassen ("horizontale Aufteilung") und eine definierbare Tiefen- und Redundanzcharakteristik zu haben.
- Es sind einige Ausführungsbeispiele der vorliegenden Erfindung beschrieben worden. Nichtsdestotrotz ist es selbstverständlich, daß zahlreiche Modifikationen vorgenommen werden können, ohne den Bereich der Erfindung zu verlassen. Dementsprechend ist es selbstverständlich, daß die Erfindung nicht auf die speziellen dargestellten Ausführungsbeispiele beschränkt ist, sondern lediglich durch den Bereich der beigefügten Ansprüche.
Claims (12)
1. Verfahren zum Adressieren eines redundanten Array-
Speichersystems, umfassend einen Array-Controller in
operativer Verbindung mit einer CPU (1) und eine
Vielzahl physikalischer Datenspeichereinheiten (S1-S6), die
mit dem Array-Controller (3) über entsprechende
Eingabe/Ausgabekanäle (4) gekoppelt sind, wobei jede
physikalische Datenspeichereinheit eine Vielzahl
adressierbarer Blöcke umfaßt, und das Verfahren folgendes
umfaßt:
Übertragen von Speicherzugriffsanfragen von der
CPU an den Array-Controller; und
Übersetzen jeder Speicherzugriffsanfrage in eine
Adresse für die physikalischen Datenspeichereinheiten
entsprechend einer ersten logischen Adressierungsebene,
um einen Satz adressierbarer Blöcke in Antwort auf jede
Speicherzugriffsanfrage zu adressieren;
wobei die adressierbaren Blöcke in Redundanzsätze
organisiert sind, mit wenigstens einem adressierbaren
Block in einem Redundanzsatz, der Redundanzinformation
für übrige Blöcke in dem Redundanzsatz enthält;
dadurch gekennzeichnet, daß:
i) die Speicherzugriffsanfragen von der CPU
entsprechend einer zweiten logischen Adressierungsebene
ausgegeben werden, wobei jede Speicherzugriffsanfrage
eine Nummer eines logischen Datenträgers, eine Nummer
eines Anfangsblocks und die Anzahl zu übertragender
Blöcke spezifiziert;
ii) der Array-Controller die Übersetzung unter
Verwendung einer Datenstruktur durchführt, die jeden
logischen Datenträger als eine oder mehrere logische
Speichereinheiten definiert, wobei jede logische
Speichereinheit eine Anzahl adressierbarer Blöcke umfaßt
und alle logischen Speichereinheiten in einem logischen
Datenträger die gleiche Anzahl adressierbarer Blöcke
umfassen, wobei jeder logische Datenträger eine
unabhängig definierbare Tiefencharakteristik hat, die in
der Anzahl adressierbarer Blöcke ausgedrückt ist, auf
die nacheinander in einer einzigen logischen
Speichereinheit zugegriffen wird, bevor auf die nächste
logische Speichereinheit in dem logischen Datenträger
zugegriffen wird, wobei jede Speicherzugriffsanfrage auf
eine oder mehrere logische Speichereinheiten abgebildet
wird;
iii) jeder adressierbare Block innerhalb einer
logischen Speichereinheit durch eine Kanalnummer,
Speichereinheitsnummer, Startblocknummer und Offsetnummer
adressiert wird;
iv) Redundanzgruppen definiert werden, von denen
wenigstens eine mehr als einen logischen Datenträger
mit unabhängig definierbarer Tiefencharakteristik
umfaßt, wobei jede Redundanzgruppe einen konfigurierbaren
Redundanzgrad hat; und
v) die Blöcke der Redundanzsätze über eine
Redundanzgruppe über die Grenzen des logischen
Datenträgers hinweg verteilt werden.
2. Verfahren nach Anspruch 1, bei welchem die
Redundanzgruppen wenigstens zwei Redundanzgruppen mit
gleichwertigen Redundanzgraden umfassen.
3. Verfahren nach Anspruch 1, bei welchem die
Redundanzgruppen wenigstens zwei Redundanzgruppen mit
unterschiedlichen Redundanzgraden umfassen.
4. Verfahren nach einem der Ansprüche 1 bis 3, bei welchem
die Datenstruktur bei der Initialisierung des
Speichersystems konfiguriert wird.
5. Verfahren nach einem der Ansprüche 1 bis 3, bei welchem
die Datenstruktur konfiguriert wird, wenn normale
Zugriffsoperationen nicht im Gange sind.
6. Verfahren nach einem der Ansprüche 1 bis 3, bei welchem
die Datenstruktur ohne Anhalten normaler
Zugriffsoperationen konfiguriert wird.
7. Redundantes Array-Speichersystem, das folgendes umfaßt:
einen Array-Controller (3);
eine Vielzahl physikalischer
Datenspeichereinheiten (S1-S6), die mit dem Array-Controller über
jeweilige Eingabe/Ausgabekanäle gekoppelt sind, wobei jede
physikalische Datenspeichereinheit eine Vielzahl
adressierbarer Blöcke umfaßt;
wobei der Array-Controller folgendes umfaßt:
eine Verbindung zu einem CPU-Bus (2) zum Empfangen
einer Speicherzugriffsanfrage von der CPU, wobei der
Array-Controller unabhängig von der CPU arbeitet, um
die physikalischen Datenspeichereinheiten zu steuern;
und
Mittel zum Adressieren der physikalischen
Datenspeichereinheiten entsprechend einer ersten logischen
Adressierungsebene, um einen Satz der adressierbaren
Blöcke in Antwort auf jede Speicherzugriffsanfrage zu
adressieren;
wobei die adressierbaren Blöcke in Redundanzsätze
organisiert sind, mit wenigstens einem adressierbaren
Block in einem Redundanzsatz, der Redundanzinformation
für übrige Blöcke in dem Satz enthält;
dadurch gekennzeichnet, daß:
i) die erste logische Adressierungsebene die
Bestimmung einer Kanalnummer, Speichereinheitsnummer,
Startblocknummer und Offsetnummer für die
adressierbaren Blöcke einschließt;
ii) die Speicherzugriffsanfragen von der CPU
entsprechend einer zweiten logischen Adressierungsebene
ausgegeben werden, bei welcher jede
Speicherzugriffsanfrage wenigstens eine Nummer eines logischen
Datenträgers, eine Nummer eines Anfangsblocks und eine Anzahl
an Blöcken spezifiziert, auf die zugegriffen werden
soll;
iii) der Array-Controller eine Datenstruktur hält,
welche jeden logischen Datenträger als eine oder
mehrere logische Speichereinheiten definiert, wobei jede
logische Speichereinheit eine Anzahl adressierbarer
Blöcke umfaßt und alle logischen Speichereinheiten in einem
logischen Datenträger die gleiche Anzahl adressierbarer
Blöcke umfassen, wobei jeder logische Datenträger eine
unabhängig definierbare Tiefencharakteristik hat, die
in der Anzahl adressierbarer Blöcke ausgedrückt ist,
auf die nacheinander in einer einzigen logischen
Speichereinheit zugegriffen wird, bevor auf die nächste
logische Speichereinheit in dem logischen Datenträger
zugegriffen wird, wobei jede Speicherzugriffsanfrage auf
eine oder mehrere logische Speichereinheiten abgebildet
wird;
iv) die Datenstruktur konfigurierbar ist, um
Redundanzgruppen zu definieren, von denen wenigstens eine
mehr als einen logischen Datenträger mit unabhängig
definierbarer Tiefencharakteristik umfaßt, wobei jede
Redundanzgruppe einen konfigurierbaren Redundanzgrad hat,
und wobei die Blöcke der Redundanzsätze über eine
Redundanzgruppe über die Grenzen des logischen
Datenträgers hinweg verteilt sind.
8. Speichersystem nach Anspruch 7, bei welchem die
Redundanzgruppen wenigstens zwei Redundanzgruppen mit
gleichwertigen Redundanzgraden umfassen.
9. Speichersystem nach Anspruch 7 oder 8, bei welchem die
Redundanzgruppen wenigstens zwei Redundanzgruppen mit
unterschiedlichen Redundanzgraden umfassen.
10. Speichersystem nach einem der Ansprüche 7 bis 9, bei
welchem die logischen Datenträger bei der
Initialisierung des Speichersystems konfigurierbar sind.
11. Speichersystem nach einem der Ansprüche 7 bis 10, bei
welchem die logischen Datenträger zu einem Zeitpunkt
konfigurierbar sind, bei dem normale
Zugriffsoperationen nicht im Gange sind.
12. Speichersystem nach einem der Ansprüche 7 bis 11, bei
welchem die logischen Datenträger ohne Anhalten
normaler Zugriffsoperationen konfigurierbar sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US61222090A | 1990-11-09 | 1990-11-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69131551D1 DE69131551D1 (de) | 1999-09-30 |
DE69131551T2 true DE69131551T2 (de) | 2000-02-17 |
Family
ID=24452245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69131551T Expired - Fee Related DE69131551T2 (de) | 1990-11-09 | 1991-10-30 | Logische Aufteilung eines Speichersystems mit redundanter Matrix |
Country Status (6)
Country | Link |
---|---|
US (3) | US5519844A (de) |
EP (1) | EP0485110B1 (de) |
JP (1) | JP3304115B2 (de) |
AU (1) | AU8683991A (de) |
CA (1) | CA2054794C (de) |
DE (1) | DE69131551T2 (de) |
Families Citing this family (201)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU8683991A (en) * | 1990-11-09 | 1992-05-14 | Array Technology Corporation | Logical partitioning of a redundant array storage system |
US5499337A (en) * | 1991-09-27 | 1996-03-12 | Emc Corporation | Storage device array architecture with solid-state redundancy unit |
US5974544A (en) * | 1991-12-17 | 1999-10-26 | Dell Usa, L.P. | Method and controller for defect tracking in a redundant array |
JP2868141B2 (ja) * | 1992-03-16 | 1999-03-10 | 株式会社日立製作所 | ディスクアレイ装置 |
US5471640A (en) * | 1992-07-06 | 1995-11-28 | Hewlett-Packard | Programmable disk array controller having n counters for n disk drives for stripping data where each counter addresses specific memory location by a count n |
JP3183719B2 (ja) * | 1992-08-26 | 2001-07-09 | 三菱電機株式会社 | アレイ型記録装置 |
JP3181398B2 (ja) * | 1992-10-06 | 2001-07-03 | 三菱電機株式会社 | アレイ型記録装置 |
US5666511A (en) * | 1992-10-08 | 1997-09-09 | Fujitsu Limited | Deadlock suppressing schemes in a raid system |
US5579474A (en) * | 1992-12-28 | 1996-11-26 | Hitachi, Ltd. | Disk array system and its control method |
JPH06217250A (ja) * | 1993-01-20 | 1994-08-05 | Sony Corp | Av機器の信号ラインの制御方法 |
CA2121852A1 (en) * | 1993-04-29 | 1994-10-30 | Larry T. Jost | Disk meshing and flexible storage mapping with enhanced flexible caching |
US6604118B2 (en) | 1998-07-31 | 2003-08-05 | Network Appliance, Inc. | File system image transfer |
JPH08511368A (ja) * | 1993-06-04 | 1996-11-26 | ネットワーク・アプリアンス・コーポレーション | 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法 |
US5392244A (en) * | 1993-08-19 | 1995-02-21 | Hewlett-Packard Company | Memory systems with data storage redundancy management |
JP3249868B2 (ja) * | 1993-11-19 | 2002-01-21 | 株式会社日立製作所 | アレイ形式の記憶装置システム |
EP0689125B1 (de) * | 1994-06-22 | 2004-11-17 | Hewlett-Packard Company, A Delaware Corporation | Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung |
US5615352A (en) * | 1994-10-05 | 1997-03-25 | Hewlett-Packard Company | Methods for adding storage disks to a hierarchic disk array while maintaining data availability |
US5659704A (en) * | 1994-12-02 | 1997-08-19 | Hewlett-Packard Company | Methods and system for reserving storage space for data migration in a redundant hierarchic data storage system by dynamically computing maximum storage space for mirror redundancy |
US5651133A (en) * | 1995-02-01 | 1997-07-22 | Hewlett-Packard Company | Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system |
US5666512A (en) * | 1995-02-10 | 1997-09-09 | Hewlett-Packard Company | Disk array having hot spare resources and methods for using hot spare resources to store user data |
JP3358687B2 (ja) * | 1995-03-13 | 2002-12-24 | 株式会社日立製作所 | ディスクアレイ装置 |
JPH08329021A (ja) * | 1995-03-30 | 1996-12-13 | Mitsubishi Electric Corp | クライアントサーバシステム |
US5678061A (en) * | 1995-07-19 | 1997-10-14 | Lucent Technologies Inc. | Method for employing doubly striped mirroring of data and reassigning data streams scheduled to be supplied by failed disk to respective ones of remaining disks |
US5657468A (en) * | 1995-08-17 | 1997-08-12 | Ambex Technologies, Inc. | Method and apparatus for improving performance in a reduntant array of independent disks |
US5875456A (en) * | 1995-08-17 | 1999-02-23 | Nstor Corporation | Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array |
US5845319A (en) * | 1995-08-23 | 1998-12-01 | Fujitsu Limited | Disk array device which separates local and physical disks using striping and operation mode selection |
JP3686457B2 (ja) * | 1995-08-31 | 2005-08-24 | 株式会社日立製作所 | ディスクアレイサブシステム |
US5774641A (en) * | 1995-09-14 | 1998-06-30 | International Business Machines Corporation | Computer storage drive array with command initiation at respective drives |
WO1997011426A1 (en) * | 1995-09-18 | 1997-03-27 | Cyberstorage Systems, Inc. | Universal storage management system |
US5893138A (en) * | 1995-10-02 | 1999-04-06 | International Business Machines Corporation | System and method for improving channel hardware performance for an array controller |
US5812753A (en) * | 1995-10-13 | 1998-09-22 | Eccs, Inc. | Method for initializing or reconstructing data consistency within an array of storage elements |
US5809224A (en) * | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | On-line disk array reconfiguration |
US5822782A (en) * | 1995-10-27 | 1998-10-13 | Symbios, Inc. | Methods and structure to maintain raid configuration information on disks of the array |
US5727181A (en) * | 1996-02-14 | 1998-03-10 | International Business Machines Corporation | Array management system with volume transform filter |
US6233704B1 (en) | 1996-03-13 | 2001-05-15 | Silicon Graphics, Inc. | System and method for fault-tolerant transmission of data within a dual ring network |
US5864738A (en) * | 1996-03-13 | 1999-01-26 | Cray Research, Inc. | Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller |
US5748900A (en) * | 1996-03-13 | 1998-05-05 | Cray Research, Inc. | Adaptive congestion control mechanism for modular computer networks |
US5805788A (en) * | 1996-05-20 | 1998-09-08 | Cray Research, Inc. | Raid-5 parity generation and data reconstruction |
US5761534A (en) * | 1996-05-20 | 1998-06-02 | Cray Research, Inc. | System for arbitrating packetized data from the network to the peripheral resources and prioritizing the dispatching of packets onto the network |
US5862313A (en) * | 1996-05-20 | 1999-01-19 | Cray Research, Inc. | Raid system using I/O buffer segment to temporary store striped and parity data and connecting all disk drives via a single time multiplexed network |
US5893919A (en) * | 1996-09-27 | 1999-04-13 | Storage Computer Corporation | Apparatus and method for storing data with selectable data protection using mirroring and selectable parity inhibition |
US5926649A (en) * | 1996-10-23 | 1999-07-20 | Industrial Technology Research Institute | Media server for storage and retrieval of voluminous multimedia data |
JP3344907B2 (ja) * | 1996-11-01 | 2002-11-18 | 富士通株式会社 | Raid装置及び論理ボリュームのアクセス制御方法 |
US6023584A (en) * | 1997-01-03 | 2000-02-08 | Ncr Corporation | Installation of computer programs using disk mirroring |
JPH10198526A (ja) | 1997-01-14 | 1998-07-31 | Fujitsu Ltd | Raid装置及びそのアクセス制御方法 |
US5948060A (en) * | 1997-01-24 | 1999-09-07 | International Business Machines Corporation | Speeding-up communication rates on links transferring data structures by a method of handing scatter/gather of storage blocks in commanded computer systems |
US5946707A (en) * | 1997-02-28 | 1999-08-31 | Adaptec, Inc. | Interleaved burst XOR using a single memory pointer |
US6658526B2 (en) * | 1997-03-12 | 2003-12-02 | Storage Technology Corporation | Network attached virtual data storage subsystem |
WO1998040810A2 (en) * | 1997-03-12 | 1998-09-17 | Storage Technology Corporation | Network attached virtual tape data storage subsystem |
US6073209A (en) * | 1997-03-31 | 2000-06-06 | Ark Research Corporation | Data storage controller providing multiple hosts with access to multiple storage subsystems |
US6041329A (en) * | 1997-05-29 | 2000-03-21 | International Business Machines Corporation | Automated message processing system configured to automatically manage introduction of removable data storage media into media library |
US5911148A (en) * | 1997-05-29 | 1999-06-08 | International Business Machines Corporation | Automated message processing system configured for automated tape device management |
US5999982A (en) * | 1997-05-29 | 1999-12-07 | International Business Machines Corporation | Automated message processing system having a plurality of expert local facilities responsive to messages routed thereto to perform predetermined actions |
US5991894A (en) * | 1997-06-06 | 1999-11-23 | The Chinese University Of Hong Kong | Progressive redundancy transmission |
US6016552A (en) * | 1997-06-06 | 2000-01-18 | The Chinese University Of Hong Kong | Object striping focusing on data object |
US6216211B1 (en) | 1997-06-13 | 2001-04-10 | International Business Machines Corporation | Method and apparatus for accessing mirrored logical volumes |
US5960451A (en) * | 1997-09-16 | 1999-09-28 | Hewlett-Packard Company | System and method for reporting available capacity in a data storage system with variable consumption characteristics |
US6112257A (en) * | 1997-09-24 | 2000-08-29 | Emc Corporation | Dynamic adjustment of mirror service policy for logical volumes in a disk drive system based on collected statistics |
US6085303A (en) * | 1997-11-17 | 2000-07-04 | Cray Research, Inc. | Seralized race-free virtual barrier network |
US5970232A (en) * | 1997-11-17 | 1999-10-19 | Cray Research, Inc. | Router table lookup mechanism |
US6098119A (en) * | 1998-01-21 | 2000-08-01 | Mylex Corporation | Apparatus and method that automatically scans for and configures previously non-configured disk drives in accordance with a particular raid level based on the needed raid level |
US6029168A (en) * | 1998-01-23 | 2000-02-22 | Tricord Systems, Inc. | Decentralized file mapping in a striped network file system in a distributed computing environment |
US6105118A (en) * | 1998-02-02 | 2000-08-15 | International Business Machines Corporation | System and method for selecting which data copy to read in an information handling system |
US6078990A (en) * | 1998-02-06 | 2000-06-20 | Ncr Corporation | Volume set configuration using a single operational view |
US6457130B2 (en) | 1998-03-03 | 2002-09-24 | Network Appliance, Inc. | File access control in a multi-protocol file server |
US6317844B1 (en) | 1998-03-10 | 2001-11-13 | Network Appliance, Inc. | File server storage arrangement |
US6122685A (en) * | 1998-05-06 | 2000-09-19 | Emc Corporation | System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed |
US6654881B2 (en) | 1998-06-12 | 2003-11-25 | Microsoft Corporation | Logical volume mount manager |
EP1090353A1 (de) | 1998-06-22 | 2001-04-11 | Colin Constable | Virtuelles datenbewahrungssystem (vds) |
EP0969371A1 (de) * | 1998-06-30 | 2000-01-05 | Sun Microsystems, Inc. | Überprüfung der Konfiguration von Speichereinheiten die sich auf Gerätidentifizierung basieren |
US6263382B1 (en) * | 1998-07-29 | 2001-07-17 | Compaq Computer Corporation | Sizer for interactive computer system configuration |
US6192470B1 (en) * | 1998-07-29 | 2001-02-20 | Compaq Computer Corporation | Configuration sizer for selecting system of computer components based on price/performance normalization |
US6253318B1 (en) * | 1998-07-29 | 2001-06-26 | Compaq Computer Corporation | Method of developing physical requirements for computer configuration |
US7013305B2 (en) | 2001-10-01 | 2006-03-14 | International Business Machines Corporation | Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange |
GB2341715A (en) * | 1998-09-17 | 2000-03-22 | Springtek Limited | Magnetic disk redundant array |
JP3505093B2 (ja) | 1998-09-18 | 2004-03-08 | 富士通株式会社 | ファイル管理システム |
US6216174B1 (en) | 1998-09-29 | 2001-04-10 | Silicon Graphics, Inc. | System and method for fast barrier synchronization |
US6343984B1 (en) | 1998-11-30 | 2002-02-05 | Network Appliance, Inc. | Laminar flow duct cooling system |
JP4874515B2 (ja) * | 1998-12-22 | 2012-02-15 | 株式会社日立製作所 | 記憶装置システム |
US6542961B1 (en) | 1998-12-22 | 2003-04-01 | Hitachi, Ltd. | Disk storage system including a switch |
US6230217B1 (en) * | 1998-12-30 | 2001-05-08 | Raytheon Company | Data storage system having a host computer coupled to bank of disk drives through interface comprising plurality of directors, buses, and a PCB connectors |
US6457139B1 (en) * | 1998-12-30 | 2002-09-24 | Emc Corporation | Method and apparatus for providing a host computer with information relating to the mapping of logical volumes within an intelligent storage system |
US6363457B1 (en) | 1999-02-08 | 2002-03-26 | International Business Machines Corporation | Method and system for non-disruptive addition and deletion of logical devices |
US6467023B1 (en) * | 1999-03-23 | 2002-10-15 | Lsi Logic Corporation | Method for logical unit creation with immediate availability in a raid storage environment |
US6336173B1 (en) | 1999-04-01 | 2002-01-01 | International Business Machines Corporation | Storing and tracking multiple copies of data in data storage libraries |
US6336172B1 (en) | 1999-04-01 | 2002-01-01 | International Business Machines Corporation | Storing and tracking multiple copies of data in a data storage library system |
US6275898B1 (en) | 1999-05-13 | 2001-08-14 | Lsi Logic Corporation | Methods and structure for RAID level migration within a logical unit |
US6463573B1 (en) * | 1999-06-03 | 2002-10-08 | International Business Machines Corporation | Data processor storage systems with dynamic resynchronization of mirrored logical data volumes subsequent to a storage system failure |
US6519679B2 (en) | 1999-06-11 | 2003-02-11 | Dell Usa, L.P. | Policy based storage configuration |
US6839782B1 (en) * | 1999-07-30 | 2005-01-04 | Emc Corporation | Computer storage system incorporating on-board EEPROMS containing product data |
US6467047B1 (en) * | 1999-07-30 | 2002-10-15 | Emc Corporation | Computer storage system controller incorporating control store memory with primary and secondary data and parity areas |
JP2001043031A (ja) * | 1999-07-30 | 2001-02-16 | Toshiba Corp | 分散パリティ生成機能を備えたディスクアレイ制御装置 |
US6674720B1 (en) | 1999-09-29 | 2004-01-06 | Silicon Graphics, Inc. | Age-based network arbitration system and method |
US6553387B1 (en) | 1999-11-29 | 2003-04-22 | Microsoft Corporation | Logical volume configuration data management determines whether to expose the logical volume on-line, off-line request based on comparison of volume epoch numbers on each extents of the volume identifiers |
US6629202B1 (en) | 1999-11-29 | 2003-09-30 | Microsoft Corporation | Volume stacking model |
JP4869466B2 (ja) * | 2000-02-24 | 2012-02-08 | 富士通セミコンダクター株式会社 | 記憶装置の制御方法、データ管理システム、記録媒体、及び記憶装置 |
US6571351B1 (en) | 2000-04-07 | 2003-05-27 | Omneon Video Networks | Tightly coupled secondary storage system and file system |
US6804819B1 (en) | 2000-09-18 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Method, system, and computer program product for a data propagation platform and applications of same |
US6977927B1 (en) | 2000-09-18 | 2005-12-20 | Hewlett-Packard Development Company, L.P. | Method and system of allocating storage resources in a storage area network |
US7386610B1 (en) | 2000-09-18 | 2008-06-10 | Hewlett-Packard Development Company, L.P. | Internet protocol data mirroring |
US7143249B2 (en) * | 2000-10-04 | 2006-11-28 | Network Appliance, Inc. | Resynchronization of mirrored storage devices |
US6654912B1 (en) * | 2000-10-04 | 2003-11-25 | Network Appliance, Inc. | Recovery of file system data in file servers mirrored file system volumes |
GB0025226D0 (en) | 2000-10-14 | 2000-11-29 | Ibm | Data storage system and method of storing data |
US6957313B2 (en) * | 2000-12-01 | 2005-10-18 | Hsia James R | Memory matrix and method of operating the same |
US6704886B1 (en) | 2001-01-25 | 2004-03-09 | Emc Corporation | Data backup system having independent data restore execution |
US7558840B1 (en) | 2001-01-25 | 2009-07-07 | Emc Corporation | Data backup system having a flexible restore architecture |
US6721766B1 (en) | 2001-01-25 | 2004-04-13 | Emc Corporation | Restoring multiple work items simultaneously from backup and data restore |
US6606690B2 (en) | 2001-02-20 | 2003-08-12 | Hewlett-Packard Development Company, L.P. | System and method for accessing a storage area network as network attached storage |
US6954875B2 (en) * | 2001-03-12 | 2005-10-11 | Honeywell International Inc. | Method of recovering a flight critical computer after a radiation event |
US6862661B2 (en) | 2001-06-26 | 2005-03-01 | International Business Machines Corporation | Object oriented approach to a redundant array storage system |
US7685126B2 (en) | 2001-08-03 | 2010-03-23 | Isilon Systems, Inc. | System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system |
US7146524B2 (en) | 2001-08-03 | 2006-12-05 | Isilon Systems, Inc. | Systems and methods for providing a distributed file system incorporating a virtual hot spare |
JP2003256147A (ja) * | 2002-02-28 | 2003-09-10 | Hitachi Ltd | クラスタ型ディスクアレイ装置およびクラスタ型ディスクアレイ装置の運用方法 |
CN1241120C (zh) * | 2001-08-31 | 2006-02-08 | 联想(北京)有限公司 | 计算机硬盘数据备份及恢复方法 |
US20030154271A1 (en) * | 2001-10-05 | 2003-08-14 | Baldwin Duane Mark | Storage area network methods and apparatus with centralized management |
US7137124B2 (en) | 2001-10-05 | 2006-11-14 | International Business Machines Corporation | Storage area network methods and apparatus for storage device masking |
US6954824B2 (en) * | 2001-10-15 | 2005-10-11 | International Business Machines Corporation | Method, system, and program for determining a configuration of a logical array including a plurality of storage devices |
US6993676B2 (en) * | 2002-06-12 | 2006-01-31 | Sun Microsystems, Inc. | Method and apparatus for fast initialization of redundant arrays of storage devices |
US6961836B2 (en) * | 2002-08-29 | 2005-11-01 | Lsi Logic Corporation | Method and apparatus for mapping storage partitions of storage elements to host systems |
US8005918B2 (en) | 2002-11-12 | 2011-08-23 | Rateze Remote Mgmt. L.L.C. | Data storage devices having IP capable partitions |
CN101448012B (zh) | 2002-11-12 | 2013-04-24 | 雷特泽遥距管理有限责任公司 | 具有ip能力分区的数据存储设备 |
US7649880B2 (en) | 2002-11-12 | 2010-01-19 | Mark Adams | Systems and methods for deriving storage area commands |
US7170890B2 (en) | 2002-12-16 | 2007-01-30 | Zetera Corporation | Electrical devices with improved communication |
AU2003291014A1 (en) | 2002-11-14 | 2004-06-15 | Isilon Systems, Inc. | Systems and methods for restriping files in a distributed file system |
US7809693B2 (en) * | 2003-02-10 | 2010-10-05 | Netapp, Inc. | System and method for restoring data on demand for instant volume restoration |
US20040268079A1 (en) * | 2003-06-24 | 2004-12-30 | International Business Machines Corporation | Method and system for providing a secure rapid restore backup of a raid system |
US20050010722A1 (en) * | 2003-07-11 | 2005-01-13 | Chih-Wei Chen | Multi-volume disk array management method and system |
US7908413B2 (en) * | 2003-07-15 | 2011-03-15 | International Business Machines Corporation | Data allocation in a distributed storage system |
US7237139B2 (en) * | 2003-08-07 | 2007-06-26 | International Business Machines Corporation | Services heuristics for computer adapter placement in logical partitioning operations |
US7428691B2 (en) * | 2003-11-12 | 2008-09-23 | Norman Ken Ouchi | Data recovery from multiple failed data blocks and storage units |
US7290087B2 (en) * | 2003-11-26 | 2007-10-30 | International Business Machines Corporation | Adaptive grouping in object raid |
US7330930B1 (en) * | 2004-03-09 | 2008-02-12 | Adaptec, Inc. | Method and apparatus for balanced disk access load distribution |
JP2005293363A (ja) * | 2004-04-01 | 2005-10-20 | Toshiba Corp | ディスクアレイコントローラおよび情報処理装置 |
US7046560B2 (en) | 2004-09-02 | 2006-05-16 | Micron Technology, Inc. | Reduction of fusible links and associated circuitry on memory dies |
US7321905B2 (en) * | 2004-09-30 | 2008-01-22 | International Business Machines Corporation | System and method for efficient data recovery in a storage array utilizing multiple parity slopes |
JP2006107311A (ja) * | 2004-10-08 | 2006-04-20 | Hitachi Ltd | ディスクアレイ装置およびその制御方法 |
US7594075B2 (en) | 2004-10-20 | 2009-09-22 | Seagate Technology Llc | Metadata for a grid based data storage system |
US8131926B2 (en) * | 2004-10-20 | 2012-03-06 | Seagate Technology, Llc | Generic storage container for allocating multiple data formats |
US8131969B2 (en) * | 2004-10-20 | 2012-03-06 | Seagate Technology Llc | Updating system configuration information |
US8051425B2 (en) | 2004-10-29 | 2011-11-01 | Emc Corporation | Distributed system with asynchronous execution systems and methods |
US8238350B2 (en) | 2004-10-29 | 2012-08-07 | Emc Corporation | Message batching with checkpoints systems and methods |
US8055711B2 (en) | 2004-10-29 | 2011-11-08 | Emc Corporation | Non-blocking commit protocol systems and methods |
US7418621B2 (en) * | 2005-02-24 | 2008-08-26 | Dot Hill Systems Corp. | Redundant storage array method and apparatus |
US7702850B2 (en) | 2005-03-14 | 2010-04-20 | Thomas Earl Ludwig | Topology independent storage arrays and methods |
US20060236149A1 (en) * | 2005-04-14 | 2006-10-19 | Dell Products L.P. | System and method for rebuilding a storage disk |
WO2006116203A1 (en) | 2005-04-25 | 2006-11-02 | Network Appliance, Inc. | System and method for caching network file systems |
US7689609B2 (en) * | 2005-04-25 | 2010-03-30 | Netapp, Inc. | Architecture for supporting sparse volumes |
US7620981B2 (en) | 2005-05-26 | 2009-11-17 | Charles William Frank | Virtual devices and virtual bus tunnels, modules and methods |
US8819092B2 (en) | 2005-08-16 | 2014-08-26 | Rateze Remote Mgmt. L.L.C. | Disaggregated resources and access methods |
US7743214B2 (en) | 2005-08-16 | 2010-06-22 | Mark Adams | Generating storage system commands |
US7694072B2 (en) * | 2005-09-22 | 2010-04-06 | Xyratex Technology Limited | System and method for flexible physical-logical mapping raid arrays |
US9270532B2 (en) | 2005-10-06 | 2016-02-23 | Rateze Remote Mgmt. L.L.C. | Resource command messages and methods |
US7346720B2 (en) * | 2005-10-21 | 2008-03-18 | Isilon Systems, Inc. | Systems and methods for managing concurrent access requests to a shared resource |
US7788303B2 (en) | 2005-10-21 | 2010-08-31 | Isilon Systems, Inc. | Systems and methods for distributed system scanning |
US7797283B2 (en) | 2005-10-21 | 2010-09-14 | Isilon Systems, Inc. | Systems and methods for maintaining distributed data |
US7917474B2 (en) | 2005-10-21 | 2011-03-29 | Isilon Systems, Inc. | Systems and methods for accessing and updating distributed data |
US7551572B2 (en) * | 2005-10-21 | 2009-06-23 | Isilon Systems, Inc. | Systems and methods for providing variable protection |
US7386675B2 (en) * | 2005-10-21 | 2008-06-10 | Isilon Systems, Inc. | Systems and methods for using excitement values to predict future access to resources |
JP4667225B2 (ja) * | 2005-12-19 | 2011-04-06 | 富士通株式会社 | 制御装置およびコピー制御方法 |
US7848261B2 (en) | 2006-02-17 | 2010-12-07 | Isilon Systems, Inc. | Systems and methods for providing a quiescing protocol |
US7756898B2 (en) | 2006-03-31 | 2010-07-13 | Isilon Systems, Inc. | Systems and methods for notifying listeners of events |
US7924881B2 (en) | 2006-04-10 | 2011-04-12 | Rateze Remote Mgmt. L.L.C. | Datagram identifier management |
US8539056B2 (en) | 2006-08-02 | 2013-09-17 | Emc Corporation | Systems and methods for configuring multiple network interfaces |
US7882071B2 (en) | 2006-08-18 | 2011-02-01 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US7822932B2 (en) | 2006-08-18 | 2010-10-26 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7590652B2 (en) | 2006-08-18 | 2009-09-15 | Isilon Systems, Inc. | Systems and methods of reverse lookup |
US7680842B2 (en) | 2006-08-18 | 2010-03-16 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US7899800B2 (en) | 2006-08-18 | 2011-03-01 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7953704B2 (en) | 2006-08-18 | 2011-05-31 | Emc Corporation | Systems and methods for a snapshot of data |
US7676691B2 (en) | 2006-08-18 | 2010-03-09 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7752402B2 (en) | 2006-08-18 | 2010-07-06 | Isilon Systems, Inc. | Systems and methods for allowing incremental journaling |
US7680836B2 (en) * | 2006-08-18 | 2010-03-16 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US7747584B1 (en) * | 2006-08-22 | 2010-06-29 | Netapp, Inc. | System and method for enabling de-duplication in a storage system architecture |
US7610507B2 (en) * | 2006-09-08 | 2009-10-27 | Agere Systems Inc. | High-speed redundant disk controller methods and systems |
US8286029B2 (en) | 2006-12-21 | 2012-10-09 | Emc Corporation | Systems and methods for managing unavailable storage devices |
US7593938B2 (en) | 2006-12-22 | 2009-09-22 | Isilon Systems, Inc. | Systems and methods of directory entry encodings |
US7509448B2 (en) | 2007-01-05 | 2009-03-24 | Isilon Systems, Inc. | Systems and methods for managing semantic locks |
US7779048B2 (en) | 2007-04-13 | 2010-08-17 | Isilon Systems, Inc. | Systems and methods of providing possible value ranges |
US7900015B2 (en) | 2007-04-13 | 2011-03-01 | Isilon Systems, Inc. | Systems and methods of quota accounting |
US8966080B2 (en) | 2007-04-13 | 2015-02-24 | Emc Corporation | Systems and methods of managing resource utilization on a threaded computer system |
US8285758B1 (en) | 2007-06-30 | 2012-10-09 | Emc Corporation | Tiering storage between multiple classes of storage on the same container file system |
US7882068B2 (en) | 2007-08-21 | 2011-02-01 | Isilon Systems, Inc. | Systems and methods for adaptive copy on write |
US7949692B2 (en) | 2007-08-21 | 2011-05-24 | Emc Corporation | Systems and methods for portals into snapshot data |
US7966289B2 (en) | 2007-08-21 | 2011-06-21 | Emc Corporation | Systems and methods for reading objects in a file system |
US7984324B2 (en) | 2008-03-27 | 2011-07-19 | Emc Corporation | Systems and methods for managing stalled storage devices |
US7953709B2 (en) | 2008-03-27 | 2011-05-31 | Emc Corporation | Systems and methods for a read only mode for a portion of a storage system |
US7870345B2 (en) | 2008-03-27 | 2011-01-11 | Isilon Systems, Inc. | Systems and methods for managing stalled storage devices |
US7949636B2 (en) | 2008-03-27 | 2011-05-24 | Emc Corporation | Systems and methods for a read only mode for a portion of a storage system |
US8151048B1 (en) * | 2008-03-31 | 2012-04-03 | Emc Corporation | Managing storage pool provisioning |
US7958304B1 (en) * | 2008-04-30 | 2011-06-07 | Network Appliance, Inc. | Dynamically adapting the fault tolerance and performance characteristics of a raid-based storage system by merging and splitting raid groups |
ES2380137T3 (es) | 2008-08-12 | 2012-05-08 | Strato Ag | Sistema de almacenamiento de datos y procedimiento para el funcionamiento del mismo |
US8341349B2 (en) * | 2008-10-31 | 2012-12-25 | Lsi Corporation | System and method for loose coupling between raid volumes and drive groups |
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 |
US8082392B2 (en) * | 2009-04-28 | 2011-12-20 | Lsi Corporation | Managing storage array operations that cause loss of access to mirrored data |
US8527749B2 (en) * | 2009-11-11 | 2013-09-03 | International Business Machines Corporation | User device, computer program product and computer system for system for secure network storage |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
JP5776436B2 (ja) * | 2011-08-22 | 2015-09-09 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御方法 |
US9665621B1 (en) * | 2013-03-14 | 2017-05-30 | EMC IP Holding Company LLC | Accelerated query execution within a storage array |
US9672106B2 (en) | 2014-12-30 | 2017-06-06 | Nutanix, Inc. | Architecture for implementing erasure coding |
US10567009B2 (en) | 2016-12-06 | 2020-02-18 | Nutanix, Inc. | Dynamic erasure coding |
US11762564B2 (en) * | 2020-10-19 | 2023-09-19 | EMC IP Holding Company LLC | System and method for detecting corruption of a deduplicated cloud object |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3893178A (en) * | 1973-12-19 | 1975-07-01 | Information Storage Systems | Synchronization of multiple disc drives |
US4092732A (en) * | 1977-05-31 | 1978-05-30 | International Business Machines Corporation | System for recovering data stored in failed memory unit |
US4183084A (en) * | 1977-06-06 | 1980-01-08 | Digital Equipment Corporation | Secondary storage facility with serial transfer of control messages |
US4467421A (en) * | 1979-10-18 | 1984-08-21 | Storage Technology Corporation | Virtual storage system and method |
US4562576A (en) * | 1982-08-14 | 1985-12-31 | International Computers Limited | Data storage apparatus |
US4607346A (en) * | 1983-03-28 | 1986-08-19 | International Business Machines Corporation | Apparatus and method for placing data on a partitioned direct access storage device |
FR2561428B1 (fr) * | 1984-03-16 | 1986-09-12 | Bull Sa | Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques |
US4667326A (en) * | 1984-12-20 | 1987-05-19 | Advanced Micro Devices, Inc. | Method and apparatus for error detection and correction in systems comprising floppy and/or hard disk drives |
US4754397A (en) * | 1985-02-15 | 1988-06-28 | Tandem Computers Incorporated | Fault tolerant modular subsystems for computers |
JPS61264599A (ja) * | 1985-05-16 | 1986-11-22 | Fujitsu Ltd | 半導体記憶装置 |
US4667362A (en) * | 1985-07-08 | 1987-05-26 | Presentation Systems, Inc. | Scraper for carpet seaming irons |
US4722085A (en) * | 1986-02-03 | 1988-01-26 | Unisys Corp. | High capacity disk storage system having unusually high fault tolerance level and bandpass |
US4761785B1 (en) * | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
US4819159A (en) * | 1986-08-29 | 1989-04-04 | Tolerant Systems, Inc. | Distributed multiprocess transaction processing system and method |
US4775978A (en) * | 1987-01-12 | 1988-10-04 | Magnetic Peripherals Inc. | Data error correction system |
US4942579A (en) * | 1987-06-02 | 1990-07-17 | Cab-Tek, Inc. | High-speed, high-capacity, fault-tolerant error-correcting storage system |
US4870643A (en) * | 1987-11-06 | 1989-09-26 | Micropolis Corporation | Parallel drive array storage system |
US5129088A (en) * | 1987-11-30 | 1992-07-07 | International Business Machines Corporation | Data processing method to create virtual disks from non-contiguous groups of logically contiguous addressable blocks of direct access storage device |
US4899342A (en) * | 1988-02-01 | 1990-02-06 | Thinking Machines Corporation | Method and apparatus for operating multi-unit array of memories |
US4993030A (en) * | 1988-04-22 | 1991-02-12 | Amdahl Corporation | File system for a plurality of storage classes |
US4989206A (en) * | 1988-06-28 | 1991-01-29 | Storage Technology Corporation | Disk drive memory |
US4914656A (en) * | 1988-06-28 | 1990-04-03 | Storage Technology Corporation | Disk drive memory |
GB8816413D0 (en) * | 1988-07-09 | 1988-08-17 | Int Computers Ltd | Data processing system |
US5148432A (en) * | 1988-11-14 | 1992-09-15 | Array Technology Corporation | Arrayed disk drive system and method |
AU630635B2 (en) * | 1988-11-14 | 1992-11-05 | Emc Corporation | Arrayed disk drive system and method |
US5249279A (en) * | 1989-11-03 | 1993-09-28 | Compaq Computer Corporation | Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands |
CA2029179A1 (en) * | 1989-11-03 | 1991-05-04 | Stephen M. Schultz | Method for data distribution in a disk array |
US5140592A (en) * | 1990-03-02 | 1992-08-18 | Sf2 Corporation | Disk array system |
US5166939A (en) * | 1990-03-02 | 1992-11-24 | Micro Technology, Inc. | Data storage apparatus and method |
US5134619A (en) * | 1990-04-06 | 1992-07-28 | Sf2 Corporation | Failure-tolerant mass storage system |
US5088081A (en) * | 1990-03-28 | 1992-02-11 | Prime Computer, Inc. | Method and apparatus for improved disk access |
US5283875A (en) * | 1990-04-13 | 1994-02-01 | Digital Equipment Corporation | Method and apparatus for optimizing prefetch caching by reverse ordering of logical blocks |
US5124987A (en) * | 1990-04-16 | 1992-06-23 | Storage Technology Corporation | Logical track write scheduling system for a parallel disk drive array data storage subsystem |
US5130992A (en) * | 1990-04-16 | 1992-07-14 | International Business Machines Corporaiton | File-based redundant parity protection in a parallel computing system |
US5155845A (en) * | 1990-06-15 | 1992-10-13 | Storage Technology Corporation | Data storage system for providing redundant copies of data on different disk drives |
US5193184A (en) * | 1990-06-18 | 1993-03-09 | Storage Technology Corporation | Deleted data file space release system for a dynamically mapped virtual data storage subsystem |
US5210866A (en) * | 1990-09-12 | 1993-05-11 | Storage Technology Corporation | Incremental disk backup system for a dynamically mapped data storage subsystem |
US5287453A (en) * | 1990-09-18 | 1994-02-15 | Bull Hn Information Systems, Inc. | Fast remote file access facility for distributing file access requests in a closely coupled computer system |
AU8683991A (en) * | 1990-11-09 | 1992-05-14 | Array Technology Corporation | Logical partitioning of a redundant array storage system |
-
1991
- 1991-10-30 AU AU86839/91A patent/AU8683991A/en not_active Abandoned
- 1991-10-30 DE DE69131551T patent/DE69131551T2/de not_active Expired - Fee Related
- 1991-10-30 EP EP91310034A patent/EP0485110B1/de not_active Expired - Lifetime
- 1991-11-01 CA CA002054794A patent/CA2054794C/en not_active Expired - Fee Related
- 1991-11-08 JP JP35115591A patent/JP3304115B2/ja not_active Expired - Fee Related
-
1994
- 1994-03-21 US US08/215,013 patent/US5519844A/en not_active Expired - Lifetime
-
1996
- 1996-04-17 US US08/635,205 patent/US5708769A/en not_active Expired - Lifetime
-
1998
- 1998-01-08 US US09/004,671 patent/US6154854A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP3304115B2 (ja) | 2002-07-22 |
EP0485110A2 (de) | 1992-05-13 |
EP0485110A3 (en) | 1993-01-13 |
DE69131551D1 (de) | 1999-09-30 |
CA2054794C (en) | 2001-04-24 |
JPH05197498A (ja) | 1993-08-06 |
US5519844A (en) | 1996-05-21 |
US6154854A (en) | 2000-11-28 |
US5708769A (en) | 1998-01-13 |
AU8683991A (en) | 1992-05-14 |
CA2054794A1 (en) | 1992-05-10 |
EP0485110B1 (de) | 1999-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69131551T2 (de) | Logische Aufteilung eines Speichersystems mit redundanter Matrix | |
DE69127229T2 (de) | Verfahren und Vorrichtung zur Datenformatierung auf DASD-Anordnungen | |
DE69033476T2 (de) | Schutz von Datenredundanz und -rückgewinnung | |
DE69221279T2 (de) | Plattenlaufwerkmatrix mit redundanten Kanälen | |
DE69412775T2 (de) | System zur Kontrolle der Befehlswarteschlange der Paritätsplatte in einer Speicherplattenanordnung | |
DE69331369T2 (de) | Betriebsverfahren einer Speicherplattenanordnung | |
DE69126416T2 (de) | Speichergerätanordnungsarchitektur mit Copyback-Cachespeicher | |
DE3856443T2 (de) | Gegen Fehler tolerantes, Fehler korrigierendes Speichersystem und Verfahren zur Speicherung digitaler Information in einem derartigen Speichersystem | |
DE3750790T2 (de) | Paritätsverteilung zum verbesserten Speicherzugriff. | |
DE69632219T2 (de) | Speicherplattenanordnungssystem | |
DE69225296T2 (de) | Datenrekonstruktion in einem Speichergerätanordnungssystem | |
DE69227896T2 (de) | Paritätsberechnung in einer effizienten matrix von massenspeichergeräten | |
DE69738091T2 (de) | Speicherplattenanordnung und Verfahren zu deren Steuerung | |
DE69129444T2 (de) | On-Line-Wiederherstellung von Redundanz-Information in einem redundanten Matrixsystem | |
DE69219208T2 (de) | Verteilter Ersatz in DASD-Feldern | |
DE69131728T2 (de) | Speicherungssystem für binäre rechner mit hoher geschwindigkeit, hoher kapazität, fehlertoleranz und fehlerkorrektur | |
DE19983218B4 (de) | Verfahren zum Codieren von Datensignalen zur Speicherung | |
DE68926436T2 (de) | Plattenlaufwerkanordnungssystem und Verfahren | |
DE69431186T2 (de) | Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem | |
DE69231841T2 (de) | Verfahren und Vorrichtung zum Zugriff von Datensätze mit variabler Länge die mit fester Block-Formatierung auf Speicheranordnungen mit direktem Zugriff gespeichert sind | |
DE69733076T2 (de) | Hochleistungsdatenweg mit sofortigem xor | |
DE60304194T2 (de) | Verfahren und vorrichtung zur tolerierung von mehreren abhängigen oder zwei beliebigen fehlern in einer speicherplattenanordnung | |
DE69127895T4 (de) | Logisches spurschreibzuordnungssystem für paralleles plattenlaufwerksmatrixdatenspeicherungsuntersystem | |
DE69224589T2 (de) | Speicherplattenanordnung und Verfahren zur Bestimmung des Vorhandenseins korrekter Speichervorrichtungen | |
DE69529728T2 (de) | Speicherplattenanordnungsgerät |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |