Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zu Dateisystemen


von Tobias P. (hubertus)


Lesenswert?

Hallo,

Ich versuche im Moment, die Funktionsweise eines Dateisystems zu 
verstehen (FAT vorerst, ich möchte mich später aber noch ext2 widmen). 
Das ganze soll in einem Mikrocontrollerboard zum Einsatz kommen, wo eine 
Festplatte dran ist. HD ansteuern und Sektoren auslesen / schreiben etc. 
ist kein Problem (eine alte IDE-Platte mit 40M fungiert als 
Versuchsobjekt ;)).
Prinzipiell verstehe ich die Funktionsweise der FAT (jedenfalls in 
groben Zügen). Was ich allerdings nicht verstehe, ist folgendes:
Die FAT kann (und muss) sich ja über mehrere Sektoren der HD erstrecken. 
Von ned HD kann man aber immer nur einen Sektor aufs mal lesen. Ich 
frage mich jetzt, wie da auf niedrigster Ebene das ganze verwaltet wird 
- was, wenn ich einen ganz bestimmten Eintrag in der FAT suche? 
Idealerweise ist dann die eine Hälfte von dem im ersten, die andere 
Hälfte im 2. Sektor der Platte.
Dann muss man ja schlussendlich immer Sektor für Sektor die ganze FAT 
rauslesen, wenn man Daten braucht, richtig? Oder kopiert man die FAT 
einmal ins RAM, bearbeitet sie dort, und wenn man das System 
"runterfährt" wird die FAT zurückgeschrieben?
Was, wenn man eine grosse Datei, die sich über mehrere Sektoren 
erstreckt, die nicht zusammenhängen, öffnet und daran Änderungen macht 
und das wieder speichert? Kopiert man die Datei ins RAM, bearbeitet sie 
dort und schreibt sie zurück? (Das wäre hässlich; da braucht man ja 
unmengen von RAM um einigermassen vernünftige Datenmengen verwalten zu 
können).

Nun - Fragen über Fragen; es wäre genial wenn mir da einer Weiterhelfen 
könnte.

Übrigens wollte ich erst nur ext2 verwenden, fand aber keine so richtig 
dolle Documentation; im Linux-Kernel (2.6) stehen auch nicht so wirklich 
Kommentare drin. Weiss jemand von euch ne Seite, wo das ganze 
Dokumentiert ist? Für FAT gibts ja solche Dokus wie Sand am Meer.

Grüüse
     Tobias

von Simon K. (simon) Benutzerseite


Lesenswert?

Tobias Plüss wrote:
> Übrigens wollte ich erst nur ext2 verwenden, fand aber keine so richtig
> dolle Documentation; im Linux-Kernel (2.6) stehen auch nicht so wirklich
> Kommentare drin. Weiss jemand von euch ne Seite, wo das ganze
> Dokumentiert ist? Für FAT gibts ja solche Dokus wie Sand am Meer.

http://e2fsprogs.sourceforge.net/ext2.html

von Tobias P. (hubertus)


Lesenswert?

@Simon:
Danke!
Obschon: Die Seite kenne ich sehr wohl; ist aber etwas dürftig.
Hier (http://www.pjrc.com/tech/8051/ide/fat32.html; für FAT) ist genau 
beschrieben, welches Byte wozu gut ist. Auf e2fsprogs.sourceforge.net 
hingegen ist zwar die Funktionsweise schon drin, aber ich weiss 
immernoch nicht, welches Byte z.B. im Superblock wozu dient oder wo der 
Datenträgername reingeschrieben wird.

von Wiesi (Gast)


Lesenswert?

Also ich finde da z.B.

http://www.nongnu.org/ext2-doc/ext2.html
http://ivs.cs.uni-magdeburg.de/bs/lehre/wise0001/bs2/ext2/bs2/funktion.html
http://ext2read.sourceforge.net/documentation/inside-ext23-file-system/
http://uranus.it.swin.edu.au/~jn/explore2fs/es2fs.htm
http://www.linux-security.**/ebooks/ulk3-html/0596005652/understandlk-CHP-18-SECT-2.html

(** durch Carla und Nordpol als Buchstaben ersetzen, sonst meckert den 
Spamfilter)

Da sollte schon einiges drin sein (PS: <10min Goole).


Im Kernel Source würde ich als erstes in den Header files schauen und 
nach den structs ausschau halten.
In include/linux/ext2_fs.h sind z.B. so ziemlich alle variablen des 
Superblocks kommentiert...

von Tobias P. (hubertus)


Lesenswert?

ah danke.
in linux/include/fs.h hab ich noch garnicht geschaut... nur in fs/ext2.
Nun wie auch immer, das ist schon etwas besser.

> durch Carla und Nordpol als Buchstaben ersetzen, sonst meckert den
> Spamfilter

carla? Nordpol? Ich versteh' nur Bahnhof ;)

Aber wie man die Probleme löst, die ich ganz anfangs beschrieben habe, 
wisst ihr auch nicht, oder?

von Wiesi (Gast)


Lesenswert?

Wenn man buchstabiert, dann verwendet man meistens irgendwelche Namen 
für die Buchstaben, wobei der 1. Buchstabe des Wortes der ist, den man 
meint. A=Anton, B=Berta, usw. usf.

In diesem Fall eben "Charlie" "November" im Nato Alphabet. Vorher ist 
mir nichts besseres eingefallen.

von Tobias P. (hubertus)


Lesenswert?

Ach sooo :D
Warum kann man .cn hier nicht ausschreiben? :o

von Wiesi (Gast)


Lesenswert?

Keine Ahnung. Auf alle Fälle erscheint, wenn .**/ im obigen Post 
vorkommt unten eine rote Warnmeldung, dass anscheinend Spam enthalten 
ist und der Post wird nicht abgeschickt.

von Oilaf (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Tobias,
leider kann ich Dir nicht so richtig helfen, aber ein bischen vieleicht. 
Ich habe das mit der FAT mal im Zusammenhang mit CompactFlash gemacht. 
Damit die Sache nicht so kompliziert wird, habe ich nur aus dem 
Hauptverzeichnis Dateien gelesen. Dabei habe ich viele Informationen aus 
einem dicken Buch PC Intern 2.0 ziehen können, oder war das vor Deiner 
Zeit? Im Anhang noch meine Aufzeichnungen von damals, die sicher nicht 
ganz vollständig sind, aber möglicherweise helfen sie ein wenig.

Gruß Olaf

von Tobias P. (hubertus)


Lesenswert?

Hallo Olaf,
ja ich glaube PC Intern war etwas vor meiner Zeit ;) Ich kenne es 
jedenfalls nicht. Aber danke für das Dokument!

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

All diese Fragen stellten sich auch der PC-Gemeinde.

Da entstand schon unter MS-DOS ein kleines Caching der Sektoren oder gar 
Dateien.

In einem uC ist eigentlich kaum Speicherplatz, so speichert man immer 
nur einen Sektor im RAM und führt daran Änderungen durch, die man dann 
auf die Platte schreibt, wenn man einen anderen Sektor braucht.
Ist evtl. etwas langsam, und ja, man muß sich an der FAT entlanghangeln, 
um eine Datei zu lesen. Hast Du mehr Speicher, kannst Du ja einen Sektor 
(512 Bytes) Buffer für die Datei, für die FAT und für das 
Inhaltsverzeichnis anlegen und verwalten, dann wird es schon schneller.

Aber: WOZU ?

von 1234 (Gast)


Lesenswert?

Ein richtiges PC kompatibles filesystem sollte man nur in Betracht 
ziehen, wenn der Datentraeger auch mit einem PC austauschbar sein soll. 
Falls nicht kann man das Ganze vereinfachen. Man kann zB das Directory 
auf einen Sektor begrenzen, Unterdirectories weglassen und dergl.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.