-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft nicht flüchtige elektronische Massenspeichersysteme,
die auch als Sekundärspeichersysteme
bekannt sind.
-
Hintergrundinformationen
-
Die
Verwendung von Sekundärspeichersystemen
mit verschiedenen Typen von Client-Anwendungen, einschließlich Online-Transaktionsverarbeitung
und Multimedia-Speicherung, ist weit verbreitet. Transaktionsverarbeitung
umfasst beispielsweise eine Kreditkartenbearbeitung, die dadurch
gekennzeichnet ist, dass der Client eine relativ große Anzahl kleiner
Datentransaktionen anfordert. Im Gegensatz dazu erfordert eine Multimedia-Speicherung,
wie etwa der Zugriff auf Video- und Musikdateien, im Allgemeinen
bedeutend größere Transaktionen.
Bei einer typischen Operation sendet die Client-Anwendung eine High
Level-Anfrage zum Lesen oder Schreiben einer Datei in ein Dateisystem.
Das Dateisystem führt
einen Dateisystemnamenplatz und mappt Dateilese-/-schreibvorgänge auf
Blockzugriffe eines niedrigeren Levels. Diese Blockzugriffe werden dann
in eine Speichervorrichtung eingegeben, die typischerweise Teil
eines Sekundärspeichersystems ist,
das ein rotierendes Magnetplattenlaufwerk aufweist. Die Speichervorrichtung
besitzt typischerweise keine Kenntnis davon, ob das Dateisystem
einen bestimmten Block im Plattenlaufwerk verwendet, und kann insofern
als von dem Dateisystem unabhängig beschrieben
werden.
-
Eine
derzeit bevorzugte Vorgehensweise zum Implementieren eines Sekundärspeichersystems
mit hoher Leistungsfähigkeit,
großer
Kapazität und
geringen Kosten ist der Redundant Array of Inexpensive Disks (RAID).
In einem RAID ist eine Menge von rotierenden Plattenlaufwerken (vorliegend
vereinfacht als "Platten" bezeichnet) in eine
einzige große,
logische Platte organisiert. Jede Platte in der Menge besitzt typischerweise
die gleiche Anzahl von Magnetscheiben und die gleiche Anzahl von
Spuren auf jeder Magnetscheibe, wo die Daten tatsächlich gespeichert
werden. Die Daten werden durch "Striping" über mehrere Platten hinweg
angeordnet, um die Lese-/Schreibgeschwindigkeiten zu verbessern, und
redundante Informationen werden auf den Platten gespeichert, um
die Verfügbarkeit
von Daten (Zuverlässigkeit)
für den
Fall katastrophaler Plattenausfälle
zu verbessern. Das RAID-Sekundärspeichersystem
kann die defekte Datendisk typischerweise wieder herstellen, ohne
auf das Dateisystem zurückzugreifen,
indem es jedes Datenbit in jeder Spur und Magnetscheibe der defekten
Platte regeneriert (unter Verwendung seiner Kenntnis der redundanten
Informationen), und daraufhin jedes solche Bit an entsprechenden
Orten einer neuen Ersatzplatte speichert.
-
Es
wurden mehrere RAID-Architekturen (in Industriekreisen als "Levels" bekannt) entwickelt,
um verschiedene Kombinationen von Kosten, Leistungsfähigkeit
und Zuverlässigkeit
zur Verfügung
zu stellen. Beispielsweise bei einem Level I-RAID wird ein vom Dateisystem
empfangener Datenblock durch einen Eingangs-/Ausgangs (I/O)-Controller
des RAID vollständig
auf einer Platte gespeichert und in einer Prüfdisk repliziert. Level I verwendet
daher doppelt so viele Platten wie ein nicht redundanter Plattenarray,
stellt jedoch einen schnellen Zugriff (jede Platte für sich kann
zum Abfragen des Blocks verwendet werden) und eine hohe Verfügbarkeit
zur Verfügung. Level
I wird daher häufig
mit solchen Anwendungen wie Online-Transaktionsverarbeitung verwendet,
bei denen Verfügbarkeit
und Transaktionsgeschwindigkeit wichtiger als die Effizienz der
Speicherkapazität sind.
-
In
einer Level III RAID-Architektur hingegen ist der Datenblock bitweise über eine
Anzahl von Datenplatten verteilt, und eine einzige Paritätsplatte wird
hinzugefügt,
um Ausfälle
einzelner Platten aufzufangen. Die Verwendung von Parität anstelle
einer Replizierung der Daten vermindert die Verfügbarkeit im Vergleich mit einer
Level I-Architektur. Die Speichereffizienz ist jedoch stark verbessert,
da nur eine Paritätsplatte
für mehrere
Datenplatten verwendet wird. Level III ist daher besonders gut für Anwendungen
geeignet, welche das Speichern großer Datenmengen und einen hohen
Durchsatz erfordern, wobei auf Daten zumeist sequentiell zugegriffen
wird, wie etwa bei der digitalen Speicherung von Videodateien.
-
Bei
den obenstehend beschriebenen RAID-Architekturen gibt es zwei Probleme.
Zunächst einmal
erstes verlängern
sich mit einer stetig zunehmenden Speicherfähigkeit des typischen Plattenlaufwerks
auch die Platten-Wiederherstellungszeiten. Da das Speichersystem
während
der Wiederherstellung einer defekten Platte ungeschützt ist,
d.h. ein Defekt einer zweiten Platte zum Gesamtausfall des Speichersystems
führt,
können
längere
Wiederherstellungszeiten ein schwerwiegendes Problem darstellen.
Dieses Problem wird noch dadurch erschwert, dass sich die Wahrscheinlichkeit
eines Ausfalls bei größeren RAID-Mengen,
die mehr Plattenlaufwerke beinhalten, vergrößert.
-
Ein
weiteres Problem ist die verminderte Lese-/Schreibleistung bei Anwendungen
wie etwa Fernsehproduktionen, bei denen große Transaktionen, die Anforderungen
zum Abfragen oder Speichern von Media-Dateien wie etwa Fernsehprogrammen
und Werbespotdateien beinhalten, mit kleineren Transaktionen kombiniert
sind, die auf Textdateien oder "Metadata"-Dateien zugreifen,
welche einen Werbespot oder ein Programm in einer bestimmten Media-Datei
beschreiben. Obgleich RAID Level I einen schnellen Zugriff für sowohl
große
als auch kleine Transaktionen zur Verfügung stellt, resultiert das Duplizieren
der großen
Media-Dateien in einer ineffizienten Nutzung des Gesamtspeicherplatzes
im Vergleich mit derjenigen, die mit Level III erzielt werden kann.
Die Leistungsfähigkeit
bei einer Verwendung von RAID Level III wird jedoch bei kleinen
Transaktionen, auf die direkt zugegriffen wird, durch die Erfordernis
beeinträchtigt,
auf die Daten direkt über
mehrere Platten und nicht nur eine einzige zuzugreifen.
-
ZUSAMMENFASSUNG
-
Eine
Ausführungsform
der Erfindung, die im nachfolgenden beschrieben ist, profitiert
von dem Konzept der engen Kopplung einer fehlertoleranten Massenspeichervorrichtung
(wie etwa einer RAID-Vorrichtung) mit einem Dateisystem zum Erzielen
eines höheren
Gesamtdurchsatzes in Speicher-/Datenbank-Anwendungen mit einer Mischung von
großen
Transaktionen mit sequentiellem Zugriff und kleinen Transaktionen
mit Direktzugriff. Darüber hinaus
kann die Plattenwiederherstellungszeit durch die Verwendung einer
solchen Ausführungsform stark
verkürzt
werden.
-
Ein
Verfahren gemäß einer
Ausführungsform der
Erfindung umfasst das Aufteilen eines logischen Speicherplatzes,
der einen Speicherbereich in einer Menge von nicht flüchtigen
Speichervorrichtungen repräsentiert,
in nicht überlappende
Speicherzuordnungseinheiten (SAUs), wobei jede SAU alle Vorrichtungen
in der Menge überlagert.
Unterschiedliche fehlertolerante Speichermethoden (FTSMs) werden zugewiesen,
um jeweils auf Daten in den verschiedenen SAUs zuzugreifen (d.h.
Daten zu lesen/schreiben). Der Zugriff auf die Daten erfolgt auf
der Grundlage des jeweiligen FTSM für die SAU, auf die zugegriffen
wird.
-
Bei
einer besonderen Ausführungsform
kann eine Zuordnungstabelle aufgrund der Tatsache, dass die Tabelle
der RAID-Vorrichtung bekannt gegeben wird, sowohl vom Dateisystem
als auch der RAID-Vorrichtung gemeinsam verwendet werden. Dies gestattet
es dem Dateisystem, die optimale fehlertolerante Speichermethode
für das
Speichern eines bestimmten Datenstroms oder Datenzugriffmusters
zu wählen,
und gestattet es gleichzeitig der RAID-Vorrichtung, die Daten ordnungsgemäß wiederzufinden,
falls eine Platte ausfällt
(durch Bezugnahme auf die Zuordnungstabelle, um zu bestimmen, welche
fehlertolerante Speichermethode zum Speichern der Datei verwendet
wurde.) Wenn die RAID-Vorrichtung des weiteren eine defekte Platte wiederherstellt,
werden nur die SAUs wiederhergestellt, von denen in der Zuordnungstabelle
angegeben ist, dass sie von dem Dateisystem verwendet werden, wodurch
Wiederherstellungszeit gespart wird; dies ist insbesondere vorteilhaft,
wenn individuelle Plattenlaufwerke mit einer großen Kapazität verwendet werden.
-
Diese
Aufgaben werden auf vorteilhafte Weise im Wesentlichen durch Anwenden
der Merkmale in den nebengeordneten Ansprüchen 1 und 6 gelöst. Weitere
Verbesserungen sind in den Unteransprüchen definiert.
-
Die
Schrift EP-A-0 485 110 beschreibt ein System gemäß den im Oberbegriff von Anspruch
1 definierten Merkmalen.
-
KURZE BESCHREIBUNG
DER ZEICHNUNG
-
Die
Erfindung ist beispielhaft und auf nicht einschränkende Weise in den Figuren
der beigefügten
Zeichnung veranschaulicht, in denen gleiche Bezugszeichen ähnliche
Elemente bezeichnen. Es ist anzumerken, dass Verweise auf "eine" Ausführungsform
in der vorliegenden Offenbarung sich nicht notwendigerweise auf
die gleiche Ausführungsform
sowie auf mindestens eine beziehen.
-
1 zeigt
die Zuordnung von Speicherplatz in einem Plattenarray gemäß einer
Ausführungsform der
Erfindung.
-
2 veranschaulicht
eine logische Zuordnungstabelle.
-
3 stellt
eine Stripe-Zuordnungs-Bitmap dar.
-
4 zeigt
eine Zuordnungs-Bitmap für
vier kleine Stripes.
-
5 veranschaulicht
eine Zuordnungs-Bitmap für
32 kleine Blöcke.
-
6 stellt
eine FTSM-Zuteilungs-Bitmap dar.
-
7 zeigt,
wie Schreibanforderungen von einer Schichtarchitektur, die zum Implementieren
einer Ausführungsform
der Erfindung verwendet werden kann, behandelt werden.
-
8 veranschaulicht,
wie Leseanforderungen bei einer Ausführungsform der Erfindung behandelt
werden.
-
9 stellt
dar, wie eine Wiederherstellungsanforderung bei einer Ausführungsform
der Erfindung behandelt wird.
-
10 zeigt
ein Blockdiagramm einer Hardware-/Software-Implementierung einer
Ausführungsform
der Erfindung.
-
11 veranschaulicht
ein Blockdiagramm eines Videonetzes, das eine Ausführungsform
der Erfindung beinhaltet.
-
DETAILLIERTE
BESCHREIBUNG
-
Dateisystem-Speicherzuordnung
-
Unter
Bezugnahme auf 1 wird die Zuordnung von Speicherplatz
in einem Plattenarray 104 beschrieben. Generell sind N
Datenplatten und M Prüfplatten
in dem Array vorhanden, wobei eine Raid-Menge eine Gruppe von N
+ M Platten bezeichnet, auf die eine Anzahl von FTSMs angewendet wird,
um eine fehlertolerante Datenspeicherung in ihnen zu erhalten. Die
grundlegende Speicherzuordnungseinheit (SAU) für Plattenplatz, der durch das Dateisystem
definiert werden kann, wird als ein Stripe 108 bezeichnet.
Der logische Speicherplatz einer RAID-Menge kann in eine beliebige
Anzahl von nicht überlappenden
Stripes 108, 116, und 120 unterteilt werden,
wie in 1 gezeigt ist. Jeder Stripe überlagert die gleichen zwei
oder mehr der gleichen Platten in der Menge, so dass jeder Stripe
eine Anzahl von Sektoren auf jeder Platte in der RAID-Menge sein kann
und die gleiche Startsektornummer und die gleiche Größe auf jeder
Platte haben muss. Bei der besonderen Implementierung in 1 besteht
der Stripe 0 aus Sektor 0 bis einschließlich Sektor 63 auf Platte
0, Sektor 0 bis einschließlich
Sektor 63 auf Platte 1, usw. Die RAID-Menge kann somit als in gleiche
Stripes aufgeteilt betrachtet werden. Die gleichen Größen sind
aber nicht nötig,
da alternativ ein Bereich von unterschiedlichen Stripe-Größen zugeordnet
werden kann. Die Größe (Breite)
des Stripe 108 kann so gewählt sein, dass ein ziemlich
hoher Durchsatz von einer Platte erzielt wird, ohne übermäßig hohe
Pufferspeichergrößen in Kauf
nehmen zu müssen.
Wenn der Plattensektor beispielsweise 4 kByte beträgt, dann
beträgt
die Stripe-Größe pro Platte
256 kByte, und Transfers auf die Platte mit dieser Größe können einen
Durchsatz erzielen, der ziemlich nahe bei dem maximalen Durchsatz
der Platte liegt.
-
Jeder
Datei kann eine ganzzahlige Anzahl von Stripes zugeordnet werden.
Der zuletzt zugeordnete Stripe könnte
jedoch teilweise gefüllt
sein, so dass pro Datei etwas Platz verschwendet wird, der im Durchschnitt
die halbe Größe des Stripe
betragen wird. Im Fall einer RAID-Menge mit 8 Datenplatten und 1
Prüf (Redundanz-)
Platte beträgt
der Datenabschnitt des RAID-Mengen-Stripe 8 × 256 kByte = 2 Mbyte, so dass
der verschwendete Platz im Durchschnitt 1 MByte beträgt. Bei
Verwendung dieses Stripe zum Speichern von komprimierten Videodateien, die
im allgemeinen Hunderte von MByte bis mehrere GByte betragen, beträgt dieser
verschwendete Platz viel weniger als 1% der Dateigröße. Werden
jedoch andere Typen von Media-Dateien, wie etwa Audio- oder stark
komprimierte Videodateien gespeichert, kann sich diese Stripe-Größe im Hinblick
auf Platzverschwendung und Pufferspeicher-Anforderungen als zu groß erweisen.
-
Um
kleinere Media-Dateien wie Audio- und stark komprimierte Videodateien
zu akkommodieren, kann der Stripe weiter in eine Anzahl von kleineren SAUs
wie etwa kleine Stripes 112–115 unterteilt werden.
Ein kleiner Stripe hat die gleiche Topologie wie ein Stripe 108,
d.h. er bedeckt alle Daten- und Prüfplatten, besitzt jedoch nur
einen Bruchteil der Größe des Stripe.
Bei der besonderen Implementierung, bei der der Stripe in vier kleine
Stripes unterteilt ist, wie in 1 gezeigt
ist, bedeckt der kleine Stripe 1 die Sektoren 0 bis 15 auf Platte
0, die Sektoren 0 auf 15 auf Platte 1, usw. Dies gestattet eine
Zugriffseinheit von 64 kByte pro Platte, wodurch ein ziemlich hoher Durchsatz
(wenn auch geringer als mit Verwendung der Stripe-Zugriffseinheit)
erzielt wird, während
sich der verschwendete Platz pro Datei um einen Faktor Vier verringert,
und auch die Direktzugriffsspeicher (RAM)-Pufferanforderungen minimiert
werden.
-
Das
Dateisystem unterstützt
auch Non-Media-Dateien, bei denen es sich entweder um Metadata-Dateien,
welche die Media-Dateien beschreiben, oder um Textdateien handelt.
Diese Dateien sind tendenziell beträchtlich kleiner als Media-Dateien.
Darüber
hinaus, während
der Zugriff auf die Media-Dateien im allgemeinen tendenziell sequentiell
ist, d.h. eine lange Sequenz von Schreibvorgängen zum Aufzeichnen der Datei
und eine lange Sequenz von Lesevorgängen für ihre Wiedergabe, ist der
Direktzugriff auf Non-Media-Dateien üblicher. Der Stripe oder die
kleine Stripe-SAU ist möglicherweise
nicht zum Speichern dieser Dateien geeignet, da der verschwendete
Platz zu groß sein
könnte,
und ein Direktzugriff auf solche SAUs im Hinblick auf den Durchsatz
zu aufwendig ist. Für
kleine Dateien kann daher ein dritter SAU-Typ definiert werden, der als ein kleiner
Block 125 bezeichnet wird, durch Unterteilen des Stripe
in eine Vielzahl kleiner Blöcke
mit jeweils mehreren Sektoren. In der Ausführungsform von 1 sind
16 kleine Blöcke 124...139 im
Stripe 3 vorhanden, wobei jeder kleine Block aus 4 Sektoren
(16 kByte) besteht. Der kleine Block 125 ist die SAU für Daten
in kleinen Dateien und für
alle Dateisystem-Metadata-Informationen, d.h. die Zeigerblöcke, Dateitabellen-
und Zuordnungstabellendaten.
-
Zusammenfassend
wurden somit drei Typen von SAUs beschrieben, von denen jeder für einen
bestimmten Dateityp und ein bestimmtes Zugriffsmuster geeignet ist:
der Stripe, der zum Speichern von großen Media-Dateien verwendet
wird, der kleine Stripe, der für
Audiodateien oder Mediadateien mit einer hohen Kompressionsrate
verwendet wird, und der kleine Block, der zum Speichern von kleinen
Textdateien und Dateisystem-Metadaten verwendet wird. Eine geringere
oder größere Anzahl
unterschiedlicher Typen von SAUs kann durch das Dateisystem für die Anpassung
an bestimmte Client-Anwendungen definiert werden. Wie im nachfolgenden
beschrieben wird, werden verschiedene FTSMs zugewiesen, um auf Daten
in den verschiedenen Zuordnungseinheiten zuzugreifen, was dazu beiträgt, den
im Plattenarray verfügbaren
Speicherplatz effizienter zu nutzen und die Leistungsfähigkeit
für sowohl
große
als auch kleine Transaktionen, die von der Client-Anwendung angefordert
werden, zu verbessern.
-
Zuteilung von fehlertoleranten
Speichermethoden
-
Die
FTSMs schaffen Redundanz, so dass im Falle eines Plattendefektes
alle Daten wiederbeschafft werden können, und die defekte Platte
wiederhergestellt werden kann, nachdem sie durch eine neue ersetzt
wurde. Bei einer besonderen Ausführungsform
der Erfindung wird dem Stripe und dem kleinen Stripe eine modifizierte
Version von RAID Level 3 als ihre FTSM zugeteilt. Für Schreibanforderungen
akkumuliert das Dateisystem genügend
Daten, bevor es einen kompletten Stripe über alle Datenplatten schreibt.
Sobald alle Stripe-Daten verfügbar
sind, erzeugt die RAID-Vorrichtung
gemäß Level
III RAID eine XOR-Operation über
die Stripe Daten in Abschnitten pro Platte. Im Falle eines großen Stripe
wird die XOR-Funktion über
N (wobei N die Anzahl von Datenplatten ist) Abschnitte mit 256 kByte
Daten vorgenommen, und ein neuer Abschnitt mit 256 kByte der die
Paritätsdaten
darstellt, wird erzeugt. Die Paritätsdaten werden daraufhin auf
die einzige (M = 1) Prüfplatte
geschrieben. Im Falle des Lesens eines Datei liest die RAID-Vorrichtung
einen kompletten Stripe einschließlich der Prüfplatte;
falls eine Platte ausgefallen ist, können die fehlenden Daten wiederhergestellt
und an den Client zurückgesendet
werden mittels Durchführung
der XOR-Funktion über
die N – 1
Abschnitte von Stripe-Daten pro Platte und die Abschnitte von Paritätsdaten
in der Prüfplatte
gemäß Level
III RAID. Die gleiche FTSM (vorliegend Level III RAID) wird verwendet,
wenn die Platte wiederhergestellt werden soll: die N – 1 Platten
und die Prüfplatte werden
gelesen, XOR wird zum Wiederherstellen der fehlenden Daten durchgeführt, und
die Daten werden auf die Ersatzplatte geschrieben. Dieser Algorithmus funktioniert
sehr gut für
vergleichsweise große
Dateien, auf die sequentiell zugegriffen wird, weil die durch die
Prüfplatte "verschwendete" Bandbreite nur 1/N der
Bandbreite der RAID-Menge
beträgt,
so dass sehr hohe Durchsätze
erzielt werden können.
-
Die
FTSM für
kleine Blöcke
in dieser Ausführungsform
verwendet einen Level I RAID-Algorithmus, der den Datenblock einfach
auf einer Prüfplatte repliziert.
Wenn ein kleiner Block von 16 kByte auf Platte 0 geschrieben wird,
werden die gleichen Daten auch auf Platte 1 geschrieben (s. 1).
Dieser Algorithmus verschwendet relativ viel Plattenplatz (er verwendet
den doppelten Plattenplatz für
eine gegebene Datenmenge). Er gestattet jedoch einen sehr schnellen
Zugriff auf kleine Dateien und wiederholten Direktzugriff.
-
Die Speicherplatz-Zuordnungseinrichtungsschicht
-
Die
Speicherplatz-Zuordnungseinrichtungsschicht des Dateisystems hat
eine logische Zuordnungstabelle gemäß der Darstellung in 2 zum Verfolgen
der Zuordnung von Speicherplatz und der FTSM-Zuteilung für jeden
Stripe. Jeder Stripe wird als in Verwendung befindlich identifiziert
und markiert, d.h. ob er gültige
Daten enthält
oder frei ist, und die ihm zugeteilte FTSM. In der besonderen Ausführungsform
von 3 verfolgt eine Bitmap die Zuordnung von Stripes:
wenn das Bit gesetzt ist, ist der Stripe zugeordnet, d.h. er wird
von einer Anwendung oder einem Subsystem verwendet. Der Zugriff
auf diese Bitmap ist schnell, weil die Stripe-Nummer der Indexeintrag
in die Bitmap ist. Mehrere Stripes können zum Speichern der Daten
in einer einzigen Datei nötig
sein.
-
Wenn
das Dateisystem einen kleinen Stripe (z.B. für kleinere Media-Dateien) zuordnen
soll, ordnet es zuerst einen Stripe zu und unterteilt den Stripe dann
in eine An zahl (z.B. vier) kleine Stripes, und ordnet einen kleinen
Stripe zu. Das Verfolgen der Zuordnung des kleinen Stripe wird mit
einer separaten Tabelle wie etwa der in 4 gezeigten
Bitmap bewerkstelligt. Diese kann als eine Hash-Tabelle organisiert
sein (Hash-Verarbeitung wird an den Bits niedrigerer Ordnung der
Stripe-Nummer vorgenommen). Ein Eintrag in diese Tabelle existiert
nur solange, wie ein Stripe teilweise als kleine Stripes zugeordnet
ist. Wenn alle vier kleinen Stripes zugeordnet sind, wird der Eintrag
gelöscht.
Wenn alle vier kleinen Stripes wieder frei sind, wird der entsprechende
in der Stripe-Zuordnungs-Bitmap (s. 3) als nicht
in Verwendung befindlich markiert. Eine ähnliche Vorgehensweise kann
verwendet werden, um kleine Blöcke
zu verfolgen. Wenn ein kleiner Block benötigt wird, wird ein Stripe
zugeordnet und gemäß der Darstellung
in der Bitmap von 5 in eine Anzahl von kleinen
Blöcken
unterteilt. Ein Eintrag in eine Hash-Tabelle wird erzeugt, um die
Zuordnung dieser kleinen Blöcke
zu verfolgen. Die Tabelle behält
den Eintrag nur, während
der Stripe teilweise als kleine Blöcke zugeordnet ist.
-
Es
ist zu beachten, dass das Dateisystem nicht vorausgehend definieren
oder festlegen muss, wie viel von dem gesamten Plattenplatz als
Stripes oder kleine Stripes oder kleine Blöcke verwendet werden kann.
Die Zuordnung ist dynamisch, wobei die verschiedenen Zuordnungstypen
der Basis-SAU entnommen werden, und bei Freisetzung wieder zu Stripes
werden.
-
In
einer besonderen Ausführungsform
der Erfindung wird die Zuteilung einer FTSM für jegliche SAU unter Verwendung
einer zweiten Bitmap durchgeführt,
die ihren Index parallel zur Stripe-Zuordnungs Bitmap von 2 erhält. Dies
ist in 6 gezeigt, wo die Bitmap den Redundanzalgorithmus
definiert, der auf jeden großen
Stripe angewendet wird. Bei einer gezeigten besonderen Implementierung werden
nur zwei verschiedene Redundanzalgorithmen verwendet, so dass ein
Eintrag mit einem einzigen Bit für
eine Unterscheidung zwischen Algorithmen ausreicht. Ein Bit, das
gleich Null ist, bedeutet, dass die entsprechende SAU (z.B. ein
Stripe) den Level III RAID-Redundanzalgorithmus anwendet; wenn das
Bit Eins ist, werden die Daten in der SAU unter Verwendung eines
Level I RAID-Algorithmus gespeichert: dies bedeutet, dass der Stripe
zu kleinen Blöcken
gemacht wurde, wobei jeder kleine Block, der von der RAID-Vorrichtung
auf eine Datenplatte geschrieben wird, auf einer Prüfplatte
repliziert wird. Implementierungen, die mehr als zwei Redundanzalgorithmen
anwenden, sind möglich
und können
entweder eine Mehrzahl von Bit maps oder eine Mehrzahl von Bits pro
Eintrag in die FTSM Bitmap von 6 verwenden.
-
Die
SAU-Zuordnungs-Bitmap und die FTSM-Zuteilungs-Bitmap werden von
dem Dateisystem und der RAID-Vorrichtung gemeinsam verwendet. Die
Vorteile dieses Ansatzes umfassen:
- • Das Dateisystem
kann die FTSM für
eine spezifischen Datenstrom und/oder ein spezifisches Datenzugriffsmuster,
die bzw. das vom Client empfangen werden, wählen. Die RAID-Vorrichtung
mit Zugriff auf die FTSM-Zuteilungs-Bitmap in der Speicherplatz-Zuordnungseinrichtungsschicht des
Dateisystems kann die SAUs ordnungsgemäß wiederherstellen.
- • Wenn
die RAID-Vorrichtung eine defekte Platte wiederherstellen soll,
muss sie nur die SAUs wiederherstellen, die als durch das Dateisystem
in Verwendung befindlich markiert sind; die unbenutzten SAUs brauchen
nicht wiederhergestellt zu werden. Dies verkürzt die Wiederherstellungszeit beträchtlich,
falls das Dateisystem nicht voll ist und die Platten jeweils eine
relativ hohe Speicherfähigkeit
besitzen.
-
Nach
dieser Beschreibung der Struktur des Speichersystems, das verwendet
wird, um hohe Durchsätze
mit Anwendungen zu erzielen, die eine Mischung aus kleinen und großen Speichertransaktionen
beinhalten, werden nun mehrere Verfahren für die Abwicklung der Transaktionen
beschrieben.
-
Abwicklung von Client-Anforderungen
-
Als
Beispiel dafür,
wie die Wechselwirkung zwischen den verschiedenen Schichten des
Dateisystems und der RAID-Vorrichtung funktioniert, sei die in 7 gezeigte
Schichtenarchitektur betrachtet. Die Schicht-zu-Schicht-Wechselwirkung,
die beim Abwickeln einer bestimmten Client-Anforderung einstellt,
in diesem Fall entweder ein fsMediaWrite oder fsWrite, wird nun
beschrieben. Die Abwicklung zusätzlicher
Client-Anforderungen fsMediaRead und fsRead, sowie einer Wiederherstellungsanforderung
sind in 8 bzw. 9 gezeigt,
die weiter unten beschrieben sind. Das Folgende beschreibt allgemein
die relevanten Funktionen einer jeden Schicht, zusammen mit beispielhaften
Implementierungen für
jede Schicht, gefolgt von der Abwicklung von beispielhaften Client-Anforderungen.
-
Beginnend
mit 7 ist gezeigt, dass jede Schicht der darüberliegenden
Schicht die Abwicklung zur Verfügung
stellt und von der darunterliegenden Schicht Aktionen anfordert.
Eine Client-Anwendung 752 beinhaltet Aufgaben, die ein
Dateisystem 754 verwenden, um Media- oder Non-Media-Daten
zu lesen/schreiben. Eine Videospielervorrichtung als ein Softwareprogramm
ist ein Beispiel für
einen Client des Dateisystems.
-
Das
Dateisystem 754 mappt Dateilese-/-schreibvorgänge auf
bestimmte SAU-Zugriffe. Das
Dateisystem 754, und insbesondere die Speichersystemzuordnungseinrichtung 758,
ist dafür
zuständig,
die Zuordnungs- und Zuteilungsbitmaps gemäß der obenstehenden Beschreibung
der 3–6 zu
führen.
Das Dateisystem 754, und insbesondere eine Dateisystem-Schnittstelle 756, stellt
ihren Clients die folgenden Grundelemente zur Verfügung (zusätzlich zu
den typischen Dateisystemgrundelementen wie open(), close(), stat(),
usw.):
- • fsRead()
und fswrite() für
den Zugriff auf Dateien, die als kleine Blöcke zugeordnet sind
- • fsMediaRead()
und fsMediaWrite() für
den Zugriff auf Dateien, die als Stripes zugeordnet sind.
-
Eine
RAID-Vorrichtungsschicht 760 stellt dem Dateisystem Grundelemente
zum Lesen und Schreiben von Datenblöcken auf den Plattenarray 104 zur
Verfügung.
Diese Schicht ist auch zuständig für das Erzeugen
von Redundanzinformationen für die
verschiedenen Zugriffsarten, z.B. Paritätsinformationen für Stripe-Zugriff
und Datenreplizierung für kleine
Blöcke.
Die RAID-Vorrichtung 760 hat auch noch eine separate Aufgabe,
die dafür
zuständig
ist, eine defekte Platte wiederherzustellen. Falls eine Platte ausfällt, ist
die RAID-Vorrichtung in der Lage, die Daten wiederzufinden und im
Wesentlichen die in Verwendung befindlichen Abschnitte (SAUs) der
defekten Platte zu duplizieren, wenn die Platte ersetzt wird. Die
relevanten Grundelemente, welche die RAID-Vorrichtung 760 dem
Dateisystem 754 zur Verfügung stellt, umfassen:
- • raidSmallBlockRead()
und raidSmallBlockWrite() für
den Zugriff auf kleine Blöcke
- • raidStripeRead()
und raidStripeWrite() für
den Zugriff auf Stripes
-
Die
Low-Level-Zugriffsschicht 762 führt Low Level-Zugriff auf Platten
durch, um die von der RAID-Vorrichtung 760 angeforderten
Higher Level-Plattenblockoperati onen zu implementieren. Diese Schicht
erteilt auch solchen Low Level-Zugriffen Priorität. Die relevanten Grundelemente,
die der RAID-Vorrichtung zur Verfügung gestellt werden, umfassen:
- • fcReadBlock()
und fcWriteBlock() für
den Zugriff auf Datenblöcke
-
Die
Low-Level-Zugriffsschicht 762 greift auf die physikalischen
Schichten zu, welche der Plattenarray 104 aufweist. Die
Platten des Array 104 sind mit einem Bus verbunden und
der Zugriff auf sie findet über
einen Faserkanaltreiber, einen Kleincomputersystem-Schnittstellen
(SCSI)-Controller, oder andere I/O-Controller aus herkömmlichen
RAID-Systemen statt.
-
Weiterhin
unter Bezugnahme auf 7, wenn der Videospieler (Client-Programm 752)
seine logische Einheit von Daten akkumuliert hat (für den Videospieler
ist dies ein Frame von komprimiertem Digitalvideo), gibt er ein
fsMediaWrite() aus. Die Dateisystem-Schnittstelle 756 überprüft auf nicht
in Verwendung befindliche SAUs (vorliegend Stripes) durch Abfragen
der Bitmaps und Hash-Tabellen, die von der Speicherplatz-Zuordnungseinrichtung 758 geführt werden.
Falls nicht in Verwendung befindliche Stripes vorhanden sind, akzeptiert
das Dateisystem 754 über
seine Client-Schnittstelle 756 die in der fsMediaWrite-Anfrage
identifizierten Daten und überprüft, ob es
genügend
Daten für
das Schreiben eines kompletten Stripe hat (die Stripe-Größe ist durch
die Anzahl von Datenplatten N in der RAID-Menge definiert). Falls
nicht, geht es zurück
und wartet darauf, dass der Client 752 mehr Daten schreibt.
Sobald genügend
Daten empfangen wurden, um einen kompletten Stripe zu überlagern,
ruft die Dateisystem-Schnittstelle 756 die RAID-Vorrichtung
mit raidStripeWrite(). Die RAID-Vorrichtung 760 berechnet die
Prüfinformationen
nach dem Bestimmen der FTSM (vorliegend RAID III), die dem Stripe
zugeteilt ist, indem sie auf die geeignete Tabelle in der Speicherplatz-Zuordnungseinrichtung 758 zugreift
(s. 2). Nach dem Erzeugen der Prüfinformationen (z.B. XOR-Block)
ruft die RAID-Vorrichtung 760 einen Faserkanaltreiber in
der Low-Level-Zugriffsschicht 762, um die Daten und Prüfinformationen
in den Plattenarray zu schreiben. Hier ist anzumerken, dass N fcWriteBlock()-Befehle
entsprechend an N Datenplatten ausgegeben werden können.
-
8 veranschaulicht,
wie Leseanforderungen von der Mehrschichtarchitektur, die eine eng
gekoppelte RAID-Vorrichtung und Dateisystem aufweist, behandelt
werden können.
Die Operation beginnt damit, dass das Client-Programm 752 einen
Lese vorgang anfordert, in diesem Fall fsMediaRead oder fsRead. Als
Antwort identifiziert das Dateisystem 754 die SAUs, die
vorausgehend zugeteilt wurden, um die von dem Client angeforderten
Daten zu speichern. Es ist anzumerken, dass die SAU ein oder mehrere
Stripes oder kleine Stripes sein kann (falls die Client-Anforderung
ein fsMediaRead ist), oder sie können
kleine Blöcke
sein (falls die Client-Anforderung fsRead ist). In jedem dieser
Szenarios ruft die Dateisystem-Schnittstelle 756 nach dem
Erhalt der SAU-Nummern die RAID-Vorrichtung 760 mit einer Anforderung,
die jeweiligen SAU-Nummern zu lesen. Daraufhin liest die RAID-Vorrichtung 760 gemäß herkömmlicher
Vorgehensweisen Blöcke
von Daten, die den SAUs entsprechen, und die Daten werden von einer
Schicht zur nächsten
an die Dateisystem-Schnittstelle 756 und
letztendlich an das Client-Programm 752 zurückgesendet.
Es ist anzumerken, dass es für
die RAID-Vorrichtung 760 nicht unbedingt erforderlich ist,
die FTSM zu identifizieren, die derjenigen SAU zugeteilt wurde,
von der gerade gelesen wird.
-
9 zeigt
die Operationen, die vom Wiederherstellen einer defekten Platte
umfasst werden. Nachdem die defekte Platte mit einer neuen ersetzt wurde,
fragt die RAID-Vorrichtung 760 das
Dateisystem (insbesondere die Speicherplatz-Zuordnungseinrichtung 758)
ab, um herauszufinden, welche SAUs (z.B. Stripes) wiederhergestellt
werden müssen.
Das Dateisystem sendet eine Liste von wiederherzustellenden Stripes
und die FTSM für
jeden Stripe zurück,
wobei die Stripe-Zuordnungs-Bitmap von 3 und die
FTSM-Bitmap von 6 verwendet werden können, um
diese Liste zu erzeugen. Die RAID-Vorrichtung 760 stellt
daraufhin jeden Stripe in dieser Liste wieder her, indem sie die
korrekte FTSM verwendet. Somit stellt die RAID-Vorrichtung nur diejenigen
Stripes wieder her, die von dem Dateisystem als in Verwendung befindlich
angegeben wurden.
-
10 veranschaulicht
ein Blockdiagramm der Hardware und der Software, die verwendet werden
kann, um ein eng gekoppeltes Speichersystem und Dateisystem gemäß einer
Ausführungsform
der Erfindung zu implementieren. Der Plattenarray 104 weist
eine Anzahl von Speichervorrichtungen 904 auf, die individuelle
rotierende Plattenlaufwerkeinheiten aufweisen, in denen die Speichermedien
eine Anzahl von Magnetplattenscheiben mit Sektoren zum Speichern
und Lesen der Daten als elektrische Impulse aufweist. Diese Speichervorrichtungen 904 können alle
mit einem seriellen Bus (wie etwa Faserkanal, FC) 908 mit
einer Anzahl von Schleifen 906 verbunden sein. Der Fibre
Channel Loop ist ein physikalischer serieller Bus, der verwendet
wird, um Platten mit einem I/O-Controller 910 zu verbinden.
Er kann aus Kupferdraht (für
elektrische Verbindungen) oder aus Plastik-/Glasfasern (für optische
Verbindungen) bestehen. Andere Datenkommunikationskanäle, die
für einen
Hochgeschwindigkeitszugriff auf jede Speichervorrichtung 904 geeignet
sind, können
alternativ verwendet werden. Der I/O-Controller 910 (vorliegend
speziell für
Fibre Channel) dient als die Schnittstelle zwischen dem Bus 908 und
der Hardware-/Softwarekombination,
welche die RAID-Vorrichtungsschicht 760 und die Dateisystemschichten implementiert.
Dieser Controller ist eine Hardware-mikrocodierte Vorrichtung, die
ein Low Level-Plattenprotokoll implementiert und die an die bzw. von
den individuellen Platten transferierten Daten formatiert. Ein Fibre
Channel I/O-Driver 912 implementiert
das Zugriffsprotokoll auf die Platten. Er gibt Lese-/Schreib-Plattenbefehle
aus und gibt die Daten zur und von der RAID-Vorrichtungssoftware 916 weiter.
Die RAID-Vorrichtungssoftware 916 ist für das Anwenden der FTSMs zuständig. Für Paritätsberechnungen
wird der XOR-Dienst 914 verwendet, der einen separaten
Prozessor mit einer spezialisierten Hardware-XOR-Funktion aufweist.
Die SAU-Managersoftware 920 führt die Zuordnungs-Bitmaps
und die FTSM-Bitmaps für
die verschiedenen SAUs einschließlich großer und kleiner Stripes und
kleiner Blöcke.
Der Name Space Manager 924 löst einen Dateinamen auf und
mappt ihn auf einen Dateibeschreiber. Im Falle einer bereits vorhandenen
Datei enthält der
Dateibeschreiber eine Liste der von dieser Datei verwendeten SAUs.
Beim Erzeugen einer neuen Datei werden neue SAUs vom SAU-Manager 920 angefordert
und der Datei zugeteilt.
-
Es
ist anzumerken, dass die Funktionalität des Dateisystems 754 und
der RAID-Vorrichtung 760 gemäß der obenstehenden Beschreibung
durch einen oder mehrere Prozessoren implementiert werden können (auf
die kollektiv als "ein
Prozessor" Bezug
genommen werden kann), welche Anweisungen ausführen, die auf einem maschinenlesbaren
Medium gespeichert sind. Diese Anweisungen können auf einem oder mehreren
Festkörper-Speicherchips (z.B.
RAMs), nicht flüchtigen
Massenspeichervorrichtungen mit eingebauten Controllern (z.B. Plattenlaufwerken),
oder tragbaren, nicht flüchtigen
Speichervorrichtungen (z.B. optischen Compact Disks) gespeichert
sein.
-
11 zeigt
eine besondere Anwendung der verschiedenen Ausführungsformen des eng gekoppelte
Sekundärspeichersystems
und Dateisystems gemäß der obenstehenden
Beschreibung. Gezeigt ist eine Collaborative Production Application,
die einen gleichzeitigen Zugriff auf alle Media-Dateien gestattet,
die von Produktionsteams benötigt
werden, die entweder einen Werbespot, ein Musikvideo oder eine Nachrichtensendung
produzieren. Ein solches Netz beinhaltet eine Anzahl von flexiblen
Komponenten einschließlich
eines Direktors 704, bei dem es sich um einen Speicherarray-Controller
sowie ein verteiltes Dateisystem handelt. Der Direktor verwaltet das
Aufzeichnen und Abfragen von Daten zu und von einem Speicherarray 708.
Der Speicherarray 708 kann der obenstehend beschriebene
Plattenarray 104 sein. Ein Schalter 712, bei dem
es sich um einen inhaltserkennenden Paketschalter handelt, ist in
der Lage, Datenpakete zu verbinden und zu routen, die verschiedene
Typen von Daten einschließlich
komprimierter Video- und Werbespot-/Programmbeschreiberdateien umfassen.
Nichtlineare Editoren 716 können direkt mit dem Schalter 712 verbunden sein.
Vorrichtungen ohne Ports, die ursprünglich dem Netz zugehören, können über eine
Schnittstelle 718 angeschlossen werden. Die Schnittstelle 718 kann digitales
Video und Audio in verschiedenen unterschiedlichen Formaten, die
komprimiert oder nicht komprimiert sein können, codieren. Beispiele für Vorrichtungen,
die Daten über
eine jeweilige Schnittstelle 718 zur Verfügung stellen
und empfangen können, umfassen
einen Videorecorder (VTR) 732, einen Satellitenempfänger 728,
eine Videokamera 724, und eine Sendestation 722.
Schließlich
konfiguriert und verwaltet ein Manager 740 die gesamte
Anwendung und stellt sicher, dass bestimmte Dateitypen an die richtige
Schnittstelle geroutet werden, und stellt des weiteren Sicherheit
und Zugangsrechte für
das Material im Netz zur Verfügung.
Eine solche Anwendung kann die VIDEO AREA NETWORK-Infrastruktur
für die
Produktion und Verteilung von Videos sein, die von Omneon Video
Networks, Inc. zur Verfügung
gestellt werden.
-
Die
verschiedenen Ausführungsformen
des eng gekoppelten Sekundärspeichersystems
und Dateisystems gemäß der vorliegenden
Erfindung können
in der Anwendung durch Konfigurieren des Direktors 704 zum
Implementieren des Dateisystems und der RAID-Vorrichtung einer Ausführungsform
der obenstehend beschriebenen Erfindung implementiert werden. In
diesem Fall fungieren der Direktor 704 und der Speicherbereich 708 als
Knoten in dem in 11 gezeigten Netz, in dem Client-Anfragen
von einem der nichtlinearen Editoren 716 stammen können, die
als separate Knoten in dem Netz angenommen sind.
-
Zusammenfassend
wurden verschiedene Ausführungsformen
der Erfindung beschrieben, die auf ein eng gekoppeltes Sekundärspeichersystem und
Dateisystem gerichtet sind. In der vorausgegangenen Beschreibung
wurde die Erfindung mit Bezug auf spezielle beispielhafte Ausführungsformen
beschrieben. Es ist jedoch ersichtlich, dass verschiedenen Modifikationen
und Änderungen
daran vorgenommen werden können,
ohne von dem weiteren Grundgedanken und Schutzbereich der Erfindung gemäß den beigefügten Ansprüchen abzuweichen. Beispielsweise
sind die genannten zahlenmäßigen Größen von
RAID-Menge, Stripe, und kleinem Stripe rein beispielhaft und werden
verwendet, um ein leichteres Verständnis der Erfindung zu ermöglichen.
Des Weiteren kann die besondere Ausführungsform, welche die Kombination
von Level I und Level III RAID für
die verschiedenen FTSMs anwendet, als Alternative mit SAUs konfiguriert
werden, denen zusätzliche andere
RAID-FTSMs zugeteilt sind (es gibt gegenwärtig sieben verschiedene RAID-Levels).
Eine weitere Alternative wäre
es, ein Paar von anderen FTSMs als Level I und Level III RAID zu
verwenden. Darüber
hinaus, obgleich der RAID und seine individuellen Magnetplattenlaufwerke
mit eingebauten Controllern als eine gegenwärtig bevorzugte Hardwareplattform
für das
Sekundärspeichersystem
dienen, steht zu erwarten, dass auch andere Typen von Sekundärspeichersystemen,
z.B. solche, die keine rotierenden Magnetplattenlaufwerke verwenden,
wie etwa optische Lese-/Schreib-Speicherplatten (jedoch keine langsameren
Systeme wie magnetische oder optische Bandlaufwerke, Lochkarten
oder Papierband), ebenfalls von dem obenstehend beschriebenen, eng
gekoppelten Sekundärspeicher-
und Dateisystem profitieren können.
Die Beschreibung und die Zeichnung sollten daher veranschaulichend
und nicht einschränkend
aufgefasst werden.