DE69533058T2 - Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung - Google Patents

Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung Download PDF

Info

Publication number
DE69533058T2
DE69533058T2 DE69533058T DE69533058T DE69533058T2 DE 69533058 T2 DE69533058 T2 DE 69533058T2 DE 69533058 T DE69533058 T DE 69533058T DE 69533058 T DE69533058 T DE 69533058T DE 69533058 T2 DE69533058 T2 DE 69533058T2
Authority
DE
Germany
Prior art keywords
segment
strip
parity
data
disk array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69533058T
Other languages
English (en)
Other versions
DE69533058D1 (de
Inventor
Douglas L. Boise Voigt
Marvin D. Boise Nelson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Application granted granted Critical
Publication of DE69533058D1 publication Critical patent/DE69533058D1/de
Publication of DE69533058T2 publication Critical patent/DE69533058T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61PSPECIFIC THERAPEUTIC ACTIVITY OF CHEMICAL COMPOUNDS OR MEDICINAL PREPARATIONS
    • A61P9/00Drugs for disorders of the cardiovascular system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Description

  • Gebiet der Erfindung
  • Diese Erfindung bezieht sich auf Plattenarrays und insbesondere auf redundante hierarchische Plattenarraydatenspeichersysteme, die redundante Speicherfähigkeiten aufweisen. Diese Erfindung bezieht sich ferner auf Verfahren zum inkrementalen Erzeugen von Redundanz, während Daten auf das Plattenarray geschrieben werden.
  • Hintergrund der Erfindung
  • Plattenarraydatenspeichersysteme weisen Mehrfach-Speicherplattenlaufwerksvorrichtungen auf, die angeordnet und koordiniert sind, um ein einziges Massenspeichersystem zu bilden. Für derartige Speichersysteme gibt es drei Hauptentwurfskriterien: Kosten, Leistungsfähigkeit und Verfügbarkeit. Am wünschenswertesten ist es, Speichervorrichtungen zu erzeugen, die geringe Kosten pro Megabyte, eine hohe Eingangs-/Ausgangsleistungsfähigkeit und eine hohe Datenverfügbarkeit aufweisen. „Verfügbarkeit" ist die Fähigkeit, auf Daten, die in dem Speichersystem gespeichert sind, zuzugreifen, und die Fähigkeit, im Fall eines Ausfalls einen fortgesetzten Betrieb zu gewährleisten. In der Regel wird eine Datenverfügbarkeit durch die Verwendung einer Redundanz geliefert, wobei Daten, oder Beziehungen zwischen Daten, an mehreren Plätzen gespeichert sind. Für den Fall, dass eine Speicherplatte in dem Plattearray teilweise oder vollständig ausfällt, können die Benutzerdaten über die auf den verbleibenden Platten gespeicherten redundanten Daten rekonstruiert werden.
  • Es gibt zwei übliche Verfahren zum Speichern von redundanten Daten. Gemäß dem ersten bzw. „Spiegel"-Verfahren werden Daten dupliziert und in zwei getrennten Bereichen des Spei chersystems gespeichert. Bei einem Plattenarray werden die identischen Daten beispielsweise auf zwei getrennten Platten in dem Plattenarray bereitgestellt. Das Spiegelverfahren weist die Vorteile einer hohen Leistungsfähigkeit und einer hohen Datenverfügbarkeit aufgrund der Duplexspeichertechnik auf. Das Spiegelverfahren ist jedoch auch relativ teuer, da es die Kosten des Speicherns von Daten effektiv verdoppelt.
  • Bei dem zweiten bzw. „Paritäts"-Verfahren wird ein Teil des Speicherbereichs verwendet, um redundante Daten zu speichern, die Größe des redundanten Speicherbereichs ist jedoch geringer als der zum Speichern der ursprünglichen Daten verwendete verbleibende Speicherbereich. Bei einem Plattenarray, das fünf Platten aufweist, könnten beispielsweise vier Platten verwendet werden, um Daten zu speichern, wobei die fünfte Platte für das Speichern von redundanten Daten reserviert ist. Das Paritätsverfahren ist vorteilhaft, da es kostengünstiger ist als das Spiegelverfahren, im Vergleich zu dem Spiegelverfahren weist es jedoch auch geringere Leistungsfähigkeits- und Verfügbarkeitscharakteristika auf.
  • Diese Erfindung bezieht sich insbesondere auf ein Speichern von Daten gemäß Paritätstechniken. Bei herkömmlichen Plattenarrays ist der Raum auf den Speicherplatten zu mehreren Streifen konfiguriert, wobei sich jeder Streifen über die Speicherplatten erstreckt. Jeder Streifen besteht aus mehreren Segmenten eines Speicherraums bzw. Speicherplatzes, wobei jedes Segment ein Abschnitt des Streifens ist, der sich auf einer einzelnen Speicherplatte in dem Plattenarray befindet.
  • Während der Initialisierung eines bekannten Plattenarrays werden die Speicherplatten formatiert, und die Parität für jeden Streifen wird eingestellt. Nach der Initialisierung sind vier I/O-Zugriffe erforderlich, um Daten in das Plattenarray zu schreiben: ein erster I/O, um die Daten, die aktualisiert werden sollen, aus einem ausgewählten Streifen zu lesen, ein zweiter I/O, um die entsprechende Parität für Daten in diesem Streifen zu lesen, ein dritter I/O, um neue Daten zurück in den Streifen zu schreiben, und ein vierter I/O, um eine neue Parität, die die neuen Daten berücksichtigt, zurück in den Streifen zu schreiben. Es wäre wünschenswert, die Anzahl von I/Os, die erforderlich sind, um Daten auf Streifen in Plattenarrays zu schreiben, zu verringern.
  • Eine Technik, die bei manchen bekannten Plattenarrays bisher verwendet wurde, besteht darin, die Paritätswerte Cache-zu-speichern. Dies verringert das Erfordernis, die Parität während jedes Schreibvorgangs aus dem Plattenarray zu lesen, wodurch die Anzahl von I/Os auf drei verringert wird. Es bleibt jedoch weiterhin ein Bedarf bestehen, die Anzahl von I/Os, die erforderlich sind, um Daten auf Streifen in dem Plattenarray zu schreiben, weiter zu verringern.
  • Das Dokument US-A-5,166,939 lehrt ein Plattenarrayspeichersystem, bei dem die Platten in eine Mehrzahl von Redundanzgruppen unterteilt sind, wobei jede Redundanzgruppe einzeln angepasst ist, um eine geeignete Streifenbildungstiefe zu verwenden, um entweder eine Zugriffsleistungsfähigkeit oder eine Bandbreite gemäß dem darin gespeicherten Datentyp zu optimieren.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Diese Erfindung liefert ein Plattenarraydatenspeichersystem, das eine verbesserte Leistungsfähigkeit während Paritätsschreibvorgängen aufweist und weniger I/Os erfordert. Das Plattenarray schreibt Daten in einzelne Segmente in einem Streifen, vorzugsweise auf sequentielle Weise, zu einem Zeitpunkt jeweils ein Segment. Es ist ein Speicherverwalter vorgesehen, der die Größen der Streifen und den Paritätsstatus jedes Segments in den Streifen bezüglich dessen, ob das Segment Daten enthält, die Bestandteil des Paritätswerts für den zugeordneten Streifen sind, kennt.
  • Bei der bevorzugten Implementierung verfolgt der Speicherverwalter einen Paritätsstatus jedes Segments durch die Verwendung von zwei Arten von Zeigern von einem oder mehreren Teilstreifenzeigern, die Streifen, die gefüllt werden, nachverfolgen, und von einem oder mehreren Segmentfüllzeigern, die auf spezifische Segmente in den Streifen, die gerade gefüllt werden, Bezug nehmen. Bezüglich eines ausgewählten Streifens ist bekannt, dass Segmente vor dem Segmentfüllzeiger Daten enthalten, die in die Streifenparität integriert sind, und Segmente, die auf den Segmentfüllzeiger folgen, leer und noch nicht in die Streifenparität integriert sind. In Bezug auf Streifen, auf die nicht durch den Teilstreifenzeiger Bezug genommen wird, geht man davon aus, dass bei Streifen, die Daten enthalten, alle Datensegmente durch die Streifenparität dargestellt werden, und man geht davon aus, dass alle leeren Streifen keine Daten enthalten oder keinerlei Paritätswert, der diese Segmente darstellt, aufweisen.
  • Nachdem ein Streifen ausgewählt wird, werden Daten in das Segment geschrieben, auf das durch den Segmentfüllzeiger Bezug genommen wird. Während dieses Datenschreibvorgangs wird ein Paritätswert, der den Daten entspricht, die in allen gefüllten Segmenten in dem ausgewählten Streifen enthalten sind, inkremental erzeugt und in einem separaten, nicht-flüchtigen Speicher wie z. B. einem NVRAM, Cache-gespeichert. Die leeren Segmente in dem Streifen werden während des Schreibvorgangs nicht verwaltet und sind somit nicht in der inkrementalen Paritätserzeugung enthalten. Nachdem alle Datensegmente in dem Streifen gefüllt wurden, wird der endgültige Paritätswert in das Paritätssegment in dem Streifen geschrieben. Der Vorgang kann dann für den nächsten nicht-gefüllten oder teilweise gefüllten Streifen wiederholt werden.
  • Ein Plattenarray, das mit einem sequentiellen Segmentschreiben, einer inkrementalen Paritätserzeugung und einer Paritäts-Cache-Speicherung gemäß dieser Erfindung, die in den beigefügten unabhängigen Patentansprüchen 1 und 3 ausführlich definiert ist, implementiert ist, eliminiert die bekannten I/Os des Lesens der alten Daten und des Lesens der alten Parität. Ferner kann es die Anzahl von Malen, die ein Paritätswert in das Datenarray geschrieben wird, auf einen einzigen Schreibvorgang verringern, nachdem der ganze Streifen gefüllt wurde. Dies führt zu einer beträchtlichen Verbesserung der Schreibleistungsfähigkeit.
  • Beschreibung der Zeichnungen
  • Unter Bezugnahme auf die folgenden beigefügten Zeichnungen, in denen Beispiele gezeigt sind, die den besten Modus zum Praktizieren der Erfindung verkörpern, werden nachfolgend bevorzugte Ausführungsbeispiele der Erfindung beschrieben.
  • 1 ist ein schematisches Blockdiagramm eines Plattenarraydatenspeichersystems gemäß dieser Erfindung.
  • 2 ist eine schematische Veranschaulichung eines Speicherplatzes auf mehreren Speicherplatten und zeigt eine Datenspeicherung gemäß einer RAID-Ebene 1.
  • 3 ist eine schematische Veranschaulichung eines Speicherplatzes auf mehreren Speicherplatten und zeigt eine Datenspeicherung gemäß einer RAID-Ebene 5.
  • 4 ist eine schematische Veranschaulichung einer Speicherabbildungsanordnung dieser Erfindung, bei der zwei virtuelle Speicherplätze auf einen physischen Speicherplatz abgebildet werden.
  • 5 zeigt ein schematisches Blockdiagramm, das die Wechselwirkung zwischen Zeigern, die in einem nicht-flüchtigen Speicher und einem Speicherraum auf dem Plattenarray gehalten werden;
  • 6 und 7 zeigen ein Flussdiagramm von bevorzugten Schritten zum Schreiben von Daten auf das Plattenarray gemäß Paritätsredundanztechniken; und
  • 8 zeigt eine schematische Veranschaulichung eines Speicherraums auf mehreren Speicherplatten, die eine Müllsammeltechnik demonstriert.
  • Ausführliche Beschreibung der Erfindung
  • 1 zeigt ein Datenspeichersystem 10, das gemäß dieser Erfindung aufgebaut ist. Vorzugsweise ist das Datenspeichersystem 10 ein Plattenarraydatenspeichersystem, das folgende Merkmale umfasst: ein hierarchisches Plattenarray 11, das eine Mehrzahl von Speicherplatten 12 aufweist, eine Plattenarraysteuerung 14, die mit dem Plattenarray 11 gekoppelt ist, um einen Transfer von Benutzerdaten zu und von den Speicherplatten 12 zu koordinieren, und ein RAID-Verwaltungssystem 16. Diese Erfindung wird im Kontext ihrer bevorzugten Implementierung als redundantes hierarchisches Plattenarraysystem beschrieben. Man beachte jedoch, dass Aspekte und Konzepte dieser Erfindung auch bei anderen Arten von Plattenarraydatenspeichersystemen, beispielsweise nicht-hierarchischen redundanten Plattenarrays, verwendet werden können.
  • Für die Zwecke dieser Offenbarung ist eine „Platte" jegliche nicht-flüchtige, direkt zugreifbare, wiederbeschreibbare Massenspeichervorrichtung, die die Fähigkeit aufweist, ihre eigenen Speicherausfälle zu erfassen. Sie umfasst sowohl sich drehende magnetische und optische Platten als auch Festzustandsplatten, oder nicht-flüchtige elektroni sche Speicherelemente (z.B. PROMs, EPROMs und EEPROMs). Der Begriff „Plattenarray" umfasst eine Sammlung von Platten, die Hardware, die erforderlich ist, um sie mit einem oder mehreren Hostcomputern zu verbinden, und eine Verwaltungssoftware, die verwendet wird, um den Betrieb der physischen Platten zu steuern und sie der Host-Betriebsumgebung als eine oder mehrere virtuelle Platten zu präsentieren. Eine „virtuelle Platte" ist eine abstrakte Entität, die durch die Verwaltungssoftware in dem Plattenarray verwirklicht ist.
  • Der Begriff „RAID" (Redundant Array of Independent Plattes, redundantes Array aus unabhängigen Platten) bedeutet ein Plattenarray, bei dem ein Teil der physischen Speicherkapazität verwendet wird, um redundante Informationen über Benutzerdaten, die auf dem Rest der Speicherkapazität gespeichert sind, zu speichern. Die redundanten Informationen ermöglichen eine Regeneration von Benutzerdaten für den Fall, dass eine der zu dem Array gehörenden Platten oder der Zugriffspfad zu derselben ausfällt. Eine ausführlichere Erläuterung von RAID-Systemen findet sich in einem Buch mit dem Titel The RAIDBook: A Source Book for RAID Technology, das am 9. Juni 1993 von RAID Advisory Board, Lino Lakes, Minnesota, veröffentlicht wurde.
  • Die Plattenarraysteuerung 14 ist über einen oder mehrere Schnittstellenbusse 13, beispielsweise eine Kleincomputer-Schnittstelle (SCSI – small computer system interface) mit dem Plattenarray 11 gekoppelt. Das RAID-Verwaltungssystem 16 ist über ein Schnittstellenprotokoll 15 wirksam mit der Plattenarraysteuerung 14 gekoppelt. Ferner ist das Datenspeichersystem 10 über einen I/O-Schnittstellenbus 17 mit einem Hostcomputer (nicht gezeigt) gekoppelt. Das RAID-Verwaltungssystem 16 kann als separate Komponente verkörpert sein oder kann in der Plattenarraysteuerung 14 oder in dem Hostcomputer konfiguriert sein, um eine Datenverwaltungseinrichtung zum Steuern von Plattenspeicherungs- und von Zuverlässigkeitsebenen sowie zum Transferieren von Da ten zwischen verschiedenen Zuverlässigkeits-Speicherstufen bereitzustellen. Diese Zuverlässigkeits-Speicherebenen sind, wie nachfolgend beschrieben wird, vorzugsweise Spiegel- oder Paritäts-Redundanzebenen, können jedoch auch eine Zuverlässigkeits-Speicherebene ohne jegliche Redundanz umfassen.
  • Die Plattenarraysteuerung 14 ist vorzugsweise als duale Steuerung implementiert, die aus der Plattenarraysteuerung A, die durch Bezugszeichen 14a bezeichnet ist, und aus der Plattenarraysteuerung B, die durch Bezugszeichen 14b bezeichnet ist, besteht. Die dualen Steuerungen 14a und 14b verbessern die Zuverlässigkeit, indem sie für den Fall, dass eine Steuerung funktionsuntüchtig wird, eine fortlaufende Sicherung und Redundanz liefern. Diese Erfindung kann jedoch auch mit einer einzigen Steuerung oder mit anderen Architekturen praktiziert werden.
  • Das hierarchische Plattenarray 11 kann als unterschiedliche Speicherplätze, einschließlich seines physischen Speicherplatzes und eines oder mehrerer virtueller Speicherplätze, charakterisiert werden. Diese verschiedenen Speicheransichten sind durch Abbildungstechniken verbunden. Beispielsweise kann der physische Speicherplatz des Plattenarrays in einen virtuellen Speicherplatz abgebildet werden, der Speicherbereiche gemäß den verschiedenen Datenzuverlässigkeitsebenen darstellt. Manche Bereiche in dem virtuellen Speicherplatz können einer ersten Zuverlässigkeitsspeicherebene zugewiesen sein, beispielsweise Spiegel- oder RAID-Ebene 1, und andere Bereiche können einer zweiten Zuverlässigkeitsspeicherebene zugewiesen sein, beispielsweise Paritäts- oder RAID-Ebene 5. Die verschiedenen Abbildungstechniken und virtuellen Plätze, die RAID-Ebenen betreffen, werden nachfolgend ausführlicher beschrieben.
  • Das Datenspeichersystem 10 umfasst einen Speicherabbildungsspeicher 21, der eine durchgängige Speicherung der virtuellen Abbildungsinformationen liefert, die verwendet werden, um verschiedene Speicherplätze ineinander abzubilden. Der Speicherabbildungsspeicher befindet sich außerhalb des Plattenarrays und vorzugsweise in der Plattenarraysteuerung 14. Die Speicherabbildungsinformationen können durch die Steuerung oder das RAID-Verwaltungssystem kontinuierlich oder periodisch aktualisiert werden, während sich die verschiedenen Abbildungskonfigurationen unter den verschiedenen Ansichten ändern.
  • Vorzugsweise ist der Speicherabbildungsspeicher 21 als zwei nicht-flüchtige RAMs (Direktzugriffsspeicher) 21a und 21b verkörpert, die in jeweiligen Steuerungen 14a und 14b angeordnet sind. Ein beispielhafter nicht-flüchtiger RAM (NVRAM) ist ein batteriegepufferter RAM. Ein batteriegepufferter RAM verwendet Energie von einer unabhängigen Batteriequelle, um im Falle eines Verlustes von Leistung an das Datenspeichersystem 10 die Daten über einen bestimmten Zeitraum in dem Speicher beizubehalten. Ein bevorzugter Aufbau ist ein selbstauffrischender batteriegepufferter DRAM (dynamischer RAM).
  • Die dualen NVRAMs 21a und 21b sorgen für eine redundante Speicherung der Speicherabbildungsinformationen. Die virtuellen Abbildungsinformationen werden dupliziert und gemäß Spiegelredundanztechniken in beiden NVRAMs 21a und 21b gespeichert. Auf diese Weise kann der NVRAM 21a dafür reserviert sein, die ursprünglichen Abbildungsinformationen zu speichern, und der NVRAM 21b kann dafür reserviert sein, die redundanten Abbildungsinformationen zu speichern. Bei einem alternativen Aufbau kann ein gespiegelter Speicherabbildungsspeicher unter Verwendung eines einzelnen nichtflüchtigen RAMs mit einem ausreichenden Platz, um die Daten im Duplikat zu speichern, konfiguriert sein.
  • Wie in 1 gezeigt ist, weist das Plattenarray 11 mehrere Speicherplattenlaufwerksvorrichtungen 12 auf. Beispielhafte Größen dieser Speicherplatten betragen ein bis drei Gigabytes. Die Speicherplatten können unabhängig voneinan der mit mechanischen Buchten verbunden oder von denselben getrennt sein, die eine Schnittstellenbildung mit dem SCSI-Bus 13 liefern. Bei einer Implementierung ist das Datenspeichersystem mit zwölf aktiven mechanischen Buchten entworfen. Vier SCSI-Busse werden verwendet, um eine Schnittstelle zwischen diesen Buchten und der Plattenarraysteuerung 14 zu bilden (d.h. ein Bus pro drei mechanischen Buchten). Falls die aktiven Buchten vollständig beladen sind, weist das Datenspeichersystem eine beispielhafte kombinierte Kapazität von 12 bis 36 Gigabytes auf. Die Plattenarraysteuerung 14 erkennt die Speicherplatten 12 unabhängig davon, in welche Bucht sie eingesteckt sind. Das Datenspeichersystem 10 ist entworfen, um ein „heißes Einstecken" zusätzlicher Platten in verfügbare mechanische Buchten in dem Plattenarray, während das Plattenarray in Betrieb ist, zu ermöglichen.
  • Die Speicherplatten 12 in dem Plattenarray 11 können zu Erläuterungszwecken vom Konzept her so erklärt werden, dass sie in einer Spiegelgruppe 18 aus mehreren Platten 20 und einer Paritätsgruppe 22 aus mehreren Platten 24 angeordnet sind. Die Spiegelgruppe 18 stellt eine erste Speicherposition oder einen ersten RAID-Bereich des Plattenarrays dar, die bzw. der Daten gemäß einer ersten bzw. Spiegelredundanzebene speichert. Diese Spiegelredundanzebene wird auch als RAID-Ebene 1 betrachtet. Die RAID-Ebene 1 bzw. oder ein Spiegeln von Platten bietet die höchste Datenzuverlässigkeit, indem sie insofern einen Eins-Zu-Eins-Schutz bietet, als jedes Datenbit dupliziert und in dem Datenspeichersystem gespeichert wird. Die Spiegelredundanz ist schematisch durch die drei Paare von Platten 20 in 1 dargestellt. Ursprüngliche Daten können auf einem ersten Satz von Platten 26 gespeichert werden, während dupliziert, redundante Daten auf dem gepaarten zweiten Satz von Platten 28 gespeichert werden.
  • 2 veranschaulicht die Speicherung von Daten gemäß der RAID-Ebene 1 noch ausführlicher. Die vertikalen Spalten stellen einzelne Platten dar, von denen Platten 0, 1, 2 und 3 veranschaulicht sind. Der in diesem Plattenarray aus vier Platten enthaltene physische Speicherplatz kann zu mehreren Streifen konfiguriert sein, wie sie durch die horizontalen Zeilen veranschaulicht sind. Ein „Streifen" erstreckt sich über die Speicherplatten und ist aus zahlreichen, vorzugsweise gleich großen Segmenten an Speicherplatz gebildet, wobei ein Segment jeder Platte in dem Array zugeordnet ist. Das heißt, dass ein Segment der Abschnitt eines Streifens ist, der sich auf einer einzelnen Platte befindet. Jeder Streifen hält eine vorbestimmte Datenmenge, die über die Speicherplatten verteilt ist. Manche Segmente eines Streifens werden für ursprüngliche Daten verwendet, während andere Segmente für redundante Daten verwendet werden.
  • Bei diesem Beispiel einer Spiegelredundanz (RAID-Ebene 1) werden Daten, die auf der Platte 0 in dem Segment 0 des Streifens 0 gespeichert sind, dupliziert und auf der Platte 1 in dem Segment 0' des Streifens 0 gespeichert. Desgleichen werden Daten, die auf der Platte 2 in dem Segment 5 des Streifens 2 gespeichert sind, zu dem Segment 5' des Streifens 2 auf der Platte 3 gespiegelt. Auf diese Weise wird jede Dateneinheit dupliziert und auf den Platten gespeichert. Der Redundanzentwurf der 2 ist zu Erläuterungszwecken vorgesehen. Die redundanten Daten müssen nicht sauber in demselben Streifen plaziert werden, wie gezeigt ist. Beispielsweise könnten Daten, die auf der Platte 0 in dem Segment 2 des Streifens 1 gespeichert sind, dupliziert werden und auf der Platte 3 in dem Segment T' des Streifens S plaziert werden.
  • Unter erneuter Bezugnahme auf 1 stellt die Paritätsgruppe 22 der Platten 24 eine zweite Speicherposition bzw. einen zweiten RAID-Bereich dar, in der bzw. dem Daten gemäß einer zweiten Redundanzebene, z.B. RAID-Ebene 5, gespeichert werden. In dieser erläuternden Veranschaulichung von sechs Platten sind ursprüngliche Daten auf der fünften Platte 30 gespeichert, und redundante „Paritäts"-Daten sind auf der sechsten Platte 32 gespeichert.
  • 3 zeigt einen Paritäts-RAID-Bereich-Entwurf etwas ausführlicher. Ähnlich dem Entwurf des Spiegel-RAID-Bereichs der 2 kann der physische Speicherplatz der Platten 0, 1, 2, 3 zu mehreren gleich großen Streifen konfiguriert sein. Bei diesem veranschaulichten Beispiel werden Daten gemäß der RAID-Ebene 5 gespeichert, und die redundanten Daten werden in den Segmenten gespeichert, auf die durch den Buchstaben P Bezug genommen wird. Die redundanten P-Segmente speichern die Parität der anderen Segmente in dem Streifen. In dem Streifen 0 speichert das redundante P-Segment auf der Platte 3 beispielsweise die Parität der Platten 0, 1 und 2. Die Parität für jeden Streifen wird durch eine bestimmte Funktion berechnet, beispielsweise eine Exklusiv-ODER-Funktion, die durch das Symbol „⨁" dargestellt wird. Die Paritäten für die ersten vier Streifen (wobei die tiefgestellte Zahl den entsprechenden Streifen darstellt) lauten wie folgt:
    • P0 = Segment 0 ⨁ Segment 1 ⨁ Segment 2 = Platte 0 ⨁ Platte 1 ⨁ Platte 2
    • P1 = Segment 3 ⨁ Segment 4 ⨁ Segment 5 = Platte 0 ⨁ Platte 1 ⨁ Platte 3
    • P2 = Segment 6 ⨁ Segment 7 ⨁ Segment 8 = Platte 0 ⨁ Platte 2 ⨁ Platte 3
    • P3 = Segment 9 ⨁ Segment 10 ⨁ Segment 11 = Platte 1 ⨁ Platte 2 ⨁ Platte 3
  • Eine Paritätsredundanz ermöglicht eine Regeneration von Daten, die auf einer der Platten nicht mehr zur Verfügung stehen. Wenn beispielsweise die Daten in dem Segment 5 nicht mehr zur Verfügung stehen, kann ihr Inhalt aus den Segmenten 3 und 4 und den Paritätsdaten in dem Segment P ermittelt werden. Eine Paritätsspeicherung ist kostengünstiger als eine Spiegelspeicherung, ist jedoch auch weniger zuverlässig und weist eine geringere Leistungsfähigkeit auf.
  • Die Plattenanordnung der 1 ist zu Konzeptionszwecken vorgesehen. In der Praxis weist das Plattenarray 11 einfach eine Mehrzahl von Platten 12 auf, die in der Lage sind, Daten gemäß einer Spiegel- und Paritätsredundanz zu speichern. Aus dem durch alle Platten 12 gelieferten, zur Verfügung stehenden Speicherplatz wird ein Abschnitt dieses Speicherplatzes einer Spiegelredundanz zugewiesen, und ein weiterer Abschnitt wird einer Paritätsredundanz zugewiesen. Vorzugsweise sind die Platten 12 konfiguriert, um mehrere gleich große Speicherregionen (die bei 4 mit dem Bezugszeichen 35 benannt sind) zu enthalten, wobei einzelne Regionen mehrere Segmente aufweisen. Die Regionen sind gruppiert, um bei einer virtuellen Ansicht des Speicherplatzes RAID-Bereiche zu bilden. Zusätzlich wird eine weitere (durch einen Host definierte) Ansicht eines Speicherplatzes dem Benutzer oder Host präsentiert, so dass die RAID-Bereiche und die Datenredundanz-Speichertechniken für den Benutzer oder Host transparent sind. Diese Merkmale werden nachstehend unter Bezugnahme auf 4 ausführlicher erläutert.
  • Das Datenspeichersystem 10 verwaltet die „Migration bzw. Bewegung" von Daten zwischen Spiegel- und Paritätsspeicherschemata. Die Verwaltung beider Redundanztypen wird durch das RAID-Verwaltungssystem 16 (1) koordiniert. Das RAID-Verwaltungssystem 16 verwaltet die zwei unterschiedlichen Typen von RAID-Bereichen in dem Plattenarray als Speicherhierarchie, wobei die Spiegel-RAID-Bereiche ähnlich einem Cache für die Paritäts-RAID-Bereiche agieren. Das RAID-Verwaltungssystem 16 verschiebt und organisiert die Daten zwischen dem Spiegel- und dem Paritäts-RAID-Bereich gemäß einem definierten Leistungsfähigkeitsprotokoll, und verwaltet die Daten ansonsten auf ebensolche Weise. Der Vorgang des Bewegens von Daten zwischen dem Spiegel- und dem Paritäts-RAID-Bereich wird als „Migration" bezeichnet.
  • Das Datenspeichersystem 10 versucht, die für die Leistungsfähigkeit kritischeren Daten in die Spiegel-RAID-Bereiche zu plazieren, da dies die höchste Leistungsfähigkeit und Zuverlässigkeit liefert. Die Leistungsfähigkeitsprotokolle, die durch das RAID-Verwaltungssystem 16 implementiert sind, umfassen eine von zwei bevorzugten Migrationsrichtlinien. Gemäß der ersten Migrationsrichtlinie, die als „Zugriffshäufigkeit" bekannt ist, werden die Daten in dem hierarchischen Plattenarray, auf die am häufigsten zugegriffen wird, in dem Spiegel-RAID-Bereich 18 beibehalten. Daten, auf die weniger häufig zugegriffen wird, werden in dem Paritäts-RAID-Bereich 22 gehalten. Gemäß einer zweiten Migrationsrichtlinie, die als „Zugriffsaktualität" bekannt ist, werden die Daten, deren Zugriff am wenigsten lange zurückliegt, in dem Spiegel-RAID-Bereich 18 beibehalten, während die Daten, deren Zugriff länger zurückliegt, in dem Paritäts-RAID-Bereich 22 gespeichert werden. Es können auch andere Leistungsfähigkeitsprotokolle verwendet werden. Idealerweise sind solche Protokolle auf der Basis der spezifischen Computeranwendung und der Erfordernisse des Benutzers definiert.
  • Zusätzlich „stimmt" das RAID-Verwaltungssystem 16 die Speicherressourcen eines Datenspeichersystems gemäß einer Funktion von zwei Parametern „ab". Größe der physischen Speicherkapazität und Größe der vorhandenen Menge an Benutzerdaten, die in dem Datenspeichersystem gespeichert sind. Anfänglich werden alle Daten in Spiegel-RAID-Bereichen gespeichert, da dies die höchste Leistungsfähigkeit und Zuverlässigkeit liefert. Während mehr Daten zu dem Datenspeichersystem hinzugefügt werden, werden die Daten zwischen Spiegel-RAID-Bereichen und Paritäts-RAID-Bereichen bewegt, um die Leistungsfähigkeit und Zuverlässigkeit zu optimieren. Während sich das Datenspeichersystem an eine volle Kapazität annähert, werden im Rahmen des Bemühens, alle durch den Benutzer gestellten Anforderungen zu erfüllen und trotzdem durch Redundanz eine Zuverlässigkeit zu liefern, immer mehr Daten in Paritäts-RAID-Bereiche bewegt. Dementsprechend liefert das Datenspeichersystem dieser Erfindung eine maximale Flexibilität und Anpassung. Es erfordert nicht, dass der Benutzer einen spezifischen Speicherbetriebszustand auswählt, sondern kann sich statt dessen an jegliche durch den Benutzer an das System gestellte Forderung anpassen.
  • 4 veranschaulicht ein Speicherabbilden des verfügbaren Speicherplatzes des Datenspeichersystems 10 als mehrere Lagen eines abgebildeten virtuellen Speicherplatzes. Jedes vertikal verlängerte Rechteck in dem Diagramm stellt eine Ansicht des physischen Speicherplatzes dar. Bei diesem Diagramm wird auf den physischen Speicherplatz 34 durch zwei virtuelle Speicheransichten 40 und 50 Bezug genommen. Der physische Speicherplatz 34 wird durch vier Platten (z.B. Platten 12 in 1) dargestellt, die durch die Bezugszeichen 0, 1, 2 und 3 benannt sind. Die den Platten zugeordneten vier Rechtecke stellen eine Ansicht des physischen Speicherplatzes dar, bei der die Platten 1, 2 und 3 eine ungefähr gleiche Speicherkapazität aufweisen und die Platte 0 eine etwas geringere Speicherkapazität aufweist. Beispielhafte Speicherkapazitäten für derartige Platten betragen 1 bis 3 Gigabytes. Der Speicherplatz 34 ist in Bereiche A0, A1, A2 usw. unterteilt. Einzelne Bereiche enthalten zahlreiche Streifen, im Bereich A0 z.B. Streifen O–Q. Einzelne Bereiche enthalten auch zahlreiche Regionen 35. Die Regionen 35 bestehen vorzugsweise aus einer ausgewählten Anzahl von Segmenten einer gleichmäßigen Größe auf jeder Speicherplatte, so dass die Regionen über das gesamte Plattenarray eine gleiche Größe aufweisen. Eine beispielhafte Größe einer Region 35 ist ein Megabyte.
  • Der Speicherplatz der Platten wird in eine erste virtuelle Zwischenansicht 40 der RAID-Ebene des physischen Speicherplatzes 34 abgebildet. Diese erste virtuelle Ansicht ist vom Konzept her ein Satz von RAID-Bereichen, die auf eine zweite Anwendungsansicht abgebildet werden können, die einen angrenzend adressierbaren Speicherplatz darstellt. Die physische Konfiguration und RAID-Ansichten des Speicherplatzes entziehen sich der Anwendungsansicht.
  • Der RAID-Bereich-Speicherplatz 40 ist die Speicheransicht, die den Spiegel- und Paritätsspeicherplatz identifiziert. Beispielsweise kann ein RAID-Bereich 42 einen Spiegel-RAID-Bereich von M Zuweisungsblöcken 43 darstellen, während der RAID-Bereich 44 einen Paritäts-RAID-Bereich von N Zuweisungsblöcken 45 darstellen kann. Die Zuweisungsblöcke 43 und 45 weisen vorzugsweise eine gleiche Größe auf, wobei eine beispielhafte Größe 64 Kilobytes beträgt. Diese RAID-Bereiche beziehen sich auf entsprechende physische Bereiche A0, A1, A2 usw. auf dem physischen Speicherplatz 34. Beispielsweise können sechzehn 64K-Zuweisungsblöcke 43 oder 45 an der virtuellen RAID-Ansicht auf eine einzige 1M-Region 35 abgebildet werden.
  • Die Spiegel- und Paritäts-RAID-Bereiche können den gesamten Speicherplatz 34 des Plattenarrays einnehmen, müssen aber nicht. Dementsprechend kann während bestimmter Anwendungen ein unbenutzter und unbezeichneter Speicherplatz vorliegen, der keinem bestimmten RAID-Bereich entspricht. Ein solcher Speicherplatz kann jedoch in einen Spiegel- oder Paritäts-RAID-Bereich umgewandelt werden. Ferner ist zu beachten, dass die RAID-Bereiche in der Abbildung in benachbarte Bereiche auf dem Plattenarray abgebildet werden, wobei jede einem RAID-Bereich zugeordnete Region an derselben physischen Adresse auf jeder Speicherplatte angeordnet ist. Die RAID-Bereiche können alternativ auch zu nicht-benachbarten Bereichen auf dem Plattenarray abgebildet werden.
  • Der in den RAID-Bereichen verfügbare Speicherplatz wird in eine zweite virtuelle Vorderes-Ende-Ansicht 50 der Anwendungsebene abgebildet, die eine Speicheransicht ist, wie sie durch den Benutzer oder das Hostanwendungsprogramm de finiert und demselben präsentiert wird. Bei einer Betrachtung durch den Benutzer oder das Hostanwendungsprogramm kann die virtuelle Ansicht 50 der Anwendungsebene eine einzige große Speicherkapazität darstellen, die den verfügbaren Speicherplatz auf den Speicherplatten 12 angibt. Der virtuelle Speicherplatz 50 präsentiert eine Ansicht eines linearen Satzes von gleich großen virtuellen Speicherblöcken 52 und 53, die einzeln als 0, 1, 2, ... J–1, J, J+1, ..., L–1, L, L+1, ..., usw. bezeichnet werden. Die virtuellen Blöcke 52 und 53 weisen vorzugsweise dieselbe Größe auf wie die Zuweisungsblöcke in dem RAID-Bereich 40, wobei eine beispielhafte Größe 64 Kilobytes beträgt. Der virtuelle Blockspeicherplatz 50 wird in der durch die RAID-Bereiche 40 dargestellten Ansicht durch eine Tabelle von Bezugnahmen oder Zeigern (wie sie durch Pfeile 54 dargestellt sind) auf Zuweisungsblöcke, dargestellt. Die virtuellen Blöcke 52 und 53 bei der virtuellen Anwendungsansicht 50 sind somit über die in der virtuellen Blocktabelle beibehaltenen Zeiger den Zuweisungsblöcken 43 und 45 an der virtuellen RAID-Ansicht 50 zugeordnet. Es gibt mindestens zwei Arten von RAID-Bereichen, auf die von der virtuellen Blocktabelle verwiesen werden kann: Spiegel und Parität.
  • Das RAID-Verwaltungssystem 16 kann die Konfiguration der RAID-Bereiche über den physischen Speicherplatz dynamisch verändern. Die Anzahl von RAID-Bereichen für jeden Typ kann je nach der Menge von Benutzerdaten, die in dem System gespeichert sind, und je nach der Größe des physischen Plattenspeicherplatzes erhöht oder verringert werden. Folglich befinden sich das Abbilden der RAID-Bereiche in der virtuellen Ansicht 40 der RAID-Ebene auf die Platten und das Abbilden der virtuellen Ansicht 50 der Anwendungsebene auf die RAID-Ansicht 40 allgemein in einem Veränderungszustand. Der Speicherabbildungsspeicher in den NVRAMs 21a und 21b (1) behält die aktuellen Abbildungsinformationen bei, die durch das RAID-Verwaltungssystem 16 verwendet werden, um die RAID-Bereiche auf die Platten abzubilden, und behält die Informationen bei, die verwendet werden, um zwischen die zwei virtuellen Ansichten abzubilden. Während das RAID-Verwaltungssystem die Abbildungen der RAID-Ebene dynamisch verändert, aktualisiert es auch die Abbildungsinformationen in dem Speicherabbildungsspeicher, um die Veränderungen zu reflektieren.
  • Die Migrationsoperation des Speichersystems 10 wird nun unter Bezugnahme auf 1 und 4 beschrieben.
  • Für die Zwecke einer fortführenden Erläuterung nehmen virtuelle Blöcke 53 des virtuellen Speicherplatzes 50 der Anwendungsebene Bezug auf zugeordnete Zuweisungsblöcke 45 in dem Paritäts-RAID-Bereich 44, die in dem Bereich A1 des physischen Speicherplatzes 34 gespeichert sind. Derartige virtuelle Blöcke 53 können als „virtuelle Paritätsblöcke" bezeichnet werden, während die zugeordneten Zuweisungsblöcke 45 als „Paritätszuweisungsblöcke" bezeichnet werden. Desgleichen nehmen virtuelle Blöcke 52 Bezug auf zugeordnete Zuweisungsblöcke 43 in dem Spiegel-RAID-Bereich 42, die in dem Bereich A0 des physischen Speicherplatzes 34 gespeichert sind. Derartige virtuelle Blöcke 52 können hierin als „virtuelle Spiegelblöcke" bezeichnet werden, während die zugeordneten Zuweisungsblöcke 43 als „Spiegelzuweisungsblöcke" bezeichnet werden.
  • Um Daten von einem RAID-Bereich zu einem anderen zu bewegen, wird allgemein ein virtueller Block, der einem Zuweisungsblock eines Typs der ersten RAID-Ebene (z.B. Spiegel oder Ebene 1) zugeordnet ist, ausgewählt. Anschließend wird ein nicht benutzter Zuweisungsblock, der einen Typ der zweiten RAID-Ebene (beispielsweise Parität oder Ebene 5) darstellt, lokalisiert. Falls ein nicht benutzter Zuweisungsblock nicht lokalisiert werden kann, wird einer erzeugt. Als nächstes werden Daten von dem Zuweisungsblock, der zuvor dem ausgewählten virtuellen Block zugeordnet war, an den nicht benutzten Zuweisungsblock transferiert, der bewirkt, dass die Daten einer Redundanzebenenänderung unterzogen werden. Beispielsweise werden Daten, die einst ge mäß der Spiegelredundanz gespeichert wurden, nun gemäß einer Paritätsredundanz gespeichert, oder umgekehrt. Als abschließenden Schritt wird die Abb. 54 des virtuellen Speicherplatzes 50 der Anwendungsebene auf den virtuellen Speicherplatz 40 der RAID-Ebene modifiziert und aktualisiert, um die Datenverschiebung widerzuspiegeln. Der ausgewählte virtuelle Block, der zuvor einem Zuweisungsblock des Typs der ersten RAID-Ebene zugeordnet war, nimmt nun über einen aktualisierten Zeiger Bezug auf einen Zuweisungsblock des Typs der zweiten RAID-Ebene, der die migrierten Daten enthält. Jegliche Abbildungsveränderung, die während dieser Transaktion auftritt, würde in dem Speicherabbildungsspeicher 21 aktualisiert werden.
  • Die fortdauernde Erörterung liefert eine ausführlichere Erklärung des Bewegens von Daten zwischen Spiegel- und Paritätsspeicherbereichen gemäß bevorzugten Verfahren und Sequenzen dieser Erfindung. Zum Bewegen von Daten von einem Paritäts- zu einem Spiegelspeicher wird die folgende Sequenz verwendet:
    • 1. Das RAID-Verwaltungssystem lokalisiert einen unbenutzten Spiegelzuweisungsblock 43 in einem Spiegel-RAID-Bereich 42.
    • 2. Falls keiner gefunden wird, erzeugt das RAID-Verwaltungssystem einen Spiegelzuweisungsblock (nachfolgend erläutert).
    • 3. Das RAID-Verwaltungssystem hebt neue Speicheranforderungen an den zu bewegenden virtuellen Block zeitweilig auf.
    • 4. Das RAID-Verwaltungssystem wartet, bis alle aktiven Datenspeicherungsanforderungen an den virtuellen Block abgeschlossen sind.
    • 5. Die Daten von dem Paritätszuweisungsblock 45, der dem virtuellen Block 53 zugewiesen ist, werden in einen vorübergehenden Speicherpuffer eingelesen.
    • 6. Die Daten werden anschließend in den bei Schritt 2 gewählten Spiegelzuweisungsblock 43 geschrieben.
    • 7. Die virtuelle Blocktabelle wird modifiziert, um auf die neue Position der Daten in dem Spiegelzuweisungsblock 43 zu verweisen.
    • 8. Die zeitweilig aufgehobenen Speicheranforderungen werden wiederaufgenommen.
  • Gemäß der obigen Prozedur bewegte sich ein virtueller Block 53 in der virtuellen Ansicht 50 der Anwendungsebene von einer Paritäts- zu einer Spiegelspeicherung. Relativ zu der virtuellen Zwischenansicht 40 bewegten sich Daten von einem Paritätszuweisungsblock 45 in dem Paritäts-RAID-Bereich 44 zu einem Spiegelzuweisungsblock 43 in dem Spiegel-RAID-Bereich 42. In dem physischen Speicherplatz bewegten sich Daten von dem Bereich A1 zum Bereich A0.
  • Falls kein unbenutzter Spiegelzuweisungsblock lokalisiert werden kann (Schritt 1 oben), versucht das RAID-Verwaltungssystem die folgende bevorzugte Sequenz von drei Techniken. Erstens versucht das RAID-Verwaltungssystem, einen unbenutzten (und somit unbenannten) RAID-Bereich zu lokalisieren, der in einen Spiegel-RAID-Bereich umgewandelt werden kann, ohne die Systemschwelle eines unbenutzten Speichers der RAID-Ebene zu verletzen, die benötigt wird, um zu garantieren, dass eine Migration immer stattfinden kann. Falls dies fehlschlägt und das System mehr als die reservierte Menge an unbenutztem Speicher der RAID-Ebene aufweist, bewegt das System Daten innerhalb des Paritätsspeichers, um unbenutzte Paritätszuweisungsblöcke zu unbenutzten RAID-Bereichen zu sammeln. Falls diese Migration einen unbenutzten RAID-Bereich ergibt, der, wie oben erwähnt, in einen Spiegel-RAID-Bereich umgewandelt werden kann, wandelt das System ihn in einen Spiegel-RAID-Bereich um. Andernfalls bewegt das System alternativ dazu Daten von einem Spiegel- zu einem Paritätsspeicher, verdichtet den Spiegelspeicher und wandelt einen unbenutzten Speicher der RAID-Ebene in einen Paritätsspeicher um, bis das System den unbenutzten Speicher der RAID-Ebene ausreichend für die Lokalisierung eines unbenutzten Spiegelzuweisungsblocks oder eine Umwandlung eines unbenutzten RAID-Bereichs in einen Spiegel-RAID-Bereich erhöht. Da Spiegelzuweisungsblöcke mehr physischen Speicherplatz belegen als Paritätszuweisungsblöcke, führt diese letzte Technik zu einer Nettoerhöhung des Umfangs an unbenutztem Speicher der RAID-Ebene.
  • Das Erzeugungs-/Umwandlungsprotokoll, das verwendet wird, um unbenutzte Spiegelzuweisungsblöcke zu lokalisieren und einzurichten, ist vorteilhaft, da es dem RAID-Verwaltungssystem ermöglicht, die Speicherzuweisung gemäß der Menge an Benutzerdaten und der Größe des physischen Speicherplatzes zwischen Paritäts- und Spiegelbereichen selektiv einzustellen. Da die Datennutzung und die Speicherkapazität variieren, verwendet das RAID-Verwaltungssystem eine oder mehrere der obigen drei Techniken, um die Datenmenge, die in einem Spiegelspeicher gehalten wird, zu maximieren.
  • Das RAID-Verwaltungssystem versucht, die Situation zu vermeiden, bei der eine Speicheranforderung warten muss, bis die Platzschaffungssequenz einen unbenutzten Spiegelzuweisungsblock ergibt, indem sie während einer Leerlaufzeit unbenutzte RAID-Bereiche erzeugt. In manchen Situationen können Speicheranforderungen während der Platzschaffungssequenz jedoch zeitweilig aufgehoben werden. Das RAID-Verwaltungssystem konfiguriert den virtuellen Blockspeicherplatz derart, dass der virtuelle Platz geringer ist als die RAID-Ansicht. Dies gewährleistet, dass für eine Migration oder andere Zwecke ein freier Platz reserviert wird, der gleich zumindest einem RAID-Bereich ist. Auf diese Weise ergibt die Sequenz von Techniken immer einen unbenutzten Spiegelzuweisungsblock.
  • Um Daten von einem Spiegel- zu einem Paritätsspeicher zu bewegen, wird die folgende Sequenz verwendet:
    • 1. Das RAID-Verwaltungssystem wählt einen virtuellen Block aus 52 aus, um gemäß einer Migrationsrichtlinie, beispielsweise Zugriffsaktualität oder Zugriffshäufigkeit, von einem Spiegel- zu einem Paritätsspeicher zu bewegen.
    • 2. Das RAID-Verwaltungssystem lokalisiert einen unbenutzten Paritätszuweisungsblock 45 in einem Paritäts-RAID-Bereich 44.
    • 3. Falls kein solcher Block gefunden werden kann, wird ein für eine Migration reservierter Platz gemäß den oben beschriebenen Erzeugungstechniken in einen Paritäts-RAID-Bereich umgewandelt.
    • 4. Neue Speicheranforderungen an den zu bewegenden virtuellen Block werden zeitweilig aufgehoben.
    • 5. Das RAID-Verwaltungssystem wartet, bis alle aktiven Speicheranforderungen an den virtuellen Block abgeschlossen sind.
    • 6. Daten werden von dem Spiegelzuweisungsblock 43, der dem virtuellen Block 52 zugeordnet ist, in einen vorübergehenden Speicherpuffer gelesen.
    • 7. Die Daten werden in den gewählten Paritätszuweisungsblock 45 geschrieben.
    • 8. Die virtuelle Blocktabelle wird modifiziert, um auf die neue Position der Daten in dem Paritätszuweisungsblock 45 zu verweisen.
    • 9. Datenanforderungen an den virtuellen Block werden wiederaufgenommen.
  • Die obigen zwei aufgezählten Sequenzen liefern Beispiele dessen, wie das Speichersystem dieser Erfindung arbeiten kann, um Daten zwischen zwei verschiedenen Redundanzebenen zu bewegen.
  • Obwohl sich die obige Erörterung auf eine Datenmigration zwischen einer Spiegel- und einer Paritätsspeicherung konzentrierte, ist diese Erfindung insbesondere auf den Prozess des Schreibens von Daten auf die Speicherplatten gemäß Paritätstechniken gerichtet. Die oben beschriebene Speicherverwaltungstechnik ermöglicht dieser Erfindung, eine Aktivität der Paritäts-RAID-Bereiche in segmentgroßen Stücken zu verwalten, wodurch eine inkrementale Paritätserzeugung ermöglicht wird.
  • Wie in dem Abschnitt „Hintergrund der Erfindung" erwähnt wurde, schreiben herkömmliche Plattenarrays während des Initialisierungsprozesses ein Voreinstellungsmuster, das sich in der Regel aus einem sich wiederholenden Bit oder Bytemuster zusammensetzt. Ein beispielhaftes Muster besteht darin, alle „1"en auf das Plattenarray zu schreiben. Herkömmliche Plattenarrays stellen während Initialisierungsprozeduren außerdem die Parität für jeden Streifen in denselben ein.
  • Nach diesem Initialisierungsprozess ist das herkömmliche Plattenarray bereit, Benutzerdaten zu schreiben. Gemäß seiner Verwendung in dieser Offenbarung bedeutet der Begriff „Benutzerdaten" Datenbytes, die Informationen bezüglich der Anwendung des Rechensystems enthalten. Beispielsweise können Benutzerdaten aus den Daten bestehen, die infolge einer Anwendung von dem Hostcomputer erhalten werden. Benutzerdaten könnten auch aus Daten bestehen, die von der Speicherplatte wiederhergestellt wurden und die zuvor das Ergebnis einer Rechenanwendung gewesen waren. Der Begriff „Benutzerdaten" soll nicht einfache Formatmuster, die während der Initialisierung verwendet werden, beispielsweise ein Muster aller „1"en, umfassen.
  • Bei herkömmlichen Plattenarrays sind vier I/O-Zugriffe erforderlich, um Benutzerdaten in das Plattenarray zu schreiben: ein erster I/O, um die Daten, die aktualisiert werden sollen, aus einem ausgewählten Streifen zu lesen, ein zweiter I/O, um die entsprechende Parität für Daten in diesem Streifen zu lesen, ein dritter I/O, um neue Daten zurück in den Streifen zu schreiben, und ein vierter I/O, um eine neue Parität, die die neuen Daten berücksichtigt, zurück in den Streifen zu schreiben.
  • Gemäß dem Plattenarray dieser Erfindung schreibt ein Speicherverwalter Benutzerdaten sequentiell auf den Streifen, zu jeglichem Zeitpunkt ein Segment, und erzeugt während jedes Datenschreibvorgangs inkremental einen Paritätswert. Der Speicherverwalter Cache-speichert den Paritätswert, bis eine Parität für den gesamten Streifen berechnet werden kann. Der abschließende Paritätswert wird danach auf den Streifen geschrieben. Das Plattenarray verringert die Anzahl von I/Os während einer Schreibprozedur beträchtlich.
  • Der Speicherverwalter umfasst eine Einrichtung zum Bestimmen, welche Datensegmente in eine Streifenparität integriert sind und welche nicht. Das heißt, dass der Datenverwalter die Größe der Streifen sowie den Paritätsstatus jedes Segments in den Streifen bezüglich dessen, ob das einzelne Segment Daten enthält, die Bestandteil des Paritätswerts für den zugeordneten Streifen sind, kennt. Bei der bevorzugten Implementierung verfolgt der Speicherverwalter einen Paritätsstatus jedes Segments durch die Verwendung von zwei Arten von Zeigern: von einem oder mehreren Teil streifenzeigern, die Streifen, die gefüllt werden, nachverfolgen, und von einem oder mehreren Segmentfüllzeigern, die auf spezifische Segmente in den Streifen, die gerade gefüllt werden, Bezug nehmen. Diese Zeiger werden zum Zweck einer raschen Nutzung durch den Speicherverwalter vorzugsweise in einem nicht-flüchtigen Speicher gehalten.
  • 5 zeigt einen NVRAM 21a, der einen Teilstreifenzeiger 62 und einen Segmentfüllzeiger 64 enthält. Bei dem veranschaulichten Beispiel werden die Zeiger verwendet, um auf Segmente in dem Streifen 66 Bezug zu nehmen, der sich über Platten 0 – 4 des Plattenarrays 11 erstreckt. Der NVRAM 21a enthält ferner eine Speicherabbildung 60, die das Abbilden der virtuellen Speicherplätze auf RAID-Ebene und Anwendungsebene nachverfolgt. Der Spiegel-NVRAM 21b ist in dieser Figur nicht gezeigt, würde jedoch identische Informationen, wie sie bei dem NVRAM 21a veranschaulicht sind, enthalten.
  • Der Teilstreifenzeiger 62 nimmt auf einzelne Streifen und insbesondere auf nicht-gefüllte Streifen in dem Plattenarray Bezug. Anfänglich identifiziert der Teilstreifenzeiger einen leeren Streifen, der keine Benutzerdaten enthält. Der Segmentfüllzeiger 64 nimmt auf einzelne Segmente in dem Streifen, der durch den Teilstreifenzeiger 62 ausgewählt ist, Bezug. Der Segmentfüllzeiger 64 lokalisiert das leere Segment, das dazu bereit ist, mit Benutzerdaten gefüllt zu werden. Bei 5 nimmt der Teilstreifenzeiger 62 auf einen nicht-gefüllten Streifen 66, wie er durch Pfeil 68 dargestellt ist, Bezug, und der Segmentfüllzeiger 64 nimmt auf das Segment 2 (wie es durch Pfeil 70 dargestellt ist), das nächste leere Segment in dem Streifen 66, Bezug. Vorzugsweise durchläuft der Segmentfüllzeiger sequentiell den Streifen, um nacheinander auf jedes leere Segment Bezug zu nehmen, wobei er mit dem Segment 1 beginnt und mit dem Segment 5 endet.
  • Gemäß dieser bevorzugten Implementierung verfolgt der Speicherverwalter effektiv den Paritätsstatus aller Segmente in dem Plattenarray durch die Hilfe der zwei Zeiger nach. In Bezug auf den durch den Teilstreifenzeiger 62 ausgewählten Streifen ist bekannt, dass Segmente vor dem Segmentfüllzeiger 64 Daten enthalten, die in die Streifenparität integriert sind, und dass Segmente, die auf den Segmentfüllzeiger folgen, leer sind und noch nicht in die Streifenparität integriert sind. In Bezug auf diejenigen Streifen, auf die nicht durch den Teilstreifenzeiger 64 Bezug genommen wird, geht man davon aus, dass bei Streifen, die Daten enthalten, alle Datensegmente durch die Streifenparität dargestellt werden. Man geht davon aus, dass die leeren Streifen keine Daten enthalten oder keinerlei Paritätswert, der diese Segmente darstellt, aufweisen.
  • Nachdem ein leerer Streifen durch den Teilstreifenzeiger identifiziert wurde, werden Benutzerdaten in das Segment geschrieben, auf das durch den Segmentfüllzeiger Bezug genommen wurde. Bei 5 wurden Benutzerdaten bereits in das erste Segment 1 in Streifen 66 geschrieben. Während der Segmentfüllzeiger 64 nacheinander durch die verbleibenden Segmente läuft, werden Benutzerdaten in jedes Segment in dem Streifen geschrieben, mit Ausnahme des Segments, das für Parität reserviert ist. In diesem Fall wird die Parität in das letzte Segment 5 geschrieben. Falls das Paritätssegment nicht das letzte in dem Streifen ist, überspringt der Segmentfüllzeiger jedoch das Paritätssegment während seines sequentiellen Durchlaufens des Streifens und kehrt dann zurück, um die Parität in das Paritätssegment zu schreiben, nachdem die Benutzerdaten in alle Datensegmente des Streifens platziert wurden. Die Position des Paritätssegments in dem Streifen wird durch ein Paritätsplatzierungsverfahren bestimmt, das auf dem technischen Gebiet üblich ist. Es sei erwähnt, dass Benutzerdaten nur in das Segment geschrieben werden, auf das durch den Zeiger 64 Bezug genommen wird, und dass die anderen Datensegmente in Ruhe gelassen werden, bis auf sie Bezug genommen wird.
  • Gemäß einem Aspekt dieser Erfindung wird anschließend an jeden Datenschreibvorgang in ein Segment in dem Streifen inkremental ein Paritätswert erzeugt. Wie oben unter Bezugnahme auf 3 beschrieben wurde, wird ein Paritätswert gemäß einer Logikfunktion, z. B. einer Exklusiv-ODER-Funktion (XOR-Funktion) berechnet. Wenn lediglich ein Segment gefüllt ist, wie in 5 gezeigt ist, ist der Paritätswert identisch mit den Benutzerdaten. Während sich jedoch mehr Segmente füllen, verändert sich der Paritätswert inkremental, um die Parität für die Benutzerdaten, die in allen gefüllten Segmenten enthalten sind, widerzuspiegeln. Die leeren oder ungenutzten Segmente in dem Streifen werden während des sequentiellen Schreibvorgangs nicht verwaltet und sind somit in der inkrementalen Paritätserzeugung nicht enthalten.
  • Der NVRAM 21a umfasst einen Paritätscache 72, der den inkrementalen Paritätswert vorübergehend speichert. Es wird ein neues Segment beschrieben, der Speicherverwalter berechnet einen neuen Paritätswert auf der Basis der Logikfunktion (d. h. XOR) des zuvor Cache-gespeicherten Paritätswerts und der soeben in das nächste Segment geschriebenen Benutzerdaten. Das sequentielle Segmentbeschreiben und inkrementale Cache-Speichern wird Segment um Segment wiederholt, bis alle Daten tragenden Segmente gefüllt sind.
  • Infolge des Paritäts-Cache-Speicherns muss der Paritätswert nicht nach jedem Schreibvorgang in das Plattenarray geschrieben werden. Statt dessen wird der Paritätswert erst in das Plattenarray geschrieben, nachdem alle Datensegmente gefüllt wurden. Das heißt, wenn der Segmentfüllzeiger 64 das letzte Segment 5 erreicht, schreibt das RAID-Verwaltungssystem den Paritätswert in das Paritätssegment für den Streifen 66, was in diesem Fall das Segment 5 ist, obwohl jegliches Segment in dem Streifen zum Speichern der Parität verwendet werden kann.
  • Das Plattenarray dieser Erfindung eliminiert das Erfordernis, Benutzerdaten und Parität während eines Schreibvorgangs aus dem Plattenarray zu lesen, wodurch die ersten zwei I/Os herkömmlicher Plattenarrays eliminiert werden. Durch ein Cache-Speichern des Paritätswerts verringert das Plattenarray außerdem auf effektive Weise die Anzahl von Malen, die die Parität für jeden Streifen auf die Platte geschrieben wird. Obwohl bekannte Plattenarrays vier I/Os erforderten, um Benutzerdaten mit Parität zu schreiben, erfordert das Plattenarray dieser Erfindung im einzelnen lediglich 1 + 1/(N – 1) I/Os, um Benutzerdaten mit Parität zu schreiben (wobei N gleich der Anzahl von Platten in dem Streifen ist).
  • Wie oben erwähnt wurde, werden die Teilstreifenzeiger 62, die Segmentfüllzeiger 64 und der Paritätscachespeicher 72 durch den Speicherverwalter verwaltet und aufrechterhalten. Bei der bevorzugten Implementierung ist der Speicherverwalter als das RAID-Verwaltungssystem 16 (1) verkörpert, das ferner die Benutzerdaten, redundanten Daten und ungenutzten Platz auf dem Plattenarray nachverfolgt. Jedoch kann in dem Kontext dieser Erfindung auch ein Speicherverwalter verwendet werden, der konfiguriert ist, um einzig und allein die Speicherzuweisung gemäß einer Paritätsspeicherung zu verwalten.
  • 6 und 7 veranschaulichen ein bevorzugtes Verfahren zum Schreiben von Benutzerdaten in ein Plattenarray gemäß Paritätsredundanztechniken. Der Prozess beginnt bei Schritt 100 (6), wo bestimmt wird, ob der Teilstreifenzeiger 62 null ist, was bedeutet, dass er derzeit nicht auf einen nicht-gefüllten Streifen Bezug nimmt. Falls der Teilstreifenzeiger auf einen Streifen zeigt (d. h. der „Nein"-Zweig aus Schritt 100), werden Daten in das nächste ungenutzte Segment geschrieben, auf das durch den Segmentfüllzeiger 64 Bezug genommen wird (Schritt 102). Ein inkrementaler Paritätswert für alle Benutzerdaten, die in diejenigen Segmenten enthalten sind, die gefüllt wurden, wird durch ein XOR- Verknüpfen der neuen Benutzerdaten in die Cache-gespeicherte Parität (Schritt 104) berechnet und erneut Cache-gespeichert (Schritt 106).
  • Bei Schritt 108 wird bestimmt, ob der Segmentfüllzeiger 64 auf das letzte Segment in dem Streifen Bezug nimmt. Das RAID-Verwaltungssystem verfolgt die Zuweisung jedes Platzes in einem Streifen. Es weiß, wie viele Segmente in einem Streifen sind und kennt alle ungenutzten Segmente, die in dem Streifen noch nicht zugewiesen wurden. Wie oben erörtert wurde, geht das RAID-Verwaltungssystem ferner davon aus, dass alle Segmente vor dem Segmentfüllzeiger in der Streifenparität dargestellt sind, und dass alle Segmente hinter dem Zeiger leer sind und in der Streifenparität nicht berücksichtigt sind. Ferner geht das RAID-Verwaltungssystem davon aus, dass bei Streifen, auf die nicht Bezug genommen wird und die Daten enthalten, alle Segmente in ihre Streifenparität integriert sind, und dass alle leeren Streifen, auf die nicht Bezug genommen wurde, Segmente aufweisen, die nicht Bestandteil irgendeiner Parität sind.
  • Infolge dieser Betriebsparameter kennt das RAID-Verwaltungssystem den Paritätszustand jedes Segments in dem Plattenarray sowie die Position der Zeiger in dem Array. Das RAID-Verwaltungssystem weiß somit, ob der Segmentfüllzeiger das Ende des Streifens erreicht hat oder nicht. Falls der Zeiger das letzte Segment noch nicht erreicht hat (d. h. der „Nein"-Zweig aus Schritt 108), wird der Segmentfüllzeiger zu dem nächsten Datensegment bewegt (Schritt 110, 7). Der bei Schritt 104 berechnete Paritätswert kann dann optional in das Paritätssegment in dem Streifen geschrieben werden (Schritt 112).
  • Unter erneuter Bezugnahme auf 6 wird, falls der Segmentfüllzeiger das letzte Segment erreicht hat, der Cache-gespeicherte Paritätswert, der eine Parität für den gesamten Streifen darstellt, in das Paritätssegment in dem Streifen geschrieben (Schritt 114). An diesem Punkt wird der Streifen vollständig mit Benutzerdaten und redundanten Informationen gefüllt. Demgemäss kann der Teilstreifenzeiger aufgehoben werden, bis er wieder verwendet wird, um den nächsten leeren Streifen zu identifizieren (Schritt 116), wie nachstehend ausführlicher beschrieben wird.
  • Bei Schritt 118 wertet das RAID-Verwaltungssystem aus, ob die Benutzerdaten, die soeben in die Segmente in dem Streifen geschrieben wurden, zuvor einem anderen Ort auf dem Plattenarray zugewiesen wurden. Eine derartige Situation entsteht, wenn das RAID-Verwaltungssystem beispielsweise Benutzerdaten auf dem Plattenarray umorganisiert und Benutzerdaten von einem Ort zu einem anderen bewegt. Falls es neugeschriebene Benutzerdaten sind (d. h. der „Ja"-Zweig aus Schritt 118), hebt das RAID-Verwaltungssystem die Zuordnung der Benutzerdaten zu ihrer alten Position auf, wodurch ein „Loch" (d. h. ein leeres Segment) in dem vorherigen Streifen erzeugt wird (Schritt 120). Bei Schritt 122 wird die Speicherabbildung 60 aktualisiert, um die neue Datenposition widerzuspiegeln.
  • Unter erneuter Bezugnahme auf den anfänglichen Schritt 100 ist der Teilstreifenzeiger während der Zeit zwischen dem Abschluss eines Streifens und der Identifizierung eines neuen leeren Streifens null. Falls der Teilstreifenzeiger null ist (d. h. der „Ja"-Zweig aus Schritt 100), sucht das RAID-Verwaltungssystem einen neuen leeren Streifen (Schritt 124, 7). In dem Fall, dass kein leerer Streifen identifiziert werden kann (d. h. der „Nein"-Zweig aus Schritt 124), findet das RAID-Verwaltungssystem einen teilweise gefüllten Streifen, der „Löcher" in demselben aufweist, und leert ihn (Schritt 126). Dieser Prozess ist auch als „Müllsammlung" bekannt, und ein Beispiel ist in 8 gezeigt.
  • 8 zeigt Streifen 150156, die die Platten 0 – 4 des Plattenarrays überqueren. Die Segmente, die Benutzerdaten enthalten, sind durch den Buchstaben „D" bezeichnet, auf den eine Zahl folgt. Leere oder ungenutzte Segmente sind durch den Buchstaben „U" bezeichnet. Man beachte, dass ungenutzte Segmente U „Löcher" in den Streifen 150156 erzeugen. Zu Beispielszwecken sei angenommen, dass das RAID-Verwaltungssystem entscheidet, den Streifen 150 zu leeren. Benutzerdaten D0 in dem Segment auf der Platte 0 werden zu einem ungenutzten Segment in dem Streifen 154 bewegt, und Benutzerdaten D1 in dem Segment auf der Platte 2 werden zu einem ungenutzten Segment in dem Streifen 152 bewegt. Diese Datenbewegung leert den Streifen 150, der nun aus ungenutzten Datensegmenten und einem Paritätssegment besteht. Gleichzeitig füllt die Datenbewegung die „Löcher" in anderen Streifen, wodurch diese Streifen voller werden.
  • Dieser beispielhafte Typ des Müllsammelprozesses bewegt Benutzerdaten willkürlich von dem zu leerenden Streifen zu Löchern in anderen Streifen. Bei einer anderen Implementierung schreibt der Müllsammelprozess Benutzerdaten sequentiell von dem bezeichneten Streifen auf dieselbe Weise, wie sie oben zum sequentiellen Schreiben von Benutzerdaten nach Segment beschrieben wurde, in einen neuen leeren Streifen. Gleichermaßen können auch andere Müllsammeltechniken verwendet werden, um Streifen durch den Schritt 126 der 7 zu leeren.
  • Unter erneuter Bezugnahme auf 7 wählt das RAID-Verwaltungssystem den leeren Streifen aus (Schritt 128) und stellt den Teilstreifenzeiger ein, um auf den Streifen Bezug zu nehmen (Schritt 130). Der Segmentfüllzeiger wird initialisiert, um auf den Anfang des Streifens Bezug zu nehmen (Schritt 132). Anschließend werden Benutzerdaten in das erste ungenutzte Segment geschrieben (Schritt 134). Bei Schritt 136 wird der anfängliche Paritätswert den Benutzerdaten gleichgesetzt und Cache-gespeichert. Danach wird der Segmentfüllzeiger zu dem nächsten Datensegment bewegt (Schritt 110), und der Prozess wird für die verbleibenden Segmente des Streifens fortgesetzt.
  • Die oben beschriebene Implementierung verwendet zwei Arten von Zeigern, die leere Streifen und Segmente in diesen Streifen identifizieren. Bei einem weiteren Ausführungsbeispiel können mehrere Paare von Zeigern in NVRAM zurückgehalten werden, z. B. ein Paar pro RAID-Bereich. Die Verwaltung einer Cache-gespeicherten Parität wird mit dem inkrementalen Füllen mehrerer Streifen koordiniert. Falls mehrere Paare von Zeigern verwendet werden, kann eine Koordinierung ein Cache-Speichern mehrerer Paritätssegmente aus verschiedenen Streifen und/oder ein Platzieren der Cache-Parität in einem Muster beinhalten, das eine zeitlich günstige Wiederverwendung von Cache-Ressourcen ermöglicht, z. B. ein Platzieren einer Parität, nachdem jedes Datensegment geschrieben wurde.
  • Bei einer weiteren optionalen Implementierung kann das RAID-Verwaltungssystem konfiguriert sein, um teilweise gefüllte Streifen auszuwählen, die Benutzerdaten in einem oder mehreren zusammenhängenden Segmenten am Anfang des Streifens enthalten, während die Segmente am Ende des Streifens leer sind. Das RAID-Verwaltungssystem initialisiert den Segmentfüllzeiger auf das erste leere Segment in dem teilweise gefüllten Streifen und setzt anschließend den sequentiellen Schreibvorgang gemäß derselben Techniken, wie sie oben beschrieben wurden, fort. Ferner sei erwähnt, dass der Prozess Streifen um Streifen fortgesetzt werden kann, um ganze RAID-Bereiche zu schreiben.
  • Bei einer weiteren bevorzugten Implementierung wird jedes Paar von Zeigern zu einem einzigen Zeiger kombiniert, der sowohl einen Streifen als auch ein Segment in demselben identifiziert.
  • Als Ausführungsbeispiel, das alternativ zu einer Verwendung von zwei Arten von Zeigern ist, kann das RAID-Verwaltungssystem eine Bitabbildung als sein Mittel zum Bestimmen verwenden, welche Datensegmente in eine Streifenparität integriert sind und welche nicht. Die Bitabbildung würde Informationen über jedes einzelne Segment in dem Plattenarray enthalten. Dieses Ausführungsbeispiel erfordert im Vergleich zu den Zeigern mehr Speicherraum in dem NVRAM, ist jedoch wirksam bezüglich des Nachverfolgens der Parität der Datensegmente.
  • Vorschriftsgemäß wurde die Erfindung in einer Sprache beschrieben, die mehr oder weniger spezifisch für strukturelle und methodische Merkmale ist. Man sollte jedoch verstehen, dass die Erfindung nicht auf die gezeigten und beschriebenen spezifischen Merkmale beschränkt ist, da die hierin offenbarten Einrichtungen bevorzugte Formen der Umsetzung der Erfindung umfassen.

Claims (3)

  1. Ein Verfahren zum Schreiben von Benutzerdaten in ein Plattenarray gemäß redundanten Paritätsspeichertechniken, wobei das Plattenarray (11) mehrere Speicherplatten (12) aufweist und zu mehreren Streifen konfiguriert ist, bei denen sich jeder Streifen über mehrere der Speicherplatten (12) erstreckt und wobei jeder Streifen mehrere Segmente eines Speicherraums umfasst, in dem jedes Segment ein Abschnitt des Streifens ist, der sich auf einer einzigen Speicherplatte in dem Plattenarray befindet, wobei das Verfahren folgende Schritte umfasst: (a) Differenzieren zwischen Segmenten, die Benutzerdaten oder Paritätsinformationen enthalten, und Segmenten, die leer sind; (b) Identifizieren eines nicht gefüllten Streifens (66) in dem Plattenarray (12) unter Verwendung eines Teilstreifenzeigers (62), um auf den nicht gefüllten Streifen (66) Bezug zu nehmen, wobei der nicht gefüllte Streifen leere Segmente aufweist; (c) Bereitstellen eines von dem Plattenarray (11) separaten nicht-flüchtigen Speichers (21); (d) Lokalisieren eines leeren Segments in dem identifizierten Streifen (66) unter Verwendung eines Segmentfüllzeigers (64), um auf ein Segment, das in den Streifen geschrieben werden soll, Bezug zu nehmen, und sequentielles und nacheinander erfolgendes Bezugnehmen auf die leeren Segmente gemäß ihrer Reihenfolge in dem nicht gefüllten Streifen; (e) Schreiben von Benutzerdaten in das leere Segment in dem Streifen, ohne Benutzerdaten in andere Segmente in dem Streifen zu schreiben; (f) Bestimmen, nachdem die Benutzerdaten durch Schritt (e) in das Segment geschrieben wurden, eines Paritätswerts für die Benutzerdaten, die lediglich in denjenigen Segmenten in dem Streifen enthalten sind, in die geschrieben wurde, indem ein Paritätswert auf der Basis einer Logikfunktion aller Benutzerdaten in den Segmenten berechnet wird; (g) vorübergehendes Cache-Speichern des Paritätswerts in dem nicht-flüchtigen Speicher (21) nach jedem der Bestimmungsschritte (f); (h) Berechnen eines neuen Paritätswerts auf der Basis einer Logikfunktion des zuvor Cache-gespeicherten Paritätswerts und von Benutzerdaten, die zuletzt in ein leeres Segment in dem Streifen geschrieben wurden; (i) Wiederholen der Schritte (d) bis (g), um eines oder mehrere der anderen Segmente in dem Streifen zu füllen; und (j) Schreiben des Paritätswerts in ein Segment in dem Streifen des Plattenarrays (11), nachdem alle Segmente in dem Streifen, die zum Speichern von Benutzerdaten verwendet wurden, gefüllt wurden.
  2. Ein Verfahren gemäß Anspruch 1, das ferner folgenden Schritt umfasst: Speichern des Teilstreifenzeigers (62) und des Segmentfüllzeigers (64) in dem nicht-flüchtigen Speicher (21).
  3. Ein Datenspeichersystem, das folgende Merkmale aufweist: ein Plattenarray (11), das mehrere Speicherplatten (12) aufweist, wobei das Plattenarray (11) zu mehreren Streifen konfiguriert ist, bei denen sich jeder Streifen über mehrere der Speicherplatten erstreckt und wobei jeder Streifen mehrere Segmente eines Speicherraums umfasst, in dem jedes Segment ein Abschnitt des Streifens ist, der sich auf einer einzelnen Speicherplatte in dem Plattenarray (11) befindet; eine Plattenarraysteuerung (14), die mit dem Plattenarray (11) gekoppelt ist, um einen Datentransfer zu und von den Speicherplatten (12) zu koordinieren; einen Speicherverwalter (16), der wirksam mit der Plattenarraysteuerung (14) gekoppelt ist, um eine Speicherzuweisung zum redundanten Speichern von Benutzerdaten gemäß Paritätsredundanztechniken zu verwalten, wobei der Speicherverwalter (16) Benutzerdaten in Datensegmente und Paritätsinformationen in Paritätssegmente plaziert, wodurch zumindest ein Paritätssegment und ein oder mehrere Datensegmente in jedem Streifen enthalten sind, wobei der Speicherverwalter (16) eine Einrichtung zum Bestimmen aufweist, welche Datensegmente in die Paritätsinformationen des Streifens integriert sind, wobei die Bestimmungseinrichtung folgende Merkmale aufweist: einen Teilstreifenzeiger (62), um auf einzelne Streifen in dem Plattenarray (11) Bezug zu nehmen; einen Segmentfüllzeiger (64), um auf einzelne Segmente in dem Streifen, auf den Bezug genommen wurde, Bezug zu nehmen; und wobei der Speicherverwalter (16) die Zeiger verwendet, um einen nicht gefüllten Streifen und ein Segment in diesem Streifen auszuwählen; wobei der Speicherverwalter (16) einen nicht gefüllten Streifen (66) und ein leeres Segment in diesem Streifen auswählt; wobei der Speicherverwalter (16) Benutzerdaten in das ausgewählte Segment schreibt und inkremental einen Paritätswert für den Streifen bestimmt, nachdem in jedes Segment geschrieben wurde, wobei der Paritätswert auf den Benutzerdaten beruht, die in denjenigen Segmenten des Streifens enthalten sind, in die geschrieben wurde; einen nicht-flüchtigen Speicher (21), um den Teilstreifenzeiger und den Segmentfüllzeiger zu speichern, wobei der nicht-flüchtige Speicher auch den Paritätswert Cache-speichert; wobei der Speicherverwalter (16) einen neuen Paritätswert auf der Basis einer Logikfunktion des zuvor Cache-gespeicherten Paritätswerts und von Benutzerdaten, die zuletzt in ein leeres Segment geschrieben wurden, berechnet; und wobei der Speicherverwalter (16) den Paritätswert in ein Segment in dem Streifen des Plattenarrays (11) schreibt, nachdem alle Segmente in dem Streifen, die zum Speichern von Benutzerdaten verwendet wurden, gefüllt wurden.
DE69533058T 1995-02-10 1995-08-04 Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung Expired - Lifetime DE69533058T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/386,582 US5537534A (en) 1995-02-10 1995-02-10 Disk array having redundant storage and methods for incrementally generating redundancy as data is written to the disk array
US386582 1995-02-10

Publications (2)

Publication Number Publication Date
DE69533058D1 DE69533058D1 (de) 2004-06-24
DE69533058T2 true DE69533058T2 (de) 2005-05-12

Family

ID=23526204

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69533058T Expired - Lifetime DE69533058T2 (de) 1995-02-10 1995-08-04 Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung

Country Status (4)

Country Link
US (2) US5537534A (de)
EP (1) EP0726520B1 (de)
JP (1) JP3753461B2 (de)
DE (1) DE69533058T2 (de)

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3315779B2 (ja) * 1993-11-16 2002-08-19 富士通株式会社 ディスク装置間のファイル転送装置およびファイル転送方法
JP3687111B2 (ja) * 1994-08-18 2005-08-24 株式会社日立製作所 記憶装置システムおよび記憶装置の制御方法
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
JP3371044B2 (ja) * 1994-12-28 2003-01-27 株式会社日立製作所 ディスクアレイのための領域割り当て方法およびディスクアレイアクセス方法
US5657468A (en) * 1995-08-17 1997-08-12 Ambex Technologies, Inc. Method and apparatus for improving performance in a reduntant array of independent disks
US6098128A (en) 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US5812753A (en) * 1995-10-13 1998-09-22 Eccs, Inc. Method for initializing or reconstructing data consistency within an array of storage elements
US5720025A (en) * 1996-01-18 1998-02-17 Hewlett-Packard Company Frequently-redundant array of independent disks
US5790774A (en) * 1996-05-21 1998-08-04 Storage Computer Corporation Data storage system with dedicated allocation of parity storage and parity reads and writes only on operations requiring parity information
US5764880A (en) * 1996-09-10 1998-06-09 International Business Machines Corporation Method and system for rebuilding log-structured arrays
US5875457A (en) * 1996-10-08 1999-02-23 Mylex Corporation Fault-tolerant preservation of data integrity during dynamic raid set expansion
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
US5943690A (en) * 1997-04-07 1999-08-24 Sony Corporation Data storage apparatus and method allocating sets of data
US5974503A (en) * 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US5845279A (en) * 1997-06-27 1998-12-01 Lucent Technologies Inc. Scheduling resources for continuous media databases
US6377543B1 (en) 1997-08-13 2002-04-23 Telecommunications Research Laboratories Path restoration of networks
US6021462A (en) * 1997-08-29 2000-02-01 Apple Computer, Inc. Methods and apparatus for system memory efficient disk access to a raid system using stripe control information
JPH11119922A (ja) * 1997-10-17 1999-04-30 Fujitsu Ltd データ記憶システム及び冗長データ書き込み制御方法
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
US6295640B1 (en) * 1998-05-08 2001-09-25 Apple Computer, Inc. Method and apparatus for distinguishing reference values from non-reference values in a runtime environment
US6151685A (en) * 1998-05-15 2000-11-21 International Business Machines Corporation System and method for recovering a segment directory for a log structured array
US6704837B2 (en) * 1998-06-29 2004-03-09 International Business Machines Corporation Method and apparatus for increasing RAID write performance by maintaining a full track write counter
US6378038B1 (en) * 1999-03-31 2002-04-23 International Business Machines Corporation Method and system for caching data using raid level selection
US6532548B1 (en) 1999-09-21 2003-03-11 Storage Technology Corporation System and method for handling temporary errors on a redundant array of independent tapes (RAIT)
US6611827B1 (en) 1999-10-01 2003-08-26 International Business Machines Corporation Redundant disk array and method for redundant disk array access using contiguous page grouping
US6546499B1 (en) 1999-10-14 2003-04-08 International Business Machines Corporation Redundant array of inexpensive platters (RAIP)
US7007193B1 (en) 2000-01-07 2006-02-28 Storage Technology Corporation Method and system for reconstructing data serially arranged on a magnetic tape track
US6961838B2 (en) * 2000-06-02 2005-11-01 Hewlett-Packard Development Company, L.P. Generating updated virtual disks using distributed mapping tables accessible by mapping agents and managed by a centralized controller
US6530004B1 (en) 2000-06-20 2003-03-04 International Business Machines Corporation Efficient fault-tolerant preservation of data integrity during dynamic RAID data migration
US7539828B2 (en) * 2000-08-08 2009-05-26 Faronics Corporation Method and system for automatically preserving persistent storage
US20020099745A1 (en) * 2001-01-23 2002-07-25 Neo-Core, L.L.C. Method and system for storing a flattened structured data document
US20020099736A1 (en) * 2001-01-23 2002-07-25 Neo-Core, L.L.C. Method of storing a structured data document
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020124137A1 (en) * 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
US6990667B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US20020161846A1 (en) 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
US20030023584A1 (en) * 2001-04-27 2003-01-30 Brandin Christopher Lockton Universal information base system
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
US6785788B1 (en) * 2001-07-03 2004-08-31 Unisys Corporation System and method for implementing an enhanced raid disk storage system
US7055056B2 (en) * 2001-11-21 2006-05-30 Hewlett-Packard Development Company, L.P. System and method for ensuring the availability of a storage system
US7024586B2 (en) * 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
KR100490723B1 (ko) * 2002-11-29 2005-05-24 한국전자통신연구원 파일 레벨 스트라이핑 장치 및 방법
US7328305B2 (en) 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
JP2005165441A (ja) * 2003-11-28 2005-06-23 Hitachi Ltd ストレージ制御装置、及びストレージ制御装置の制御方法
JP4521865B2 (ja) * 2004-02-27 2010-08-11 株式会社日立製作所 ストレージシステム、計算機システムまたは記憶領域の属性設定方法
US20080234353A1 (en) * 2004-03-24 2008-09-25 Reynir Eyjolfsson Formulations of Ramipril
US7370163B2 (en) * 2004-05-03 2008-05-06 Gemini Storage Adaptive cache engine for storage area network including systems and methods related thereto
US20060036904A1 (en) * 2004-08-13 2006-02-16 Gemini Storage Data replication method over a limited bandwidth network by mirroring parities
US7457980B2 (en) * 2004-08-13 2008-11-25 Ken Qing Yang Data replication method over a limited bandwidth network by mirroring parities
JP2006107311A (ja) * 2004-10-08 2006-04-20 Hitachi Ltd ディスクアレイ装置およびその制御方法
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US7814273B2 (en) * 2004-11-05 2010-10-12 Data Robotics, Inc. Dynamically expandable and contractible fault-tolerant storage system permitting variously sized storage devices and method
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
US20070098782A1 (en) * 2005-10-28 2007-05-03 Selamine Limited Ramipril Formulation
GB2431579A (en) * 2005-10-28 2007-05-02 Arrow Int Ltd Ramipril formulations
US7809919B2 (en) * 2006-07-26 2010-10-05 Hewlett-Packard Development Company, L.P. Automatic data block misalignment detection and correction in a computer system utilizing a hard disk subsystem
EP2051696A2 (de) * 2006-08-18 2009-04-29 Morton Grove Pharmaceuticals, Inc. Stabile flüssige levetiracetam-zusammensetzungen und verfahren
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
JP2009098996A (ja) 2007-10-18 2009-05-07 Hitachi Ltd ストレージシステム
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8700842B2 (en) 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
JP2013196276A (ja) * 2012-03-19 2013-09-30 Fujitsu Ltd 情報処理装置、プログラムおよびデータ配置方法
US8862818B1 (en) * 2012-09-27 2014-10-14 Emc Corporation Handling partial stripe writes in log-structured storage
US20140208005A1 (en) * 2013-01-22 2014-07-24 Lsi Corporation System, Method and Computer-Readable Medium for Providing Selective Protection and Endurance Improvements in Flash-Based Cache
RU2552151C2 (ru) * 2013-09-17 2015-06-10 Общество с ограниченной ответственностью "РЭЙДИКС" Способ контроля корректности записи данных в двухконтроллерной системе хранения данных на массиве энергонезависимых носителей и устройство для его осуществления
US9418131B1 (en) 2013-09-24 2016-08-16 Emc Corporation Synchronization of volumes
US9378106B1 (en) 2013-09-26 2016-06-28 Emc Corporation Hash-based replication
US9342465B1 (en) 2014-03-31 2016-05-17 Emc Corporation Encrypting data in a flash-based contents-addressable block device
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9396243B1 (en) 2014-06-27 2016-07-19 Emc Corporation Hash-based replication using short hash handle and identity bit
US9569303B2 (en) * 2014-08-08 2017-02-14 Kabushiki Kaisha Toshiba Information processing apparatus
US9304889B1 (en) 2014-09-24 2016-04-05 Emc Corporation Suspending data replication
US10025843B1 (en) 2014-09-24 2018-07-17 EMC IP Holding Company LLC Adjusting consistency groups during asynchronous replication
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10324635B1 (en) 2016-03-22 2019-06-18 EMC IP Holding Company LLC Adaptive compression for data replication in a storage system
US10310951B1 (en) 2016-03-22 2019-06-04 EMC IP Holding Company LLC Storage system asynchronous data replication cycle trigger with empty cycle detection
US9959063B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Parallel migration of multiple consistency groups in a storage system
US10095428B1 (en) 2016-03-30 2018-10-09 EMC IP Holding Company LLC Live migration of a tree of replicas in a storage system
US10565058B1 (en) 2016-03-30 2020-02-18 EMC IP Holding Company LLC Adaptive hash-based data replication in a storage system
US9959073B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Detection of host connectivity for data migration in a storage system
US9983937B1 (en) 2016-06-29 2018-05-29 EMC IP Holding Company LLC Smooth restart of storage clusters in a storage system
US10083067B1 (en) 2016-06-29 2018-09-25 EMC IP Holding Company LLC Thread management in a storage system
US10152232B1 (en) 2016-06-29 2018-12-11 EMC IP Holding Company LLC Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system
US10048874B1 (en) 2016-06-29 2018-08-14 EMC IP Holding Company LLC Flow control with a dynamic window in a storage system with latency guarantees
US10013200B1 (en) 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10691354B1 (en) 2018-01-31 2020-06-23 EMC IP Holding Company LLC Method and system of disk access pattern selection for content based storage RAID system
WO2019183958A1 (zh) * 2018-03-30 2019-10-03 华为技术有限公司 数据写入方法、客户端服务器和系统
US10540231B2 (en) 2018-04-04 2020-01-21 International Business Machines Corporation Log-structured array (LSA) partial parity eviction and reassembly
CN110413205B (zh) * 2018-04-28 2023-07-07 伊姆西Ip控股有限责任公司 用于向磁盘阵列进行写入的方法、设备和计算机可读存储介质
US10437670B1 (en) 2018-05-24 2019-10-08 International Business Machines Corporation Metadata hardening and parity accumulation for log-structured arrays

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4092732A (en) * 1977-05-31 1978-05-30 International Business Machines Corporation System for recovering data stored in failed memory unit
US4989205A (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
US5072378A (en) * 1989-12-18 1991-12-10 Storage Technology Corporation Direct access storage device with independently stored parity
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5166939A (en) * 1990-03-02 1992-11-24 Micro Technology, Inc. Data storage apparatus and method
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
US5155845A (en) * 1990-06-15 1992-10-13 Storage Technology Corporation Data storage system for providing redundant copies of data on different disk drives
US5375128A (en) * 1990-10-18 1994-12-20 Ibm Corporation (International Business Machines Corporation) Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders
US5155835A (en) * 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5278838A (en) * 1991-06-18 1994-01-11 Ibm Corp. Recovery from errors in a redundant array of disk drives
US5237658A (en) * 1991-10-01 1993-08-17 Tandem Computers Incorporated Linear and orthogonal expansion of array storage in multiprocessor computing systems
US5297258A (en) * 1991-11-21 1994-03-22 Ast Research, Inc. Data logging for hard disk data storage systems
US5287462A (en) * 1991-12-20 1994-02-15 Ncr Corporation Bufferless SCSI to SCSI data transfer scheme for disk array applications
US5333305A (en) * 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
US5289418A (en) * 1992-02-14 1994-02-22 Extended Systems, Inc. Memory apparatus with built-in parity generation
US5410667A (en) * 1992-04-17 1995-04-25 Storage Technology Corporation Data record copy system for a disk drive array data storage subsystem
US5408644A (en) * 1992-06-05 1995-04-18 Compaq Computer Corporation Method and apparatus for improving the performance of partial stripe operations in a disk array subsystem
US5392244A (en) * 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management

Also Published As

Publication number Publication date
JP3753461B2 (ja) 2006-03-08
JPH08249134A (ja) 1996-09-27
US20030148960A1 (en) 2003-08-07
DE69533058D1 (de) 2004-06-24
EP0726520A3 (de) 2000-03-29
US5537534A (en) 1996-07-16
EP0726520B1 (de) 2004-05-19
EP0726520A2 (de) 1996-08-14

Similar Documents

Publication Publication Date Title
DE69533058T2 (de) Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung
DE69532030T2 (de) Speicherplattenanordnung mit Ersatzbetriebsmitteln in Betrieb und Verfahren zur Verwendung von Ersatzbetriebsmitteln zum Speichern von Benutzerdaten
DE69534527T2 (de) Verfahren zur Verwendung von nicht-aneinandergrenzenden reservierten Speicherplatz zur Datenmigration in einem hierarchischen redundanten Datenspeichersystem
DE69534057T2 (de) Verfahren zur Vermeidung der Über-Zuteilung virtueller Kapazität in einem redundanten hierarchischen Datenspeichersystem
DE69533575T2 (de) Verfahren der und System zur Speicherplatzreservierung für Datenmigration in einem hierarchischen Datenspeicherungssystem durch dynamische Berechnung maximalen Speicherplatzes für Spiegelredundanz
DE69534363T2 (de) Verfahren um Festplatten zu einer Festplattenanordnung hinzuzufügen und gleichzeitig die Datenerreichbarkeit zu gewährleisten
DE69533764T2 (de) Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
DE69533077T2 (de) Speichersystem mit hierarchischer Speicherplattenanordnung und Abbildungsspeicher zur Dauerspeicherung der virtuellen Abbildungsinformation
DE69533570T2 (de) Verfahren und System zum Erkennen von Datenverlust in einem hierarchischen Datenspeichersystem
DE69631106T2 (de) On-line-Rekonfiguration einer Speicherplattenanordnung
DE69735400T2 (de) Speicherplattenanordnung
DE69738159T2 (de) Anordnung und Verfahren zur Wiederzuteilung von logischen an physikalische Plattengeräte unter Verwendung eines Speichersteuergerätes
DE69833815T2 (de) Verbesserter Disk-Log mit verteiltem Schreibsystem
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE69724834T2 (de) System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher
DE69626569T2 (de) Datenkompressionsverfahren und Struktur für eine Speichereinheit mit direktem Zugriff
DE19983218B4 (de) Verfahren zum Codieren von Datensignalen zur Speicherung
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112013006504B4 (de) Speichersystem und Datenverwaltungsverfahren
DE4143072C2 (de) Blockweise löschbarer nicht-flüchtiger Halbleiterspeicher
DE112011100112B4 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE102006005876A1 (de) Flashspeicher-Steuervorrichtung, Vorrichtung zum Steuern eines Flashspeichers, Flashspeicher-System und Verfahren zum Verwalten von Abbildungsdaten eines Flashspeichers
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition