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
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
@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.
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...
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?
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.
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.
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
Hallo Olaf, ja ich glaube PC Intern war etwas vor meiner Zeit ;) Ich kenne es jedenfalls nicht. Aber danke für das Dokument!
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 ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.