Wie funktioniert die Blockgröße des Dateisystems?

11

Alle Linux-Dateisysteme haben eine Blockgröße von 4 KB. Angenommen, ich habe 10 MB Festplattenspeicher. Das heißt, ich habe 2560 Blöcke zur Verfügung und sagen wir, ich habe 2560 Dateien mit jeweils 1 KB Größe kopiert. Jeder 1-kb-Block belegt 1 Block, obwohl er nicht den gesamten Block ausfüllt.

Meine gesamte Festplatte ist jetzt voll, aber ich habe immer noch 2560 x 3 KB freien Speicherplatz. Wenn ich eine andere Datei mit beispielsweise 1 MB speichern möchte, kann ich sie dann im Dateisystem speichern? Wird es in den freien Speicherplatz in den einzelnen Blöcken schreiben? Gibt es ein Konzept, das dieses Problem angeht?

Ich würde mich über eine Klarstellung freuen. Danke im Voraus

Srimanth Duggineni
quelle
OK, 2560 Dateien, jede ist 1 KB groß, das sind 2560 * 0,001 MB = 2,56 MB. Jede 1-KB-Datei sollte ungefähr 1/4 des Blocks einnehmen, da 1000 * 4 = 4000, richtig? Die Blockgröße beträgt 4096, sodass Sie 4 Dateien benötigen, um den Block zu füllen. Eine 1-MB-Datei kostet Sie also 1000000/4096 = 244 Blöcke.
Sergiy Kolodyazhnyy

Antworten:

3

Die Standardblockgröße betrug 512 Byte seit dem ersten Linux überhaupt. Außer bis vor kurzem wurden 4k-Blockgrößen eingeführt, um der ständig wachsenden Größe von Festplatten gerecht zu werden. Dies wird sogar fast von der Festplattenhardware vorgegeben (siehe mehr: /unix/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd ).

Für Ihre spezielle Frage: Sie haben Recht, dass alle Dateien die nicht verwendeten Bytes des letzten Blocks auf vielen Arten von Dateisystemen verschwenden, was besonders für kleine Dateien verschwenderisch ist. Aber btfrs und reiserfs scheinen laut https://en.m.wikipedia.org/wiki/Block_suballocation in der Lage zu sein, damit umzugehen

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

  2. Einige Dateisysteme unterstützen Tail-Packing und / oder Subblock-Zuweisung. ext2 / 3/4 - tut, xfs - tut 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.

Oleksandr Suworow
quelle