-
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 5–10 werden
nun verschiedene Verfahren zum Überwachen eines
Datenverlusts in dem hierarchischen Redundanzdatenspeichersystem 10 dieser
Erfindung beschrieben.
-
Die
ersten drei Schritte in dem Flussdiagramm der 9–10 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.