Ich bin sicher, dass eine Verzeichnisdatei viel weniger Informationen als 4096 Bytes hat. Ich weiß, dass die Sektorgröße 4096 Bytes ist. Aber es gibt normale Dateien, die kleiner sind.
Warum reserviert Unix 4096 Bytes für jeden Ordner?
Dies ist die Anfangsgröße, die erforderlich ist, um die Metadaten zu den in diesem Verzeichnis enthaltenen Dateien (einschließlich Namen) zu speichern. Die anfängliche Zuordnung entspricht der Größe eines Sektors, kann jedoch bei Bedarf darüber hinausgehen. Einmal zugewiesen, wird Speicherplatz nicht freigegeben, wenn Dateien entfernt werden, um die Fragmentierung zu verringern.
Beispielsweise:
$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/
Manchmal sind 4096 Byte die kleinste Zuordnungseinheit für einige Dateisysteme. Deshalb hat das Verzeichnis 4096.
Gleiches gilt für Dateien. Obwohl einige Dateien weniger als 4096 melden, beanspruchen sie tatsächlich mindestens 4096 Speicherplatz von der Festplatte.
quelle
4096 ist reserviert, um die Fragmentierung zu reduzieren, da die tatsächliche Größe der enthaltenen Metadaten häufig abhängig vom Verzeichnisinhalt schwankt. Wenn es im Laufe der Zeit ständig wächst und schrumpft (z. B. wenn es Protokolldateien oder dynamische Inhalte enthält), kann dies die Leistung beeinträchtigen. Dies würde wahrscheinlich nicht mit einem Ordner passieren, aber im gesamten Dateisystem würde es sich schnell summieren.
quelle
Das hängt vom Dateisystem ab. Auf ext2 / 3/4 ist es "4096". Auf reiserfs kann es 9608 (my
$HOME
) 1032 (/tmp
) oder 48 (einige dir in/tmp
) sein.Standardmäßig hat der ext2 / 3/4-Block den Wert 4096 - und die Datei kann nicht weniger benötigen. Wenn die Datei kleiner ist, dauert es trotzdem einen ganzen Block. Da es sinnlos ist, nach der logischen Größe des Verzeichnisses zu fragen und diese Informationen wahrscheinlich sowieso nicht auf der Festplatte gespeichert sind und etwas melden müssen, das die Blockgröße multipliziert mit der Anzahl der belegten Blöcke, dh dem belegten physischen Speicherplatz, angibt.
quelle
actual
Dateigröße angegeben.\0
in Binärdateien ein zulässiger Charakter ist. PS. Es ist möglich, FS zu erstellen, die es nicht speichern - aber nicht ext family (und wahrscheinlich keine andere beliebte).