Was bedeutet die „Größe in 512-Byte-Blöcken“?

Was bedeutet die „Größe in 512-Byte-Blöcken“?

Gegeben sei eine Datei mit einer einzelnen hDatei. Wenn ich sie findmit dem -lsPrimitiv ausführe, erhalte ich die folgende Ausgabe:

$ cat some_file
h
$ find . -ls
2750606        0 drwxr-xr-x    4 mbigras          FOO\Domain Users      136 May 18 12:35 .
3067730       16 -rw-r--r--    1 mbigras          FOO\Domain Users     6148 May 18 12:33 ./.DS_Store
3067836        8 -rw-r--r--    1 mbigras          FOO\Domain Users        2 May 18 12:35 ./some_file

Wenn man findwir danach suchen, -lsfinden wir in der Ausgabe die folgenden Informationen zu den Dateien:

seine Inode-Nummer, Größe in 512-Byte-Blöcken, Dateiberechtigungen, Anzahl der Hardlinks, Besitzer, Gruppe, Größe in Bytes, letzte Änderungszeit und Pfadname.

Einige Dinge, die ich mich frage:

  • Wenn some_filenur hein Byte darin ist, warum ist dann die „Größe in Bytes“ 2? Ich würde 1 erwarten.
  • Wenn die zweite Zahl die „Größe in 512-Byte-Blöcken“ ist, warum ist sie dann größer als die „Größe in Bytes“? Ich würde erwarten, dass sie 0 oder zumindest kleiner ist.

Antwort1

some_fileenthält h, gefolgt von einem Zeilenumbruch, insgesamt zwei Bytes. Versuchen Sie etwas wie

hexdump -C some_file

um den Inhalt der Datei Byte für Byte anzuzeigen.

Jede Datei zwischen 1 und 512 Bytes belegt einen 512-Byte-Block, wenn dies die Mindestzuordnungsgröße auf der Festplatte ist, genauso wie eine 513-Byte-Datei zwei 512-Byte-Blöcke belegt. Die Blockanzahl wird nicht auf die nächste Ganzzahl abgerundet.

Antwort2

Sehen Sie, was der Grund dafür ist, warum wir 512 Bytes verwenden. Nehmen wir eine Datei mit einer Größe von 513 Bytes an. Um diese Datei zu speichern, benötigen wir zwei Blöcke mit einer Größe von 512 Bytes auf der Festplatte. Um das 513. Byte zu speichern, müssen wir einen kompletten Festplattenblock mit 512 Bytes zuordnen. Aufgrund der internen Fragmentierung werden also 511 Bytes verschwendet. Um diese interne Fragmentierung zu verringern, ist es immer besser, die Blockgröße so gering wie möglich zu halten. Durch Experimente haben wir herausgefunden, dass 512 Bytes die optimale Größe sind. Wenn Sie sie verringern, müssen Sie möglicherweise auf viele Blöcke zugreifen, um auf eine Datei zuzugreifen, und das wird einige Zeit dauern. Um die Dinge zu optimieren, haben sie experimentell herausgefunden, dass 512 Bytes die bessere Größe sind, um die Effizienz zu erhöhen und die Speicherverschwendung zu verringern.

verwandte Informationen