2015-07-13 9 views
10

Normalerweise ist die physische Größe einer Datei größer als die logische Größe. Ich habe mich gefragt, ob es einen Fall gibt, für den das Gegenteil der Fall ist. Es könnte bestimmte Dateien geben, für die die physische Größe weniger als die logische Größe wäre.In welchem ​​Fall ist die physische Größe einer Datei kleiner als die logische Größe?

+0

Diese Frage sollte nicht geschlossen werden. – o11c

+0

Ich kann nicht verstehen, warum die Leute diese Frage stellen wollen. Als ich diese Frage mit einigen meiner Universitätsfreunde diskutierte, waren sie überrascht, dass die Antwort wie folgt gegeben wurde: Ja, es gibt einige Fälle. Weil wir buchstäblich nicht wussten, dass dieser Fall möglich sein könnte. Also, ich denke, das ist eine interessante Frage. Bitte geben Sie genug Gründe an, warum einige von Ihnen nicht wollen, dass diese Frage hier gestellt wird? – beginner

+0

Die gute Nachricht ist, dass die Wiedereröffnung-Warteschlange viel kürzer als die Schließen-Warteschlange ist. – o11c

Antwort

1

Physikalische Größe der Datei ist typischerweise die Summe aller der Datei zugewiesenen Blöcke, während die logische Größe die tatsächliche Verwendung dieser Blöcke ist. Um eine Datei logisch größer als seine physikalische Größe würde bedeuten, dass einige Daten im laufenden Betrieb generiert werden können (da es mehr als die Blöcke halten kann).

Sie können dieses Konzept erreichen, indem Sie die Datei komprimieren und die Komprimierung in den Details des Dateisystemtreibers ausblenden. Auf diese Weise verfügen Sie möglicherweise über zwei 512-Byte-Blöcke, die 1024 physikalische Bytes unterstützen. Wenn Sie jedoch die Daten dekomprimieren, werden möglicherweise mehr als 1024 logische Bytes in der Datei gefunden.

Es gibt andere nichttriviale Möglichkeiten, um zu erreichen, was Sie fragen, aber ich denke nicht, dass Sie ihnen in der Wildnis begegnen werden (es sei denn, Sie arbeiten in einer sehr nischen Ecke der Welt).

6

Der häufigste Fall, in dem dies der Fall ist, ist sparse files. Diese Dateien sind physisch kleiner als ihre logische Größe, da nicht alle ihre Extents zugeordnet sind - es gibt "Löcher" in der Datei.

Beachten Sie, dass nicht alle Dateisysteme Sparse-Dateien unterstützen. (Insbesondere tut FAT nicht.)

+0

Danke. Ich habs. Welche Bedeutung haben diese Löcher in einer Sparse-Datei? Sollen nur Metadaten angegeben werden? – beginner

+0

@beginner: Wenn Sie die Datei lesen, scheinen die fehlenden Blöcke voller Nullen zu sein (binäre Nullen, nicht das Zeichen '0'). – rici

10

Mit einem modernen Dateisystem wie ZFS, gibt es drei Möglichkeiten, die die physikalische Größe einer Datei ermöglichen, dass er kleiner ist als seine logische Eins:

  • Sparse-Dateien , wo Datenblöcke, die nur Nullen enthalten, nicht physikalisch gespeichert sind. Dies wird von den meisten aktuellen Dateisystemen unterstützt, jedoch ohne FAT und HFS +.

  • Komprimierte Dateien, bei denen das Betriebssystem einen Komprimierungsalgorithmus verwendet, um die Daten in weniger als der ursprünglichen Größe zu speichern. ZFS, btrfs und HFS + implementieren Datenkomprimierung.

  • Deduplizierte Dateien, in denen Blöcke zu verschiedenen Dateien mit demselben Inhalt nur einmal gespeichert werden. Dies wird zumindest von ZFS, Btrfs, vxfs und NTFS VHDs (Windows Server 2012)

  • implementiert

Snapshots und Clones sind auch Techniken, die mehrere Dateien mit einem gemeinsamen Ursprung, sondern einen divergierenden Inhalt haben nur ihre Differenz erlauben gespeichert, was zu einer Erhöhung des Speicherplatzes führt.

Man kann Hardlinks hinzufügen, die es mehreren "Dateien" (genauer gesagt Pfaden) erlauben, die gleichen Daten zu teilen.

Schließlich speichern symbolische Verknüpfungen keine Daten, aber die Datei, auf die sie verweisen, hat, wenn überhaupt, normalerweise eine Datengröße ungleich Null.

+0

Fun Tatsache, es gab einen [Hauptfehler in Grep 2.13] (https: // github.com/zfsonlinux/zfs/issues/829) weil sie angenommen haben, dass es sich nur um Sparse-Dateien handelt. – o11c

+0

@ o11c Danke für den Link, interessanter Bug in der Tat! – jlliagre

Verwandte Themen