Wenn ich unter OS X eine Textdatei erstelle, sind es aus irgendeinem Grund immer mindestens 4 KB, es sei denn, sie ist leer. Warum ist das? Könnten 4.000 Bytes Metadaten zu 1 Byte Klartext vorhanden sein?
filesystems
disk-usage
tkbx
quelle
quelle
:P
Antworten:
Die Blockgröße des Dateisystems muss 4 kB betragen. Wenn Daten in eine Datei geschrieben werden, die in einem Dateisystem enthalten ist, muss das Betriebssystem Speicherblöcke zuweisen, um die Daten zu enthalten, die in die Datei geschrieben werden.
Wenn ein Dateisystem erstellt wird, wird der in diesem Dateisystem enthaltene Speicher in der Regel in Blöcke fester Größe unterteilt. In diesem Wikipedia-Artikel wird dieser Vorgang kurz erläutert.
Die zugrunde liegende Blockgröße des Dateisystems für diese Datei muss eine Blockgröße von 4 KB aufweisen. Diese Datei verwendet 1 4K-Block und nur ein Byte in diesem Block enthält tatsächliche Daten.
quelle
Alle Dateisysteme haben eine Cluster- oder Blockgröße oder den kleinsten verfügbaren Speicherplatz für eine Datei. Auch wenn die tatsächliche Dateigröße kleiner als die Cluster- / Blockgröße ist, wird dennoch ein Cluster oder 4 KB auf Ihrem Dateisystem belegt. Die Clustergröße hängt vom Dateisystem und den Dateisystemoptionen ab.
Wenn es, wie Gilles betonte, null Bytes enthält, werden auf typischen * nix-Dateisystemen keine Blöcke / Cluster, sondern nur ein Inode verwendet, wodurch die Einschränkung besser beantwortet wird, "es sei denn, es ist leer".
quelle
Ein kleines Experiment zur Veranschaulichung:
Lassen Sie uns zunächst die tatsächliche Blockgröße meiner root ext4 (LVM) -Partition ermitteln:
Es ist erwartungsgemäß 4096 (4 KiB). Lassen Sie uns nun drei Dateien erstellen: Die erste ist null Byte, die zweite ist nur ein Byte und die dritte ist 4 KiB (die Blockgröße):
Nun haben wir
ls
das Verzeichnis. Wir verwenden die-s
Option, um die zugewiesene Größe (die am weitesten links stehende Spalte) in der Anzahl von 1024-Byte- "Blöcken" anzuzeigen.(ls weiß nicht, dass die tatsächliche Blockgröße 4096 ist - wir könnten angeben,
--block-size
aber das skaliert alles um diesen Wert, und wir möchten auch die tatsächliche Dateigröße in Bytes sehen) .Zwei Dinge können hier festgestellt werden:
Sparse-Dateien
Sparse-Dateien sind Dateien mit großen Nullenblöcken. Da bekannt ist, dass die Daten alle Null sind, macht es keinen Sinn, sie auf der Festplatte zu speichern. Auf diese Weise kann die scheinbare Größe einer Datei tatsächlich größer sein als die Größe der Festplatte.
Inline-Daten
Beachten Sie, dass bei einigen Dateisystemen der Inhalt sehr kleiner Dateien im Inode selbst gespeichert werden kann. Siehe Ist es möglich, Daten direkt in einem Inode in einem Unix / Linux-Dateisystem zu speichern? .
quelle