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
Antworten:
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
quelle
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.
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.
quelle