Diese Erfindung bezieht sich auf Datenspeichersysteme, die
mit Computern und Computernetzen verwendet werden. Insbe
sondere bezieht sich die Erfindung auf ein Verfahren und
eine Vorrichtung zum Beschleunigen eines Dateisystem
zugriffs auf ein Plattenarray. Die Erfindung umfaßt sowohl
ein Datenspeichersystem als auch ein Verfahren zum Zugrei
fen auf eine Datenspeichervorrichtung. Außerdem umfaßt die
Erfindung ein Programmprodukt zum Bedienen von Dateisystem
zugriffsoperationsanforderungen von einem Dateisystemklien
ten.
Dateisysteme oder "File-Systeme" und Plattenarrays verwen
den zwei unterschiedliche Verfahren zum Zugreifen auf Da
ten, die auf einem Datenspeichermedium gespeichert sind.
Die beiden Verfahren unterscheiden sich durch eine Zahl von
Charakteristika. Bei einem Dateisystem wird z. B. auf Da
teien unter Verwendung einer Dateiabstraktion zugegriffen.
Dies bedeutet, daß Daten durch eine Datei dargestellt wer
den, die geöffnet, geschlossen, erzeugt, gelöscht, gelesen
und geschrieben werden kann. Daten werden in einem Dateisy
stem durch eine Hierarchie von Dateien und Verzeichnissen
verwaltet. Diese hierarchische Datenverwaltung wird allge
mein als ein wesentlicher Vorteil gegenüber anderen Daten
verwaltungsschemata betrachtet. Dateisysteme unterstützen
auch sowohl eine gemeinschaftliche Verwendung von Daten als
auch eine gemeinschaftliche Verwendung eines Datenspeicher
geräts. Die Sicherheit in Datenspeichergeräten basiert auf
Datei- und Verzeichnispegelzugriffssteuerungslisten, die
als ein Teil der Dateisystemprotokolle standardisiert sind.
Ein weiterer Vorteil von Dateisystemen besteht darin, daß
eine Klient/Server-Kompatibilität auf einer kleinen Zahl
von gut unterstützen Protokollen basiert. Die Dateisystem
leistung wird jedoch durch Dateiabbildungsanordnungen, die
sich auf einer Datenspeicherplatte befinden, reduziert, wo
bei dieselben Daten für eine Datei an physischen oder vir
tuellen Orten des Speichermediums, das einem Datenspeicher
gerät zugeordnet ist, abbilden müssen.
Ein Plattenarray ist ein Speichersystem, das eine Zahl von
separaten Speichergeräten oder -Platten verwendet und Daten
über alle der separaten Geräte verwaltet. Diese Plattenar
rayspeichersysteme sind zum Implementieren von Datenspei
cherredundanzschemata weit verbreitet, um vor Fehlern ein
zelner Speichergeräte zu schützen. Im Gegensatz zu einem
Dateisystem wird auf Daten in einem Plattenarray unter Ver
wendung einer Blockspeicherabstraktion zugegriffen. Dies
bedeutet, daß Daten auf große zusammenhängende Speicherräu
me oder logische Einheiten abgebildet werden, und daß auf
dieselben als Blöcke, die in diesen logischen Einheiten
enthalten sind, zugegriffen wird. Jeder Block in einer lo
gischen Einheit stellt eine bestimmte Menge von Datenspei
cherraum dar, üblicherweise einen Speicherraum von 512
Bytes. Die gespeicherten Daten in einem Plattenarray werden
als physische und virtuelle Datenspeichergeräte verwaltet,
die durch Volumina und/oder logischer Einheiten dargestellt
sind. Obwohl die Blockspeicherabstraktion die Geschwindig
keit verbessern kann, mit der große Datenmengen geschrieben
und von den Speichergeräten wiedergewonnen werden können,
gibt es eine Zahl von Nachteilen, die Plattenarrays vergli
chen mit Dateisystemen zugeordnet sind. Ein Nachteil be
steht darin, daß die Klient/Server-Kompatibilität für Plat
tenarrays einer Vielzahl von Beschränkungen unterworfen
ist, die unter den Klienten und Servern variieren. Außerdem
unterstützen Plattenarrays nur eine gemeinschaftliche Ver
wendung des Geräts, nicht jedoch die der Daten. Ferner ba
siert die Sicherheit in Geräten auf lieferantenspezifischen
Merkmalen.
Fig. 1 liefert eine schematische Darstellung einer Anord
nung des Stands der Technik zwischen einem Plattenarraysy
stem 100 und einem Dateisystem 101. Die Anordnung umfaßt
ein Array physischer Speichergeräte 102, die Plattenlauf
werke sein können, die jeweils zur Kommunikation mit einer
Arraysteuerung 103 verbunden sind. Die Arraysteuerung 103
ist ein Verarbeitungsgerät, das Arraysteuerungsprogrammpro
zesse ausführt, um Geräte 102 zu steuern und die Daten, die
über die Geräte gespeichert sind, zu verwalten. Die Array
steuerung 103 kommuniziert mit einem Hostcomputer 104 durch
eine geeignete Kommunikationsanordnung, die durch eine Li
nie 105 dargestellt ist. Das Dateisystem 101 ist durch Com
puterprogrammprozesse implementiert, die durch einen Pro
zessor an dem Hostcomputer 104 ausgeführt werden. Obwohl
Fig. 1 die Arraysteuerung separat von dem Hostcomputer
zeigt, kombinieren einige Plattenarraysysteme des Stands
der Technik die Funktionen der Arraysteuerung und des Host
prozessors in einem einzelnen Verarbeitungsgerät, das dem
Plattenarraysystem zugeordnet ist. Die Kooperation zwischen
der Plattenarraysteuerung 103 und dem Dateisystem 101 ist
im allgemeinen die gleiche, und zwar unabhängig davon, ob
die Arraysteuerungs- und die Dateisystemprozesse auf einem
einzelnen Verarbeitungsgerät oder separaten Verarbeitungs
geräten durchgeführt werden.
Bei dem System 100 des Stands der Technik, das in Fig. 1
gezeigt ist, kann man sich das Dateisystem und Plattenar
raysteuerungsprozesse als zwei separate Verarbeitungs
schichten vorstellen, die kooperieren, um einen Zugriff auf
das physische Medium, das in Speichergeräten 102 enthalten
ist, zu liefern. Das Dateisystem 101 ist im wesentlichen
zwischen den Dateisystemklienten (in Fig. 1 nicht gezeigt)
und der Plattenarraysteuerung 103 eingefügt, die tatsäch
lich einen Zugriff auf die Geräte 102 verwaltet und steu
ert. Um zum Beispiel eine Datei zu lesen, legt ein Dateisy
stemklient dem Dateisystem 101 eine Lesen-Operation-
Anforderung vor. Dieser Dateisystemklient weist einen Pro
grammprozeß auf, der an dem Hostcomputer 104 oder an einem
Computer, der netzmäßig mit dem Hostcomputer verbunden ist,
ausgeführt werden kann. In jedem Fall empfangen Dateisy
stemprozesse die Anforderung von dem Dateisystemklienten
und aktualisieren die Dateisystemdatenverwaltungsanordnung,
die den Dateinamen, üblicherweise verschiedene Dateiattri
bute, und Speicherzuweisungsinformationen speichert, die
anzeigen, wo die Daten, die die Datei ausmachen, gespei
chert sind. Das Dateisystem 101 gibt dann eine geeignete
Instruktion an die Plattenarraysteuerung 103 aus. Die Ar
raysteuerung 103 verarbeitet die Instruktion, um die ange
forderten Dateidaten von einem oder mehreren Speichergerä
ten 102 zu lesen. Die Daten, die von Speichergeräten 102
gelesen werden, werden zuerst in einen Speicher Cache
gespeichert, der der Arraysteuerung 103 zugeordnet ist, und
dann zu einem Cachespeicher geleitet, der dem Dateisystem
101 zugeordnet ist. Das Dateisystem 101 gibt dann die ange
forderten Daten wie durch die Lesen-Operation angeleitet
zurück. Dieser Schritt des Übertragens von Daten von der
Plattenarraysteuerung 103 zu dem Dateisystem 101, bevor die
Daten zu dem Dateisystem übertragen werden können, bringt
einen Leistungsnachteil mit sich, insbesondere wenn die Da
tei, auf die zugegriffen wird, eine große Datei ist.
Es ist die Aufgabe der vorliegenden Erfindung, ein verbes
sertes Verfahren zum Zugreifen auf ein Datenspeichergerät,
ein Programmprodukt mit verbesserten Charakteristika oder
ein Datenspeichersystem mit verbesserten Charakteristika zu
schaffen.
Diese Aufgabe wird durch ein Verfahren zum Zugreifen auf
ein Datenspeichergerät gemäß Anspruch 1, ein Programmpro
dukt gemäß Anspruch 15 oder 21 oder ein Datenspeichersystem
gemäß Anspruch 26 gelöst.
Folglich besteht ein Vorteil dieser Erfindung darin, ein
Verfahren und eine Vorrichtung zu schaffen, die die oben
beschriebenen Probleme, die Datenspeichersystemen zugeord
net sind, überwinden. Insbesondere besteht ein Vorteil die
ser Erfindung darin, ein Verfahren und eine Vorrichtung zu
schaffen, die bestimmte Dateisystemzugriffsoperationen au
ßerhalb des Dateisystems durchführen, während die hierar
chische Struktur des Dateisystems aufrechterhalten wird.
Außerdem besteht ein Vorteil der vorliegenden Erfindung
darin, ein Programmprodukt zum Bedienen von Dateisystem
zugriffsoperationsanforderungen auf eine Weise zu schaffen,
die den Dateisystemzugriff auf Dateien, die durch eine
Plattenarrayimplementierung gespeichert sind, beschleunigt.
Diese Vorteile werden bei einem System, das Dateisystempro
zesse, Arraysteuerungsprozesse und eines oder mehrere Da
tenspeichergeräte umfaßt, auf die durch die Arraysteue
rungsprozesse zugegriffen wird, erzielt. Gemäß der Erfin
dung werden bestimmte Dateisystemzugriffsoperationen von
den Dateisystemprozessen umgeleitet, so daß die Arraysteue
rungsprozesse direkt die angeforderte Zugriffsoperation
durchführen können. Die Arraysteuerungsprozesse kommunizie
ren dann mit den Dateisystemprozessen, so daß die Dateisy
stemprozesse die Dateisystemdatenverwaltungsanordnung ge
eignet aktualisieren können. Auf diese Weise wird die er
wünschte hierarchische Dateisystemverwaltung beibehalten,
während auf das Speichermedium direkt durch die Arraysteue
rungsprozesse ansprechend auf eine Dateisystemzugriffsope
rationsanfrage zugegriffen werden kann. Dieser direkte
Speichergerätzugriff für Dateisystemzugriffsoperationen ist
insbesondere für große Dateien von Vorteil.
Der Ausdruck "Dateisystemprozesse", wie er in dieser Offen
barung verwendet wird, bezieht sich auf Software oder einen
Computerprogrammcode, der durch ein geeignetes Verarbei
tungsgerät ausgeführt wird, um das Dateisystem zu implemen
tieren. Dieser Programmcode umfaßt einen Code zum Implemen
tieren einer Datenverwaltungsanordnung für das Dateisystem.
Die Dateisystemdatenverwaltungsanordnung umfaßt Informatio
nen für jede Datei, die durch das Dateisystem verwaltet
wird, wobei diese Informationen in einer oder mehreren Da
tentabellen gespeichert sein können, die den Dateinamen auf
verschiedene Attribute für die Datei und auf Speicherzutei
lungsinformationen für die Datei beziehen.
Der Ausdruck "Arraysteuerungsprozesse" bezieht sich auf die
Software oder einen Computerprogrammcode, der durch ein ge
eignetes Verarbeitungsgerät zum Steuern und Verwalten eines
Arrays von Platten oder anderen physischen Speichergeräten
ausgeführt wird. Diese Arraysteuerungsprozesse umfassen ei
nen Programmcode zum Interpretieren eines empfangenen Be
fehls und einen Abbildungscode zum Definieren logischer
Einheiten in den physischen Speichergeräten und zum Abbil
den von Daten an den verschiedenen logischen Einheiten und
an Blöcken, die in den verschiedenen logischen Einheiten
enthalten sind. Ein Beispiel von Arraysteuerungsprozessen
ist in dem U.S.-Patent Nr. 5,392,244 beschrieben, wobei der
gesamte Inhalt desselben hierin durch Bezugnahme aufgenom
men wird. Bei diesem Beispiel werden die Arraysteuerungs
prozesse durch eine Arraysteuerung, die separat von einem
Großcomputer ist, durchgeführt, mit dem das dargestellte
Plattenarray verbunden ist, während die Dateisystemprozesse
durch einen Prozessor durchgeführt werden, der dem Hostcom
puter zugeordnet ist.
Der Ausdruck "Dateisystemzugriffsoperationsanforderung",
wie er in dieser Offenbarung verwendet wird, weist einen
computerlesbaren Code auf, der eine Anforderung nach einer
bestimmten Dateisystemoperation, die eine Datei ein
schließt, darstellt. Dateisystemzugriffsoperationen umfas
sen Operationen zum Erzeugen, Löschen, Öffnen, Schließen,
Lesen oder Schreiben einer Datei. Diese Dateisystem
zugriffsoperationsanforderungen werden dem Datenspeichersy
stem gemäß der Erfindung durch Dateisystemklienten kommuni
ziert, die mit dem System durch eine geeignete Computer
netzkommunikationsanordnung verbunden sind. Dateisystem
zugriffsoperationen, die von dem Typ oder der Klasse sind,
die gemäß der Erfindung von den Dateisystemprozessen zu den
Arraysteuerungsprozessen umgeleitet werden, werden in die
ser Offenbarung als "umleitbare" Operationen bezeichnet.
Die Klasse von umleitbaren Operationen kann vorzugsweise
durch die Dateigröße definiert sein, obwohl jedes andere
Dateiattribut oder jede Kombination von Attributen in dem
Bereich der Erfindung verwendet werden kann. Zu Zwecken der
Vereinfachung dieser Offenbarung wird angenommen, daß die
Dateigröße das Attribut ist, das verwendet wird, um zu de
finieren, ob eine Operation umleitbar ist oder nicht. Er
zeugen-, Löschen-, Lesen- und Schreiben-Operationen, die
sich auf eine große Datei beziehen, sind umleitbare Opera
tionen, während Dateizugriffsoperationen, die sich auf eine
kleine Datei beziehen, nicht umleitbare Operationen sind,
es sei denn, es ist ein Aufhebungsmerkmal vorhanden, das
die Behandlung der Operation unabhängig von der tatsächli
chen Dateigröße vorgibt. Es ist ersichtlich, daß das System
eine Definition dafür erfordert, was eine "große" Datei
ausmacht. Diese Definition kann einfach eine Schwellenda
teigröße sein, die in Bytes oder jeder anderen geeigneten
Einheit dargestellt ist.
Das Verfahren gemäß der Erfindung umfaßt zuerst ein Empfan
gen einer Dateisystemzugriffsoperationsanforderung und ein
Bestimmen, ob die Anforderung eine Operation spezifiziert,
die eine umleitbare Operation aufweist. Wenn die Datei
zugriffsoperationsanforderung eine umleitbare Operation
spezifiziert, umfaßt das Verfahren ein Umleiten der umleit
baren Operation von den Dateisystemprozessen zu den Array
steuerungsprozessen. Das Verfahren umfaßt als nächstes ein
Durchführen der umleitbaren Operation mit den Arraysteue
rungsprozessen und ein Aktualisieren der Dateisystemdaten
verwaltungsanordnung mit Operationsergebnisinformationen
von den Arraysteuerungsprozessen.
Der Dateisystemdatenverwaltungseintrag für jede Datei, die
der Gegenstand einer umleitbaren Erzeugen-Operation war,
wird von der normalen Struktur, die für Dateien verwendet
wird, die der Gegenstand einer nicht umleitbaren Erzeugen-
Operation waren, modifiziert. Ein normaler Dateisystemein
trag für eine Datei kann den Dateinamen und verschiedene
Dateiattribute gemeinsam mit Informationen hinsichtlich
tatsächlicher oder virtueller Speicherraumorte umfassen,
die für Daten, die die Datei bilden, zugeordnet sind. Gemäß
der vorliegenden Erfindung jedoch schneidet das Dateisystem
seinen Datenverwaltungseintrag für eine Datei, die der Ge
genstand einer umleitbaren Erzeugen-Operation ist, ab. Ins
besondere wird der Eintrag abgeschnitten, um eine Referenz
auf die logische Einheit, der die Datei zugeordnet wurde,
anstelle von Informationen hinsichtlich Speicherraumorten
zu enthalten, die für die Datei durch das Dateisystem zuge
wiesen sind. Diese Informationen der logischen Einheit wer
den durch die Arraysteuerungsprozesse als Operationsergeb
nisinformationen geliefert und sind anstelle der Dateisy
stemortzuteilungsinformationen für die Datei vorhanden. Da
teisystemraumzuteilungsinformationen für die Datei sind
nicht verfügbar oder notwendig, da das Dateisystem keinen
Dateisystemraum für die Datei zuteilt, wobei Speicherraum
statt dessen durch die Arraysteuerungsprozesse zugeteilt
und verwaltet wird.
Die Operationsergebnisinformationen, die verwendet werden,
um die Dateisystemdatenverwaltungsanordnung für Operationen
zu aktualisieren, die direkt durch die Arrayprozesse ge
handhabt werden, hängen von der Natur der Operation ab. Für
eine umleitbare Erzeugen-Operation umfassen die Operations
ergebnisinformationen die Referenz auf die logische Ein
heit, bei der die Arraysteuerungsprozesse bewirken, daß die
Datei gespeichert wird. Wenn die Operation eine umleitbare
Lesen-Operation ist, können die Operationsergebnisinforma
tionen eine Anzeige oder einen Empfang von den Arraysteue
rungsprozessen umfassen, um zu zeigen, daß die Lesen-
Operation fertiggestellt wurde. Diese Operationsergebnisin
formationen werden alle verwendet, um die Dateisystemdaten
verwaltungsanordnung zu aktualisieren, so daß alle Funktio
nen des Dateisystems aufrechterhalten werden, insbesondere
einschließlich des Verzeichnisses und der Dateihierarchie.
Ein Datenspeichersystem gemäß der Erfindung umfaßt ein Da
tenspeichergerät, das ein Speichermedium aufweist, auf dem
Daten gespeichert werden können. Die bevorzugte Form der
Erfindung umfaßt tatsächlich ein Array von Massendatenspei
chergeräten, wie z. B. Plattenlaufwerken. Das Datenspei
chersystem umfaßt auch eines oder mehrere Datenverarbei
tungsgeräte oder Datenverarbeitungseinrichtungen. Eine Ein
gangs/Ausgangs-Anordnung ist mit der Datenverarbeitungsein
richtung zum Weiterleiten von Kommunikationen zwischen ei
nen Dateisystemklienten und der Datenverarbeitungseinrich
tung verbunden, während eine Schnittstelle zwischen der Da
tenverarbeitungseinrichtung und dem Datenspeichergerät Kom
munikationen zwischen diesen Elementen des Systems erleich
tert. Die Datenverarbeitungseinrichtung führt die Dateisy
stem- und Arraysteuerungsprozesse aus und führt die oben
Bezug nehmend auf das Verfahren gemäß der Erfindung be
schriebenen Funktionen durch. Insbesondere bestimmt die Da
tenverarbeitungseinrichtung, ob eine Dateisystemzugriffs
operationsanforderung eine umleitbare Operation umfaßt.
Wenn die Anforderung eine umleitbare Operation umfaßt, wird
die Verarbeitungseinrichtung programmiert, um die umleitba
re Operation zu den Arraysteuerungsprozessen zu leiten, so
daß diese Prozesse die Operation durchführen können. Die
Datenverarbeitungseinrichtung ist ebenfalls programmiert,
um die Dateisystemdatenverwaltungsanordnung unter Verwen
dung von Operationsergebnisinformationen für die umleitbare
Operation zu aktualisieren.
Das Datenspeichersystem und das Zugriffsverfahren gemäß der
Erfindung liefern alle Vorteile von sowohl Dateisystemen
als auch Plattenarrays ohne die normalerweise vorhandenen
Nachteile. Insbesondere werden Daten gemäß der gemeinsamen
Dateiabstraktion gemäß einem Verzeichnis und einer Datei
hierarchie verwaltet. Auf kleine Dateien kann auf die nor
male Weise mit den Dateisystemprozessen, die mit den Array
steuerungsprozessen kooperieren, zugegriffen werden. Auf
große Dateien kann jedoch direkt durch die Arraysteuerungs
prozesse zugegriffen werden, wenn auch der Zugriffsbefehl
einen Dateisystembefehl aufweist und die Dateisystemhierar
chie beibehalten wird. "Direkter Zugriff" bedeutet, daß die
Arraysteuerungsprozesse eine große Datei von der Speiche
rung zu dem Dateisystemklienten liefern, ohne daß die Daten
für die Datei durch die Dateisystemprozesse geleitet werden
müssen. Dieser direkte Zugriff für große Dateien erhöht die
Systemleistung für große Dateien erheblich. Ferner kann das
System die gemeinschaftliche Verwendung von sowohl Daten
als auch einem Gerät zwischen Dateisystemklienten unter
stützen, wobei die Sicherheit wie bei gewöhnlichen Dateisy
stemen gehandhabt werden kann.
Diese sowie weitere Ziele, Vorteile und Merkmale der Erfin
dung werden aus der folgenden Beschreibung der bevorzugten
Ausführungsbeispiele Bezug nehmend auf die beigefügten
Zeichnungen ersichtlich. Es zeigen:
Fig. 1 eine schematische Darstellung eines Plattenarray
speichersystems des Stands der Technik, das mit
einem Hostcomputer gekoppelt ist;
Fig. 2 eine schematische Darstellung eines Datenspei
chersystems, das die Prinzipien der Erfindung
enthält;
Fig. 3 eine schematische Darstellung, die Gruppierungen
von verschiedenen Softwareprozessen zeigt, die
bei dem Datenspeichersystem, das in Fig. 2 ge
zeigt ist, operieren;
Fig. 4 eine schematische Darstellung, die die Interak
tionen zwischen den verschiedenen Softwareprozes
sen, die in Fig. 3 gezeigt sind, zeigt;
Fig. 5 ein Flußdiagramm, das die Prozeßschritte zeigt,
die gemäß der Erfindung durchgeführt werden;
Fig. 6 eine Darstellung eines Eintrags in die Dateisy
stemdatenverwaltungsanordnung gemäß der Erfin
dung; und
Fig. 7 eine Darstellung eines Eintrags in eine Array
steuerungsdatenverwaltungsanordnung gemäß der Er
findung.
Bezug nehmend auf Fig. 2 umfaßt ein Datenspeichersystem
201, das die Prinzipien der Erfindung aufweist, eine Daten
verarbeitungsanordnung 202 und ein Array 203a separater
Speichergeräte 203. In der Form der Erfindung, die in Fig.
2 gezeigt ist, umfaßt die Datenverarbeitungsanordnung 202
zwei separate Prozessoren, eine Arraysteuerung 204 und ei
nen Dateisystemprozessor 205. Ein Systembus 206 verbindet
die beiden Prozessoren 204 und 205, einen Speichergerät
adapter 207 und ein Eingangs/Ausgangs-Tor 208. Der separate
Adapter 207, der in Fig. 2 gezeigt ist, liefern eine
Schnittstelle mit dem Speichergerätbus 209. Außerdem ist
ein Hardwareprotokollstapel 210 dem Eingangs/Ausgangs-Tor
208 zum Liefern von Netzkommunikationsdiensten zugeordnet,
die es dem System 201 ermöglichen, mit einem Computernetz
211 zu kommunizieren. Das Computernetz 211 umfaßt einen
oder mehrere Dateisystemklienten 212, die einen Dateisy
stemzugriff auf das Speichersystem 201 haben. Diese Datei
systemklienten 212 stellen separate Rechengeräte dar, wie
z. B. Personalcomputer oder Arbeitsplatzrechner auf dem
Netz 211.
Die einzelnen Speichergeräte 203, die in Fig. 2 gezeigt
sind, weisen vorzugsweise Plattenlaufwerke oder andere ge
eignete Massenspeichergeräte auf. Obwohl dies in Fig. 2
nicht gezeigt ist, ist zu erkennen, daß diese Speichergerä
te 203 jeweils ein Schnittstellenverbindungselement und ei
ne Treibersteuerung umfassen. Das Schnittstellenverbin
dungselement ermöglicht es, daß das jeweilige Gerät mit dem
Speichergerätbus 209 verbunden ist, wobei die Treibersteue
rung ein Verarbeitungselement zum Ausführen eines Programm
codes aufweist, um die Operation des bestimmten Speicherge
räts zu steuern.
Das dargestellte Speichersystem 201 kann in einem Gehäuse
(nicht gezeigt) untergebracht sein, das die Datenverarbei
tungsanordnung 202, das Eingangs/Ausgangs-Tor 208 und die
Protokollstapelhardware 210, den Speichergerätschnittstel
lenadapter 207 und eines oder mehrere Speichergeräte 203
unterbringt. Der dargestellte Speichergerätbus 209 umfaßt
ein externes Verbindungselement 213 zum Verbinden zusätzli
cher Speichergeräte außerhalb des Systemgehäuses.
Die bestimmte Struktur des Speichersystems 201, das in Fig.
2 dargestellt ist, ist nur als eine bevorzugte Form der Er
findung gezeigt. Viele Variationen bezüglich der Struktur
sind in dem Bereich der Erfindung möglich. Obwohl z. B.
zwei separate Datenverarbeitungsgeräte 204 und 205 in Fig.
2 gezeigt sind, ist es ersichtlich, daß alle Datenverarbei
tungsfunktionen, die bei der Erfindung erforderlich sind,
auf einem einzelnen Datenverarbeitungsgerät durchgeführt
werden oder zwischen mehr als zwei Datenverarbeitungsgerä
ten aufgeteilt sein können. Außerdem können die Funktionen,
die durch den Speichergerätschnittstellenadapter 207, der
in Fig. 2 gezeigt ist, geliefert werden, durch ein Verar
beitungsgerät, das in der Verarbeitungseinrichtung 202 ent
halten ist, durchgeführt werden. Die Funktionen, die durch
den Protokollstapel 210, der in Fig. 2 gezeigt ist, gelie
fert werden, können ebenso durch eine andere Verarbeitungs
anordnung in dem System, wie z. B. die Verarbeitungsein
richtung 202 durchgeführt werden. Ferner ist, obwohl ein
externes Speichergerät 203 und vier interne Speichergeräte
203 zu Beispielzwecken in Fig. 2 gezeigt sind, die Erfin
dung nicht auf diese oder eine andere Zahl von Speicherge
räten beschränkt. Obwohl die Erfindung auf keinen bestimm
ten Typ von Speichergeräten beschränkt ist, können die Ge
räte SCSI-Geräte sein, wobei in diesem Fall der Bus 209 ei
nen SCSI-Bus aufweisen würde und der Adapter 207 einen
SCSI-Adapter. Der Systembus 206 kann jeden geeigneten Bus
standard, wie z. B. PCI, aufweisen.
Für Fachleute ist es ebenfalls ersichtlich, daß es möglich
ist, die vorliegende Erfindung in Verbindung mit einem
Hostcomputer zu implementieren, und nicht als eine allein
stehende Netzeinheit, die in Fig. 2 dargestellt ist. Bei
dieser alternativen Implementierung können der Arraysteue
rungsprozessor und der Speichergerätadapter auf einer hin
zufügbaren Karte, wie z. B. einer PCI-Karte, implementiert
sein, die mit dem PCI-Bus eines Hostcomputers zu verbinden
ist, wobei die Speichergeräte alle außerhalb des Hostcompu
ters sein könnten. Die Prozesse, die durch den Dateisystem
prozessor 205 in Fig. 2 durchgeführt werden, würden bei
dieser alternativen Form der Erfindung durch einen Prozes
sor des Hostcomputers durchgeführt werden, wobei das Ein
gangs/Ausgangs-Tor und der Protokollstapel des Hostcompu
ters für Netzkommunikationen verwendet werden könnten.
Fig. 3 zeigt weitere Details der Programmprozesse, die
durch die Datenverarbeitungsanordnung 202 unter der Steue
rung eines Computerprogrammcodes gemäß der Erfindung durch
geführt werden. Die Arraysteuerung 204 führt eine Zahl von
Programmprozessen durch oder führt dieselben aus, wobei je
der derselben in einem separaten Kasten gezeigt ist, die in
dem Kasten 204 in Fig. 3 enthalten sind. Diese Arraysteue
rungsprogrammprozesse werden durch einen Arraysteuerungs
programmcode implementiert und werden in dieser Offenbarung
kollektiv als Arraysteuerungsprozesse 300 bezeichnet. In
der dargestellten Form der Erfindung umfassen die
Arraysteuerungsprozesse 300 einen
Arraybefehlsinterpretierer 301, eine virtuelle
Arrayabbildungskomponente 302 und eine RAID-
Verwaltungskomponente 303. Diese Elemente stellen jeweils
einen Computerprogrammcode dar, der durch die Array
steuerung 204 ausgeführt wird, um verschiedene Arraysteue
rungsfunktionen durchzuführen. Fig. 3 zeigt auch einen Ar
ray-Cache-Speicher 304, der dem Arraysteuerungsprozessor
204 zugeordnet ist. Dieser Array-Cache-Speicher kann einen
Direktzugriffsspeicher aufweisen, der der Arraysteuerung
zugeordnet ist, oder kann einen batteriegepufferten Direkt
zugriffsspeicher aufweisen. Der Speicher wird verwendet, um
Daten, die unter Steuerung der Arraysteuerungsprozesse 300
zu und von den Speichergeräten übertragen werden, einer Ca
che-Speicherung zu unterziehen.
Der Arraybefehlsinterpretierer 301, der in Fig. 3 gezeigt
ist, ist für ein Empfangen eines auf das Datenspeichergerät
bezogenen Befehls und für ein Umwandeln des Befehls in In
struktionen oder Rufe nach anderen Arraysteuerungsprozessen
verantwortlich. Bei der bevorzugten Form der Erfindung um
faßt der Arraybefehlsinterpretierer 301 auch einen Byte
zugriffsumwandlungsprogrammcode zum Umwandeln der Byte
versatzzugriffsinstruktion, die aus einer umleitbaren Ope
ration resultiert, in eine Blockzugriffsinstruktion, wie
unten genauer erläutert wird. Eine virtuelle Arrayabbil
dungskomponente 302 liefert eine Arraydatenverwaltungsan
ordnung, die Daten, die auf den Speichergeräten gespeichert
sind, auf logische Einheiten und auf Blöcke von Speicher
raum bezieht. Ein Eintrag in diese Arraydatenverwaltungsan
ordnung ist in Fig. 7, die unten beschrieben wird, gezeigt.
Die virtuelle Abbildungskomponente 302 ist vorzugsweise
auch für ein Erzeugen und Zuweisen von logischen Einheiten
für die Daten, die über das Gerätarray 203a gespeichert
werden sollen, verantwortlich. Eine RAID-Komponente 303 ist
für eine Verwaltung des Speichergerätarrays 203a und für
Kommunikationen mit der virtuellen Arrayabbildungskomponen
te verantwortlich. Die RAID-Komponente 303 implementiert
auch alle Datenspeicherredundanzschemata oder RAID-
Schemata, die durch das Speichersystem 201 unterstützt wer
den. Die Arraysteuerungsprozesse sind in der Technik von
Plattenarrays und RAID-Systemen bekannt und werden hier
nicht weiter beschrieben, um die Erfindung nicht mit unnö
tigen Details zu verschleiern.
Der Dateisystemprozessor 205, der in den Fig. 2 und 3 ge
zeigt ist, führt eine Zahl von Programmprozessen durch oder
führt dieselben aus, wobei jeder derselben durch einen Com
puterprogrammcode implementiert ist. Jeder Prozeß ist in
einem separaten Kasten gezeigt, die in dem Kasten 205, der
in Fig. 3 gezeigt ist, enthalten sind. Zusätzlich zu den
Dateisystemprozessen oder dem Dateisystem 308, das durch
einen Dateisystemprogrammcode implementiert ist, führt der
Programmsystemprozessor 205 eine Plattentreiberkomponente
309, eine Keil- oder Wedge-Dateisystemkomponente 310 und
eine Bytemodustreiberkomponente 311 aus. Jede dieser Kompo
nenten stellt Programmprozesse dar, die durch einen Compu
terprogrammcode implementiert werden, der durch den Datei
systemprozessor 205 ausgeführt wird. Fig. 3 zeigt auch ei
nen Dateisystem-Cache-Speicher 312, der einen Direkt
zugriffsspeicher aufweist, der den Dateisystemprozessor 205
zugeordnet ist. Der Dateisystem-Cache-Speicher 312 liefert
Speicherraum zum Cache-Speichern von Dateidaten, die letzt
endlich zu und von Datenspeichergeräten 203, die in Fig. 2
gezeigt sind, kommuniziert werden.
Es ist ersichtlich, daß die Dateisystemprozesse, die in
Fig. 3 bei Block 308 gezeigt sind, alle Programmprozesse
umfassen, die zum Implementieren des erwünschten Dateisy
stems notwendig sind. Insbesondere liefern Dateisystempro
zesse 308 eine Dateisystemdatenverwaltungsanordnung. Die
Dateisystemdatenverwaltungsanordnung umfaßt eine oder meh
rere Datentabellen, die jede Datei in dem Dateisystem auf
verschiedene Dateiattribute beziehen. Außerdem beziehen,
wie später erklärt wird, die Dateisystemdatenverwaltungsta
bellen jede Datei auf entweder Speichergerätzuteilungsin
formationen oder eine Referenz auf eine logische Einheit,
die durch Arraysteuerungsprozesse 300 erzeugt und verwaltet
wird. Für Kommunikationen mit den Arraysteuerungsprozessen
300 beruhen Dateisystemprozesse 308 auf einer Plattentrei
berkomponente 309. Die Plattentreiberkomponente 309 umfaßt
einen Computerprogrammcode zum Kommunizieren von Dateisy
stemdatenzugriffsbefehlen von den Dateisystemprozessen 308
zu den Arraysteuerungsprozessen 300, um auf bestimmte Da
teisystemdaten, die an den Datenspeichergeräten 203 gespei
chert sind, zuzugreifen. Insbesondere liefert die Platten
treiberkomponente 309 jede notwendige Codierung von In
struktionen und Daten, die zwischen den Dateisystemprozes
sen 308 und den Arraysteuerungsprozessen kommuniziert wer
den. Es ist ersichtlich, daß die Plattentreiberkomponente
betrachtet werden kann, um in den Dateisystemprozessen 308
enthalten zu sein, bei dieser Offenbarung jedoch separat
dargestellt ist, um ihre bestimmte Funktion besser zu be
schreiben.
Wie bei den meisten Arraysteuerungsprozessen 300 sind die
spezifischen Implementierungen und die Operation der Datei
systemprozesse 308 und der Plattentreiberkomponente 309
Fachleuten auf diesem Gebiet bekannt. Deshalb werden Imple
mentierungs- und Operationsdetails in dieser Offenbarung
nur wie notwendig beschrieben, um die vorliegende Erfindung
klar und vollständig zu offenbaren.
Die Keildateisystemkomponente 310 implementiert spezielle
Dateisystemprozesse, die zwischen Dateisystemklienten (212
in Fig. 2) und Dateisystemprozesse 308 eingefügt sind. Wie
weiter unten Bezug nehmend auf Fig. 4 und 5 beschrieben
wird, empfängt die Keildateisystemkomponente 310
Dateisystemzugriffsoperationsanforderungen von
Dateisystemklienten und bestimmt, ob die Anforderung eine
umleitbare Operation umfaßt. Die Bestimmung wird durch
einen Operationserfassungsprogrammcode, der in dem
Keildateisystem enthalten ist, durchgeführt. Die
Keildateisystemkomponente 310 leitet nicht umleitbare
Operationen zu Dateisystemprozessen 308 weiter. Diese
Verarbeitung nicht umleitbarer Operationen durch die
Keilsystemprozesse 308 tritt wie bei einem Dateisystem des
Stands der Technik auf. Wenn die Keildateisystemkomponente
310 jedoch eine umleitbare Operation erfaßt, verhindert
dieselbe, daß die Operation die Keilsystemprozesse 308
erreicht, und leitet die umleitbare Operation statt dessen
um, um durch die Arraysteuerungsprozesse 300 verarbeitet zu
werden, die bei der Arraysteuerung 204 ausgeführt werden.
Weitere Details der Operation der Keildateisystemkomponente
310 werden unten Bezug nehmend auf die Fig. 4 und 5
beschrieben.
Eine Verwendung der Keildateisystemkomponente 310, die in
Fig. 3 gezeigt ist, um Dateisystemzugriffsoperationsanfor
derungen abzufangen, weist den Vorteil auf, daß die Opera
tionserfassungsfunktion implementiert sein kann, ohne Ver
änderungen an dem Programmcode, der Dateisystemprozesse 308
implementiert, vorzunehmen. Es ist jedoch ersichtlich, daß
die oben Bezug nehmend auf die Keildateisystemkomponente
310 beschriebene Erfassungsfunktion der umleitbaren Opera
tion alternativ durch ein Modifizieren von Dateisystempro
zessen 308 geliefert werden kann. Bei dieser alternativen
Implementierung würden umleitbare Operationen Dateisystem
prozesse 308 erreichen, jedoch nicht verarbeitet und statt
dessen zu Arraysteuerungsprozessen 300 umgeleitet werden.
Diese alternative Implementierung kann als ein Äquivalent
zu der Keildateisystemkomponentenimplementierung betrachtet
werden, die in dieser Offenbarung detailliert dargelegt
ist.
Eine Bytemodustreiberkomponente 311 weist einen Programmco
de zum Überbringen von Befehlen für eine umleitbare
Zugriffsoperation zu Arraysteuerungsprozessen 300 auf, und
insbesondere zu der Arraybefehlsinterpretiererkomponente
301. Die Überbringungsfunktionen, die durch die Bytemodus
treiberkomponenten 311 für umleitbare Operationen durchge
führt werden, sind analog zu den Funktionen, die durch die
Plattentreiberkomponente 309 hinsichtlich nicht umleitbarer
Operationen durchgeführt werden.
Wie in Fig. 3 gezeigt ist, kommunizieren die Programmpro
zesse, die bei der Arraysteuerung 204 und dem Dateisystem
prozessor 205 durchgeführt werden, miteinander, wobei auch
beide mit Dateisystemklientenanwendungen 314 kommunizieren,
die Software aufweisen, die bei Dateisystemklienten 212 in
Fig. 2 ausgeführt wird. Die Arraysteuerung 204 kommuniziert
auch mit Plattensteuerungsprozessen 316. Die Plattensteue
rungsprozesse 316 weisen einen Programmcode auf, der an der
Steuerung (nicht gezeigt), die jedem Datenspeichergerät 203
in Fig. 2 zugeordnet ist, ausgeführt wird.
Das Verfahren der Erfindung und die Operation der verschie
denen Programmprozesse können Bezug nehmend auf die Fig. 4
und 5 beschrieben werden. Wie bei einem Prozeßblock 501 in
Fig. 5 gezeigt ist, umfaßt das Verfahren ein Empfangen ei
ner Dateisystemoperationsanforderung. Diese Dateisystem
zugriffsoperationsanforderung wird von einem Dateisystem
klienten 212 der Fig. 2 und 4 durch Kommunikationseinrich
tungen, die durch den Protokollstapel 210 geliefert werden,
der ebenfalls in diesen Figuren gezeigt ist, empfangen. Die
Zugriffsoperationsanforderung wird bei der bevorzugten Form
der Erfindung durch die Keildateisystemkomponente 310 emp
fangen. Wie oben angemerkt wurde, ist diese Keildateisy
stemkomponente 310 zwischen den Dateisystemprozessen 308
und Dateisystemklienten 212 eingefügt. Eine Komponente, die
als eine virtuelle Dateisystemschnittstelle bezeichnet
wird, kann bei bestimmten Dateisystemen verwendet werden,
um Dateisystemmodifizierungen vor den Dateisystemkomponen
ten einzufügen, oder um ein zusätzliches oder alternatives
Dateisystem einzufügen. So müssen die Dateisystemprozesse
308, die gemäß der bevorzugten Form der Erfindung, die in
den Figuren dargestellt ist, verwendet werden, eine virtu
elle Dateisystemschnittstelle oder ein anderes Verfahren
zum Einfügen der Keildateisystemkomponente 310 unterstüt
zen.
Als nächstes umfaßt das Verfahren den Schritt des Bestim
mens, ob die Dateisystemzugriffsoperationsanforderung eine
umleitbare Operation umfaßt. Dieser Schritt ist bei einem
Entscheidungsblock 502 in Fig. 5 gezeigt und wird bei der
dargestellten Form der Erfindung durch die Keildateisystem
komponente 310 durchgeführt. Wie oben erläutert wurde, wird
zu Zwecken dieser Offenbarung angenommen, daß Dateisystem
zugriffsoperationen allgemein basierend auf der Größe der
Datei (Datenmenge, die die Datei bildet), die der Zugriffs
operationsanforderung unterzogen wird, als umleitbare oder
nicht umleitbare Operationen definiert sind. Diese Umlei
tung basierend auf der Dateigröße weist den Effekt auf, daß
sie bewirkt, daß alle Dateien über der vorbestimmten
Schwellengröße direkt durch Arraysteuerungsprozesse 300 ge
handhabt oder verarbeitet werden, und daß sie bewirkt, daß
alle Dateien unter der Schwellengröße normal durch Dateisy
stemprozesse 308 gehandhabt oder verarbeitet werden. Die
bevorzugte Form der Erfindung umfaßt auch einen Mechanismus
zum Aufheben der normalen Regeln zum Bestimmen, ob eine
Operation eine umleitbare Operation ist. Wieder können, ob
wohl die Erfindung hier zu Beispielzwecken beschrieben
wird, um die Dateigröße zu verwenden, um zu bestimmen, ob
eine Operation umleitbar ist, andere Dateiattribute oder
andere Standards oder Kombinationen von Attributen und
Standards in dem Bereich der angefügten Ansprüche beim De
finieren von Zugriffsoperationen als umleitbare oder nicht
umleitbare Operationen verwendet werden.
Jedes geeignete Verfahren kann zum Durchführen der Bestim
mung an dem Entscheidungsblock 502 verwendet werden. Insbe
sondere kann bei dem Beispiel, bei dem die Bestimmung ba
sierend auf der Größe der Datei durchgeführt wird, die der
empfangenen Operation unterzogen wird, die Keildateisystem
komponente 310 Dateigrößeninformationen von der Dateisy
stemdatenverwaltungsanordnung erhalten, die den Dateisy
stemprozessen 308 zugeordnet ist. So kann der Entschei
dungsschritt bei Block 502 ein Senden einer Anforderung
nach den notwendigen Dateigrößeninformationen von der Keil
dateisystemkomponente 310 zu den Dateisystemprozessen 308
umfassen. Alternativ kann es vorzuziehen oder notwendig
sein, daß das Keildateisystem die notwendigen Dateigrößen
informationen von der ankommenden Dateizugriffsoperations
anforderung erhält, wobei in diesem Fall der Entscheidungs
schritt bei Block 502 ein Lesen von Dateigrößeninformatio
nen von der ankommenden Operationsanforderung umfassen wür
de. Wenn jedoch keine Dateigrößeninformation für die Datei
verfügbar sind, die der ankommenden Dateizugriffsoperati
onsanforderung unterzogen wird, kann es notwendig sein, daß
die Keildateisystemkomponente 310 programmiert wird, um ei
ne Annahme hinsichtlich der Größe der Datei zu machen. Es
kann alternativ möglich sein, daß die Keildateisystemkompo
nente 310 Dateigrößeninformationen von dem Dateisystem
klienten 202, der die Anforderung ausgibt, erhält, obwohl
gegenwärtige Dateisysteme eine derartige Funktion nicht un
terstützen.
Alternativ können einige bevorzugte Formen der Erfindung
jeder Datei ein spezielles Attribut zuordnen. Bei dem vor
liegenden Beispiel, bei dem die Subjektdateigröße beim
Bestimmen verwendet wird, ob eine Operation umleitbar ist,
kann das Dateisystem modifiziert sein, um ein Dateistatus
attribut als entweder "groß" oder "klein" einzustellen, wo
bei jedes Attribut in der Dateisystemdatenverwaltungsanord
nung, die durch Dateisystemprozesse 308 implementiert ist,
gespeichert sein kann. Der Schritt des Bestimmens, ob die
Operation eine umleitbare Operation ist, weist dann einfach
ein Lesen des Dateistatusattributes, das bei der Dateisy
stemdatenverwaltungsanordnung für die Datei gespeichert
ist, die der Zugriffsoperation unterzogen wird, auf. Dieses
Dateistatusattribut liefert auch ein bequemes Verfahren zum
Aufheben der Standardregeln. Dies bedeutet, daß ein Aufhe
bungsmerkmal des Keildateisystems bewirken kann, daß das
Dateistatusattribut unabhängig von der tatsächlichen Datei
größe als der Aufhebungsstatus gespeichert wird. Andern
falls kann ein anderer Code oder ein anderes Flag bei der
Keildateisystemkomponente 310 verwendet werden, um sicher
zustellen, daß eine bestimmte Operation unabhängig von den
tatsächlichen Dateiattributen als umleitbar oder nicht um
leitbar behandelt wird.
Es sei darauf hingewiesen, daß bestimmte Dateizugriffsope
rationen unabhängig von den Dateiattributen der Datei, die
der Dateizugriffsoperationsanforderung unterzogen wird,
keine umleitbaren Operationen sein können. Insbesondere
können die Datei-Öffnen- und Schließen-Operationen an dem
Dateisystempegel keine umleitbaren Operationen sein, da
diese Operationen kein Lesen oder Schreiben von Daten für
die Subjektdatei zu den Speichergeräten 203 umfassen sowie
keine Speicherraumzuteilungen beinhalten. So gibt es keinen
Grund, eine Öffnen- oder Schließenoperation um die Dateisy
stemprozesse 308 herumzuleiten.
Wenn bestimmt wird, daß die Operation eine umleitbare Ope
ration ist, leitet das Keildateisystem 310 die Operation zu
Arraysteuerungsprozessen 300 um, wie bei einem Block 503 in
Fig. 5 gezeigt ist. Bei der bevorzugten Form der Erfindung
umfaßt das Verfahren auch ein Umwandeln der umgeleiteten
Dateisystemoperation von einer Byteversatzdefinition zu ei
ner Blockzugriffsdefinition. Dieser Umwandlungsschritt ist
bei einem Prozeßblock 504 in Fig. 5 gezeigt. Diese Umwand
lung von einem Byteversatz und einer Bytelänge zu einem
Blockversatz und einer Blocklänge wird vorzugsweise durch
einen Programmcode unter Verwendung eines Speichers, der
bei der Arraysteuerung 204 verfügbar ist, durchgeführt, der
in dem Arraybefehlsinterpretierer 301 enthalten oder dem
selben zugeordnet ist. Es sei darauf verwiesen, daß eine
ähnliche Umwandlung Teil der normalen Operation der Datei
systemprozesse 308 ist. In jedem Fall umfaßt die Umwandlung
ein Teilen der Byteversatz- und Längendaten durch die Zahl
von Bytes in jedem Block von Speicherraum, der für Spei
chergeräte 203 definiert ist. Blöcke sind üblicherweise als
512-Byte-Speicherräume definiert, obwohl die Erfindung
nicht auf diese Blockgröße beschränkt ist.
Sobald die umgeleitete Dateisystemoperation bei dem Array
befehlsinterpretierer 301 zu einer Blockzugriffsform umge
wandelt ist, wird die Operation durchgeführt, wie bei einem
Schritt 505 in Fig. 5 gezeigt ist. Ein Durchführen der an
geforderten Operation umfaßt allgemein die normalen Schrit
te bei einem Arrayzugriff. Insbesondere nimmt der Arraybe
fehlsinterpretierer 301 den Code oder die Instruktion, die
die umgeleitete Operation darstellt, und gibt abhängig von
der Natur der Operation Rufe oder Befehle an die zugeordne
ten Prozesse aus. Für eine Lesen-Operation bestimmt die Ar
rayabbildungskomponente 302 die Blockzuteilungen, die der
vorher existierenden Datei, die gelesen werden soll, zuge
teilt sind. Die RAID-Verwaltungskomponente 303 gibt dann
einen geeigneten Befehl an das Gerät oder Geräte 203 aus,
um die Daten, die an den identifizierten Blöcken gespei
chert sind, zu lesen. Bei einer Schreiben-Operation bildet
die Abbildungskomponente 302 die Dateidaten auf Blöcke in
der logischen Einheit ab, die der Datei zugewiesen sind.
Die RAID-Verwaltungskomponente 403 gibt dann einen Befehl
an das Speichergerät oder -Geräte 203 aus, um die empfange
nen Daten zu den abgebildeten Blöcken zu schreiben.
Es gibt verglichen mit Lesen- und Schreiben-Operationen an
ein Speicherarray, die bei Systemen des Stands der Technik
durchgeführt werden, bei der Leistung von umleitbaren Le
sen- und Schreiben-Operationen einen merklichen Unter
schied. Bei der bevorzugten Form der Erfindung werden Daten
für die Lesen- und Schreiben-Operationen direkt zwischen
den Arraysteuerungsprozessen 300 und den Dateisystemklien
ten (212 in Fig. 2 und 4) übertragen, wobei die Dateisy
stemprozesse 308 vollständig umgangen werden. Der Dateium
gehungspfad wird in dem folgenden Absatz Bezug nehmend auf
Fig. 4 erläutert. Hinsichtlich der umleitbaren Lesen-
Operationen, bei denen Dateidaten wie durch den Dateisy
stemklienten 212 angeleitet zurückgegeben werden, erfordert
diese Umgehung der Dateisystemprozesse, daß die Arraysteue
rungsprozesse 300 angepaßt sind, um die Datenmeldung gemäß
den Standards des Dateisystems zu formatieren. Diese Forma
tierung der Daten, die ansprechend auf eine umleitbare Le
sen-Operation von Geräten 203 gelesen werden, wird vorzugs
weise durch einen Dateisystemformatierungsprogrammcode
durchgeführt, der in dem Arraybefehlsinterpretierer 301
enthalten ist.
Fig. 4 zeigt drei separate Pfade zu dem Arraybefehlsinter
pretierer 301. Ein Pfad 401 läuft von dem Protokollstapel
210 zu dem Interpretierer 301. Dieser Pfad 401 ist gezeigt,
um anzuzeigen, daß die Dateidaten, die einer umleitbaren
Operation zugeordnet sind, Dateisystemprozesse vollständig
umgehen, die entweder zu oder von den Speichergeräten 203
verlaufen. Ein Pfad 402 zeigt einen Pfad zwischen der Keil
dateisystemkomponente 310 und dem Interpretierer 301, um
anzuzeigen, daß Befehle und Empfänge, die umleitbaren Ope
rationen zugeordnet sind, zwischen diesen beiden Prozessen
verlaufen. Ein Pfad 403 zwischen der Plattentreiberkompo
nente 309 und dem Arraybefehlsinterpretierer 301 ist in
Fig. 4 gezeigt, um anzuzeigen, daß Befehle, Empfänge und
Dateidaten, die einer nicht umleitbaren Dateisystem
zugriffsoperation zugeordnet sind, zwischen dem Platten
treiber 309 und dem Arraybefehlsinterpretierer 301 verlau
fen, wie weiter unten erläutert wird.
Wie bei einem Prozeßblock 506 in Fig. 5 gezeigt ist, umfaßt
das Verfahren auch den Schritt des Aktualisierens der Da
teisystemdatenverwaltungsanordnung mit Informationen über
die Ergebnisse der ausgeführten, umleitbaren Zugriffsopera
tion. Da die Erfindung die erwünschte Dateihierarchie durch
die Dateisystemdatenverwaltungsanordnung beibehält, müssen
die Tabellen, die die Anordnung ausmachen, aktualisiert
sein, um die korrekten Informationen hinsichtlich der Datei
beizubehalten, die einer umleitbaren Zugriffsoperation un
terzogen wird, die direkt durch Arraysteuerungsprozesse 300
ausgeführt wird. Arraysteuerungsprozesse 300 erleichtern
diese Aktualisierung der Dateisystemdatenverwaltungsanord
nung durch ein Kommunizieren von Operationsergebnisinforma
tionen zu den Dateisystemprozessen 308. Die Natur der Ope
rationsergebnisinformationen hängt von der Natur der um
leitbaren Zugriffsoperation ab, die durchgeführt wurde. Für
eine Erzeugen-Operation, die zu Arraysteuerungsprozessen
300 umgeleitet und von denselben durchgeführt wird, umfas
sen die Ergebnisinformationen eine Referenz auf eine logi
sche Einheit, die für die Datei durch die Arraysteuerungs
prozesse zugewiesen wird, insbesondere die Arrayabbildungs
komponente 302. Für eine umleitbare Lesen- oder Schreiben-
Operation können die Operationsergebnisinformationen einen
Empfang oder eine Meldung aufweisen, die die Fertigstellung
der bestimmten Operation anzeigt. In jedem Fall können die
Operationsergebnisinformationen direkt zurück zu Dateisy
stemprozessen 308 kommuniziert werden oder durch die Keil
dateisystemkomponente 310 kommuniziert werden.
Wieder Bezug nehmend auf den Entscheidungsblock 502 leitet
die Keildateisystemkomponente 310, wenn bestimmt wird, daß
die Zugriffsoperationsanforderung eine Operation umfaßt,
die keine umleitbare Operation ist, die Operation direkt zu
Dateisystemprozessen 308, wie bei einem Prozeßblock 508 an
gezeigt ist. Dateisystemprozesse 308 führen dann die Opera
tion bei einem Block 509 wie bei Systemen des Stands der
Technik durch. Bei einer Lesen-Operation z. B. wird die Da
teisystemdatenverwaltungsanordnung befragt, um die Orte,
die der Datei zugeteilt sind, zu bestimmen. Dateisystempro
zesse 308 bauen dann den geeigneten Befehl auf und geben
denselben aus, wobei die Plattentreiberkomponente 309 den
Befehl codiert und dem Arraybefehlsinterpretierer 301 über
bringt. Es wird darauf hingewiesen, daß die Umwandlung von
einem Bytezugriff zu einem Blockzugriff in diesem Fall
durch Dateisystemprozesse 308 durchgeführt wird. Die Pro
zesse an der Arraysteuerung 204 antworten auf die Kommuni
kation von der Plattentreiberkomponente 309, indem sie be
wirken, daß die Daten von den spezifizierten Blöcken in der
logischen Einheit, die für das Dateisystem zugeteilt ist,
gelesen werden. Die Daten werden an sowohl dem Array-Cache-
Speicher 304 als auch dem Dateisystem-Cache-Speicher 312
Cache-gespeichert und dann wie durch die Dateisystem-Lesen-
Operation-Anforderung, die den Zugriff fordert, angeleitet
zurückgegeben.
In dem Fall einer nicht umleitbaren Schreiben-Operation ak
tualisieren Dateisystemprozesse 308 die Dateisystemdaten
verwaltungsanordnung für die virtuellen Speicherraumorte,
die den Dateidaten zugeteilt sind. Die Dateisystemprozesse
308 verwenden dann die Plattentreiberkomponente 309, um mit
Arraysteuerungsprozessen 300 zu kommunizieren, um die Da
teidaten und die Dateisystemraumzuteilungsinformationen zu
liefern, die zum Schreiben der Daten erforderlich sind. Die
Daten werden an die spezifizierten Blöcke geschrieben, die
für die Datei in der logischen Einheit zugeteilt sind, die
für das Dateisystem zugewiesen ist.
Es wird darauf hingewiesen, daß gemäß der bevorzugten Form
der Erfindung eine einzelne logische Einheit der Plattenar
rayimplementierung dem Speichern kleiner Dateien gewidmet
ist, die durch Dateisystemprozesse 308 auf die normale Wei
se verarbeitet werden. Alle großen Dateien (bei diesem Bei
spiel, bei dem die Dateigröße die Klasse von umleitbaren
Operationen bestimmt) werden jedoch direkt durch Array
steuerungsprozesse, wie durch den Pfad 401 in Fig. 4 ange
zeigt ist, verarbeitet und vorzugsweise jeweils ihrer logi
schen Einheit durch Arraysteuerungsprozesse 300 zugeteilt.
Das Ausführungsbeispiel der Erfindung, das in den Figuren
gezeigt ist, zeigt das Dateisystem, das ohne die Hilfe ei
ner Volumenverwaltersoftwarekomponente mit den Arraysteue
rungsprozessen 300 in Wechselwirkung steht. Für Fachleute
ist es jedoch ersichtlich, daß die Erfindung unter Verwen
dung von Volumenverwaltersoftwareprozessen implementiert
sein kann, die zwischen dem Dateisystem 308 und Arraysteue
rungsprozessen 300 eingefügt sind. Der Volumenverwalter
würde funktionieren, um zu bewirken, daß mehrere logische
Einheiten des Plattenarrays für das Dateisystem 308 als ei
ne einzelne logische Einheit erscheinen.
Bei einer Dateisystemimplementierung geht eine Öffnungsope
ration einer Lesen- oder Schreiben-Operation voraus. Die
separate Öffnungsoperation wird verwendet, um Konflikte
zwischen Dateisystemklienten 212 (Fig. 2 und 4), die auf
eine gemeinsame Datei zugreifen, zu verhindern. Das Datei
system, wie z. B. das System 308, erzeugt auch eine tempo
räre Datenstruktur zur Verwendung beim Zugreifen auf Datei
en. Unter anderen Funktionen bezieht diese temporäre Daten
struktur jede Datei auf eine Kennung oder einen anderen
Identifizierer und speichert zusätzliche Dateiverwaltungs
informationen von der Dateisystemdatenverwaltungsanordnung,
um ein Verarbeiten nachfolgender Lesen- und Schreiben-
Operationen zu beschleunigen.
Bei der bevorzugten Form der Erfindung umfaßt das Keilda
teisystem 310 einen temporären Datenstrukturprogrammcode,
der eine ähnliche temporäre Datenstruktur für Dateien er
zeugt und verwaltet, die der Gegenstand umleitbarer Opera
tionen sein können. Jede Aufzeichnung in dieser temporären
Dateistruktur des Keildateisystems umfaßt vorzugsweise eine
Dateikennung, den Dateinamen und einen Identifizierer der
logischen Einheit. Der Identifizierer der logischen Einheit
weist einen Identifizierer für die logische Einheit auf,
bei der die jeweilige Datei gemäß einer umleitbaren Opera
tion gespeichert wurde. Diese temporäre Dateistruktur des
Keildateisystems hilft die Verarbeitung einer umleitbaren
Operation für eine spezifizierte Datei zu beschleunigen,
indem erforderliche Zugriffsinformationen für die spezifi
zierte Datei zu dem Zeitpunkt, zu dem die umleitbare Opera
tion empfangen wird, ohne weiteres verfügbar sind.
Die Fig. 6 und 7 zeigen Teile der Datenverwaltungsanordnun
gen, die durch die Dateisystemprozesse 308 bzw. die Array
steuerungsprozesse 305 verwendet werden. Bezug nehmend auf
Fig. 6 ist bei 601 ein Dateisystemdatenverwaltungseintrag
gezeigt. Bei dieser bevorzugten Form der Erfindung umfaßt
jeder Eintrag ein Dateiname-Feld 603, eine Gruppe 604 von
Dateiattributfeldern und ein Feld 605, das Informationen
hinsichtlich einer Dateisystemspeicherraumzuteilung ent
hält. Das Attributfeld 606 speichert bei der bevorzugten
Form der Erfindung ein Dateistatusattribut. Dieses Datei
statusattribut definiert die Datei als entweder eine kleine
Datei oder eine große Datei. Ein Attributfeld 607 liefert
einen Ort zum Speichern einer Referenz auf eine logische
Einheit, bei der die Subjektdatei gespeichert wird. Für
kleine Dateien gibt es keinen Wert in diesem Attributfeld
607 der logischen Einheit, da Arraysteuerungsprozesse 300
kleine Dateien nicht direkt verwalten und kleinen Dateien
keine eigenen logischen Einheiten zuweisen. Vielmehr werden
kleine Dateien gemäß der Erfindung durch Dateisystemprozes
se 308 gehandhabt. Dateisystemprozesse 308 teilen Speicher
raum für die Datei in einer einzelnen logischen Einheit zu,
die für das Dateisystem durch Arraysteuerungsprozesse 300
zugewiesen ist. Diese Zuteilungsinformationen werden für
eine kleine Datei in Feld 605 gespeichert. Im Gegensatz da
zu wird das Dateisystemraumzuteilungsfeld 605 vorzugsweise
bei einem Eintrag einer großen Datei leer gelassen, während
das Referenzattributfeld 607 der logischen Einheit die Re
ferenz auf die logische Einheit, bei der die große Datei
gespeichert ist, durch die Arraysteuerungsprozesse 300
speichert. Das Raumzuteilungsfeld 605 kann für eine große
Datei leer gelassen werden, da ein Speicherraum für die Da
tei zugeteilt und durch die Arraysteuerungsprozesse 300
verwaltet wird. So ist es nicht notwendig, daß die Dateisy
stemdatenverwaltungsanordnung Speicherraumzuteilungsinfor
mationen für die jeweilige Datei aufweist.
Es wird angemerkt, daß sowohl das Dateistatusattribut als
auch das Referenzattribut der logischen Einheit extern de
finierte Attribute darstellen, da sie keine Attribute sind,
die normal in einem Dateisystem definiert sind. So muß das
Dateisystem extern definierte Dateiattribute unterstützen,
um diese bevorzugte Form der Erfindung zu implementieren.
Die meisten modernen Dateisysteme unterstützen derartige
extern definierte Dateiattribute.
Bezug nehmend auf Fig. 7 umfaßt die Datenverwaltungsanord
nung für Arraysteuerungsprozesse 300 einen Antrag 701 für
jede Datei, der gemäß der Erfindung direkt durch die Array
steuerungsprozesse gehandhabt wird. Anders ausgedrückt wird
ein Eintrag 701 für jede Datei, die einer umleitbaren Ope
ration unterzogen wird, erzeugt. Jeder Eintrag 701 umfaßt
ein Referenzfeld 702 der logischen Einheit und ein Dateina
menfeld 703. Das Referenzfeld 702 der logischen Einheit
speichert eine Referenz auf eine logische Einheit, bei der
die bestimmte Datei gespeichert ist. Das Dateinamenfeld 703
speichert den Dateinamen, der der Datei zugeordnet ist, für
die der Eintrag 701 gemacht wird. Der Eintrag 701 umfaßt
ferner ein Feld 705, das Speicherraumzuteilungsinformatio
nen enthält, die die Blöcke von Speicherraum anzeigen, der
für die jeweilige Datei zugeteilt ist.
Eine bevorzugte Form der Erfindung umfaßt eine Anordnung
zum Unterbringen einer Veränderung bei einem Dateistatus.
Diese Form der Erfindung ermöglicht es, daß eine Datei von
einem Großdateistatus zu einem Kleindateistatus oder umge
kehrt bewegt wird oder migriert. Diese Migration zwischen
einem kleinen und einem großen Dateistatus kann auf eine
Anzahl von Weisen erzielt werden. Die oben beschriebenen
Dateistatus können z. B. erweitert werden, um einen "wach
senden" Dateistatus und einen "schrumpfenden" Dateistatus
zu umfassen. Ein wachsender Dateistatus bedeutet, daß die
Datei wie gemäß dem System definiert von einer kleinen Da
tei zu einer großen Datei wächst. Ein schrumpfender Datei
status bedeutet, daß die Subjektdatei einmal als eine große
Datei behandelt wurde, nun jedoch ausreichend kleiner wird,
um dieselbe zur Handhabung durch das Dateisystem als eine
kleine Datei zu qualifizieren. Diese Migration kann auftre
ten, wenn die Datei modifiziert wird, oder als ein separa
ter Prozeß, nachdem die Datei modifiziert wurde. Der Effekt
der Veränderung des Status soll verändern, wie Dateisystem
zugriffsoperationen, die die Datei spezifizieren, in der
Zukunft gehandhabt werden, und welcher Pfad 401 oder 403
für Dateidaten bei zukünftigen Zugriffsoperationen auf die
Datei genommen wird.
Die oben beschriebenen bevorzugten Ausführungsbeispiele
sollen die Prinzipien der Erfindung darstellen, den Bereich
der Erfindung jedoch nicht einschränken. Verschiedene wei
tere Ausführungsbeispiele und Modifizierungen an diesen be
vorzugten Ausführungsbeispielen können von Fachleuten
durchgeführt werden, ohne von dem Bereich der folgenden An
sprüche abzuweichen. Insbesondere sollte es ersichtlich
sein, daß die Anordnung von Verarbeitungsgeräten zum Aus
führen der verschiedenen Programmprozesse gemäß der Erfin
dung nur zu Beispielzwecken gezeigt ist. Die verschiedenen
Prozesse können auf jede geeignete Weise über Verarbei
tungsgeräte verteilt sein, um die erwünschten Funktionen in
dem Bereich der Erfindung und der folgenden Ansprüche
durchzuführen. Außerdem sind die verschiedenen Softwarekom
ponenten, die in den Figuren gezeigt sind, nur zu Beispiel
zwecken gezeigt und beschrieben und sind allgemein auf eine
Weise unterteilt, die die Erfindung sehr klar beschreibt.
Die verschiedenen Softwarefunktionen können jedoch durch
unterschiedlich benannte und angeordnete Softwarekomponen
ten durchgeführt werden. Diese unterschiedlichen Software
anordnungen sollen als gleichwertig zu der Anordnung, die
in der vorliegenden Offenbarung und den beigefügten Ansprü
chen dargestellt ist, betrachtet werden.