-
Verweis auf
verwandte Anmeldungen
-
Diese
Anmeldung betrifft einen Gegenstand, der in der parallelen US-Anmeldung
09/686,553 "Dynamically-Generated
Web Pages" von Holcomb
et al., eingereicht am 11. Oktober 2000, beschrieben wird. Diese
Anmeldung hat den gleichen Inhaber wie die vorliegende Erfindung.
-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung betrifft im allgemeinen Dateisysteme für Massenspeichereinrichtungen
und insbesondere ein virtuelles Dateisystem für eine Peripherieeinrichtung,
die eine große
blockorientierte Massenspeichereinrichtungs-Schnittstelle für ein Host-System
vorsieht, während
eine wesentlich geringere Speichergröße in der Peripherieeinrichtung
verwendet wird und die von dem Host gelesenen Datenblöcke dynamisch
erzeugt werden.
-
Hintergrund
der Erfindung
-
Massenspeicher-Peripherieeinrichtungen, beispielsweise
Plattenlaufwerke, werden heutzutage allgemein in Computersystemen
zum Speichern und Abrufen von Daten verwendet. Diese Daten werden in
Blöcken
gespeichert. Es können
in der Peripherieeinrichtung viele verschiedene logische Datengruppen
gespeichert werden, die im allgemeinen als "Dateien" bezeichnet werden. Während Datenblöcke typischerweise
eine feste Größe haben,
kann eine Datei mehr Daten enthalten, als in einen einzelnen Datenblock
paßt,
und dadurch kann eine Datei aus einer Anzahl von Datenblöcken bestehen.
Ferner müssen zahlreiche
Datenblöcke,
die eine Datei bilden, nicht zusammen angeordnet sein, sondern können an
verschiedenen Stellen der Peripherieeinrichtung gespeichert sein.
Um den Zugriff auf die Datendateien durch das Computersystem zu
vereinfachen, sehen Massenspeicher-Peripherieeinrichtungen typischerweise
ein Dateisystem vor, das die Organisation der Datenblöcke für jede Datei
in der Peripherieeinrichtung beschreibt.
-
Bei üblichen
Massenspeicher-Peripherieeinrichtungen werden Datenblöcke nur
unter der ausschließlichen
Steuerung des Computersystems gelesen und geschrieben. Mit anderen
Worten kann das Computersystem eine eigene, unabhängige Aufzeichnung
aufbewahren, die angibt, wo bestimmte Datenblöcke und Dateien auf der Peripherieeinrichtung
gespeichert sind, und es kann davon ausgehen, daß diese Datenblöcke und
Dateien dort auch tatsächlich
vorliegen. Um die Speicherung und die Abfrage von häufig verwendeten
Datenblöcken
zu beschleunigen, verwenden Computersysteme ferner häufig einen
Datenblock-Cache innerhalb des Computersystems selbst, welcher die
Datenblöcke
speichert, auf die oft zugegriffen wird. Das Computersystem kann
einen Datenblock aus dem Cache wesentlich schneller als aus der
Peripherieeinrichtung lesen, und daher durchsuchen Computersysteme
ihren Cache hinsichtlich eines erwünschten Datenblocks und fordern
diesen von der Peripherie nur an, wenn dieser nicht im Cache zu
finden ist.
-
Der
oben beschriebene Cache-Mechanismus arbeitet zufriedenstellend bei
traditionellen Massenspeicher-Peripherieeinrichtungen, beispielsweise Plattenlaufwerke,
in denen Datenblöcke
nur unter der ausschließlichen
Steuerung des Computersystems gelesen und geschrieben werden. Solche
Plattenlaufwerke haben üblicherweise
ausreichend große Speicherkapazitäten, um
die Tabellen, welche das Dateisystem implementieren, sowie die Datenblöcke für alle diese
Dateien zu speichern. Jedoch können bestimmte
adaptive Massenspeicher-Peripherieeinrichtungen,
beispielsweise diejenigen, die in der oben genannten parallelen
Anmeldung von Holcomb et al. beschrieben sind, Datenblöcke unabhängig von der
ausschließlichen
Steuerung durch das Computersystem dynamisch erzeugen, löschen oder
neu anordnen. Als Folge kann das Computersystem nicht mehr davon
ausgehen, daß die
Datenblöcke
in seinem Cache zu den Datenblöcken
in der Peripherieeinrichtung passen, wodurch sich eine fehlerhafte Operation
ergeben kann, wenn das Computersystem statt der von der Peripherieeinrichtung
stammenden Dateien die im Cache gespeicherten Dateien liest. Um
einen korrekten Betrieb zu gewährleisten,
muß die
Peripherieeinrichtung das Computersystem jedesmal informieren, wenn
es Datenblöcke
dynamisch erzeugt, löscht
oder neu anordnet, und das Computersystem muß den Cache und andere Dateisystemtabellen
löschen
und neu aufbauen. Einige Computersysteme sehen Mechanismen für die Peripherieeinrichtung
vor, um das Computersystem dahingehend zu informieren; jedoch können die
Schritte des Löschens
und Neuaufbauens des Caches und anderer Dateisystemtabellen zeitaufwendig
und ineffizient sein. Andere Computersysteme unterstützen keinerlei
solcher Mechanismen.
-
Eine ähnliche
Beschränkung
nicht traditioneller Peripherieeinrichtungen ist, daß diese
möglicherweise
nicht ausreichend Speicher umfassen, um alle Datenblöcke zu speichern,
die zum Vorsehen eines großen
Dateisystems benötigt
werden. Als Folge können
die Anzahl und Größe von in
der Peripherieeinrichtung gespeicherten Dateien ungünstig beschränkt sein,
wodurch die Peripherieeinrichtung bestimmte Dateien dynamisch löschen und
andere erzeugen muß und
dies zu dem oben betrachteten Synchronisierungsproblem zwischen
dem Computersystem und der Peripherieeinrichtung führt.
-
Die
folgenden Dokumente des Stands der Technik können hinsichtlich der vorliegenden
Erfindung relevant sein. Die Druckschrift US-A-6,081,883 offenbart
ein skalierbares Computersystem mit einem Verbindungsbus, einem
Host-Prozessor, der mit dem Verbindungsbus gekoppelt ist, und einem
oder mehreren funktionsspezifischen Prozessoren einschließlich eines
Netzwerk-Prozessors, eines Datei-Prozessors und eines Speicher-Prozessors,
wobei der eine oder die mehreren funktionsspezifischen Prozessoren
mit dem Verbindungsbus verbunden sind, um mit anderen Prozessoren
zu kommunizieren, wobei jeder funktionsspezifische Prozessor einen
damit verbundenen Pufferspeicher aufweist, und der Pufferspeicher
ein oder mehrere Segmente hat, die als funktionsspezifische Caches
dienen, um funktionsspezifische Daten zwischenzuspeichern, einschließlich Netz-Verarbeitungsdaten,
Datei-Verarbeitungsdaten
und Speicher-Verarbeitungsdaten, wobei die Segmente dynamisch verschiedenen
Prozessoren zugeordnet sind. Ferner kann das Computersystem einen
mit dem Verbindungsbus verbundenen Dateispeicher-Prozessor (file
storage processor, FSP), einen oder mehrere mit dem FSP verbundene Datenspeichereinrichtungen,
wobei jede Dateneinrichtung Dateien und zugeordnete Metadaten aufweist,
einen mit dem FSP verbundenen Metadaten-Cache zum Puffern der Metadaten
sowie einen Schreib-Cache umfassen, der mit dem FSP verbunden ist,
um die von dem FSP stammenden Dateischreibeoperationen zwischenzuspeichern.
-
Die
Druckschrift WO 00/57315 A offenbart ein System zum Unterhalten
von Dateiobjektdaten mit einer Serverkomponente, wobei die Serverkomponente
einem Mechanismus zur entfernten (Remote-) Speicherung, der zumindest
einige der Dateiobjektdaten unterhält, sowie einer Client-Komponente zugeordnet
ist, wobei die Client-Komponente mit dem Mechanismus zur lokalen
Speicherung verknüpft
ist, die zumindest einige der Dateiobjektdaten unterhält, wobei
die Client-Komponente eingerichtet ist, eine Anfrage hinsichtlich
Dateiobjektdaten zu empfangen, und zu ermitteln, ob die Dateiobjektdaten
lokal oder entfernt gelegen un terhalten werden, um Zugriff auf die
lokalen unterhaltenen Dateidaten vorzusehen, wenn diese lokal unterhalten
werden, und um mit der Serverkomponente zu kommunizieren, um Zugriff
auf die entfernt unterhaltenen Dateidaten vorzusehen, wenn diese
entfernt gelegen bzw. remote unterhalten werden.
-
Die
Druckschrift EP-A-1,041,572 offenbart einen nicht-flüchtigen
Speicher und eine Wiedergabevorrichtung für einen nicht-flüchtigen
Speicher zum Segmentieren einer Signaldatendatei in Blöcken, die
jeweils eine vorbestimmte Länge
haben und eine Attributdatei jeder einzelnen Datendatei zur Verwaltung
hinzufügen,
wobei der nicht-flüchtige Speicher
einen Datenbereich für
eine Wiedergabeverwaltungsdatei zum Verwalten einer Vielzahl von Dateien,
die jeweils aus Blöcken
bestehen, sowie einen Dateiverwaltungsbereich für Dateiverwaltungsinformation
aufweist, um die Vielzahl von Datendateien und die Wiedergabeverwaltungsdatei
zu verwalten. Gemäß einer
Ausführung
ist die Dateiverwaltungsinformation eine Dateibelegungstabelle,
und die jeder einzelnen Datendatei hinzugefügte Attributdatei enthält eine
Anzahl von Blöcken,
die jede einzelne Datendatei bilden, wobei die Wiederherstellungsverwaltungsdatei
Daten enthält,
welche die Wiedergabereihenfolge einer Vielzahl von Datendateien
darstellt, welche in dem Datenbereich aufgezeichnet wurden.
-
Es
ist ein Ziel der vorliegenden Erfindung, ein neues und verbessertes
Dateisystem sowie ein Verfahren vorzusehen, um auf eine große Anzahl
von Datendateien zuzugreifen, wodurch Dateien erzeugt, gelöscht und
neu angeordnet werden können,
ohne daß das
Host-Computersystem
seinen Cache und andere Dateisystemtabellen löschen und neu aufbauen muß, ohne
einen großen
Speicherumfang zu erfordern.
-
Diese
Aufgabe wird durch ein Verfahren nach Anspruch 1 und durch eine
Vorrichtung nach Anspruch 9 gelöst.
-
Abriß der Erfindung
-
In
einer bevorzugten Ausführung
sieht die Erfindung ein virtuelles Dateisystem vor, das eine große Anzahl
von Datendateien umfassen kann. Das virtuelle Dateisystem hat eine
vorbestimmte Verzeichnis- und Dateistruktur sowie einen linearen
Dateibereich. Der lineare Dateibereich umfaßt einen Verzeichnisbereich
und einen Dateibelegungstabellen-Bereich, wobei durch das vorbestimmte
Wesen der Verzeichnisstruktur die Datenblöcke bei einer Leseanfra ge berechenbar
sind und nicht in dem Dateisystem gespeichert werden müssen. Der
lineare Dateibereich umfaßt
ferner einen Dateibereich mit einer vorbestimmten Anzahl von Dateien
mit vorbestimmter Größe. Jedes
Verzeichnis aus einer Gruppe von Verzeichnissen der untersten Ebene
der Verzeichnisstruktur enthält
eine einzelne Datei. Die bestimmte einzelne Datei in dem Dateibereich,
der einem bestimmten Verzeichnis der untersten Ebene zugeordnet
ist, wird vorzugsweise zu dem Zeitpunkt vorbestimmt, an dem auf
das Verzeichnis der untersten Ebene zum erstenmal zugegriffen wird,
wodurch eine bislang nicht verwendete oder am längsten unbenutzt gebliebene
(least-recently-used, LRU) Datei zugeordnet werden kann, um zu vermeiden,
daß der Cache
bzw. Zwischenspeicher des Hosts gelöscht und neu aufgebaut werden
muß. Die
Dateiblöcke
der Datei werden vorzugsweise dynamisch erzeugt und dem Dateisystem
bei Anfrage geliefert oder einer Datei als Alias zugeordnet, die
in einem Neben-Dateisystem
gespeichert ist, das über
das virtuelle Dateisystem ausgelesen wird.
-
Kurzbeschreibung
der Zeichnungen
-
Die
oben genannten Merkmale der vorliegenden Erfindung, deren sich ergebende
Vorteile und die Erfindung selbst sind am besten unter Bezugnahme
auf die folgende detaillierte Beschreibung der bevorzugten Ausführung der
Erfindung nachzuvollziehen, wenn diese in Verbindung mit den beigefügten Zeichnungen
herangezogen wird, wobei die Zeichnungen im einzelnen darstellen:
-
1 ist
eine schematische Darstellung einer beispielhaften vorbestimmten
Dateistruktur für ein
virtuelles Dateisystem gemäß der vorliegenden Erfindung;
-
2 ist
eine schematische Darstellung des Dateibereichs des virtuellen Dateisystems
der 1;
-
3 ist
eine detailliertere schematische Darstellung eines beispielhaften
Verzeichnisbereichs des Dateibereichs von 2;
-
4 ist
eine detailliertere schematische Darstellung eines beispielhaften
Dateizuordnungstabellenbereichs des Dateibereichs von 2;
-
5 ist
ein Flußdiagramm
eines Verfahrens zum Lesen von Daten aus dem virtuellen Dateisystem
von 1;
-
6 ist
ein detaillierteres Flußdiagramm
eines Datenblock-Berechnungsabschnitts des Flußdiagramms von 5;
und
-
7 ist
ein Blockdiagramm einer Vorrichtung zum Vorsehen des virtuellen
Dateisystems von 1,
-
Beschreibung
der bevorzugten Ausführung
-
Bezugnehmend
auf die Zeichnungen ist ein virtuelles Dateisystem 10 (auch
als virtual filesystem, "VFS", bezeichnet) dargestellt,
das gemäß einem neuen
Verfahren 100 zum Lesen von Daten aus einer Vorrichtung 50 ausgebildet
ist, in der das Dateisystem 10 implementiert ist. Das virtuelle
Dateisystem 10 sieht vorzugsweise einen großen virtuellen
Dateibereich vor, der mit nur relativ kleinen Speicherplatz implementiert
ist, indem eine Verzeichnishierarchie definiert wird, so daß Datenblöcke, welche
den Verzeichnissen entsprechen (und einer zugeordneten Dateizuordnungstabelle,
die hier auch als "FAT" bezeichnet wird),
algorithmisch berechnet werden können
und indem die Datendateien mit der Verzeichnishierarchie genau oder
ungefähr
zum Zeitpunkt der Benutzung verknüpft werden, so daß die Datenblöcke, welche
den Datendateien entsprechen, genau oder ungefähr zum Zugriffszeitpunkt dynamisch
erzeugt werden können.
Die vorliegende Erfindung wird vorzugsweise auf ein FAT-basierendes
Dateisystem angewandt, beispielsweise das weitverbreitete MS-DOS-Dateisystem,
das einem Fachmann weitgehend bekannt ist.
-
Es
ist für
den Fachmann ersichtlich, daß ein Dateisystem
eine Struktur von Verzeichnissen, Dateien und anderer interner Information
ist, das ein Betriebssystem dazu verwendet, diese Verzeichnisse und
Dateien zu lokalisieren und auf diese zuzugreifen. Die Verzeichnisse
sind typischerweise in einer Verzeichnishierarchie organisiert,
in der einige Verzeichnisse mit anderen Verzeichnissen in einer
Vorgänger-Nachfolger(parent-and-child)-Baumstruktur zusammenhängen. Die
Dateien sind innerhalb von Verzeichnissen angeordnet. Die Datenstrukturen,
die das Dateisystem bilden, belegen vorzugsweise im Speicher einen
linearen Dateibereich. Ein virtuelles Dateisystem ist ein System,
in dem die Verzeichnisse und Dateien in einem linearen Dateibereich
zu existieren scheinen, wenn diese von einem Host-Computer oder von
einer anderen Einrichtung außerhalb
des Dateisystems aus betrachtet werden, wobei diese jedoch möglicherweise
in einem linearen Dateibereich nicht tatsächlich vorliegen oder sogar
möglicherweise
nicht einmal in dem physikalischen Speicher vorliegen, solange der
Host-Computer nicht
auf das Dateisystem zugreift, um eine Operation bezüglich eines
Verzeichnisses oder einer Datei auszuführen.
-
Unter
Bezugnahme auf die beispielhafte vordefinierte Dateistruktur 15 der 1 ist
am besten ersichtlich, daß das
virtuelle Dateisystem 10 der vorliegenden Erfindung eine
vorbestimmte und festgelegte Verzeichnishierarchie 20 hat,
die mit einem Root-Verzeichnis bzw. Ausgangsverzeichnis "\" 21 beginnt. Unterhalb des
Root-Verzeichnisses 21 ist ein Satz 22 Verzeichnisse
der ersten Ebene vorgesehen, die Unterverzeichnisse des Root-Verzeichnisses
sind. Die beispielhafte Verzeichnishierarchie 20 enthält vier Verzeichnisse
der ersten Ebene, die mit D1 bis D4 bezeichnet sind. Die Anzahl
von Unterverzeichnissen, die unterhalb einem Verzeichnis höherer Ebene enthalten
sind, wird als "Verzweigung" bzw. "fanout" bezeichnet; die
beispielhafte Verzeichnisstruktur verwendet in allen Ebenen eine
Verzweigung bzw. einen Verzweigungsgrad von insgesamt vier, wobei
jedoch in der 1 aus Klarheitsgründen nur
ein Satz von vier Unterverzeichnissen für jede Ebene dargestellt ist.
Das Verzeichnis erster Ebene D2 23 umfaßt vier Verzeichnisse zweiter
Ebene, die mit D9 bis D12 bezeichnet sind. Das Verzeichnis zweiter
Ebene D11 24 enthält
vier Verzeichnisse dritter Ebene, die mit D45 bis D48 bezeichnet
sind. Die Verzeichnisse erster Ebene und die Verzeichnisse zweiter
Ebene werden als Zwischenebeneverzeichnisse dahingehend betrachtet,
als daß sie
beide Verzeichnisse höherer Ebene
("Vorgänger", "Parent") und Verzeichnisse niedrigerer
Ebene ("Nachfolger", "Child") aufweisen. Die
Verzeichnisse Y-ter Ebene (in dieser beispielhaften Hierarchie 20 die
Verzeichnisse dritter Ebene) sind in der Verzeichnishierarchie 20 die
Verzeichnisse unterster Ebene. Jedes Verzeichnis Y-ter Ebene gemäß der vorliegenden
Erfindung enthält
einen aus einem Satz 18 vorbestimmter Datei-Platzhalter;
beispielsweise enthält
das Verzeichnis D48 25 den Datei-Platzhalter F88 26;
die Verzeichnisse unterster Ebene weisen ein Nachfolger-Verzeichnis,
jedoch keine Vorgänger-Verzeichnisse
auf. Die Bedeutung der in 1 verwendeten
Bezeichnung für
die Verzeichnisse und Dateien ergibt sich aus der folgenden Betrachtung
der 3.
-
Die
Verzeichnisverzweigung N und die Hierarchietiefe Y kann vorzugsweise
gewählt
werden, um ein virtuelles Dateisystem mit einer gewünschten
Anzahl von Dateien vorzusehen. Die Anzahl von Dateien ist gemäß der Formel
NY zu berechnen. Die beispielhafte Hierarchie 20 mit
einer Verzweigung bzw. Verzweigungsgrad von 4 und einer Hierarchietiefe von
3 sieht daher 43 = 64 Dateien vor. Die bevorzugte Ausführung hat
eine Verzweigung von 32 und eine Hierarchietiefe von 4, wodurch
324 = 1048576 Dateien vorgesehen werden.
Während
die Verzweigung N und die Hierarchietiefe bzw. Tiefe Y in jeder
Ebene und jedem Zweig der Verzweigungshierarchie eine andere sein
kann, sind diese in der bevorzugten Ausführung in allen Ebenen und Zweigen
gleich, wobei dies aus der folgenden Betrachtung des Verfahrens der
vorliegenden Erfindung ersichtlich ist.
-
Das
virtuelle Dateisystem belegt einen Dateibereich 30, der
B logische Datenblöcke,
beispielsweise Datenblock 2, enthält, wobei dies am besten unter
Bezugnahme auf 2 ersichtlich ist. Jeder Datenblock
enthält
b Bytes. In dem weit verbreiteten FAT-32-Dateisystem, welches dem
Fachmann bekannt ist, enthält
typischerweise jeder Block 4 Kilobyte Daten. Ein Datenblock kann
weiter unterteilt sein, typischerweise gemäß dem Typ des physikalischen
Mediums, auf dem das Dateisystem implementiert ist. Jedoch wird
hier von derartigen Betrachtungen abgesehen, da sie dem Fachmann
ausreichend bekannt und für
die vorliegende Erfindung nicht relevant sind.
-
Die
Datenblöcke
des virtuellen Dateisystems 10 sind vorzugsweise sequentiell
organisiert. Die Datenblöcke
können
durch einen Host-Computer (nicht dargestellt) oder eine andere Einrichtung
von dem virtuellen Dateisystem 10 typischerweise mittels Blocknummer
abgefragt werden. Der Datenbereich 30 ist in zahlreiche
zusammenhängende
Bereiche logisch unterteilt. Ein Verzeichnisbereich 32 mit
der Größe von D
Blöcken
definiert die Verzeichnishierarchie des virtuellen Dateisystems 10 vorab,
wie diesbezüglich
erläutert
wurde.
-
Der
Dateibereich 30 enthält
ferner eine Anzahl von Dateibereichen 34a, b, c, die zusammen
F Blöcke
des Dateibereichs 30 belegen. Jeder Dateibereich 34a,
b, c definiert die Menge an Datendateien vorab, die hinsichtlich
ihrer Größe eine
vorbestimmte Anzahl an Datenblöcken
aufweisen. Der Datenbereich 34a definiert eine Menge Q1 an Datendateien, die jeweils einen Block
groß sind.
Der Datenbereich 34b deffiniert eine Menge von Q2 von Datendateien, die jeweils zwei Blöcke groß sind.
Der Datenbereich 34c definiert eine Menge QM von
Datendateien, die jeweils M Blöcke
groß sind.
Die Größe jedes
Datenbereichs ist durch die Anzahl von Dateien und durch die Blockgröße jeder
Datei bestimmt. Die Anzahl von Dateibereichen, die Anzahl von Dateien
in jedem Bereich, und die Blockgröße der Dateien in jedem Bereich sind
durch die vorliegende Erfindung nicht beschränkt, sondern stellen eine Auswahl
hinsichtlich der Ausgestaltung dar, die dem Entwickler des Dateisystems 10 freisteht.
-
Der
Datenbereich 30 enthält
ferner einen oder mehrere FAT-Bereiche 36. Jeder FAT-Bereich 36 definiert
vorab eine Dateizuweisungstabelle in der Größe von T Blöcken zum Lokalisieren aller
Datenblöcke
der Verzeichnisse und der Datendateien in dem Dateibereich 30.
Gemäß der vorliegenden
Erfindung, und wie im weiteren detaillierter dargelegt ist, sind
diese Bereiche derart organisiert, daß die Datenblöcke in dem
Verzeichnisbereich 32 und in dem FAT-Bereich 36 algorithmisch berechnet
werden können,
wenn das Dateisystem 10 gelesen wird, um somit die Größe an physikalischem
Speicher zu verringern, die notwendig ist, um das Dateisystem 10 unterzubringen.
-
Unter
näherer
Betrachtung des Verzeichnisbereichs (32) und unter Bezugnahme
auf die 3 sind Verzeichniseinträge in dem
Verzeichnisbereich 32 enthalten. Jeder Verzeichniseintrag
enthält
verschiedene Felder, die (zumindest) die Namen, die Startblocknummer,
die Attribute des Eintrags (insbesondere, ob es ein Nachfolger-Verzeichnis
oder eine Datei darstellt), sowie die Größe jeder Datei oder jedes Nachfolger-Verzeichnisses
angeben. Die Verzeichniseinträge
beschreiben die Inhalte jedes einzelnen Verzeichnisses der Verzeichnishierarchie 20. In
der bevorzugten Ausführung
sind die Verzeichniseinträge
für jedes
Verzeichnis der Hierarchie 20 in einem separaten Datenblock
enthalten, dessen Position in dem Dateibereich 30 ausgehend
von der Verzeichnishierarchie 20 berechenbar ist. Um dies
mittels der Verzeichnishierarchie 20 der 1 darzustellen,
sind die Verzeichniseinträge
für das
Wurzelverzeichnis 21 dem Block 0 des Verzeichnisbereichs 32 zugeordnet.
Der Block 0 enthält
vier Verzeichniseinträge,
die den Verzeichniseinträgen
der vier Verzeichnisse erster Ebene (D1 bis D4) der Hierarchie 20 entsprechen.
Die innerhalb jedes Blocks dargestellten Zahlen des Verzeichnisbereichs 32 der 3 geben
den Wert des Startblockfeldes des betreffenden Verzeichniseintrags
in dem Block wieder und entsprechend den Verzeichnisnummern, die
in der Verzeichnishierarchie 20 verwendet werden. Beispielsweise
entspricht der zweite Eintrag 38a des Blocks 0 dem Verzeichnis
erster Ebene D2 und gibt an, daß die
Verzeichniseinträge
für das
Verzeichnis D2 im Block 2 wiederzufinden sind. Der dritte Eintrag 38b von
Block 2 entspricht dem Verzeichnis zweiter Ebene D11 und gibt an,
daß die
Verzeichniseinträge für das Verzeichnis
D11 in dem Block 11 zu finden sind. Der vierte Eintrag 38c des
Blocks 11 entspricht dem Verzeichnis Y-ter Ebene D48 und gibt an, daß die Verzeichniseinträge für das Verzeichnis
D48 in dem Block 48 zu finden sind. Der erste (und nur dieser) Eintrag 38d des
Blocks 48 entspricht ei nem Datei-Platzhalter. Dem Datei-Platzhalter
kann zu jedem einzelnen Zeitpunkt eine tatsächliche Datei zugeordnet sein,
oder nicht. Der Wert des Startblockfeldes für den Dateieintrag gibt den
Status der Existenz der Datei an. Ein vorbestimmter Wert gibt an,
daß in
dem Verzeichnis D48 noch nie eine Datei erzeugt wurde, während ein
anderer vorbestimmter Wert angibt, daß in dem Verzeichnis D48 bereits
eine Datei erzeugt wurde, wobei jedoch diese Datei nicht mehr existiert. Wenn
das Startblockfeld einen Wert zwischen 0 und F-1 enthält, gibt
dieses an, daß momentan
eine zugeordnete Datei existiert und daß der Wert des Startblockfeldes
die Blocknummer in dem Dateibereich 34 ist, in der sich
die zwei Daten befinden. Wie im weiteren näher beschrieben ist, ist ein
Datei-Platzhalter für ein
Verzeichnis Y-ter Ebene nur dann mit einer bestimmten Datendatei
verbunden, wenn auf ein Verzeichnis der Y-ten Ebene zum erstenmal zugegriffen wird.
-
Die
oben beschriebene Art und Weise, N-äre (beispielsweise binäre, trinäre usw.)
Bäume,
beispielsweise die Verzeichnishierarchie 20, in einem Feld
zu speichern, ist einem Fachmann weitreichend bekannt. Da die Verzeichnishierarchie 20 feststeht und
die Positionen in dem Dateibereich 30 der Datenblöcke für jedes
einzelne Verzeichnis berechenbar sind, wie im weiteren genauer beschrieben
ist, muß ein
VFS 10 gemäß der vorliegenden
Erfindung nicht die Daten für
den Verzeichnisbereich 32 speichern, sondern kann die Daten
für jeden
einzelnen Block algorithmisch berechnen, wenn dies von dem Host-Computer
angefordert wird.
-
Unter
detaillierter Betrachtung des FAT-Bereichs 36 und unter
Bezugnahme auf die 4 sind in vielen Dateisystemen
die Datenblöcke
einer Datei oder eines Verzeichnisses, die mehr als einen Block überspannen,
nicht zusammenhängend
in dem Dateibereich 30 angeordnet. Während ein Verzeichniseintrag,
wie bereits beschrieben wurde, den Startblock angibt, an dem die
Daten für
ein Verzeichnis oder für
eine Datei zu finden sind, gibt dieser keinerlei Orte weiterer Datenblöcke an.
Die FAT-Tabelle sieht diese Verknüpfung zwischen dem Startblock
und jeglichen weiteren Blöcken
vor. Da die Verzeichnishierarchie und die Anzahl und Größe der Dateien
in dem VFS 10 der vorliegenden Erfindung vordefiniert sind, sind
die Inhalte des FAT-Bereichs dementsprechend algorithmisch berechnet
werden können.
-
Die
Größe des FAT-Bereichs 36 ergibt
sich durch die Anzahl von Datenblöcken, die in dem VFS 10 enthalten
sind. Die FAT 36 enthält
für jeden
Block in dem System einen FAT-Eintrag 42. Jeder FAT-Eintrag 42 muß groß genug
sein, um einen Wert zu enthalten, der die größte Blocknummer in den kombinierten
Verzeichnis Bereichen 32 und Datei Bereichen 34 wie dergibt
(d.h. der Wert von D + F). Beispielsweise verwendet das FAT-32-Dateisystem
einen FAT-Eintrag 42 mit vier Byte, der ausreicht, bis
zu 232 = 4294967296 Blöcke zu adressieren.
-
Der
FAT-Bereich 36 umfaßt
einen Verzeichnis-FAT-Teilbereich 36a und einen Datei-FAT-Teilbereich 36b.
Da, wie oben bemerkt, jedes Verzeichnis einen einzelnen Datenblock
in dem Verzeichnisbereich 32 belegt, ist die Anzahl der
FAT-Einträge 42 in dem
Verzeichnis-FAT-Teilbereich 36a gleich
der Anzahl von Verzeichnissen in der Verzeichnishierarchie 20.
Beispielsweise in der beispielhaften Verzeichnishierarchie 20 der 1,
in der N = 4 und Y = 3 ist, bestehen ein Root-Verzeichnis, N1 = 4 Verzeichnisse erster Ebene, N2 = 16 Verzeichnisse zweiter Ebene und N3 = 64 Verzeichnisse Y-ter (dritter) Ebene,
wobei diese eine Gesamtsumme von 85 Verzeichnissen bilden; daher
sind in dem Verzeichnis-FAT-Teilbereich 36a 85 FAT-Einträge vorgesehen.
-
Im
Hinblick auf den Datei-FAT-Teilbereich 36b können verschiedene
Dateien verschiedene Anzahlen an Datenblöcken in dem Dateibereich 34 belegen.
Jedoch ist gemäß dem Dateisystem 10 der vorliegenden
Erfindung, und wie bereits beschrieben, die Anzahl von Dateien und
die Größe jeder
Datei vordefiniert, so daß die
Anzahl von FAT-Einträgen 42, die
für den
FAT-Teilbereich 36b erforderlich sind, algorithmisch berechenbar
ist. Beispielsweise soll für die
beispielhafte Verzeichnishierarchie 20 der 1, die
NY = 43 = 64 Dateien
enthält,
angenommen werden, daß 32
(Q1) der Dateien Dateien mit einem Block
sind, 16 (Q2) Dateien mit zwei Blöcken vorliegen,
10 (Q3) Dateien mit vier Blöcken vorliegen,
und 6 (Q4) Dateien mit acht Blöcken vorliegen.
Daher sind für
die Dateien mit einem Block 32 × 1
= 32 Blöcke notwendig,
für Dateien
mit zwei Blöcken
sind 16 × 2 =
32 Blöcke
notwendig, für
die Dateien mit vier Blöcken
sind 10 × 4
= 40 Blöcke
notwendig, und für
die Dateien mit M Blöcken
(wobei M gleich 8 ist) sind 6 × 8
= 48 Blöcke
erforderlich, um eine Gesamtsumme von 32 + 32 + 40 + 48 = 152 Blöcke zu bilden.
Daher enthält
der Datei-FAT-Teilbereich 36b 152 FAT-Einträge 42.
-
Der
für einen
bestimmten Datenblock vorgesehene Inhalt eines FAT-Eintrags 42 in
dem Verzeichnisbereich 32 oder in dem Dateibereich 34 spezifiziert,
ob die Daten für
dieses Verzeichnis oder diese Datei in einem anderen Block fortgesetzt
werden, und, falls dies der Fall ist, mit welchem Block diese Daten
fortgesetzt werden. Wenn der FAT-Eintrag 42 einen Wert
enthält,
der eine andere Blocknummer indem Dateisystem 10 entspricht,
werden die Daten an dieser Blocknummer fortgesetzt. Wenn der FAT-Eintrag 42 einen
vorbestimmten "Kettenen de"-Wert enthält, der
nicht einer Blocknummer in dem Dateisystem 10 entspricht,
dann werden die Daten in keinem weiteren Block fortgesetzt. Unter
Bezugnahme auf die beispielhafte FAT-Tabelle 36 der 4 ist
der Startblock eine Datendatei mit vier Blöcken in einem datendateibezogenen
FAT-Eintrag #64 42' angeordnet.
In dem beispielhaften Datei-FAT-Teilbereich 36b der 4 enthält der FAT-Eintrag
#62 42' den
Wert 65, der angibt, daß die Datendatei mit vier Blöcken mit
dem Datenblock #65 fortgesetzt wird. In gleicher Weise enthält der FAT-Eintrag
#65 den Wert 66, der angibt, daß die Datendatei mit vier Blöcken mit
dem Datenblock #66 fortgesetzt wird, und der FAT-Eintrag #66 enthält den Wert 67,
der angibt, daß die
Datendatei mit vier Blöcken
mit dem Datenblock #67 fortgesetzt wird. Da der Datenblock #67 der
letzte von vier Blöcken
in der Kette ist, enthält
der FAT-Eintrag #67 die "Kettenende"-Markierung.
-
Unter
Betrachtung eines neuen Verfahrens 100 zum Lesen von Daten
aus einem virtuellen Dateisystem und bezugnehmend auf die 5 beginnt 102 das
Verfahren 100 mit dem Definieren eines virtuellen Dateisystems 10 mit
einem Dateibereich 30, der eine logische lineare Anordnung
von Datenblöcken
für eine
vorbestimmte Dateistruktur 45 enthält, die eine Verzeichnishierarchie 20 und
einen Satz Platzhalter für
eine vorbestimmte Datei 18 umfaßt. Mit dem Schritt 104 wird
eine Anfrage hinsichtlich eines Datenblocks 2 mit einer spezifizierten
Position in dem VFS 10 empfangen, typischerweise ausgehend von
dem Host-Computer, der mit dem VFS 10 verbunden ist. Mit
dem Schritt 106 wird der Abschnitt des VFS 10 ermittelt,
in dem sich der Datenblock 2 befindet. Wenn der Datenblock 2 in
dem FAT-Bereich 36 oder dem Verzeichnisbereich 32 ("FAT oder Verzeichnis"-Abzweigung von 106)
vorgesehen ist, dann fährt
das Verfahren mit Schritt 108 fort.
-
Wenn
der Datenblock 2 in dem FAT-Bereich 36 vorliegt oder wenn
der Datenblock 2 in dem Verzeichnisbereich 32 vorliegt,
jedoch dem Root-Verzeichnis oder einem der Zwischenebene-Verzeichnisse
in der Verzeichnishierarchie 20 entspricht ("Nein"-Verzweigung von
Schritt 108), dann wird mit dem Schritt 114 der
Inhalt des Datenblocks 2 basierend auf der vordefinierten Verzeichnishierarchie 20 und
der spezifizierten Blockposition berechnet, und mit dem Schritt 116 wird
der Inhalt an den Host-Computer als Reaktion auf dessen Anforderung
geliefert. Im weiteren ist der Algorithmus beschrieben, mit dem der
Datenblockinhalt berechnet wird; die Berechnung des Datenblockinhaltes
wird durch die neue vordefinierte Organisation der Datenstruktur 14 und
des Datenbereichs 30 des VFS 10 in vorteilhafter
Weise ermöglicht.
-
Wenn
der Datenblock 2 in dem Verzeichnisbereich 32 vorliegt
und einem der Verzeichnisse unterster Ebene in der Verzeichnishierarchie 20 entspricht
("Ja"-Verzweigung von
Schritt 108), dann wird mit dem Schritt 110 die
momentane Datenmenge ermittelt, die in der Datei enthalten ist,
welche dem Verzeichnis unterster Ebene entspricht. Dies wird vorzugsweise
durch einen Prozeß ausgeführt, der
außerhalb
des virtuellen Dateisystems 10 ist und der den Datei-Platzhalter
mit den Daten vorab verknüpft, wie
im weiteren unter Bezugnahme auf die virtuelle Datensystemvorrichtung 50 beschrieben
ist. Sobald die momentane Dateigröße in Bytes bekannt ist, wird mit
dem Schritt 112 das Verzeichnis unterster Ebene mit einer
nicht verwendeten (oder am längsten
unverwendeten) vorbestimmten Datei verbunden, die eine maximale
Dateigröße aufweist,
die größer oder gleich
der Datenmenge ist, und das Verfahren fährt mit dem Schritt 114 fort.
Typischerweise wird die kleinste vorbestimmte Datei mit einer zum
Speichern der Daten ausreichenden Größe mit dem bestimmten Verzeichnis
unterster Ebene verbunden.
-
Durch
die vorliegende Erfindung wird vorteilhafterweise der Platz physikalischen
Speichers minimiert, der für
das virtuelle Dateisystem 10 erforderlich ist, insbesondere
da eine große
Anzahl von Dateien und Dateien erheblicher Größe von dem Dateisystem 10 umfaßt werden,
indem die Datenblöcke
2 innerhalb des FAT-Bereichs 36 und des Verzeichnisbereichs 32 berechnet
werden.
-
Wenn
der Datenblock 2 in dem Dateibereich 34 ("Datei"-Verzweigung von
Schritt 106) vorliegt, dann wird bei Schritt 116 die
Datenquelle für
die Datei ermittelt. Wenn die Daten dynamisch erzeugt werden sollen
("Dynamisch"-Verzweigung von
Schritt 116), dann wird mit Schritt 118 der Inhalt
des Datenblocks 2 dynamisch erzeugt, vorzugsweise von einem Prozeß außerhalb
des virtuellen Dateisystems 10, und mit Schritt 122 wird
der Inhalt als Reaktion auf die Anforderung des Host-Computers diesem
geliefert. Wenn die Daten als Alias von einem anderen Datenspeicher
vorgesehen werden sollen, beispielsweise von einem Neben-Dateisystem 70,
das extern zu dem VFS 10 vorgesehen ist, dann wird mit
dem Schritt 120 der Inhalt des Datenblocks 2 von dem Neben-Dateisystem 70 erlangt,
und mit dem Schritt 122 wird der Inhalt als Reaktion auf
die Anfrage des Host-Computers diesem geliefert.
-
Durch
dynamisches Erzeugen von Datenblöcken
2, wenn diese angefordert werden oder durch Erhalten der Datenblöcke 2 aus
einem Neben-Dateisystem 70, die bereits in einer Vorrichtung
vorliegen, in der das virtuelle Dateisystem 10 vorgesehen
ist, minimiert die vorlie gende Erfindung vorteilhafterweise die
Größe an physikalischem
Speicher, der für
das virtuelle Dateisystem 10 erforderlich ist, insbesondere
bei einer großen
Anzahl von Dateien und erheblichen Dateigrößen, die in dem Dateisystem 10 enthalten
sind.
-
Das
Verfahren 100 wird vorzugsweise aus Firmware und/oder als
Software in Form eines Programms mit Befehlen implementiert, die
in einem Programmspeichermedium vorliegen, beispielsweise einem
ROM, einer CD-ROM, einer Diskette und ähnliches, und von einer Computervorrichtung
(nicht dargestellt) ausführbar
ist, die mit dem virtuellen Dateisystem 10 integriert ist.
Eine derartige Implementierung ist für den Fachmann ersichtlich.
Das Programm mit Befehlen kann in einer Anzahl logischer Segmente
organisiert sein, um die Schritte des hier beschriebenen Verfahrens 100 auszuführen, um
die Dateistruktur 15 und den Dateibereich 30 zu
implementieren, die ebenfalls beschrieben wurden.
-
Im
weiteren wird das Berechnen 114 der Inhalte eines Datenblocks
2 in dem FAT-Bereich 36 oder dem Verzeichnisbereich 32 basierend
auf der vordefinierten Verzeichnishierarchie 20 betrachtet, wobei
dies mit Bezug auf die 2, 3, 4 und 6 nachzuvollziehen
ist und wobei mit dem Schritt 130 die Stelle des angeforderten
Datenblocks innerhalb des FAT-Bereichs 36 oder des Verzeichnisbereichs 32 des
Dateibereichs 30 ermittelt wird. Wenn der angeforderte
Block in dem Verzeichnisbereich 32 liegt und einem beliebigen
Verzeichnis entspricht, das kein Verzeichnis unterster Ebene (Y-te Ebene)
ist, dann wird mit dem Schritt 132 die Blocknummer des
angeforderten Datenblocks in eine verzeichnisbezogene Blocknummer
für das
angeforderte Verzeichnis umgewandelt. Mit dem Schritt 134 werden
die verzeichnisbezogenen Blocknummern aller Nachfolger-Unterverzeichnisse
des angeforderten Verzeichnisses ermittelt, vorzugsweise durch Berechnen
der Blocknummer der Nachfolger-Unterverzeichnisse
basierend auf der Hierarchietiefe und Verzweigung der vorbestimmten
Verzeichnshierarchie 20 gemäß einem üblichen Algorithmus zum Durchlaufen
eines N-ären
Baums, der in einem Feld gespeichert ist, wobei dieser Algorithmus
dem Fachmann bekannt ist. Wenn beispielsweise der angeforderte Block
einem verzeichnisbezogenen Block #6 entspricht, werden die Nachfolger-Unterverzeichnisse
#25, #26, #27 und #28 identifiziert. Sobald die geeigneten Nachfolger-Unterverzeichnisse
ermittelt wurden, dann werden mit dem Schritt 136 Verzeichniseingangsdaten
für diese
Nachfolger-Unterverzeichnisse des angeforderten Verzeichnisses erzeugt.
-
Wenn
der angeforderte Datenblock in dem Verzeichnisbereich 32 liegt
und einem Verzeichnis unterster Ebene (Y-te Ebene) entspricht, dann
werden mit dem Schritt 138 die Verzeichniseintragsdaten erzeugt,
welche eine Datei wiedergeben. Diese Daten werden von Information
abgeleitet, die in einem Eintrag 62 in der Dateispeigelung-Tabelle
(file shadow table) 60 enthalten ist, die dem Verzeichnis der
untersten Ebene entspricht (Spiegelung-Tabelle 60 und ihre
Einträge 62 werden
im weiteren detaillierter unter Bezugnahme auf die 7 beschrieben). Wenn
beispielsweise der angeforderte Block einem verzeichnisbezogenen
Block #48 entspricht, dann werden Verzeichniseintrag-Daten 38d erzeugt,
welche die Datei wiedergeben, die in dem Verzeichnis unterster Ebene
enthalten ist, die mit dem Block #48 verknüpft ist.
-
Wenn
der angeforderte Datenblock in dem FAT-Bereich 36 liegt,
dann werden mit dem Schritt 140 die in dem angeforderten
Datenblock enthaltenen FAT-Einträge
identifiziert. In der bevorzugten Ausführung sind diese Einträge basierend
auf der Größe der Datenblöcke und
der Größe jedes FAT-Eintrags
einfach zu berechnen. Jeder FAT-Eintrag 42 bezieht sich
auf einen Datenblock 2 in dem Verzeichnisbereich 32 oder
dem Dateibereich 34. Mit dem Schritt 142 wird
ermittelt, welche dieser FAT-Einträge Blöcken entsprechen, die der letzte
(oder der einzige) Block in einer Blockkette sind, und welche FAT-Einträge Blöcken entsprechen,
die nicht der letzte (oder der einzige) Block in einer Blockkette
sind. In der bevorzugten Ausführung
kann dies einfach basierend auf der Organisation des Dateibereichs 30 berechnet
werden, da alle Verzeichnisse einen Datenblock belegen und da die
Anzahl von Datendateien, welche jeweils die Größe M haben, vorbestimmt ist.
Mit dem Schritt 144 werden für alle FAT-Einträge, die
dem letzten (oder dem einzigen) Block in einer Blockkette entsprechen,
FAT-Eintragsdaten erzeugt, die eine Kettenende-Markierung erhalten,
während bei
dem Schritt 146 für
alle FAT-Einträge,
die nicht dem letzten (oder dem einzigen) Block in einer Blockkette
entsprechen, FAT-Eintragsdaten erzeugt werden, die auf den nächsten Block
in der Kette zeigen. Wenn beispielsweise der angeforderte Datenblock FAT-Einträge für die datendateibezogenen
Blöcke #64
bis #67 umfaßt,
zeigt der für
den Block 64 erzeugte FAT-Eintrag
auf den Block #65, während
der für
den Block 67 erzeugte FAT-Eintrag die Kettenende-Markierung enthält.
-
Die
vorliegende Erfindung kann ferner als eine Vorrichtung 50 ausgeführt werden,
die ein virtuelles Dateisystem (VFS) 10 umfaßt, um eine
blockorientierte Datenquelle vorzusehen, auf die von einem Host-Computer
(nicht dargestellt) zugegriffen werden kann, wie unter Be zugnahme
auf die 7 ersichtlich ist. Das VFS 10 umfaßt ferner
einen Bereichsbezeichner 52, der "Lese Block <B>"-Anfragen von dem Host-Computer
empfängt,
wobei <B> die absolute Datenblocknummer
B in dem VFS 10 ist. Der Bereichsbezeichner 52 bestimmt,
ob der Block B einem Block in dem FAT-Bereich 36 oder in
dem Verzeichnisbereich 32 entspricht, und kann daher wie
oben beschrieben berechnet werden, oder ob Block B einem Block in
dem Dateibereich 34 entspricht und daher Dateidaten wie
oben beschrieben vorgesehen werden müssen. In der bevorzugten Ausführung wandelt
der Bereichsbezeichner 52 die absolute Blocknummer B in
eine auf den Bereich 32, 34, 36 bezogene
Blocknummer um, dem der Block angehört. Wenn der Block in dem FAT-Bereich 36 oder dem
Verzeichnisbereich 32 liegt, berechnet ein Blockberechner 54,
der über
die vorbestimmte Dateistruktur, d.h. über die Verzweigung N, die
Tiefe Y, der Dateieinheiten Q und die Blockanzahl, die mit jeder
Dateieinheit Q verknüpft
ist, informiert ist, die Inhalte des angeforderten Datenblocks.
Wenn die Blocknummer einem Verzeichnis Y-ter Ebene entspricht, sendet
ein Dateibinder 56 für
Verzeichnisse Y-ter Ebene eine Anfrage an einen dynamischen Datenerzeuger 58,
um eine Dateispiegelung 62 in einer Dateispiegelung-Tabelle 60 mit
einer bestimmten vorbestimmten Datei einer vorgegebenen Größe in dem
Dateisystem 10 zu verbinden.
-
Die
Dateispiegelung 62 wurde typischerweise durch eine asynchrone
Anfrage erzeugt, die von einem anderen Modul (nicht gezeigt) der
Vorrichtung 50 an den dynamischen Datengenerator 58 gerichtet wurde.
Beispiele für
solche Anfragen sind in der oben genannten parallelen US-Patentanmeldung
von Holcomb et al. beschrieben. Während des Zeitpunkts, zu dem
die Dateispiegelung 62 erzeugt wird, ist die mit der Spiegelung 62 verknüpfte Datenmenge
nicht bekannt, und daher ist es nicht möglich, daß die Dateigröße (und
damit wiederum die Dateistartblockstelle in dem Dateibereich 34)
für die
Datei nicht bekannt ist; wobei zu dem Zeitpunkt, an dem der Spiegel 62 erzeugt
wird, die Dateispiegelung 62 daher typischerweise nur die
Blocknummer des Y-ten Verzeichnisses und eine Datenquellenadresse
oder -bezeichnung enthält.
Wenn jedoch das Verzeichnis Y-ter Ebene gelesen wird, ergeht eine
Vorab-Meldung, daß eine
darauffolgende Anforderung bezüglich
der einzelnen Datei, die in dem Verzeichnis Y-ter Ebene vorliegt,
aller Wahrscheinlichkeit nach bevorsteht. Ferner muß in der
bevorzugten Ausführung
die Größe der Datei
ebenfalls in dem Datenblock 2 enthalten sein, der für das Verzeichnis
Y-ter Ebene zurückgegeben
wird. Sobald der dynamische Datengenerator 58 die Dateigröße ermittelt
hat, kann eine bestimmte vordefinierte Datei, welche zumindest so
groß wie
die Dateigröße ist,
gewählt
werden, und daher werden die Felder der Dateistartblock nummer und
Dateigröße in der
Spiegelung 62 ausgefüllt,
und die bestimmte Datei wird zu diesem Zeitpunkt mit dem Verzeichnis
Y-ter Ebene verbunden.
-
Um
die Möglichkeit
auszuschließen
oder zu minimieren, daß der
Host-Computer zu dem Schluß kommt,
daß er
bereits einen bestimmten Datenblock in seinem Cache-Speicher (nicht
dargestellt) enthält und
diesen daher nicht von der Vorrichtung 50 anfordert, erfüllt die
Vorrichtung 50 vorzugsweise zwei Aufgaben. Als erstes generiert
der dynamische Datengenerator 58, wenn dieser eine Anfrage
zum Erzeugen einer Datenspiegelung 52 verarbeitet, einen Pfadnamen,
der bislang nicht verwendet wurde (indem ein Verzeichnisblock Y-ter
Ebene verwendet wird, der bislang nicht verwendet wurde). Zweitens wählt der
dynamische Datengenerator 58 eine Datei, die bislang nicht
verwendet wurde, wenn dieser eine Anfrage zum Binden einer Dateispiegelung 62 mit
einer Datei verarbeitet. Da die physikalische Speichergröße des virtuellen
Dateisystems 10 weitgehend unempfindlich gegenüber der
Anzahl und Größe der Dateien
ist, die das Dateisystem 10 enthält, kann das virtuelle Dateisystem 10 für eine bestimmte
Vorrichtung 50 so gewählt
werden, daß jegliche
Möglichkeit, ein
Verzeichnis Y-ter Ebene oder eine Datei jemals zweimal verwendet
werden muß,
minimiert wird. Jedoch umfaßt
die bevorzugte Ausführung
der Vorrichtung ferner einen Blockmanager 64, der Verzeichnisse
Y-ter Ebene und Dateien auf Anfrage zuordnet. Der Blockmanager 64 verfolgt
die Verwendung von Verzeichnissen Y-ter Ebene und von Dateien durch Empfangen
von Meldungen von dem Dateibinder 56 für Verzeichnisse Y-ter Ebene
und von dem Dateigenerator 66, wenn Blöcke von dem Host-Computer angefordert
werden. Wenn die Vorrichtung 50 über keine bislang nicht verwendeten
Verzeichnisse oder Dateien mehr verfügt, gewährleistet der Blockmanager 64,
daß ein
bislang am längsten
unbenutztes (least recently used, LRU) Verzeichnis oder Datei zugeordnet
wird, in der Erwartung, daß jegliche
Information hinsichtlich des Verzeichnisses oder der Datei bereits in
dem Cache der Host-Computers abgelaufen ist. Die von dem Blockmanager 54 verwendeten
Algorithmen gleichen denen, die bei dem Speichermanagement und der
Neuorganissierung des Speichers (garbage collection) verwendet werden
und dem Fachmann gut bekannt sind.
-
Wenn
der angeforderte Block B in dem Dateibereich 34 liegt,
durchsucht ein Datengenerator 66 die Dateispiegelung-Tabelle 60,
um die Dateispiegelung 62 zu lokalisieren, die mit dem
Block verknüpft ist.
Das Datenquellenfeld der Dateispiegelung 62 wird daraufhin
von dem Dateigenerator 66 verwendet, um die Quelle der
Daten zu ermitteln. Wenn die Quelle der dynamische Datengenerator 58 ist,
wird der Block von dem dynamischen Datengenerator 58 angefordert.
Wenn die Quelle eine Datei in einem Neben-Dateisystem 70 ist, übersetzt
eine Datei-Aliasing-Vermittlung (file aliasing bridge) 58 den
angeforderten Block in den entsprechenden Block der Datei in dem
Neben-Dateisystem 70. Ein Beispiel eines Neben-Dateisystems 70 ist
das Dateisystem, das von einer Compactflash-Karte oder einer PCMCIA-Flash-Karte verwendet
wird, beispielsweise um photographische Bilddateien zu speichern,
die von einer Digitalkamera aufgenommen werden.
-
Aus
dem Obenstehenden ist ersichtlich, daß das von der vorliegenden
Erfindung vorgesehene virtuelle Dateisystem einen wesentlichen Fortschritt
gegenüber
dem Stand der Technik bietet. Obwohl zahlreiche einzelne Ausführungen
der Erfindung beschrieben und dargestellt wurden, ist die Erfindung nicht
auf diese speziellen Verfahren, Ausbildungen oder Anordnungen von
Teilen beschränkt,
die oben beschrieben und dargestellt sind. Insbesondere kann das
Dateisystem weitere Bereiche enthalten, beispielsweise Boot-Sektoren
und kann eine redundante Kopie des FAT-Bereichs enthalten. Es ist
ferner ersichtlich, daß das
Root-Verzeichnis und Zwischenverzeichnisse weitere vordefinierte
Verzeichnisse oder Dateien enthalten können, die aus Gründen der Klarheit
ausgelassen wurden, einschließlich,
jedoch nicht darauf beschränkt,
eines auf sich selbst bezogenen Verzeichnisses (das üblicherweise
als das "."-Verzeichnis bezeichnet
wird) und eines Vorgänger-Verzeichnisses
(das üblicherweise
als ".."-Verzeichnis bezeichnet
wird). Während
ferner in der bevorzugten Ausführung
die Dateigröße feststehend ist,
wenn auf ein Verzeichnis Y-ter Ebene zugegriffen wird, kann in einigen
Ausführungen
das Binden hinausgezögert
werden, bis auf die Datei selbst zugegriffen wird, abhängig von
der Verhaltensweise des Betriebssystems des Host-Computers. Die
vorliegende Erfindung wird vorzugsweise in einem breiten Bereich üblicher
und eingebetteter Computersysteme verwendet. Die Erfindung ist lediglich
durch die Ansprüche
beschränkt.