Wie funktioniert die Blockgröße des Dateisystems?

Wie funktioniert die Blockgröße des Dateisystems?

Alle Linux-Dateisysteme haben eine Blockgröße von 4 KB. Angenommen, ich habe 10 MB Festplattenspeicher. Das bedeutet, dass mir 2560 Blöcke zur Verfügung stehen und ich 2560 Dateien mit jeweils 1 KB Größe kopiert habe. Jeder 1-KB-Block belegt 1 Block, füllt aber nicht den gesamten Block.

Meine gesamte Festplatte ist nun voll, aber ich habe immer noch 2560 x 3 KB freien Speicherplatz. Wenn ich eine weitere Datei von beispielsweise 1 MB speichern möchte, lässt das Dateisystem dies zu? Kann es in den freien Speicherplatz in den einzelnen Blöcken schreiben? Gibt es ein Konzept, das dieses Problem löst?

Ich wäre für eine Klarstellung dankbar. Vielen Dank im Voraus

Antwort1

Die Standardblockgröße betrug seit dem ersten Linux 512 Byte. Bis vor kurzem wurden jedoch 4k-Blockgrößen eingeführt, um der immer größer werdenden Festplattengröße gerecht zu werden. Tatsächlich wird dies sogar fast von der Festplattenhardware vorgegeben (siehe mehr:https://unix.stackexchange.com/questions/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd).

Doch zu Ihrer konkreten Frage: Sie haben Recht, dass alle Dateien die ungenutzten Bytes des letzten Blocks auf vielen Dateisystemtypen verschwenden, was besonders bei kleinen Dateien verschwenderisch ist. Aber btfrs und reiserfs scheinen damit klarzukommen, lauthttps://en.m.wikipedia.org/wiki/Block_suballocation

Antwort2

  1. Dateisysteme können eine Blockgröße von 512 bis (normalerweise) 65536 Bytes haben. Die Blockgröße kann als Option mkfs.xxx angegeben werden. Die Standardblockgröße in den meisten Linux-Dateisystemen beträgt 4096 Bytes.

  2. Einige Dateisysteme unterstützen Tail-Packing und/oder Subblock-Zuweisung. BTRFS, RaiserFS, ZFS, Raiser4 – tun dies; XFS, Ext2/3/4 – tun dies nicht.

Wenn Sie vorhaben, eine Partition mit mehreren kleinen Dateien zu füllen, können Sie den verschwendeten „Tail“-Speicherplatz reduzieren, indem Sie die Blockgröße auf 512 oder 1024 verkleinern oder ein FS verwenden, das die Funktion „Tail-Packing“ oder „Subblock-Zuweisung“ unterstützt.

verwandte Informationen