DE69533570T2 - Verfahren und System zum Erkennen von Datenverlust in einem hierarchischen Datenspeichersystem - Google Patents

Verfahren und System zum Erkennen von Datenverlust in einem hierarchischen Datenspeichersystem Download PDF

Info

Publication number
DE69533570T2
DE69533570T2 DE69533570T DE69533570T DE69533570T2 DE 69533570 T2 DE69533570 T2 DE 69533570T2 DE 69533570 T DE69533570 T DE 69533570T DE 69533570 T DE69533570 T DE 69533570T DE 69533570 T2 DE69533570 T2 DE 69533570T2
Authority
DE
Germany
Prior art keywords
data
raid
virtual
data loss
region
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
Application number
DE69533570T
Other languages
English (en)
Other versions
DE69533570D1 (de
Inventor
Michael Brent Boise Jacobson
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 Development Co LP
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 Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE69533570D1 publication Critical patent/DE69533570D1/de
Application granted granted Critical
Publication of DE69533570T2 publication Critical patent/DE69533570T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • 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
    • G06F11/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1883Methods for assignment of alternate areas for defective areas
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich auf Verfahren zum Erfassen eines Datenverlusts in einem hierarchischen Datenspeichersystem. Diese Erfindung bezieht sich ferner auf ein Datenspeichersystem, das Datenverlusterfassungskapazitäten aufweist.
  • Computersysteme werden in Bezug auf Geschwindigkeit, Zuverlässigkeit und Verarbeitungsfähigkeit ständig verbessert. Folglich sind Computer in der Lage, komplexere und anspruchsvollere Anwendungen zu handhaben. Während jedoch Computer immer besser werden, nehmen auch die Leistungsanforderungen zu, die an Massenspeicher- und Eingabe-/Ausgabevorrichtungen (I-/O-Vorrichtungen) gestellt werden. Allgemein weist die Eingabe-/Ausgabe-Leistungsfähigkeit Schwierigkeiten auf, mit den wachsenden Fähigkeiten der Computer Schritt zu halten.
  • Die Massenspeicherindustrie steht vor zwei Hauptherausforderungen: (1) die I-/O-Leistungsfähigkeit so zu verbessern, dass der Datenzugriff nicht zu einem einschränkenden Faktor für eine Anwendung wird, und (2) einen Zugriff auf Online-Daten auf einem Zuverlässigkeitsniveau zu liefern, das die angenommenen Lebensdauern der Computersysteme, die dieselben verarbeiten, deutlich überschreitet. Siehe THE RAIDBook: A Source Book for RAID Technology, das am 9. Juni 1993 durch RAID Advisory Board, Lino Lakes, Minnesota, veröffentlicht wurde. Es ist wünschenswert, dass Speichervorrichtungen diese Ziele auf kostengünstige Weise erreichen.
  • 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 Speichersystems gespeichert. Bei einem Plattenarray werden die identischen Daten beispielsweise auf zwei getrennten Plat ten 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.
  • Ein Problem bei herkömmlichen Plattenarrays betrifft den Datenverlust, der sich aus mehreren Ausfällen bzw. Fehlschlägen ergibt. Herkömmliche Plattenarrays sind entworfen, um eine hohe Datenzuverlässigkeit aufrechtzuerhalten, indem sie einzelne Ausfälle ohne einen Datenverlust ermöglichen. Dies wird erreicht, indem ein gewisser Redundanzpegel in den gespeicherten Daten aufrechterhalten wird. Ungünstigerweise können mehrere Ausfälle bei bestimmten Kombinationen zu einem Verlust von Daten in allen Plattenarrays führen. Somit ist es wünschenswert, mehrere Ausfälle bei redundanten Plattenarraysystemen zu vermeiden.
  • Ein weiteres Problem besteht darin, dass, nachdem ein Datenverlust aufgetreten ist, herkömmliche Plattenarrays oft nicht jedes Mal, wenn die verlorenen Daten gelesen werden, eine Erfassung des Datenverlustes liefern. Auch wenn eine gewisse Erfassung vorgesehen ist, melden die Plattenarrays tendenziell einen höheren Datenverlust als denjenigen, der tatsächlich stattgefunden hat. Beispielsweise können die herkömmlichen Plattenarrays einen Datenverlust auf einer gesamten Speicherplatte melden, obwohl der tatsächliche Verlust auf einen kleinen Teilsatz der gespeicherten Daten, z. B. einige wenige Sektoren auf der Speicherplatte, beschränkt gewesen sein kann. Folglich werden die ansonsten intakten Daten auf der Speicherplatte unnötigerweise dem Benutzer unzugänglich gemacht.
  • Die US-A-5,166,939 bezieht sich auf eine Datenspeichervorrichtung und ein Datenspeicherverfahren und lehrt eine spezifische Konfiguration einer Massenspeichervorrichtung, die aus einer Mehrzahl von physischen Speichervorrichtungen besteht. Gemäß diesem Konfigurationsschema ist die Vorrichtung in eine oder mehrere Redundanzgruppen unterteilt, wobei jede Redundanzgruppe wiederum in eine oder mehrere Datengruppen unterteilt ist. Jede Datengruppe erstreckt sich lediglich über eine kleine Anzahl von Laufwerken in der Redundanzgruppe, wenn gewünscht wird, eine hohe Anforderungsrate bereitzustellen. Ansonsten erstreckt sich jede Datengruppe über eine große Anzahl von Laufwerken, wenn gewünscht wird, eine hohe Bandbreite bereitzustellen.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zum Überwachen eines Datenverlustes in einem Datenspeichersystem bereitzustellen, das bzw. die lediglich diejenigen Abschnitte des Datenspeichersystems, bei denen der tatsächliche Datenverlust erfolgte, für den Benutzer unzugänglich machen.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und ein Datenspeichersystem gemäß Anspruch 7 gelöst.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung liefert Techniken zum selektiven Nachverfolgen von Bereichen eines Datenverlustes innerhalb der gespeicherten Daten, wenn mehrere Ausfälle zu einem Datenverlust führen. Ein Vorteil ist die Fähigkeit, den Verlust spezifischer Datenbereiche zu erfassen und zu melden, wenn dieselben gelesen werden, während auf den Rest der in dem Plattenarray gespeicherten Daten weiterhin Zugriff gewährt wird. Die Bereiche des Datenverlustes können repariert werden, ohne die Konfiguration des Plattenarrays zu stören, und gleichzeitig kann die Verfügbarkeit der restlichen gespeicherten Daten aufrechterhalten werden, indem die Bereiche der verlorenen Daten neu geschrieben werden.
  • Ein Verfahren dieser Erfindung betrifft ein Überwachen eines Datenverlustes in einem hierarchischen Datenspeichersystem, das mehrere Speicherplatten aufweist. Diese Speicherplatten definieren einen physischen Speicherraum. Der physische Speicherraum wird in einen ersten virtuellen Speicherraum abgebildet, der den physischen Speicherraum als mehrere RAID-Bereiche präsentiert, die Daten gemäß verschiedenen RAID-Ebenen, z. B. RAID-Ebene 1 (Spiegelredundanz) oder RAID-Ebene 5 (Paritätsredundanz) speichern. Einzelne RAID-Bereiche erstrecken sich über mehrere Speicherplatten und umfassen eine Region eines physischen Speicherraums auf einzelnen Speicherplatten. Wenn alle Regionen betreibbar sind und Daten auf denselben gespeichert und von denselben wiedergewonnen werden können, wird der zugeordnete RAID-Bereich als „optimal" eingestuft. Der erste virtuelle Speicherraum wird in einen zweiten virtuellen Speicherraum abgebildet, der den physischen Speicherraum als mehrere virtuelle Blöcke präsentiert.
  • Die RAID-Bereiche werden überwacht, um einen Datenverlust zu erfassen. Auf ein Erfassen eines Datenverlusts in einer Region eines RAID-Bereichs hin wird diese erste Region als ungültig markiert. Infolge des Verlusts dieser Region kann das Datenspeichersystem dem RAID-Bereich keine Redundanz mehr gewährleisten. Der gesamte RAID-Bereich, der die ungültige Region enthält, wird somit als „verschlechtert" klassifiziert, wodurch Daten in dem RAID-Bereich gespeichert und wiedergewonnen werden können, jedoch ohne Redundanz.
  • Auf ein Erfassen eines Datenverlusts in einem Abschnitt einer zweiten Region des „verschlechterten" RAID-Bereichs hin bestimmt das Datenspeichersystem den Umfang des Datenverlusts. Falls der Datenverlust vergleichsweise geringfügig ist, identifiziert das Datenspeichersystem den virtuellen Block, der auf den Abschnitt der zweiten Region abgebildet ist, und markiert ihn als defekt. Die verbleibenden Abschnitte der zweiten Region und die verbleibenden Regionen in dem verschlechterten RAID-Bereich können immer noch verwendet werden. Die Adresse des virtuellen Blocks wird in einer virtuellen Datenverlusttabelle gespeichert, um anzugeben, dass in diesem Block gespeicherte Daten unzuverlässig sind.
  • Wenn dagegen der Datenverlust in der zweiten Region beträchtlich ist oder wenn die virtuelle Datenverlusttabelle voll wird, bewirkt der Datenverlust, dass der gesamte RAID-Bereich als „tot" eingestuft wird. Daten können nicht von den ungültigen Regionen innerhalb des toten RAID-Bereichs wiedergewonnen werden.
  • 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 Speichersystems gemäß dieser Erfindung.
  • 2 ist eine schematische Veranschaulichung, die eine Datenspeicherung auf RAID-Ebene 1 zeigt;
  • 3 ist eine schematische Veranschaulichung, die eine Datenspeicherung auf RAID-Ebene 5 zeigt; und
  • 4 ist eine schematische Veranschaulichung einer Speicherabbildungsanordnung dieser Erfindung, bei der zwei virtuelle Speicherräume in Bezug auf einen physischen Speicherraum abgebildet werden.
  • 5 ist ein schematisches Blockdiagramm von Komponenten und eines Steuerflusses, die auf eine Datenverlusterfassung bezogen sind, gemäß dieser Erfindung;
  • 6 ist eine schematische Veranschaulichung eines Speicherraums auf mehreren Speicherplatten und zeigt RAID-Bereiche, die auf den physischen Speicherraum abgebildet sind, um Regionen von einzelnen Speicherplatten zu umfassen.
  • 7 ist ähnlich wie 6, zeigt jedoch auch eine zweite virtuelle Ansicht, die auf den physischen Speicherbereich abgebildet ist. 7 veranschaulicht ein Verfahren, bei dem ein Datenverlust, der in einer Region eines physischen Speicherraums erfasst wird, in dem zugeordneten virtuellen Block an der zweiten virtuellen Ansicht identifiziert wird.
  • 8 zeigt die Region eines erfassten Datenverlustes in 7 ausführlicher, sowie die Abbildung des defekten Abschnitts dieser Region durch die zwei virtuellen Ansichten. 8 veranschaulicht fer ner die Verwendung einer virtuellen Datenverlusttabelle.
  • 9 und 10 sind ein Flussdiagramm eines Verfahrens zum Überwachen eines Datenverlusts gemäß dieser Erfindung.
  • 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.
  • 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 elektronische 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 Daten 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 14a bezeichnet ist, und aus der Plattenarraysteuerung B 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 Speicherräume, einschließlich seines physischen Speicherraums und eines oder mehrerer virtueller Speicherräume, charakterisiert werden. Diese verschiedenen Speicheransichten sind durch Abbildungstechniken verbunden. Beispielsweise kann der physische Speicherraum des Plattenarrays in einen virtuellen Speicherraum abgebildet werden, der Speicherbereiche gemäß den verschiedenen Datenzuverlässigkeitsebenen darstellt. Manche Bereiche in dem virtuellen Speicherraum 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 Speicherräume 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 ange ordnet 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 nicht-flü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 voneinander 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 Datenspei chersystem 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 Speicherraum 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 gleich großen Segmenten an Speicherraum 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 wer den 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 Speicherraum 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 Speicherraum wird ein Abschnitt dieses Speicherraums 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 Speicherraums RAID-Bereiche zu bilden. Zusätzlich wird eine weitere (durch einen Host definierte) Ansicht eines Speicherraums 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 Speicherraums des Datenspeichersystems 10 als mehrere Lagen eines abgebildeten virtuellen Speicherraums. Jedes vertikal verlängerte Rechteck in dem Diagramm stellt eine Ansicht des physischen Speicherraums dar. Bei diesem Diagramm wird auf den physischen Speicherraum 34 durch zwei virtuelle Speicheransichten 40 und 50 Bezug genommen. Der physische Speicherraum 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 Speicherraums 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 Speicherraum 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 Speicherraum der Platten wird in eine erste virtuelle Zwischenansicht 40 der RAID-Ebene des physischen Speicherraums 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 Speicherraum darstellt. Die physische Konfiguration und RAID-Ansichten des Speicherraums entziehen sich der Anwendungsansicht.
  • Der RAID-Bereich-Speicherraum 40 ist die Speicheransicht, die den Spiegel- und Paritätsspeicherraum 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 Speicherraum 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 Speicherraum 34 des Plattenarrays einnehmen, müssen aber nicht. Dementsprechend kann während bestimmter Anwendungen ein unbenutzter und unbezeichneter Speicherraum vorliegen, der keinem bestimmten RAID-Bereich entspricht. Ein solcher Speicherraum 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 Speicherraum wird in eine zweite virtuelle Vorderes-Ende-Ansicht 50 der Anwendungsebene abgebildet, die eine Speicheransicht ist, wie sie durch den Benutzer oder das Hostanwendungsprogramm definiert 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 Speicherraum auf den Speicherplatten 12 angibt. Der virtuelle Speicherraum 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 Blockspeicherraum 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 Speicherraum 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 Plattenspeicherraums 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 Front-End-Ansicht 50 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 Speicherraums 50 der Anwendungsebene Bezug auf zugeordnete Zuweisungsblöcke 45 in dem Paritäts-RAID-Bereich 44, die in dem Bereich A1 des physi schen Speicherraums 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 Speicherraums 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 gemäß der Spiegelredundanz gespeichert wurden, nun gemäß einer Paritätsredundanz gespeichert, oder umgekehrt. Als abschließenden Schritt wird die Abbildung 54 des virtuellen Speicherraums 50 der Anwendungsebene auf den virtuellen Speicherraum 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 Speicherraum 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 Speicherraum 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 Speicherraums 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 Blockspeicherraum 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 aus neun Schritten bestehenden Sequenzen liefern Beispiele dessen, wie das Speichersystem dieser Erfindung arbeiten kann, um Daten zwischen zwei verschiedenen Redundanzebenen zu bewegen.
  • Das hierarchische Redundanzdatenspeichersystem dieser Erfindung ist entworfen, um einen Datenverlust zu minimieren. Ein Datenverlust tritt auf einer Speicherplatte auf, wenn ein Ereignis oder eine Sequenz von Ereignissen stattfinden, die implizieren, dass die Daten, die an einer bestimmten Stelle auf der Platte gespeichert wurden, versehentlich geändert wurden. Nach einem derartigen Ereignis ist es ungewiss, ob die an der betreffenden Stelle gespeicherten Daten noch dieselben sind, die sie vor dem Ereignis waren. Speicherplatten unterstützen in der Regel nicht einen Mechanismus zur Erinnerung daran, ob ein derartiges Ereignis für jede mögliche Speicherstelle aufgetreten ist. Vielmehr melden die Speicherplatten einfach, ob auf die Speicherstelle erfolgreich zugegriffen werden kann (Lesen oder Schreiben), wenn ein Zugriffsversuch unternommen wird. Nach einem Datenverlustereignis sind die Daten selbst nicht mehr verlässlich, auch wenn Versuche, auf die Speicherstelle, die die Daten enthielt, zuzugreifen, erfolgreich sind.
  • Durch die Plattenarraysteuerung erkannte Datenverlustereignisse umfassen fehlgeschlagene Schreibzugriffe und Ersatzposten. Ein fehlgeschlagener Schreibzugriff wird als ein Datenverlustereignis angesehen, da ein durch die Speicherplatte gemeldeter Schreibausfall bzw. Schreibfehlschlag angibt, dass ein Versuch unternommen wurde, die Daten in die zugeordnete Speicherstelle auf der Platte zu schreiben, dass jedoch ein Teil oder die gesamten Daten in der Tat nicht geschrieben wurden. Folglich besteht eine Ungewissheit bezüglich des Inhalts der Speicherstelle.
  • Ein Ersatz wird üblicherweise dann auf einer Speicherplatte durchgeführt, wenn nicht mehr erfolgreich auf eine Speicherstelle zugegriffen werden kann. Aus diesem Grund ist es in den meisten Plattensteuerungsimplementierungen implizit enthalten, dass kein Versuch unternommen werden kann, den Inhalt einer Speicherstelle zu kopieren, bei der man identifiziert hat, dass sie während der Ersetzungsoperation zu einer neuen Speicherstelle ersetzt wird. Im Verlauf des Ersetzens kann die Speicherplatte auch andere Speicherstellen identifizieren und kommunizieren, bei denen die Inhalte nicht kopiert wurden, weil sie nicht gelesen werden konn ten. Jegliche Speicherstelle, die ersetzt, aber nicht kopiert wurde, ist ein Auftretensfall eines Datenverlusts, da man weiß, dass die nun an der neuen Speicherstelle enthaltenen Daten nicht dieselben sind wie die an der alten Speicherstelle enthaltenen Daten.
  • Bei dem hierarchischen Datenspeichersystem dieser Erfindung gibt es zwei Arten von Datenverlust, die auftreten können: ein „primitiver" Datenverlust und ein „zusammengesetzter" Datenverlust. Ein primitiver Datenverlust ist der Verlust eines physischen Datenfragments von einer Speicherplatte, die in dem Raum enthalten ist, der zur Speicherung von Benutzerdaten zur Verfügung steht. Er tritt ein, wenn die Plattenarraysteuerung 14 bestimmt, dass ein spezifischer Teil der auf einer Speicherplatte gespeicherten Daten nicht mehr korrekt oder nützlich ist. Ansprechend darauf unternimmt die Steuerung eine irreversible Aufzeichnung des Verlustes, so dass diese Daten nie mehr wieder genutzt werden können. Ein zusammengesetzter Datenverlust ist ein Verlust virtueller Daten, nachdem alle Abbildungen und Redundanzen angewendet wurden, der sich aus einer Kombination von primitiven Datenverlusten ergibt.
  • 5 zeigt, wie das Datenspeichersystem 10 mit einem Datenverlustdetektor 60 implementiert ist, der den Umfang eines zusammengesetzten Datenverlusts minimieren möchte. Der Datenverlustdetektor 60 verfolgt einen Datenverlust, der in einzelnen RAID-Bereichen auftritt, nach. Der Datenverlustdetektor 60 überwacht einzelne Regionen 35, die RAID-Bereichen zugeordnet sind, um zu erfassen, wenn in einer Region ein primitiver Datenverlust aufgetreten ist. Vorzugsweise ist der Datenverlustdetektor 60 in Firmware in der Plattenarraysteuerung 14 implementiert, ist in 5 jedoch separat veranschaulicht, um eine Erörterung des Steuerflusses zu erleichtern.
  • Der Datenverlustdetektor umfasst eine Regionsynchronisationstabelle 62, die mehrere Indikatoren enthält, die dar stellen, ob einzelne Regionen (1) gültig sind und keinen Datenverlust erfahren haben oder (2) ungültig sind und einen Datenverlust erfahren haben. Bei einer bevorzugten Implementierung bestehen die Indikatoren aus einem einzelnen Synchronisationsbit für jede zugeordnete Region. Ein Synchronisationsbit eines ersten binären Werts, z. B. einer binären „1", gibt an, dass die entsprechende Region gültig ist und keinen Datenverlust erfahren hat. Umgekehrt gibt ein Synchronisationsbit eines zweiten binären Werts, z. B. einer binären „0", an, dass die entsprechende Region ungültig ist und einen Datenverlust erfahren hat. Da lediglich ein einzelnes Bit vorliegt, um den Synchronisationszustand für die gesamte Region abzubilden, wird die gesamte Region als ungültig oder „nicht synchron" angesehen, wenn das Synchronisationsbit eine binäre „0" ist.
  • Wie in 6 veranschaulicht ist, kann jeder RAID-Bereich auf der Basis des Status der in demselben enthaltenen Regionen in einem von drei Zuständen klassifiziert werden. Ein RAID-Bereich wird als „optimal" eingestuft, wenn alle Regionen gemäß der Angabe aller Synchronisationsbits, die eine binäre „1" sind, gültig sind. Der Paritäts-RAID-Bereich RAN–1 ist optimal, da alle Regionen R0, R1, R2 und R3 auf dem physischen Speicherbereich A4 des Plattenarrays, auf den er abbildet, gültig sind. Daten, die in diesem RAID-Bereich gespeichert sind, können mit voller Redundanz gespeichert und wiedergewonnen werden.
  • Ein RAID-Bereich wird als „verschlechtert" klassifiziert, wenn eine Region als ungültig oder nicht synchron identifiziert wurde. Der Paritäts-RAID-Bereich RAN ist ein Beispiel eines verschlechterten Bereichs, der darauf zurückzuführen ist, dass die Region R6 ungültig ist (wie durch das durch die Region verlaufende „X" dargestellt ist). Das der Region R6 entsprechende Synchronisationsbit ist bei einer binären „0". In dem „verschlechterten" RAID-Bereich sind immer noch Daten verfügbar, es liegt jedoch keine vollständige Redundanz mehr vor.
  • Ein RAID-Bereich wird als „tot" eingestuft, wenn zwei oder mehr Regionen für ungültig erklärt wurden. Der Paritäts-RAID-Bereich RAN+1 ist ein Beispiel eines toten Bereichs, da die Regionen R8 und R11 beide als ungültig markiert wurden. Von den ungültigen Regionen innerhalb eines toten RAID-Bereichs können keine Daten wiedergewonnen werden, obwohl auf Daten in den verbleibenden Regionen des toten RAID-Bereichs direkt zugegriffen werden kann. Ein Kombinationsdatenverlust erfolgte in einem toten RAID-Bereich, weil beide redundanten Kopien zumindest eines Teils der Daten verloren gingen.
  • Das Datenspeichersystem 10 versucht, die Schaffung toter RAID-Bereiche zu vermeiden. Demgemäß ist der Datenverlustdetektor 60 konfiguriert, um einen oder mehrere virtuelle Blöcke in dem zweiten virtuellen Speicherraum zu identifizieren, die auf die Sektoren der für den Datenverlust verantwortlichen Region abgebildet sind. Diese virtuellen Blöcke werden als defekt gekennzeichnet, um eine aktuelle Aufzeichnung des Datenverlusts zu bewahren. Dadurch, dass einzelne virtuelle 64K-Blöcke und Sektoren in denselben nachverfolgt werden, kann das Datenspeichersystem spezifische Datenverlustsektoren auf selektivere Weise identifizieren, statt die gesamte 1M-Region für ungültig zu erklären. Andere Abschnitte der Region können offen für einen Datenzugriff bleiben.
  • Der Datenverlustdetektor 60 umfasst eine virtuelle Datenverlusttabelle 64 und eine aktive Schreibliste 66. Die virtuelle Datenverlusttabelle 64 speichert die virtuellen Adressen der defekten virtuellen Blöcke, bzw. spezifischer die Adressen spezifischer Sektoren innerhalb der virtuellen Blöcke. Die Tabelle zeichnet im Rahmen einer Anstrengung, tote RAID-Bereiche zu vermeiden, einen Kombinationsdatenverlust auf der Virtueller-Block-Ebene auf. Solange in der Tabelle Raum ist, kann ein toter RAID-Bereich vermieden werden, indem die defekten virtuellen Blöcke aufgezeichnet werden, im Gegensatz zu einem Markieren der gesamten Region als ungültig, was ansonsten dazu führen könnte, den ganzen RAID-Bereich als tot zu klassifizieren.
  • 7 und 8 demonstrieren die Verwendung der virtuellen Datenverlusttabelle 64. Angenommen, dass der RAID-Bereich RAN insofern „verschlechtert" wurde, als die Region R6 bereits für ungültig erklärt wurde. Auf ein Erfassen eines Datenverlusts in einer zweiten Region R7 des verschlechterten RAID-Bereichs hin verfolgt das RAID-Verwaltungssystem 16 die Stelle des Datenverlusts über die Abbildungsinformationen durch die erste virtuelle Ansicht 40 bzw. die virtuelle Ansicht 40 auf RAID-Ebene und bis zu der zweiten virtuellen Ansicht 50 bzw. der virtuellen Ansicht 50 auf Anwendungsebene (7). Die virtuellen Blöcke bei dieser virtuellen Ansicht auf Anwendungsebene, die dem Datenverlust zugeordnet sind, können dann identifiziert werden.
  • 8 zeigt diesen Prozess ausführlicher. Angenommen, dass die Region R7 die Größe eines Megabytes aufweist. Dies entspricht 2048 512-Byte-Sektoren auf der physischen Plattenlaufwerksvorrichtung. Ferner sei angenommen, dass lediglich ein Sektor 70 in der gesamten Region die Ursache der fehlerhaften Daten ist. Die Adresse dieses Sektors wird durch den Paritäts-RAID-Bereich 44 auf einen virtuellen Block 53 in einer virtuellen Ansicht 50 auf Anwendungsebene abgebildet. Ein Teil der Daten D_VB in diesem virtuellen Block ist auf Grund des Ausfalls im Sektor 70 fehlerhaft. Demgemäß ist die Adresse des Sektors in dem zugeordneten virtuellen Block in der virtuellen Datenverlusttabelle 64 aufgezeichnet.
  • Die virtuelle Datenverlusttabelle 64 ist vorzugsweise aufgebaut, um eine kleine Anzahl von Regionen zu enthalten, z. B. ein bis drei 1-Megabyte-Regionen. Diese Größe entspricht etwa 16–48 virtuellen 64K-Blöcken. Eine mögliche Implementierung ist eine zweistufige Tabelle, wobei eine Stufe einen Adressierungsindex der 16–48 virtuellen Blöcke enthält und eine zweite Stufe eine zugeordnete Bitabbildung enthält, die die Sektoren, die jedem virtuellen Blockeintrag zugeordnet sind, darstellt. Da pro virtuellem 64K-Block 128 512-Byte-Sektoren vorliegen, ist die Bitabbildung vorzugsweise eine 128-Bit-Abbildung, bei der jeder binäre Eintrag angibt, ob der entsprechende Sektor des indexierten virtuellen Blocks ungültige Daten enthält.
  • Jede Aufzeichnung in der Tabelle 64 identifiziert eine Bandbreite eines virtuellen Adressierungsraums in dem System. Alle Leseoperationen werden bezüglich der Einträge in der virtuellen Datenverlusttabelle 64 geprüft. Jegliche Lesezugriffe, die eine identifizierte Datenverlustbandbreite überlappen, geben einen nicht wiedergewonnenen Fehler zurück. Abgesehen von einem Datenverlust in dem einzelnen virtuellen Block kann die Plattenarraysteuerung jedoch fortfahren, Daten aus anderen Sektoren in der Region R7 sowie aus den verbleibenden gültigen Regionen R4 und R5 zu lesen.
  • Dieses Verfahren ist vorteilhaft, da die gesamte 1M-Region nicht für ungültig erklärt wird, was den RAID-Bereich RAN tot machen würde. Somit wird eine Entstehung eines toten RAID-Bereichs vermieden. Während normaler Leseoperationen wird die Liste in der Tabelle 64 konsultiert, um zu bestimmen, ob die gelesenen Daten gültig sind oder aus einem defekten virtuellen Block gelesen werden. Das Datenspeichersystem kann die Bandbreiten virtueller Daten, die verloren gingen, zum Zwecke der Überprüfung durch den Benutzer auflisten.
  • Der aktive Schreibspeicher 66 unterhält eine Liste aller bevorstehenden aktiven Schreiboperationen in dem Datenspeichersystem. Wenn ein Schreibvorgang eingeleitet wird, wird er in dem aktiven Schreibspeicher 66 aufgelistet; und wenn der Schreibvorgang abgeschlossen ist, wird er aus der Liste entfernt. Das Datenspeichersystem kann versuchen, Daten zu einem defekten virtuellen Block zu schreiben, der in der virtuellen Datenverlusttabelle 64 aufgelistet ist. Dies bewirkt, dass der defekte virtuelle Block aus der virtuellen Datenverlusttabelle 64 entfernt wird, es sei denn, die Daten gingen verloren, als der Schreibvorgang bevorstand und in dem aktiven Schreibspeicher 66 aufgelistet war. Eine Bandbreitenüberlappungsprüfung wird durchgeführt, nachdem Lese- und Schreibvorgänge abgeschlossen sind, um eine gleichzeitige Aktivität, die eventuell neue virtuelle Blockbandbreiten in der Datenverlusttabelle erzeugt hat, zu berücksichtigen. Ein abgeschlossener Schreibvorgang kann einen Datenverlust nicht aus der Tabelle entfernen, wenn der Verlust auftrat, als der Schreibvorgang im Gange war. Der aktive Schreibspeicher 66 ermöglicht diese Prüfprozedur.
  • Bei dem bevorzugten Ausführungsbeispiel sind die Regionsynchronisationstabelle 62 und die virtuelle Datenverlusttabelle 64 in NVRAMs 21a und 21b in der Plattenarraysteuerung 14 resident und in denselben gebildet. Der aktive Schreibspeicher 66 ist in einem flüchtigen RAM der Plattenarraysteuerung vorgesehen.
  • Unter Bezugnahme auf 510 werden nun verschiedene Verfahren zum Überwachen eines Datenverlusts in dem hierarchischen Redundanzdatenspeichersystem 10 dieser Erfindung beschrieben.
  • Die ersten drei Schritte in dem Flussdiagramm der 910 richten die zu Grunde liegende RAID-Umgebung ordnungsgemäß ein. Bei Schritt 200 wird der physische Speicherraum 34 in einen ersten virtuellen Speicherraum 40 bzw. virtuellen Speicherraum 40 auf RAID-Ebene abgebildet, der den physischen Speicherraum als mehrere RAID-Bereiche präsentiert, die Daten gemäß verschiedener RAID-Ebenen, z. B. RAID-Ebenen 1 und 5, speichern. Die RAID-Bereiche werden anfänglich als „optimal" eingestuft, da noch keine Defekte erfasst wurden. Bei Schritt 202 wird der erste virtuelle Speicherraum in einen zweiten virtuellen Speicherraum 50 bzw. virtuellen Speicherraum 50 auf Anwendungsebene abgebildet, der den physischen Speicherraum als mehrere virtuelle Blöcke präsentiert.
  • Die RAID-Bereiche werden anschließend während Systemoperationen durch den Datenverlustdetektor 60 überwacht, um einen primitiven Datenverlust zu erfassen (Schritt 206). Bei dem Entscheidungsschritt 208 wird bestimmt, ob ein Abschnitt einer Region innerhalb eines RAID-Bereichs verloren ging. Falls dies nicht der Fall ist, setzt der Prozess die Überwachung fort, bis ein Datenverlust erfasst wird. Auf das Erfassen eines Datenverlusts hin wird bestimmt, ob der Verlust in einer Region eines „optimalen" RAID-Bereichs auftrat, was bedeutet, dass die erfasste Region die erste Region in ihrem RAID-Bereich wäre, in der ein Datenverlust auftritt (Schritt 210). Wenn sie die erste Region ist, wird die Region als ungültig markiert, indem das entsprechende Synchronisationsbit in der Regionsynchronisationstabelle 62 auf eine binäre „0" eingestellt wird (Schritt 212). Bei Schritt 214 wird der RAID-Bereich dann als „verschlechtert" klassifiziert. Der RAID-Bereich RAN in 6 stellt einen „verschlechterten" RAID-Bereich bildlich dar.
  • Bei Schritt 216 wird dem Benutzer eine Warnung gemeldet, dass eine Region für ungültig erklärt wurde. Dies erfolgt vorzugsweise dadurch, dass eine Nachricht über eine Schnittstelle 17 an den Hostcomputer gesendet wird (1). Diese Nachricht könnte auf einem Monitor angezeigt werden, um den Benutzer auf den Redundanzverlust aufmerksam zu machen. Auf diese Weise meldet diese Erfindung einen Datenverlust zum Zeitpunkt des Auftretens und gibt den Umfang des Verlustes spezifisch an.
  • An diesem Punkt muss die Plattenarraysteuerung lediglich ein Adressieren der ungültigen Region vermeiden. Die verbleibenden Regionen innerhalb des „verschlechterten" RAID-Bereichs sowie die verbleibenden RAID-Bereiche können weiterhin frei genutzt werden, um Benutzerdaten zu speichern.
  • Unter Rückkehr zu Schritt 210, falls ein Datenverlust in einer zweiten Region eines bereits „verschlechterten" RAID-Bereichs auftritt, bestimmt das Datenspeichersystem 10 den Umfang des Datenverlusts (Schritt 220, 10). Falls ein beträchtlicher Datenanteil in der zweiten Region verloren ist, wodurch eine vorausgewählte Schwellenquantität überschritten wird, wird die gesamte zweite Region als ungültig markiert, indem ihr zugeordnetes Synchronisationsbit bei Schritt 224 eingestellt wird. Eine beispielhafte Situation für diesen Fall ist eine, bei der die meisten oder alle Daten in der Region verloren gehen. An diesem Punkt stellte man fest, dass zwei Regionen in dem RAID-Bereich ungültig sind, und der gesamte RAID-Bereich wird für „tot" erklärt (Schritt 226). Der RAID-Bereich RAN+1 in 6 ist ein Beispiel eines „toten" RAID-Bereichs. Von den ungültigen Regionen in dem toten RAID-Bereich können keine Daten wiedergewonnen werden. Der sich aus dem toten RAID-Bereich ergebende Datenverlust wird dem Benutzer gemeldet (Schritt 228), indem während jeglichen Zugriffs auf die ungültigen Regionen in dem toten RAID-Bereich eine Meldung auf dem Hostmonitor angezeigt wird. Alternativ dazu kann das Datenspeichersystem mit einem Warnindikator ausgestattet sein, um anzugeben, wenn Daten auf Grund eines toten RAID-Bereichs dauerhaft verloren gehen. Danach werden Benutzerdaten in den verbleibenden RAID-Bereichen gespeichert (Schritt 230).
  • Falls bei Schritt 222 bestimmt wird, dass weniger als ein beträchtlicher Umfang der zweiten Region ausfällt (dass z. B. lediglich ein oder zwei Sektoren ausfallen), wird der virtuelle Block, der auf den Abschnitt der zweiten Region abbildet, bei Schritt 232 identifiziert. Dieser Prozess ist in den 7 und 8 schematisch veranschaulicht und oben erläutert. Der virtuelle Block wird vorübergehend als defekt markiert (Schritt 234) und in die virtuelle Datenverlusttabelle 64 platziert (Schritt 236). Es sei angemerkt, dass der virtuelle Block nicht tatsächlich mit einem Etikett oder dergleichen markiert werden muss, sondern einfach als defekt angegeben wird, indem er zu der Datenverlusttabelle hinzugefügt wird. Das Datenspeichersystem kann ein Warnlicht umfassen, das angibt, wenn die virtuelle Datenverlusttabelle virtuelle Blöcke enthält. Der Datenbereich verbleibt in dem Status „verschlechtert", während andere Regionen in dem RAID-Bereich für eine Datenspeicherung zusammen mit verbleibenden Abschnitten der ausgefallenen zweiten Region zur Verfügung stehen (Schritt 238).
  • Die virtuellen Blöcke bleiben in der Tabelle aufgelistet, bis sie voll ist. Nachdem sie gefüllt ist, ist kein Platz, um die Adressen weiterer defekter virtueller Blöcke aufzuzeichnen. Dementsprechend wird im Rahmen des Entscheidungsschritts 222 bestimmt, ob die virtuelle Datenverlusttabelle voll ist. Falls dies der Fall ist, wird die zweite Region, die den zuletzt identifizierten defekten virtuellen Block enthält, als ungültig markiert, und der gesamte RAID-Bereich wird als tot klassifiziert (Schritte 224 und 226). An diesem Punkt können jegliche anderen virtuellen Blöcke, die in der virtuellen Datenverlusttabelle 64 aufgelistet sind und die dank der Tatsache, dass der RAID-Bereich als tot klassifiziert wurde, eliminiert wurden, aus der Tabelle beseitigt werden, wodurch mehr Raum frei gemacht wird, um Adressen zukünftiger defekter virtueller Blöcke aufzulisten.
  • Bei vielleicht der am stärksten bevorzugten Implementierung speichert der Datenverlustdetektor immer defekte virtuelle Blöcke in der Tabelle, bis sie voll ist, und verzichtet auf die Analyse des Bestimmens des Umfangs des Datenverlusts bei Schritt 220. Bei dieser Implementierung wird zu jeglichem Zeitpunkt, zu dem ein Datenverlust in einer zweiten Region eines verschlechterten RAID-Bereichs erfasst wird, der virtuelle Block identifiziert und in der Tabelle aufgelistet. Bei Schritten 220 und 222 erfolgt kein Schwellen vergleich, um zu bestimmen, ob ein großer oder ein kleiner Teil der Region einen Datenverlust erfahren hat.
  • Es sei erwähnt, dass eine alternative Technik zum Freimachen von Raum in der Datenverlusttabelle darin besteht, die größte Gruppe virtueller Blöcke zu suchen, die sich auf denselben RAID-Bereich beziehen. Der RAID-Bereich kann anschließend für „tot" erklärt werden, und alle virtuellen Blöcke, die mit demselben verwandt sind, können aus der virtuellen Datenverlusttabelle beseitigt werden.
  • 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 (10)

  1. Ein Verfahren zum Überwachen eines Datenverlustes in einem hierarchischen Datenspeichersystem, das mehrere Speicherplatten aufweist, die einen physischen Speicherraum definieren, wobei das Verfahren die folgenden Schritte umfasst: (a) Abbilden des physischen Speicherraums (34) in einen ersten virtuellen Speicherraum (40), der den physischen Speicherraum als mehrere RAID-Bereiche (42, 44) präsentiert, die Daten gemäß verschiedenen RAID-Ebenen speichern, wobei sich einzelne RAID-Bereiche über mehrere Speicherplatten erstrecken und eine Region (35) eines physischen Speicherraums (34) auf einzelnen Speicherplatten aufweisen; (b) Abbilden des ersten virtuellen Speicherraums (40) in einen zweiten virtuellen Speicherraum (50), der den physischen Speicherraum als mehrere virtuelle Blöcke (52, 53) präsentiert; (c) Überwachen der RAID-Bereiche, um einen Verlust von gespeicherten Daten zu erfassen; (d) auf ein Erfassen eines Datenverlustes in einer Region eines RAID-Bereiches hin, Identifizieren eines virtuellen Blocks in dem zweiten virtuellen Speicherraum (50), der über den ersten virtuellen Speicherraum (40) auf einen Abschnitt der Region abgebildet ist; (e) Anzeigen, dass der identifizierte virtuelle Block ein defekter virtueller Block ist; und (f) Fortfahren, verbleibende Abschnitte der Region und verbleibende Regionen in dem RAID-Bereich zu verwenden, um Daten zu speichern.
  2. Ein Verfahren gemäß Anspruch 1, das ferner den zusätzlichen Schritt des Auflistens des defekten virtuellen Blocks in einer virtuellen Datenverlusttabelle (64) umfasst.
  3. Ein Verfahren gemäß Anspruch 1, das ferner den folgenden zusätzlichen Schritt umfasst: Schreiben von Daten in den defekten virtuellen Block; und Entfernen des defekten virtuellen Blocks aus der virtuellen Datenverlusttabelle (64) und Zurückziehen der Anzeige, dass der virtuelle Block defekt ist.
  4. Ein Verfahren gemäß Anspruch 1, bei dem Schritt (d) ein Markieren der identifizierten Region als ungültige Region und ein Klassifizieren des RAID-Bereichs als einen degradierten RAID-Bereich, in dem Daten in diesem RAID-Bereich gespeichert und wiedergewonnen werden können, jedoch ohne Redundanz, umfasst, wobei das Verfahren auf ein Erfassen eines Datenverlustes in einer zweiten Region des degradierten RAID-Bereichs hin ferner den Schritt des Klassifizierens des RAID-Bereichs als einen toten RAID-Bereich, in dem Daten nicht von der ersten und der zweiten Region dieses toten RAID-Bereichs wiedergewonnen werden können, umfasst.
  5. Ein Verfahren gemäß Anspruch 4, das ferner den Schritt des Fortfahrens der Verwendung anderer RAID-Bereiche, die nicht als tot klassifiziert wurden, umfasst.
  6. Ein Verfahren gemäß Anspruch 4, das ferner den Schritt des Meldens, gegenüber einem Benutzer, von Informationen bezüglich eines Datenverlustes infolge der ungültigen Regionen und toten RAID-Bereiche umfasst.
  7. Ein Datenspeichersystem, das folgende Merkmale aufweist: ein Plattenarray (11), das eine Mehrzahl von Speicherplatten (12) aufweist, die einen physischen Speicherraum (34) definieren; eine mit dem Plattenarray (11) gekoppelte Plattenarraysteuerung (14) zum Schreiben von Daten in die und zum Lesen von Daten aus den Speicherplatten (12); ein wirksam mit der Plattenarraysteuerung (14) gekoppeltes RAID-Verwaltungssystem (16) zum Abbilden eines ersten und eines zweiten virtuellen Speicherraums (40, 50) auf den physischen Speicherraum der Speicherplatten, wobei der erste virtuelle Speicherraum (40) den physischen Speicherraum als mehrere RAID-Bereiche (42, 44) präsentiert, die Daten gemäß verschiedenen RAID-Ebenen speichern, wobei sich einzelne RAID-Bereiche über mehrere Speicherplatten erstrecken und eine Region (35) eines physischen Speicherraums (34) auf einzelnen Speicherplatten umfassen, wobei der zweite virtuelle Speicherraum (50) den physischen Speicherraum als mehrere virtuelle Blöcke (52, 53) präsentiert; und einen Datenverlustdetektor (60), um einen Datenverlust, der in einzelnen RAID-Bereichen auftritt, selektiv nachzuverfolgen, wobei der Datenverlustdetektor (60) konfiguriert ist, um einen Datenverlust in einer Region eines RAID-Bereichs zu erfassen und in dem zweiten virtuellen Speicherraum einen defekten virtuellen Block, der auf einen Abschnitt der Region abgebildet ist, zu identifizieren, und wobei die Datenplattensteuerung (14) konfiguriert ist, um eine kontinuierliche Verwendung der verbleibenden Abschnitte der Region und verbleibender Regionen in dem RAID-Bereich zum Speichern von Daten zu ermöglichen.
  8. Ein Datenspeichersystem gemäß Anspruch 7, bei dem der Datenverlustdetektor (60) eine Regionsynchronisationstabelle (62) umfasst, die mehrere Indikatoren enthält, die darstellen, ob einzelne Regionen alternativ (1) gültig sind und keinen Datenverlust erfahren haben, oder (2) ungültig sind und einen gewissen Datenverlust erfahren haben.
  9. Ein Datenspeichersystem gemäß Anspruch 7, bei dem der Datenverlustdetektor eine virtuelle Datenverlusttabelle (64) umfasst, um eine virtuelle Adresse des defekten virtuellen Blocks zu speichern.
  10. Ein Datenspeichersystem gemäß Anspruch 9, bei dem der Datenverlustdetektor (60) einen aktiven Schreibspeicher (66) umfasst, der eine Liste aller bevorstehenden aktiven Schreiboperationen in dem Datenspeichersystem unterhält, wobei eine Schreiboperation auf eine Beendigung hin von dem aktiven Schreibspeicher entfernt wird; die Plattenarraysteuerung (14) versucht, Daten in den defekten virtuellen Block zu schreiben; und der Datenverlustdetektor (60) den defekten virtuellen Block aus der virtuellen Datenverlusttabelle (64) entfernt, es sei denn, die Daten gingen verloren, während die Schreiboperation bevorstand und in dem aktiven Schreibspeicher (66) aufgelistet war.
DE69533570T 1994-10-05 1995-07-14 Verfahren und System zum Erkennen von Datenverlust in einem hierarchischen Datenspeichersystem Expired - Fee Related DE69533570T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/319,331 US5572661A (en) 1994-10-05 1994-10-05 Methods and system for detecting data loss in a hierarchic data storage system
US319331 1994-10-05

Publications (2)

Publication Number Publication Date
DE69533570D1 DE69533570D1 (de) 2004-11-04
DE69533570T2 true DE69533570T2 (de) 2005-10-13

Family

ID=23241803

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69533570T Expired - Fee Related DE69533570T2 (de) 1994-10-05 1995-07-14 Verfahren und System zum Erkennen von Datenverlust in einem hierarchischen Datenspeichersystem

Country Status (4)

Country Link
US (1) US5572661A (de)
EP (1) EP0706127B1 (de)
JP (1) JP3699166B2 (de)
DE (1) DE69533570T2 (de)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745771A (en) * 1994-07-08 1998-04-28 Hitachi, Ltd. Disc array device and disc control method
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
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 株式会社日立製作所 ディスクアレイ装置
JP3201219B2 (ja) * 1995-05-29 2001-08-20 三菱電機株式会社 入出力処理システム
US5913927A (en) * 1995-12-15 1999-06-22 Mylex Corporation Method and apparatus for management of faulty data in a raid system
US5720025A (en) * 1996-01-18 1998-02-17 Hewlett-Packard Company Frequently-redundant array of independent disks
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
US5893164A (en) * 1997-05-30 1999-04-06 Unisys Corporation Method of tracking incomplete writes in a disk array and disk storage system which performs such method
US6178520B1 (en) * 1997-07-31 2001-01-23 Lsi Logic Corporation Software recognition of drive removal or insertion in a storage system
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
US6493811B1 (en) * 1998-01-26 2002-12-10 Computer Associated Think, Inc. Intelligent controller accessed through addressable virtual space
US6842422B1 (en) 1999-06-15 2005-01-11 Marconi Communications, Inc. Data striping based switching system
US6463559B1 (en) 1999-06-30 2002-10-08 International Business Machines Corporation Non-volatile fault indicator
US6412083B1 (en) * 1999-09-16 2002-06-25 Western Digital Technologies, Inc. Disk drive that supports a list-requesting command for enabling a host computer to assist in rescuing a rescue-candidate location having a drive-unrecoverable data
US6629273B1 (en) 2000-01-24 2003-09-30 Hewlett-Packard Development Company, L.P. Detection of silent data corruption in a storage system
US6609219B1 (en) * 2000-01-24 2003-08-19 Hewlett-Packard Development Company, L.P. Data corruption testing technique for a hierarchical storage system
US7269631B2 (en) * 2000-06-02 2007-09-11 Hewlett-Packard Development Company, L.P. Architecture for parallel distributed table driven I/O mapping
US6530004B1 (en) 2000-06-20 2003-03-04 International Business Machines Corporation Efficient fault-tolerant preservation of data integrity during dynamic RAID data migration
US7007152B2 (en) * 2001-12-28 2006-02-28 Storage Technology Corporation Volume translation apparatus and method
US6985995B2 (en) * 2002-03-29 2006-01-10 Panasas, Inc. Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data
EP1668486A2 (de) 2003-08-14 2006-06-14 Compellent Technologies Virtuelles plattenlaufwerksystem und verfahren
US9489150B2 (en) 2003-08-14 2016-11-08 Dell International L.L.C. System and method for transferring data between different raid data storage types for current data and replay data
US7409582B2 (en) * 2004-05-06 2008-08-05 International Business Machines Corporation Low cost raid with seamless disk failure recovery
US20050283682A1 (en) * 2004-06-18 2005-12-22 Hitachi, Ltd. Method for data protection in disk array systems
US8601035B2 (en) 2007-06-22 2013-12-03 Compellent Technologies Data storage space recovery system and method
JP4324088B2 (ja) * 2004-12-17 2009-09-02 富士通株式会社 データ複製制御装置
US20060180187A1 (en) * 2005-02-14 2006-08-17 Squeegit, Inc. Window cleaning apparatus
WO2007140260A2 (en) 2006-05-24 2007-12-06 Compellent Technologies System and method for raid management, reallocation, and restriping
US20080183963A1 (en) * 2007-01-31 2008-07-31 International Business Machines Corporation System, Method, And Service For Providing A Generic RAID Engine And Optimizer
US8468292B2 (en) 2009-07-13 2013-06-18 Compellent Technologies Solid state drive data storage system and method
US9342405B2 (en) * 2011-02-25 2016-05-17 Seagate Technology Llc Hierarchical data compression testing
US20130179726A1 (en) * 2012-01-08 2013-07-11 Synology Incorporated Automatic remapping in redundant array of independent disks and related raid
US9146851B2 (en) 2012-03-26 2015-09-29 Compellent Technologies Single-level cell and multi-level cell hybrid solid state drive
JP7193763B2 (ja) * 2018-01-15 2022-12-21 株式会社バッファロー ストレージ装置、ストレージシステム、及びプログラム
US11442826B2 (en) * 2019-06-15 2022-09-13 International Business Machines Corporation Reducing incidents of data loss in raid arrays having the same raid level
US11074118B2 (en) * 2019-06-15 2021-07-27 International Business Machines Corporation Reporting incidents of data loss in RAID arrays

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63231550A (ja) * 1987-03-19 1988-09-27 Hitachi Ltd 多重仮想空間制御方式
US5095420A (en) * 1988-11-21 1992-03-10 International Business Machines Method and system for performing virtual address range mapping in a virtual storage data processing system
JPH02202652A (ja) * 1989-02-01 1990-08-10 Hitachi Ltd 多重仮想記憶管理方式
JP3057498B2 (ja) * 1989-08-02 2000-06-26 富士通株式会社 アレイディスク装置およびそのデータ読み出し方法
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
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
JP2597060B2 (ja) * 1991-12-13 1997-04-02 富士通株式会社 アレイディスク装置
US5287462A (en) * 1991-12-20 1994-02-15 Ncr Corporation Bufferless SCSI to SCSI data transfer scheme for disk array applications
US5289418A (en) * 1992-02-14 1994-02-22 Extended Systems, Inc. Memory apparatus with built-in parity generation
JP3575811B2 (ja) * 1992-05-07 2004-10-13 株式会社日立製作所 記憶装置
JP3183719B2 (ja) * 1992-08-26 2001-07-09 三菱電機株式会社 アレイ型記録装置
US5522031A (en) * 1993-06-29 1996-05-28 Digital Equipment Corporation Method and apparatus for the on-line restoration of a disk in a RAID-4 or RAID-5 array with concurrent access by applications
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
EP0706127A2 (de) 1996-04-10
JP3699166B2 (ja) 2005-09-28
DE69533570D1 (de) 2004-11-04
US5572661A (en) 1996-11-05
EP0706127B1 (de) 2004-09-29
JPH08123629A (ja) 1996-05-17
EP0706127A3 (de) 2000-02-23

Similar Documents

Publication Publication Date Title
DE69533570T2 (de) Verfahren und System zum Erkennen von Datenverlust in einem hierarchischen Datenspeichersystem
DE69533077T2 (de) Speichersystem mit hierarchischer Speicherplattenanordnung und Abbildungsspeicher zur Dauerspeicherung der virtuellen Abbildungsinformation
DE69533058T2 (de) Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung
DE69534527T2 (de) Verfahren zur Verwendung von nicht-aneinandergrenzenden reservierten Speicherplatz zur Datenmigration in einem hierarchischen redundanten Datenspeichersystem
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
DE69434381T2 (de) Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
DE69532030T2 (de) Speicherplattenanordnung mit Ersatzbetriebsmitteln in Betrieb und Verfahren zur Verwendung von Ersatzbetriebsmitteln zum Speichern von Benutzerdaten
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
DE69738091T2 (de) Speicherplattenanordnung und Verfahren zu deren Steuerung
DE60035780T2 (de) Schaltung für plattenantriebskontroller und verfahren zur überschlagung von defekten oder ungewünschten sektoren
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE69631106T2 (de) On-line-Rekonfiguration einer Speicherplattenanordnung
DE112011100112B4 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE69632219T2 (de) Speicherplattenanordnungssystem
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE102013210642B4 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE69034227T2 (de) EEprom-System mit Blocklöschung
DE19723909B4 (de) Verfahren zum Verbessern der Fehlerfestigkeit und Leistungsfähigkeit eines RAID-Untersystems
DE602005000926T2 (de) Speichersystem und Speicherauszugs-Erstellungsverfahren eines Speichersystems
US5794242A (en) Temporally and spatially organized database
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE102005012358B4 (de) Datenschutz unter Verwendung von Daten, die in Schnappschüsse verteilt sind

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee