-
GEBIET DER
ERFINDUNG
-
Diese
Erfindung bezieht sich auf Datenspeichersysteme, z.B. hierarchische
Plattenarraydatenspeichersysteme, und Verfahren zum Verwenden von
reserviertem Speicherplatz zur Datenmigration in derartigen Systemen.
-
HINTERGRUND
DER ERFINDUNG
-
Computersysteme
werden in Bezug auf Geschwindigkeit, Zuverlässigkeit und Verarbeitungsfähigkeit
ständig
besser. Folglich sind Computer in der Lage, komplexere und anspruchsvollere
Anwendungen zu handhaben. Während
Computer immer besser werden, nehmen die Leistungsanforderungen
zu, die an Massenspeicher- und Eingabe-/Ausgabe- (I/O) Vorrichtungen
gestellt werden. Es besteht weiterhin ein Bedarf, Massenspeichersysteme
zu entwerfen, die in Bezug auf die Leistung mit sich weiter entwickelnden
Computersystemen Schritt halten.
-
Diese
Erfindung betrifft insbesondere die Massenspeichersysteme des Plattenarraytyps.
Plattenarraydatenspeichersysteme weisen mehrere Speicherplattenlaufwerksvorrichtungen
auf, die angeordnet und koordiniert sind, um ein einziges Massenspeichersystem
zu bilden. Für
Massenspeichersysteme gibt es drei Hauptentwurfskriterien: Kosten, Leistung
und Verfügbarkeit.
Am wünschenswertesten
ist es, Speichervorrichtungen zu erzeugen, die geringe Kosten pro
Megabyte, eine hohe Eingangs-/Ausgangsleistung und eine hohe Datenverfügbarkeit
aufweisen. „Verfügbarkeit" ist die Fähigkeit,
auf Daten, die in dem Speichersystem gespeichert sind, zuzugreifen,
und die Fähigkeit,
im Fall eines Ausfalls einen fortgesetzten Betrieb zu gewährleisten.
In der Regel wird eine Datenverfügbarkeit durch
die Verwendung von Redundanz geliefert, wobei Daten oder Beziehungen
zwischen Daten an mehreren Orten gespeichert sind.
-
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 Platten in dem Plattenarray bereitgestellt.
Das Spiegelverfahren weist die Vorteile einer hohen Leistung und
einer hohen Datenverfügbarkeit
aufgrund der Doppelspeichertechnik 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 Speicherplatz bzw. -raum. 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 vorgesehen ist. Das Paritätsverfahren
ist vorteilhaft, da es kostengünstiger
ist als das Spiegelverfahren, im Vergleich zu dem Spiegelverfahren
weist es jedoch auch geringere Leistungs- und Verfügbarkeitscharakteristika
auf.
-
Die
US 5,166,939 beschreibt
eine Datenspeichervorrichtung. Die Datenspeichervorrichtung ist
aus einer Mehrzahl von physikalischen Speichervorrichtungen gebildet.
Gemäß der Vorrichtung,
die darin offenbart ist, hat der Benutzer die Möglichkeit, die Konfiguration
des physikalischen Adressraumes bezüglich seiner Aufteilung in
Redundanzgruppen zu verändern.
Im Einzelnen weist das parallele Array von Laufwerken einen Logikeinheitsadressraum
auf, der zwei Anwendungslogikeinheiten aufweist. Jede Logikeinheit
ist konfiguriert, um adressierbare Logikblöcke zu umfassen. Jedem der
Logikblöcke
der Logikeinheiten entspricht ein Datenblock in einer Datengruppe
bei dem Raum, wobei die Datenblöcke
einer Logikeinheit logisch zusammenhängend angeordnet sind. Neben
den im Vorhergehenden erwähnten
Datengruppen, die durch die Logikeinheiten gebildet werden, umfasst
die Datengruppe bei dem Raum auch zusätzliche Datengruppen, die für eine dynamische
Konfiguration reserviert sind, d.h. diese Datengruppen können an
den Plattenlaufwerken des parallelen Arrays bei einer Initialisierung
oder zu einem beliebigen Zeitpunkt während der Laufzeit des parallelen
Arrays formatiert werden, sind jedoch für die Anwendungssoftware bei
der Anfangskonfiguration des parallelen Arrays nicht verfügbar. Die
Redundanzgruppenkonfiguration des parallelen Arrays wird durch den
zweidimensionalen Adressraum veranschaulicht, der den gesamten Speicherraum
des parallelen Arrays aufweist. Wenn der Adressraum neu konfiguriert
wird, erfolgt dies durch ein Formatieren der physikalischen Laufwerke
des parallelen Arrays.
-
In „Hybrid
redundancy direct-access storage device array with design options", IBM Technical Disclosure
Bulletin, Bd. 47, Nr. 02 B, 19. Februar 1994, S. 141–148, ist
ein Hybrid-DASD-Array (DASD = Direct-Access Storage Device, Direktzugriffsspeichervorrichtung)
beschrieben, wobei jede DASD, die das Array aufweist, fest in drei
Bereiche geteilt ist, einen D-Bereich, der die Benutzerdaten enthält, einen C-Bereich,
der die Prüfsumme
enthält,
und einen M-Bereich, der die gestuften gespiegelten Daten enthält, die
für den
D-Bereich vorgesehen sind. Benutzeradressierbare Daten werden auf
den Prüfsummenbereich
abgebildet, um einen beliebigen gewünschten RAID-Typ eines Prüfsummenarrays
zu liefern. Ein nicht-flüchtiger
RAM wird verwendet, um eine Adressabbildung von Adressen zu liefern,
die von dem Prüfsummenbereich
zu dem Spiegelbereich umgeleitet werden. Nachdem die Daten, die
in den M-Bereichen liegen, ausgewählte Stufungskriterien erfüllen, werden
dieselben in die Prüfsummenbereiche
geschrieben und aus den M-Bereichen gelöscht.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zu liefern,
das Leistung und Zuverlässigkeit
optimiert.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1 gelöst.
-
Diese
Erfindung liefert ein hierarchisches Datenspeichersystem, das Daten
gemäß unterschiedlicher
Redundanztechniken speichert, um Leistung und Zuverlässigkeit
zu optimieren. Das Datenspeichersystem umfasst ein Plattenarray,
das eine Mehrzahl von Speicherplatten aufweist, und eine Plattenarraysteuerung,
die eine Datenübertragung
zu und von den Platten koordiniert. Die Speicherplatten definieren
einen physikalischen Speicherplatz. Das Datenspeichersystem umfasst
auch ein RAID-Verwaltungssystem, das wirksam mit der Plattenarraysteuerung
gekoppelt ist, zum Abbilden von zwei virtuellen Speicherplätzen auf
den physikalischen Speicherplatz der Speicherplatten. Der erste oder
virtuelle RAID-Ebenen-Speicherplatz
präsentiert
den physikalischen Speicherplatz als mehrere Spiegel- und Paritäts-RAID-Bereiche.
Die Spiegel-RAID-Bereiche enthalten Spiegelzuweisungsblöcke, die
Daten gemäß einer
RAID-Ebene 1 (Spiegelredundanz) speichern, und die Paritäts-RAID-Bereiche
enthalten Paritätszuweisungsblöcke, die
Daten gemäß einer
RAID-Ebene 5 (Paritätsredundanz) speichern.
Der zweite oder virtuelle Anwendungsebenenspeicherplatz präsentiert
den physikalischen Speicherplatz als mehrere virtuelle Blöcke.
-
Das
RAID-Verwaltungssystem migriert Daten zwischen den Spiegel- und
Paritätszuweisungsblöcken, so
dass die Daten auf eine Weise einer Veränderung der Redundanz zwischen
RAID-Ebene 1 (d.h. Spiegelredundanz) und RAID-Ebene 5 (d.h.
Paritätsredundanz)
unterzogen werden, die die Leistung und Zuverlässigkeit optimiert. Um eine
Migration zu erleichtern, reserviert das RAID-Verwaltungssystem
eine Menge von nichtverwendetem Speicherplatz in dem virtuellen
RAID-Ebenen-Speicherplatz, um vorübergehend, was das Ziel von
Datenbewegungen während
der Migration sein kann. Der nichtverwendete Speicherplatz ist größenmäßig bevorzugt äquivalent
zu einem RAID-Bereich. Der nichtverwendete Speicherplatz befindet
sich jedoch nicht in einem RAID-Bereich oder an einem physikalischen Ort,
sondern es kann möglich
sein, dass derselbe über
verschiedene RAID-Bereiche auf eine nicht zusammenhängende Weise über die
Speicherplatten verteilt ist.
-
Gemäß einem
Verfahren dieser Erfindung verwendet das RAID-Verwaltungssystem den nicht zusammenhängenden
nichtverwendeten Platz, um beim Erzeugen von Spiegelzuweisungsblöcken zu helfen.
Das Verfahren umfasst mehrere mögliche Techniken,
die den nichtverwendeten Speicherplatz ausnutzen. Die Techniken
werden sequentiell ausprobiert, bis zumindest ein Spiegelzuweisungsblock erzeugt
ist. Die erste Technik besteht darin, einen nichtverwendeten RAID-Bereich
zu lokalisieren und denselben in einen Spiegel-RAID-Bereich umzuwandeln,
der zumindest einen verwendbaren Spiegelzuweisungsblock enthält. Die
zweite Technik besteht darin, die leeren Paritätszuweisungsblöcke in einem nichtverwendeten
RAID-Bereich zu
sammeln, der in einen Spiegel-RAID-Bereich umgewandelt werden kann,
der zumindest einen verwendbaren Spiegelzuweisungsblock enthält. Die
dritte Technik besteht darin, abwechselnd die folgenden Schritte
(a) und (b) durchzuführen,
bis ein nichtverwendeter RAID-Bereich erzeugt ist, und dann Schritt
(c) durchzuführen: (a)
Daten von Spiegelzuweisungsblöcken
zu Paritätszuweisungsblöcke migrieren,
um den Spiegelzuweisungsblock zu entleeren; (b) die leeren Spiegelzuweisungsblöcke in einem
nichtverwendeten RAID-Bereich
sammeln; und (c) den nichtverwendeten RAID-Bereich in einen Paritäts-RAID-Bereich umwandeln.
Die Schritte (a)–(c)
der dritten Technik werden wiederholt, bis ein nichtverwendeter RAID-Bereich
erzeugt ist, der in einen Spiegel-RAID-Bereich umgewandelt werden kann,
ohne gegen die minimale reservierte Menge von nichtverwendetem Speicherplatz
zu verstoßen.
-
Gemäß einem
weiteren Verfahren dieser Erfindung entleert das RAID-Verwaltungssystem
einen gesamten RAID-Bereich zur Verwendung bei einer großen Datenbewegungsoperation,
wie z.B. Wiederaufbauaufgaben, Hinzufügen neuer Speicherplatten und
dergleichen. Das RAID-Verwaltungssystem lokalisiert erst einen RAID-Bereich
(Spiegel oder Parität), der
nur teilweise mit Daten gefüllt
ist. Die Daten werden dann von dem RAID-Bereich in nichtverwendeten
Speicherplatz bewegt. Dies lässt
den RAID-Bereich leer und bereit zur Umwandlung in einen Spiegel-
oder Paritäts-RAID-Bereich
zurück.
-
BESCHREIBUNG
DER ZEICHNUNGEN
-
Unter
Bezugnahme auf die folgenden beigefügten Zeichnungen, in denen
Beispiele gezeigt sind, die den besten Modus zum Praktizieren der
Erfindung verkörpern,
werden nachfolgend bevorzugte Ausführungsbeispiele der Erfindung
beschrieben.
-
1 ist
ein schematisches Blockdiagramm eines Plattenarraydatenspeichersystems
gemäß dieser
Erfindung.
-
2 ist
eine schematische Veranschaulichung eines Speicherplatzes an mehreren
Speicherplatten und zeigt eine Datenspeicherung gemäß RAID-Ebene 1.
-
3 ist
eine schematische Veranschaulichung eines Speicherplatzes an mehreren
Speicherplatten und zeigt eine Datenspeicherung gemäß RAID-Ebene 5.
-
4 ist
eine schematische Veranschaulichung einer Speicherabbildungsanordnung
dieser Erfindung, wobei zwei virtuelle Speicherplätze auf
einen physikalischen Speicherplatz abgebildet werden.
-
5 ist
ein Flussdiagramm eines allgemeinen bevorzugten Verfahrens dieser
Erfindung.
-
6 ist
eine schematische Veranschaulichung eines Speicherplatzes an mehreren
Speicherplatten und zeigt, wie der nicht zusammenhängende nichtverwendete
Speicherplatz größenmäßig zu einem
oder mehr RAID-Bereichen äquivalent
ist.
-
7 ist
ein Flussdiagramm eines weiteren bevorzugten Verfahrens zum Verwenden
der reservierten Menge von nichtverwendetem Speicherplatz, um Spiegelzuweisungsblöcke zu erzeugen.
-
8 ist
ein Flussdiagramm von spezifischen Techniken, die verwendet werden,
um Spiegelzuweisungsblöcke
zu erzeugen, einschließlich
einer Abfallsammlungstechnik.
-
9 ist
eine schematische Veranschaulichung eines Speicherplatzes an mehreren
Speicherplatten und zeigt die Abfallsammlungstechnik von 8.
-
10 ist
ein Flussdiagramm eines weiteren bevorzugten Verfahrens zum Verwenden
einer reservierten Menge von nichtverwendetem Speicherplatz bei
einer Urladetechnik, die einen teilweise gefüllten RAID-Bereich entleert.
-
11 ist
eine schematische Veranschaulichung eines Speicherplatzes an mehreren
Speicherplatten und zeigt die Urladetechnik von 10.
-
DETAILLIERTE
BESCHREIBUNG DER ERFINDUNG
-
1 zeigt
ein Datenspeichersystem 10, das gemäß dieser Erfindung aufgebaut
ist. Vorzugsweise ist das Datenspeichersystem 10 ein Plattenarraydatenspeichersystem,
das ein hierarchisches Plattenarray 11, das eine Mehrzahl
von Speicherplatten 12 aufweist, eine Plattenarraysteuerung 14,
die mit dem Plattenarray 11 gekoppelt ist, um eine Datenübertragung
zu und von den Speicherplatten 12 zu koordinieren, und
ein RAID-Verwaltungssystem 16 umfasst.
-
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).
Bei dem Begriff „Plattenarray" handelt es sich
um eine Sammlung von Platten, die Hardware, die erforderlich ist,
um sie mit einem oder mehr Hostcomputern zu verbinden, und eine
Verwaltungssoftware, die verwendet wird, um den Betrieb der physikalischen
bzw. physischen Platten zu steuern und sie der Host-Betriebsumgebung
als eine oder mehr 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 Disks, redundantes Array aus unabhängigen Platten)
bedeutet ein Plattenarray, bei dem ein Teil der physikalischen 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 mehr Schnittstellenbusse 13,
beispielsweise eine Kleincomputersystemschnittstelle (SCSI – small computer
system inter face) 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 ausgeführt
sein oder kann in der Plattenarraysteuerung 14 oder in
dem Hostcomputer konfiguriert sein, um eine Datenverwaltungseinrichtung
zum Steuern von Plattenspeicher- und Zuverlässigkeitsebenen sowie zum Übertragen
von Daten zwischen verschiedenen Zuverlässigkeitsspeicherebenen bereitzustellen.
Diese Zuverlässigkeitsspeicherebenen
sind, wie nachfolgend beschrieben wird, vorzugsweise Spiegel- oder
Paritätsredundanzebenen,
können
jedoch auch eine Zuverlässigkeitsspeicherebene
ohne jegliche Redundanz umfassen.
-
Die
Plattenarraysteuerung 14 ist vorzugsweise als eine duale
Steuerung implementiert, die aus einer Plattenarraysteuerung A 14a und
einer Plattenarraysteuerung B 14b besteht. Die dualen Steuerungen 14a und 14b verbessern
die Zuverlässigkeit, indem
sie für
den Fall, dass eine Steuerung funktionsuntüchtig wird, eine fortlaufende
Sicherung und Redundanz liefern. Diese Erfindung kann jedoch auch
mit einer einzigen Steuerung oder mit anderen Architekturen praktiziert
werden.
-
Das
hierarchische Plattenarray 11 kann als unterschiedliche
Speicherplätze,
einschließlich
seines physikalischen Speicherplatzes und eines oder mehrerer virtueller
Speicherplätze,
charakterisiert werden. Diese verschiedenen Speicheransichten stehen
durch Abbildungstechniken in Beziehung. Beispielsweise kann der
physikalische Speicherplatz des Plattenarrays in einen virtuellen
Speicherplatz abgebildet werden, der Speicherbereiche gemäß den verschiedenen
Datenzuverlässigkeitsebenen
darstellt. Manche Bereiche in dem virtuellen Speicherplatz können für eine erste
Zuverlässigkeitsspeicherebene
zugewiesen sein, beispielsweise Spiegel- oder RAID-Ebene 1,
und andere Bereiche können
für eine
zweite Zuverlässigkeitsspeicherebene
zugewiesen sein, beispielsweise Paritäts- oder RAID-Ebene 5.
Die verschiedenen Abbildungstechniken und virtuellen Plätze, die
RAID-Ebenen betreffen,
werden nachfolgend ausführlicher
beschrieben.
-
Das
Datenspeichersystem 10 umfasst einen Speicherabbildungsspeicher 21,
der eine durchgängige
Speicherung der virtuellen Abbildungsinformationen liefert, die
verwendet werden, um verschiedene Speicherplätze aufeinander abzubilden.
Der Speicherabbildungsspeicher befindet sich außerhalb des Plattenarrays und
vorzugsweise resident in der Plattenarraysteuerung 14.
Die Speicherabbildungsinformationen können durch die Steuerung oder
das RAID-Verwaltungssystem kontinuierlich oder periodisch aktualisiert
werden, wenn sich die verschiedenen Abbildungskonfigurationen bei
den verschiedenen Ansichten untereinander ändern.
-
Vorzugsweise
ist der Speicherabbildungsspeicher 21 als zwei nicht-flüchtige RAMs
(Direktzugriffsspeicher) 21a und 21b ausgeführt, die
in jeweiligen Steuerungen 14a und 14b angeordnet
sind. Ein beispielhafter nicht-flüchtiger RAM (NVRAM) ist ein batteriegepufferter
RAM. Ein batteriegepufferter RAM verwendet Energie von einer unabhängigen Batteriequelle,
um im Falle eines Verlustes von Leistung an das Datenspeichersystem 10 die
Daten über einen
bestimmten Zeitraum in dem Speicher zu halten. 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 vorgesehen sein, die ursprünglichen
Abbildungsinformationen zu speichern, und der NVRAM 21b kann
dafür vorgesehen
sein, die redundanten Abbildungsinformationen zu speichern. Bei
einem alternativen Aufbau kann ein gespiegelter Speicherabbildungsspeicher
unter Verwendung eines einzelnen nichtflüchtigen RAMs mit ausreichendem
Platz, um die Daten im Duplikat zu speichern, konfiguriert sein.
-
Wie
in 1 gezeigt, weist das Plattenarray 11 mehrere
Speicherplattenlaufwerksvorrichtungen 12 auf. Beispielhafte
Größen dieser
Speicherplatten betragen ein bis drei Gigabyte. 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 voll beladen sind, weist das Datenspeichersystem eine beispielhafte
kombinierte Kapazität
von 12 bis 36 Gigabyte auf. Die Plattenarraysteuerung 14 erkennt
die Speicherplatten 12 unabhängig davon, in welche Bucht
sie gesteckt werden. Das Datenspeichersystem 10 ist konzipiert,
um ein „heißes Einstecken" zusätzlicher
Platten in verfügbare
mechanische Buchten in dem Plattenarray zu ermöglichen, während das Plattenarray in Betrieb ist.
-
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
einen ersten Speicherort oder RAID-Bereich des Plattenarrays dar,
der Daten gemäß einer
ersten bzw. Spiegelredundanzebene speichert. Diese Spiegelredundanzebene
wird auch als RAID-Ebene 1 betrachtet. Die RAID-Ebene 1 oder ein
Plattenspiegeln 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
Spie gelredundanz 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
duplizierte, redundante Daten auf dem gepaarten zweiten Satz von
Platten 28 gespeichert werden.
-
2 veranschaulicht
die Speicherung von Daten gemäß der RAID-Ebene 1 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 physikalische
Speicherplatz kann in mehrere 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 Speicherplatz gebildet, wobei jeder Platte in dem Array ein Segment
zugeordnet ist. Das heißt,
dass ein Segment der Abschnitt eines Streifens ist, der sich auf
einer einzelnen Platte befindet. Jeder Streifen hält eine
vorbestimmte Datenmenge, die über
die Speicherplatten verteilt ist. Manche Segmente eines Streifens
werden für
ursprüngliche
Daten verwendet, während
andere Segmente für
redundante Daten verwendet werden.
-
Bei
diesem Beispiel einer Spiegelredundanz (RAID-Ebene 1) werden
Daten, die auf der Platte 0 in dem Segment 0 des
Streifens 0 gespeichert sind, dupliziert und auf der Platte 1 in
dem Segment 0' des Streifens 0 gespeichert.
Desgleichen werden Daten, die auf der Platte 2 in dem Segment 5 des
Streifens 2 gespeichert sind, zu dem Segment 5' des Streifens 2 auf
der Platte 3 gespiegelt. Auf diese Weise wird jede Dateneinheit
dupliziert und auf den Platten gespeichert. Der Redundanzentwurf
der 2 ist zu Erläuterungszwecken
bereitgestellt. Die redundanten Daten müssen nicht sauber in demselben
Streifen platziert werden, wie es 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
platziert werden.
-
Unter
erneuter Bezugnahme auf 1 stellt die Paritätsgruppe 22 der
Platten 24 einen zweiten Speicherort bzw. RAID-Bereich
dar, in dem Daten gemäß einer
zweiten Redundanzebene, z.B. RAID-Ebene 5, gespeichert
werden. Bei dieser erläuternden
Veranschaulichung von sechs Platten sind ursprüngliche Daten auf den fünf Platten 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 physikalische
Speicherplatz der Platten 0, 1, 2, 3 in mehrere
gleich große
Streifen konfiguriert sein. Bei diesem veranschaulichten Beispiel
werden Daten gemäß der RAID-Ebene 5 gespeichert,
und auf die redundanten Daten, die in den Segmenten gespeichert sind,
wird durch den Buchstaben P Bezug genommen. 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 Funktion berechnet, beispielsweise eine
Exklusiv-ODER-Funktion, die durch das Symbol „." dargestellt ist. 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 Leistung 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. Von dem durch alle Platten 12 gelieferten,
zur Verfügung stehenden
Speicherplatz wird ein Teil dieses Speicherplatzes für eine Spiegelredundanz
zugewiesen, und ein weiterer Teil wird für eine Paritätsredundanz zugewiesen.
Vorzugsweise sind die Platten 12 konfiguriert, um mehrere
gleich große
Speicherregionen (die in 4 mit dem Bezugszeichen 35 benannt sind)
zu enthalten, wobei einzelne Regionen mehrere Segmente aufweisen.
Die Regionen sind zusammen gruppiert, um bei einer virtuellen Ansicht
des Speicherplatzes RAID-Bereiche zu bilden. Zusätzlich wird eine weitere (durch
einen Host definierte) Ansicht eines Speicherplatzes dem Benutzer
oder Host präsentiert,
so dass die RAID-Bereiche und die Datenredundanz-Speichertechniken
für den
Benutzer oder Host transparent sind. Diese Merkmale werden nachstehend
unter Bezugnahme auf 4 ausführlicher erläutert.
-
Das
Datenspeichersystem 10 verwaltet die „Migration" 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 den Spiegel- und den Paritäts-RAID-Bereichen
gemäß einem
definierten Leistungsprotokoll, und verwaltet die Daten anderweitig.
Der Vorgang des Bewegens von Daten zwischen den Spiegel- und Paritäts-RAID-Bereichen
wird als „Migration" bezeichnet.
-
Das
Datenspeichersystem 10 versucht, die für die Leistung kritischeren
Daten in den Spiegel-RAID-Bereichen zu platzieren, da dies die höchste Leistung
und Zuverlässigkeit
liefert. Die Leistungsprotokolle, 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 gehalten.
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 gehalten,
während
die Daten, deren Zugriff länger
zurückliegt,
in dem Paritäts-RAID-Bereich 22 gespeichert
werden. Es können
auch andere Leistungsprotokolle 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 automatisch „ab": Größe der physikalischen 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 Leistung
und Zuverlässigkeit
liefert. Wenn mehr Daten zu dem Datenspeichersystem hinzugefügt werden,
werden die Daten zwischen Spiegel-RAID-Bereichen und Paritäts-RAID-Bereichen migriert,
um die Leistung und Zuverlässigkeit
zu optimieren. Wenn sich das Datenspeichersystem einer vollen Kapazität nähert, werden
im Rahmen des Bemühens,
alle durch den Benutzer gestellten Anforderungen zu erfüllen und
trotzdem durch Redundanz Zuverlässigkeit
zu liefern, immer mehr Daten zu Paritäts-RAID-Bereichen migriert.
Dementsprechend liefert das Datenspeichersystem dieser Erfindung eine
maximale Flexibilität
und Anpassung. Es erfordert nicht, dass der Benutzer eine spezifische Speicherbetriebsweise
auswählt,
sondern kann sich stattdessen an jegliche Anforderung anpassen,
die durch den Benutzer an dasselbe gestellt wird.
-
4 veranschaulicht
eine Speicherabbildung des verfügbaren
Speicherplatzes des Datenspeichersystems 10 als mehrere
Lagen eines abgebildeten virtuellen Speicherplatzes. Jedes vertikal verlängerte Rechteck
in dem Diagramm stellt eine Ansicht des physikalischen Speicherplatzes
dar. Bei diesem Diagramm wird auf den physikalischen Speicherplatz 34 durch
zwei virtuelle Speicheransichten 40 und 50 Bezug
genommen. Der physikalische Speicherplatz 34 wird durch
vier Platten (z.B. Platten 12 in 1) dargestellt,
die durch die Bezugszeichen 0, 1, 2 und 3 benannt
sind. Die den Platten zugeordneten vier Rechtecke stellen eine Ansicht
des physikalischen Speicherplatzes dar, bei der die Platten 1, 2 und 3 eine
ungefähr
gleiche Speicherkapazität
aufweisen und die Platte 0 eine etwas geringere Speicherkapazität aufweist.
Beispielhafte Speicherkapazitäten
für derartige
Platten betragen 1 bis 3 Gigabyte. Der Speicherplatz 34 ist
in Bereiche A0, A1, A2 usw. partitioniert. Einzelne Bereiche enthalten
zahlreiche Streifen, im Bereich A0 z.B. Streifen 0-Q. Einzelne Bereiche
enthalten auch zahlreiche Regionen 35. Die Regionen 35 bestehen
vorzugsweise aus einer ausgewählten
Anzahl von Segmenten einer gleichmäßigen Größe auf jeder Speicherplatte,
so dass die Regionen über
das gesamte Plattenarray eine gleiche Größe aufweisen. Eine beispielhafte Größe einer
Region 35 ist ein Megabyte.
-
Der
Speicherplatz der Platten wird in eine erste virtuelle Zwischenansicht 40 der
RAID-Ebene des physikalischen Speicherplatzes 34 abgebildet. Diese
erste virtuelle Ansicht ist vom Konzept her ein Satz von RAID-Bereichen,
die auf eine zweite Anwendungsansicht abgebildet werden können, die
einen zusammenhängend
adressierbaren Speicherplatz darstellt. Die physikalische Konfiguration
und die RAID-Ansichten
des Speicherplatzes entziehen sich der Anwendungsansicht.
-
Der
RAID-Bereich-Speicherplatz 40 ist die Speicheransicht,
die den Spiegel- und Paritätsspeicherplatz
identifiziert. Beispielsweise kann ein RAID-Bereich 42 einen
Spiegel-RAID-Bereich
von M Zuweisungsblöcken 43 darstellen,
während
ein 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 Kilobyte
beträgt.
Diese RAID-Bereiche
beziehen sich auf entsprechende physikalische Bereiche A0, A1, A2
usw. auf dem physikalischen Speicherplatz 34. Beispielsweise
können
sechzehn 64K-Zuweisungsblöcke 43 oder 45 bei
der virtuellen RAID-Ansicht auf eine einzige 1M-Region 35 abgebildet
werden.
-
Die
Spiegel- und Paritäts-RAID-Bereiche können den
gesamten Speicherplatz 34 des Plattenarrays einnehmen,
müssen
aber nicht. Dementsprechend kann während bestimmter Anwendungen ein
nichtverwendeter und unbezeichneter Speicherplatz vorliegen, der
keinem bestimmten RAID-Bereich entspricht. Ein solcher Speicherplatz
kann jedoch in einen Spiegel- oder Paritäts-RAID-Bereich umgewandelt
werden. Ferner ist zu beachten, dass die RAID-Bereiche so gezeigt
sind, dass dieselben in zusammenhängende Bereiche auf dem Plattenarray abgebildet
werden, wobei jede einem RAID-Bereich zugeordnete Region an derselben
physikalischen Adresse auf jeder Speicherplatte angeordnet ist.
Die RAID-Bereiche können
al ternativ auch in nicht-zusammenhängende Bereiche auf dem Plattenarray abgebildet
werden.
-
Der
in den RAID-Bereichen verfügbare
Speicherplatz wird in eine zweite virtuelle Front-End-Anwendungsebenenansicht 50 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 Anwendungsebenenansicht 50 eine einzige große Speicherkapazität darstellen,
die den verfügbaren
Speicherplatz auf den Speicherplatten 12 angibt. Der virtuelle
Speicherplatz 50 präsentiert
eine Ansicht eines linearen Satzes von gleich großen virtuellen
Speicherblöcken 52 und 53,
die einzeln als 0, 1, 2, ... J – 1,
J, J + 1, ..., L – 1,
L, L + 1, ..., usw. bezeichnet werden. Die virtuellen Blöcke 52 und 53 weisen
vorzugsweise dieselbe Größe auf wie
die Zuweisungsblöcke
in dem RAID-Bereich 40, wobei eine beispielhafte Größe 64 Kilobyte
beträgt.
Der virtuelle Blockspeicherplatz 50 wird in der durch die RAID-Bereiche 40 dargestellten
Ansicht durch eine Tabelle von Bezugnahmen oder Zeigern (wie sie durch
Pfeile 54 dargestellt sind) auf Zuweisungsblöcke dargestellt.
Die virtuellen Blöcke 52 und 53 bei der
virtuellen Anwendungsansicht 50 sind somit über die
in der Virtuellblocktabelle gehaltenen Zeiger den Zuweisungsblöcken 43 und 45 an
der virtuellen RAID-Ansicht 50 zugeordnet. Es gibt zumindest
zwei Arten von RAID-Bereichen, auf die von der Virtuellblocktabelle
verwiesen werden kann: Spiegel und Parität.
-
Das
RAID-Verwaltungssystem 16 kann die Konfiguration der RAID-Bereiche über den
physikalischen Speicherplatz dynamisch verändern. Die Anzahl von RAID-Bereichen
für jeden
Typ kann je nach der Menge von Benutzerdaten, die in dem System gespeichert
sind, und je nach der Größe des physikalischen
Plattenspeicherplatzes erhöht
oder verringert werden. Folglich befinden sich die Abbildung der RAID-Bereiche
in der virtuellen RAID-Ebenen-Ansicht 40 auf die Platten und
die Abbildung 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) hält die aktuellen
Abbildungsinformationen, die durch das RAID-Verwaltungssystem 16 verwendet
werden, um die RAID-Bereiche auf die Platten abzubilden, sowie die
Informationen, die verwendet. werden, um zwischen den zwei virtuellen
Ansichten abzubilden. Während
das RAID-Verwaltungssystem
die RAID-Ebenen-Abbildungen dynamisch verändert, aktualisiert es auch
die Abbildungsinformationen in dem Speicherabbildungsspeicher, um
die Veränderungen
widerzuspiegeln.
-
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 Anwendungsebenenspeicherplatzes 50 Bezug auf
zugeordnete Zuweisungsblöcke 45 in
dem Paritäts-RAID-Bereich 44,
die in dem Bereich A1 des physikalischen Speicherplatzes 34 gespeichert
sind. Derartige virtuelle Blöcke 53 können als „virtuelle
Paritätsblöcke" bezeichnet werden,
während
die zugeordneten Zuweisungsblöcke 45 als „Paritätszuweisungsblöcke" bezeichnet werden.
Desgleichen nehmen virtuelle Blöcke 52 Bezug
auf zugeordnete Zuweisungsblöcke 43 in
dem Spiegel-RAID-Bereich 42, die in dem Bereich A0 des
physikalischen Speicherplatzes 34 gespeichert sind. Derartige
virtuelle Blöcke 52 werden
hier als „virtuelle
Spiegelblöcke" bezeichnet, während die
zugeordneten Zuweisungsblöcke 43 als „Spiegelzuweisungsblöcke" bezeichnet werden.
-
Um
Daten von einem RAID-Bereich zu einem anderen zu migrieren, 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 nichtverwendeter Zuweisungsblock, der einen Typ der zweiten
RAID-Ebene (beispielsweise Parität
oder Ebene 5) darstellt, lokalisiert. Falls kein nichtverwendeter
Zuweisungsblock 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 nichtverwendeten Zuweisungsblock übertragen,
was bewirkt, dass die Daten einer Redundanzebenenänderung
unterzogen werden. Beispielsweise werden Daten, die einmal gemäß einer
Spiegelredundanz gespeichert waren, nun gemäß einer Paritätsredundanz
gespeichert, oder umgekehrt. Als abschließender Schritt wird die 54 des virtuellen Anwendungsebenenspeicherplatzes 50 auf
den virtuellen RAID-Ebenen-Speicherplatz 40 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, wird in dem Speicherabbildungsspeicher 21 aktualisiert.
-
Die
fortdauernde Erörterung
liefert eine ausführlichere
Erklärung
des Migrierens von Daten zwischen Spiegel- und Paritätsspeicherbereichen
gemäß bevorzugten
Verfahren und Sequenzen dieser Erfindung. Zum Migrieren von Daten
von einer Paritäts-
zu einer Spiegelspeicherung wird die folgende Sequenz verwendet:
- 1. Das RAID-Verwaltungssystem lokalisiert einen nichtverwendeten
Spiegelzuweisungsblock 43 in einem Spiegel-RAID-Bereich 42.
- 2. Falls keiner gefunden werden kann, erzeugt das RAID-Verwaltungssystem
einen Spiegelzuweisungsblock (nachfolgend erörtert).
- 3. Das RAID-Verwaltungssystem setzt neue Speicheranforderungen
an den zu migrierenden virtuellen Block zeitweilig aus.
- 4. Das RAID-Verwaltungssystem wartet, bis alle aktiven Datenspeicheranforderungen
an den virtuellen Block abgeschlossen sind.
- 5. Die Daten von dem Paritätszuweisungsblock 45,
der dem virtuellen Block 53 zugeordnet 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 Virtuellblocktabelle wird modifiziert, um auf den neuen
Ort der Daten in dem Spiegelzuweisungsblock 43 zu verweisen.
- 8. Die zeitweilig ausgesetzten Speicheranforderungen werden
wiederaufgenommen.
-
Gemäß der obigen
Prozedur migrierte ein virtueller Block 53 in der virtuellen
Anwendungsebenenansicht 50 von einer Paritäts- zu einer
Spiegelspeicherung. Relativ zu der virtuellen Zwischenansicht 40 migrierten
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 physikalischen Speicherplatz bewegten sich Daten von dem
Bereich A1 zu dem Bereich A0.
-
Um
Daten von einer Spiegel- zu einer Paritätsspeicherung zu migrieren,
wird die folgende Sequenz verwendet:
- 1. Das
RAID-Verwaltungssystem wählt
einen virtuellen Block von 52, um gemäß einer Migrationsrichtlinie,
beispielsweise Zugriffsaktualität
oder Zugriffshäufigkeit,
von Spiegel- zu Paritätsspeicherung
zu migrieren.
- 2. Das RAID-Verwaltungssystem lokalisiert einen nichtverwendeten
Paritätszuweisungsblock 45 in einem
Paritäts-RAID-Bereich 44.
- 3. Falls kein solcher Block gefunden werden kann, wird ein Platz,
der für
eine Migration reserviert ist, gemäß den oben beschriebenen Erzeugungstechniken
in einen Paritäts-RAID-Bereich
umgewandelt.
- 4. Neue Speicheranforderungen an den zu migrierenden virtuellen
Block werden zeitweilig ausgesetzt.
- 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 eingelesen.
- 7. Die Daten werden in den gewählten Paritätszuweisungsblock 45 geschrieben.
- 8. Die Virtuellblocktabelle wird modifiziert, um auf den neuen
Ort der Daten in dem Paritätszuweisungsblock 45 zu
verweisen.
- 9. Datenanforderungen an den virtuellen Block werden wiederaufgenommen.
-
Die
obigen zwei aufgeführten
Sequenzen liefern Beispiele dafür,
wie das Speichersystem dieser Erfindung wirksam sein kann, um Daten
zwischen zwei unterschiedlichen Redundanzebenen zu migrieren.
-
Das
Datenspeichersystem dieser Erfindung reserviert eine Menge von nichtverwendetem
Speicherplatz für
eine Datenmigration und andere Operationen (z.B. Schritt 3 bei
dem Spiegel-zu-Parität-Migrationsprozess
im Vorhergehenden). Ein weiteres Ziel des Systems ist es jedoch,
so viele Benutzerdaten wie möglich
in virtuellen Spiegelblöcken
zu halten, da eine Spiegelredundanz die höchste Leistung und Zuverlässigkeit
bietet. Es liegt jedoch nur eine begrenzte Menge von physikalischem
Speicherplatz in dem Plattenarray vor. Anfangs wird kein physikalischer
Speicherplatz verbraucht. Dann beginnen Spiegelzuweisungsblöcke, die
physikalische Kapazität
zu verbrauchen, wenn Daten in dem Plattenarray gespeichert werden.
Der Begriff „physikalische
Kapazität" bezieht sich auf
die Speicherkapazität,
die zum Speichern von Benutzerdaten und redundanten Daten verfügbar ist.
Eine Spiegelspeicherung verstopft wirksam das Plattenarray, wenn
Benutzerdaten die Hälfte
der physikalischen Kapazität
verbrauchen. An diesem Punkt wird eine Hälfte der physikalischen Kapazität verwendet,
um Benutzerdaten zu speichern, und die verbleibende Hälfte der
physikalischen Kapazität
wird verwendet, um die redundanten Daten zu speichern.
-
Auch
werden an diesem Punkt alle verwendeten virtuellen Blöcke in Spiegelspeicherung
gehalten. Falls die Spiegelspeicherung so viel von dem physikalischen
Speicherplatz verbraucht, dass die Menge von nichtverwendetem RAID-Platz
geringer ist als diejenige eines RAID-Bereichs, kann das Datenspeichersystem
eine Migration eines einzelnen Spiegelzuweisungsblocks zu Paritäts-RAID-Bereichen
nicht mehr garantieren. Die nächste
Client-Datenanforderung, die einen vorhergehend nichtverwendeten
Zuweisungsblock verwendet, schlägt
fehl, da die Menge von nichtverwendetem Platz geringer ist als diejenige
eines RAID-Bereichs und nicht zum Migrieren einzelner Zuweisungsblöcke aus
der Spiegelspeicherung heraus in eine Paritätsspeicherung umgewandelt werden
kann. Diese Situation muss vermieden werden.
-
Ein
RAID-Verwaltungssystem 16 reserviert deshalb eine ausreichende
Menge von nichtverwendetem Speicherplatz für eine Datenmigration und führt verschiedene
Prozesse aus, um sicherzustellen, dass gegen diese Schwelle nichtverwendeten Speichers
nicht verstoßen
wird. 5 veranschaulicht eine allgemeine Prozedur dieser
Erfindung. Bei Schritt 60 bildet das RAID-Verwaltungssystem 16 den
physikalischen Speicherplatz, der durch das Plattenarray 12 geliefert
wird, in einen ersten oder virtuellen RAID-Ebenen-Speicherplatz 40 ab
(4). Der virtuelle RAID-Ebenen-Speicherplatz präsentiert den
physikalischen Speicherplatz als Spiegel- und Paritäts-RAID-Bereiche.
Die Spiegel-RAID-Bereiche enthalten Spiegelzuweisungsblöcke, die
Daten gemäß einer
Spiegelredundanz oder RAID-Ebene 1 speichern. Die Paritäts-RAID-Bereiche enthalten
Paritätszuweisungsblöcke, die
Daten gemäß einer
Paritätsredundanz
oder RAID-Ebene 5 speichern. Bei Schritt 62 reserviert
das RAID-Verwaltungssystem eine Menge von nichtverwendetem Speicherplatz
in dem virtuellen RAID-Ebenen-Speicherplatz 40. Die Menge
von reserviertem nichtverwendetem Speicherplatz ist äquivalent
zu der Menge von Speicherplatz in einem RAID-Bereich. Der nichtverwendete Speicherplatz
muss nicht in einem vorausgewählten zusammenhängenden
RAID-Bereich reserviert sein. Stattdessen verwendet das Verfahren
dieser Erfindung nichtverwendeten Speicherplatz, der nicht zusammenhängend über mehr
als einen RAID-Bereich verteilt sein kann.
-
6 zeigt
diese Platzreservierungstechnik. Ein beispielhaftes heterogenes
Plattenarray 68 ist so gezeigt, dass dasselbe fünf Speicherplatten 0–4 von verschiedener
Kapazität
aufweist. Nichtverwendeter Speicherplatz (durch das Etikett „U" dargestellt) ist über die
Speicherplatte auf eine nicht zusammenhängende Weise verteilt. Der
reservierte Speicherplatz ist das logische Äquivalent zu einem RAID-Bereich. Das heißt, falls
der gesamte nichtverwendete Speicherplatz U, der über die
Platten verteilt ist, akkumuliert würde, würde derselbe zumindest einen zusammenhängenden
RAID-Bereich (reservierter Platz U0–U4) füllen.
-
Es
sei darauf hingewiesen, dass die Menge von nichtverwendetem Speicherplatz äquivalent
zu der Größe von einem
größten Paritäts-RAID-Bereich ist.
Bei einem heterogenen Plattenarray ist ein größter RAID-Bereich einer, der
alle Platten in dem Plattenarray überspannt, da einige nicht-größte RAID-Bereiche
weniger als alle Platten überspannen können. Bei
einem homogenen Plattenarray, bei dem alle Speicherplatten die gleiche
Größe aufweisen, überspannen
alle RAID-Bereiche
alle Speicherplatten. Somit kann jeder RAID-Bereich als der größte betrachtet werden.
-
Bei
Schritt 64 bildet das RAID-Verwaltungssystem den virtuellen
RAID-Ebenen-Speicherplatz in einen zweiten oder virtuellen Anwendungsebenenspeicherplatz 50 ab,
der den physikalischen Speicherplatz als mehrere virtuelle Blöcke präsentiert. Der
virtuelle Anwendungsebenenspeicherplatz sieht nicht die Kapazität, die durch
den reservierten Speicherplatz geliefert wird. Bei Schritt 66 in 5 migriert
das RAID-Verwaltungssystem 16 Daten zwischen Spiegel- und
Paritäts-RAID-Bereichen
unter Verwendung des nichtverwendeten Speicherplatzes, wie es im
Vorhergehenden bei den zwei aufgeführten Prozessen beschrieben
ist, die unter Bezugnahme auf 4 erörtert sind.
Mit Hilfe dieser Datenmigration wird sichergestellt, dass das Datenspeichersystem
nicht zu viele Daten in eine Spiegelspeicherung platziert, derart,
dass gegen die Schwelle eines Paritäts-RAID-Bereichs von nichtverwendetem
Speicherplatz verstoßen
wird.
-
Die
Reservierungstechnik dieser Erfindung für nichtverwendeten Speicherplatz
ist vorteilhaft, da der nichtverwendete Platz auf eine nicht zusammenhängende Weise über unterschiedliche
RAID-Bereiche und über
mehrere Speicherplatten verteilt sein kann. Es ist nicht erforderlich,
dass eine zusammenhängende
reservierte Speicherung garantiert wird. Folglich kann das System
ohne schwierige und komplexe Operationen, wie z.B. Verschachtelungstransaktionen,
die eine spezifische Konfiguration von physikalischem Speicherplatz
garantieren, konzipiert werden.
-
Nicht
zusammenhängender
nichtverwendeter Speicherplatz wird abhängig von der laufenden Operation
gesammelt oder auf andere Weisen verwendet. Allgemein wird die reservierte
Menge verwendet, um mit ihrer Hilfe verwendbare Zuweisungsblöcke zur
Speicherung von Benutzer- oder nichtverwendeten RAID-Bereichen zu erzeugen,
die nach Bedarf in Spiegel- oder Paritäts-RAID-Bereiche umgewandelt
werden können.
Zwei Operationen von besonderem Interesse betreffen (1) ein Schreiben
eines einzelnen virtuellen Blocks in eine gespiegelte Speicherung
und (2) ein Neuschreiben ganzer RAID-Bereiche. Bei der ersten Operation
umfasst ein Verfahren zum Schreiben eines einzelnen virtuellen Blocks
eine Sequenz eines Sammelns nichtverwendeten Speicherplatzes über eine
Technik, die „Abfallsammlung" genannt wird, und
einer Migration von Daten von einer Spiegel- zu einer Paritätsspeicherung.
Das Abfallsammlungs-/Migrationverfahren wird unter Bezugnahme auf
die 7–9 genauer
beschrieben. Bei der zweiten Operation betrifft ein Verfahren zum
Neuschreiben ganzer RAID-Bereiche ein Entleeren eines teilweise
gefüllten
RAID-Bereichs, um
den entleerten RAID-Bereich nach Bedarf über eine Technik, die „Urladen" bzw. „Bootstrapping" genannt wird, in
einen Spiegel- oder Paritäts-RAID-Bereich
umzuwandeln. Das Urladeverfahren ist unter Bezugnahme auf die 10 und 11 genauer
beschrieben.
-
7 zeigt
das Verfahren zum Schreiben von Daten in einzelne virtuelle Spiegelblöcke einer Spiegelspeicherung.
Die anfänglichen
drei Schritte 70, 72 und 74 sind im Wesentlichen
identisch mit den Schritten 60, 62 und 62,
die unter Bezugnahme auf 5 im Vorhergehenden beschrieben
sind. Diese drei Schritte erzeugen die zwei Ebenen eines virtuellen
Speicherplatzes, die im Vorhergehenden unter Bezugnahme auf 4 genau
beschrieben sind, während
eine Menge von nichtverwendetem Speicherplatz in dem virtuellen
RAID-Ebenen-Speicherplatz
reserviert wird, die größenmäßig äqui valent
zu einem RAID-Bereich ist. Es sei darauf hingewiesen, dass der virtuelle
RAID-Ebenen-Speicherplatz, der bei Schritt 70 abgebildet
wird, nichtverwendete RAID-Bereiche umfasst, die nicht als Spiegel-
oder Paritäts-RAID-Bereiche
bestimmt worden sind und deshalb frei sind, als eines der beiden
verwendet zu werden.
-
Wenn
es Zeit ist, Daten in einen einzelnen virtuellen Block zu schreiben,
versucht das RAID-Verwaltungssystem 16 zuerst, einen verwendbaren
Spiegelzuweisungsblock in dem virtuellen RAID-Ebenen-Speicherplatz
zu lokalisieren, der dem einzelnen virtuellen Block zugeordnet werden
kann (Schritt 76). Falls ein verwendbarer Spiegelzuweisungsblock
vorliegt, der ohne ein Verstoßen
gegen die Schwelle eines RAID-Bereichs von nichtverwendetem Speicherplatz,
der für
eine Migration reserviert ist, verwendet werden kann (d.h. die „Ja"-Verzweigung von
Entscheidungsschritt 78), werden Daten einfach in den lokalisierten
Spiegelzuweisungsblock geschrieben (Schritt 80). Falls
andererseits kein verwendbarer Spiegelzuweisungsblock gefunden werden
kann (d.h. die „Nein"-Verzweigung von
Entscheidungsschritt 78), erzeugt das RAID-Verwaltungssystem
zumindest einen verwendbaren Spiegelzuweisungsblock (Schritt 82).
Danach werden Daten in die erzeugten ein oder mehr Spiegelzuweisungsblöcke geschrieben.
-
8 veranschaulicht
bevorzugte Techniken zum Erzeugen von verwendbaren Spiegelzuweisungsblöcken über Schritt 82.
Die Techniken werden bevorzugt in sequentieller Reihenfolge durchgeführt, wie
es gezeigt ist, bis zumindest ein verwendbarer Spiegelzuweisungsblock
erzeugt ist. Bei Schritt 90 wird bestimmt, ob ein nichtverwendeter
RAID-Bereich vorliegt, der in einen Spiegel-RAID-Bereich umgewandelt
werden kann, ohne gegen die Schwelle eines RAID-Bereichs für nichtverwendeten
Speicherplatz zu verstoßen.
Diese Bestimmung wird vorgenommen, da eine Umwandlung eines nichtverwendeten
RAID-Bereichs in einen Spiegel-RAID-Bereich den verfügbaren Speicherplatz
bis zu einem Punkt zusammen schrumpfen lassen kann, an dem gegen die
Schwelle eines RAID-Bereichs für
nichtverwendeten Speicherplatz verstoßen wird. Es wird angenommen,
dass die Schwelle größenmäßig äquivalent zu
dem größten Paritäts-RAID-Bereich
ist. Bei einem Plattenarray von N Platten weist ein Paritäts-RAID-Bereich ein Vielfaches
m von N – 1
Zuweisungsblöcken
zur Speicherung von Benutzerdaten und Zuweisungsblöcken für Redundanzdaten
auf. Im Gegensatz dazu weist ein Spiegel-RAID-Bereich ein Vielfaches von N/2 Zuweisungsblöcken zur
Speicherung von Benutzerdaten und N/2 Zuweisungsblöcken für Redundanzdaten
auf. Eine Umwandlung von einem nichtverwendeten RAID-Bereich, der
in entweder einen Spiegel- oder einen Paritäts-RAID-Bereich umgewandelt
werden kann, reduziert den Speicherplatz wirksam um ein Vielfaches
von N/2 – (N – 1). Somit
kann die Umwandlung gegen die Schwelle eines RAID-Bereichs für nichtverwendeten
Speicher verstoßen.
-
Falls
ein nichtverwendeter RAID-Bereich vorliegt, der in einen Spiegel-RAID-Bereich
umgewandelt werden kann, ohne gegen die nichtverwendete Schwelle
zu verstoßen
(d.h. die „Ja"-Verzweigung von
Schritt 90), wandelt das RAID-Verwaltungssystem den nichtverwendeten
RAID-Bereich in einen Spiegel-RAID-Bereich um (Schritt 100).
Ist dies erfolgreich, erzeugt diese Technik zumindest einen Spiegelzuweisungsblock.
Daten können
dann in den verwendbaren Spiegelzuweisungsblock in dem neuen Spiegel-RAID-Bereich
geschrieben werden. Der Prozess kann dann angehalten werden.
-
Falls
kein nichtverwendeter RAID-Bereich vorliegt, der in eine Spiegelspeicherung
umgewandelt werden kann (d.h. die „Nein"-Verzweigung von Schritt 90),
bestimmt das RAID-Verwaltungssystem dann,
ob das Speichersystem mehr nichtverwendete Zuweisungsblöcke als
die reservierte Schwellenmenge von nichtverwendetem Speicher aufweist
(Schritt 92). Ist dies der Fall, führt das RAID-Verwaltungssystem
eine zweite Platzverwaltungstechnik aus, die den Paritätsspeicher
mit dem Ziel eines Erzeugens eines nichtverwendeten RAID-Bereichs
verdichtet (Schritt 94).
-
Die
Paritätsspeicherverdichtung
wird unter Verwendung des Abfallsammlungsprozesses durchgeführt, der
in 9 veranschaulicht ist. 9 zeigt einen
Abschnitt eines Plattenarrays 86, das vier Speicherplatten 0–3 enthält. Aus
praktischen Gründen
sei angenommen, dass die RAID-Bereiche des virtuellen RAID-Ebenen-Speicherplatzes
zusammenhängend auf
Bereiche AG-1, AG,
AG+1, ..., AH-1,
AH, AH+1, ... usw. abgebildet
werden. Die Bereiche AG-1, AG,
AG+1 werden zur Spiegelspeicherung verwendet,
und die Bereiche AH-1, AH,
AH+1 sind einer Paritätsspeicherung zugeordnet. Die
Regionen in den Spiegel-RAID-Bereichen enthalten Zuweisungsblöcke, die
mit Daten D0–D5
gefüllt
sind, und Zuweisungsblöcke,
die mit einer Spiegelredundanz R0–R5 ausgestattet sind. Die Regionen
in den Paritäts-RAID-Bereichen
enthalten Zuweisungsblöcke,
die Daten D100–D107
halten, und Zuweisungsblöcke,
die für
eine Paritätsredundanz
P bereitgestellt sind. Die umschlossenen Kästchen, die das Identifizierungsetikett „U" aufweisen, stellen
reservierten nichtverwendeten Speicherplatz dar.
-
Um
nichtverwendete Paritätszuweisungsblöcke in einem
nichtverwendeten RAID-Bereich zu sammeln (d.h. der Paritätsverdichtungsschritt 94 von 8),
werden Daten von einem ausgewählten
Paritäts-RAID-Bereich
zu dem nichtverwendeten Speicherplatz U in anderen Paritäts-RAID-Bereichen
bewegt. In 9 sei angenommen, dass der Paritäts-RAID-Bereich,
der dem physikalischen Bereich AH-1 zugeordnet
ist, ausgewählt
wird. Daten D100 werden zu dem nichtverwendeten Speicherplatz U bewegt,
der in dem RAID-Bereich AH+1 angeordnet ist.
Auf ähnliche
Weise werden Daten D101 zu dem nichtverwendeten Speicherplatz U
in dem RAID-Bereich AH bewegt. Diese Datenbewegung
füllt wirksam die „Löcher" in den Paritäts-RAID-Bereichen,
wodurch der RAID-Bereich AH+1 voller gemacht
wird. Zur gleichen Zeit sammelt die Datenbewegung den nichtverwendeten
Speicherplatz in dem gleichen RAID-Bereich. Hier ist der ausgewählte Paritätsbereich
AH-1 nun völlig leer. Derselbe kann deshalb
als ein nichtverwendeter RAID-Bereich klassifiziert werden.
-
Bei
dem virtuellen Anwendungsebenenspeicherplatz werden die Zeiger in
der Virtuellblocktabelle aktualisiert, um die Datenbewegung widerzuspiegeln.
Dies sammelt wirksam nichtverwendete Zuweisungsblöcke in einem
nichtverwendeten RAID-Bereich
(d.h. dem entleerten Paritäts-RAID-Bereich,
der dem physikalischen Bereich AH-1 zugeordnet
ist).
-
Bei
Schritt 96 in 8 bestimmt das RAID-Verwaltungssystem,
ob dieser Verdichtungsschritt einen nichtverwendeten RAID-Bereich
erzeugt hat, der in einen Spiegel-RAID-Bereich umgewandelt werden
kann, ohne gegen die Schwelle eines RAID-Bereichs für reservierten
Speicherplatz zu verstoßen.
Ist dies der Fall (d.h. die „Ja"-Verzweigung von Schritt 96),
wird der erzeugte nichtverwendete RAID-Bereich in einen Spiegel-RAID-Bereich
umgewandelt, der zumindest einen verwendbaren Spiegelzuweisungsblock
enthält
(Schritt 100), in den Daten geschrieben werden können. Unter
Bezugnahme auf 9 können die Daten gemäß Spiegelredundanztechniken
in dem physikalischen Bereich AH-1 gespeichert
werden, wodurch dieser Bereich als ein Spiegel-RAID-Bereich neu
zugeordnet wird.
-
Falls
andererseits der Verdichtungsschritt keinen nichtverwendeten RAID-Bereich
ergeben hat, der in eine Spiegelspeicherung umgewandelt werden kann
(d.h. die „Nein"-Verzweigung von Schritt 96), führt das
RAID-Verwaltungssystem
eine dritte Technik zum abwechselnden Migrieren von Daten von Spiegelzuweisungsblöcken zu
Paritätszuweisungsblöcken und
dann eines Sammelns der Spiegelspeicherung durch, um einen nichtverwendeten RAID-Bereich
zu erzeugen (Schritt 98). Es sei darauf hingewiesen, dass
diese Migration-/Sammeltechnik von Schritt 98 auch über die „Nein"-Verzweigung von Schritt 92 erreicht
werden kann, falls das Speichersystem nicht mehr nichtverwendete
Zuweisungsblöcke
als die reservierte Schwellenmenge aufweist.
-
Gemäß dem Teilprozess
von Schritt 98 migriert das RAID-Verwaltungssystem Daten von einem Spiegelzuweisungsblock
zu einem Paritätszuweisungsblock
unter Verwendung von beliebigen nichtverwendeten Paritätszuweisungsblöcken oder
durch ein Umwandeln von nichtverwendeten RAID-Bereichen in Parität. Die Spiegelspeicherung
kann dann mit dem Ziel eines Erzeugens eines nichtverwendeten RAID-Bereichs
verdichtet werden.
-
Das
Sammeln von nichtverwendeten Spiegelzuweisungsblöcken ist auch in 9 gezeigt.
Es sei z.B. angenommen, dass Daten von einem ausgewählten Spiegel-RAID-Bereich,
wie z.B. demjenigen, der dem physikalischen Bereich AG+1 zugeordnet
ist, zu dem nichtverwendeten Speicherplatz U in anderen Spiegelspeicherbereichen
bewegt werden. Daten D4 werden zu dem nichtverwendeten Speicherplatz U
bewegt, der in den RAID-Bereichen AG-1 und
AG angeordnet ist. Auf ähnliche Weise werden Daten
D5 zu dem nichtverwendeten Speicherplatz U in dem RAID-Bereich AG-1 bewegt. Die Datenbewegung füllt die „Löcher" in den Spiegel-RAID-Bereichen,
während
gleichzeitig der nichtverwendete Speicherplatz in dem gleichen RAID-Bereich
gesammelt wird. Der ausgewählte
Spiegelbereich AG+1 ist nun völlig leer und
kann als ein nichtverwendeter RAID-Bereich klassifiziert werden.
-
Wie
im Vorhergehenden werden bei dem virtuellen Anwendungsebenenspeicherplatz
die Zeiger in der Virtuellblocktabelle aktualisiert, um die Datenbewegung
widerzuspiegeln. Dies sammelt wirksam nichtverwendete Zuweisungsblöcke in einem
nichtverwendeten RAID-Bereich (d.:h. dem entleerten Spiegel-RAID-Bereich,
der dem physikalischen Bereich AG+1 zugeordnet
ist).
-
Die
Migrations- und Verdichtungsschritte werden wiederholt durchgeführt, bis
ein nichtverwendeter RAID-Bereich erzeugt ist. Da ein Speichern
von Benutzerdaten in Spiegelspeicherung verglichen mit einem Speichern.
der gleichen Benutzer daten in Paritätsspeicherung mehr physikalischen
Speicherplatz besetzt, ergibt eine Migration von Spiegelzuweisungsblöcken zu
Paritäts-RAID-Bereichen
eine Nettozunahme bei der Menge von nichtverwendetem Speicher. Wenn
ein nichtverwendeter RAID-Bereich erzeugt worden ist, kann derselbe
zur zusätzlichen Migration
in einen Paritäts-RAID-Bereich
umgewandelt werden (Schritt 99). Die Schritte 98 und 99 werden
wiederholt durchgeführt,
bis bei Schritt 96 ein nichtverwendeter RAID-Bereich existiert,
der in einen Spiegel-RAID-Bereich
umgewandelt werden kann, ohne gegen die Schwelle reservierten nichtverwendeten
Speichers zu verstoßen.
Aufgrund der reservierten Menge von nichtverwendetem Speicher ist
sichergestellt, dass dieser Prozess Spiegel-RAID-Bereiche entleert, so dass dieselben
in Paritäts-RAID-Bereiche umgewandelt
werden können. Das
heißt,
das Plattenarraydatenspeichersystem kann eine Spiegelspeicherung
so viel wie nötig
verkleinern, um die Kapazität
zu erfüllen,
die für
Benutzerdaten festgelegt ist.
-
Die
Techniken, die in 8 beschrieben sind, werden in
der bevorzugten Reihenfolge durchgeführt, wie es gezeigt ist, da
jeder vorangehende Schritt von einem Zeit- und Ressourcenstandpunkt aus
weniger aufwändig
ist, um verwendbare Spiegelzuweisungsblöcke zu erzeugen. Bei anderen
weniger bevorzugten Ausführungsbeispielen
können
jedoch die Techniken zum Erzeugen von verwendbaren Spiegelzuweisungsblöcken in
anderen Sequenzen durchgeführt
werden.
-
Das
Protokoll, das verwendet wird, um nichtverwendete Spiegelzuweisungsblöcke zu erzeugen, ist
vorteilhaft, da dasselbe dem RAID-Verwaltungssystem erlaubt, die
Speicherzuweisung zwischen Paritäts-
und Spiegelbereichen gemäß der Menge
an Benutzerdaten und der Größe des physikalischen Speicherplatzes
selektiv einzustellen. Da Datenverwendung und Speicherkapazität variieren,
maximiert das RAID-Verwaltungssystem die Menge an Daten, die in
Spiegelspeicherung gehalten werden. Somit werden die am aktuellsten
oder am häufigsten
verwendeten Daten in Spiegelspeicherung gehalten, um Leistung und
Zuverlässigkeit
zu optimieren.
-
Das
RAID-Verwaltungssystem versucht, die Situation zu vermeiden, bei
der eine Speicheranforderung darauf warten muss, dass die platzschaffende
Sequenz durch ein Erzeugen von nichtverwendeten RAID-Bereichen während einer
Leerlaufzeit einen nichtverwendeten Spiegelzuweisungsblock liefert.
In einigen Situationen können
sich jedoch Konflikte ergeben, wenn Speicheranforderungen während der
platzschaffenden Sequenz gemacht werden. Das RAID-Verwaltungssystem
löst jegliche
Konflikte, wenn die platzschaffenden Prozeduren abgeschlossen sind.
-
10 zeigt
das Verfahren zum Neuschreiben ganzer RAID-Bereiche unter Verwendung der „Urlade"-Technik. Die anfänglichen
drei Schritte 120, 122 und 124 erzeugen
erneut die Zweischichtabbildungsstruktur, die im Vorhergehenden
unter Bezugnahme auf 4 beschrieben ist, während eine
Menge von nichtverwendetem Speicherplatz, die zu einem RAID-Bereich äquivalent
ist, reserviert wird.
-
Bei
Schritt 126 lokalisiert das RAID-Verwaltungssystem einen
Spiegel- oder Paritäts-RAID-Bereich,
der teilweise mit Benutzerdaten gefüllt ist. Bei einer bevorzugten
Implementierung sucht das RAID-Verwaltungssystem nach dem am wenigsten gefüllten Spiegel-
oder Paritäts-RAID-Bereich.
Das RAID-Verwaltungssystem entleert dann den teilweise gefüllten RAID-Bereich
durch ein Bewegen der verbleibenden Daten zu nichtverwendetem Speicherplatz
in dem Plattenarray (Schritt 128). Die Daten können zu
einem beliebigen nichtverwendeten Speicherplatz entweder in Spiegel-
oder Paritätsspeicherung
bewegt werden. Dieser Prozess ergibt einen ganzen RAID-Bereich,
der leer ist.
-
Der
entleerte RAID-Bereich kann dann nach Bedarf in einen Spiegel- oder
Paritäts-RAID-Bereich umgewandelt
werden (Schritt 130). Zum Beispiel können Daten von einem anderen RAID-Bereich (Spiegel
oder Parität)
zu diesem leeren RAID-Bereich
bewegt oder neu geschrieben werden, um verschiedene Operationen
zu erleichtern, bei denen eine Datenbewegung im großen Maßstab aus
einer Leistungs- und Effizienzperspektive erwünscht ist. Es ist z.B. erwünscht, ganze
RAID-Bereiche während einer
Wiederaufbauoperation (bei der eine Datenredundanz nach einem Plattenversagen
wiederhergestellt wird) oder einer Ausgleichsoperation (bei der RAID-Bereiche
einer nach dem anderen erweitert werden, um neuen Speicherplatz
zu umfassen, der durch Hinzufügen
von ein oder mehr zusätzlichen Speicherplatten
erzeugt wird) umzuordnen.
-
11 veranschaulicht
schematisch die Urladetechnik von 10. 11 zeigt
einen Abschnitt eines Plattenarrays 140, das fünf Speicherplatten 0–4 enthält. Aus
praktischen Gründen
sei angenommen, dass die RAID-Bereiche des virtuellen RAID-Ebenen-Speicherplatzes
zusammenhängend auf
Bereiche APF-4 bis APF+2 abgebildet
werden. Die Regionen jedes RAID-Bereichs an den verschiedenen Platten
enthalten Zuweisungsblöcke
für Daten D0–D15, Zuweisungsblöcke für Spiegelredundanz R0–R7 und
Paritätsredundanz
P und nichtverwendete Zuweisungsblöcke, die durch „U", das in einem Kästchen umschlossen
ist, bezeichnet sind. Aufgrund der reservierten Schwelle ist die
Anzahl von nichtverwendeten Zuweisungsblöcken größer oder gleich der Anzahl
von Zuweisungsblöcken
in dem größtmöglichen
Paritäts-RAID-Bereich
in einem N-Platten-Array.
-
Bei
diesem Beispiel sei angenommen, dass das RAID-Verwaltungssystem einen RAID-Bereich APF als den teilweise gefüllten RAID-Bereich identifiziert
hat (Schritt 126 in 10). Die
verbleibenden Daten in dem ausgewählten teilweise gefüllten RAID-Bereich
APF werden zu dem nichtverwendeten Speicherbereich
in anderen RAID-Bereichen bewegt. Daten D8 werden zu dem nichtverwendeten
Speicherplatz U in den Spiegel-RAID-Bereichen APF-4 und APF-2 bewegt, und Daten D9 werden zu dem nichtverwendeten
Speicherplatz U in dem Spiegel-RAID-Bereich APF-1 und
den Paritäts-RAID-Bereichen APF+1 Und APF+2 bewegt.
Die Daten werden unabhängig
von der Speicherebene zu reserviertem Speicherplatz in den RAID-Bereichen in dem
gesamten Plattenarray bewegt. Dieser Prozess entleert den ausgewählten RAID-Bereich,
so dass derselbe keine Daten enthält. Der ausgewählte RAID-Bereich
APF kann nun in einen Spiegel- oder Paritäts-RAID-Bereich
umgewandelt werden.
-
Der
Urladeprozess unterscheidet sich von dem im Vorhergehenden genannten
Abfallsammlungsprozess darin, dass die Daten „Löcher" in einer beliebigen Speicherebene füllen können, unabhängig davon,
ob die Daten sich ursprünglich
in einem Spiegel- oder Paritäts-RAID-Bereich
befanden. Der Prozess bewahrt nicht vollständig das Halten von am aktuellsten
oder am häufigsten
verwendeten Daten in Spiegelspeicherung, derselbe ist jedoch für große Neuschreiboperationen
von Daten in dem Plattenarray nützlich.
Der Urladeprozess ist einfacher und schneller als der im Vorhergehenden
genannte Abfallsammlungsprozess.
-
Die
Verfahren dieser Erfindung weisen viele Vorteile auf. Erstens kann
Speicherplatz zur Migration und somit zur RAID-Bereichsumwandlung
verwendet werden, wo auch immer derselbe in dem virtuellen RAID-Ebenen-Speicherplatz
gefunden wird. Das Datenspeichersystem muss deshalb nicht konzipiert
sein, um verschachtelte Transaktionen zu unterstützen, die einen spezifischen
Ort oder eine Konfiguration von Platz garantieren, der für eine Migration zwischen
Speichertypen reserviert ist. Zweitens erlauben die Verfahren eine
maximale Flexibilität
bezüglich
Speichertypgrößen durch
ein einfaches Übergehen
zu homogenen oder heterogenen Plattenarrays. Drittens versuchen
die Verfahren, Leistung und Zuverlässigkeit durch ein Halten von
so vielen Daten wie möglich
in Spiegelspeicherung zu optimieren.