Kann eine Datei nicht nacheinander auf der Festplatte gespeichert werden? Ich meine, ein Teil der Datei befindet sich unter der physischen Adresse X und der andere Teil unter der physischen Adresse Y, die nicht in der Nähe von X + Offset liegt.
Ja; Dies wird als Dateifragmentierung bezeichnet und ist insbesondere bei größeren Dateien keine Seltenheit. Die meisten Dateisysteme weisen Speicherplatz nach Bedarf zu, mehr oder weniger nacheinander. Sie können jedoch kein zukünftiges Verhalten erraten. Wenn Sie also 200 MB in eine Datei schreiben und dann weitere 100 MB hinzufügen, ist die Wahrscheinlichkeit nicht null, dass beide Datensätze dies tun in verschiedenen Bereichen der Festplatte gespeichert werden (grundsätzlich kann jeder andere Schreibvorgang, der nach dem ersten und vor dem zweiten Schreibvorgang mehr Speicherplatz auf der Festplatte benötigt, zwischen den beiden erfolgen). Wenn ein Dateisystem fast voll ist, ist die Situation in der Regel noch schlimmer: Möglicherweise gibt es keinen zusammenhängenden Bereich mit freiem Speicherplatz, der groß genug ist, um eine neue Datei aufzunehmen, sodass diese fragmentiert werden muss.
Kann ich die Reihenfolge der Dateien irgendwie kontrollieren? Ich möchte eine große Datei von 10 GB zuweisen. Ich möchte, dass es auf der Festplatte sequentiell abläuft und nicht zwischen verschiedenen Offsets aufgeteilt wird.
Sie können dem Dateisystem die Zielgröße Ihrer Datei mitteilen, wenn diese erstellt wird. Dies hilft dem Dateisystem, es optimal zu speichern. Viele moderne Dateisysteme verwenden eine als verzögerte Zuordnung bekannte Technik, bei der das Layout einer neuen Datei auf der Festplatte so spät wie möglich berechnet wird, um die bei der Berechnung verfügbaren Informationen zu maximieren. Sie können diesen Vorgang unterstützen, indem Sie mit der posix_fallocate(3)
Funktion dem Dateisystem mitteilen, wie viel Speicherplatz insgesamt zugewiesen werden soll. Moderne Dateisysteme werden versuchen, diese Zuordnung nacheinander vorzunehmen.
Funktioniert es zwischen den verschiedenen Typen unterschiedlich?
Verschiedene Dateisysteme verhalten sich unterschiedlich, ja. Protokollbasierte Dateisysteme wie NILFS2 weisen Speicher nicht auf die gleiche Weise zu wie extensionsbasierte Dateisysteme wie Ext4, und das ist nur ein Beispiel für eine Variation.