* David Haller schrieb am 17.Jan.2002:
On Wed, 16 Jan 2002, Christian Boltz wrote:
Am Mittwoch, 16. Januar 2002 12:01 schrieb Bernd Brodesser:
* Dieter Kluenter schrieb am 16.Jan.2002: [Vorteile von Linux]
- variable Inode Dichte (pro Partition)
Was ist das denn für einen Vorteil gegenüber ein Dateisystem, daß gar keine Inodes hat?
ganz einfach: s/Inode/cluster/
*BZZZT* Flasch. s/Inode/Fat-Eintrag/;s/Blockgroesse/Clustergroesse/
Der Rest war im Prinzip richtig, mit den entsprechenden Aenderungen eben. Bei Linux (ext2/3) kann man eben beide Parameter einstellen, bei Fat nur die Block- bzw. Clustergroesse und auch das nur recht eingeschraenkt.
Aber eine Inode ist immer exakt gleich groß. Und jede Datei hat genau eine, egal ob Leer oder 2GB groß. In der Inode stehen alle Verwaltungsdaten, wie die drei Daten, die Rechte, der Besitzer usw. und auch die Adressen zu den Datenblöcken. In den Datenblöcken stehen außschließlich die Daten. So viel ich weiß stehen beim FAT Dateisystem da auch noch der Verweiß auf dem nächsten Datenblock drin. So was gibt es bei ext2 nicht. Aber egal wie groß eine Datei ist, das Datum des letzten Zugriffs, oder die UID, die GID, die Rechte, die Anzahl der Hardlinks und die Größenangabe benötigen immer gleich viel Platz. Lediglich bei den Verweisen auf die Datensätze kommt es zu indirekten Verweisen. Daher ist eine Inode zwingend immer gleich groß. Bei ext2 muß vorher gesagt werden, wo die Inodes liegen, und wo die Datensätze. Dazu muß man sagen, wieviele Inodes es geben soll. Die Inodes werden somit von vorneherein geschrieben. Die Inodedichte besagt nun auf wieviele Datensätze eine Inode kommt. Ist die Inodedichte etwa 1024 so heißt das, daß auf alle 1024 Byte Daten, eine Inode entfällt. Bei einer Inodedichte von 4096 heißt dies, daß nur ein Viertel so viele Inodes eingerichtet werden.
[4] IIRC wird unter Linux eine 1-Byte-Datei sogar direkt in der Verzeichnistabelle gespeichert (wie gesagt, IIRC)
Ja. Aber ext2 kann, wenn der Verzeichniseintrag nicht ausreicht auch nur ganze Bloecke belegen. Reiserfs kennt hingegen die Moeglichkeit, "Reste" von Dateien gemeinsam in einem Block zu speichern, allerdings nicht auf der /-Partition, diese muss man mit der Option "notails" mounten.
Bist Du Dir da sicher, daß das geht? Wie kann eine Inode in einem Verzeichnis stehen? Ich könnte doch ein Hardlink von einem anderen Verzeichnis aus darauf machen. Außerdem ist, wie gesagt, eine Inode immer exakt gleich groß, wenn man die Inode fest im Verzeichnis schreiben könnte, dann müßte das mit einer großen Inode genauso gehen. Nein, das kann nicht stimmen. Vielleicht kann es sein, daß ein paar wenige Daten in der Inode selber stehen können, daß könnte ich mir Vorstellen, halte ich aber auch nicht für sonderlich Sinnvoll. Oder wird das mit den Adressen auf die Daten verwechselt? In der Inode stehen die ersten Adressen auf die Daten direkt, die nächsten stehen in einem Datenblock, lediglich die Adresse auf diesen Datenblock steht in der Inode. Dies ist die indirekte Adressierung. Werden noch mehr Datenblöcke benötigt, so stehen deren Adressen, in Datenblöcke, deren Adresse wiederum in einen weiteren Datenblock steht, dessen Adresse schließlich in der Inode steht. Das ist dann die doppelt indirekte Adressierung. Und schließlich gibt es auch noch eine dreifach indirekte Adressierung. Bernd -- Homepages von deutschsprachigen Linux-Gurus: Kristian Köhntopp: http://www.koehntopp.de/kris/artikel/ Sven Guckes: http://www.math.fu-berlin.de/~guckes/sven Robin S Socha: http://socha.net/index2.html |Zufallssignatur 10